From fcb1f095fda725caaa41d6033ab600cab9182b08 Mon Sep 17 00:00:00 2001 From: Mahdi Dibaiee Date: Thu, 20 Feb 2014 01:06:39 +0330 Subject: [PATCH] Grunt - BugFixes --- .gitignore | 1 + Gruntfile.js | 127 ++++ Mobile/index.html | 5 +- Mobile/js/diff.js | 103 +++ Mobile/js/functions-m.js | 239 ------- Mobile/js/less-1.5.0.min.js | 13 - Mobile/js/mobile.js | 348 ---------- README.md | 19 +- {Mobile => Shared}/css/color-picker.less | 0 {Mobile => Shared}/css/fonts.less | 0 {Mobile => Shared}/css/fonts/MozTT-Bold.ttf | Bin {Mobile => Shared}/css/fonts/MozTT-Light.ttf | Bin {Mobile => Shared}/css/fonts/MozTT-Medium.ttf | Bin .../css/fonts/MozTT-Regular.ttf | Bin .../css/imgs/bg_overlay_pressed_1.png | Bin .../css/imgs/bg_overlay_pressed_2.png | Bin {Mobile => Shared}/css/imgs/clear.png | Bin .../css/imgs/div_line_lg_black.png | Bin .../css/imgs/div_line_sm_black.png | Bin {Mobile => Shared}/css/imgs/download.png | Bin .../css/imgs/header_bg_black.png | Bin {Mobile => Shared}/css/imgs/load.png | Bin {Mobile => Shared}/css/imgs/menu.png | Bin {Mobile => Shared}/css/imgs/redo.png | Bin {Mobile => Shared}/css/imgs/settings.png | Bin {Mobile => Shared}/css/imgs/undo.png | Bin {Mobile => Shared}/css/main.css | 0 {Mobile => Shared}/css/main.less | 0 {Mobile => Shared}/css/seekbars.less | 0 .../css/seekbars/images/ui/handler.png | Bin .../css/seekbars/images/ui/handler@1.5x.png | Bin .../css/seekbars/images/ui/handler@2x.png | Bin {Mobile => Shared}/css/seekbars/seekbars.css | 0 {Mobile => Shared}/css/switches.less | 0 .../css/switches/images/check/danger.png | Bin .../css/switches/images/check/danger@1.5x.png | Bin .../css/switches/images/check/danger@2x.png | Bin .../css/switches/images/check/default.png | Bin .../switches/images/check/default@1.5x.png | Bin .../css/switches/images/check/default@2x.png | Bin .../css/switches/images/radio/danger.png | Bin .../css/switches/images/radio/danger@1.5x.png | Bin .../css/switches/images/radio/danger@2x.png | Bin .../css/switches/images/radio/default.png | Bin .../switches/images/radio/default@1.5x.png | Bin .../css/switches/images/radio/default@2x.png | Bin .../css/switches/images/switch/background.png | Bin .../images/switch/background@1.5x.png | Bin .../switches/images/switch/background_off.png | Bin .../images/switch/background_off@1.5x.png | Bin {Mobile => Shared}/css/value_selector.less | 0 .../value_selector/images/icons/checked.png | Bin .../images/icons/checked@1.5x.png | Bin .../images/icons/checked@2x.png | Bin .../value_selector/images/ui/affirmative.png | Bin .../css/value_selector/images/ui/default.png | Bin .../css/value_selector/images/ui/gradient.png | Bin .../images/ui/gradient@1.5x.png | Bin .../css/value_selector/images/ui/pattern.png | Bin .../images/ui/shadow-invert.png | Bin .../images/ui/shadow-invert@1.5x.png | Bin .../images/ui/shadow-invert@2x.png | Bin .../css/value_selector/images/ui/shadow.png | Bin .../value_selector/images/ui/shadow@1.5x.png | Bin .../value_selector/images/ui/shadow@2x.png | Bin .../MozillaFXOSIconTemplate1_overlay.png | Bin {Mobile => Shared}/img/icons/icon120.png | Bin {Mobile => Shared}/img/icons/icon128.png | Bin {Mobile => Shared}/img/icons/icon16.png | Bin {Mobile => Shared}/img/icons/icon2.png | Bin {Mobile => Shared}/img/icons/icon2.svg | 0 {Mobile => Shared}/img/icons/icon32.png | Bin {Mobile => Shared}/img/icons/icon48.png | Bin {Mobile => Shared}/img/icons/icon60.png | Bin {Mobile => Shared}/img/icons/icon64.png | Bin {Mobile => Shared}/img/icons/icon90.png | Bin Web/js/desktop.js => Shared/js/events.js | 65 +- {Mobile => Shared}/js/functions.js | 0 .../js/libs/color-picker-touch.js | 0 {Mobile => Shared}/js/libs/color-picker.js | 0 {Mobile => Shared}/js/libs/mobilebrowsers.js | 0 {Mobile => Shared}/js/libs/stack.js | 0 {Mobile => Shared}/js/libs/touch.js | 0 {Mobile => Shared}/js/libs/yepnope.min.js | 0 {Mobile => Shared}/js/libs/zepto.min.js | 0 Mobile/js/main.js => Shared/js/shared.js | 5 +- Web/css/color-picker.less | 90 --- Web/css/fonts.less | 16 - Web/css/main.less | 292 -------- Web/css/switches.less | 94 --- Web/css/value_selector.less | 204 ------ .../MozillaFXOSIconTemplate1_overlay.png | Bin 4429 -> 0 bytes Web/img/icons/icon120.png | Bin 8166 -> 0 bytes Web/img/icons/icon128.png | Bin 9136 -> 0 bytes Web/img/icons/icon16.png | Bin 738 -> 0 bytes Web/img/icons/icon2.png | Bin 7371 -> 0 bytes Web/img/icons/icon2.svg | 102 --- Web/img/icons/icon32.png | Bin 1630 -> 0 bytes Web/img/icons/icon48.png | Bin 2742 -> 0 bytes Web/img/icons/icon60.png | Bin 3810 -> 0 bytes Web/img/icons/icon64.png | Bin 4075 -> 0 bytes Web/img/icons/icon90.png | Bin 6142 -> 0 bytes Web/index.html | 2 + Web/js/functions.js | 345 ---------- Web/js/less-1.5.0.min.js | 13 - Web/js/libs/color-picker-touch.js | 290 -------- Web/js/libs/color-picker.js | 289 -------- Web/js/libs/mobilebrowsers.js | 1 - Web/js/libs/stack.js | 22 - Web/js/libs/touch.js | 166 ----- Web/js/libs/yepnope.min.js | 2 - Web/js/libs/zepto.min.js | 2 - Web/js/main.js | 52 +- Web/js/mobile.js | 231 ------- Web/{manifest-web.webapp => manifest.webapp} | 0 .../mobile}/css/fonts/MozTT-Bold.ttf | Bin .../mobile}/css/fonts/MozTT-Light.ttf | Bin .../mobile}/css/fonts/MozTT-Medium.ttf | Bin .../mobile}/css/fonts/MozTT-Regular.ttf | Bin .../mobile}/css/imgs/bg_overlay_pressed_1.png | Bin .../mobile}/css/imgs/bg_overlay_pressed_2.png | Bin {Web => build/mobile}/css/imgs/clear.png | Bin .../mobile}/css/imgs/div_line_lg_black.png | Bin .../mobile}/css/imgs/div_line_sm_black.png | Bin {Web => build/mobile}/css/imgs/download.png | Bin .../mobile}/css/imgs/header_bg_black.png | Bin {Web => build/mobile}/css/imgs/load.png | Bin {Web => build/mobile}/css/imgs/menu.png | Bin {Web => build/mobile}/css/imgs/redo.png | Bin {Web => build/mobile}/css/imgs/settings.png | Bin {Web => build/mobile}/css/imgs/undo.png | Bin {Web => build/mobile}/css/main.css | 0 .../css/seekbars/images/ui/handler.png | Bin .../css/seekbars/images/ui/handler@1.5x.png | Bin .../css/seekbars/images/ui/handler@2x.png | Bin .../mobile}/css/seekbars/seekbars.css | 0 .../css/switches/images/check/danger.png | Bin .../css/switches/images/check/danger@1.5x.png | Bin .../css/switches/images/check/danger@2x.png | Bin .../css/switches/images/check/default.png | Bin .../switches/images/check/default@1.5x.png | Bin .../css/switches/images/check/default@2x.png | Bin .../css/switches/images/radio/danger.png | Bin .../css/switches/images/radio/danger@1.5x.png | Bin .../css/switches/images/radio/danger@2x.png | Bin .../css/switches/images/radio/default.png | Bin .../switches/images/radio/default@1.5x.png | Bin .../css/switches/images/radio/default@2x.png | Bin .../css/switches/images/switch/background.png | Bin .../images/switch/background@1.5x.png | Bin .../switches/images/switch/background_off.png | Bin .../images/switch/background_off@1.5x.png | Bin .../value_selector/images/icons/checked.png | Bin .../images/icons/checked@1.5x.png | Bin .../images/icons/checked@2x.png | Bin .../value_selector/images/ui/affirmative.png | Bin .../css/value_selector/images/ui/default.png | Bin .../css/value_selector/images/ui/gradient.png | Bin .../images/ui/gradient@1.5x.png | Bin .../css/value_selector/images/ui/pattern.png | Bin .../images/ui/shadow-invert.png | Bin .../images/ui/shadow-invert@1.5x.png | Bin .../images/ui/shadow-invert@2x.png | Bin .../css/value_selector/images/ui/shadow.png | Bin .../value_selector/images/ui/shadow@1.5x.png | Bin .../value_selector/images/ui/shadow@2x.png | Bin build/mobile/index.html | 263 ++++++++ build/mobile/js/Untitled Document | 0 build/mobile/js/diff.js | 1 + build/mobile/js/events.js | 1 + build/mobile/js/functions.js | 1 + build/mobile/js/libs/color-picker-touch.js | 1 + build/mobile/js/libs/color-picker.js | 1 + build/mobile/js/libs/mobilebrowsers.js | 1 + build/mobile/js/libs/stack.js | 1 + build/mobile/js/libs/touch.js | 1 + build/mobile/js/libs/yepnope.min.js | 1 + build/mobile/js/libs/zepto.min.js | 1 + build/mobile/js/main.js | 1 + build/mobile/js/shared.js | 1 + build/mobile/manifest.webapp | 42 ++ build/web/cache.appcache | 5 + build/web/css/fonts/MozTT-Bold.ttf | Bin 0 -> 79388 bytes build/web/css/fonts/MozTT-Light.ttf | Bin 0 -> 93724 bytes build/web/css/fonts/MozTT-Medium.ttf | Bin 0 -> 93372 bytes build/web/css/fonts/MozTT-Regular.ttf | Bin 0 -> 93124 bytes build/web/css/imgs/bg_overlay_pressed_1.png | Bin 0 -> 93 bytes build/web/css/imgs/bg_overlay_pressed_2.png | Bin 0 -> 94 bytes build/web/css/imgs/clear.png | Bin 0 -> 1781 bytes build/web/css/imgs/div_line_lg_black.png | Bin 0 -> 1051 bytes build/web/css/imgs/div_line_sm_black.png | Bin 0 -> 1067 bytes build/web/css/imgs/download.png | Bin 0 -> 1302 bytes build/web/css/imgs/header_bg_black.png | Bin 0 -> 1160 bytes build/web/css/imgs/load.png | Bin 0 -> 413 bytes build/web/css/imgs/menu.png | Bin 0 -> 182 bytes build/web/css/imgs/redo.png | Bin 0 -> 1330 bytes build/web/css/imgs/settings.png | Bin 0 -> 1815 bytes build/web/css/imgs/undo.png | Bin 0 -> 1416 bytes build/web/css/main.css | 631 ++++++++++++++++++ build/web/css/seekbars/images/ui/handler.png | Bin 0 -> 636 bytes .../css/seekbars/images/ui/handler@1.5x.png | Bin 0 -> 960 bytes .../web/css/seekbars/images/ui/handler@2x.png | Bin 0 -> 938 bytes .../web/css/seekbars/seekbars.css | 3 +- .../web/css/switches/images/check/danger.png | Bin 0 -> 583 bytes .../css/switches/images/check/danger@1.5x.png | Bin 0 -> 946 bytes .../css/switches/images/check/danger@2x.png | Bin 0 -> 1119 bytes .../web/css/switches/images/check/default.png | Bin 0 -> 583 bytes .../switches/images/check/default@1.5x.png | Bin 0 -> 946 bytes .../css/switches/images/check/default@2x.png | Bin 0 -> 1119 bytes .../web/css/switches/images/radio/danger.png | Bin 0 -> 578 bytes .../css/switches/images/radio/danger@1.5x.png | Bin 0 -> 893 bytes .../css/switches/images/radio/danger@2x.png | Bin 0 -> 1089 bytes .../web/css/switches/images/radio/default.png | Bin 0 -> 575 bytes .../switches/images/radio/default@1.5x.png | Bin 0 -> 889 bytes .../css/switches/images/radio/default@2x.png | Bin 0 -> 1251 bytes .../css/switches/images/switch/background.png | Bin 0 -> 755 bytes .../images/switch/background@1.5x.png | Bin 0 -> 1047 bytes .../switches/images/switch/background_off.png | Bin 0 -> 475 bytes .../images/switch/background_off@1.5x.png | Bin 0 -> 616 bytes .../value_selector/images/icons/checked.png | Bin 0 -> 177 bytes .../images/icons/checked@1.5x.png | Bin 0 -> 392 bytes .../images/icons/checked@2x.png | Bin 0 -> 601 bytes .../value_selector/images/ui/affirmative.png | Bin 0 -> 101 bytes .../css/value_selector/images/ui/default.png | Bin 0 -> 82 bytes .../css/value_selector/images/ui/gradient.png | Bin 0 -> 3524 bytes .../images/ui/gradient@1.5x.png | Bin 0 -> 7864 bytes .../css/value_selector/images/ui/pattern.png | Bin 0 -> 6851 bytes .../images/ui/shadow-invert.png | Bin 0 -> 83 bytes .../images/ui/shadow-invert@1.5x.png | Bin 0 -> 154 bytes .../images/ui/shadow-invert@2x.png | Bin 0 -> 86 bytes .../css/value_selector/images/ui/shadow.png | Bin 0 -> 82 bytes .../value_selector/images/ui/shadow@1.5x.png | Bin 0 -> 154 bytes .../value_selector/images/ui/shadow@2x.png | Bin 0 -> 87 bytes build/web/index.html | 262 ++++++++ build/web/js/Untitled Document | 0 build/web/js/events.js | 1 + build/web/js/functions.js | 1 + build/web/js/libs/color-picker-touch.js | 1 + build/web/js/libs/color-picker.js | 1 + build/web/js/libs/mobilebrowsers.js | 1 + build/web/js/libs/stack.js | 1 + build/web/js/libs/touch.js | 1 + build/web/js/libs/yepnope.min.js | 1 + build/web/js/libs/zepto.min.js | 1 + build/web/js/main.js | 1 + build/web/js/shared.js | 1 + build/web/manifest.webapp | 31 + package.json | 30 + 248 files changed, 1582 insertions(+), 2846 deletions(-) create mode 100644 Gruntfile.js create mode 100644 Mobile/js/diff.js delete mode 100755 Mobile/js/functions-m.js delete mode 100755 Mobile/js/less-1.5.0.min.js delete mode 100755 Mobile/js/mobile.js rename {Mobile => Shared}/css/color-picker.less (100%) rename {Mobile => Shared}/css/fonts.less (100%) rename {Mobile => Shared}/css/fonts/MozTT-Bold.ttf (100%) rename {Mobile => Shared}/css/fonts/MozTT-Light.ttf (100%) rename {Mobile => Shared}/css/fonts/MozTT-Medium.ttf (100%) rename {Mobile => Shared}/css/fonts/MozTT-Regular.ttf (100%) rename {Mobile => Shared}/css/imgs/bg_overlay_pressed_1.png (100%) rename {Mobile => Shared}/css/imgs/bg_overlay_pressed_2.png (100%) rename {Mobile => Shared}/css/imgs/clear.png (100%) rename {Mobile => Shared}/css/imgs/div_line_lg_black.png (100%) rename {Mobile => Shared}/css/imgs/div_line_sm_black.png (100%) rename {Mobile => Shared}/css/imgs/download.png (100%) rename {Mobile => Shared}/css/imgs/header_bg_black.png (100%) rename {Mobile => Shared}/css/imgs/load.png (100%) rename {Mobile => Shared}/css/imgs/menu.png (100%) rename {Mobile => Shared}/css/imgs/redo.png (100%) rename {Mobile => Shared}/css/imgs/settings.png (100%) rename {Mobile => Shared}/css/imgs/undo.png (100%) rename {Mobile => Shared}/css/main.css (100%) rename {Mobile => Shared}/css/main.less (100%) rename {Mobile => Shared}/css/seekbars.less (100%) rename {Mobile => Shared}/css/seekbars/images/ui/handler.png (100%) rename {Mobile => Shared}/css/seekbars/images/ui/handler@1.5x.png (100%) rename {Mobile => Shared}/css/seekbars/images/ui/handler@2x.png (100%) rename {Mobile => Shared}/css/seekbars/seekbars.css (100%) rename {Mobile => Shared}/css/switches.less (100%) rename {Mobile => Shared}/css/switches/images/check/danger.png (100%) rename {Mobile => Shared}/css/switches/images/check/danger@1.5x.png (100%) rename {Mobile => Shared}/css/switches/images/check/danger@2x.png (100%) rename {Mobile => Shared}/css/switches/images/check/default.png (100%) rename {Mobile => Shared}/css/switches/images/check/default@1.5x.png (100%) rename {Mobile => Shared}/css/switches/images/check/default@2x.png (100%) rename {Mobile => Shared}/css/switches/images/radio/danger.png (100%) rename {Mobile => Shared}/css/switches/images/radio/danger@1.5x.png (100%) rename {Mobile => Shared}/css/switches/images/radio/danger@2x.png (100%) rename {Mobile => Shared}/css/switches/images/radio/default.png (100%) rename {Mobile => Shared}/css/switches/images/radio/default@1.5x.png (100%) rename {Mobile => Shared}/css/switches/images/radio/default@2x.png (100%) rename {Mobile => Shared}/css/switches/images/switch/background.png (100%) rename {Mobile => Shared}/css/switches/images/switch/background@1.5x.png (100%) rename {Mobile => Shared}/css/switches/images/switch/background_off.png (100%) rename {Mobile => Shared}/css/switches/images/switch/background_off@1.5x.png (100%) rename {Mobile => Shared}/css/value_selector.less (100%) rename {Mobile => Shared}/css/value_selector/images/icons/checked.png (100%) rename {Mobile => Shared}/css/value_selector/images/icons/checked@1.5x.png (100%) rename {Mobile => Shared}/css/value_selector/images/icons/checked@2x.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/affirmative.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/default.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/gradient.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/gradient@1.5x.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/pattern.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/shadow-invert.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/shadow-invert@1.5x.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/shadow-invert@2x.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/shadow.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/shadow@1.5x.png (100%) rename {Mobile => Shared}/css/value_selector/images/ui/shadow@2x.png (100%) rename {Mobile => Shared}/img/icons/MozillaFXOSIconTemplate1_overlay.png (100%) rename {Mobile => Shared}/img/icons/icon120.png (100%) rename {Mobile => Shared}/img/icons/icon128.png (100%) rename {Mobile => Shared}/img/icons/icon16.png (100%) rename {Mobile => Shared}/img/icons/icon2.png (100%) rename {Mobile => Shared}/img/icons/icon2.svg (100%) rename {Mobile => Shared}/img/icons/icon32.png (100%) rename {Mobile => Shared}/img/icons/icon48.png (100%) rename {Mobile => Shared}/img/icons/icon60.png (100%) rename {Mobile => Shared}/img/icons/icon64.png (100%) rename {Mobile => Shared}/img/icons/icon90.png (100%) rename Web/js/desktop.js => Shared/js/events.js (80%) rename {Mobile => Shared}/js/functions.js (100%) rename {Mobile => Shared}/js/libs/color-picker-touch.js (100%) rename {Mobile => Shared}/js/libs/color-picker.js (100%) rename {Mobile => Shared}/js/libs/mobilebrowsers.js (100%) rename {Mobile => Shared}/js/libs/stack.js (100%) rename {Mobile => Shared}/js/libs/touch.js (100%) rename {Mobile => Shared}/js/libs/yepnope.min.js (100%) rename {Mobile => Shared}/js/libs/zepto.min.js (100%) rename Mobile/js/main.js => Shared/js/shared.js (98%) mode change 100755 => 100644 delete mode 100755 Web/css/color-picker.less delete mode 100755 Web/css/fonts.less delete mode 100755 Web/css/main.less delete mode 100755 Web/css/switches.less delete mode 100755 Web/css/value_selector.less delete mode 100755 Web/img/icons/MozillaFXOSIconTemplate1_overlay.png delete mode 100755 Web/img/icons/icon120.png delete mode 100755 Web/img/icons/icon128.png delete mode 100755 Web/img/icons/icon16.png delete mode 100755 Web/img/icons/icon2.png delete mode 100755 Web/img/icons/icon2.svg delete mode 100755 Web/img/icons/icon32.png delete mode 100755 Web/img/icons/icon48.png delete mode 100755 Web/img/icons/icon60.png delete mode 100755 Web/img/icons/icon64.png delete mode 100755 Web/img/icons/icon90.png delete mode 100755 Web/js/functions.js delete mode 100755 Web/js/less-1.5.0.min.js delete mode 100755 Web/js/libs/color-picker-touch.js delete mode 100755 Web/js/libs/color-picker.js delete mode 100755 Web/js/libs/mobilebrowsers.js delete mode 100755 Web/js/libs/stack.js delete mode 100755 Web/js/libs/touch.js delete mode 100755 Web/js/libs/yepnope.min.js delete mode 100755 Web/js/libs/zepto.min.js delete mode 100755 Web/js/mobile.js rename Web/{manifest-web.webapp => manifest.webapp} (100%) rename {Web => build/mobile}/css/fonts/MozTT-Bold.ttf (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/fonts/MozTT-Light.ttf (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/fonts/MozTT-Medium.ttf (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/fonts/MozTT-Regular.ttf (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/bg_overlay_pressed_1.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/bg_overlay_pressed_2.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/clear.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/div_line_lg_black.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/div_line_sm_black.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/download.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/header_bg_black.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/load.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/menu.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/redo.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/settings.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/imgs/undo.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/main.css (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/seekbars/images/ui/handler.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/seekbars/images/ui/handler@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/seekbars/images/ui/handler@2x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/seekbars/seekbars.css (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/check/danger.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/check/danger@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/check/danger@2x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/check/default.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/check/default@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/check/default@2x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/radio/danger.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/radio/danger@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/radio/danger@2x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/radio/default.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/radio/default@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/radio/default@2x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/switch/background.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/switch/background@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/switch/background_off.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/switches/images/switch/background_off@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/icons/checked.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/icons/checked@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/icons/checked@2x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/affirmative.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/default.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/gradient.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/gradient@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/pattern.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/shadow-invert.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/shadow-invert@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/shadow-invert@2x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/shadow.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/shadow@1.5x.png (100%) mode change 100755 => 100644 rename {Web => build/mobile}/css/value_selector/images/ui/shadow@2x.png (100%) mode change 100755 => 100644 create mode 100644 build/mobile/index.html create mode 100644 build/mobile/js/Untitled Document create mode 100644 build/mobile/js/diff.js create mode 100644 build/mobile/js/events.js create mode 100644 build/mobile/js/functions.js create mode 100644 build/mobile/js/libs/color-picker-touch.js create mode 100644 build/mobile/js/libs/color-picker.js create mode 100644 build/mobile/js/libs/mobilebrowsers.js create mode 100644 build/mobile/js/libs/stack.js create mode 100644 build/mobile/js/libs/touch.js create mode 100644 build/mobile/js/libs/yepnope.min.js create mode 100644 build/mobile/js/libs/zepto.min.js create mode 100644 build/mobile/js/main.js create mode 100644 build/mobile/js/shared.js create mode 100644 build/mobile/manifest.webapp create mode 100644 build/web/cache.appcache create mode 100644 build/web/css/fonts/MozTT-Bold.ttf create mode 100644 build/web/css/fonts/MozTT-Light.ttf create mode 100644 build/web/css/fonts/MozTT-Medium.ttf create mode 100644 build/web/css/fonts/MozTT-Regular.ttf create mode 100644 build/web/css/imgs/bg_overlay_pressed_1.png create mode 100644 build/web/css/imgs/bg_overlay_pressed_2.png create mode 100644 build/web/css/imgs/clear.png create mode 100644 build/web/css/imgs/div_line_lg_black.png create mode 100644 build/web/css/imgs/div_line_sm_black.png create mode 100644 build/web/css/imgs/download.png create mode 100644 build/web/css/imgs/header_bg_black.png create mode 100644 build/web/css/imgs/load.png create mode 100644 build/web/css/imgs/menu.png create mode 100644 build/web/css/imgs/redo.png create mode 100644 build/web/css/imgs/settings.png create mode 100644 build/web/css/imgs/undo.png create mode 100644 build/web/css/main.css create mode 100644 build/web/css/seekbars/images/ui/handler.png create mode 100644 build/web/css/seekbars/images/ui/handler@1.5x.png create mode 100644 build/web/css/seekbars/images/ui/handler@2x.png rename Web/css/seekbars.less => build/web/css/seekbars/seekbars.css (97%) mode change 100755 => 100644 create mode 100644 build/web/css/switches/images/check/danger.png create mode 100644 build/web/css/switches/images/check/danger@1.5x.png create mode 100644 build/web/css/switches/images/check/danger@2x.png create mode 100644 build/web/css/switches/images/check/default.png create mode 100644 build/web/css/switches/images/check/default@1.5x.png create mode 100644 build/web/css/switches/images/check/default@2x.png create mode 100644 build/web/css/switches/images/radio/danger.png create mode 100644 build/web/css/switches/images/radio/danger@1.5x.png create mode 100644 build/web/css/switches/images/radio/danger@2x.png create mode 100644 build/web/css/switches/images/radio/default.png create mode 100644 build/web/css/switches/images/radio/default@1.5x.png create mode 100644 build/web/css/switches/images/radio/default@2x.png create mode 100644 build/web/css/switches/images/switch/background.png create mode 100644 build/web/css/switches/images/switch/background@1.5x.png create mode 100644 build/web/css/switches/images/switch/background_off.png create mode 100644 build/web/css/switches/images/switch/background_off@1.5x.png create mode 100644 build/web/css/value_selector/images/icons/checked.png create mode 100644 build/web/css/value_selector/images/icons/checked@1.5x.png create mode 100644 build/web/css/value_selector/images/icons/checked@2x.png create mode 100644 build/web/css/value_selector/images/ui/affirmative.png create mode 100644 build/web/css/value_selector/images/ui/default.png create mode 100644 build/web/css/value_selector/images/ui/gradient.png create mode 100644 build/web/css/value_selector/images/ui/gradient@1.5x.png create mode 100644 build/web/css/value_selector/images/ui/pattern.png create mode 100644 build/web/css/value_selector/images/ui/shadow-invert.png create mode 100644 build/web/css/value_selector/images/ui/shadow-invert@1.5x.png create mode 100644 build/web/css/value_selector/images/ui/shadow-invert@2x.png create mode 100644 build/web/css/value_selector/images/ui/shadow.png create mode 100644 build/web/css/value_selector/images/ui/shadow@1.5x.png create mode 100644 build/web/css/value_selector/images/ui/shadow@2x.png create mode 100644 build/web/index.html create mode 100644 build/web/js/Untitled Document create mode 100644 build/web/js/events.js create mode 100644 build/web/js/functions.js create mode 100644 build/web/js/libs/color-picker-touch.js create mode 100644 build/web/js/libs/color-picker.js create mode 100644 build/web/js/libs/mobilebrowsers.js create mode 100644 build/web/js/libs/stack.js create mode 100644 build/web/js/libs/touch.js create mode 100644 build/web/js/libs/yepnope.min.js create mode 100644 build/web/js/libs/zepto.min.js create mode 100644 build/web/js/main.js create mode 100644 build/web/js/shared.js create mode 100644 build/web/manifest.webapp create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 53b7af4..b462f3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.swp *.swo *~ +node_modules diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..4982baa --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,127 @@ +var which; +module.exports = function(grunt) { + + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + uglify: { + main: { + files: [ + { + expand: true, + cwd: 'Shared/js/', + src: '**', + dest: 'build/mobile/js/', + filter: 'isFile' + }, + { + expand: true, + cwd: 'Shared/js', + src: '**', + dest: 'build/web/js', + filter: 'isFile' + }, + { + expand: true, + cwd: 'Mobile/js/', + src: '*', + dest: 'build/mobile/js', + filter: 'isFile' + }, + { + expand: true, + cwd: 'Web/js/', + src: '*', + dest: 'build/web/js', + filter: 'isFile' + } + ] + } + }, + less: { + production: { + files: { + 'build/mobile/css/main.css': 'Shared/css/main.less', + 'build/web/css/main.css': 'Shared/css/main.less' + }, + compress: true + } + }, + copy: { + 'main files': { + files: [ + { + expand: true, + cwd: 'Shared', + src: 'img', + dest: 'build/mobile' + }, + { + expand: true, + cwd: 'Shared', + src: 'img', + dest: 'build/web' + }, + { + expand: true, + cwd: 'Mobile', + src: ['index.html', 'manifest.webapp'], + dest: 'build/mobile' + }, + { + expand: true, + cwd: 'Web', + src: ['index.html', 'manifest.webapp', 'cache.appcache'], + dest: 'build/web' + } + ] + }, + 'css assets': { + files: [ + { + expand: true, + cwd: 'Shared/css', + src: '*/**', + dest: 'build/mobile/css' + }, + { + expand: true, + cwd: 'Shared/css', + src: '*/**', + dest: 'build/web/css' + } + ] + } + }, + + watch: { + js: { + files: ['Shared/js/**', 'Mobile/js/**', 'Web/js/**'], + tasks: 'uglify', + options: { + spawn: false + } + }, + less: { + files: 'Shared/css/**', + tasks: 'less', + options: { + spawn: false + } + }, + copy: { + files: 'Shared/**', + tasks: 'copy', + options: { + spawn: false + } + } + } + }); + + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-less'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.registerTask('default', ['uglify','copy', 'less']) + +} diff --git a/Mobile/index.html b/Mobile/index.html index f7628c0..5620125 100755 --- a/Mobile/index.html +++ b/Mobile/index.html @@ -253,8 +253,9 @@ - - + + + diff --git a/Mobile/js/diff.js b/Mobile/js/diff.js new file mode 100644 index 0000000..a9b9856 --- /dev/null +++ b/Mobile/js/diff.js @@ -0,0 +1,103 @@ +$(document).ready(function() { + + $('*').off('click mousemove mousedown mouseup mouseleave').on('click mousemove mousedown mouseup mouseleave', function(e) { + e.preventDefault; + return false; + }) + + $('a[href^="http"]').tap(function(e) { + e.preventDefault(); + var href = $(this).attr('href'); + var view = new MozActivity({ + name: 'view', + data: { + type: 'url', + url: href + } + }) + }) + + $('a[href^="mailto"]').tap(function(e) { + e.preventDefault(); + var mail = /mailto:(.*)/.exec($(this).attr('href'))[1]; + var mail = new MozActivity({ + name: 'new', + data: { + type: 'mail', + url: mail + } + }) + }) + + window.save = function() { + switch(save.background) { + case 'white': { + c.fillStyle = 'white'; + c.globalCompositeOperation = 'destination-over'; + c.fillRect(0, 0, width(), height()); + c.fillStyle = settings.color; + c.globalCompositeOperation = settings.composite; + break; + } + case 'current color': { + c.fillStyle = settings.bg; + c.globalCompositeOperation = 'destination-over'; + c.fillRect(0, 0, width(), height()); + c.globalCompositeOperation = settings.composite; + break; + } + } + var data = $c[0].toDataURL(); + if( save.type == 'sketchy project' ) { + var list = JSON.parse(localStorage.getItem('projects')); + var index; + if( list && list.some(function(a, i) { if( a.name == save['file name'] ) {index = i; return true} return false }) ) { + if( confirm('A sketch with this name already exists. Do you want to overwrite ' + save['file name']) + '?' ) { + console.log(index); + list[index] = { + name: save['file name'], + data: data, + points: window.points, + settings: settings + } + localStorage.setItem('projects', JSON.stringify(list)); + } + } + else + list ? list.push({ + name: save['file name'], + data: data, + points: window.points + }) : list = [{ + name: save['file name'], + data: data, + points: window.points + }]; + localStorage.setItem('projects', JSON.stringify(list)); + } else { + window.open(data, '_blank').focus(); + } + + c.putImageData(window.points.history[window.points.history.last].data, 0, 0); + } + + window.load = function() { + var file = JSON.parse(localStorage.getItem('projects')).filter(function(a) { return a.name == load.file })[0]; + var img = document.createElement('img'); + img.src = file.data; + img.onload = function() { + c.clearRect(0, 0, width(), height()); + c.drawImage(img, 0, 0); + window.points = file.points; + window.points.history = [{ data: c.createImageData($c.width(), $c.height()), points: []}, { data: c.getImageData(0, 0, width(), height()), points: file.points}]; + $c.first().css('background', file.settings.bg); + window.settings.bg = file.settings.bg; + } + } + + if( localStorage.getItem('sawTips') != settings.version ) { + $('.tour').removeClass('hidden'); + localStorage.setItem('sawTips', settings.version); + } + +}) diff --git a/Mobile/js/functions-m.js b/Mobile/js/functions-m.js deleted file mode 100755 index 37b4973..0000000 --- a/Mobile/js/functions-m.js +++ /dev/null @@ -1,239 +0,0 @@ -"use strict"; -/*** ESSENTIALS ***/ - -function sizeAndPos() { - - var data = c.getImageData(0,0, $c.width(), $c.height()); - var w = $(window).width(), - h = $(window).height() - 53; - $c.attr('width', w * window.devicePixelRatio); - $c.attr('height',h * window.devicePixelRatio); - $c.css({ - 'width' : w, - 'height' : h - }); - c.clearRect(0,0, width(), height()); - c.putImageData(data, 0, 0); -} - -function relative(x,y, el) { - var el = el || $c[0]; - return { - x : x*window.devicePixelRatio - el.offset().left, - y : (y - 53) * window.devicePixelRatio - el.offset().top - } -} - -function threshold(x1, y1, x2, y2, threshold) { - var tr = threshold || 5; - if( x1 <= x2 + tr && x1 >= x2 - tr && y1 <= y2 + tr && y1 >= y2 - tr ) return true; - return false; -} - -function draw(x1, y1, x2, y2, opts, overlay) { - opts = opts || {}; - var c = window.c; - if( overlay ) var c = window.o; - c.beginPath(); - if( settings.type == 'eraser' ) c.globalCompositeOperation = 'destination-out'; - else c.globalCompositeOperation = opts.composite || settings.composite; - c.lineCap = opts.lineCap || settings.lineCap; - c.lineJoin = opts.lineJoin || settings.lineJoin; - c.strokeStyle = opts.color || settings.color; - c.fillStyle = opts.color || settings.color; - c.lineWidth = ( opts.lineWidth || settings.lineWidth ) / 10; - c.moveTo(x1, y1); - c.lineTo(x2, y2); - if( !opts.noStroke ) c.stroke(); - if( opts.fill ) c.fill(); -} - -function shape(opts, overlay) { - if(overlay) var c = window.o; - else var c = window.c; - c.beginPath(); - c.fillStyle = opts.color || settings.color; - switch(opts.type) { - - case 'circle': { - c.arc(opts.x, opts.y, opts.radius, 0, 2*Math.PI); - break; - } - case 'rectangle': { - c.rect(opts.x, opts.y, opts.width, opts.height); - break; - } - case 'square': { - c.rect(opts.x, opts.y, opts.width, opts.width); - break; - } - case 'triangle': { - c.fillStyle = opts - c.moveTo(opts.x1, opts.y1); - c.lineTo(opts.x2, opts.y2); - c.lineTo(opts.x3, opts.y3); - c.lineTo(opts.x1, opts.y1); - } - - } - c.fill(); -} - - -function undo() { - var history = window.points.history; - if( history.last > 1 ) { - var step = history[history.last-1]; - c.putImageData(step.data, 0, 0); - window.points = step.points.slice(0); - window.points.history = history; - window.points.history.last = history.last-1; - } else { - c.clearRect(0,0, width(), height()); - window.points = []; - window.points.history = history; - window.points.history.last = 0; - } - -} - -function redo() { - var history = window.points.history; - if( history.last < history.length-1 ) { - var step = history[history.last+1]; - c.putImageData(step.data, 0, 0); - window.points = step.points.slice(0); - window.points.history = history; - window.points.history.last = history.last+1; - } -} - -function width() { - return +$c.attr('width'); -} - -function height() { - return +$c.attr('height'); -} - -function dataToBlob(data) { - var binary = atob(data.split(',')[1]), array = []; - var type = data.split(',')[0].split(':')[1].split(';')[0]; - for(var i = 0; i < binary.length; i++) array.push(binary.charCodeAt(i)); - return new Blob([new Uint8Array(array)], {type: type}); -} - - -/*** END ***/ - -function startPoint(x, y) { - - // If no previous point exists, make the first one. - if( !points.length ) points.push({x: x, y: y, type: '', start: {x: x, y: y}}); - - var old = points[points.length-1], - start = old.start, - current = { - x : x, - y : y, - start : old.start || {x: x, y: y}, - type : settings.type - } - // Line - if( old.type !== 'line' && current.type == 'line' ) { - window.o.beginPath(); - window.o.fillStyle = 'red'; - window.o.arc(x,y, 3, 0, 2*Math.PI); - window.o.fill(); - } - - if( old.type == 'line' && current.type == 'line' ) { - if( points[points.indexOf(old)-1].type !== 'line' ) { - o.clearRect(old.x-3, old.y-3, 6, 6, true); - draw(old.x, old.y, x, y); - } else - draw(old.x, old.y, x, y); - } - - // Shapes - - if( old.type !== 'shape' && current.type == 'shape' ) { - settings.shape. - } - - var thresholds = window.mobile ? [10, 5] : [5, 2]; - if( points.length > 1 && ((start && threshold(start.x, start.y, x, y, thresholds[0])) || threshold(old.x, old.y, x, y, thresholds[1])) ) { - window.active = false; - points[points.length-1].type = ''; - points[points.length-1].start = undefined; - return; - } - points.push(current); -} - -function drawPoint(x,y) { - var capture = points[points.length-1]; - - switch(capture.type) { - case 'eraser': { - capture.type = 'pen'; - } - case 'pen': { - draw(capture.x, capture.y, x, y); - - var current = { - x : x, - y : y, - start : capture.start, - type : capture.type - } - - points.push(current); - break; - } - case 'sketch': { - draw(capture.x, capture.y, x, y); - var current = { - x : x, - y : y, - start : capture.start, - type : capture.type - } - points.push(current); - - for( var i = 0, len = points.length-1; i < len; i++ ) { - if(threshold(points[i].x, points[i].y, current.x, current.y, settings.connectTelorance)) { - var x = points[i].x - current.x, - y = points[i].y - current.y; - var w = settings.lineWidth/20 > 0.2 ? settings.lineWidth/20 : 0.2; - - draw(points[i].x - x*0.2, points[i].y - y*0.2, current.x + x*0.2, current.y + y*0.2, {strokeStyle: 'rgba(0,0,0,0.4)', lineWidth: w}) - } - } - break; - } - case 'fur': { - draw(capture.x, capture.y, x, y); - var current = { - x : x, - y : y, - start : capture.start, - type : capture.type - } - points.push(current); - - for( var i = 0, len = points.length-1; i < len; i++ ) { - if(threshold(points[i].x, points[i].y, current.x, current.y, settings.connectTelorance)) { - var x = points[i].x - current.x, - y = points[i].y - current.y; - var l = settings.furLength / 100 || 0.2; - var w = settings.lineWidth/20 > 0.2 ? settings.lineWidth/20 : 0.2; - - draw(points[i].x + x*l, points[i].y + y*l, current.x - x*l, current.y - y*l, {strokeStyle: 'rgba(0,0,0,0.4)', lineWidth: w}) - } - } - break; - } - } -} - diff --git a/Mobile/js/less-1.5.0.min.js b/Mobile/js/less-1.5.0.min.js deleted file mode 100755 index ef4be90..0000000 --- a/Mobile/js/less-1.5.0.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! - * LESS - Leaner CSS v1.5.0 - * http://lesscss.org - * - * Copyright (c) 2009-2013, Alexis Sellier - * Licensed under the Apache v2 License. - * - * @licence - */ - -function require(a){return window.less[a.split("/")[1]]}function log(a,b){"development"==less.env&&"undefined"!=typeof console&&less.logLevel>=b&&console.log("less: "+a)}function extractId(a){return a.replace(/^[a-z-]+:\/+?[^\/]+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function errorConsole(a,b){var c="{line} {content}",d=a.filename||b,e=[],f=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+d+" ",g=function(a,b,d){void 0!==a.extract[b]&&e.push(c.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[b]))};a.extract?(g(a,0,""),g(a,1,"line"),g(a,2,""),f+="on line "+a.line+", column "+(a.column+1)+":\n"+e.join("\n")):a.stack&&(f+=a.stack),log(f,logLevel.errors)}function createCSS(a,b,c){var d=b.href||"",e="less:"+(b.title||extractId(d)),f=document.getElementById(e),g=!1,h=document.createElement("style");if(h.setAttribute("type","text/css"),b.media&&h.setAttribute("media",b.media),h.id=e,h.styleSheet)try{h.styleSheet.cssText=a}catch(i){throw new Error("Couldn't reassign styleSheet.cssText.")}else h.appendChild(document.createTextNode(a)),g=null!==f&&f.childNodes.length>0&&h.childNodes.length>0&&f.firstChild.nodeValue===h.firstChild.nodeValue;var j=document.getElementsByTagName("head")[0];if(null===f||g===!1){var k=b&&b.nextSibling||null;k?k.parentNode.insertBefore(h,k):j.appendChild(h)}if(f&&g===!1&&f.parentNode.removeChild(f),c&&cache){log("saving "+d+" to cache.",logLevel.info);try{cache.setItem(d,a),cache.setItem(d+":timestamp",c)}catch(i){log("failed to save",logLevel.errors)}}}function errorHTML(a,b){var c,d,e="less-error-message:"+extractId(b||""),f='
  • {content}
  • ',g=document.createElement("div"),h=[],i=a.filename||b,j=i.match(/([^\/]+(\?.*)?)$/)[1];g.id=e,g.className="less-error-message",d="

    "+(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+"

    "+'

    in '+j+" ";var k=function(a,b,c){void 0!==a.extract[b]&&h.push(f.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};a.extract?(k(a,0,""),k(a,1,"line"),k(a,2,""),d+="on line "+a.line+", column "+(a.column+1)+":

    "+""):a.stack&&(d+="
    "+a.stack.split("\n").slice(1).join("
    ")),g.innerHTML=d,createCSS([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),g.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"==less.env&&(c=setInterval(function(){document.body&&(document.getElementById(e)?document.body.replaceChild(g,document.getElementById(e)):document.body.insertBefore(g,document.body.firstChild),clearInterval(c))},10))}function error(a,b){less.errorReporting&&"html"!==less.errorReporting?"console"===less.errorReporting?errorConsole(a,b):"function"==typeof less.errorReporting&&less.errorReporting("add",a,b):errorHTML(a,b)}function removeErrorHTML(a){var b=document.getElementById("less-error-message:"+extractId(a));b&&b.parentNode.removeChild(b)}function removeErrorConsole(){}function removeError(a){less.errorReporting&&"html"!==less.errorReporting?"console"===less.errorReporting?removeErrorConsole(a):"function"==typeof less.errorReporting&&less.errorReporting("remove",a):removeErrorHTML(a)}function loadStyles(a){for(var b,c=document.getElementsByTagName("style"),d=0;d0&&(h.splice(c-1,2),c-=2)}return g.hostPart=f[1],g.directories=h,g.path=f[1]+h.join("/"),g.fileUrl=g.path+(f[4]||""),g.url=g.fileUrl+(f[5]||""),g}function pathDiff(a,b){var c,d,e,f,g=extractUrlParts(a),h=extractUrlParts(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;d>c&&h.directories[c]===g.directories[c];c++);for(f=h.directories.slice(c),e=g.directories.slice(c),c=0;c=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var f=getXMLHttpRequest(),g=isFileProtocol?less.fileAsync:less.async;"function"==typeof f.overrideMimeType&&f.overrideMimeType("text/css"),log("XHR: Getting '"+a+"'",logLevel.info),f.open("GET",a,g),f.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),f.send(null),isFileProtocol&&!less.fileAsync?0===f.status||f.status>=200&&f.status<300?c(f.responseText):d(f.status,a):g?f.onreadystatechange=function(){4==f.readyState&&e(f,c,d)}:e(f,c,d)}function loadFile(a,b,c,d,e){b&&b.currentDirectory&&!/^([a-z-]+:)?\//.test(a)&&(a=b.currentDirectory+a);var f=extractUrlParts(a,window.location.href),g=f.url,h={currentDirectory:f.path,filename:g};if(b?(h.entryPath=b.entryPath,h.rootpath=b.rootpath,h.rootFilename=b.rootFilename,h.relativeUrls=b.relativeUrls):(h.entryPath=f.path,h.rootpath=less.rootpath||f.path,h.rootFilename=g,h.relativeUrls=d.relativeUrls),h.relativeUrls&&(h.rootpath=d.rootpath?extractUrlParts(d.rootpath+pathDiff(f.path,h.entryPath)).path:f.path),d.useFileCache&&fileCache[g])try{var i=fileCache[g];e&&(i+="\n"+e),c(null,i,g,h,{lastModified:new Date})}catch(j){c(j,null,g)}else doXHR(g,d.mime,function(a,b){fileCache[g]=a;try{c(null,a,g,h,{lastModified:b})}catch(d){c(d,null,g)}},function(a,b){c({type:"File",message:"'"+b+"' wasn't found ("+a+")"},null,g)})}function loadStyleSheet(a,b,c,d,e){var f=new less.tree.parseEnv(less);f.mime=a.type,e&&(f.useFileCache=!0),loadFile(a.href,null,function(e,g,h,i,j){if(j){j.remaining=d;var k=cache&&cache.getItem(h),l=cache&&cache.getItem(h+":timestamp");if(!c&&l&&j.lastModified&&new Date(j.lastModified).valueOf()===new Date(l).valueOf())return createCSS(k,a),j.local=!0,b(null,null,g,a,j,h),void 0}removeError(h),g?(f.currentFileInfo=i,new less.Parser(f).parse(g,function(c,d){if(c)return b(c,null,null,a);try{b(c,d,g,a,j,h)}catch(c){b(c,null,null,a)}})):b(e,null,null,a,j,h)},f,e)}function loadStyleSheets(a,b,c){for(var d=0;dv&&(u[q]=u[q].slice(p-v),v=p)}function e(a){var b=a.charCodeAt(0);return 32===b||10===b||9===b}function f(a){var b,c;if(a instanceof Function)return a.call(w.parsers);if("string"==typeof a)b=o.charAt(p)===a?a:null,c=1,d();else{if(d(),!(b=a.exec(u[q])))return null;c=b[0].length}return b?(g(c),"string"==typeof b?b:1===b.length?b[0]:b):void 0}function g(a){for(var b=p,c=q,d=p+u[q].length,f=p+=a;d>p&&e(o.charAt(p));)p++;return u[q]=u[q].slice(a+(p-f)),v=p,0===u[q].length&&q=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}}function m(a,b,c){var d=c.currentFileInfo.filename;return"browser"!==less.mode&&"rhino"!==less.mode&&(d=require("path").resolve(d)),{lineNumber:l(a,b).line+1,fileName:d}}function n(a,b){var c=k(a,b),d=l(a.index,c),e=d.line,f=d.column,g=a.call&&l(a.call,c).line,h=c.split("\n");this.type=a.type||"Syntax",this.message=a.message,this.filename=a.filename||b.currentFileInfo.filename,this.index=a.index,this.line="number"==typeof e?e+1:null,this.callLine=g+1,this.callExtract=h[g],this.stack=a.stack,this.column=f,this.extract=[h[e-1],h[e],h[e+1]]}var o,p,q,r,s,t,u,v,w,x=a&&a.filename;a instanceof tree.parseEnv||(a=new tree.parseEnv(a));var y=this.imports={paths:a.paths||[],queue:[],files:a.files,contents:a.contents,mime:a.mime,error:null,push:function(b,c,d,e){var f=this;this.queue.push(b);var g=function(a,c,d){f.queue.splice(f.queue.indexOf(b),1);var g=d in f.files||d===x;f.files[d]=c,a&&!f.error&&(f.error=a),e(a,c,g,d)};less.Parser.importer?less.Parser.importer(b,c,g,a):less.Parser.fileLoader(b,c,function(b,e,f,h){if(b)return g(b),void 0;var i=new tree.parseEnv(a);i.currentFileInfo=h,i.processImports=!1,i.contents[f]=e,(c.reference||d.reference)&&(h.reference=!0),d.inline?g(null,e,f):new less.Parser(i).parse(e,function(a,b){g(a,b,f)})},a)}};return n.prototype=new Error,n.prototype.constructor=n,this.env=a=a||{},this.optimization="optimization"in this.env?this.env.optimization:1,w={imports:y,parse:function(b,c){var d,e,g,h=null;if(p=q=v=t=0,o=b.replace(/\r\n/g,"\n"),o=o.replace(/^\uFEFF/,""),w.imports.contents[a.currentFileInfo.filename]=o,u=function(b){for(var c,d,e,f,g=0,i=/(?:@\{[\w-]+\}|[^"'`\{\}\/\(\)\\])+/g,j=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,k=/"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'|`((?:[^`]|\\.)*)`/g,l=0,m=b[0],p=0;p0?"missing closing `}`":"missing opening `{`",filename:a.currentFileInfo.filename},a)),b.map(function(a){return a.join("")})}([[]]),h)return c(new n(h,a));try{d=new tree.Ruleset([],f(this.parsers.primary)),d.root=!0,d.firstRoot=!0}catch(i){return c(new n(i,a))}if(d.toCSS=function(b){return function(c,d){c=c||{};var e,f,g=new tree.evalEnv(c);"object"!=typeof d||Array.isArray(d)||(d=Object.keys(d).map(function(a){var b=d[a];return b instanceof tree.Value||(b instanceof tree.Expression||(b=new tree.Expression([b])),b=new tree.Value([b])),new tree.Rule("@"+a,b,!1,null,0)}),g.frames=[new tree.Ruleset(null,d)]);try{e=b.call(this,g),(new tree.joinSelectorVisitor).run(e),(new tree.processExtendsVisitor).run(e),new tree.toCSSVisitor({compress:Boolean(c.compress)}).run(e),c.sourceMap&&(e=new tree.sourceMapOutput({writeSourceMap:c.writeSourceMap,rootNode:e,contentsMap:w.imports.contents,sourceMapFilename:c.sourceMapFilename,outputFilename:c.sourceMapOutputFilename,sourceMapBasepath:c.sourceMapBasepath,sourceMapRootpath:c.sourceMapRootpath,outputSourceFiles:c.outputSourceFiles,sourceMapGenerator:c.sourceMapGenerator})),f=e.toCSS({compress:Boolean(c.compress),dumpLineNumbers:a.dumpLineNumbers,strictUnits:Boolean(c.strictUnits)})}catch(h){throw new n(h,a)}return c.cleancss&&"node"===less.mode?require("clean-css").process(f):c.compress?f.replace(/(^(\s)+)|((\s)+$)/g,""):f}}(d.eval),p57||43>b||47===b||44==b))return(a=f(/^([+-]?\d*\.?\d+)(%|[a-z]+)?/))?new tree.Dimension(a[1],a[2]):void 0},unicodeDescriptor:function(){var a;return(a=f(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/))?new tree.UnicodeDescriptor(a[0]):void 0},javascript:function(){var b,c,d=p;return"~"===o.charAt(d)&&(d++,c=!0),"`"===o.charAt(d)?(void 0===a.javascriptEnabled||a.javascriptEnabled||i("You are using JavaScript, which has been disabled."),c&&f("~"),(b=f(/^`([^`]*)`/))?new tree.JavaScript(b[1],p,c):void 0):void 0}},variable:function(){var a;return"@"===o.charAt(p)&&(a=f(/^(@[\w-]+)\s*:/))?a[1]:void 0},extend:function(a){var b,c,d,e=p,g=[];if(f(a?/^&:extend\(/:/^:extend\(/)){do{for(d=null,b=[];;){if(d=f(/^(all)(?=\s*(\)|,))/))break;if(c=f(this.element),!c)break;b.push(c)}d=d&&d[1],g.push(new tree.Extend(new tree.Selector(b),d,e))}while(f(","));return h(/^\)/),a&&h(/^;/),g}},extendRule:function(){return this.extend(!0)},mixin:{call:function(){var d,e,g,i=[],k=p,l=o.charAt(p),m=!1;if("."===l||"#"===l){for(b();d=f(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/);)i.push(new tree.Element(e,d,p,a.currentFileInfo)),e=f(">");return f("(")&&(g=this.mixin.args.call(this,!0).args,h(")")),g=g||[],f(this.important)&&(m=!0),i.length>0&&(f(";")||j("}"))?new tree.mixin.Call(i,g,k,a.currentFileInfo,m):(c(),void 0)}},args:function(a){for(var b,c,d,e,g,j,k=[],l=[],m=[],n={args:null,variadic:!1};;){if(a)j=f(this.expression);else{if(f(this.comments),"."===o.charAt(p)&&f(/^\.{3}/)){n.variadic=!0,f(";")&&!b&&(b=!0),(b?l:m).push({variadic:!0});break}j=f(this.entities.variable)||f(this.entities.literal)||f(this.entities.keyword)}if(!j)break;e=null,j.throwAwayComments&&j.throwAwayComments(),g=j;var q=null;if(a?1==j.value.length&&(q=j.value[0]):q=j,q&&q instanceof tree.Variable)if(f(":"))k.length>0&&(b&&i("Cannot mix ; and , as delimiter types"),c=!0),g=h(this.expression),e=d=q.name;else{if(!a&&f(/^\.{3}/)){n.variadic=!0,f(";")&&!b&&(b=!0),(b?l:m).push({name:j.name,variadic:!0});break}a||(d=e=q.name,g=null)}g&&k.push(g),m.push({name:e,value:g}),f(",")||(f(";")||b)&&(c&&i("Cannot mix ; and , as delimiter types"),b=!0,k.length>1&&(g=new tree.Value(k)),l.push({name:d,value:g}),d=null,k=[],c=!1)}return n.args=b?l:m,n},definition:function(){var a,d,e,g,i=[],k=!1;if(!("."!==o.charAt(p)&&"#"!==o.charAt(p)||j(/^[^{]*\}/))&&(b(),d=f(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/))){a=d[1];var l=this.mixin.args.call(this,!1);if(i=l.args,k=l.variadic,f(")")||(t=p,c()),f(this.comments),f(/^when/)&&(g=h(this.conditions,"expected condition")),e=f(this.block))return new tree.mixin.Definition(a,i,e,g,k);c()}}},entity:function(){return f(this.entities.literal)||f(this.entities.variable)||f(this.entities.url)||f(this.entities.call)||f(this.entities.keyword)||f(this.entities.javascript)||f(this.comment)},end:function(){return f(";")||j("}")},alpha:function(){var a;if(f(/^\(opacity=/i))return(a=f(/^\d+/)||f(this.entities.variable))?(h(")"),new tree.Alpha(a)):void 0},element:function(){var b,c,d;return c=f(this.combinator),b=f(/^(?:\d+\.\d+|\d+)%/)||f(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||f("*")||f("&")||f(this.attribute)||f(/^\([^()@]+\)/)||f(/^[\.#](?=@)/)||f(this.entities.variableCurly),b||f("(")&&(d=f(this.selector))&&f(")")&&(b=new tree.Paren(d)),b?new tree.Element(c,b,p,a.currentFileInfo):void 0},combinator:function(){var a=o.charAt(p);if(">"===a||"+"===a||"~"===a||"|"===a){for(p++;o.charAt(p).match(/\s/);)p++;return new tree.Combinator(a)}return o.charAt(p-1).match(/\s/)?new tree.Combinator(" "):new tree.Combinator(null)},lessSelector:function(){return this.selector(!0)},selector:function(b){for(var c,d,e,g,j,k=[],l=[];(b&&(e=f(this.extend))||b&&(g=f(/^when/))||(c=f(this.element)))&&(g?j=h(this.conditions,"expected condition"):j?i("CSS guard can only be used at the end of selector"):e?l.push.apply(l,e):(l.length&&i("Extend can only be used at the end of selector"),d=o.charAt(p),k.push(c),c=null),"{"!==d&&"}"!==d&&";"!==d&&","!==d&&")"!==d););return k.length>0?new tree.Selector(k,l,j,p,a.currentFileInfo):(l.length&&i("Extend must be used to extend a selector, it cannot be used on its own"),void 0)},attribute:function(){var a,b,c;if(f("["))return(a=f(this.entities.variableCurly))||(a=h(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),(c=f(/^[|~*$^]?=/))&&(b=f(this.entities.quoted)||f(/^[0-9]+%/)||f(/^[\w-]+/)||f(this.entities.variableCurly)),h("]"),new tree.Attribute(a,c,b)},block:function(){var a;return f("{")&&(a=f(this.primary))&&f("}")?a:void 0},ruleset:function(){var d,e,g,h=[];for(b(),a.dumpLineNumbers&&(g=m(p,o,a));(d=f(this.lessSelector))&&(h.push(d),f(this.comments),f(","));)d.condition&&i("Guards are only currently allowed on a single selector."),f(this.comments);if(h.length>0&&(e=f(this.block))){var j=new tree.Ruleset(h,e,a.strictImports);return a.dumpLineNumbers&&(j.debugInfo=g),j}t=p,c()},rule:function(d){var e,g,h,i=o.charAt(p),j=!1;if(b(),"."!==i&&"#"!==i&&"&"!==i&&(e=f(this.variable)||f(this.ruleProperty))){if(g=d||!a.compress&&"@"!==e.charAt(0)?f(this.anonymousValue)||f(this.value):f(this.value)||f(this.anonymousValue),h=f(this.important),"+"===e[e.length-1]&&(j=!0,e=e.substr(0,e.length-1)),g&&f(this.end))return new tree.Rule(e,g,h,j,s,a.currentFileInfo);if(t=p,c(),g&&!d)return this.rule(!0)}},anonymousValue:function(){var a;return(a=/^([^@+\/'"*`(;{}-]*);/.exec(u[q]))?(p+=a[0].length-1,new tree.Anonymous(a[1])):void 0},"import":function(){var d,e,g=p;b();var h=f(/^@import?\s+/),i=(h?f(this.importOptions):null)||{};return h&&(d=f(this.entities.quoted)||f(this.entities.url))&&(e=f(this.mediaFeatures),f(";"))?(e=e&&new tree.Value(e),new tree.Import(d,e,i,g,a.currentFileInfo)):(c(),void 0)},importOptions:function(){var a,b,c,d={};if(!f("("))return null;do if(a=f(this.importOption)){switch(b=a,c=!0,b){case"css":b="less",c=!1;break;case"once":b="multiple",c=!1}if(d[b]=c,!f(","))break}while(a);return h(")"),d},importOption:function(){var a=f(/^(less|css|multiple|once|inline|reference)/);return a?a[1]:void 0},mediaFeature:function(){var b,c,d=[];do if(b=f(this.entities.keyword)||f(this.entities.variable))d.push(b);else if(f("(")){if(c=f(this.property),b=f(this.value),!f(")"))return null;if(c&&b)d.push(new tree.Paren(new tree.Rule(c,b,null,null,p,a.currentFileInfo,!0)));else{if(!b)return null;d.push(new tree.Paren(b))}}while(b);return d.length>0?new tree.Expression(d):void 0},mediaFeatures:function(){var a,b=[];do if(a=f(this.mediaFeature)){if(b.push(a),!f(","))break}else if((a=f(this.entities.variable))&&(b.push(a),!f(",")))break;while(a);return b.length>0?b:null},media:function(){var b,c,d,e;return a.dumpLineNumbers&&(e=m(p,o,a)),f(/^@media/)&&(b=f(this.mediaFeatures),c=f(this.block))?(d=new tree.Media(c,b,p,a.currentFileInfo),a.dumpLineNumbers&&(d.debugInfo=e),d):void 0},directive:function(){var d,e,g,h,i,j,k,l;if("@"===o.charAt(p)){if(e=f(this["import"])||f(this.media))return e;if(b(),d=f(/^@[a-z-]+/)){switch(h=d,"-"==d.charAt(1)&&d.indexOf("-",2)>0&&(h="@"+d.slice(d.indexOf("-",2)+1)),h){case"@font-face":i=!0;break;case"@viewport":case"@top-left":case"@top-left-corner":case"@top-center":case"@top-right":case"@top-right-corner":case"@bottom-left":case"@bottom-left-corner":case"@bottom-center":case"@bottom-right":case"@bottom-right-corner":case"@left-top":case"@left-middle":case"@left-bottom":case"@right-top":case"@right-middle":case"@right-bottom":i=!0;break;case"@host":case"@page":case"@document":case"@supports":case"@keyframes":i=!0,j=!0;break;case"@namespace":k=!0}if(j&&(l=(f(/^[^{]+/)||"").trim(),l&&(d+=" "+l)),i){if(g=f(this.block))return new tree.Directive(d,g,p,a.currentFileInfo)}else if((e=k?f(this.expression):f(this.entity))&&f(";")){var n=new tree.Directive(d,e,p,a.currentFileInfo);return a.dumpLineNumbers&&(n.debugInfo=m(p,o,a)),n}c()}}},value:function(){for(var a,b=[];(a=f(this.expression))&&(b.push(a),f(",")););return b.length>0?new tree.Value(b):void 0},important:function(){return"!"===o.charAt(p)?f(/^! *important/):void 0},sub:function(){var a,b;return f("(")&&(a=f(this.addition))?(b=new tree.Expression([a]),h(")"),b.parens=!0,b):void 0},multiplication:function(){var a,b,c,d,g;if(a=f(this.operand)){for(g=e(o.charAt(p-1));!j(/^\/[*\/]/)&&(c=f("/")||f("*"))&&(b=f(this.operand));)a.parensInOp=!0,b.parensInOp=!0,d=new tree.Operation(c,[d||a,b],g),g=e(o.charAt(p-1));return d||a}},addition:function(){var a,b,c,d,g;if(a=f(this.multiplication)){for(g=e(o.charAt(p-1));(c=f(/^[-+]\s+/)||!g&&(f("+")||f("-")))&&(b=f(this.multiplication));)a.parensInOp=!0,b.parensInOp=!0,d=new tree.Operation(c,[d||a,b],g),g=e(o.charAt(p-1));return d||a}},conditions:function(){var a,b,c,d=p;if(a=f(this.condition)){for(;j(/^,\s*(not\s*)?\(/)&&f(",")&&(b=f(this.condition));)c=new tree.Condition("or",c||a,b,d);return c||a}},condition:function(){var a,b,c,d,e=p,g=!1;return f(/^not/)&&(g=!0),h("("),(a=f(this.addition)||f(this.entities.keyword)||f(this.entities.quoted))?((d=f(/^(?:>=|<=|=<|[<=>])/))?(b=f(this.addition)||f(this.entities.keyword)||f(this.entities.quoted))?c=new tree.Condition(d,a,b,e,g):i("expected expression"):c=new tree.Condition("=",a,new tree.Keyword("true"),e,g),h(")"),f(/^and/)?new tree.Condition("and",c,f(this.condition)):c):void 0},operand:function(){var a,b=o.charAt(p+1);"-"!==o.charAt(p)||"@"!==b&&"("!==b||(a=f("-"));var c=f(this.sub)||f(this.entities.dimension)||f(this.entities.color)||f(this.entities.variable)||f(this.entities.call);return a&&(c.parensInOp=!0,c=new tree.Negative(c)),c},expression:function(){for(var a,b,c=[];a=f(this.addition)||f(this.entity);)c.push(a),!j(/^\/[\/*]/)&&(b=f("/"))&&c.push(new tree.Anonymous(b));return c.length>0?new tree.Expression(c):void 0},property:function(){var a;return(a=f(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/))?a[1]:void 0},ruleProperty:function(){var a;return(a=f(/^(\*?-?[_a-zA-Z0-9-]+)\s*(\+?)\s*:/))?a[1]+(a[2]||""):void 0}}}},function(a){function b(b){return a.functions.hsla(b.h,b.s,b.l,b.a)}function c(b,c){return b instanceof a.Dimension&&b.unit.is("%")?parseFloat(b.value*c/100):d(b)}function d(b){if(b instanceof a.Dimension)return parseFloat(b.unit.is("%")?b.value/100:b.value);if("number"==typeof b)return b;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function e(a){return Math.min(1,Math.max(0,a))}a.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(b,e,f,g){var h=[b,e,f].map(function(a){return c(a,256)});return g=d(g),new a.Color(h,g)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,c,f){function g(a){return a=0>a?a+1:a>1?a-1:a,1>6*a?i+6*(h-i)*a:1>2*a?h:2>3*a?i+6*(h-i)*(2/3-a):i}a=d(a)%360/360,b=e(d(b)),c=e(d(c)),f=e(d(f));var h=.5>=c?c*(b+1):c+b-c*b,i=2*c-h;return this.rgba(255*g(a+1/3),255*g(a),255*g(a-1/3),f)},hsv:function(a,b,c){return this.hsva(a,b,c,1)},hsva:function(a,b,c,e){a=360*(d(a)%360/360),b=d(b),c=d(c),e=d(e);var f,g;f=Math.floor(a/60%6),g=a/60-f;var h=[c,c*(1-b),c*(1-g*b),c*(1-(1-g)*b)],i=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return this.rgba(255*h[i[f][0]],255*h[i[f][1]],255*h[i[f][2]],e)},hue:function(b){return new a.Dimension(Math.round(b.toHSL().h))},saturation:function(b){return new a.Dimension(Math.round(100*b.toHSL().s),"%")},lightness:function(b){return new a.Dimension(Math.round(100*b.toHSL().l),"%")},hsvhue:function(b){return new a.Dimension(Math.round(b.toHSV().h))},hsvsaturation:function(b){return new a.Dimension(Math.round(100*b.toHSV().s),"%")},hsvvalue:function(b){return new a.Dimension(Math.round(100*b.toHSV().v),"%")},red:function(b){return new a.Dimension(b.rgb[0])},green:function(b){return new a.Dimension(b.rgb[1])},blue:function(b){return new a.Dimension(b.rgb[2])},alpha:function(b){return new a.Dimension(b.toHSL().a)},luma:function(b){return new a.Dimension(Math.round(100*b.luma()*b.alpha),"%")},saturate:function(a,c){if(!a.rgb)return null;var d=a.toHSL();return d.s+=c.value/100,d.s=e(d.s),b(d)},desaturate:function(a,c){var d=a.toHSL();return d.s-=c.value/100,d.s=e(d.s),b(d)},lighten:function(a,c){var d=a.toHSL();return d.l+=c.value/100,d.l=e(d.l),b(d)},darken:function(a,c){var d=a.toHSL();return d.l-=c.value/100,d.l=e(d.l),b(d)},fadein:function(a,c){var d=a.toHSL();return d.a+=c.value/100,d.a=e(d.a),b(d)},fadeout:function(a,c){var d=a.toHSL();return d.a-=c.value/100,d.a=e(d.a),b(d)},fade:function(a,c){var d=a.toHSL();return d.a=c.value/100,d.a=e(d.a),b(d)},spin:function(a,c){var d=a.toHSL(),e=(d.h+c.value)%360;return d.h=0>e?360+e:e,b(d)},mix:function(b,c,d){d||(d=new a.Dimension(50));var e=d.value/100,f=2*e-1,g=b.toHSL().a-c.toHSL().a,h=((-1==f*g?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[b.rgb[0]*h+c.rgb[0]*i,b.rgb[1]*h+c.rgb[1]*i,b.rgb[2]*h+c.rgb[2]*i],k=b.alpha*e+c.alpha*(1-e);return new a.Color(j,k)},greyscale:function(b){return this.desaturate(b,new a.Dimension(100))},contrast:function(a,b,c,e){if(!a.rgb)return null;if("undefined"==typeof c&&(c=this.rgba(255,255,255,1)),"undefined"==typeof b&&(b=this.rgba(0,0,0,1)),b.luma()>c.luma()){var f=c;c=b,b=f}return e="undefined"==typeof e?.43:d(e),a.luma()*a.alphah.value)&&(j[e]=f)):(k[i]=j.length,j.push(f))):j.push(f);return 1==j.length?j[0]:(c=j.map(function(a){return a.toCSS(this.env)}).join(this.env.compress?",":", "),new a.Anonymous((b?"min":"max")+"("+c+")"))},min:function(){return this._minmax(!0,arguments)},max:function(){return this._minmax(!1,arguments)},argb:function(b){return new a.Anonymous(b.toARGB())},percentage:function(b){return new a.Dimension(100*b.value,"%")},color:function(b){if(b instanceof a.Quoted){var c,d=b.value;if(c=a.Color.fromKeyword(d))return c;if(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/.test(d))return new a.Color(d.slice(1));throw{type:"Argument",message:"argument must be a color keyword or 3/6 digit hex e.g. #FFF"}}throw{type:"Argument",message:"argument must be a string"}},iscolor:function(b){return this._isa(b,a.Color)},isnumber:function(b){return this._isa(b,a.Dimension)},isstring:function(b){return this._isa(b,a.Quoted)},iskeyword:function(b){return this._isa(b,a.Keyword)},isurl:function(b){return this._isa(b,a.URL) -},ispixel:function(a){return this.isunit(a,"px")},ispercentage:function(a){return this.isunit(a,"%")},isem:function(a){return this.isunit(a,"em")},isunit:function(b,c){return b instanceof a.Dimension&&b.unit.is(c.value||c)?a.True:a.False},_isa:function(b,c){return b instanceof c?a.True:a.False},multiply:function(a,b){var c=a.rgb[0]*b.rgb[0]/255,d=a.rgb[1]*b.rgb[1]/255,e=a.rgb[2]*b.rgb[2]/255;return this.rgb(c,d,e)},screen:function(a,b){var c=255-(255-a.rgb[0])*(255-b.rgb[0])/255,d=255-(255-a.rgb[1])*(255-b.rgb[1])/255,e=255-(255-a.rgb[2])*(255-b.rgb[2])/255;return this.rgb(c,d,e)},overlay:function(a,b){var c=a.rgb[0]<128?2*a.rgb[0]*b.rgb[0]/255:255-2*(255-a.rgb[0])*(255-b.rgb[0])/255,d=a.rgb[1]<128?2*a.rgb[1]*b.rgb[1]/255:255-2*(255-a.rgb[1])*(255-b.rgb[1])/255,e=a.rgb[2]<128?2*a.rgb[2]*b.rgb[2]/255:255-2*(255-a.rgb[2])*(255-b.rgb[2])/255;return this.rgb(c,d,e)},softlight:function(a,b){var c=b.rgb[0]*a.rgb[0]/255,d=c+a.rgb[0]*(255-(255-a.rgb[0])*(255-b.rgb[0])/255-c)/255;c=b.rgb[1]*a.rgb[1]/255;var e=c+a.rgb[1]*(255-(255-a.rgb[1])*(255-b.rgb[1])/255-c)/255;c=b.rgb[2]*a.rgb[2]/255;var f=c+a.rgb[2]*(255-(255-a.rgb[2])*(255-b.rgb[2])/255-c)/255;return this.rgb(d,e,f)},hardlight:function(a,b){var c=b.rgb[0]<128?2*b.rgb[0]*a.rgb[0]/255:255-2*(255-b.rgb[0])*(255-a.rgb[0])/255,d=b.rgb[1]<128?2*b.rgb[1]*a.rgb[1]/255:255-2*(255-b.rgb[1])*(255-a.rgb[1])/255,e=b.rgb[2]<128?2*b.rgb[2]*a.rgb[2]/255:255-2*(255-b.rgb[2])*(255-a.rgb[2])/255;return this.rgb(c,d,e)},difference:function(a,b){var c=Math.abs(a.rgb[0]-b.rgb[0]),d=Math.abs(a.rgb[1]-b.rgb[1]),e=Math.abs(a.rgb[2]-b.rgb[2]);return this.rgb(c,d,e)},exclusion:function(a,b){var c=a.rgb[0]+b.rgb[0]*(255-a.rgb[0]-a.rgb[0])/255,d=a.rgb[1]+b.rgb[1]*(255-a.rgb[1]-a.rgb[1])/255,e=a.rgb[2]+b.rgb[2]*(255-a.rgb[2]-a.rgb[2])/255;return this.rgb(c,d,e)},average:function(a,b){var c=(a.rgb[0]+b.rgb[0])/2,d=(a.rgb[1]+b.rgb[1])/2,e=(a.rgb[2]+b.rgb[2])/2;return this.rgb(c,d,e)},negation:function(a,b){var c=255-Math.abs(255-b.rgb[0]-a.rgb[0]),d=255-Math.abs(255-b.rgb[1]-a.rgb[1]),e=255-Math.abs(255-b.rgb[2]-a.rgb[2]);return this.rgb(c,d,e)},tint:function(a,b){return this.mix(this.rgb(255,255,255),a,b)},shade:function(a,b){return this.mix(this.rgb(0,0,0),a,b)},extract:function(a,b){return b=b.value-1,Array.isArray(a.value)?a.value[b]:Array(a)[b]},length:function(b){var c=Array.isArray(b.value)?b.value.length:1;return new a.Dimension(c)},"data-uri":function(b,c){if("undefined"!=typeof window)return new a.URL(c||b,this.currentFileInfo).eval(this.env);var d=b.value,e=c&&c.value,f=require("fs"),g=require("path"),h=!1;if(arguments.length<2&&(e=d),this.env.isPathRelative(e)&&(e=this.currentFileInfo.relativeUrls?g.join(this.currentFileInfo.currentDirectory,e):g.join(this.currentFileInfo.entryPath,e)),arguments.length<2){var i;try{i=require("mime")}catch(j){i=a._mime}d=i.lookup(e);var k=i.charsets.lookup(d);h=["US-ASCII","UTF-8"].indexOf(k)<0,h&&(d+=";base64")}else h=/;base64$/.test(d);var l=f.readFileSync(e),m=32,n=parseInt(l.length/1024,10);if(n>=m&&this.env.ieCompat!==!1)return this.env.silent||console.warn("Skipped data-uri embedding of %s because its size (%dKB) exceeds IE8-safe %dKB!",e,n,m),new a.URL(c||b,this.currentFileInfo).eval(this.env);l=h?l.toString("base64"):encodeURIComponent(l);var o="'data:"+d+","+l+"'";return new a.URL(new a.Anonymous(o))},"svg-gradient":function(b){function c(){throw{type:"Argument",message:"svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position]"}}arguments.length<3&&c();var d,e,f,g,h,i,j,k=Array.prototype.slice.call(arguments,1),l="linear",m='x="0" y="0" width="1" height="1"',n=!0,o={compress:!1},p=b.toCSS(o);switch(p){case"to bottom":d='x1="0%" y1="0%" x2="0%" y2="100%"';break;case"to right":d='x1="0%" y1="0%" x2="100%" y2="0%"';break;case"to bottom right":d='x1="0%" y1="0%" x2="100%" y2="100%"';break;case"to top right":d='x1="0%" y1="100%" x2="100%" y2="0%"';break;case"ellipse":case"ellipse at center":l="radial",d='cx="50%" cy="50%" r="75%"',m='x="-50" y="-50" width="101" height="101"';break;default:throw{type:"Argument",message:"svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"}}for(e='<'+l+'Gradient id="gradient" gradientUnits="userSpaceOnUse" '+d+">",f=0;fj?' stop-opacity="'+j+'"':"")+"/>";if(e+=""+"',n)try{e=new Buffer(e).toString("base64")}catch(q){n=!1}return e="'data:image/svg+xml"+(n?";base64":"")+","+e+"'",new a.URL(new a.Anonymous(e))}},a._mime={_types:{".htm":"text/html",".html":"text/html",".gif":"image/gif",".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png"},lookup:function(b){var c=require("path").extname(b),d=a._mime._types[c];if(void 0===d)throw new Error('Optional dependency "mime" is required for '+c);return d},charsets:{lookup:function(a){return a&&/^text\//.test(a)?"UTF-8":""}}};for(var f=[{name:"ceil"},{name:"floor"},{name:"sqrt"},{name:"abs"},{name:"tan",unit:""},{name:"sin",unit:""},{name:"cos",unit:""},{name:"atan",unit:"rad"},{name:"asin",unit:"rad"},{name:"acos",unit:"rad"}],g=function(a,b){return function(c){return null!=b&&(c=c.unify()),this._math(Math[a],b,c)}},h=0;h1?"["+a.value.map(function(a){return a.toCSS(!1)}).join(", ")+"]":a.toCSS(!1)},a.toCSS=function(a){var b=[];return this.genCSS(a,{add:function(a){b.push(a)},isEmpty:function(){return 0===b.length}}),b.join("")},a.outputRuleset=function(a,b,c){b.add(a.compress?"{":" {\n"),a.tabLevel=(a.tabLevel||0)+1;for(var d=a.compress?"":Array(a.tabLevel+1).join(" "),e=a.compress?"":Array(a.tabLevel).join(" "),f=0;fb?-1:1},genCSS:function(a,b){b.add(this.value,this.currentFileInfo,this.index,this.mapLines)},toCSS:a.toCSS}}(require("../tree")),function(a){a.Assignment=function(a,b){this.key=a,this.value=b},a.Assignment.prototype={type:"Assignment",accept:function(a){this.value=a.visit(this.value)},eval:function(b){return this.value.eval?new a.Assignment(this.key,this.value.eval(b)):this},genCSS:function(a,b){b.add(this.key+"="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value)},toCSS:a.toCSS}}(require("../tree")),function(a){a.Call=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.currentFileInfo=d},a.Call.prototype={type:"Call",accept:function(a){this.args=a.visit(this.args)},eval:function(b){var c,d,e=this.args.map(function(a){return a.eval(b)}),f=this.name.toLowerCase();if(f in a.functions)try{if(d=new a.functionCall(b,this.currentFileInfo),c=d[f].apply(d,e),null!=c)return c}catch(g){throw{type:g.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(g.message?": "+g.message:""),index:this.index,filename:this.currentFileInfo.filename}}return new a.Call(this.name,e,this.index,this.currentFileInfo)},genCSS:function(a,b){b.add(this.name+"(",this.currentFileInfo,this.index);for(var c=0;cf;f++)e[f]=a.operate(b,c,this.rgb[f],d.rgb[f]);return new a.Color(e,this.alpha+d.alpha)},toRGB:function(){return"#"+this.rgb.map(function(a){return a=Math.round(a),a=(a>255?255:0>a?0:a).toString(16),1===a.length?"0"+a:a}).join("")},toHSL:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=(g+h)/2,j=g-h;if(g===h)a=b=0;else{switch(b=i>.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,l:i,a:f}},toHSV:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=0;else{switch(g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,v:i,a:f}},toARGB:function(){var a=[Math.round(255*this.alpha)].concat(this.rgb);return"#"+a.map(function(a){return a=Math.round(a),a=(a>255?255:0>a?0:a).toString(16),1===a.length?"0"+a:a}).join("")},compare:function(a){return a.rgb?a.rgb[0]===this.rgb[0]&&a.rgb[1]===this.rgb[1]&&a.rgb[2]===this.rgb[2]&&a.alpha===this.alpha?0:-1:-1}},a.Color.fromKeyword=function(c){if(a.colors.hasOwnProperty(c))return new a.Color(a.colors[c].slice(1));if(c===b){var d=new a.Color([0,0,0],0);return d.isTransparentKeyword=!0,d}}}(require("../tree")),function(a){a.Comment=function(a,b,c,d){this.value=a,this.silent=!!b,this.currentFileInfo=d},a.Comment.prototype={type:"Comment",genCSS:function(b,c){this.debugInfo&&c.add(a.debugInfo(b,this),this.currentFileInfo,this.index),c.add(this.value.trim())},toCSS:a.toCSS,isSilent:function(a){var b=this.currentFileInfo&&this.currentFileInfo.reference&&!this.isReferenced,c=a.compress&&!this.value.match(/^\/\*!/);return this.silent||b||c},eval:function(){return this},markReferenced:function(){this.isReferenced=!0}}}(require("../tree")),function(a){a.Condition=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e},a.Condition.prototype={type:"Condition",accept:function(a){this.lvalue=a.visit(this.lvalue),this.rvalue=a.visit(this.rvalue)},eval:function(a){var b,c=this.lvalue.eval(a),d=this.rvalue.eval(a),e=this.index;return b=function(a){switch(a){case"and":return c&&d;case"or":return c||d;default:if(c.compare)b=c.compare(d);else{if(!d.compare)throw{type:"Type",message:"Unable to perform comparison",index:e};b=d.compare(c)}switch(b){case-1:return"<"===a||"=<"===a||"<="===a;case 0:return"="===a||">="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a}}}(this.op),this.negate?!b:b}}}(require("../tree")),function(a){a.Dimension=function(b,c){this.value=parseFloat(b),this.unit=c&&c instanceof a.Unit?c:new a.Unit(c?[c]:void 0)},a.Dimension.prototype={type:"Dimension",accept:function(a){this.unit=a.visit(this.unit)},eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},genCSS:function(a,b){if(a&&a.strictUnits&&!this.unit.isSingular())throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());var c=this.value,d=String(c);if(0!==c&&1e-6>c&&c>-1e-6&&(d=c.toFixed(20).replace(/0+$/,"")),a&&a.compress){if(0===c&&this.unit.isLength())return b.add(d),void 0;c>0&&1>c&&(d=d.substr(1))}b.add(d),this.unit.genCSS(a,b)},toCSS:a.toCSS,operate:function(b,c,d){var e=a.operate(b,c,this.value,d.value),f=this.unit.clone();if("+"===c||"-"===c)if(0===f.numerator.length&&0===f.denominator.length)f.numerator=d.unit.numerator.slice(0),f.denominator=d.unit.denominator.slice(0);else if(0===d.unit.numerator.length&&0===f.denominator.length);else{if(d=d.convertTo(this.unit.usedUnits()),b.strictUnits&&d.unit.toString()!==f.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+f.toString()+"' and '"+d.unit.toString()+"'.");e=a.operate(b,c,this.value,d.value)}else"*"===c?(f.numerator=f.numerator.concat(d.unit.numerator).sort(),f.denominator=f.denominator.concat(d.unit.denominator).sort(),f.cancel()):"/"===c&&(f.numerator=f.numerator.concat(d.unit.denominator).sort(),f.denominator=f.denominator.concat(d.unit.numerator).sort(),f.cancel());return new a.Dimension(e,f)},compare:function(b){if(b instanceof a.Dimension){var c=this.unify(),d=b.unify(),e=c.value,f=d.value;return f>e?-1:e>f?1:d.unit.isEmpty()||0===c.unit.compare(d.unit)?0:-1}return-1},unify:function(){return this.convertTo({length:"m",duration:"s",angle:"rad"})},convertTo:function(b){var c,d,e,f,g,h=this.value,i=this.unit.clone(),j={};if("string"==typeof b){for(c in a.UnitConversions)a.UnitConversions[c].hasOwnProperty(b)&&(j={},j[c]=b);b=j}g=function(a,b){return e.hasOwnProperty(a)?(b?h/=e[a]/e[f]:h*=e[a]/e[f],f):a};for(d in b)b.hasOwnProperty(d)&&(f=b[d],e=a.UnitConversions[d],i.map(g));return i.cancel(),new a.Dimension(h,i)}},a.UnitConversions={length:{m:1,cm:.01,mm:.001,"in":.0254,pt:.0254/72,pc:12*(.0254/72)},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:.0025,turn:1}},a.Unit=function(a,b,c){this.numerator=a?a.slice(0).sort():[],this.denominator=b?b.slice(0).sort():[],this.backupUnit=c},a.Unit.prototype={type:"Unit",clone:function(){return new a.Unit(this.numerator.slice(0),this.denominator.slice(0),this.backupUnit)},genCSS:function(a,b){this.numerator.length>=1?b.add(this.numerator[0]):this.denominator.length>=1?b.add(this.denominator[0]):a&&a.strictUnits||!this.backupUnit||b.add(this.backupUnit)},toCSS:a.toCSS,toString:function(){var a,b=this.numerator.join("*");for(a=0;a0)for(b=0;e>b;b++)this.numerator.push(a);else if(0>e)for(b=0;-e>b;b++)this.denominator.push(a)}0===this.numerator.length&&0===this.denominator.length&&c&&(this.backupUnit=c),this.numerator.sort(),this.denominator.sort()}}}(require("../tree")),function(a){a.Directive=function(b,c,d,e){this.name=b,Array.isArray(c)?(this.rules=[new a.Ruleset([],c)],this.rules[0].allowImports=!0):this.value=c,this.currentFileInfo=e},a.Directive.prototype={type:"Directive",accept:function(a){this.rules=a.visit(this.rules),this.value=a.visit(this.value)},genCSS:function(b,c){c.add(this.name,this.currentFileInfo,this.index),this.rules?a.outputRuleset(b,c,this.rules):(c.add(" "),this.value.genCSS(b,c),c.add(";"))},toCSS:a.toCSS,eval:function(b){var c=this;return this.rules&&(b.frames.unshift(this),c=new a.Directive(this.name,null,this.index,this.currentFileInfo),c.rules=[this.rules[0].eval(b)],c.rules[0].root=!0,b.frames.shift()),c},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},markReferenced:function(){var a,b;if(this.isReferenced=!0,this.rules)for(b=this.rules[0].rules,a=0;a":" > ","|":"|"},_outputMapCompressed:{"":""," ":" ",":":" :","+":"+","~":"~",">":">","|":"|"},genCSS:function(a,b){b.add((a.compress?this._outputMapCompressed:this._outputMap)[this.value])},toCSS:a.toCSS}}(require("../tree")),function(a){a.Expression=function(a){this.value=a},a.Expression.prototype={type:"Expression",accept:function(a){this.value=a.visit(this.value)},eval:function(b){var c,d=this.parens&&!this.parensInOp,e=!1;return d&&b.inParenthesis(),this.value.length>1?c=new a.Expression(this.value.map(function(a){return a.eval(b)})):1===this.value.length?(this.value[0].parens&&!this.value[0].parensInOp&&(e=!0),c=this.value[0].eval(b)):c=this,d&&b.outOfParenthesis(),this.parens&&this.parensInOp&&!b.isMathOn()&&!e&&(c=new a.Paren(c)),c},genCSS:function(a,b){for(var c=0;c0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[{elements:d}]}}}(require("../tree")),function(a){a.Import=function(a,b,c,d,e){if(this.options=c,this.index=d,this.path=a,this.features=b,this.currentFileInfo=e,void 0!==this.options.less||this.options.inline)this.css=!this.options.less||this.options.inline;else{var f=this.getPath();f&&/css([\?;].*)?$/.test(f)&&(this.css=!0)}},a.Import.prototype={type:"Import",accept:function(a){this.features=a.visit(this.features),this.path=a.visit(this.path),this.options.inline||(this.root=a.visit(this.root))},genCSS:function(a,b){this.css&&(b.add("@import ",this.currentFileInfo,this.index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},toCSS:a.toCSS,getPath:function(){if(this.path instanceof a.Quoted){var b=this.path.value;return void 0!==this.css||/(\.[a-z]*$)|([\?;].*)$/.test(b)?b:b+".less"}return this.path instanceof a.URL?this.path.value.value:null},evalForImport:function(b){return new a.Import(this.path.eval(b),this.features,this.options,this.index,this.currentFileInfo)},evalPath:function(b){var c=this.path.eval(b),d=this.currentFileInfo&&this.currentFileInfo.rootpath;if(!(c instanceof a.URL)){if(d){var e=c.value;e&&b.isPathRelative(e)&&(c.value=d+e)}c.value=b.normalizePath(c.value)}return c},eval:function(b){var c,d=this.features&&this.features.eval(b);if(this.skip)return[];if(this.options.inline){var e=new a.Anonymous(this.root,0,{filename:this.importedFilename},!0);return this.features?new a.Media([e],this.features.value):[e]}if(this.css){var f=new a.Import(this.evalPath(b),d,this.options,this.index);if(!f.css&&this.error)throw this.error;return f}return c=new a.Ruleset([],this.root.rules.slice(0)),c.evalImports(b),this.features?new a.Media(c.rules,this.features.value):c.rules}}}(require("../tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={type:"JavaScript",eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify(new a.Variable("@"+e,d.index).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+f+"`",index:this.index}}for(var h in b.frames[0].variables())e[h.slice(1)]={value:b.frames[0].variables()[h].value,toJS:function(){return this.value.eval(b).toCSS()}};try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message+"'",index:this.index}}return"string"==typeof c?new a.Quoted('"'+c+'"',c,this.escaped,this.index):Array.isArray(c)?new a.Anonymous(c.join(", ")):new a.Anonymous(c)}}}(require("../tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={type:"Keyword",eval:function(){return this},genCSS:function(a,b){b.add(this.value)},toCSS:a.toCSS,compare:function(b){return b instanceof a.Keyword?b.value===this.value?0:1:-1}},a.True=new a.Keyword("true"),a.False=new a.Keyword("false")}(require("../tree")),function(a){a.Media=function(b,c,d,e){this.index=d,this.currentFileInfo=e;var f=this.emptySelectors();this.features=new a.Value(c),this.rules=[new a.Ruleset(f,b)],this.rules[0].allowImports=!0},a.Media.prototype={type:"Media",accept:function(a){this.features=a.visit(this.features),this.rules=a.visit(this.rules)},genCSS:function(b,c){c.add("@media ",this.currentFileInfo,this.index),this.features.genCSS(b,c),a.outputRuleset(b,c,this.rules)},toCSS:a.toCSS,eval:function(b){b.mediaBlocks||(b.mediaBlocks=[],b.mediaPath=[]);var c=new a.Media([],[],this.index,this.currentFileInfo);this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,c.debugInfo=this.debugInfo);var d=!1;b.strictMath||(d=!0,b.strictMath=!0);try{c.features=this.features.eval(b)}finally{d&&(b.strictMath=!1)}return b.mediaPath.push(c),b.mediaBlocks.push(c),b.frames.unshift(this.rules[0]),c.rules=[this.rules[0].eval(b)],b.frames.shift(),b.mediaPath.pop(),0===b.mediaPath.length?c.evalTop(b):c.evalNested(b)},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},emptySelectors:function(){var b=new a.Element("","&",this.index,this.currentFileInfo);return[new a.Selector([b],null,null,this.index,this.currentFileInfo)]},markReferenced:function(){var a,b=this.rules[0].rules;for(this.isReferenced=!0,a=0;a1){var d=this.emptySelectors();c=new a.Ruleset(d,b.mediaBlocks),c.multiMedia=!0}return delete b.mediaBlocks,delete b.mediaPath,c},evalNested:function(b){var c,d,e=b.mediaPath.concat([this]);for(c=0;c0;c--)b.splice(c,0,new a.Anonymous("and"));return new a.Expression(b)})),new a.Ruleset([],[])},permute:function(a){if(0===a.length)return[];if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;d0){for(j=!0,g=0;gthis.params.length)return!1}c=Math.min(d,this.arity);for(var e=0;c>e;e++)if(!this.params[e].name&&!this.params[e].variadic&&a[e].value.eval(b).toCSS()!=this.params[e].value.eval(b).toCSS())return!1;return!0}}}(require("../tree")),function(a){a.Negative=function(a){this.value=a},a.Negative.prototype={type:"Negative",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("-"),this.value.genCSS(a,b)},toCSS:a.toCSS,eval:function(b){return b.isMathOn()?new a.Operation("*",[new a.Dimension(-1),this.value]).eval(b):new a.Negative(this.value.eval(b))}}}(require("../tree")),function(a){a.Operation=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c},a.Operation.prototype={type:"Operation",accept:function(a){this.operands=a.visit(this.operands)},eval:function(b){var c,d=this.operands[0].eval(b),e=this.operands[1].eval(b);if(b.isMathOn()){if(d instanceof a.Dimension&&e instanceof a.Color){if("*"!==this.op&&"+"!==this.op)throw{type:"Operation",message:"Can't substract or divide a color from a number"};c=e,e=d,d=c}if(!d.operate)throw{type:"Operation",message:"Operation on an invalid type"};return d.operate(b,this.op,e)}return new a.Operation(this.op,[d,e],this.isSpaced)},genCSS:function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},toCSS:a.toCSS},a.operate=function(a,b,c,d){switch(b){case"+":return c+d;case"-":return c-d;case"*":return c*d;case"/":return c/d}}}(require("../tree")),function(a){a.Paren=function(a){this.value=a},a.Paren.prototype={type:"Paren",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},toCSS:a.toCSS,eval:function(b){return new a.Paren(this.value.eval(b))}}}(require("../tree")),function(a){a.Quoted=function(a,b,c,d,e){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d,this.currentFileInfo=e},a.Quoted.prototype={type:"Quoted",genCSS:function(a,b){this.escaped||b.add(this.quote,this.currentFileInfo,this.index),b.add(this.value),this.escaped||b.add(this.quote)},toCSS:a.toCSS,eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return new a.JavaScript(e,c.index,!0).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=new a.Variable("@"+e,c.index,c.currentFileInfo).eval(b,!0);return f instanceof a.Quoted?f.value:f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index,this.currentFileInfo)},compare:function(a){if(!a.toCSS)return-1;var b=this.toCSS(),c=a.toCSS();return b===c?0:c>b?-1:1}}}(require("../tree")),function(a){a.Rule=function(b,c,d,e,f,g,h){this.name=b,this.value=c instanceof a.Value?c:new a.Value([c]),this.important=d?" "+d.trim():"",this.merge=e,this.index=f,this.currentFileInfo=g,this.inline=h||!1,this.variable="@"===b.charAt(0)},a.Rule.prototype={type:"Rule",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add(this.name+(a.compress?":":": "),this.currentFileInfo,this.index);try{this.value.genCSS(a,b)}catch(c){throw c.index=this.index,c.filename=this.currentFileInfo.filename,c}b.add(this.important+(this.inline||a.lastRule&&a.compress?"":";"),this.currentFileInfo,this.index)},toCSS:a.toCSS,eval:function(b){var c=!1;"font"!==this.name||b.strictMath||(c=!0,b.strictMath=!0);try{return new a.Rule(this.name,this.value.eval(b),this.important,this.merge,this.index,this.currentFileInfo,this.inline)}finally{c&&(b.strictMath=!1)}},makeImportant:function(){return new a.Rule(this.name,this.value,"!important",this.merge,this.index,this.currentFileInfo,this.inline)}}}(require("../tree")),function(a){a.Ruleset=function(a,b,c){this.selectors=a,this.rules=b,this._lookups={},this.strictImports=c},a.Ruleset.prototype={type:"Ruleset",accept:function(a){if(this.paths)for(var b=0;bf.selectors[g].elements.length?Array.prototype.push.apply(e,f.find(new a.Selector(b.elements.slice(1)),c)):e.push(f);break}}),this._lookups[f]=e)},genCSS:function(b,c){var d,e,f,g,h,i=[],j=[],k=!0;b.tabLevel=b.tabLevel||0,this.root||b.tabLevel++;var l=b.compress?"":Array(b.tabLevel+1).join(" "),m=b.compress?"":Array(b.tabLevel).join(" ");for(d=0;d0&&this.mergeElementsOnToSelectors(r,i),f=0;f0&&(k[0].elements=k[0].elements.slice(0),k[0].elements.push(new a.Element(j.combinator,"",0,j.index,j.currentFileInfo))),s.push(k);else for(g=0;g0?(m=k.slice(0),q=m.pop(),o=d.createDerived(q.elements.slice(0)),p=!1):o=d.createDerived([]),l.length>1&&(n=n.concat(l.slice(1))),l.length>0&&(p=!1,o.elements.push(new a.Element(j.combinator,l[0].elements[0].value,j.index,j.currentFileInfo)),o.elements=o.elements.concat(l[0].elements.slice(1))),p||m.push(o),m=m.concat(n),s.push(m);i=s,r=[]}for(r.length>0&&this.mergeElementsOnToSelectors(r,i),e=0;e0&&b.push(i[e])}else if(c.length>0)for(e=0;e0?e[e.length-1]=e[e.length-1].createDerived(e[e.length-1].elements.concat(b)):e.push(new a.Selector(b))}}}(require("../tree")),function(a){a.Selector=function(a,b,c,d,e,f){this.elements=a,this.extendList=b||[],this.condition=c,this.currentFileInfo=e||{},this.isReferenced=f,c||(this.evaldCondition=!0)},a.Selector.prototype={type:"Selector",accept:function(a){this.elements=a.visit(this.elements),this.extendList=a.visit(this.extendList),this.condition=a.visit(this.condition)},createDerived:function(b,c,d){d=null!=d?d:this.evaldCondition;var e=new a.Selector(b,c||this.extendList,this.condition,this.index,this.currentFileInfo,this.isReferenced);return e.evaldCondition=d,e},match:function(a){var b,c,d,e,f=this.elements,g=f.length;if(b=a.elements.slice(a.elements.length&&"&"===a.elements[0].value?1:0),c=b.length,d=Math.min(g,c),0===c||c>g)return!1;for(e=0;d>e;e++)if(f[e].value!==b[e].value)return!1;return!0},eval:function(a){var b=this.condition&&this.condition.eval(a);return this.createDerived(this.elements.map(function(b){return b.eval(a)}),this.extendList.map(function(b){return b.eval(a)}),b)},genCSS:function(a,b){var c,d;if(a&&a.firstSelector||""!==this.elements[0].combinator.value||b.add(" ",this.currentFileInfo,this.index),!this._css)for(c=0;c0)&&e.splice(0,0,b);else{b.paths=b.paths.filter(function(b){var c;for(" "===b[0].elements[0].combinator.value&&(b[0].elements[0].combinator=new a.Combinator("")),c=0;c0&&b.accept(this._visitor),c.visitDeeper=!1,this._mergeRules(b.rules),this._removeDuplicateRules(b.rules),b.rules.length>0&&b.paths.length>0&&e.splice(0,0,b)}return 1===e.length?e[0]:e},_removeDuplicateRules:function(b){var c,d,e,f={};for(e=b.length-1;e>=0;e--)if(d=b[e],d instanceof a.Rule)if(f[d.name]){c=f[d.name],c instanceof a.Rule&&(c=f[d.name]=[f[d.name].toCSS(this._env)]);var g=d.toCSS(this._env);-1!==c.indexOf(g)?b.splice(e,1):c.push(g)}else f[d.name]=d},_mergeRules:function(b){for(var c,d,e,f={},g=0;g1&&(d=c[0],d.value=new a.Value(c.map(function(a){return a.value})))})}}}(require("./tree")),function(a){a.extendFinderVisitor=function(){this._visitor=new a.visitor(this),this.contexts=[],this.allExtendsStack=[[]]},a.extendFinderVisitor.prototype={run:function(a){return a=this._visitor.visit(a),a.allExtends=this.allExtendsStack[0],a},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(b){if(!b.root){var c,d,e,f,g=[];for(c=0;c100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,c,d+1))}return m},inInheritanceChain:function(a,b){if(a===b)return!0;if(b.parents){if(this.inInheritanceChain(a,b.parents[0]))return!0;if(this.inInheritanceChain(a,b.parents[1]))return!0}return!1},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a){if(!a.root){var b,c,d,e,f=this.allExtendsStack[this.allExtendsStack.length-1],g=[],h=this;for(d=0;d0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(e+1j&&k>0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),k=0,j++),i=f.elements.slice(k,h.index).concat([g]).concat(d.elements.slice(1)),j===h.pathIndex&&e>0?l[l.length-1].elements=l[l.length-1].elements.concat(i):(l=l.concat(c.slice(j,h.pathIndex)),l.push(new a.Selector(i))),j=h.endPathIndex,k=h.endPathElementIndex,k>=c[j].elements.length&&(k=0,j++);return j0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),j++),l=l.concat(c.slice(j,c.length))},visitRulesetOut:function(){},visitMedia:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitMediaOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1},visitDirective:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitDirectiveOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1}}}(require("./tree")),function(a){a.sourceMapOutput=function(a){this._css=[],this._rootNode=a.rootNode,this._writeSourceMap=a.writeSourceMap,this._contentsMap=a.contentsMap,this._sourceMapFilename=a.sourceMapFilename,this._outputFilename=a.outputFilename,this._sourceMapBasepath=a.sourceMapBasepath,this._sourceMapRootpath=a.sourceMapRootpath,this._outputSourceFiles=a.outputSourceFiles,this._sourceMapGeneratorConstructor=a.sourceMapGenerator||require("source-map").SourceMapGenerator,this._sourceMapRootpath&&"/"!==this._sourceMapRootpath.charAt(this._sourceMapRootpath.length-1)&&(this._sourceMapRootpath+="/"),this._lineNumber=0,this._column=0},a.sourceMapOutput.prototype.normalizeFilename=function(a){return this._sourceMapBasepath&&0===a.indexOf(this._sourceMapBasepath)&&(a=a.substring(this._sourceMapBasepath.length),("\\"===a.charAt(0)||"/"===a.charAt(0))&&(a=a.substring(1))),(this._sourceMapRootpath||"")+a.replace(/\\/g,"/")},a.sourceMapOutput.prototype.add=function(a,b,c,d){if(a){var e,f,g,h,i;if(b){var j=this._contentsMap[b.filename].substring(0,c);f=j.split("\n"),h=f[f.length-1]}if(e=a.split("\n"),g=e[e.length-1],b)if(d)for(i=0;i0){var c,d=JSON.stringify(this._sourceMapGenerator.toJSON());this._sourceMapFilename&&(c=this.normalizeFilename(this._sourceMapFilename)),this._writeSourceMap?this._writeSourceMap(d):c="data:application/json,"+encodeURIComponent(d),c&&this._css.push("/*# sourceMappingURL="+c+" */")}return this._css.join("")}}(require("./tree"));var isFileProtocol=/^(file|chrome(-extension)?|resource|qrc|app):/.test(location.protocol);less.env=less.env||("127.0.0.1"==location.hostname||"0.0.0.0"==location.hostname||"localhost"==location.hostname||location.port.length>0||isFileProtocol?"development":"production");var logLevel={info:2,errors:1,none:0};if(less.logLevel="undefined"!=typeof less.logLevel?less.logLevel:logLevel.info,less.async=less.async||!1,less.fileAsync=less.fileAsync||!1,less.poll=less.poll||(isFileProtocol?1e3:1500),less.functions)for(var func in less.functions)less.tree.functions[func]=less.functions[func];var dumpLineNumbers=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);dumpLineNumbers&&(less.dumpLineNumbers=dumpLineNumbers[1]);var typePattern=/^text\/(x-)?less$/,cache=null,fileCache={};if(less.watch=function(){return less.watchMode||(less.env="development",initRunningMode()),this.watchMode=!0},less.unwatch=function(){return clearInterval(less.watchTimer),this.watchMode=!1},/!watch/.test(location.hash)&&less.watch(),"development"!=less.env)try{cache="undefined"==typeof window.localStorage?null:window.localStorage}catch(_){}var links=document.getElementsByTagName("link");less.sheets=[];for(var i=0;iNo Sketch found.

    ') - ); - return; - } - for( var i = 0, len = list.length; i < len; i++ ) { - $('#load ol').append( - $('
  • ') - ); - } - $confirm.find('li').off('tap').tap(function(e) { - $(this).parent().find('li[aria-selected]').removeAttr('aria-selected'); - $(this).attr('aria-selected', 'true'); - }) - }) - $('#pro').tap(function() { - $('#save ol:nth-of-type(2) li').each(function() { - if( $(this).find('span').html() !== 'Transparent' ) { - $(this).addClass('hidden'); - $(this).removeAttr('aria-selected'); - } - else $(this).attr('aria-selected', 'true'); - }) - }) - $('#exp').tap(function() { - $('#save ol:nth-of-type(2) li').removeClass('hidden'); - }) - $c.last().on('touchstart', function(e) { - var xy = relative(e.changedTouches[0].pageX, e.changedTouches[0].pageY); - startPoint(xy.x, xy.y); - window.active = true; - }).on('touchmove', function(e) { - if (!window.active || settings.type == 'line') return; - var xy = relative(e.changedTouches[0].pageX, e.changedTouches[0].pageY); - drawPoint(xy.x, xy.y); - }).on('touchend', function(e) { - window.active = false; - if( settings.type == 'eraser' ) return; - - if( settings.type == 'shape' ) { - var s = settings.comShape; - o.clear(); - c.beginPath(); - c.fillStyle = settings.color; - c.strokeStyle = settings.color; - c.lineWidth = settings.lineWidth / 20; - switch(s.type) { - case 'circle': { - c.arc(s.x, s.y, s.radius, 0, 2*Math.PI); - break; - } - case 'rectangle': { - c.rect(s.x, s.y, s.w, s.h) - break; - } - case 'triangle': { - c.moveTo(s.start.x + s.dix, s.start.y); - c.lineTo(s.x, s.y); - c.lineTo(s.start.x, s.y); - c.lineTo(s.start.x + s.dix, s.start.y); - break; - } - } - if( settings.fill ) c.fill(); - if( settings.stroke ) c.stroke(); - } - - if( settings.type == 'line' ) return; - - if(window.points.history.last < window.points.history.length-1) { - window.points.history.splice(window.points.history.last+1); - } - - window.points.history.push({ - data: c.getImageData(0, 0, width(), height()), - points: window.points.slice(0) - }) - window.points.history.last = window.points.history.length-1; - }).on('longTap', function(e) { - if( points[points.length-1].type == 'line' ) { - window.active = false; - points[points.length-1].type = ''; - points[points.length-1].start = undefined; - finishLine(); - } - }) - - // Value Selector - - var $single = $('form[data-type="value-selector"].single'); - - $single.find('li').tap(function(e) { - $(this).parent().find('li[aria-selected]').removeAttr('aria-selected'); - $(this).attr('aria-selected', 'true'); - var key = $(this).parents('form').attr('id'), - value = $(this).find('label span').html().toLowerCase(), - target = $(this).attr('data-target'); - window.settings[key] = value; - - $('button[id="set' + key + '"] span').html(value[0].toUpperCase() + value.substr(1)); - if( target ) { - $('#menu div.options > div').addClass('hidden'); - $('#menu div.options > .general, #menu div.options > .'+target).removeClass('hidden'); - } - $(this).parents('form').addClass('hidden'); - }) - $single.find('button').tap(function(e) { - e.preventDefault(); - $(this).parents('form').addClass('hidden'); - }) - - // Confirm - - var $confirm = $('form[data-type="value-selector"].confirm'); - - $confirm.each(function() { - - $(this).find('li').tap(function(e) { - $(this).parent().find('li[aria-selected]').removeAttr('aria-selected'); - $(this).attr('aria-selected', 'true'); - }) - $(this).find('button').last().tap(function(e) { - e.preventDefault(); - var v = $(this).parents('form').attr('id'); - $(this).parents('form').find('h1').each(function(i) { - if( i > 0 ) { - var key = $(this).html().toLowerCase(); - var value = $(this).parent().find('ol:nth-of-type('+i+') li[aria-selected] span').html(); - if( key !== 'file name' && key !== 'file' ) value = value.toLowerCase(); - window[v][key] = value; - } - }) - $(this).parents('form').addClass('hidden'); - window[v](); - }) - $(this).find('button').first().tap(function(e) { - e.preventDefault(); - $(this).parents('form').addClass('hidden'); - }) - - }) - - // Value Selector Callers - - var $btn = $('button[id^="set"]'); - $btn.each(function() { - var target = /set(.*)/.exec($(this).attr('id'))[1]; - // Exception for Color - if( target == 'color' || target == 'bg' ) { - return $(this).tap(function() { - $('.picker').removeClass('hidden'); - $('.picker').attr('data-caller', target); - }) - } - $(this).tap(function(e) { - e.preventDefault(); - $('form[id="' + target + '"]').removeClass('hidden'); - }) - }) - - // Seekbar - - var sliderLeft; - $('div[role="slider"] button').on('touchstart', function() { - $(this).attr('data-moving','true'); - if( !sliderLeft ) sliderLeft = $('div[role="slider"] button').offset().left; - }).on('touchmove', function(e) { - if( $(this).attr('data-moving') ) { - var x = parseInt(e.changedTouches[0].pageX - sliderLeft - 15); - var $c = $('.'+$(this).parents('div[role="slider"]').attr('class')); - var progress = $c.find('progress'); - var max = +progress.attr('max'); - var min = +progress.attr('min'); - if( x <= max && x >= min ) { - $c.find('button').css('left', x+'%'); - progress.attr('value', x); - var key = $c.attr('class'); - settings[key] = x; - $('#'+ key +' span').html(x); - } - } - }).on('touchend', function() { - $(this).removeAttr('data-moving'); - }) - - $('.fill, .stroke').tap(function() { - var s = $('.'+$(this).attr('class')).find('span'); - if( s.html() == 'Yes' ) { - s.html('No'); - settings[$(this).attr('class')] = false; - } else { - s.html('Yes'); - settings[$(this).attr('class')] = true; - } - }) - - $('.close, .tour button').tap(function() { - $(this).parent().addClass('hidden'); - }) - - // Color Picker - - $('.close').tap(function() { - $(this).parent().addClass('hidden'); - }) - - // Bottom - - $('#clear').tap(function() { - c.clearRect(0, 0, width(), height()); - var h = window.points.history; - window.points = []; - window.points.history = h; - if(window.points.history.last < window.points.history.length-1) { - window.points.history.splice(window.points.history.last+1); - } - - window.points.history.push({ - data: c.getImageData(0, 0, width(), height()), - points: [] - }) - window.points.history.last = window.points.history.length-1; - }) - - $('#undo').tap(undo); - $('#redo').tap(redo); - - $('#about').tap(function() { - $('.about').removeClass('hidden'); - }) - -}); diff --git a/README.md b/README.md index ffe1f4c..e98321a 100755 --- a/README.md +++ b/README.md @@ -1,14 +1,17 @@ Sketchy ======= -Free Sketch / Paint application for Firefox OS with a lot of features. +Free Sketch / Paint application for Firefox with a lot of features. Key features: * Different types of brushes * Customizable brushes * Colorpicker * Unlimited Undo/Redo -* Save your sketch to sdcard +* Save your sketch to sdcard / PC +* Save your sketch as a "Sketchy Project" and edit it later +* Different shapes ( Circle, Rectangle, Square, Triangle ) +* Fill / Stroke New features are coming soon! Contact and tell us what feature you would like to see in next version ( you can make an issue ). @@ -18,6 +21,18 @@ Web version: https://mdibaiee.github.io/Sketchy/Web/ Firefox Marketplace: https://marketplace.firefox.com/app/sketchy/ +Start +===== + +To start working on: + + git clone https://github.com/mdibaiee/Sketchy + cd Sketchy + npm install + grunt + +Sketchy will be built to "build" folder, you can run `grunt watch` to automatically re-run tasks when you modify files. + Changelog ========= diff --git a/Mobile/css/color-picker.less b/Shared/css/color-picker.less similarity index 100% rename from Mobile/css/color-picker.less rename to Shared/css/color-picker.less diff --git a/Mobile/css/fonts.less b/Shared/css/fonts.less similarity index 100% rename from Mobile/css/fonts.less rename to Shared/css/fonts.less diff --git a/Mobile/css/fonts/MozTT-Bold.ttf b/Shared/css/fonts/MozTT-Bold.ttf similarity index 100% rename from Mobile/css/fonts/MozTT-Bold.ttf rename to Shared/css/fonts/MozTT-Bold.ttf diff --git a/Mobile/css/fonts/MozTT-Light.ttf b/Shared/css/fonts/MozTT-Light.ttf similarity index 100% rename from Mobile/css/fonts/MozTT-Light.ttf rename to Shared/css/fonts/MozTT-Light.ttf diff --git a/Mobile/css/fonts/MozTT-Medium.ttf b/Shared/css/fonts/MozTT-Medium.ttf similarity index 100% rename from Mobile/css/fonts/MozTT-Medium.ttf rename to Shared/css/fonts/MozTT-Medium.ttf diff --git a/Mobile/css/fonts/MozTT-Regular.ttf b/Shared/css/fonts/MozTT-Regular.ttf similarity index 100% rename from Mobile/css/fonts/MozTT-Regular.ttf rename to Shared/css/fonts/MozTT-Regular.ttf diff --git a/Mobile/css/imgs/bg_overlay_pressed_1.png b/Shared/css/imgs/bg_overlay_pressed_1.png similarity index 100% rename from Mobile/css/imgs/bg_overlay_pressed_1.png rename to Shared/css/imgs/bg_overlay_pressed_1.png diff --git a/Mobile/css/imgs/bg_overlay_pressed_2.png b/Shared/css/imgs/bg_overlay_pressed_2.png similarity index 100% rename from Mobile/css/imgs/bg_overlay_pressed_2.png rename to Shared/css/imgs/bg_overlay_pressed_2.png diff --git a/Mobile/css/imgs/clear.png b/Shared/css/imgs/clear.png similarity index 100% rename from Mobile/css/imgs/clear.png rename to Shared/css/imgs/clear.png diff --git a/Mobile/css/imgs/div_line_lg_black.png b/Shared/css/imgs/div_line_lg_black.png similarity index 100% rename from Mobile/css/imgs/div_line_lg_black.png rename to Shared/css/imgs/div_line_lg_black.png diff --git a/Mobile/css/imgs/div_line_sm_black.png b/Shared/css/imgs/div_line_sm_black.png similarity index 100% rename from Mobile/css/imgs/div_line_sm_black.png rename to Shared/css/imgs/div_line_sm_black.png diff --git a/Mobile/css/imgs/download.png b/Shared/css/imgs/download.png similarity index 100% rename from Mobile/css/imgs/download.png rename to Shared/css/imgs/download.png diff --git a/Mobile/css/imgs/header_bg_black.png b/Shared/css/imgs/header_bg_black.png similarity index 100% rename from Mobile/css/imgs/header_bg_black.png rename to Shared/css/imgs/header_bg_black.png diff --git a/Mobile/css/imgs/load.png b/Shared/css/imgs/load.png similarity index 100% rename from Mobile/css/imgs/load.png rename to Shared/css/imgs/load.png diff --git a/Mobile/css/imgs/menu.png b/Shared/css/imgs/menu.png similarity index 100% rename from Mobile/css/imgs/menu.png rename to Shared/css/imgs/menu.png diff --git a/Mobile/css/imgs/redo.png b/Shared/css/imgs/redo.png similarity index 100% rename from Mobile/css/imgs/redo.png rename to Shared/css/imgs/redo.png diff --git a/Mobile/css/imgs/settings.png b/Shared/css/imgs/settings.png similarity index 100% rename from Mobile/css/imgs/settings.png rename to Shared/css/imgs/settings.png diff --git a/Mobile/css/imgs/undo.png b/Shared/css/imgs/undo.png similarity index 100% rename from Mobile/css/imgs/undo.png rename to Shared/css/imgs/undo.png diff --git a/Mobile/css/main.css b/Shared/css/main.css similarity index 100% rename from Mobile/css/main.css rename to Shared/css/main.css diff --git a/Mobile/css/main.less b/Shared/css/main.less similarity index 100% rename from Mobile/css/main.less rename to Shared/css/main.less diff --git a/Mobile/css/seekbars.less b/Shared/css/seekbars.less similarity index 100% rename from Mobile/css/seekbars.less rename to Shared/css/seekbars.less diff --git a/Mobile/css/seekbars/images/ui/handler.png b/Shared/css/seekbars/images/ui/handler.png similarity index 100% rename from Mobile/css/seekbars/images/ui/handler.png rename to Shared/css/seekbars/images/ui/handler.png diff --git a/Mobile/css/seekbars/images/ui/handler@1.5x.png b/Shared/css/seekbars/images/ui/handler@1.5x.png similarity index 100% rename from Mobile/css/seekbars/images/ui/handler@1.5x.png rename to Shared/css/seekbars/images/ui/handler@1.5x.png diff --git a/Mobile/css/seekbars/images/ui/handler@2x.png b/Shared/css/seekbars/images/ui/handler@2x.png similarity index 100% rename from Mobile/css/seekbars/images/ui/handler@2x.png rename to Shared/css/seekbars/images/ui/handler@2x.png diff --git a/Mobile/css/seekbars/seekbars.css b/Shared/css/seekbars/seekbars.css similarity index 100% rename from Mobile/css/seekbars/seekbars.css rename to Shared/css/seekbars/seekbars.css diff --git a/Mobile/css/switches.less b/Shared/css/switches.less similarity index 100% rename from Mobile/css/switches.less rename to Shared/css/switches.less diff --git a/Mobile/css/switches/images/check/danger.png b/Shared/css/switches/images/check/danger.png similarity index 100% rename from Mobile/css/switches/images/check/danger.png rename to Shared/css/switches/images/check/danger.png diff --git a/Mobile/css/switches/images/check/danger@1.5x.png b/Shared/css/switches/images/check/danger@1.5x.png similarity index 100% rename from Mobile/css/switches/images/check/danger@1.5x.png rename to Shared/css/switches/images/check/danger@1.5x.png diff --git a/Mobile/css/switches/images/check/danger@2x.png b/Shared/css/switches/images/check/danger@2x.png similarity index 100% rename from Mobile/css/switches/images/check/danger@2x.png rename to Shared/css/switches/images/check/danger@2x.png diff --git a/Mobile/css/switches/images/check/default.png b/Shared/css/switches/images/check/default.png similarity index 100% rename from Mobile/css/switches/images/check/default.png rename to Shared/css/switches/images/check/default.png diff --git a/Mobile/css/switches/images/check/default@1.5x.png b/Shared/css/switches/images/check/default@1.5x.png similarity index 100% rename from Mobile/css/switches/images/check/default@1.5x.png rename to Shared/css/switches/images/check/default@1.5x.png diff --git a/Mobile/css/switches/images/check/default@2x.png b/Shared/css/switches/images/check/default@2x.png similarity index 100% rename from Mobile/css/switches/images/check/default@2x.png rename to Shared/css/switches/images/check/default@2x.png diff --git a/Mobile/css/switches/images/radio/danger.png b/Shared/css/switches/images/radio/danger.png similarity index 100% rename from Mobile/css/switches/images/radio/danger.png rename to Shared/css/switches/images/radio/danger.png diff --git a/Mobile/css/switches/images/radio/danger@1.5x.png b/Shared/css/switches/images/radio/danger@1.5x.png similarity index 100% rename from Mobile/css/switches/images/radio/danger@1.5x.png rename to Shared/css/switches/images/radio/danger@1.5x.png diff --git a/Mobile/css/switches/images/radio/danger@2x.png b/Shared/css/switches/images/radio/danger@2x.png similarity index 100% rename from Mobile/css/switches/images/radio/danger@2x.png rename to Shared/css/switches/images/radio/danger@2x.png diff --git a/Mobile/css/switches/images/radio/default.png b/Shared/css/switches/images/radio/default.png similarity index 100% rename from Mobile/css/switches/images/radio/default.png rename to Shared/css/switches/images/radio/default.png diff --git a/Mobile/css/switches/images/radio/default@1.5x.png b/Shared/css/switches/images/radio/default@1.5x.png similarity index 100% rename from Mobile/css/switches/images/radio/default@1.5x.png rename to Shared/css/switches/images/radio/default@1.5x.png diff --git a/Mobile/css/switches/images/radio/default@2x.png b/Shared/css/switches/images/radio/default@2x.png similarity index 100% rename from Mobile/css/switches/images/radio/default@2x.png rename to Shared/css/switches/images/radio/default@2x.png diff --git a/Mobile/css/switches/images/switch/background.png b/Shared/css/switches/images/switch/background.png similarity index 100% rename from Mobile/css/switches/images/switch/background.png rename to Shared/css/switches/images/switch/background.png diff --git a/Mobile/css/switches/images/switch/background@1.5x.png b/Shared/css/switches/images/switch/background@1.5x.png similarity index 100% rename from Mobile/css/switches/images/switch/background@1.5x.png rename to Shared/css/switches/images/switch/background@1.5x.png diff --git a/Mobile/css/switches/images/switch/background_off.png b/Shared/css/switches/images/switch/background_off.png similarity index 100% rename from Mobile/css/switches/images/switch/background_off.png rename to Shared/css/switches/images/switch/background_off.png diff --git a/Mobile/css/switches/images/switch/background_off@1.5x.png b/Shared/css/switches/images/switch/background_off@1.5x.png similarity index 100% rename from Mobile/css/switches/images/switch/background_off@1.5x.png rename to Shared/css/switches/images/switch/background_off@1.5x.png diff --git a/Mobile/css/value_selector.less b/Shared/css/value_selector.less similarity index 100% rename from Mobile/css/value_selector.less rename to Shared/css/value_selector.less diff --git a/Mobile/css/value_selector/images/icons/checked.png b/Shared/css/value_selector/images/icons/checked.png similarity index 100% rename from Mobile/css/value_selector/images/icons/checked.png rename to Shared/css/value_selector/images/icons/checked.png diff --git a/Mobile/css/value_selector/images/icons/checked@1.5x.png b/Shared/css/value_selector/images/icons/checked@1.5x.png similarity index 100% rename from Mobile/css/value_selector/images/icons/checked@1.5x.png rename to Shared/css/value_selector/images/icons/checked@1.5x.png diff --git a/Mobile/css/value_selector/images/icons/checked@2x.png b/Shared/css/value_selector/images/icons/checked@2x.png similarity index 100% rename from Mobile/css/value_selector/images/icons/checked@2x.png rename to Shared/css/value_selector/images/icons/checked@2x.png diff --git a/Mobile/css/value_selector/images/ui/affirmative.png b/Shared/css/value_selector/images/ui/affirmative.png similarity index 100% rename from Mobile/css/value_selector/images/ui/affirmative.png rename to Shared/css/value_selector/images/ui/affirmative.png diff --git a/Mobile/css/value_selector/images/ui/default.png b/Shared/css/value_selector/images/ui/default.png similarity index 100% rename from Mobile/css/value_selector/images/ui/default.png rename to Shared/css/value_selector/images/ui/default.png diff --git a/Mobile/css/value_selector/images/ui/gradient.png b/Shared/css/value_selector/images/ui/gradient.png similarity index 100% rename from Mobile/css/value_selector/images/ui/gradient.png rename to Shared/css/value_selector/images/ui/gradient.png diff --git a/Mobile/css/value_selector/images/ui/gradient@1.5x.png b/Shared/css/value_selector/images/ui/gradient@1.5x.png similarity index 100% rename from Mobile/css/value_selector/images/ui/gradient@1.5x.png rename to Shared/css/value_selector/images/ui/gradient@1.5x.png diff --git a/Mobile/css/value_selector/images/ui/pattern.png b/Shared/css/value_selector/images/ui/pattern.png similarity index 100% rename from Mobile/css/value_selector/images/ui/pattern.png rename to Shared/css/value_selector/images/ui/pattern.png diff --git a/Mobile/css/value_selector/images/ui/shadow-invert.png b/Shared/css/value_selector/images/ui/shadow-invert.png similarity index 100% rename from Mobile/css/value_selector/images/ui/shadow-invert.png rename to Shared/css/value_selector/images/ui/shadow-invert.png diff --git a/Mobile/css/value_selector/images/ui/shadow-invert@1.5x.png b/Shared/css/value_selector/images/ui/shadow-invert@1.5x.png similarity index 100% rename from Mobile/css/value_selector/images/ui/shadow-invert@1.5x.png rename to Shared/css/value_selector/images/ui/shadow-invert@1.5x.png diff --git a/Mobile/css/value_selector/images/ui/shadow-invert@2x.png b/Shared/css/value_selector/images/ui/shadow-invert@2x.png similarity index 100% rename from Mobile/css/value_selector/images/ui/shadow-invert@2x.png rename to Shared/css/value_selector/images/ui/shadow-invert@2x.png diff --git a/Mobile/css/value_selector/images/ui/shadow.png b/Shared/css/value_selector/images/ui/shadow.png similarity index 100% rename from Mobile/css/value_selector/images/ui/shadow.png rename to Shared/css/value_selector/images/ui/shadow.png diff --git a/Mobile/css/value_selector/images/ui/shadow@1.5x.png b/Shared/css/value_selector/images/ui/shadow@1.5x.png similarity index 100% rename from Mobile/css/value_selector/images/ui/shadow@1.5x.png rename to Shared/css/value_selector/images/ui/shadow@1.5x.png diff --git a/Mobile/css/value_selector/images/ui/shadow@2x.png b/Shared/css/value_selector/images/ui/shadow@2x.png similarity index 100% rename from Mobile/css/value_selector/images/ui/shadow@2x.png rename to Shared/css/value_selector/images/ui/shadow@2x.png diff --git a/Mobile/img/icons/MozillaFXOSIconTemplate1_overlay.png b/Shared/img/icons/MozillaFXOSIconTemplate1_overlay.png similarity index 100% rename from Mobile/img/icons/MozillaFXOSIconTemplate1_overlay.png rename to Shared/img/icons/MozillaFXOSIconTemplate1_overlay.png diff --git a/Mobile/img/icons/icon120.png b/Shared/img/icons/icon120.png similarity index 100% rename from Mobile/img/icons/icon120.png rename to Shared/img/icons/icon120.png diff --git a/Mobile/img/icons/icon128.png b/Shared/img/icons/icon128.png similarity index 100% rename from Mobile/img/icons/icon128.png rename to Shared/img/icons/icon128.png diff --git a/Mobile/img/icons/icon16.png b/Shared/img/icons/icon16.png similarity index 100% rename from Mobile/img/icons/icon16.png rename to Shared/img/icons/icon16.png diff --git a/Mobile/img/icons/icon2.png b/Shared/img/icons/icon2.png similarity index 100% rename from Mobile/img/icons/icon2.png rename to Shared/img/icons/icon2.png diff --git a/Mobile/img/icons/icon2.svg b/Shared/img/icons/icon2.svg similarity index 100% rename from Mobile/img/icons/icon2.svg rename to Shared/img/icons/icon2.svg diff --git a/Mobile/img/icons/icon32.png b/Shared/img/icons/icon32.png similarity index 100% rename from Mobile/img/icons/icon32.png rename to Shared/img/icons/icon32.png diff --git a/Mobile/img/icons/icon48.png b/Shared/img/icons/icon48.png similarity index 100% rename from Mobile/img/icons/icon48.png rename to Shared/img/icons/icon48.png diff --git a/Mobile/img/icons/icon60.png b/Shared/img/icons/icon60.png similarity index 100% rename from Mobile/img/icons/icon60.png rename to Shared/img/icons/icon60.png diff --git a/Mobile/img/icons/icon64.png b/Shared/img/icons/icon64.png similarity index 100% rename from Mobile/img/icons/icon64.png rename to Shared/img/icons/icon64.png diff --git a/Mobile/img/icons/icon90.png b/Shared/img/icons/icon90.png similarity index 100% rename from Mobile/img/icons/icon90.png rename to Shared/img/icons/icon90.png diff --git a/Web/js/desktop.js b/Shared/js/events.js similarity index 80% rename from Web/js/desktop.js rename to Shared/js/events.js index 9b1bb16..dcf1e3b 100755 --- a/Web/js/desktop.js +++ b/Shared/js/events.js @@ -1,14 +1,14 @@ "use strict"; $(window).resize(sizeAndPos); - - $('.menu').click(function() { +$(document).ready(function() { + $('.menu').on('click tap', function() { $('#menu').toggleClass('pulled'); }) - $('.save').click(function() { + $('.save').on('click tap', function() { $('#save').removeClass('hidden'); }) - $('.load').click(function() { + $('.load').on('click tap', function() { $('#load').removeClass('hidden'); $('#load li').remove(); var list = JSON.parse(localStorage.getItem('projects')); @@ -24,11 +24,11 @@ $(window).resize(sizeAndPos); ); } - $confirm.find('li').off('click').click(function(e) { + $confirm.find('li').off('click').on('click tap', function(e) { $(this).parent().find('li[aria-selected]').removeAttr('aria-selected'); $(this).attr('aria-selected', 'true'); }) - $('#pro').click(function() { + $('#pro').on('click tap', function() { $('#save ol:nth-of-type(2) li').each(function() { if( $(this).find('span').html() !== 'Transparent' ) { $(this).addClass('hidden'); @@ -37,11 +37,11 @@ $(window).resize(sizeAndPos); else $(this).attr('aria-selected', 'true'); }) }) - $('#exp').click(function() { + $('#exp').on('click tap', function() { $('#save ol:nth-of-type(2) li').removeClass('hidden'); }) }) - $('#pro').click(function() { + $('#pro').on('click tap', function() { $('#save ol:nth-of-type(2) li').each(function() { if( $(this).find('span').html() !== 'Transparent' ) { $(this).addClass('hidden'); @@ -50,20 +50,24 @@ $(window).resize(sizeAndPos); else $(this).attr('aria-selected', 'true'); }) }) - $('#exp').click(function() { + $('#exp').on('click tap', function() { $('#save ol:nth-of-type(2) li').removeClass('hidden'); }) - $c.last().on('mousedown', function(e) { + $c.last().on('mousedown touchstart', function(e) { e.preventDefault(); + if( e.changedTouches ) + e = e.changedTouches[0]; var xy = relative(e.pageX, e.pageY); startPoint(xy.x, xy.y); window.active = true; - }).on('mousemove', function(e) { + }).on('mousemove touchmove', function(e) { e.preventDefault(); + if( e.changedTouches ) + e = e.changedTouches[0]; if (!window.active || settings.type == 'line') return; var xy = relative(e.pageX, e.pageY); drawPoint(xy.x, xy.y); - }).on('mouseup', function(e) { + }).on('mouseup touchend', function(e) { e.preventDefault(); window.active = false; @@ -116,7 +120,7 @@ $(window).resize(sizeAndPos); var $single = $('form.single'); - $single.find('li').click(function(e) { + $single.find('li').on('click tap', function(e) { $(this).parent().find('li[aria-selected]').removeAttr('aria-selected'); $(this).attr('aria-selected', 'true'); var key = $(this).parents('form').attr('id'), @@ -142,11 +146,11 @@ $(window).resize(sizeAndPos); $confirm.each(function() { - $(this).find('li').click(function(e) { + $(this).find('li').on('click tap', function(e) { $(this).parent().find('li[aria-selected]').removeAttr('aria-selected'); $(this).attr('aria-selected', 'true'); }) - $(this).find('button').last().click(function(e) { + $(this).find('button').last().on('click tap', function(e) { e.preventDefault(); var v = $(this).parents('form').attr('id'); $(this).parents('form').find('h1').each(function(i) { @@ -160,7 +164,7 @@ $(window).resize(sizeAndPos); $(this).parents('form').addClass('hidden'); window[v](); }) - $(this).find('button').first().click(function(e) { + $(this).find('button').first().on('click tap', function(e) { e.preventDefault(); $(this).parents('form').addClass('hidden'); }) @@ -174,12 +178,12 @@ $(window).resize(sizeAndPos); var target = /set(.*)/.exec($(this).attr('id'))[1]; // Exception for Color if( target == 'color' || target == 'bg' ) { - return $(this).click(function() { + return $(this).on('click tap', function() { $('.picker').removeClass('hidden'); $('.picker').attr('data-caller', target); }) } - $(this).click(function(e) { + $(this).on('click tap', function(e) { e.preventDefault(); $('form[id="' + target + '"]').removeClass('hidden'); }) @@ -188,11 +192,13 @@ $(window).resize(sizeAndPos); // Seekbar var sliderLeft; - $('div[role="slider"] button').on('mousedown', function() { + $('div[role="slider"] button').on('mousedown touchstart', function() { $(this).attr('data-moving','true'); if( !sliderLeft ) sliderLeft = $('div[role="slider"] button').offset().left; - }).on('mousemove', function(e) { + }).on('mousemove touchmove', function(e) { if( $(this).attr('data-moving') ) { + if( e.changedTouches ) + e = e.changedTouches[0]; var x = parseInt(e.pageX - sliderLeft - 15); var $c = $('.'+$(this).parents('div[role="slider"]').attr('class')); var progress = $c.find('progress'); @@ -206,11 +212,11 @@ $(window).resize(sizeAndPos); $('#'+ key +' span').html(x); } } - }).on('mouseup mouseleave', function() { + }).on('mouseup mouseleave touchend', function() { $(this).removeAttr('data-moving'); }) - $('.fill, .stroke').click(function() { + $('.fill, .stroke').on('click tap', function() { var s = $('.'+$(this).attr('class')).find('span'); if( s.html() == 'Yes' ) { s.html('No'); @@ -221,13 +227,13 @@ $(window).resize(sizeAndPos); } }) - $('.close, .tour button').click(function() { + $('.close, .tour button').on('click tap', function() { $(this).parent().addClass('hidden'); }) // Bottom - $('#clear').click(function() { + $('#clear').on('click tap', function() { c.clear(); var h = window.points.history; window.points = []; @@ -243,11 +249,16 @@ $(window).resize(sizeAndPos); window.points.history.last = window.points.history.length-1; }) - $('#undo').click(undo); - $('#redo').click(redo); + $('#undo').on('click tap', undo); + $('#redo').on('click tap', redo); - $('#about').click(function() { + $('#about').on('click tap', function() { $('.about').removeClass('hidden'); }) + if( window.mobile ) $('*').on('click mousemove mousedown mouseup mouseleave', function() {return false;}); + +}) + + diff --git a/Mobile/js/functions.js b/Shared/js/functions.js similarity index 100% rename from Mobile/js/functions.js rename to Shared/js/functions.js diff --git a/Mobile/js/libs/color-picker-touch.js b/Shared/js/libs/color-picker-touch.js similarity index 100% rename from Mobile/js/libs/color-picker-touch.js rename to Shared/js/libs/color-picker-touch.js diff --git a/Mobile/js/libs/color-picker.js b/Shared/js/libs/color-picker.js similarity index 100% rename from Mobile/js/libs/color-picker.js rename to Shared/js/libs/color-picker.js diff --git a/Mobile/js/libs/mobilebrowsers.js b/Shared/js/libs/mobilebrowsers.js similarity index 100% rename from Mobile/js/libs/mobilebrowsers.js rename to Shared/js/libs/mobilebrowsers.js diff --git a/Mobile/js/libs/stack.js b/Shared/js/libs/stack.js similarity index 100% rename from Mobile/js/libs/stack.js rename to Shared/js/libs/stack.js diff --git a/Mobile/js/libs/touch.js b/Shared/js/libs/touch.js similarity index 100% rename from Mobile/js/libs/touch.js rename to Shared/js/libs/touch.js diff --git a/Mobile/js/libs/yepnope.min.js b/Shared/js/libs/yepnope.min.js similarity index 100% rename from Mobile/js/libs/yepnope.min.js rename to Shared/js/libs/yepnope.min.js diff --git a/Mobile/js/libs/zepto.min.js b/Shared/js/libs/zepto.min.js similarity index 100% rename from Mobile/js/libs/zepto.min.js rename to Shared/js/libs/zepto.min.js diff --git a/Mobile/js/main.js b/Shared/js/shared.js old mode 100755 new mode 100644 similarity index 98% rename from Mobile/js/main.js rename to Shared/js/shared.js index 8ec8643..3187c80 --- a/Mobile/js/main.js +++ b/Shared/js/shared.js @@ -1,5 +1,3 @@ -"use strict"; - $(document).ready(function() { window.c = $('canvas')[0].getContext('2d'); window.o = $('canvas')[1].getContext('2d'); @@ -40,10 +38,9 @@ $(document).ready(function() { } }) $('.color').val('#000000'); - + if( localStorage.getItem('sawTips') != settings.version ) { $('.tour').removeClass('hidden'); localStorage.setItem('sawTips', settings.version); } - }) diff --git a/Web/css/color-picker.less b/Web/css/color-picker.less deleted file mode 100755 index cfcbba5..0000000 --- a/Web/css/color-picker.less +++ /dev/null @@ -1,90 +0,0 @@ -/* Purty Picker Copyright 2013 Jayden Seric (MIT license): https://github.com/jaydenseric/Purty-Picker */ -/* Core: No touchy! */ -.color-picker .spectrum { - position: relative; - /* To position pin, luminosity filter */ - background: linear-gradient(gray, transparent), linear-gradient(90deg, red, #ff2b00, #ff5500, #ff8000, #ffaa00, #ffd500, yellow, #d4ff00, #aaff00, #80ff00, #55ff00, #2bff00, lime, #00ff2b, #00ff55, #00ff80, #00ffaa, #00ffd5, cyan, #00d4ff, #00aaff, #007fff, #0055ff, #002bff, blue, #2a00ff, #5500ff, #7f00ff, #aa00ff, #d400ff, magenta, #ff00d4, #ff00aa, #ff0080, #ff0055, #ff002b, red); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - /* Prevent pin interaction causing content selection */ - cursor: crosshair; -} -.color-picker .spectrum.active { - cursor: none; -} -.color-picker .spectrum.active .pin { - cursor: none; -} -.color-picker .spectrum > div { - /* Luminosity filter */ - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; -} -.color-picker .spectrum .pin { - position: absolute; - cursor: move; -} - -/* Customization: Default skin */ -.color-picker { - margin: 20px; - padding: 11px; - border: 1px solid #e3e3e3; - border-radius: 4px; - background-color: #f5f5f5; -} -.color-picker .color, -.color-picker .luminosity { - -moz-box-sizing: border-box; - box-sizing: border-box; - display: block; - width: 100%; -} -.color-picker .format { - display: block; - margin: 0 auto 10px auto; -} -.color-picker .color { - -webkit-appearance: none; - border: 0; - border-radius: 2px; - padding: 10px; - text-align: center; - font-size: 11px; - letter-spacing: 1px; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - color: rgba(0, 0, 0, 0.6); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2); - transition: color 0.2s; -} -.color-picker .color.dark { - color: rgba(255, 255, 255, 0.7); -} -.color-picker .spectrum { - height: 150px; - /* Arbitary but required */ - overflow: hidden; - /* Prevent pin overflowing container */ - border-radius: 2px; - margin: 10px 0; -} -.color-picker .spectrum > div { - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2); -} -.color-picker .spectrum .pin { - margin-left: -4px; - margin-top: -4px; - width: 4px; - height: 4px; - border: 2px solid white; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); - border-radius: 100%; -} -.color-picker .luminosity { - margin: 0; -} diff --git a/Web/css/fonts.less b/Web/css/fonts.less deleted file mode 100755 index e92a90b..0000000 --- a/Web/css/fonts.less +++ /dev/null @@ -1,16 +0,0 @@ -@font-face { - font-family: 'MozTT-Regular'; - src: url('fonts/MozTT-Regular.ttf'); -} -@font-face { - font-family: 'MozTT-Light'; - src: url('fonts/MozTT-Light.ttf'); -} -@font-face { - font-family: 'MozTT-Medium'; - src: url('fonts/MozTT-Medium.ttf'); -} -@font-face { - font-family: 'MozTT-Bold'; - src: url('fonts/MozTT-Bold.ttf'); -} diff --git a/Web/css/main.less b/Web/css/main.less deleted file mode 100755 index 9cb6c0f..0000000 --- a/Web/css/main.less +++ /dev/null @@ -1,292 +0,0 @@ -@import 'fonts'; -@import 'color-picker'; -@import 'seekbars'; -@import 'value_selector'; - -html, body { - margin: 0; - font-size: 10px; - overflow: hidden; - width: 100%; - height: 100%; -} - -*::-moz-focus-inner { - border: none; -} -*:focus { - outline: none; -} - -.hidden { - display: none !important; - visibility: none !important; -} - -div#container { - position: absolute; -} - -canvas { - position: absolute; - top: 0; - left: 0; -} - -.separator { - display: block; - height: 4.8rem; - width: 0.1rem; - &.long { - background: url('imgs/div_line_lg_black.png'); - } - &.small { - background: url('imgs/div_line_sm_black.png'); - } - &.left { - float: left; - } - &.right { - float: right; - } - &.menu { - position: relative; - left: -3rem; - } -} - -.overlay { - z-index: 9999; - position: absolute; - left: 0; - top: 5.3rem;; -} - -button { - -moz-appearance: none; - z-index: 1; - position: relative; - border: none; -} - -.close { - display: block; - width: 2rem; - height: 2rem; - padding: 0 0 0.2rem 0.2rem; - font-size: 10pt; - border: 1px solid rgb(227, 227, 227); - border-radius: 50%; - position: absolute; - text-align: center; - top: -2%; - left: 97%; -} - -.picker, .about, .tour { - font-family: 'MozTT-Light'; - width: 30rem; - height: 24.6rem; - position: absolute; - left: 50%; - top: 50%; - margin-top: -12.3rem; - margin-left: -15rem; - - .color-picker { - margin: 0; - } -} - -.about, .tour { - background: #262626; - padding: 1rem 2rem;; - height: 23rem; - margin-top: -11.5rem; - margin-left: -17rem; - border-radius: 0.2rem; - color: white; - box-shadow: 0 0 0.3rem black; - - a, a:link, a:visited, a:active { - color: white; - } - - .close { - background: #262626; - color: white; - border: 1px solid gray; - } - - p { - font-size: 11pt; - } - span { - font-size: 8pt; - } -} - -.tour { - .button { - width: 30rem; - position: absolute; - bottom: 1rem; - left: 1.8rem; - } -} - -header { - width: 100%; - height: 5.3rem; - background: url('imgs/header_bg_black.png'); - - button { - width: 5rem; - height: 5rem; - } - - .menu { - background: url('imgs/menu.png') -12px center no-repeat; - float: left; - &:active { - background: url('imgs/menu.png') -12px center no-repeat, url('imgs/bg_overlay_pressed_1.png') left no-repeat; - } - } - - .save { - background: url('imgs/download.png') center center no-repeat; - float: right; - &:active { - background: url('imgs/download.png') center center no-repeat, url('imgs/bg_overlay_pressed_2.png') center center; - } - } - - .load { - background: url('imgs/load.png') center center no-repeat; - float: right; - &:active { - background: url('imgs/load.png') center center no-repeat, url('imgs/bg_overlay_pressed_2.png') center center; - } - } - - #title { - color: white; - font-size: 11pt; - font-family: 'MozTT-Regular'; - float: left; - margin: 1.5rem 0; - position: relative; - left: -2rem; - } -} - - -#menu { - width: 15rem; - height: 100%; - display: block; - background: #262626; - position: absolute; - left: -15rem; - top: 5rem; - color: white; - font-family: 'MozTT-Light'; - font-size: 8pt; - transition: left 0.2s ease-out; - border-collapse: collapse; - overflow-y: auto; - - &.pulled { - left: 0; - transition: left 0.2s ease-out; - } - - button[id^='set'], p, .bottom button { - background: none; - display: block; - width: 75%; - color: white; - text-align: left; - margin: 1rem 2.5rem; - font-family: 'MozTT-Light'; - font-size: 8pt; - padding: 0 0.6rem; - cursor: pointer; - } - p { - width: 65%; - } - span { - float: right; - font-size: 7pt; - } - div[role='slider'] { - width: 60%; - float: right; - margin: 0 2rem 0 0; - - div { - overflow: visible; - button { - margin-top: -3.4rem; - left: 0%; - } - } - } - hr { - clear: both; - padding: 0.7rem 0; - margin-bottom: 0.7rem; - border: none; - border-bottom: 1px solid rgba(255,255,255,0.3); - } - *[class^='icon'] { - display: block; - margin: 1rem 0.5rem; - - &:nth-of-type(2) { - padding-top: 0.5rem; - } - &:before { - content: ''; - background-size: 2rem; - width: 2rem; - height: 2rem; - display: block; - float: left; - margin: -0.3rem 0.5rem 0 0; - } - } - - .icon-settings:before { - background-image: url('imgs/settings.png'); - } - .icon-clear:before { - background-image: url('imgs/clear.png'); - } - .icon-undo:before { - background-image: url('imgs/undo.png'); - } - .icon-redo:before { - background-image: url('imgs/redo.png'); - } - - .options { - display: table-row; - vertical-align: top; - margin-top: 1rem; - } - .bottom { - width: 100%; - position: absolute; - bottom: 5rem; - button[class^='icon'] { - margin-left: 3.5rem; - } - button { - margin-left: 5rem; - } - } -} - - diff --git a/Web/css/switches.less b/Web/css/switches.less deleted file mode 100755 index 9025a22..0000000 --- a/Web/css/switches.less +++ /dev/null @@ -1,94 +0,0 @@ -/* ---------------------------------- - * CHECKBOXES / RADIOS - * ---------------------------------- */ - -label.pack-checkbox, -label.pack-radio, -label.pack-switch { - display: inline-block; - vertical-align: middle; - width: 5rem; - height: 5rem; - position: relative; - background: none; -} - -label.pack-checkbox input, -label.pack-radio input, -label.pack-switch input { - margin: 0; - opacity: 0; - position: absolute; - top: 0; - left: 0; -} - -label.pack-checkbox input ~ span:after, -label.pack-radio input ~ span:after { - content: ''; - position: absolute; - left: 50%; - top: 50%; - margin: -1.1rem 0 0 -1.1rem; - width: 2.2rem; - height: 2.2rem; - pointer-events: none; -} - -label.pack-checkbox input ~ span:after { - background: url(switches/images/check/default.png) no-repeat center top / 2.2rem auto; -} - -label.pack-radio input ~ span:after { - background: url(switches/images/radio/default.png) no-repeat center top / 2.2rem auto; -} - -label.pack-checkbox input:checked ~ span:after, -label.pack-radio input:checked ~ span:after, -label.pack-switch input:checked ~ span:after { - background-position: center bottom; -} - -/* 'Dangerous' switches */ - -label.pack-checkbox.danger input ~ span:after { - background-image: url(switches/images/check/danger.png); -} - -label.pack-radio.danger input ~ span:after { - background-image: url(switches/images/radio/danger.png); -} - - -/* ---------------------------------- - * ON/OFF SWITCHES - * ---------------------------------- */ - -label.pack-switch input ~ span:after { - content: ''; - position: absolute; - right: 0; - top: 50%; - width: 6rem; - margin: -1.4rem 0rem 0rem; - height: 2.7rem; - pointer-events: none; - border-radius: 1.35rem; - overflow: hidden; - background: #e6e6e6 url(switches/images/switch/background_off.png) no-repeat -3.2rem 0rem / 9.2rem 2.7rem; - transition: background 0.2s ease; -} - -/* switch: 'ON' state */ -label.pack-switch input:checked ~ span:after { - background: #e6e6e6 url(switches/images/switch/background.png) no-repeat 0rem 0rem / 9.2rem 2.7rem; -} - -/* switch: disabled state */ -label.pack-switch input:disabled ~ span:after { - opacity: 0.4; -} - -label.pack-switch input.uninit ~ span:after { - transition: none; -} diff --git a/Web/css/value_selector.less b/Web/css/value_selector.less deleted file mode 100755 index baaf1eb..0000000 --- a/Web/css/value_selector.less +++ /dev/null @@ -1,204 +0,0 @@ -/* ---------------------------------- - * Value selector (Single & Multiple) - * ---------------------------------- */ - -/* Main dialog setup */ -form[role="dialog"][data-type="value-selector"] { - background: url(value_selector/images/ui/pattern.png) repeat left top, url(value_selector/images/ui/gradient.png) no-repeat left top / 100% 100%; - overflow: hidden; - position: absolute; - z-index: 100; - top: 0; - left: 0; - right: 0; - bottom: 0; - padding: 0 0 7rem; - color: #fff; - font-family: sans-serif; -} - -form[role="dialog"][data-type="value-selector"] > section { - padding: 0 1.5rem 0; - -moz-box-sizing: padding-box; - width: 100%; - height: 100%; - overflow: auto; -} - -form[role="dialog"][data-type="value-selector"] h1 { - font-weight: 400; - font-size: 1.9rem; - line-height: 4.8rem; - color: #fff; - border-bottom: 0.1rem solid #616262; - background: rgba(0 ,0, 0, .2); - margin: 0 -1.5rem; - padding: 0 3rem 1rem; - height: 4.8rem; - -moz-box-sizing: border-box; -} - -/* Specific component code */ -form[role="dialog"][data-type="value-selector"] [role="listbox"] { - position: relative; - padding: 0; - margin: 0 -1.5rem; - max-height: calc(100% - 5rem); - overflow: auto; - border-top: solid 0.1rem #222323; -} - -form[role="dialog"][data-type="value-selector"] .scrollable:before { - content: ""; - display: block; - position: absolute; - pointer-events: none; - top: 4.8rem; - left: 0; - right: 0; - bottom: 6.9rem; - background: url(value_selector/images/ui/shadow.png) repeat-x left top, url(value_selector/images/ui/shadow-invert.png) repeat-x left bottom; -} - -form[role="dialog"][data-type="value-selector"] [role="listbox"] li { - margin: 0; - padding: 0 1.5rem; - height: auto; - list-style: none; - position: relative; - font-weight: lighter; - font-size: 2.2rem; - line-height: 3.9rem; - color: #fff; - transition: background-color 0.2s ease; -} - -form[role="dialog"][data-type="value-selector"] [role="listbox"] li:first-child label { - border-top-color: transparent; -} - -form[role="dialog"][data-type="value-selector"] [role="listbox"] li label { - outline: none; - display: block; - color: #fff; - border-top: 0.1rem solid #666; - border-bottom: 0.1rem solid #000; -} - -form[role="dialog"][data-type="value-selector"] [role="listbox"] li:last-child label { - border-bottom-color: transparent; -} - -form[role="dialog"][data-type="value-selector"] [role="listbox"] li label span { - display: block; - padding: 1rem 1.5rem; - line-height: 4rem; - word-wrap: break-word; -} - -/* Pressed status */ -form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active { - background-color: #00ABCC; -} - -form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active label { - border-color: transparent; -} - -form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active + li label { - border-top-color: #000; -} - -form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active label span { - color: #fff !important; - background-image: none; -} - -/* Checked status */ -form[role="dialog"][data-type="value-selector"] [role="listbox"] li[aria-selected="true"]:not([data-input]) span { - padding-right: 2.6rem; - margin-right: 1.2rem; - color: #00abcd; - background: transparent url(value_selector/images/icons/checked.png) no-repeat 100% 50%; - background-size: 2rem; -} - - -/* Menu & buttons setup */ -form[role="dialog"][data-type="value-selector"] menu { - white-space: nowrap; - margin: 0; - padding: 1.5rem; - border-top: solid 0.1rem rgba(255, 255, 255, 0.1); - background: #2d2d2d url(value_selector/images/ui/pattern.png) repeat left top; - display: block; - overflow: hidden; - position: absolute; - left: 0; - right: 0; - bottom: 0; -} - -form[role="dialog"][data-type="value-selector"] menu button::-moz-focus-inner { - border: none; - outline: none; -} - -form[role="dialog"][data-type="value-selector"] menu button, .button { - width: calc((100% - 1rem) / 2); - height: 3.8rem; - margin: 0 0 1rem; - padding: 0 1.5rem; - -moz-box-sizing: border-box; - display: inline-block; - vertical-align: middle; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - background: #fafafa url(value_selector/images/ui/default.png) repeat-x left bottom/ auto 100%; - border: 0.1rem solid #a6a6a6; - border-radius: 0.3rem; - font-weight: 500; - font-size: 1.6rem; - line-height: 3.8rem; - color: #333; - text-align: center; - text-shadow: 0.1rem 0.1rem 0 rgba(255,255,255,0.3); - text-decoration: none; - outline: none; -} - -/* Press (default & affirmative) */ -form[role="dialog"][data-type="value-selector"] menu button:active, -form[role="dialog"][data-type="value-selector"] menu button.affirmative:active, .button:active { - border-color: #008aaa; - background: #008aaa; - color: #333; -} - -/* affirmative */ -form[role="dialog"][data-type="value-selector"] menu button.affirmative, .button.affirmative { - background-image: url(value_selector/images/ui/affirmative.png); - background-color: #00caf2; - border-color: #008eab; -} - -form[role="dialog"][data-type="value-selector"] menu button:last-child { - margin-left: 1rem; -} - -form[role="dialog"][data-type="value-selector"] menu button, -form[role="dialog"][data-type="value-selector"] menu button:first-child { - margin: 0; -} - -form[role="dialog"][data-type="value-selector"] menu button.full, .button.full { - width: 100%; -} - -/* Right to left tweaks */ -html[dir="rtl"] #value-selector li input:checked + span, -html[dir="rtl"] #value-selector li[aria-selected="true"] span { - padding-left: 2.6rem; - margin-left: 1.2rem; -} diff --git a/Web/img/icons/MozillaFXOSIconTemplate1_overlay.png b/Web/img/icons/MozillaFXOSIconTemplate1_overlay.png deleted file mode 100755 index 23897960e729b74f554a649ad35f3eb3b3cdb34f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4429 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 diff --git a/Web/img/icons/icon128.png b/Web/img/icons/icon128.png deleted file mode 100755 index 96e7f9f2e55378971a66ba8efb7361dabe9244ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9136 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 diff --git a/Web/img/icons/icon16.png b/Web/img/icons/icon16.png deleted file mode 100755 index 186045d9f5870f93b10fcfaf56c627391ea6db35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmV<80v-K{P)91jL#s{fI`Ci^ z-sk(i^WF@RQlfX2N+oJpR)!GrR7$A<03qZ^N@+|_Pw#JUZ;Rf1(koCX6y_cz6gQ{tcnkYQ2c5s+x%s7#$tO%E}7b?KT>X1`NXh=e#fH`ucjFs;U}$2oDbr zV{L5>tyT*c7Z*4AEg2FE8u1ZNK51$J*^SuCA`&I1Z$gks*W#=jP_#6^q3x1%O;GSDTrc zDKf?aO8>lW##m%!&UvUP%Ffc#(nsLIXWHA_dsVB|-Zz^~&2?S4uG@F#+uPfp>2!K0 zolfuO^Lg(-0RXtUxk*(jmFJ%4y{uNNS`Y+cY;4S)oSbZEnx@C&@h=-28~2_44JiP3 UlZV&-0{{R307*qoM6N<$f*c7$@c;k- diff --git a/Web/img/icons/icon2.png b/Web/img/icons/icon2.png deleted file mode 100755 index 559431b1406e455a5c47fdface88b4bb1687c998..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7371 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�}@BZq;2Rch+M-jhRkL9kE^}7TPE~2a`k2c}IDf#EzM_Y5giwhlrU4wWT z88#Y_fChwt&i87Zbp;bO+vS0(rj9*W=;r}%Yn^v7mUbVFdIhHu8SFn z<4^Z9y3QNy#ZOC09Ciab++Zxq8L!g5{P>VsDm&@Tn#}zK4*!aE2MP7}QcnaUJG&&> z4r_MA5qYh-Fs=K`YDgD5I5T0V=}JOYiNo1YXH9apY1MRZI7bj-;`5D~8BMOFcka51 zRrQXs25|Vp$B#`#eh%noACjpF`PRly&d!$6P*cmL>69KD?svwZcH>zeA9?xs$hCJL zjS`!J3%NcrHfCjO`_DpBD-Bu&9Ave|f@@XUe7YoHd}7RNeA~a{H1k+<5)de#s=$-w zsC)*J9=paD?kngUppfx;LUnD;ZhZu0q#-1k1x>VR-Tbc(u^as?h$!{@$=}laOL)fc zt;Kqq;g4zUHDDbE+aH$%R+HETE2Hr}UXGhQF-1v7vf~pKQJD3>FRLDDhJ9;=KTUpp zrIP&R1|4uusCP6A4i5f(DSCkJSg?=O~_^;;%I!Up^ z!rm03P-hO!a~(@RsVN=-*AzC|aMfpTN*tcWCM0}pZe{=jiUhShj*~eV&kGWMn+aFc3K81t@7~t{gaz%{C3B|9Z6YHou;e$k8ZX z_>h;U5*jLhdUnR#R2HfKbN@b(XQuDyhevLxdG@2j!+EMDB_OJy=FNOy(rZm3wSOt2 zTdSGTqW26!erIP#{yLzdstPHn=A82}p{|c#0VnP<-&S^cd6{qjp~-0CGjVTkZ>Y&g zhm+y8->J`a{IA;aV`pdM8BMq4T%%LQ6;0?#@3UN;^%5^> zDwFhw5)yCg>K+2`vj-c7*yG+QOcPboFP6hAY8|HpfNt=^0viiUkN^wy;&lK-QPWAL zE;?~9@(y=w|JSPKg@EA!`OCfheHjb=s-HRqsl4YQS2uCfRcAsNJk>mAT8*Y#0g^b6 z@(n#W?z*}d1s?2dZgK;)zOE_*Ev^=}MW&-3Nr>SMh~T4I9w!c35%c-^`8Kc&?CtBj zh;xI{joTm0C>-9K?<;UPw4AB2U^fBF;#H#W+XHqn%shv2!gJcS$BiwZES5_mgZ*F1ngTF0DLGp{1tk2fm;kd zo)1ms{>z=Nq*kn-$UXQC9M5?ZYMob@Q~~i69a{B(AoW&~Uyp(N>a?{;`a#;AUrfE+!311`Tk5o8X_vhl`Qu6fl%$El}bpTXnn{~#N%WjO| zQD;2z>B3He4p1>^3HTC3Mr=Bi>-Al|AXNi2(&LrG0PqpOIU8UA50=c*>ZIUk2Pylf za`)|Mo`)p#00r45%^SrtNIPAe3SselO)@l1jr+l}|D{>iBIYbePKkc#h)Ps%8)hO6a&eVTgvWT16aay&>aI;htginV&pSB zF6faWqD(P75ycyj{hk<7FUTKhuRq_qL3R};i|V!eProcdBY86I*?AZ-6kwsb(XbqD z!!^5CW2?={m6J52F<$G)ERjv+gJK14ytkQivnPI z;Ku*4dP6wHoFu&*iiT!?$3S#XPfyptc0^nY)OKE;;x3KM{Z}{l_V&aCZ)=7Mq;22{ zK`u)tKSn6$op%XV->rUs-(-^O!Jj|WqaQGPFmnl3i<(g=)IhFIDG89w{m|yY-2G<3 zqe>wL8eK|y;MMCi!us|+3IkF&jn1=Y`CRJB8MME_lu41Sj#lxh;yXYA05r-J$@Ijv zQ|=WzDC=>@W4RGC3A4^kwH#zSAgM=|mwUz(jg*y3^9=8EBd;s#@gn<4T^*xWe?ww= zoI5<%y8Js9T4r#4pwM#xmSFK8Q} - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/Web/img/icons/icon32.png b/Web/img/icons/icon32.png deleted file mode 100755 index 78e4cf0c3120d37d2a4fb0377d4317f0280b8a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 zcmV-k2BGoCr^4f=W99VRYX(`0G#ttB8n1G zzu)hlEaZREas(Vde!QG9b`ZdB06PFU7I@VJa2LSuwr&4>@#4kg8wqG_ZB@$3%1#r} zrvSXmT`ftH03abr(pQ;Grt8wBOGd#0d_LcLA;fQzB)!EsUlwsb5YeEbD0|MIKmRcA zc)o}2?d`jW=>D6M0|4i|!7z+JPMtcnC*SzI74Z3dyNKvl+qS9D0$mJ5#8p*o?dt0K zWkCTxpKm=8-RGQ_6+3g&G{G1{Nl6JNCMKY18iWuKLO_<~DI#k2`~82<6VTe)s(8KL ze*iRCmQ^%)Nl6LLo;{0XGKt~gVO+g>6{@PfB$FgKoz5qzRO;=^moFQ@tQv5;-KS+) zE}Go3EU2oA_V#v+jEo?WNI+2(w6wG!o6SN90nRz5r>EDHmzSTL`Hp~>KG!tuGs9TW zElZM1l7zOlHY5@W=(-NmH1Xug6Bvd8&Ur2kmSw@V?T2#TWM-o1Od6wDx#$#`5Y*9U<>Kq3IpG;ObGnnjVDrimj* zjv$-O;>C*>kR%C%gM)CnT)1`X78FGR=X_3BmW5<8+0xtFTfw5ys7F=R^O;PB6++HA zhi%(9bm$O-5Oc`gZa1!9zdmo~vtbxURYgU`HJNk1mWUSW?Rg=DfN7f8zkfeC=SZbe zP!t6N0|W4QJh*Y=1{@9t7V9HI2ssvuZIC(VRj+#YvN1zWL`Wu+&@>GL0|Rio-MD@G zHW*_$p^L$?tV)@PstXa2&1SK8?_NlfghV0%P16tz22omCitg@i*tQME*plP`z&WoX z03gb{CFCXFy?ZyDPAB5=I21)eFc^fYst5!ENT<^vqMYTH3IH;_I!r7{ZWsnyT3S$7 zSBKHjQ8*k91cO1yvWy209w3=af-yF);ui}dnj|8ME|mhqFtB;^W^CKG4dHMYilQJC z3V|_(M~@yM9*^giy^zo}?O&OQ`Wa&u068DIX_{EGW({`k+=*B$2FtP#3WXp^5<;O6 z#>U1V%QA{+V%DlvtDchI@1JCh^*9{)ohXFBzJ2?UPN(5?I?>`)z$U& ze>)AaD+!wr^Yc>oY&ETt&QL}g{=U~O&fqj)^td-Ukh cvE}^qKOa9Yv>2a3Z~y=R07*qoM6N<$f;!s(jsO4v diff --git a/Web/img/icons/icon48.png b/Web/img/icons/icon48.png deleted file mode 100755 index 301142fef8b155f6311285f502c3c82032004129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2742 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 diff --git a/Web/img/icons/icon60.png b/Web/img/icons/icon60.png deleted file mode 100755 index bac55b3360234a70c49e91370b68f294f02c9a17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3810 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 Y0a`&-tuDhprvLx|07*qoM6N<$f=*mJQ2+n{ diff --git a/Web/img/icons/icon64.png b/Web/img/icons/icon64.png deleted file mode 100755 index fd0041a6113cbd083a8321ccf03477b46e8e56d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4075 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 E|9~8~ng9R* diff --git a/Web/img/icons/icon90.png b/Web/img/icons/icon90.png deleted file mode 100755 index 4e567176d5af5d85017459064220f2b3d6b2af82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6142 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 diff --git a/Web/index.html b/Web/index.html index 93d7f2f..3fa2c1e 100755 --- a/Web/index.html +++ b/Web/index.html @@ -253,7 +253,9 @@ + + diff --git a/Web/js/functions.js b/Web/js/functions.js deleted file mode 100755 index 463aec5..0000000 --- a/Web/js/functions.js +++ /dev/null @@ -1,345 +0,0 @@ -"use strict"; -/*** ESSENTIALS ***/ - -function sizeAndPos() { - - var data = c.getImageData(0,0, $c.width(), $c.height()); - var w = $(window).width(), - h = $(window).height() - 53; - $c.attr('width', w * window.devicePixelRatio); - $c.attr('height',h * window.devicePixelRatio); - $c.css({ - 'width' : w, - 'height' : h - }); - c.clear(); - c.putImageData(data, 0, 0); -} - -function relative(x,y, el) { - var el = el || $c, - offset = el.offset(); - return { - x : (x - offset.left) *window.devicePixelRatio, - y : (y - offset.top) * window.devicePixelRatio - } -} - -function threshold(x1, y1, x2, y2, threshold) { - var tr = threshold || 5; - if( x1 <= x2 + tr && x1 >= x2 - tr && y1 <= y2 + tr && y1 >= y2 - tr ) return true; - return false; -} - -function draw(x1, y1, x2, y2, opts, overlay) { - opts = opts || {}; - if( overlay ) var c = window.o; - else var c = window.c; - c.beginPath(); - if( settings.type == 'eraser' ) c.globalCompositeOperation = 'destination-out'; - else c.globalCompositeOperation = opts.composite || settings.composite; - c.lineCap = opts.lineCap || settings.lineCap; - c.lineJoin = opts.lineJoin || settings.lineJoin; - c.strokeStyle = opts.color || settings.color; - c.fillStyle = opts.color || settings.color; - c.lineWidth = ( opts.lineWidth || settings.lineWidth ) / 10; - c.moveTo(x1, y1); - c.lineTo(x2, y2); - if( !opts.noStroke || settings.noStroke ) c.stroke(); - if( opts.fill || settings.fill ) c.fill(); -} - -function mark(x, y) { - var o = window.o; - o.beginPath(); - o.fillStyle = 'red'; - o.arc(x,y, 3, 0, 2*Math.PI); - o.fill(); -} - -function erase(x1, y1, x2, y2, opts) { - var opts = opts || {}; - var c = window.c; - c.beginPath(); - c.lineWidth = ( opts.lineWidth || settings.lineWidth ) / 10; - c.globalCompositeOperation = 'source-out'; - c.moveTo(x1, y1); - c.lineTo(x2, y2); - window.points = window.points.filter(function(e, i) { - if(!threshold(e.x, e.y, x1, y1, c.lineWidth) && - !threshold(e.x, e.y, x2, y2, c.lineWidth) ) return true; - return false; - }) -} - -function line(x, y, opts) { - var opts = opts || {}; - var o = window.o; - o.beginPath(); - o.lineCap = opts.lineCap || settings.lineCap; - o.lineJoin = opts.lineJoin || settings.lineJoin; - o.strokeStyle = opts.color || settings.color; - o.fillStyle = opts.color || settings.color; - o.lineWidth = ( opts.lineWidth || settings.lineWidth ) / 10; - var last = settings.drawingLine.length-1; - o.moveTo(settings.drawingLine[last].x, settings.drawingLine[last].y); - o.lineTo(x,y); - settings.drawingLine.push({ - x: x, - y: y - }) - o.stroke(); - if( opts.fill || settings.fill ) o.fill(); -} - -function finishLine(opts) { - var opts = opts || {}; - var c = window.c; - o.clear(); - c.beginPath(); - c.strokeStyle = opts.color || settings.color; - c.fillStyle = opts.color || settings.color; - c.lineWidth = ( opts.lineWidth || settings.lineWidth ) / 10; - c.lineJoin = opts.lineJoin || settings.lineJoin; - c.lineCap = opts.lineJoin || settings.lineJoin; - c.moveTo(settings.drawingLine[0].x, settings.drawingLine[0].y); - for( var i = 1, len = settings.drawingLine.length; i < len; i++ ) { - c.lineTo(settings.drawingLine[i].x, settings.drawingLine[i].y); - } - if( settings.stroke ) c.stroke(); - if( settings.fill ) c.fill(); - settings.drawingLine = []; - window.points.history.push({ - data: c.getImageData(0, 0, width(), height()), - points: window.points.slice(0) - }) - window.points.history.last = window.points.history.length-1; -} - -function undo() { - var history = window.points.history; - if( history.last > 1 ) { - var step = history[history.last-1]; - c.putImageData(step.data, 0, 0); - window.points = step.points.slice(0); - window.points.history = history; - window.points.history.last = history.last-1; - } else { - c.clear(); - window.points = []; - window.points.history = history; - window.points.history.last = 0; - } - -} - -function redo() { - var history = window.points.history; - if( history.last < history.length-1 ) { - var step = history[history.last+1]; - c.putImageData(step.data, 0, 0); - window.points = step.points.slice(0); - window.points.history = history; - window.points.history.last = history.last+1; - } -} - -function width() { - return +$c.attr('width'); -} - -function height() { - return +$c.attr('height'); -} - -function dataToBlob(data) { - var binary = atob(data.split(',')[1]), array = []; - var type = data.split(',')[0].split(':')[1].split(';')[0]; - for(var i = 0; i < binary.length; i++) array.push(binary.charCodeAt(i)); - return new Blob([new Uint8Array(array)], {type: type}); -} - - -/*** END ***/ - -function startPoint(x, y) { - - // If no previous point exists, make the first one. - if( !points.length ) points.push({x: x, y: y, type: '', start: {x: x, y: y}}); - - var old = points[points.length-1], - start = old.start, - current = { - x : x, - y : y, - start : old.start || {x: x, y: y}, - type : settings.type - } - - // Line - if( old.type !== 'line' && current.type == 'line' ) { - mark(x, y); - settings.drawingLine.push({ - x: x, - y: y - }) - } - - if( old.type == 'line' && current.type == 'line' ) { - if( points[points.indexOf(old)-1].type !== 'line' ) { - o.clear(); - } - line(x, y); - } - - // Shapes - - if( current.type == 'shape' ) { - settings.shapeStart = current; - } - - var thresholds = window.mobile ? [10, 5] : [5, 2]; - if( points.length > 1 && ((start && threshold(start.x, start.y, x, y, thresholds[0])) || threshold(old.x, old.y, x, y, thresholds[1])) ) { - window.active = false; - points[points.length-1].type = ''; - points[points.length-1].start = undefined; - finishLine(); - return; - } - points.push(current); -} - -function drawPoint(x,y) { - var capture = points[points.length-1]; - - switch(capture.type) { - case 'eraser': { - erase(capture.x, capture.y, x, y); - } - case 'pencil': { - draw(capture.x, capture.y, x, y); - - var current = { - x : x, - y : y, - start : capture.start, - type : capture.type - } - - points.push(current); - break; - } - case 'sketch': { - draw(capture.x, capture.y, x, y); - var current = { - x : x, - y : y, - start : capture.start, - type : capture.type - } - points.push(current); - - for( var i = 0, len = points.length-1; i < len; i++ ) { - if(threshold(points[i].x, points[i].y, current.x, current.y, settings.connectTelorance)) { - var x = points[i].x - current.x, - y = points[i].y - current.y; - var w = settings.lineWidth/20 > 0.2 ? settings.lineWidth/20 : 0.2; - - draw(points[i].x - x*0.2, points[i].y - y*0.2, current.x + x*0.2, current.y + y*0.2, {strokeStyle: 'rgba(0,0,0,0.4)', lineWidth: w}) - } - } - break; - } - case 'fur': { - draw(capture.x, capture.y, x, y); - var current = { - x : x, - y : y, - start : capture.start, - type : capture.type - } - points.push(current); - - for( var i = 0, len = points.length-1; i < len; i++ ) { - if(threshold(points[i].x, points[i].y, current.x, current.y, settings.connectTelorance)) { - var x = points[i].x - current.x, - y = points[i].y - current.y; - var l = settings.furLength / 100 || 0.2; - var w = settings.lineWidth/20 > 0.2 ? settings.lineWidth/20 : 0.2; - - draw(points[i].x + x*l, points[i].y + y*l, current.x - x*l, current.y - y*l, {strokeStyle: 'rgba(0,0,0,0.4)', lineWidth: w}) - } - } - break; - } - case 'shape': { - o.clear(); - o.beginPath(); - o.fillStyle = settings.color; - o.strokeStyle = settings.color; - o.lineWidth = settings.lineWidth / 20; - var start = settings.shapeStart; - switch(settings.shape) { - case 'circle': { - var di = Math.abs(x - start.x); - o.arc(start.x, start.y, di, 0, 2*Math.PI); - settings.comShape = { - type: 'circle', - x: start.x, - y: start.y, - radius: di - } - break; - } - case 'rectangle': { - var w = x - start.x; - var h = y - start.y; - o.rect(start.x, start.y, w, h); - settings.comShape = { - type: 'rectangle', - x: start.x, - y: start.y, - w: w, - h: h - } - break; - } - case 'square': { - var w = x - start.x; - o.rect(start.x, start.y, w, w); - settings.comShape = { - type: 'rectangle', - x: start.x, - y: start.y, - w: w, - h: w - } - break; - } - case 'triangle': { - var dix = (x - start.x)/2; - var diy = (y - start.y)/2; - o.moveTo(start.x + dix, start.y); - o.lineTo(x, y); - o.lineTo(start.x, y); - o.lineTo(start.x + dix, start.y); - settings.comShape = { - type: 'triangle', - start: { - x: start.x, - y: start.y - }, - x: x, - y: y, - dix: dix, - diy: diy - } - } - } - if( settings.fill ) o.fill(); - if( settings.stroke ) o.stroke(); - break; - } - } -} - diff --git a/Web/js/less-1.5.0.min.js b/Web/js/less-1.5.0.min.js deleted file mode 100755 index ef4be90..0000000 --- a/Web/js/less-1.5.0.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! - * LESS - Leaner CSS v1.5.0 - * http://lesscss.org - * - * Copyright (c) 2009-2013, Alexis Sellier - * Licensed under the Apache v2 License. - * - * @licence - */ - -function require(a){return window.less[a.split("/")[1]]}function log(a,b){"development"==less.env&&"undefined"!=typeof console&&less.logLevel>=b&&console.log("less: "+a)}function extractId(a){return a.replace(/^[a-z-]+:\/+?[^\/]+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function errorConsole(a,b){var c="{line} {content}",d=a.filename||b,e=[],f=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+d+" ",g=function(a,b,d){void 0!==a.extract[b]&&e.push(c.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[b]))};a.extract?(g(a,0,""),g(a,1,"line"),g(a,2,""),f+="on line "+a.line+", column "+(a.column+1)+":\n"+e.join("\n")):a.stack&&(f+=a.stack),log(f,logLevel.errors)}function createCSS(a,b,c){var d=b.href||"",e="less:"+(b.title||extractId(d)),f=document.getElementById(e),g=!1,h=document.createElement("style");if(h.setAttribute("type","text/css"),b.media&&h.setAttribute("media",b.media),h.id=e,h.styleSheet)try{h.styleSheet.cssText=a}catch(i){throw new Error("Couldn't reassign styleSheet.cssText.")}else h.appendChild(document.createTextNode(a)),g=null!==f&&f.childNodes.length>0&&h.childNodes.length>0&&f.firstChild.nodeValue===h.firstChild.nodeValue;var j=document.getElementsByTagName("head")[0];if(null===f||g===!1){var k=b&&b.nextSibling||null;k?k.parentNode.insertBefore(h,k):j.appendChild(h)}if(f&&g===!1&&f.parentNode.removeChild(f),c&&cache){log("saving "+d+" to cache.",logLevel.info);try{cache.setItem(d,a),cache.setItem(d+":timestamp",c)}catch(i){log("failed to save",logLevel.errors)}}}function errorHTML(a,b){var c,d,e="less-error-message:"+extractId(b||""),f='
  • {content}
  • ',g=document.createElement("div"),h=[],i=a.filename||b,j=i.match(/([^\/]+(\?.*)?)$/)[1];g.id=e,g.className="less-error-message",d="

    "+(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+"

    "+'

    in '+j+" ";var k=function(a,b,c){void 0!==a.extract[b]&&h.push(f.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};a.extract?(k(a,0,""),k(a,1,"line"),k(a,2,""),d+="on line "+a.line+", column "+(a.column+1)+":

    "+"
      "+h.join("")+"
    "):a.stack&&(d+="
    "+a.stack.split("\n").slice(1).join("
    ")),g.innerHTML=d,createCSS([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),g.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"==less.env&&(c=setInterval(function(){document.body&&(document.getElementById(e)?document.body.replaceChild(g,document.getElementById(e)):document.body.insertBefore(g,document.body.firstChild),clearInterval(c))},10))}function error(a,b){less.errorReporting&&"html"!==less.errorReporting?"console"===less.errorReporting?errorConsole(a,b):"function"==typeof less.errorReporting&&less.errorReporting("add",a,b):errorHTML(a,b)}function removeErrorHTML(a){var b=document.getElementById("less-error-message:"+extractId(a));b&&b.parentNode.removeChild(b)}function removeErrorConsole(){}function removeError(a){less.errorReporting&&"html"!==less.errorReporting?"console"===less.errorReporting?removeErrorConsole(a):"function"==typeof less.errorReporting&&less.errorReporting("remove",a):removeErrorHTML(a)}function loadStyles(a){for(var b,c=document.getElementsByTagName("style"),d=0;d0&&(h.splice(c-1,2),c-=2)}return g.hostPart=f[1],g.directories=h,g.path=f[1]+h.join("/"),g.fileUrl=g.path+(f[4]||""),g.url=g.fileUrl+(f[5]||""),g}function pathDiff(a,b){var c,d,e,f,g=extractUrlParts(a),h=extractUrlParts(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;d>c&&h.directories[c]===g.directories[c];c++);for(f=h.directories.slice(c),e=g.directories.slice(c),c=0;c=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var f=getXMLHttpRequest(),g=isFileProtocol?less.fileAsync:less.async;"function"==typeof f.overrideMimeType&&f.overrideMimeType("text/css"),log("XHR: Getting '"+a+"'",logLevel.info),f.open("GET",a,g),f.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),f.send(null),isFileProtocol&&!less.fileAsync?0===f.status||f.status>=200&&f.status<300?c(f.responseText):d(f.status,a):g?f.onreadystatechange=function(){4==f.readyState&&e(f,c,d)}:e(f,c,d)}function loadFile(a,b,c,d,e){b&&b.currentDirectory&&!/^([a-z-]+:)?\//.test(a)&&(a=b.currentDirectory+a);var f=extractUrlParts(a,window.location.href),g=f.url,h={currentDirectory:f.path,filename:g};if(b?(h.entryPath=b.entryPath,h.rootpath=b.rootpath,h.rootFilename=b.rootFilename,h.relativeUrls=b.relativeUrls):(h.entryPath=f.path,h.rootpath=less.rootpath||f.path,h.rootFilename=g,h.relativeUrls=d.relativeUrls),h.relativeUrls&&(h.rootpath=d.rootpath?extractUrlParts(d.rootpath+pathDiff(f.path,h.entryPath)).path:f.path),d.useFileCache&&fileCache[g])try{var i=fileCache[g];e&&(i+="\n"+e),c(null,i,g,h,{lastModified:new Date})}catch(j){c(j,null,g)}else doXHR(g,d.mime,function(a,b){fileCache[g]=a;try{c(null,a,g,h,{lastModified:b})}catch(d){c(d,null,g)}},function(a,b){c({type:"File",message:"'"+b+"' wasn't found ("+a+")"},null,g)})}function loadStyleSheet(a,b,c,d,e){var f=new less.tree.parseEnv(less);f.mime=a.type,e&&(f.useFileCache=!0),loadFile(a.href,null,function(e,g,h,i,j){if(j){j.remaining=d;var k=cache&&cache.getItem(h),l=cache&&cache.getItem(h+":timestamp");if(!c&&l&&j.lastModified&&new Date(j.lastModified).valueOf()===new Date(l).valueOf())return createCSS(k,a),j.local=!0,b(null,null,g,a,j,h),void 0}removeError(h),g?(f.currentFileInfo=i,new less.Parser(f).parse(g,function(c,d){if(c)return b(c,null,null,a);try{b(c,d,g,a,j,h)}catch(c){b(c,null,null,a)}})):b(e,null,null,a,j,h)},f,e)}function loadStyleSheets(a,b,c){for(var d=0;dv&&(u[q]=u[q].slice(p-v),v=p)}function e(a){var b=a.charCodeAt(0);return 32===b||10===b||9===b}function f(a){var b,c;if(a instanceof Function)return a.call(w.parsers);if("string"==typeof a)b=o.charAt(p)===a?a:null,c=1,d();else{if(d(),!(b=a.exec(u[q])))return null;c=b[0].length}return b?(g(c),"string"==typeof b?b:1===b.length?b[0]:b):void 0}function g(a){for(var b=p,c=q,d=p+u[q].length,f=p+=a;d>p&&e(o.charAt(p));)p++;return u[q]=u[q].slice(a+(p-f)),v=p,0===u[q].length&&q=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}}function m(a,b,c){var d=c.currentFileInfo.filename;return"browser"!==less.mode&&"rhino"!==less.mode&&(d=require("path").resolve(d)),{lineNumber:l(a,b).line+1,fileName:d}}function n(a,b){var c=k(a,b),d=l(a.index,c),e=d.line,f=d.column,g=a.call&&l(a.call,c).line,h=c.split("\n");this.type=a.type||"Syntax",this.message=a.message,this.filename=a.filename||b.currentFileInfo.filename,this.index=a.index,this.line="number"==typeof e?e+1:null,this.callLine=g+1,this.callExtract=h[g],this.stack=a.stack,this.column=f,this.extract=[h[e-1],h[e],h[e+1]]}var o,p,q,r,s,t,u,v,w,x=a&&a.filename;a instanceof tree.parseEnv||(a=new tree.parseEnv(a));var y=this.imports={paths:a.paths||[],queue:[],files:a.files,contents:a.contents,mime:a.mime,error:null,push:function(b,c,d,e){var f=this;this.queue.push(b);var g=function(a,c,d){f.queue.splice(f.queue.indexOf(b),1);var g=d in f.files||d===x;f.files[d]=c,a&&!f.error&&(f.error=a),e(a,c,g,d)};less.Parser.importer?less.Parser.importer(b,c,g,a):less.Parser.fileLoader(b,c,function(b,e,f,h){if(b)return g(b),void 0;var i=new tree.parseEnv(a);i.currentFileInfo=h,i.processImports=!1,i.contents[f]=e,(c.reference||d.reference)&&(h.reference=!0),d.inline?g(null,e,f):new less.Parser(i).parse(e,function(a,b){g(a,b,f)})},a)}};return n.prototype=new Error,n.prototype.constructor=n,this.env=a=a||{},this.optimization="optimization"in this.env?this.env.optimization:1,w={imports:y,parse:function(b,c){var d,e,g,h=null;if(p=q=v=t=0,o=b.replace(/\r\n/g,"\n"),o=o.replace(/^\uFEFF/,""),w.imports.contents[a.currentFileInfo.filename]=o,u=function(b){for(var c,d,e,f,g=0,i=/(?:@\{[\w-]+\}|[^"'`\{\}\/\(\)\\])+/g,j=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,k=/"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'|`((?:[^`]|\\.)*)`/g,l=0,m=b[0],p=0;p0?"missing closing `}`":"missing opening `{`",filename:a.currentFileInfo.filename},a)),b.map(function(a){return a.join("")})}([[]]),h)return c(new n(h,a));try{d=new tree.Ruleset([],f(this.parsers.primary)),d.root=!0,d.firstRoot=!0}catch(i){return c(new n(i,a))}if(d.toCSS=function(b){return function(c,d){c=c||{};var e,f,g=new tree.evalEnv(c);"object"!=typeof d||Array.isArray(d)||(d=Object.keys(d).map(function(a){var b=d[a];return b instanceof tree.Value||(b instanceof tree.Expression||(b=new tree.Expression([b])),b=new tree.Value([b])),new tree.Rule("@"+a,b,!1,null,0)}),g.frames=[new tree.Ruleset(null,d)]);try{e=b.call(this,g),(new tree.joinSelectorVisitor).run(e),(new tree.processExtendsVisitor).run(e),new tree.toCSSVisitor({compress:Boolean(c.compress)}).run(e),c.sourceMap&&(e=new tree.sourceMapOutput({writeSourceMap:c.writeSourceMap,rootNode:e,contentsMap:w.imports.contents,sourceMapFilename:c.sourceMapFilename,outputFilename:c.sourceMapOutputFilename,sourceMapBasepath:c.sourceMapBasepath,sourceMapRootpath:c.sourceMapRootpath,outputSourceFiles:c.outputSourceFiles,sourceMapGenerator:c.sourceMapGenerator})),f=e.toCSS({compress:Boolean(c.compress),dumpLineNumbers:a.dumpLineNumbers,strictUnits:Boolean(c.strictUnits)})}catch(h){throw new n(h,a)}return c.cleancss&&"node"===less.mode?require("clean-css").process(f):c.compress?f.replace(/(^(\s)+)|((\s)+$)/g,""):f}}(d.eval),p57||43>b||47===b||44==b))return(a=f(/^([+-]?\d*\.?\d+)(%|[a-z]+)?/))?new tree.Dimension(a[1],a[2]):void 0},unicodeDescriptor:function(){var a;return(a=f(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/))?new tree.UnicodeDescriptor(a[0]):void 0},javascript:function(){var b,c,d=p;return"~"===o.charAt(d)&&(d++,c=!0),"`"===o.charAt(d)?(void 0===a.javascriptEnabled||a.javascriptEnabled||i("You are using JavaScript, which has been disabled."),c&&f("~"),(b=f(/^`([^`]*)`/))?new tree.JavaScript(b[1],p,c):void 0):void 0}},variable:function(){var a;return"@"===o.charAt(p)&&(a=f(/^(@[\w-]+)\s*:/))?a[1]:void 0},extend:function(a){var b,c,d,e=p,g=[];if(f(a?/^&:extend\(/:/^:extend\(/)){do{for(d=null,b=[];;){if(d=f(/^(all)(?=\s*(\)|,))/))break;if(c=f(this.element),!c)break;b.push(c)}d=d&&d[1],g.push(new tree.Extend(new tree.Selector(b),d,e))}while(f(","));return h(/^\)/),a&&h(/^;/),g}},extendRule:function(){return this.extend(!0)},mixin:{call:function(){var d,e,g,i=[],k=p,l=o.charAt(p),m=!1;if("."===l||"#"===l){for(b();d=f(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/);)i.push(new tree.Element(e,d,p,a.currentFileInfo)),e=f(">");return f("(")&&(g=this.mixin.args.call(this,!0).args,h(")")),g=g||[],f(this.important)&&(m=!0),i.length>0&&(f(";")||j("}"))?new tree.mixin.Call(i,g,k,a.currentFileInfo,m):(c(),void 0)}},args:function(a){for(var b,c,d,e,g,j,k=[],l=[],m=[],n={args:null,variadic:!1};;){if(a)j=f(this.expression);else{if(f(this.comments),"."===o.charAt(p)&&f(/^\.{3}/)){n.variadic=!0,f(";")&&!b&&(b=!0),(b?l:m).push({variadic:!0});break}j=f(this.entities.variable)||f(this.entities.literal)||f(this.entities.keyword)}if(!j)break;e=null,j.throwAwayComments&&j.throwAwayComments(),g=j;var q=null;if(a?1==j.value.length&&(q=j.value[0]):q=j,q&&q instanceof tree.Variable)if(f(":"))k.length>0&&(b&&i("Cannot mix ; and , as delimiter types"),c=!0),g=h(this.expression),e=d=q.name;else{if(!a&&f(/^\.{3}/)){n.variadic=!0,f(";")&&!b&&(b=!0),(b?l:m).push({name:j.name,variadic:!0});break}a||(d=e=q.name,g=null)}g&&k.push(g),m.push({name:e,value:g}),f(",")||(f(";")||b)&&(c&&i("Cannot mix ; and , as delimiter types"),b=!0,k.length>1&&(g=new tree.Value(k)),l.push({name:d,value:g}),d=null,k=[],c=!1)}return n.args=b?l:m,n},definition:function(){var a,d,e,g,i=[],k=!1;if(!("."!==o.charAt(p)&&"#"!==o.charAt(p)||j(/^[^{]*\}/))&&(b(),d=f(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/))){a=d[1];var l=this.mixin.args.call(this,!1);if(i=l.args,k=l.variadic,f(")")||(t=p,c()),f(this.comments),f(/^when/)&&(g=h(this.conditions,"expected condition")),e=f(this.block))return new tree.mixin.Definition(a,i,e,g,k);c()}}},entity:function(){return f(this.entities.literal)||f(this.entities.variable)||f(this.entities.url)||f(this.entities.call)||f(this.entities.keyword)||f(this.entities.javascript)||f(this.comment)},end:function(){return f(";")||j("}")},alpha:function(){var a;if(f(/^\(opacity=/i))return(a=f(/^\d+/)||f(this.entities.variable))?(h(")"),new tree.Alpha(a)):void 0},element:function(){var b,c,d;return c=f(this.combinator),b=f(/^(?:\d+\.\d+|\d+)%/)||f(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||f("*")||f("&")||f(this.attribute)||f(/^\([^()@]+\)/)||f(/^[\.#](?=@)/)||f(this.entities.variableCurly),b||f("(")&&(d=f(this.selector))&&f(")")&&(b=new tree.Paren(d)),b?new tree.Element(c,b,p,a.currentFileInfo):void 0},combinator:function(){var a=o.charAt(p);if(">"===a||"+"===a||"~"===a||"|"===a){for(p++;o.charAt(p).match(/\s/);)p++;return new tree.Combinator(a)}return o.charAt(p-1).match(/\s/)?new tree.Combinator(" "):new tree.Combinator(null)},lessSelector:function(){return this.selector(!0)},selector:function(b){for(var c,d,e,g,j,k=[],l=[];(b&&(e=f(this.extend))||b&&(g=f(/^when/))||(c=f(this.element)))&&(g?j=h(this.conditions,"expected condition"):j?i("CSS guard can only be used at the end of selector"):e?l.push.apply(l,e):(l.length&&i("Extend can only be used at the end of selector"),d=o.charAt(p),k.push(c),c=null),"{"!==d&&"}"!==d&&";"!==d&&","!==d&&")"!==d););return k.length>0?new tree.Selector(k,l,j,p,a.currentFileInfo):(l.length&&i("Extend must be used to extend a selector, it cannot be used on its own"),void 0)},attribute:function(){var a,b,c;if(f("["))return(a=f(this.entities.variableCurly))||(a=h(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),(c=f(/^[|~*$^]?=/))&&(b=f(this.entities.quoted)||f(/^[0-9]+%/)||f(/^[\w-]+/)||f(this.entities.variableCurly)),h("]"),new tree.Attribute(a,c,b)},block:function(){var a;return f("{")&&(a=f(this.primary))&&f("}")?a:void 0},ruleset:function(){var d,e,g,h=[];for(b(),a.dumpLineNumbers&&(g=m(p,o,a));(d=f(this.lessSelector))&&(h.push(d),f(this.comments),f(","));)d.condition&&i("Guards are only currently allowed on a single selector."),f(this.comments);if(h.length>0&&(e=f(this.block))){var j=new tree.Ruleset(h,e,a.strictImports);return a.dumpLineNumbers&&(j.debugInfo=g),j}t=p,c()},rule:function(d){var e,g,h,i=o.charAt(p),j=!1;if(b(),"."!==i&&"#"!==i&&"&"!==i&&(e=f(this.variable)||f(this.ruleProperty))){if(g=d||!a.compress&&"@"!==e.charAt(0)?f(this.anonymousValue)||f(this.value):f(this.value)||f(this.anonymousValue),h=f(this.important),"+"===e[e.length-1]&&(j=!0,e=e.substr(0,e.length-1)),g&&f(this.end))return new tree.Rule(e,g,h,j,s,a.currentFileInfo);if(t=p,c(),g&&!d)return this.rule(!0)}},anonymousValue:function(){var a;return(a=/^([^@+\/'"*`(;{}-]*);/.exec(u[q]))?(p+=a[0].length-1,new tree.Anonymous(a[1])):void 0},"import":function(){var d,e,g=p;b();var h=f(/^@import?\s+/),i=(h?f(this.importOptions):null)||{};return h&&(d=f(this.entities.quoted)||f(this.entities.url))&&(e=f(this.mediaFeatures),f(";"))?(e=e&&new tree.Value(e),new tree.Import(d,e,i,g,a.currentFileInfo)):(c(),void 0)},importOptions:function(){var a,b,c,d={};if(!f("("))return null;do if(a=f(this.importOption)){switch(b=a,c=!0,b){case"css":b="less",c=!1;break;case"once":b="multiple",c=!1}if(d[b]=c,!f(","))break}while(a);return h(")"),d},importOption:function(){var a=f(/^(less|css|multiple|once|inline|reference)/);return a?a[1]:void 0},mediaFeature:function(){var b,c,d=[];do if(b=f(this.entities.keyword)||f(this.entities.variable))d.push(b);else if(f("(")){if(c=f(this.property),b=f(this.value),!f(")"))return null;if(c&&b)d.push(new tree.Paren(new tree.Rule(c,b,null,null,p,a.currentFileInfo,!0)));else{if(!b)return null;d.push(new tree.Paren(b))}}while(b);return d.length>0?new tree.Expression(d):void 0},mediaFeatures:function(){var a,b=[];do if(a=f(this.mediaFeature)){if(b.push(a),!f(","))break}else if((a=f(this.entities.variable))&&(b.push(a),!f(",")))break;while(a);return b.length>0?b:null},media:function(){var b,c,d,e;return a.dumpLineNumbers&&(e=m(p,o,a)),f(/^@media/)&&(b=f(this.mediaFeatures),c=f(this.block))?(d=new tree.Media(c,b,p,a.currentFileInfo),a.dumpLineNumbers&&(d.debugInfo=e),d):void 0},directive:function(){var d,e,g,h,i,j,k,l;if("@"===o.charAt(p)){if(e=f(this["import"])||f(this.media))return e;if(b(),d=f(/^@[a-z-]+/)){switch(h=d,"-"==d.charAt(1)&&d.indexOf("-",2)>0&&(h="@"+d.slice(d.indexOf("-",2)+1)),h){case"@font-face":i=!0;break;case"@viewport":case"@top-left":case"@top-left-corner":case"@top-center":case"@top-right":case"@top-right-corner":case"@bottom-left":case"@bottom-left-corner":case"@bottom-center":case"@bottom-right":case"@bottom-right-corner":case"@left-top":case"@left-middle":case"@left-bottom":case"@right-top":case"@right-middle":case"@right-bottom":i=!0;break;case"@host":case"@page":case"@document":case"@supports":case"@keyframes":i=!0,j=!0;break;case"@namespace":k=!0}if(j&&(l=(f(/^[^{]+/)||"").trim(),l&&(d+=" "+l)),i){if(g=f(this.block))return new tree.Directive(d,g,p,a.currentFileInfo)}else if((e=k?f(this.expression):f(this.entity))&&f(";")){var n=new tree.Directive(d,e,p,a.currentFileInfo);return a.dumpLineNumbers&&(n.debugInfo=m(p,o,a)),n}c()}}},value:function(){for(var a,b=[];(a=f(this.expression))&&(b.push(a),f(",")););return b.length>0?new tree.Value(b):void 0},important:function(){return"!"===o.charAt(p)?f(/^! *important/):void 0},sub:function(){var a,b;return f("(")&&(a=f(this.addition))?(b=new tree.Expression([a]),h(")"),b.parens=!0,b):void 0},multiplication:function(){var a,b,c,d,g;if(a=f(this.operand)){for(g=e(o.charAt(p-1));!j(/^\/[*\/]/)&&(c=f("/")||f("*"))&&(b=f(this.operand));)a.parensInOp=!0,b.parensInOp=!0,d=new tree.Operation(c,[d||a,b],g),g=e(o.charAt(p-1));return d||a}},addition:function(){var a,b,c,d,g;if(a=f(this.multiplication)){for(g=e(o.charAt(p-1));(c=f(/^[-+]\s+/)||!g&&(f("+")||f("-")))&&(b=f(this.multiplication));)a.parensInOp=!0,b.parensInOp=!0,d=new tree.Operation(c,[d||a,b],g),g=e(o.charAt(p-1));return d||a}},conditions:function(){var a,b,c,d=p;if(a=f(this.condition)){for(;j(/^,\s*(not\s*)?\(/)&&f(",")&&(b=f(this.condition));)c=new tree.Condition("or",c||a,b,d);return c||a}},condition:function(){var a,b,c,d,e=p,g=!1;return f(/^not/)&&(g=!0),h("("),(a=f(this.addition)||f(this.entities.keyword)||f(this.entities.quoted))?((d=f(/^(?:>=|<=|=<|[<=>])/))?(b=f(this.addition)||f(this.entities.keyword)||f(this.entities.quoted))?c=new tree.Condition(d,a,b,e,g):i("expected expression"):c=new tree.Condition("=",a,new tree.Keyword("true"),e,g),h(")"),f(/^and/)?new tree.Condition("and",c,f(this.condition)):c):void 0},operand:function(){var a,b=o.charAt(p+1);"-"!==o.charAt(p)||"@"!==b&&"("!==b||(a=f("-"));var c=f(this.sub)||f(this.entities.dimension)||f(this.entities.color)||f(this.entities.variable)||f(this.entities.call);return a&&(c.parensInOp=!0,c=new tree.Negative(c)),c},expression:function(){for(var a,b,c=[];a=f(this.addition)||f(this.entity);)c.push(a),!j(/^\/[\/*]/)&&(b=f("/"))&&c.push(new tree.Anonymous(b));return c.length>0?new tree.Expression(c):void 0},property:function(){var a;return(a=f(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/))?a[1]:void 0},ruleProperty:function(){var a;return(a=f(/^(\*?-?[_a-zA-Z0-9-]+)\s*(\+?)\s*:/))?a[1]+(a[2]||""):void 0}}}},function(a){function b(b){return a.functions.hsla(b.h,b.s,b.l,b.a)}function c(b,c){return b instanceof a.Dimension&&b.unit.is("%")?parseFloat(b.value*c/100):d(b)}function d(b){if(b instanceof a.Dimension)return parseFloat(b.unit.is("%")?b.value/100:b.value);if("number"==typeof b)return b;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function e(a){return Math.min(1,Math.max(0,a))}a.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(b,e,f,g){var h=[b,e,f].map(function(a){return c(a,256)});return g=d(g),new a.Color(h,g)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,c,f){function g(a){return a=0>a?a+1:a>1?a-1:a,1>6*a?i+6*(h-i)*a:1>2*a?h:2>3*a?i+6*(h-i)*(2/3-a):i}a=d(a)%360/360,b=e(d(b)),c=e(d(c)),f=e(d(f));var h=.5>=c?c*(b+1):c+b-c*b,i=2*c-h;return this.rgba(255*g(a+1/3),255*g(a),255*g(a-1/3),f)},hsv:function(a,b,c){return this.hsva(a,b,c,1)},hsva:function(a,b,c,e){a=360*(d(a)%360/360),b=d(b),c=d(c),e=d(e);var f,g;f=Math.floor(a/60%6),g=a/60-f;var h=[c,c*(1-b),c*(1-g*b),c*(1-(1-g)*b)],i=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return this.rgba(255*h[i[f][0]],255*h[i[f][1]],255*h[i[f][2]],e)},hue:function(b){return new a.Dimension(Math.round(b.toHSL().h))},saturation:function(b){return new a.Dimension(Math.round(100*b.toHSL().s),"%")},lightness:function(b){return new a.Dimension(Math.round(100*b.toHSL().l),"%")},hsvhue:function(b){return new a.Dimension(Math.round(b.toHSV().h))},hsvsaturation:function(b){return new a.Dimension(Math.round(100*b.toHSV().s),"%")},hsvvalue:function(b){return new a.Dimension(Math.round(100*b.toHSV().v),"%")},red:function(b){return new a.Dimension(b.rgb[0])},green:function(b){return new a.Dimension(b.rgb[1])},blue:function(b){return new a.Dimension(b.rgb[2])},alpha:function(b){return new a.Dimension(b.toHSL().a)},luma:function(b){return new a.Dimension(Math.round(100*b.luma()*b.alpha),"%")},saturate:function(a,c){if(!a.rgb)return null;var d=a.toHSL();return d.s+=c.value/100,d.s=e(d.s),b(d)},desaturate:function(a,c){var d=a.toHSL();return d.s-=c.value/100,d.s=e(d.s),b(d)},lighten:function(a,c){var d=a.toHSL();return d.l+=c.value/100,d.l=e(d.l),b(d)},darken:function(a,c){var d=a.toHSL();return d.l-=c.value/100,d.l=e(d.l),b(d)},fadein:function(a,c){var d=a.toHSL();return d.a+=c.value/100,d.a=e(d.a),b(d)},fadeout:function(a,c){var d=a.toHSL();return d.a-=c.value/100,d.a=e(d.a),b(d)},fade:function(a,c){var d=a.toHSL();return d.a=c.value/100,d.a=e(d.a),b(d)},spin:function(a,c){var d=a.toHSL(),e=(d.h+c.value)%360;return d.h=0>e?360+e:e,b(d)},mix:function(b,c,d){d||(d=new a.Dimension(50));var e=d.value/100,f=2*e-1,g=b.toHSL().a-c.toHSL().a,h=((-1==f*g?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[b.rgb[0]*h+c.rgb[0]*i,b.rgb[1]*h+c.rgb[1]*i,b.rgb[2]*h+c.rgb[2]*i],k=b.alpha*e+c.alpha*(1-e);return new a.Color(j,k)},greyscale:function(b){return this.desaturate(b,new a.Dimension(100))},contrast:function(a,b,c,e){if(!a.rgb)return null;if("undefined"==typeof c&&(c=this.rgba(255,255,255,1)),"undefined"==typeof b&&(b=this.rgba(0,0,0,1)),b.luma()>c.luma()){var f=c;c=b,b=f}return e="undefined"==typeof e?.43:d(e),a.luma()*a.alphah.value)&&(j[e]=f)):(k[i]=j.length,j.push(f))):j.push(f);return 1==j.length?j[0]:(c=j.map(function(a){return a.toCSS(this.env)}).join(this.env.compress?",":", "),new a.Anonymous((b?"min":"max")+"("+c+")"))},min:function(){return this._minmax(!0,arguments)},max:function(){return this._minmax(!1,arguments)},argb:function(b){return new a.Anonymous(b.toARGB())},percentage:function(b){return new a.Dimension(100*b.value,"%")},color:function(b){if(b instanceof a.Quoted){var c,d=b.value;if(c=a.Color.fromKeyword(d))return c;if(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/.test(d))return new a.Color(d.slice(1));throw{type:"Argument",message:"argument must be a color keyword or 3/6 digit hex e.g. #FFF"}}throw{type:"Argument",message:"argument must be a string"}},iscolor:function(b){return this._isa(b,a.Color)},isnumber:function(b){return this._isa(b,a.Dimension)},isstring:function(b){return this._isa(b,a.Quoted)},iskeyword:function(b){return this._isa(b,a.Keyword)},isurl:function(b){return this._isa(b,a.URL) -},ispixel:function(a){return this.isunit(a,"px")},ispercentage:function(a){return this.isunit(a,"%")},isem:function(a){return this.isunit(a,"em")},isunit:function(b,c){return b instanceof a.Dimension&&b.unit.is(c.value||c)?a.True:a.False},_isa:function(b,c){return b instanceof c?a.True:a.False},multiply:function(a,b){var c=a.rgb[0]*b.rgb[0]/255,d=a.rgb[1]*b.rgb[1]/255,e=a.rgb[2]*b.rgb[2]/255;return this.rgb(c,d,e)},screen:function(a,b){var c=255-(255-a.rgb[0])*(255-b.rgb[0])/255,d=255-(255-a.rgb[1])*(255-b.rgb[1])/255,e=255-(255-a.rgb[2])*(255-b.rgb[2])/255;return this.rgb(c,d,e)},overlay:function(a,b){var c=a.rgb[0]<128?2*a.rgb[0]*b.rgb[0]/255:255-2*(255-a.rgb[0])*(255-b.rgb[0])/255,d=a.rgb[1]<128?2*a.rgb[1]*b.rgb[1]/255:255-2*(255-a.rgb[1])*(255-b.rgb[1])/255,e=a.rgb[2]<128?2*a.rgb[2]*b.rgb[2]/255:255-2*(255-a.rgb[2])*(255-b.rgb[2])/255;return this.rgb(c,d,e)},softlight:function(a,b){var c=b.rgb[0]*a.rgb[0]/255,d=c+a.rgb[0]*(255-(255-a.rgb[0])*(255-b.rgb[0])/255-c)/255;c=b.rgb[1]*a.rgb[1]/255;var e=c+a.rgb[1]*(255-(255-a.rgb[1])*(255-b.rgb[1])/255-c)/255;c=b.rgb[2]*a.rgb[2]/255;var f=c+a.rgb[2]*(255-(255-a.rgb[2])*(255-b.rgb[2])/255-c)/255;return this.rgb(d,e,f)},hardlight:function(a,b){var c=b.rgb[0]<128?2*b.rgb[0]*a.rgb[0]/255:255-2*(255-b.rgb[0])*(255-a.rgb[0])/255,d=b.rgb[1]<128?2*b.rgb[1]*a.rgb[1]/255:255-2*(255-b.rgb[1])*(255-a.rgb[1])/255,e=b.rgb[2]<128?2*b.rgb[2]*a.rgb[2]/255:255-2*(255-b.rgb[2])*(255-a.rgb[2])/255;return this.rgb(c,d,e)},difference:function(a,b){var c=Math.abs(a.rgb[0]-b.rgb[0]),d=Math.abs(a.rgb[1]-b.rgb[1]),e=Math.abs(a.rgb[2]-b.rgb[2]);return this.rgb(c,d,e)},exclusion:function(a,b){var c=a.rgb[0]+b.rgb[0]*(255-a.rgb[0]-a.rgb[0])/255,d=a.rgb[1]+b.rgb[1]*(255-a.rgb[1]-a.rgb[1])/255,e=a.rgb[2]+b.rgb[2]*(255-a.rgb[2]-a.rgb[2])/255;return this.rgb(c,d,e)},average:function(a,b){var c=(a.rgb[0]+b.rgb[0])/2,d=(a.rgb[1]+b.rgb[1])/2,e=(a.rgb[2]+b.rgb[2])/2;return this.rgb(c,d,e)},negation:function(a,b){var c=255-Math.abs(255-b.rgb[0]-a.rgb[0]),d=255-Math.abs(255-b.rgb[1]-a.rgb[1]),e=255-Math.abs(255-b.rgb[2]-a.rgb[2]);return this.rgb(c,d,e)},tint:function(a,b){return this.mix(this.rgb(255,255,255),a,b)},shade:function(a,b){return this.mix(this.rgb(0,0,0),a,b)},extract:function(a,b){return b=b.value-1,Array.isArray(a.value)?a.value[b]:Array(a)[b]},length:function(b){var c=Array.isArray(b.value)?b.value.length:1;return new a.Dimension(c)},"data-uri":function(b,c){if("undefined"!=typeof window)return new a.URL(c||b,this.currentFileInfo).eval(this.env);var d=b.value,e=c&&c.value,f=require("fs"),g=require("path"),h=!1;if(arguments.length<2&&(e=d),this.env.isPathRelative(e)&&(e=this.currentFileInfo.relativeUrls?g.join(this.currentFileInfo.currentDirectory,e):g.join(this.currentFileInfo.entryPath,e)),arguments.length<2){var i;try{i=require("mime")}catch(j){i=a._mime}d=i.lookup(e);var k=i.charsets.lookup(d);h=["US-ASCII","UTF-8"].indexOf(k)<0,h&&(d+=";base64")}else h=/;base64$/.test(d);var l=f.readFileSync(e),m=32,n=parseInt(l.length/1024,10);if(n>=m&&this.env.ieCompat!==!1)return this.env.silent||console.warn("Skipped data-uri embedding of %s because its size (%dKB) exceeds IE8-safe %dKB!",e,n,m),new a.URL(c||b,this.currentFileInfo).eval(this.env);l=h?l.toString("base64"):encodeURIComponent(l);var o="'data:"+d+","+l+"'";return new a.URL(new a.Anonymous(o))},"svg-gradient":function(b){function c(){throw{type:"Argument",message:"svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position]"}}arguments.length<3&&c();var d,e,f,g,h,i,j,k=Array.prototype.slice.call(arguments,1),l="linear",m='x="0" y="0" width="1" height="1"',n=!0,o={compress:!1},p=b.toCSS(o);switch(p){case"to bottom":d='x1="0%" y1="0%" x2="0%" y2="100%"';break;case"to right":d='x1="0%" y1="0%" x2="100%" y2="0%"';break;case"to bottom right":d='x1="0%" y1="0%" x2="100%" y2="100%"';break;case"to top right":d='x1="0%" y1="100%" x2="100%" y2="0%"';break;case"ellipse":case"ellipse at center":l="radial",d='cx="50%" cy="50%" r="75%"',m='x="-50" y="-50" width="101" height="101"';break;default:throw{type:"Argument",message:"svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"}}for(e='<'+l+'Gradient id="gradient" gradientUnits="userSpaceOnUse" '+d+">",f=0;fj?' stop-opacity="'+j+'"':"")+"/>";if(e+=""+"',n)try{e=new Buffer(e).toString("base64")}catch(q){n=!1}return e="'data:image/svg+xml"+(n?";base64":"")+","+e+"'",new a.URL(new a.Anonymous(e))}},a._mime={_types:{".htm":"text/html",".html":"text/html",".gif":"image/gif",".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png"},lookup:function(b){var c=require("path").extname(b),d=a._mime._types[c];if(void 0===d)throw new Error('Optional dependency "mime" is required for '+c);return d},charsets:{lookup:function(a){return a&&/^text\//.test(a)?"UTF-8":""}}};for(var f=[{name:"ceil"},{name:"floor"},{name:"sqrt"},{name:"abs"},{name:"tan",unit:""},{name:"sin",unit:""},{name:"cos",unit:""},{name:"atan",unit:"rad"},{name:"asin",unit:"rad"},{name:"acos",unit:"rad"}],g=function(a,b){return function(c){return null!=b&&(c=c.unify()),this._math(Math[a],b,c)}},h=0;h1?"["+a.value.map(function(a){return a.toCSS(!1)}).join(", ")+"]":a.toCSS(!1)},a.toCSS=function(a){var b=[];return this.genCSS(a,{add:function(a){b.push(a)},isEmpty:function(){return 0===b.length}}),b.join("")},a.outputRuleset=function(a,b,c){b.add(a.compress?"{":" {\n"),a.tabLevel=(a.tabLevel||0)+1;for(var d=a.compress?"":Array(a.tabLevel+1).join(" "),e=a.compress?"":Array(a.tabLevel).join(" "),f=0;fb?-1:1},genCSS:function(a,b){b.add(this.value,this.currentFileInfo,this.index,this.mapLines)},toCSS:a.toCSS}}(require("../tree")),function(a){a.Assignment=function(a,b){this.key=a,this.value=b},a.Assignment.prototype={type:"Assignment",accept:function(a){this.value=a.visit(this.value)},eval:function(b){return this.value.eval?new a.Assignment(this.key,this.value.eval(b)):this},genCSS:function(a,b){b.add(this.key+"="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value)},toCSS:a.toCSS}}(require("../tree")),function(a){a.Call=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.currentFileInfo=d},a.Call.prototype={type:"Call",accept:function(a){this.args=a.visit(this.args)},eval:function(b){var c,d,e=this.args.map(function(a){return a.eval(b)}),f=this.name.toLowerCase();if(f in a.functions)try{if(d=new a.functionCall(b,this.currentFileInfo),c=d[f].apply(d,e),null!=c)return c}catch(g){throw{type:g.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(g.message?": "+g.message:""),index:this.index,filename:this.currentFileInfo.filename}}return new a.Call(this.name,e,this.index,this.currentFileInfo)},genCSS:function(a,b){b.add(this.name+"(",this.currentFileInfo,this.index);for(var c=0;cf;f++)e[f]=a.operate(b,c,this.rgb[f],d.rgb[f]);return new a.Color(e,this.alpha+d.alpha)},toRGB:function(){return"#"+this.rgb.map(function(a){return a=Math.round(a),a=(a>255?255:0>a?0:a).toString(16),1===a.length?"0"+a:a}).join("")},toHSL:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=(g+h)/2,j=g-h;if(g===h)a=b=0;else{switch(b=i>.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,l:i,a:f}},toHSV:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=0;else{switch(g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,v:i,a:f}},toARGB:function(){var a=[Math.round(255*this.alpha)].concat(this.rgb);return"#"+a.map(function(a){return a=Math.round(a),a=(a>255?255:0>a?0:a).toString(16),1===a.length?"0"+a:a}).join("")},compare:function(a){return a.rgb?a.rgb[0]===this.rgb[0]&&a.rgb[1]===this.rgb[1]&&a.rgb[2]===this.rgb[2]&&a.alpha===this.alpha?0:-1:-1}},a.Color.fromKeyword=function(c){if(a.colors.hasOwnProperty(c))return new a.Color(a.colors[c].slice(1));if(c===b){var d=new a.Color([0,0,0],0);return d.isTransparentKeyword=!0,d}}}(require("../tree")),function(a){a.Comment=function(a,b,c,d){this.value=a,this.silent=!!b,this.currentFileInfo=d},a.Comment.prototype={type:"Comment",genCSS:function(b,c){this.debugInfo&&c.add(a.debugInfo(b,this),this.currentFileInfo,this.index),c.add(this.value.trim())},toCSS:a.toCSS,isSilent:function(a){var b=this.currentFileInfo&&this.currentFileInfo.reference&&!this.isReferenced,c=a.compress&&!this.value.match(/^\/\*!/);return this.silent||b||c},eval:function(){return this},markReferenced:function(){this.isReferenced=!0}}}(require("../tree")),function(a){a.Condition=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e},a.Condition.prototype={type:"Condition",accept:function(a){this.lvalue=a.visit(this.lvalue),this.rvalue=a.visit(this.rvalue)},eval:function(a){var b,c=this.lvalue.eval(a),d=this.rvalue.eval(a),e=this.index;return b=function(a){switch(a){case"and":return c&&d;case"or":return c||d;default:if(c.compare)b=c.compare(d);else{if(!d.compare)throw{type:"Type",message:"Unable to perform comparison",index:e};b=d.compare(c)}switch(b){case-1:return"<"===a||"=<"===a||"<="===a;case 0:return"="===a||">="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a}}}(this.op),this.negate?!b:b}}}(require("../tree")),function(a){a.Dimension=function(b,c){this.value=parseFloat(b),this.unit=c&&c instanceof a.Unit?c:new a.Unit(c?[c]:void 0)},a.Dimension.prototype={type:"Dimension",accept:function(a){this.unit=a.visit(this.unit)},eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},genCSS:function(a,b){if(a&&a.strictUnits&&!this.unit.isSingular())throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());var c=this.value,d=String(c);if(0!==c&&1e-6>c&&c>-1e-6&&(d=c.toFixed(20).replace(/0+$/,"")),a&&a.compress){if(0===c&&this.unit.isLength())return b.add(d),void 0;c>0&&1>c&&(d=d.substr(1))}b.add(d),this.unit.genCSS(a,b)},toCSS:a.toCSS,operate:function(b,c,d){var e=a.operate(b,c,this.value,d.value),f=this.unit.clone();if("+"===c||"-"===c)if(0===f.numerator.length&&0===f.denominator.length)f.numerator=d.unit.numerator.slice(0),f.denominator=d.unit.denominator.slice(0);else if(0===d.unit.numerator.length&&0===f.denominator.length);else{if(d=d.convertTo(this.unit.usedUnits()),b.strictUnits&&d.unit.toString()!==f.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+f.toString()+"' and '"+d.unit.toString()+"'.");e=a.operate(b,c,this.value,d.value)}else"*"===c?(f.numerator=f.numerator.concat(d.unit.numerator).sort(),f.denominator=f.denominator.concat(d.unit.denominator).sort(),f.cancel()):"/"===c&&(f.numerator=f.numerator.concat(d.unit.denominator).sort(),f.denominator=f.denominator.concat(d.unit.numerator).sort(),f.cancel());return new a.Dimension(e,f)},compare:function(b){if(b instanceof a.Dimension){var c=this.unify(),d=b.unify(),e=c.value,f=d.value;return f>e?-1:e>f?1:d.unit.isEmpty()||0===c.unit.compare(d.unit)?0:-1}return-1},unify:function(){return this.convertTo({length:"m",duration:"s",angle:"rad"})},convertTo:function(b){var c,d,e,f,g,h=this.value,i=this.unit.clone(),j={};if("string"==typeof b){for(c in a.UnitConversions)a.UnitConversions[c].hasOwnProperty(b)&&(j={},j[c]=b);b=j}g=function(a,b){return e.hasOwnProperty(a)?(b?h/=e[a]/e[f]:h*=e[a]/e[f],f):a};for(d in b)b.hasOwnProperty(d)&&(f=b[d],e=a.UnitConversions[d],i.map(g));return i.cancel(),new a.Dimension(h,i)}},a.UnitConversions={length:{m:1,cm:.01,mm:.001,"in":.0254,pt:.0254/72,pc:12*(.0254/72)},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:.0025,turn:1}},a.Unit=function(a,b,c){this.numerator=a?a.slice(0).sort():[],this.denominator=b?b.slice(0).sort():[],this.backupUnit=c},a.Unit.prototype={type:"Unit",clone:function(){return new a.Unit(this.numerator.slice(0),this.denominator.slice(0),this.backupUnit)},genCSS:function(a,b){this.numerator.length>=1?b.add(this.numerator[0]):this.denominator.length>=1?b.add(this.denominator[0]):a&&a.strictUnits||!this.backupUnit||b.add(this.backupUnit)},toCSS:a.toCSS,toString:function(){var a,b=this.numerator.join("*");for(a=0;a0)for(b=0;e>b;b++)this.numerator.push(a);else if(0>e)for(b=0;-e>b;b++)this.denominator.push(a)}0===this.numerator.length&&0===this.denominator.length&&c&&(this.backupUnit=c),this.numerator.sort(),this.denominator.sort()}}}(require("../tree")),function(a){a.Directive=function(b,c,d,e){this.name=b,Array.isArray(c)?(this.rules=[new a.Ruleset([],c)],this.rules[0].allowImports=!0):this.value=c,this.currentFileInfo=e},a.Directive.prototype={type:"Directive",accept:function(a){this.rules=a.visit(this.rules),this.value=a.visit(this.value)},genCSS:function(b,c){c.add(this.name,this.currentFileInfo,this.index),this.rules?a.outputRuleset(b,c,this.rules):(c.add(" "),this.value.genCSS(b,c),c.add(";"))},toCSS:a.toCSS,eval:function(b){var c=this;return this.rules&&(b.frames.unshift(this),c=new a.Directive(this.name,null,this.index,this.currentFileInfo),c.rules=[this.rules[0].eval(b)],c.rules[0].root=!0,b.frames.shift()),c},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},markReferenced:function(){var a,b;if(this.isReferenced=!0,this.rules)for(b=this.rules[0].rules,a=0;a":" > ","|":"|"},_outputMapCompressed:{"":""," ":" ",":":" :","+":"+","~":"~",">":">","|":"|"},genCSS:function(a,b){b.add((a.compress?this._outputMapCompressed:this._outputMap)[this.value])},toCSS:a.toCSS}}(require("../tree")),function(a){a.Expression=function(a){this.value=a},a.Expression.prototype={type:"Expression",accept:function(a){this.value=a.visit(this.value)},eval:function(b){var c,d=this.parens&&!this.parensInOp,e=!1;return d&&b.inParenthesis(),this.value.length>1?c=new a.Expression(this.value.map(function(a){return a.eval(b)})):1===this.value.length?(this.value[0].parens&&!this.value[0].parensInOp&&(e=!0),c=this.value[0].eval(b)):c=this,d&&b.outOfParenthesis(),this.parens&&this.parensInOp&&!b.isMathOn()&&!e&&(c=new a.Paren(c)),c},genCSS:function(a,b){for(var c=0;c0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[{elements:d}]}}}(require("../tree")),function(a){a.Import=function(a,b,c,d,e){if(this.options=c,this.index=d,this.path=a,this.features=b,this.currentFileInfo=e,void 0!==this.options.less||this.options.inline)this.css=!this.options.less||this.options.inline;else{var f=this.getPath();f&&/css([\?;].*)?$/.test(f)&&(this.css=!0)}},a.Import.prototype={type:"Import",accept:function(a){this.features=a.visit(this.features),this.path=a.visit(this.path),this.options.inline||(this.root=a.visit(this.root))},genCSS:function(a,b){this.css&&(b.add("@import ",this.currentFileInfo,this.index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},toCSS:a.toCSS,getPath:function(){if(this.path instanceof a.Quoted){var b=this.path.value;return void 0!==this.css||/(\.[a-z]*$)|([\?;].*)$/.test(b)?b:b+".less"}return this.path instanceof a.URL?this.path.value.value:null},evalForImport:function(b){return new a.Import(this.path.eval(b),this.features,this.options,this.index,this.currentFileInfo)},evalPath:function(b){var c=this.path.eval(b),d=this.currentFileInfo&&this.currentFileInfo.rootpath;if(!(c instanceof a.URL)){if(d){var e=c.value;e&&b.isPathRelative(e)&&(c.value=d+e)}c.value=b.normalizePath(c.value)}return c},eval:function(b){var c,d=this.features&&this.features.eval(b);if(this.skip)return[];if(this.options.inline){var e=new a.Anonymous(this.root,0,{filename:this.importedFilename},!0);return this.features?new a.Media([e],this.features.value):[e]}if(this.css){var f=new a.Import(this.evalPath(b),d,this.options,this.index);if(!f.css&&this.error)throw this.error;return f}return c=new a.Ruleset([],this.root.rules.slice(0)),c.evalImports(b),this.features?new a.Media(c.rules,this.features.value):c.rules}}}(require("../tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={type:"JavaScript",eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify(new a.Variable("@"+e,d.index).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+f+"`",index:this.index}}for(var h in b.frames[0].variables())e[h.slice(1)]={value:b.frames[0].variables()[h].value,toJS:function(){return this.value.eval(b).toCSS()}};try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message+"'",index:this.index}}return"string"==typeof c?new a.Quoted('"'+c+'"',c,this.escaped,this.index):Array.isArray(c)?new a.Anonymous(c.join(", ")):new a.Anonymous(c)}}}(require("../tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={type:"Keyword",eval:function(){return this},genCSS:function(a,b){b.add(this.value)},toCSS:a.toCSS,compare:function(b){return b instanceof a.Keyword?b.value===this.value?0:1:-1}},a.True=new a.Keyword("true"),a.False=new a.Keyword("false")}(require("../tree")),function(a){a.Media=function(b,c,d,e){this.index=d,this.currentFileInfo=e;var f=this.emptySelectors();this.features=new a.Value(c),this.rules=[new a.Ruleset(f,b)],this.rules[0].allowImports=!0},a.Media.prototype={type:"Media",accept:function(a){this.features=a.visit(this.features),this.rules=a.visit(this.rules)},genCSS:function(b,c){c.add("@media ",this.currentFileInfo,this.index),this.features.genCSS(b,c),a.outputRuleset(b,c,this.rules)},toCSS:a.toCSS,eval:function(b){b.mediaBlocks||(b.mediaBlocks=[],b.mediaPath=[]);var c=new a.Media([],[],this.index,this.currentFileInfo);this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,c.debugInfo=this.debugInfo);var d=!1;b.strictMath||(d=!0,b.strictMath=!0);try{c.features=this.features.eval(b)}finally{d&&(b.strictMath=!1)}return b.mediaPath.push(c),b.mediaBlocks.push(c),b.frames.unshift(this.rules[0]),c.rules=[this.rules[0].eval(b)],b.frames.shift(),b.mediaPath.pop(),0===b.mediaPath.length?c.evalTop(b):c.evalNested(b)},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},emptySelectors:function(){var b=new a.Element("","&",this.index,this.currentFileInfo);return[new a.Selector([b],null,null,this.index,this.currentFileInfo)]},markReferenced:function(){var a,b=this.rules[0].rules;for(this.isReferenced=!0,a=0;a1){var d=this.emptySelectors();c=new a.Ruleset(d,b.mediaBlocks),c.multiMedia=!0}return delete b.mediaBlocks,delete b.mediaPath,c},evalNested:function(b){var c,d,e=b.mediaPath.concat([this]);for(c=0;c0;c--)b.splice(c,0,new a.Anonymous("and"));return new a.Expression(b)})),new a.Ruleset([],[])},permute:function(a){if(0===a.length)return[];if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;d0){for(j=!0,g=0;gthis.params.length)return!1}c=Math.min(d,this.arity);for(var e=0;c>e;e++)if(!this.params[e].name&&!this.params[e].variadic&&a[e].value.eval(b).toCSS()!=this.params[e].value.eval(b).toCSS())return!1;return!0}}}(require("../tree")),function(a){a.Negative=function(a){this.value=a},a.Negative.prototype={type:"Negative",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("-"),this.value.genCSS(a,b)},toCSS:a.toCSS,eval:function(b){return b.isMathOn()?new a.Operation("*",[new a.Dimension(-1),this.value]).eval(b):new a.Negative(this.value.eval(b))}}}(require("../tree")),function(a){a.Operation=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c},a.Operation.prototype={type:"Operation",accept:function(a){this.operands=a.visit(this.operands)},eval:function(b){var c,d=this.operands[0].eval(b),e=this.operands[1].eval(b);if(b.isMathOn()){if(d instanceof a.Dimension&&e instanceof a.Color){if("*"!==this.op&&"+"!==this.op)throw{type:"Operation",message:"Can't substract or divide a color from a number"};c=e,e=d,d=c}if(!d.operate)throw{type:"Operation",message:"Operation on an invalid type"};return d.operate(b,this.op,e)}return new a.Operation(this.op,[d,e],this.isSpaced)},genCSS:function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},toCSS:a.toCSS},a.operate=function(a,b,c,d){switch(b){case"+":return c+d;case"-":return c-d;case"*":return c*d;case"/":return c/d}}}(require("../tree")),function(a){a.Paren=function(a){this.value=a},a.Paren.prototype={type:"Paren",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},toCSS:a.toCSS,eval:function(b){return new a.Paren(this.value.eval(b))}}}(require("../tree")),function(a){a.Quoted=function(a,b,c,d,e){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d,this.currentFileInfo=e},a.Quoted.prototype={type:"Quoted",genCSS:function(a,b){this.escaped||b.add(this.quote,this.currentFileInfo,this.index),b.add(this.value),this.escaped||b.add(this.quote)},toCSS:a.toCSS,eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return new a.JavaScript(e,c.index,!0).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=new a.Variable("@"+e,c.index,c.currentFileInfo).eval(b,!0);return f instanceof a.Quoted?f.value:f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index,this.currentFileInfo)},compare:function(a){if(!a.toCSS)return-1;var b=this.toCSS(),c=a.toCSS();return b===c?0:c>b?-1:1}}}(require("../tree")),function(a){a.Rule=function(b,c,d,e,f,g,h){this.name=b,this.value=c instanceof a.Value?c:new a.Value([c]),this.important=d?" "+d.trim():"",this.merge=e,this.index=f,this.currentFileInfo=g,this.inline=h||!1,this.variable="@"===b.charAt(0)},a.Rule.prototype={type:"Rule",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add(this.name+(a.compress?":":": "),this.currentFileInfo,this.index);try{this.value.genCSS(a,b)}catch(c){throw c.index=this.index,c.filename=this.currentFileInfo.filename,c}b.add(this.important+(this.inline||a.lastRule&&a.compress?"":";"),this.currentFileInfo,this.index)},toCSS:a.toCSS,eval:function(b){var c=!1;"font"!==this.name||b.strictMath||(c=!0,b.strictMath=!0);try{return new a.Rule(this.name,this.value.eval(b),this.important,this.merge,this.index,this.currentFileInfo,this.inline)}finally{c&&(b.strictMath=!1)}},makeImportant:function(){return new a.Rule(this.name,this.value,"!important",this.merge,this.index,this.currentFileInfo,this.inline)}}}(require("../tree")),function(a){a.Ruleset=function(a,b,c){this.selectors=a,this.rules=b,this._lookups={},this.strictImports=c},a.Ruleset.prototype={type:"Ruleset",accept:function(a){if(this.paths)for(var b=0;bf.selectors[g].elements.length?Array.prototype.push.apply(e,f.find(new a.Selector(b.elements.slice(1)),c)):e.push(f);break}}),this._lookups[f]=e)},genCSS:function(b,c){var d,e,f,g,h,i=[],j=[],k=!0;b.tabLevel=b.tabLevel||0,this.root||b.tabLevel++;var l=b.compress?"":Array(b.tabLevel+1).join(" "),m=b.compress?"":Array(b.tabLevel).join(" ");for(d=0;d0&&this.mergeElementsOnToSelectors(r,i),f=0;f0&&(k[0].elements=k[0].elements.slice(0),k[0].elements.push(new a.Element(j.combinator,"",0,j.index,j.currentFileInfo))),s.push(k);else for(g=0;g0?(m=k.slice(0),q=m.pop(),o=d.createDerived(q.elements.slice(0)),p=!1):o=d.createDerived([]),l.length>1&&(n=n.concat(l.slice(1))),l.length>0&&(p=!1,o.elements.push(new a.Element(j.combinator,l[0].elements[0].value,j.index,j.currentFileInfo)),o.elements=o.elements.concat(l[0].elements.slice(1))),p||m.push(o),m=m.concat(n),s.push(m);i=s,r=[]}for(r.length>0&&this.mergeElementsOnToSelectors(r,i),e=0;e0&&b.push(i[e])}else if(c.length>0)for(e=0;e0?e[e.length-1]=e[e.length-1].createDerived(e[e.length-1].elements.concat(b)):e.push(new a.Selector(b))}}}(require("../tree")),function(a){a.Selector=function(a,b,c,d,e,f){this.elements=a,this.extendList=b||[],this.condition=c,this.currentFileInfo=e||{},this.isReferenced=f,c||(this.evaldCondition=!0)},a.Selector.prototype={type:"Selector",accept:function(a){this.elements=a.visit(this.elements),this.extendList=a.visit(this.extendList),this.condition=a.visit(this.condition)},createDerived:function(b,c,d){d=null!=d?d:this.evaldCondition;var e=new a.Selector(b,c||this.extendList,this.condition,this.index,this.currentFileInfo,this.isReferenced);return e.evaldCondition=d,e},match:function(a){var b,c,d,e,f=this.elements,g=f.length;if(b=a.elements.slice(a.elements.length&&"&"===a.elements[0].value?1:0),c=b.length,d=Math.min(g,c),0===c||c>g)return!1;for(e=0;d>e;e++)if(f[e].value!==b[e].value)return!1;return!0},eval:function(a){var b=this.condition&&this.condition.eval(a);return this.createDerived(this.elements.map(function(b){return b.eval(a)}),this.extendList.map(function(b){return b.eval(a)}),b)},genCSS:function(a,b){var c,d;if(a&&a.firstSelector||""!==this.elements[0].combinator.value||b.add(" ",this.currentFileInfo,this.index),!this._css)for(c=0;c0)&&e.splice(0,0,b);else{b.paths=b.paths.filter(function(b){var c;for(" "===b[0].elements[0].combinator.value&&(b[0].elements[0].combinator=new a.Combinator("")),c=0;c0&&b.accept(this._visitor),c.visitDeeper=!1,this._mergeRules(b.rules),this._removeDuplicateRules(b.rules),b.rules.length>0&&b.paths.length>0&&e.splice(0,0,b)}return 1===e.length?e[0]:e},_removeDuplicateRules:function(b){var c,d,e,f={};for(e=b.length-1;e>=0;e--)if(d=b[e],d instanceof a.Rule)if(f[d.name]){c=f[d.name],c instanceof a.Rule&&(c=f[d.name]=[f[d.name].toCSS(this._env)]);var g=d.toCSS(this._env);-1!==c.indexOf(g)?b.splice(e,1):c.push(g)}else f[d.name]=d},_mergeRules:function(b){for(var c,d,e,f={},g=0;g1&&(d=c[0],d.value=new a.Value(c.map(function(a){return a.value})))})}}}(require("./tree")),function(a){a.extendFinderVisitor=function(){this._visitor=new a.visitor(this),this.contexts=[],this.allExtendsStack=[[]]},a.extendFinderVisitor.prototype={run:function(a){return a=this._visitor.visit(a),a.allExtends=this.allExtendsStack[0],a},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(b){if(!b.root){var c,d,e,f,g=[];for(c=0;c100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,c,d+1))}return m},inInheritanceChain:function(a,b){if(a===b)return!0;if(b.parents){if(this.inInheritanceChain(a,b.parents[0]))return!0;if(this.inInheritanceChain(a,b.parents[1]))return!0}return!1},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a){if(!a.root){var b,c,d,e,f=this.allExtendsStack[this.allExtendsStack.length-1],g=[],h=this;for(d=0;d0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(e+1j&&k>0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),k=0,j++),i=f.elements.slice(k,h.index).concat([g]).concat(d.elements.slice(1)),j===h.pathIndex&&e>0?l[l.length-1].elements=l[l.length-1].elements.concat(i):(l=l.concat(c.slice(j,h.pathIndex)),l.push(new a.Selector(i))),j=h.endPathIndex,k=h.endPathElementIndex,k>=c[j].elements.length&&(k=0,j++);return j0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),j++),l=l.concat(c.slice(j,c.length))},visitRulesetOut:function(){},visitMedia:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitMediaOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1},visitDirective:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitDirectiveOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1}}}(require("./tree")),function(a){a.sourceMapOutput=function(a){this._css=[],this._rootNode=a.rootNode,this._writeSourceMap=a.writeSourceMap,this._contentsMap=a.contentsMap,this._sourceMapFilename=a.sourceMapFilename,this._outputFilename=a.outputFilename,this._sourceMapBasepath=a.sourceMapBasepath,this._sourceMapRootpath=a.sourceMapRootpath,this._outputSourceFiles=a.outputSourceFiles,this._sourceMapGeneratorConstructor=a.sourceMapGenerator||require("source-map").SourceMapGenerator,this._sourceMapRootpath&&"/"!==this._sourceMapRootpath.charAt(this._sourceMapRootpath.length-1)&&(this._sourceMapRootpath+="/"),this._lineNumber=0,this._column=0},a.sourceMapOutput.prototype.normalizeFilename=function(a){return this._sourceMapBasepath&&0===a.indexOf(this._sourceMapBasepath)&&(a=a.substring(this._sourceMapBasepath.length),("\\"===a.charAt(0)||"/"===a.charAt(0))&&(a=a.substring(1))),(this._sourceMapRootpath||"")+a.replace(/\\/g,"/")},a.sourceMapOutput.prototype.add=function(a,b,c,d){if(a){var e,f,g,h,i;if(b){var j=this._contentsMap[b.filename].substring(0,c);f=j.split("\n"),h=f[f.length-1]}if(e=a.split("\n"),g=e[e.length-1],b)if(d)for(i=0;i0){var c,d=JSON.stringify(this._sourceMapGenerator.toJSON());this._sourceMapFilename&&(c=this.normalizeFilename(this._sourceMapFilename)),this._writeSourceMap?this._writeSourceMap(d):c="data:application/json,"+encodeURIComponent(d),c&&this._css.push("/*# sourceMappingURL="+c+" */")}return this._css.join("")}}(require("./tree"));var isFileProtocol=/^(file|chrome(-extension)?|resource|qrc|app):/.test(location.protocol);less.env=less.env||("127.0.0.1"==location.hostname||"0.0.0.0"==location.hostname||"localhost"==location.hostname||location.port.length>0||isFileProtocol?"development":"production");var logLevel={info:2,errors:1,none:0};if(less.logLevel="undefined"!=typeof less.logLevel?less.logLevel:logLevel.info,less.async=less.async||!1,less.fileAsync=less.fileAsync||!1,less.poll=less.poll||(isFileProtocol?1e3:1500),less.functions)for(var func in less.functions)less.tree.functions[func]=less.functions[func];var dumpLineNumbers=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);dumpLineNumbers&&(less.dumpLineNumbers=dumpLineNumbers[1]);var typePattern=/^text\/(x-)?less$/,cache=null,fileCache={};if(less.watch=function(){return less.watchMode||(less.env="development",initRunningMode()),this.watchMode=!0},less.unwatch=function(){return clearInterval(less.watchTimer),this.watchMode=!1},/!watch/.test(location.hash)&&less.watch(),"development"!=less.env)try{cache="undefined"==typeof window.localStorage?null:window.localStorage}catch(_){}var links=document.getElementsByTagName("link");less.sheets=[];for(var i=0;i 1) t -= 1; - if(t < 1/6) return p + (q - p) * 6 * t; - if(t < 1/2) return q; - if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; - return p; - }; - var q = l < 0.5 ? l * (1 + s) : l + s - l * s, - p = 2 * l - q; - r = hueToRGB(p, q, h + 1/3); - g = hueToRGB(p, q, h); - b = hueToRGB(p, q, h - 1/3); - } - return { - red: Math.round(r * 255), - green: Math.round(g * 255), - blue: Math.round(b * 255) - }; - } - -//---------------------- Convert RGB to HSL - -// Source: http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c - - function RGBToHSL(r, g, b) { - r /= 255, - g /= 255, - b /= 255; - var max = Math.max(r, g, b), - min = Math.min(r, g, b); - var h, s, l = (max + min) / 2; - if (max == min) { - h = s = 0; // Achromatic - } else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - 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; - } - h /= 6; - } - return { - hue: Math.round(h * 360), - saturation: Math.round(s * 100), - luminosity: Math.round(l * 100) - }; - } - -//---------------------- Convert RGB to Hex - -// Source: http://stackoverflow.com/a/5624139 - - function RGBToHex(r, g, b) { - return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); - } - -//---------------------- Convert hex to RGB - -// Source: http://stackoverflow.com/a/11508164 - - function hexToRGB(hex) { - var bigInt = parseInt(hex.replace('#', ''), 16), - r = (bigInt >> 16) & 255, - g = (bigInt >> 8) & 255, - b = bigInt & 255; - return { - red: r, - green: g, - blue: b - }; - } - -//---------------------- Convert hex to HSL - - function hexToHSL(hex) { - var RGB = hexToRGB(hex); - return RGBToHSL(RGB.red, RGB.green, RGB.blue); - } - -//---------------------- Convert HSL to hex - - function HSLToHex(h, s, l) { - var RGB = HSLToRGB(h, s, l); - return RGBToHex(RGB.red, RGB.green, RGB.blue); - } - -//-------------------------------------------- Setup each color picker - - $.each($('.color-picker'), function() { - -//---------------------- Find componenets - - var picker = $(this), - formatInput = picker.find('.format'), - colorInput = picker.find('.color'), - luminosityInput = picker.find('input[type=range]'), - spectrum = picker.find('.spectrum'), - pin = picker.find('.pin'); - -//---------------------- Get current color in HSL - - function getHSL() { - var position = picker.find('.pin').position(), - width = spectrum.width(), - height = spectrum.height(); - return { - hue: Math.round(position.left / width * 360), - saturation: Math.round(position.top / height * 100), - luminosity: luminosityInput.val() - }; - } - -//---------------------- Output color in desired format - - function updateColorInput() { - var HSL = getHSL(); - switch (formatInput.val()) { - case 'HSL': - colorInput.val('hsl(' + HSL.hue + ', ' + HSL.saturation + '%, ' + HSL.luminosity + '%)'); - break; - case 'RGB': - var RGB = HSLToRGB(HSL.hue, HSL.saturation, HSL.luminosity); - colorInput.val('rgb(' + RGB.red + ', ' + RGB.green + ', ' + RGB.blue + ')'); - break; - case 'Hex': - colorInput.val(HSLToHex(HSL.hue, HSL.saturation, HSL.luminosity)); - break; - } - // Trigger color picker change event for custom callbacks - picker.trigger('change'); - } - -//---------------------- Set color format - - formatInput.on('change', function() { - updateColorInput(); - }); - -//---------------------- Set color - - colorInput.on('change', function() { - // Get the color values in HSL format - var HSL; - switch (formatInput.val()) { - case 'HSL': - var values = $(this).val().match(/\d+/g); - HSL = { - hue: values[0], - saturation: values[1], - luminosity: values[2] - }; - break; - case 'RGB': - var values = $(this).val().match(/\d+/g); - HSL = RGBToHSL(values[0], values[1], values[2]); - break; - case 'Hex': - HSL = hexToHSL($(this).val()); - break; - } - // Set the luminosity - luminosityInput.val(HSL.luminosity); - setLuminosity(HSL.luminosity); - // Place the pin - pin.css({ - left: HSL.hue / 360 * 100 + '%', - top: HSL.saturation + '%' - }); - // Trigger color picker change event for custom callbacks - picker.trigger('change'); - }); - -//---------------------- Set luminosity - -//---------- Set the luminosity spectrum overlay - - function setLuminosity(luminosity) { - var color, - alpha; - if (luminosity <= 50) { - color = '0, 0, 0'; - alpha = 1 - luminosity / 100 * 2; - } else { - color = '255, 255, 255'; - alpha = luminosity / 100 * 2 - 1; - } - // Apply luminosity to the spectrum - spectrum.children().css('background-color', 'rgba(' + color + ', ' + alpha + ')'); - } - -//---------- Luminosity input interaction - - luminosityInput.on('change', function() { - setLuminosity($(this).val()); - updateColorInput(); - }); - -//---------------------- Set hue, saturation via pin - -//---------- Move the pin - - var movePin = function(event) { - var offset = spectrum.offset(), - width = spectrum.width(), - height = spectrum.height(), - x = event.changedTouches[0].clientX - offset.left, - y = event.changedTouches[0].clientY - offset.top; - // Account for pin being dragged outside the spectrum area - // Sanatize x - if (x < 0) { - x = 0; - } else if (x >= width) { - x = width; - } - // Sanatize y - if (y < 0) { - y = 0; - } else if (y >= height) { - y = height; - } - // Place the pin - pin.css({ - left: x / width * 100 + '%', - top: y / height * 100 + '%' - }); - // Output new color value - updateColorInput(); - }; - -//---------- Pin interaction - - spectrum.on('touchstart', function(event) { - event.preventDefault(); - movePin(event); - spectrum.addClass('active'); - $(document).on('touchmove', movePin); - }); - - $(document).on('touchend', function() { - spectrum.removeClass('active'); - $(document).off('touchmove', movePin); - }); - - spectrum.on('touchmove touchstart', movePin); - -//---------------------- Output color preview - - picker.on('change', function() { - colorInput.css('background-color', colorInput.val()).toggleClass('dark', luminosityInput.val() <= 50); - }); - -//---------------------- Initialize this color picker - - colorInput.trigger('change'); - - }); -}); diff --git a/Web/js/libs/color-picker.js b/Web/js/libs/color-picker.js deleted file mode 100755 index 7c211f9..0000000 --- a/Web/js/libs/color-picker.js +++ /dev/null @@ -1,289 +0,0 @@ -/* - -Purty Picker Copyright 2013 Jayden Seric (MIT license). - -A super lightweight visual HSL, RGB and hex color picker with a responsive, touch-friendly and customizable UI. - -Requires jQuery or Zepto with core and event modules. - -https://github.com/jaydenseric/Purty-Picker - -*/ - -// DOM ready -$(function() { - 'use strict'; - -//-------------------------------------------- Color conversions - -//---------------------- Convert HSL to RGB - -// Source: http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c - - function HSLToRGB(h, s, l) { - h /= 360; - s /= 100; - l /= 100; - var r, g, b; - if(s == 0) { - r = g = b = l; // Achromatic - } else { - var hueToRGB = function(p, q, t) { - if(t < 0) t += 1; - if(t > 1) t -= 1; - if(t < 1/6) return p + (q - p) * 6 * t; - if(t < 1/2) return q; - if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; - return p; - }; - var q = l < 0.5 ? l * (1 + s) : l + s - l * s, - p = 2 * l - q; - r = hueToRGB(p, q, h + 1/3); - g = hueToRGB(p, q, h); - b = hueToRGB(p, q, h - 1/3); - } - return { - red: Math.round(r * 255), - green: Math.round(g * 255), - blue: Math.round(b * 255) - }; - } - -//---------------------- Convert RGB to HSL - -// Source: http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c - - function RGBToHSL(r, g, b) { - r /= 255, - g /= 255, - b /= 255; - var max = Math.max(r, g, b), - min = Math.min(r, g, b); - var h, s, l = (max + min) / 2; - if (max == min) { - h = s = 0; // Achromatic - } else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - 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; - } - h /= 6; - } - return { - hue: Math.round(h * 360), - saturation: Math.round(s * 100), - luminosity: Math.round(l * 100) - }; - } - -//---------------------- Convert RGB to Hex - -// Source: http://stackoverflow.com/a/5624139 - - function RGBToHex(r, g, b) { - return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); - } - -//---------------------- Convert hex to RGB - -// Source: http://stackoverflow.com/a/11508164 - - function hexToRGB(hex) { - var bigInt = parseInt(hex.replace('#', ''), 16), - r = (bigInt >> 16) & 255, - g = (bigInt >> 8) & 255, - b = bigInt & 255; - return { - red: r, - green: g, - blue: b - }; - } - -//---------------------- Convert hex to HSL - - function hexToHSL(hex) { - var RGB = hexToRGB(hex); - return RGBToHSL(RGB.red, RGB.green, RGB.blue); - } - -//---------------------- Convert HSL to hex - - function HSLToHex(h, s, l) { - var RGB = HSLToRGB(h, s, l); - return RGBToHex(RGB.red, RGB.green, RGB.blue); - } - -//-------------------------------------------- Setup each color picker - - $.each($('.color-picker'), function() { - -//---------------------- Find componenets - - var picker = $(this), - formatInput = picker.find('.format'), - colorInput = picker.find('.color'), - luminosityInput = picker.find('input[type=range]'), - spectrum = picker.find('.spectrum'), - pin = picker.find('.pin'); - -//---------------------- Get current color in HSL - - function getHSL() { - var position = picker.find('.pin').position(), - width = spectrum.width(), - height = spectrum.height(); - return { - hue: Math.round(position.left / width * 360), - saturation: Math.round(position.top / height * 100), - luminosity: luminosityInput.val() - }; - } - -//---------------------- Output color in desired format - - function updateColorInput() { - var HSL = getHSL(); - switch (formatInput.val()) { - case 'HSL': - colorInput.val('hsl(' + HSL.hue + ', ' + HSL.saturation + '%, ' + HSL.luminosity + '%)'); - break; - case 'RGB': - var RGB = HSLToRGB(HSL.hue, HSL.saturation, HSL.luminosity); - colorInput.val('rgb(' + RGB.red + ', ' + RGB.green + ', ' + RGB.blue + ')'); - break; - case 'Hex': - colorInput.val(HSLToHex(HSL.hue, HSL.saturation, HSL.luminosity)); - break; - } - // Trigger color picker change event for custom callbacks - picker.trigger('change'); - } - -//---------------------- Set color format - - formatInput.on('change', function() { - updateColorInput(); - }); - -//---------------------- Set color - - colorInput.on('change', function() { - // Get the color values in HSL format - var HSL; - switch (formatInput.val()) { - case 'HSL': - var values = $(this).val().match(/\d+/g); - HSL = { - hue: values[0], - saturation: values[1], - luminosity: values[2] - }; - break; - case 'RGB': - var values = $(this).val().match(/\d+/g); - HSL = RGBToHSL(values[0], values[1], values[2]); - break; - case 'Hex': - HSL = hexToHSL($(this).val()); - break; - } - // Set the luminosity - luminosityInput.val(HSL.luminosity); - setLuminosity(HSL.luminosity); - // Place the pin - pin.css({ - left: HSL.hue / 360 * 100 + '%', - top: HSL.saturation + '%' - }); - // Trigger color picker change event for custom callbacks - picker.trigger('change'); - }); - -//---------------------- Set luminosity - -//---------- Set the luminosity spectrum overlay - - function setLuminosity(luminosity) { - var color, - alpha; - if (luminosity <= 50) { - color = '0, 0, 0'; - alpha = 1 - luminosity / 100 * 2; - } else { - color = '255, 255, 255'; - alpha = luminosity / 100 * 2 - 1; - } - // Apply luminosity to the spectrum - spectrum.children().css('background-color', 'rgba(' + color + ', ' + alpha + ')'); - } - -//---------- Luminosity input interaction - - luminosityInput.on('change', function() { - setLuminosity($(this).val()); - updateColorInput(); - }); - -//---------------------- Set hue, saturation via pin - -//---------- Move the pin - - var movePin = function(event) { - var offset = spectrum.offset(), - width = spectrum.width(), - height = spectrum.height(), - x = event.clientX - offset.left, - y = event.clientY - offset.top; - // Account for pin being dragged outside the spectrum area - // Sanatize x - if (x < 0) { - x = 0; - } else if (x >= width) { - x = width; - } - // Sanatize y - if (y < 0) { - y = 0; - } else if (y >= height) { - y = height; - } - // Place the pin - pin.css({ - left: x / width * 100 + '%', - top: y / height * 100 + '%' - }); - // Output new color value - updateColorInput(); - }; - -//---------- Pin interaction - - spectrum.on('mousedown', function(event) { - event.preventDefault(); - movePin(event); - spectrum.addClass('active'); - $(document).on('mousemove', movePin); - }); - - $(document).on('mouseup', function() { - spectrum.removeClass('active'); - $(document).off('mousemove', movePin); - }); - - spectrum.on('touchmove touchstart', movePin); - -//---------------------- Output color preview - - picker.on('change', function() { - colorInput.css('background-color', colorInput.val()).toggleClass('dark', luminosityInput.val() <= 50); - }); - -//---------------------- Initialize this color picker - - colorInput.trigger('change'); - }); -}); diff --git a/Web/js/libs/mobilebrowsers.js b/Web/js/libs/mobilebrowsers.js deleted file mode 100755 index 3d8d819..0000000 --- a/Web/js/libs/mobilebrowsers.js +++ /dev/null @@ -1 +0,0 @@ -(function(a,b){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))window.mobile=true})(navigator.userAgent||navigator.vendor||window.opera,'http://detectmobilebrowser.com/mobile'); diff --git a/Web/js/libs/stack.js b/Web/js/libs/stack.js deleted file mode 100755 index cbec614..0000000 --- a/Web/js/libs/stack.js +++ /dev/null @@ -1,22 +0,0 @@ -// Zepto.js -// (c) 2010-2014 Thomas Fuchs -// Zepto.js may be freely distributed under the MIT license. - -;(function($){ - $.fn.end = function(){ - return this.prevObject || $() - } - - $.fn.andSelf = function(){ - return this.add(this.prevObject || $()) - } - - 'filter,add,not,eq,first,last,find,closest,parents,parent,children,siblings'.split(',').forEach(function(property){ - var fn = $.fn[property] - $.fn[property] = function(){ - var ret = fn.apply(this, arguments) - ret.prevObject = this - return ret - } - }) -})(Zepto) diff --git a/Web/js/libs/touch.js b/Web/js/libs/touch.js deleted file mode 100755 index cada189..0000000 --- a/Web/js/libs/touch.js +++ /dev/null @@ -1,166 +0,0 @@ -// Zepto.js -// (c) 2010-2014 Thomas Fuchs -// Zepto.js may be freely distributed under the MIT license. - -;(function($){ - var touch = {}, - touchTimeout, tapTimeout, swipeTimeout, longTapTimeout, - longTapDelay = 750, - gesture - - function swipeDirection(x1, x2, y1, y2) { - return Math.abs(x1 - x2) >= - Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down') - } - - function longTap() { - longTapTimeout = null - if (touch.last) { - touch.el.trigger('longTap') - window.touchEl = touch.el; - touch = {} - } - } - - function cancelLongTap() { - if (longTapTimeout) clearTimeout(longTapTimeout) - longTapTimeout = null - } - - function cancelAll() { - if (touchTimeout) clearTimeout(touchTimeout) - if (tapTimeout) clearTimeout(tapTimeout) - if (swipeTimeout) clearTimeout(swipeTimeout) - if (longTapTimeout) clearTimeout(longTapTimeout) - touchTimeout = tapTimeout = swipeTimeout = longTapTimeout = null - touch = {} - } - - function isPrimaryTouch(event){ - return (event.pointerType == 'touch' || - event.pointerType == event.MSPOINTER_TYPE_TOUCH) - && event.isPrimary - } - - function isPointerEventType(e, type){ - return (e.type == 'pointer'+type || - e.type.toLowerCase() == 'mspointer'+type) - } - - $(document).ready(function(){ - var now, delta, deltaX = 0, deltaY = 0, firstTouch, _isPointerType - - if ('MSGesture' in window) { - gesture = new MSGesture() - gesture.target = document.body - } - - $(document) - .bind('MSGestureEnd', function(e){ - var swipeDirectionFromVelocity = - e.velocityX > 1 ? 'Right' : e.velocityX < -1 ? 'Left' : e.velocityY > 1 ? 'Down' : e.velocityY < -1 ? 'Up' : null; - if (swipeDirectionFromVelocity) { - touch.el.trigger('swipe') - touch.el.trigger('swipe'+ swipeDirectionFromVelocity) - } - }) - .on('touchstart MSPointerDown pointerdown', function(e){ - if((_isPointerType = isPointerEventType(e, 'down')) && - !isPrimaryTouch(e)) return - firstTouch = _isPointerType ? e : e.touches[0] - if (e.touches && e.touches.length === 1 && touch.x2) { - // Clear out touch movement data if we have it sticking around - // This can occur if touchcancel doesn't fire due to preventDefault, etc. - touch.x2 = undefined - touch.y2 = undefined - } - now = Date.now() - delta = now - (touch.last || now) - touch.el = $('tagName' in firstTouch.target ? - firstTouch.target : firstTouch.target.parentNode) - touchTimeout && clearTimeout(touchTimeout) - touch.x1 = firstTouch.pageX - touch.y1 = firstTouch.pageY - if (delta > 0 && delta <= 250) touch.isDoubleTap = true - touch.last = now - longTapTimeout = setTimeout(longTap, longTapDelay) - // adds the current touch contact for IE gesture recognition - if (gesture && _isPointerType) gesture.addPointer(e.pointerId); - }) - .on('touchmove MSPointerMove pointermove', function(e){ - if((_isPointerType = isPointerEventType(e, 'move')) && - !isPrimaryTouch(e)) return - firstTouch = _isPointerType ? e : e.touches[0] - if( $.moveCancel ) cancelLongTap() - touch.x2 = firstTouch.pageX - touch.y2 = firstTouch.pageY - - deltaX += Math.abs(touch.x1 - touch.x2) - deltaY += Math.abs(touch.y1 - touch.y2) - }) - .on('touchend MSPointerUp pointerup', function(e){ - if((_isPointerType = isPointerEventType(e, 'up')) && - !isPrimaryTouch(e)) return - cancelLongTap() - - // swipe - if ((touch.x2 && Math.abs(touch.x1 - touch.x2) > 30) || - (touch.y2 && Math.abs(touch.y1 - touch.y2) > 30)) - - swipeTimeout = setTimeout(function() { - touch.el.trigger('swipe') - touch.el.trigger('swipe' + (swipeDirection(touch.x1, touch.x2, touch.y1, touch.y2))) - touch = {} - }, 0) - - // normal tap - else if ('last' in touch) - // don't fire tap when delta position changed by more than 30 pixels, - // for instance when moving to a point and back to origin - if (deltaX < 30 && deltaY < 30) { - // delay by one tick so we can cancel the 'tap' event if 'scroll' fires - // ('tap' fires before 'scroll') - tapTimeout = setTimeout(function() { - - // trigger universal 'tap' with the option to cancelTouch() - // (cancelTouch cancels processing of single vs double taps for faster 'tap' response) - var event = $.Event('tap') - event.cancelTouch = cancelAll - touch.el.trigger(event) - - // trigger double tap immediately - if (touch.isDoubleTap) { - if (touch.el) touch.el.trigger('doubleTap') - touch = {} - } - - // trigger single tap after 250ms of inactivity - else { - touchTimeout = setTimeout(function(){ - touchTimeout = null - if (touch.el) touch.el.trigger('singleTap') - touch = {} - }, 250) - } - }, 0) - } else { - touch = {} - } - deltaX = deltaY = 0 - - }) - // when the browser window loses focus, - // for example when a modal dialog is shown, - // cancel all ongoing events - .on('touchcancel MSPointerCancel pointercancel', cancelAll) - - // scrolling the window indicates intention of the user - // to scroll, not tap or swipe, so cancel all ongoing events - $(window).on('scroll', cancelAll) - }) - - ;['swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown', - 'doubleTap', 'tap', 'singleTap', 'longTap'].forEach(function(eventName){ - $.fn[eventName] = function(callback){ return this.on(eventName, callback) } - }) -})(Zepto) diff --git a/Web/js/libs/yepnope.min.js b/Web/js/libs/yepnope.min.js deleted file mode 100755 index 73655a5..0000000 --- a/Web/js/libs/yepnope.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*yepnope1.5.x|WTFPL*/ -(function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f0?c.fn.concat.apply([],a):a}function Q(a){return a.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function R(a){return a in j?j[a]:j[a]=new RegExp("(^|\\s)"+a+"(\\s|$)")}function S(a,b){return typeof b=="number"&&!k[Q(a)]?b+"px":b}function T(a){var b,c;return i[a]||(b=h.createElement(a),h.body.appendChild(b),c=getComputedStyle(b,"").getPropertyValue("display"),b.parentNode.removeChild(b),c=="none"&&(c="block"),i[a]=c),i[a]}function U(a){return"children"in a?f.call(a.children):c.map(a.childNodes,function(a){if(a.nodeType==1)return a})}function V(c,d,e){for(b in d)e&&(L(d[b])||M(d[b]))?(L(d[b])&&!L(c[b])&&(c[b]={}),M(d[b])&&!M(c[b])&&(c[b]=[]),V(c[b],d[b],e)):d[b]!==a&&(c[b]=d[b])}function W(a,b){return b==null?c(a):c(a).filter(b)}function X(a,b,c,d){return H(b)?b.call(a,c,d):b}function Y(a,b,c){c==null?a.removeAttribute(b):a.setAttribute(b,c)}function Z(b,c){var d=b.className,e=d&&d.baseVal!==a;if(c===a)return e?d.baseVal:d;e?d.baseVal=c:b.className=c}function $(a){var b;try{return a?a=="true"||(a=="false"?!1:a=="null"?null:!/^0/.test(a)&&!isNaN(b=Number(a))?b:/^[\[\{]/.test(a)?c.parseJSON(a):a):a}catch(d){return a}}function _(a,b){b(a);for(var c in a.childNodes)_(a.childNodes[c],b)}var a,b,c,d,e=[],f=e.slice,g=e.filter,h=window.document,i={},j={},k={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},l=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,n=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,o=/^(?:body|html)$/i,p=/([A-Z])/g,q=["val","css","html","text","data","width","height","offset"],r=["after","prepend","before","append"],s=h.createElement("table"),t=h.createElement("tr"),u={tr:h.createElement("tbody"),tbody:s,thead:s,tfoot:s,td:t,th:t,"*":h.createElement("div")},v=/complete|loaded|interactive/,w=/^\.([\w-]+)$/,x=/^#([\w-]*)$/,y=/^[\w-]*$/,z={},A=z.toString,B={},C,D,E=h.createElement("div"),F={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"};return B.matches=function(a,b){if(!b||!a||a.nodeType!==1)return!1;var c=a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.matchesSelector;if(c)return c.call(a,b);var d,e=a.parentNode,f=!e;return f&&(e=E).appendChild(a),d=~B.qsa(e,b).indexOf(a),f&&E.removeChild(a),d},C=function(a){return a.replace(/-+(.)?/g,function(a,b){return b?b.toUpperCase():""})},D=function(a){return g.call(a,function(b,c){return a.indexOf(b)==c})},B.fragment=function(b,d,e){var g,i,j;return m.test(b)&&(g=c(h.createElement(RegExp.$1))),g||(b.replace&&(b=b.replace(n,"<$1>")),d===a&&(d=l.test(b)&&RegExp.$1),d in u||(d="*"),j=u[d],j.innerHTML=""+b,g=c.each(f.call(j.childNodes),function(){j.removeChild(this)})),L(e)&&(i=c(g),c.each(e,function(a,b){q.indexOf(a)>-1?i[a](b):i.attr(a,b)})),g},B.Z=function(a,b){return a=a||[],a.__proto__=c.fn,a.selector=b||"",a},B.isZ=function(a){return a instanceof B.Z},B.init=function(b,d){var e;if(!b)return B.Z();if(typeof b=="string"){b=b.trim();if(b[0]=="<"&&l.test(b))e=B.fragment(b,RegExp.$1,d),b=null;else{if(d!==a)return c(d).find(b);e=B.qsa(h,b)}}else{if(H(b))return c(h).ready(b);if(B.isZ(b))return b;if(M(b))e=O(b);else if(K(b))e=[b],b=null;else if(l.test(b))e=B.fragment(b.trim(),RegExp.$1,d),b=null;else{if(d!==a)return c(d).find(b);e=B.qsa(h,b)}}return B.Z(e,b)},c=function(a,b){return B.init(a,b)},c.extend=function(a){var b,c=f.call(arguments,1);return typeof a=="boolean"&&(b=a,a=c.shift()),c.forEach(function(c){V(a,c,b)}),a},B.qsa=function(a,b){var c,d=b[0]=="#",e=!d&&b[0]==".",g=d||e?b.slice(1):b,h=y.test(g);return J(a)&&h&&d?(c=a.getElementById(g))?[c]:[]:a.nodeType!==1&&a.nodeType!==9?[]:f.call(h&&!d?e?a.getElementsByClassName(g):a.getElementsByTagName(b):a.querySelectorAll(b))},c.contains=function(a,b){return a!==b&&a.contains(b)},c.type=G,c.isFunction=H,c.isWindow=I,c.isArray=M,c.isPlainObject=L,c.isEmptyObject=function(a){var b;for(b in a)return!1;return!0},c.inArray=function(a,b,c){return e.indexOf.call(b,a,c)},c.camelCase=C,c.trim=function(a){return a==null?"":String.prototype.trim.call(a)},c.uuid=0,c.support={},c.expr={},c.map=function(a,b){var c,d=[],e,f;if(N(a))for(e=0;e=0?b:b+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){this.parentNode!=null&&this.parentNode.removeChild(this)})},each:function(a){return e.every.call(this,function(b,c){return a.call(b,c,b)!==!1}),this},filter:function(a){return H(a)?this.not(this.not(a)):c(g.call(this,function(b){return B.matches(b,a)}))},add:function(a,b){return c(D(this.concat(c(a,b))))},is:function(a){return this.length>0&&B.matches(this[0],a)},not:function(b){var d=[];if(H(b)&&b.call!==a)this.each(function(a){b.call(this,a)||d.push(this)});else{var e=typeof b=="string"?this.filter(b):N(b)&&H(b.item)?f.call(b):c(b);this.forEach(function(a){e.indexOf(a)<0&&d.push(a)})}return c(d)},has:function(a){return this.filter(function(){return K(a)?c.contains(this,a):c(this).find(a).size()})},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){var a=this[0];return a&&!K(a)?a:c(a)},last:function(){var a=this[this.length-1];return a&&!K(a)?a:c(a)},find:function(a){var b,d=this;return typeof a=="object"?b=c(a).filter(function(){var a=this;return e.some.call(d,function(b){return c.contains(b,a)})}):this.length==1?b=c(B.qsa(this[0],a)):b=this.map(function(){return B.qsa(this,a)}),b},closest:function(a,b){var d=this[0],e=!1;typeof a=="object"&&(e=c(a));while(d&&!(e?e.indexOf(d)>=0:B.matches(d,a)))d=d!==b&&!J(d)&&d.parentNode;return c(d)},parents:function(a){var b=[],d=this;while(d.length>0)d=c.map(d,function(a){if((a=a.parentNode)&&!J(a)&&b.indexOf(a)<0)return b.push(a),a});return W(b,a)},parent:function(a){return W(D(this.pluck("parentNode")),a)},children:function(a){return W(this.map(function(){return U(this)}),a)},contents:function(){return this.map(function(){return f.call(this.childNodes)})},siblings:function(a){return W(this.map(function(a,b){return g.call(U(b.parentNode),function(a){return a!==b})}),a)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(a){return c.map(this,function(b){return b[a]})},show:function(){return this.each(function(){this.style.display=="none"&&(this.style.display=""),getComputedStyle(this,"").getPropertyValue("display")=="none"&&(this.style.display=T(this.nodeName))})},replaceWith:function(a){return this.before(a).remove()},wrap:function(a){var b=H(a);if(this[0]&&!b)var d=c(a).get(0),e=d.parentNode||this.length>1;return this.each(function(f){c(this).wrapAll(b?a.call(this,f):e?d.cloneNode(!0):d)})},wrapAll:function(a){if(this[0]){c(this[0]).before(a=c(a));var b;while((b=a.children()).length)a=b.first();c(a).append(this)}return this},wrapInner:function(a){var b=H(a);return this.each(function(d){var e=c(this),f=e.contents(),g=b?a.call(this,d):a;f.length?f.wrapAll(g):e.append(g)})},unwrap:function(){return this.parent().each(function(){c(this).replaceWith(c(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(b){return this.each(function(){var d=c(this);(b===a?d.css("display")=="none":b)?d.show():d.hide()})},prev:function(a){return c(this.pluck("previousElementSibling")).filter(a||"*")},next:function(a){return c(this.pluck("nextElementSibling")).filter(a||"*")},html:function(a){return arguments.length===0?this.length>0?this[0].innerHTML:null:this.each(function(b){var d=this.innerHTML;c(this).empty().append(X(this,a,b,d))})},text:function(b){return arguments.length===0?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=b===a?"":""+b})},attr:function(c,d){var e;return typeof c=="string"&&d===a?this.length==0||this[0].nodeType!==1?a:c=="value"&&this[0].nodeName=="INPUT"?this.val():!(e=this[0].getAttribute(c))&&c in this[0]?this[0][c]:e:this.each(function(a){if(this.nodeType!==1)return;if(K(c))for(b in c)Y(this,b,c[b]);else Y(this,c,X(this,d,a,this.getAttribute(c)))})},removeAttr:function(a){return this.each(function(){this.nodeType===1&&Y(this,a)})},prop:function(b,c){return b=F[b]||b,c===a?this[0]&&this[0][b]:this.each(function(a){this[b]=X(this,c,a,this[b])})},data:function(b,c){var d=this.attr("data-"+b.replace(p,"-$1").toLowerCase(),c);return d!==null?$(d):a},val:function(a){return arguments.length===0?this[0]&&(this[0].multiple?c(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value):this.each(function(b){this.value=X(this,a,b,this.value)})},offset:function(a){if(a)return this.each(function(b){var d=c(this),e=X(this,a,b,d.offset()),f=d.offsetParent().offset(),g={top:e.top-f.top,left:e.left-f.left};d.css("position")=="static"&&(g.position="relative"),d.css(g)});if(this.length==0)return null;var b=this[0].getBoundingClientRect();return{left:b.left+window.pageXOffset,top:b.top+window.pageYOffset,width:Math.round(b.width),height:Math.round(b.height)}},css:function(a,d){if(arguments.length<2){var e=this[0],f=getComputedStyle(e,"");if(!e)return;if(typeof a=="string")return e.style[C(a)]||f.getPropertyValue(a);if(M(a)){var g={};return c.each(M(a)?a:[a],function(a,b){g[b]=e.style[C(b)]||f.getPropertyValue(b)}),g}}var h="";if(G(a)=="string")!d&&d!==0?this.each(function(){this.style.removeProperty(Q(a))}):h=Q(a)+":"+S(a,d);else for(b in a)!a[b]&&a[b]!==0?this.each(function(){this.style.removeProperty(Q(b))}):h+=Q(b)+":"+S(b,a[b])+";";return this.each(function(){this.style.cssText+=";"+h})},index:function(a){return a?this.indexOf(c(a)[0]):this.parent().children().indexOf(this[0])},hasClass:function(a){return a?e.some.call(this,function(a){return this.test(Z(a))},R(a)):!1},addClass:function(a){return a?this.each(function(b){d=[];var e=Z(this),f=X(this,a,b,e);f.split(/\s+/g).forEach(function(a){c(this).hasClass(a)||d.push(a)},this),d.length&&Z(this,e+(e?" ":"")+d.join(" "))}):this},removeClass:function(b){return this.each(function(c){if(b===a)return Z(this,"");d=Z(this),X(this,b,c,d).split(/\s+/g).forEach(function(a){d=d.replace(R(a)," ")}),Z(this,d.trim())})},toggleClass:function(b,d){return b?this.each(function(e){var f=c(this),g=X(this,b,e,Z(this));g.split(/\s+/g).forEach(function(b){(d===a?!f.hasClass(b):d)?f.addClass(b):f.removeClass(b)})}):this},scrollTop:function(b){if(!this.length)return;var c="scrollTop"in this[0];return b===a?c?this[0].scrollTop:this[0].pageYOffset:this.each(c?function(){this.scrollTop=b}:function(){this.scrollTo(this.scrollX,b)})},scrollLeft:function(b){if(!this.length)return;var c="scrollLeft"in this[0];return b===a?c?this[0].scrollLeft:this[0].pageXOffset:this.each(c?function(){this.scrollLeft=b}:function(){this.scrollTo(b,this.scrollY)})},position:function(){if(!this.length)return;var a=this[0],b=this.offsetParent(),d=this.offset(),e=o.test(b[0].nodeName)?{top:0,left:0}:b.offset();return d.top-=parseFloat(c(a).css("margin-top"))||0,d.left-=parseFloat(c(a).css("margin-left"))||0,e.top+=parseFloat(c(b[0]).css("border-top-width"))||0,e.left+=parseFloat(c(b[0]).css("border-left-width"))||0,{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||h.body;while(a&&!o.test(a.nodeName)&&c(a).css("position")=="static")a=a.offsetParent;return a})}},c.fn.detach=c.fn.remove,["width","height"].forEach(function(b){var d=b.replace(/./,function(a){return a[0].toUpperCase()});c.fn[b]=function(e){var f,g=this[0];return e===a?I(g)?g["inner"+d]:J(g)?g.documentElement["scroll"+d]:(f=this.offset())&&f[b]:this.each(function(a){g=c(this),g.css(b,X(this,e,a,g[b]()))})}}),r.forEach(function(a,b){var d=b%2;c.fn[a]=function(){var a,e=c.map(arguments,function(b){return a=G(b),a=="object"||a=="array"||b==null?b:B.fragment(b)}),f,g=this.length>1;return e.length<1?this:this.each(function(a,h){f=d?h:h.parentNode,h=b==0?h.nextSibling:b==1?h.firstChild:b==2?h:null,e.forEach(function(a){if(g)a=a.cloneNode(!0);else if(!f)return c(a).remove();_(f.insertBefore(a,h),function(a){a.nodeName!=null&&a.nodeName.toUpperCase()==="SCRIPT"&&(!a.type||a.type==="text/javascript")&&!a.src&&window.eval.call(window,a.innerHTML)})})})},c.fn[d?a+"To":"insert"+(b?"Before":"After")]=function(b){return c(b)[a](this),this}}),B.Z.prototype=c.fn,B.uniq=D,B.deserializeValue=$,c.zepto=B,c}();window.Zepto=Zepto,window.$===undefined&&(window.$=Zepto),function(a){function m(a){return a._zid||(a._zid=c++)}function n(a,b,c,d){b=o(b);if(b.ns)var e=p(b.ns);return(h[m(a)]||[]).filter(function(a){return a&&(!b.e||a.e==b.e)&&(!b.ns||e.test(a.ns))&&(!c||m(a.fn)===m(c))&&(!d||a.sel==d)})}function o(a){var b=(""+a).split(".");return{e:b[0],ns:b.slice(1).sort().join(" ")}}function p(a){return new RegExp("(?:^| )"+a.replace(" "," .* ?")+"(?: |$)")}function q(a,b){return a.del&&!j&&a.e in k||!!b}function r(a){return l[a]||j&&k[a]||a}function s(b,c,e,f,g,i,j){var k=m(b),n=h[k]||(h[k]=[]);c.split(/\s/).forEach(function(c){if(c=="ready")return a(document).ready(e);var h=o(c);h.fn=e,h.sel=g,h.e in l&&(e=function(b){var c=b.relatedTarget;if(!c||c!==this&&!a.contains(this,c))return h.fn.apply(this,arguments)}),h.del=i;var k=i||e;h.proxy=function(a){a=y(a);if(a.isImmediatePropagationStopped())return;a.data=f;var c=k.apply(b,a._args==d?[a]:[a].concat(a._args));return c===!1&&(a.preventDefault(),a.stopPropagation()),c},h.i=n.length,n.push(h),"addEventListener"in b&&b.addEventListener(r(h.e),h.proxy,q(h,j))})}function t(a,b,c,d,e){var f=m(a);(b||"").split(/\s/).forEach(function(b){n(a,b,c,d).forEach(function(b){delete h[f][b.i],"removeEventListener"in a&&a.removeEventListener(r(b.e),b.proxy,q(b,e))})})}function y(b,c){if(c||!b.isDefaultPrevented){c||(c=b),a.each(x,function(a,d){var e=c[a];b[a]=function(){return this[d]=u,e&&e.apply(c,arguments)},b[d]=v});if(c.defaultPrevented!==d?c.defaultPrevented:"returnValue"in c?c.returnValue===!1:c.getPreventDefault&&c.getPreventDefault())b.isDefaultPrevented=u}return b}function z(a){var b,c={originalEvent:a};for(b in a)!w.test(b)&&a[b]!==d&&(c[b]=a[b]);return y(c,a)}var b=a.zepto.qsa,c=1,d,e=Array.prototype.slice,f=a.isFunction,g=function(a){return typeof a=="string"},h={},i={},j="onfocusin"in window,k={focus:"focusin",blur:"focusout"},l={mouseenter:"mouseover",mouseleave:"mouseout"};i.click=i.mousedown=i.mouseup=i.mousemove="MouseEvents",a.event={add:s,remove:t},a.proxy=function(b,c){if(f(b)){var d=function(){return b.apply(c,arguments)};return d._zid=m(b),d}if(g(c))return a.proxy(b[c],b);throw new TypeError("expected function")},a.fn.bind=function(a,b,c){return this.on(a,b,c)},a.fn.unbind=function(a,b){return this.off(a,b)},a.fn.one=function(a,b,c,d){return this.on(a,b,c,d,1)};var u=function(){return!0},v=function(){return!1},w=/^([A-Z]|returnValue$|layer[XY]$)/,x={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};a.fn.delegate=function(a,b,c){return this.on(b,a,c)},a.fn.undelegate=function(a,b,c){return this.off(b,a,c)},a.fn.live=function(b,c){return a(document.body).delegate(this.selector,b,c),this},a.fn.die=function(b,c){return a(document.body).undelegate(this.selector,b,c),this},a.fn.on=function(b,c,h,i,j){var k,l,m=this;if(b&&!g(b))return a.each(b,function(a,b){m.on(a,c,h,b,j)}),m;!g(c)&&!f(i)&&i!==!1&&(i=h,h=c,c=d);if(f(h)||h===!1)i=h,h=d;return i===!1&&(i=v),m.each(function(d,f){j&&(k=function(a){return t(f,a.type,i),i.apply(this,arguments)}),c&&(l=function(b){var d,g=a(b.target).closest(c,f).get(0);if(g&&g!==f)return d=a.extend(z(b),{currentTarget:g,liveFired:f}),(k||i).apply(g,[d].concat(e.call(arguments,1)))}),s(f,b,i,h,c,l||k)})},a.fn.off=function(b,c,e){var h=this;return b&&!g(b)?(a.each(b,function(a,b){h.off(a,c,b)}),h):(!g(c)&&!f(e)&&e!==!1&&(e=c,c=d),e===!1&&(e=v),h.each(function(){t(this,b,e,c)}))},a.fn.trigger=function(b,c){return b=g(b)||a.isPlainObject(b)?a.Event(b):y(b),b._args=c,this.each(function(){"dispatchEvent"in this?this.dispatchEvent(b):a(this).triggerHandler(b,c)})},a.fn.triggerHandler=function(b,c){var d,e;return this.each(function(f,h){d=z(g(b)?a.Event(b):b),d._args=c,d.target=h,a.each(n(h,b.type||b),function(a,b){e=b.proxy(d);if(d.isImmediatePropagationStopped())return!1})}),e},"focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(b){a.fn[b]=function(a){return a?this.bind(b,a):this.trigger(b)}}),["focus","blur"].forEach(function(b){a.fn[b]=function(a){return a?this.bind(b,a):this.each(function(){try{this[b]()}catch(a){}}),this}}),a.Event=function(a,b){g(a)||(b=a,a=b.type);var c=document.createEvent(i[a]||"Events"),d=!0;if(b)for(var e in b)e=="bubbles"?d=!!b[e]:c[e]=b[e];return c.initEvent(a,d,!0),y(c)}}(Zepto),function($){function triggerAndReturn(a,b,c){var d=$.Event(b);return $(a).trigger(d,c),!d.isDefaultPrevented()}function triggerGlobal(a,b,c,d){if(a.global)return triggerAndReturn(b||document,c,d)}function ajaxStart(a){a.global&&$.active++===0&&triggerGlobal(a,null,"ajaxStart")}function ajaxStop(a){a.global&&!--$.active&&triggerGlobal(a,null,"ajaxStop")}function ajaxBeforeSend(a,b){var c=b.context;if(b.beforeSend.call(c,a,b)===!1||triggerGlobal(b,c,"ajaxBeforeSend",[a,b])===!1)return!1;triggerGlobal(b,c,"ajaxSend",[a,b])}function ajaxSuccess(a,b,c,d){var e=c.context,f="success";c.success.call(e,a,f,b),d&&d.resolveWith(e,[a,f,b]),triggerGlobal(c,e,"ajaxSuccess",[b,c,a]),ajaxComplete(f,b,c)}function ajaxError(a,b,c,d,e){var f=d.context;d.error.call(f,c,b,a),e&&e.rejectWith(f,[c,b,a]),triggerGlobal(d,f,"ajaxError",[c,d,a||b]),ajaxComplete(b,c,d)}function ajaxComplete(a,b,c){var d=c.context;c.complete.call(d,b,a),triggerGlobal(c,d,"ajaxComplete",[b,c]),ajaxStop(c)}function empty(){}function mimeToDataType(a){return a&&(a=a.split(";",2)[0]),a&&(a==htmlType?"html":a==jsonType?"json":scriptTypeRE.test(a)?"script":xmlTypeRE.test(a)&&"xml")||"text"}function appendQuery(a,b){return b==""?a:(a+"&"+b).replace(/[&?]{1,2}/,"?")}function serializeData(a){a.processData&&a.data&&$.type(a.data)!="string"&&(a.data=$.param(a.data,a.traditional)),a.data&&(!a.type||a.type.toUpperCase()=="GET")&&(a.url=appendQuery(a.url,a.data),a.data=undefined)}function parseArguments(a,b,c,d){var e=!$.isFunction(b);return{url:a,data:e?b:undefined,success:e?$.isFunction(c)?c:undefined:b,dataType:e?d||c:c}}function serialize(a,b,c,d){var e,f=$.isArray(b),g=$.isPlainObject(b);$.each(b,function(b,h){e=$.type(h),d&&(b=c?d:d+"["+(g||e=="object"||e=="array"?b:"")+"]"),!d&&f?a.add(h.name,h.value):e=="array"||!c&&e=="object"?serialize(a,h,c,b):a.add(b,h)})}var jsonpID=0,document=window.document,key,name,rscript=/)<[^<]*)*<\/script>/gi,scriptTypeRE=/^(?:text|application)\/javascript/i,xmlTypeRE=/^(?:text|application)\/xml/i,jsonType="application/json",htmlType="text/html",blankRE=/^\s*$/;$.active=0,$.ajaxJSONP=function(a,b){if("type"in a){var c=a.jsonpCallback,d=($.isFunction(c)?c():c)||"jsonp"+ ++jsonpID,e=document.createElement("script"),f=window[d],g,h=function(a){$(e).triggerHandler("error",a||"abort")},i={abort:h},j;return b&&b.promise(i),$(e).on("load error",function(c,h){clearTimeout(j),$(e).off().remove(),c.type=="error"||!g?ajaxError(null,h||"error",i,a,b):ajaxSuccess(g[0],i,a,b),window[d]=f,g&&$.isFunction(f)&&f(g[0]),f=g=undefined}),ajaxBeforeSend(i,a)===!1?(h("abort"),i):(window[d]=function(){g=arguments},e.src=a.url.replace(/=\?/,"="+d),document.head.appendChild(e),a.timeout>0&&(j=setTimeout(function(){h("timeout")},a.timeout)),i)}return $.ajax(a)},$.ajaxSettings={type:"GET",beforeSend:empty,success:empty,error:empty,complete:empty,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:jsonType,xml:"application/xml, text/xml",html:htmlType,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0},$.ajax=function(options){var settings=$.extend({},options||{}),deferred=$.Deferred&&$.Deferred();for(key in $.ajaxSettings)settings[key]===undefined&&(settings[key]=$.ajaxSettings[key]);ajaxStart(settings),settings.crossDomain||(settings.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(settings.url)&&RegExp.$2!=window.location.host),settings.url||(settings.url=window.location.toString()),serializeData(settings),settings.cache===!1&&(settings.url=appendQuery(settings.url,"_="+Date.now()));var dataType=settings.dataType,hasPlaceholder=/=\?/.test(settings.url);if(dataType=="jsonp"||hasPlaceholder)return hasPlaceholder||(settings.url=appendQuery(settings.url,settings.jsonp?settings.jsonp+"=?":settings.jsonp===!1?"":"callback=?")),$.ajaxJSONP(settings,deferred);var mime=settings.accepts[dataType],headers={},setHeader=function(a,b){headers[a.toLowerCase()]=[a,b]},protocol=/^([\w-]+:)\/\//.test(settings.url)?RegExp.$1:window.location.protocol,xhr=settings.xhr(),nativeSetHeader=xhr.setRequestHeader,abortTimeout;deferred&&deferred.promise(xhr),settings.crossDomain||setHeader("X-Requested-With","XMLHttpRequest"),setHeader("Accept",mime||"*/*");if(mime=settings.mimeType||mime)mime.indexOf(",")>-1&&(mime=mime.split(",",2)[0]),xhr.overrideMimeType&&xhr.overrideMimeType(mime);(settings.contentType||settings.contentType!==!1&&settings.data&&settings.type.toUpperCase()!="GET")&&setHeader("Content-Type",settings.contentType||"application/x-www-form-urlencoded");if(settings.headers)for(name in settings.headers)setHeader(name,settings.headers[name]);xhr.setRequestHeader=setHeader,xhr.onreadystatechange=function(){if(xhr.readyState==4){xhr.onreadystatechange=empty,clearTimeout(abortTimeout);var result,error=!1;if(xhr.status>=200&&xhr.status<300||xhr.status==304||xhr.status==0&&protocol=="file:"){dataType=dataType||mimeToDataType(settings.mimeType||xhr.getResponseHeader("content-type")),result=xhr.responseText;try{dataType=="script"?(1,eval)(result):dataType=="xml"?result=xhr.responseXML:dataType=="json"&&(result=blankRE.test(result)?null:$.parseJSON(result))}catch(e){error=e}error?ajaxError(error,"parsererror",xhr,settings,deferred):ajaxSuccess(result,xhr,settings,deferred)}else ajaxError(xhr.statusText||null,xhr.status?"error":"abort",xhr,settings,deferred)}};if(ajaxBeforeSend(xhr,settings)===!1)return xhr.abort(),ajaxError(null,"abort",xhr,settings,deferred),xhr;if(settings.xhrFields)for(name in settings.xhrFields)xhr[name]=settings.xhrFields[name];var async="async"in settings?settings.async:!0;xhr.open(settings.type,settings.url,async,settings.username,settings.password);for(name in headers)nativeSetHeader.apply(xhr,headers[name]);return settings.timeout>0&&(abortTimeout=setTimeout(function(){xhr.onreadystatechange=empty,xhr.abort(),ajaxError(null,"timeout",xhr,settings,deferred)},settings.timeout)),xhr.send(settings.data?settings.data:null),xhr},$.get=function(a,b,c,d){return $.ajax(parseArguments.apply(null,arguments))},$.post=function(a,b,c,d){var e=parseArguments.apply(null,arguments);return e.type="POST",$.ajax(e)},$.getJSON=function(a,b,c){var d=parseArguments.apply(null,arguments);return d.dataType="json",$.ajax(d)},$.fn.load=function(a,b,c){if(!this.length)return this;var d=this,e=a.split(/\s/),f,g=parseArguments(a,b,c),h=g.success;return e.length>1&&(g.url=e[0],f=e[1]),g.success=function(a){d.html(f?$("
    ").html(a.replace(rscript,"")).find(f):a),h&&h.apply(d,arguments)},$.ajax(g),this};var escape=encodeURIComponent;$.param=function(a,b){var c=[];return c.add=function(a,b){this.push(escape(a)+"="+escape(b))},serialize(c,a,b),c.join("&").replace(/%20/g,"+")}}(Zepto),function(a){a.fn.serializeArray=function(){var b=[],c;return a([].slice.call(this.get(0).elements)).each(function(){c=a(this);var d=c.attr("type");this.nodeName.toLowerCase()!="fieldset"&&!this.disabled&&d!="submit"&&d!="reset"&&d!="button"&&(d!="radio"&&d!="checkbox"||this.checked)&&b.push({name:c.attr("name"),value:c.val()})}),b},a.fn.serialize=function(){var a=[];return this.serializeArray().forEach(function(b){a.push(encodeURIComponent(b.name)+"="+encodeURIComponent(b.value))}),a.join("&")},a.fn.submit=function(b){if(b)this.bind("submit",b);else if(this.length){var c=a.Event("submit");this.eq(0).trigger(c),c.isDefaultPrevented()||this.get(0).submit()}return this}}(Zepto),function(a){"__proto__"in{}||a.extend(a.zepto,{Z:function(b,c){return b=b||[],a.extend(b,a.fn),b.selector=c||"",b.__Z=!0,b},isZ:function(b){return a.type(b)==="array"&&"__Z"in b}});try{getComputedStyle(undefined)}catch(b){var c=getComputedStyle;window.getComputedStyle=function(a){try{return c(a)}catch(b){return null}}}}(Zepto) \ No newline at end of file diff --git a/Web/js/main.js b/Web/js/main.js index c79ec61..84b1954 100755 --- a/Web/js/main.js +++ b/Web/js/main.js @@ -1,52 +1,11 @@ "use strict"; $(document).ready(function() { - window.c = $('canvas')[0].getContext('2d'); - window.o = $('canvas')[1].getContext('2d'); - window.c.clear = window.o.clear = function() { - this.clearRect(0, 0, width(), height()); - } - - window.settings = { - stroke: true, - fill: false, - lineWidth : 2, - color : 'black', - type: 'sketch', - lineCap: 'round', - lineJoin: 'round', - furLength: 50, - connectTelorance: 40, - composite: 'source-over', - shape: 'circle', - shapeStart: {}, - comShape: {}, - drawingLine: [], - version: 1.2 - }; - window.points = []; - window.$c = $('canvas'); - window.points.history = [{ data: c.createImageData($c.width(), $c.height()), points: []}]; - window.points.history.last = 0; - - sizeAndPos(); - //$(window).resize(sizeAndPos); - - $('.color-picker').change(function() { - var c = $(this).find('.color').val(); - var caller = $(this).parent().attr('data-caller'); - settings[caller] = c; - $('#set' + caller + ' span').html(c); - if( caller == 'bg' ) { - $c.first().css('background', c); - } - }) - $('.color').val('#000000'); yepnope({ test: window.mobile, - yep : ['js/libs/touch.js', 'js/mobile.js', 'js/libs/color-picker-touch.js'], - nope: ['js/desktop.js', 'js/libs/color-picker.js'] + yep : ['js/mobile.js', 'js/libs/color-picker-touch.js'], + nope: ['js/libs/color-picker.js'] }) @@ -120,13 +79,6 @@ $(document).ready(function() { window.load = load; window.save = save; - - if( localStorage.getItem('sawTips') != settings.version ) { - $('.tour').removeClass('hidden'); - localStorage.setItem('sawTips', settings.version); - } - - // TODO: Check for Update /*var request = navigator.mozApps.getInstalled(); diff --git a/Web/js/mobile.js b/Web/js/mobile.js deleted file mode 100755 index ae65e9f..0000000 --- a/Web/js/mobile.js +++ /dev/null @@ -1,231 +0,0 @@ -"use strict"; - -// Open External Links in browser - -$('.menu').tap(function() { - $('#menu').toggleClass('pulled'); -}) -$('.save').tap(function() { - $('#save').removeClass('hidden'); -}) -$('.load').tap(function() { - $('#load').removeClass('hidden'); - $('#load li').remove(); - for( var i = 0, len = localStorage.length; i < len; i++ ) { - $('#load ol').append( - $('
  • ') - ); - } - if( localStorage.length < 1 ) { - $('#load ol').append( - $('

    No sketch found.

    ') - ); - } - $confirm.find('li').off('tap').tap(function(e) { - $(this).parent().find('li[aria-selected]').removeAttr('aria-selected'); - $(this).attr('aria-selected', 'true'); - }) - $('#pro').click(function() { - $('#save ol:nth-of-type(2) li').each(function() { - if( $(this).find('span').html() !== 'Transparent' ) { - $(this).addClass('hidden'); - $(this).removeAttr('aria-selected'); - } - else $(this).attr('aria-selected', 'true'); - }) - }) - $('#exp').click(function() { - $('#save ol:nth-of-type(2) li').removeClass('hidden'); - }) -}) -$('#pro').click(function() { - $('#save ol:nth-of-type(2) li').each(function() { - if( $(this).find('span').html() !== 'Transparent' ) { - $(this).addClass('hidden'); - $(this).removeAttr('aria-selected'); - } - else $(this).attr('aria-selected', 'true'); - }) -}) -$('#exp').click(function() { - $('#save ol:nth-of-type(2) li').removeClass('hidden'); -}) -$c.last().on('touchstart', function(e) { - var xy = relative(e.changedTouches[0].pageX, e.changedTouches[0].pageY); - startPoint(xy.x, xy.y); - window.active = true; -}).on('touchmove', function(e) { - if (!window.active || settings.type == 'line') return; - var xy = relative(e.changedTouches[0].pageX, e.changedTouches[0].pageY); - drawPoint(xy.x, xy.y); -}).on('touchend', function(e) { - window.active = false; - if( settings.type == 'eraser' ) return; - - if(window.points.history.last < window.points.history.length-1) { - window.points.history.splice(window.points.history.last+1); - } - if( settings.type == 'shape' ) { - var s = settings.comShape; - o.clear(); - c.beginPath(); - c.fillStyle = settings.color; - switch(s.type) { - case 'circle': { - c.arc(s.x, s.y, s.radius, 0, 2*Math.PI); - break; - } - case 'rectangle': { - c.rect(s.x, s.y, s.w, s.h) - break; - } - case 'triangle': { - c.moveTo(s.start.x + s.dix, s.start.y); - c.lineTo(s.x, s.y); - c.lineTo(s.start.x, s.y); - c.lineTo(s.start.x + s.dix, s.start.y); - break; - } - } - c.fill(); - } - window.points.history.push({ - data: c.getImageData(0, 0, width(), height()), - points: window.points.slice(0) - }) - window.points.history.last = window.points.history.length-1; -}).on('longTap', function(e) { - if( points[points.length-1].type == 'line' ) { - window.active = false; - points[points.length-1].type = ''; - points[points.length-1].start = undefined; - } -}) - -// Value Selector - -var $single = $('form[data-type="value-selector"].single'); - -$single.find('li').tap(function(e) { - e.preventDefault(); - $(this).parent().find('li[aria-selected]').removeAttr('aria-selected'); - $(this).attr('aria-selected', 'true'); - var key = $(this).parents('form').attr('id'), - value = $(this).find('label span').html().toLowerCase(); - window.settings[key] = value; - - $('button[id="set' + key + '"] span').html(value[0].toUpperCase() + value.substr(1)); - $('#menu div.options > div').addClass('hidden'); - $('#menu div.options > .general, #menu div.options > .'+value).removeClass('hidden'); - - $(this).parents('form').addClass('hidden'); -}) - -$single.submit(function(e) { - e.preventDefault(); - $(this).addClass('hidden'); -}) - -// Confirm - -var $confirm = $('form[data-type="value-selector"].confirm'); - -$confirm.each(function() { - - $(this).find('li').click(function(e) { - $(this).parent().find('li[aria-selected]').removeAttr('aria-selected'); - $(this).attr('aria-selected', 'true'); - }) - $(this).find('button').last().click(function(e) { - e.preventDefault(); - var v = $(this).parents('form').attr('id'); - $(this).parents('form').find('h1').each(function(i) { - if( i > 0 ) { - var key = $(this).html().toLowerCase(); - var value = $(this).parent().find('ol:nth-of-type('+i+') li[aria-selected] span').html(); - if( key !== 'file name' && key !== 'file' ) value = value.toLowerCase(); - window[v][key] = value; - } - }) - $(this).parents('form').addClass('hidden'); - window[v](); - }) - $(this).find('button').first().click(function(e) { - e.preventDefault(); - $(this).parents('form').addClass('hidden'); - }) - -}) - -// Value Selector Callers - -var $btn = $('button[id^="set"]'); -$btn.each(function() { - var target = /set(.*)/.exec($(this).attr('id'))[1]; - if( target == 'color' ) { - return $(this).tap(function() { - $('.picker').removeClass('hidden'); - }) - } - $(this).tap(function(e) { - e.preventDefault(); - $('form[id="' + target + '"]').removeClass('hidden'); - }) -}) - -// Seekbar - -var sliderLeft; -$('div[role="slider"] button').on('touchstart', function() { - $(this).attr('data-moving','true'); - if( !sliderLeft ) sliderLeft = $('div[role="slider"] button').offset().left; -}).on('touchmove', function(e) { - if( $(this).attr('data-moving') ) { - var x = parseInt(e.changedTouches[0].pageX - sliderLeft - 15); - var $c = $('.'+$(this).parents('div[role="slider"]').attr('class')); - var progress = $c.find('progress'); - var max = +progress.attr('max'); - var min = +progress.attr('min'); - if( x <= max && x >= min ) { - $c.find('button').css('left', x+'%'); - progress.attr('value', x); - var key = $c.attr('class'); - settings[key] = x; - $('#'+ key +' span').html(x); - } - } -}).on('touchend', function() { - $(this).removeAttr('data-moving'); -}) - -// Color Picker - -$('.close, .tour button').tap(function() { - $(this).parent().addClass('hidden'); -}) - -// Bottom - -$('#clear').tap(function() { - c.clearRect(0, 0, width(), height()); - var h = window.points.history; - window.points = []; - window.points.history = h; - if(window.points.history.last < window.points.history.length-1) { - window.points.history.splice(window.points.history.last+1); - } - - window.points.history.push({ - data: c.getImageData(0, 0, width(), height()), - points: [] - }) - window.points.history.last = window.points.history.length-1; -}) - -$('#undo').tap(undo); -$('#redo').tap(redo); - -$('#about').tap(function() { - $('.about').removeClass('hidden'); -}) - diff --git a/Web/manifest-web.webapp b/Web/manifest.webapp similarity index 100% rename from Web/manifest-web.webapp rename to Web/manifest.webapp diff --git a/Web/css/fonts/MozTT-Bold.ttf b/build/mobile/css/fonts/MozTT-Bold.ttf old mode 100755 new mode 100644 similarity index 100% rename from Web/css/fonts/MozTT-Bold.ttf rename to build/mobile/css/fonts/MozTT-Bold.ttf diff --git a/Web/css/fonts/MozTT-Light.ttf b/build/mobile/css/fonts/MozTT-Light.ttf old mode 100755 new mode 100644 similarity index 100% rename from Web/css/fonts/MozTT-Light.ttf rename to build/mobile/css/fonts/MozTT-Light.ttf diff --git a/Web/css/fonts/MozTT-Medium.ttf b/build/mobile/css/fonts/MozTT-Medium.ttf old mode 100755 new mode 100644 similarity index 100% rename from Web/css/fonts/MozTT-Medium.ttf rename to build/mobile/css/fonts/MozTT-Medium.ttf diff --git a/Web/css/fonts/MozTT-Regular.ttf b/build/mobile/css/fonts/MozTT-Regular.ttf old mode 100755 new mode 100644 similarity index 100% rename from Web/css/fonts/MozTT-Regular.ttf rename to build/mobile/css/fonts/MozTT-Regular.ttf diff --git a/Web/css/imgs/bg_overlay_pressed_1.png b/build/mobile/css/imgs/bg_overlay_pressed_1.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/bg_overlay_pressed_1.png rename to build/mobile/css/imgs/bg_overlay_pressed_1.png diff --git a/Web/css/imgs/bg_overlay_pressed_2.png b/build/mobile/css/imgs/bg_overlay_pressed_2.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/bg_overlay_pressed_2.png rename to build/mobile/css/imgs/bg_overlay_pressed_2.png diff --git a/Web/css/imgs/clear.png b/build/mobile/css/imgs/clear.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/clear.png rename to build/mobile/css/imgs/clear.png diff --git a/Web/css/imgs/div_line_lg_black.png b/build/mobile/css/imgs/div_line_lg_black.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/div_line_lg_black.png rename to build/mobile/css/imgs/div_line_lg_black.png diff --git a/Web/css/imgs/div_line_sm_black.png b/build/mobile/css/imgs/div_line_sm_black.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/div_line_sm_black.png rename to build/mobile/css/imgs/div_line_sm_black.png diff --git a/Web/css/imgs/download.png b/build/mobile/css/imgs/download.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/download.png rename to build/mobile/css/imgs/download.png diff --git a/Web/css/imgs/header_bg_black.png b/build/mobile/css/imgs/header_bg_black.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/header_bg_black.png rename to build/mobile/css/imgs/header_bg_black.png diff --git a/Web/css/imgs/load.png b/build/mobile/css/imgs/load.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/load.png rename to build/mobile/css/imgs/load.png diff --git a/Web/css/imgs/menu.png b/build/mobile/css/imgs/menu.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/menu.png rename to build/mobile/css/imgs/menu.png diff --git a/Web/css/imgs/redo.png b/build/mobile/css/imgs/redo.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/redo.png rename to build/mobile/css/imgs/redo.png diff --git a/Web/css/imgs/settings.png b/build/mobile/css/imgs/settings.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/settings.png rename to build/mobile/css/imgs/settings.png diff --git a/Web/css/imgs/undo.png b/build/mobile/css/imgs/undo.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/imgs/undo.png rename to build/mobile/css/imgs/undo.png diff --git a/Web/css/main.css b/build/mobile/css/main.css old mode 100755 new mode 100644 similarity index 100% rename from Web/css/main.css rename to build/mobile/css/main.css diff --git a/Web/css/seekbars/images/ui/handler.png b/build/mobile/css/seekbars/images/ui/handler.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/seekbars/images/ui/handler.png rename to build/mobile/css/seekbars/images/ui/handler.png diff --git a/Web/css/seekbars/images/ui/handler@1.5x.png b/build/mobile/css/seekbars/images/ui/handler@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/seekbars/images/ui/handler@1.5x.png rename to build/mobile/css/seekbars/images/ui/handler@1.5x.png diff --git a/Web/css/seekbars/images/ui/handler@2x.png b/build/mobile/css/seekbars/images/ui/handler@2x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/seekbars/images/ui/handler@2x.png rename to build/mobile/css/seekbars/images/ui/handler@2x.png diff --git a/Web/css/seekbars/seekbars.css b/build/mobile/css/seekbars/seekbars.css old mode 100755 new mode 100644 similarity index 100% rename from Web/css/seekbars/seekbars.css rename to build/mobile/css/seekbars/seekbars.css diff --git a/Web/css/switches/images/check/danger.png b/build/mobile/css/switches/images/check/danger.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/check/danger.png rename to build/mobile/css/switches/images/check/danger.png diff --git a/Web/css/switches/images/check/danger@1.5x.png b/build/mobile/css/switches/images/check/danger@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/check/danger@1.5x.png rename to build/mobile/css/switches/images/check/danger@1.5x.png diff --git a/Web/css/switches/images/check/danger@2x.png b/build/mobile/css/switches/images/check/danger@2x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/check/danger@2x.png rename to build/mobile/css/switches/images/check/danger@2x.png diff --git a/Web/css/switches/images/check/default.png b/build/mobile/css/switches/images/check/default.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/check/default.png rename to build/mobile/css/switches/images/check/default.png diff --git a/Web/css/switches/images/check/default@1.5x.png b/build/mobile/css/switches/images/check/default@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/check/default@1.5x.png rename to build/mobile/css/switches/images/check/default@1.5x.png diff --git a/Web/css/switches/images/check/default@2x.png b/build/mobile/css/switches/images/check/default@2x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/check/default@2x.png rename to build/mobile/css/switches/images/check/default@2x.png diff --git a/Web/css/switches/images/radio/danger.png b/build/mobile/css/switches/images/radio/danger.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/radio/danger.png rename to build/mobile/css/switches/images/radio/danger.png diff --git a/Web/css/switches/images/radio/danger@1.5x.png b/build/mobile/css/switches/images/radio/danger@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/radio/danger@1.5x.png rename to build/mobile/css/switches/images/radio/danger@1.5x.png diff --git a/Web/css/switches/images/radio/danger@2x.png b/build/mobile/css/switches/images/radio/danger@2x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/radio/danger@2x.png rename to build/mobile/css/switches/images/radio/danger@2x.png diff --git a/Web/css/switches/images/radio/default.png b/build/mobile/css/switches/images/radio/default.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/radio/default.png rename to build/mobile/css/switches/images/radio/default.png diff --git a/Web/css/switches/images/radio/default@1.5x.png b/build/mobile/css/switches/images/radio/default@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/radio/default@1.5x.png rename to build/mobile/css/switches/images/radio/default@1.5x.png diff --git a/Web/css/switches/images/radio/default@2x.png b/build/mobile/css/switches/images/radio/default@2x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/radio/default@2x.png rename to build/mobile/css/switches/images/radio/default@2x.png diff --git a/Web/css/switches/images/switch/background.png b/build/mobile/css/switches/images/switch/background.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/switch/background.png rename to build/mobile/css/switches/images/switch/background.png diff --git a/Web/css/switches/images/switch/background@1.5x.png b/build/mobile/css/switches/images/switch/background@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/switch/background@1.5x.png rename to build/mobile/css/switches/images/switch/background@1.5x.png diff --git a/Web/css/switches/images/switch/background_off.png b/build/mobile/css/switches/images/switch/background_off.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/switch/background_off.png rename to build/mobile/css/switches/images/switch/background_off.png diff --git a/Web/css/switches/images/switch/background_off@1.5x.png b/build/mobile/css/switches/images/switch/background_off@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/switches/images/switch/background_off@1.5x.png rename to build/mobile/css/switches/images/switch/background_off@1.5x.png diff --git a/Web/css/value_selector/images/icons/checked.png b/build/mobile/css/value_selector/images/icons/checked.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/icons/checked.png rename to build/mobile/css/value_selector/images/icons/checked.png diff --git a/Web/css/value_selector/images/icons/checked@1.5x.png b/build/mobile/css/value_selector/images/icons/checked@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/icons/checked@1.5x.png rename to build/mobile/css/value_selector/images/icons/checked@1.5x.png diff --git a/Web/css/value_selector/images/icons/checked@2x.png b/build/mobile/css/value_selector/images/icons/checked@2x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/icons/checked@2x.png rename to build/mobile/css/value_selector/images/icons/checked@2x.png diff --git a/Web/css/value_selector/images/ui/affirmative.png b/build/mobile/css/value_selector/images/ui/affirmative.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/affirmative.png rename to build/mobile/css/value_selector/images/ui/affirmative.png diff --git a/Web/css/value_selector/images/ui/default.png b/build/mobile/css/value_selector/images/ui/default.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/default.png rename to build/mobile/css/value_selector/images/ui/default.png diff --git a/Web/css/value_selector/images/ui/gradient.png b/build/mobile/css/value_selector/images/ui/gradient.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/gradient.png rename to build/mobile/css/value_selector/images/ui/gradient.png diff --git a/Web/css/value_selector/images/ui/gradient@1.5x.png b/build/mobile/css/value_selector/images/ui/gradient@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/gradient@1.5x.png rename to build/mobile/css/value_selector/images/ui/gradient@1.5x.png diff --git a/Web/css/value_selector/images/ui/pattern.png b/build/mobile/css/value_selector/images/ui/pattern.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/pattern.png rename to build/mobile/css/value_selector/images/ui/pattern.png diff --git a/Web/css/value_selector/images/ui/shadow-invert.png b/build/mobile/css/value_selector/images/ui/shadow-invert.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/shadow-invert.png rename to build/mobile/css/value_selector/images/ui/shadow-invert.png diff --git a/Web/css/value_selector/images/ui/shadow-invert@1.5x.png b/build/mobile/css/value_selector/images/ui/shadow-invert@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/shadow-invert@1.5x.png rename to build/mobile/css/value_selector/images/ui/shadow-invert@1.5x.png diff --git a/Web/css/value_selector/images/ui/shadow-invert@2x.png b/build/mobile/css/value_selector/images/ui/shadow-invert@2x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/shadow-invert@2x.png rename to build/mobile/css/value_selector/images/ui/shadow-invert@2x.png diff --git a/Web/css/value_selector/images/ui/shadow.png b/build/mobile/css/value_selector/images/ui/shadow.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/shadow.png rename to build/mobile/css/value_selector/images/ui/shadow.png diff --git a/Web/css/value_selector/images/ui/shadow@1.5x.png b/build/mobile/css/value_selector/images/ui/shadow@1.5x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/shadow@1.5x.png rename to build/mobile/css/value_selector/images/ui/shadow@1.5x.png diff --git a/Web/css/value_selector/images/ui/shadow@2x.png b/build/mobile/css/value_selector/images/ui/shadow@2x.png old mode 100755 new mode 100644 similarity index 100% rename from Web/css/value_selector/images/ui/shadow@2x.png rename to build/mobile/css/value_selector/images/ui/shadow@2x.png diff --git a/build/mobile/index.html b/build/mobile/index.html new file mode 100644 index 0000000..ecb646d --- /dev/null +++ b/build/mobile/index.html @@ -0,0 +1,263 @@ + + + + + Sketchy + + + + + + +
    + + +

    Sketchy

    + + + +
    + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/mobile/js/Untitled Document b/build/mobile/js/Untitled Document new file mode 100644 index 0000000..e69de29 diff --git a/build/mobile/js/diff.js b/build/mobile/js/diff.js new file mode 100644 index 0000000..417dc8b --- /dev/null +++ b/build/mobile/js/diff.js @@ -0,0 +1 @@ +$(document).ready(function(){$("*").off("click mousemove mousedown mouseup mouseleave").on("click mousemove mousedown mouseup mouseleave",function(a){return a.preventDefault,!1}),$('a[href^="http"]').tap(function(a){a.preventDefault();{var b=$(this).attr("href");new MozActivity({name:"view",data:{type:"url",url:b}})}}),$('a[href^="mailto"]').tap(function(a){a.preventDefault();var b=/mailto:(.*)/.exec($(this).attr("href"))[1],b=new MozActivity({name:"new",data:{type:"mail",url:b}})}),window.save=function(){switch(save.background){case"white":c.fillStyle="white",c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.fillStyle=settings.color,c.globalCompositeOperation=settings.composite;break;case"current color":c.fillStyle=settings.bg,c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.globalCompositeOperation=settings.composite}var a=$c[0].toDataURL();if("sketchy project"==save.type){var b,d=JSON.parse(localStorage.getItem("projects"));d&&d.some(function(a,c){return a.name==save["file name"]?(b=c,!0):!1})?(console.log(b),d[b]={name:save["file name"],data:a,points:window.points,settings:settings},localStorage.setItem("projects",JSON.stringify(d))):d?d.push({name:save["file name"],data:a,points:window.points}):d=[{name:save["file name"],data:a,points:window.points}],localStorage.setItem("projects",JSON.stringify(d))}else window.open(a,"_blank").focus();c.putImageData(window.points.history[window.points.history.last].data,0,0)},window.load=function(){var a=JSON.parse(localStorage.getItem("projects")).filter(function(a){return a.name==load.file})[0],b=document.createElement("img");b.src=a.data,b.onload=function(){c.clearRect(0,0,width(),height()),c.drawImage(b,0,0),window.points=a.points,window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]},{data:c.getImageData(0,0,width(),height()),points:a.points}],$c.first().css("background",a.settings.bg),window.settings.bg=a.settings.bg}},localStorage.getItem("sawTips")!=settings.version&&($(".tour").removeClass("hidden"),localStorage.setItem("sawTips",settings.version))}); \ No newline at end of file diff --git a/build/mobile/js/events.js b/build/mobile/js/events.js new file mode 100644 index 0000000..6c0a2e6 --- /dev/null +++ b/build/mobile/js/events.js @@ -0,0 +1 @@ +"use strict";$(window).resize(sizeAndPos),$(document).ready(function(){$(".menu").on("click tap",function(){$("#menu").toggleClass("pulled")}),$(".save").on("click tap",function(){$("#save").removeClass("hidden")}),$(".load").on("click tap",function(){$("#load").removeClass("hidden"),$("#load li").remove();var a=JSON.parse(localStorage.getItem("projects"));if(!a||a.length<1)return void $("#load ol").append($("

    No sketch found.

    "));for(var c=0,d=a.length;d>c;c++)$("#load ol").append($("
  • "));b.find("li").off("click").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Transparent"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2) li").removeClass("hidden")})}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Transparent"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2) li").removeClass("hidden")}),$c.last().on("mousedown touchstart",function(a){a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]);var b=relative(a.pageX,a.pageY);startPoint(b.x,b.y),window.active=!0}).on("mousemove touchmove",function(a){if(a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]),window.active&&"line"!=settings.type){var b=relative(a.pageX,a.pageY);drawPoint(b.x,b.y)}}).on("mouseup touchend",function(a){if(a.preventDefault(),window.active=!1,"eraser"!=settings.type){if(window.points.history.last div").addClass("hidden"),$("#menu div.options > .general, #menu div.options > ."+c).removeClass("hidden")),$(this).parents("form").addClass("hidden")}),a.submit(function(a){a.preventDefault(),$(this).addClass("hidden")});var b=$("form.confirm");b.each(function(){$(this).find("li").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$(this).find("button").last().on("click tap",function(a){a.preventDefault();var b=$(this).parents("form").attr("id");$(this).parents("form").find("h1").each(function(a){if(a>0){var c=$(this).html().toLowerCase(),d=$(this).parent().find("ol:nth-of-type("+a+") li[aria-selected] span").html();"file name"!==c&&"file"!==c&&(d=d.toLowerCase()),window[b][c]=d}}),$(this).parents("form").addClass("hidden"),window[b]()}),$(this).find("button").first().on("click tap",function(a){a.preventDefault(),$(this).parents("form").addClass("hidden")})});var d=$('button[id^="set"]');d.each(function(){var a=/set(.*)/.exec($(this).attr("id"))[1];return"color"==a||"bg"==a?$(this).on("click tap",function(){$(".picker").removeClass("hidden"),$(".picker").attr("data-caller",a)}):void $(this).on("click tap",function(b){b.preventDefault(),$('form[id="'+a+'"]').removeClass("hidden")})});var e;$('div[role="slider"] button').on("mousedown touchstart",function(){$(this).attr("data-moving","true"),e||(e=$('div[role="slider"] button').offset().left)}).on("mousemove touchmove",function(a){if($(this).attr("data-moving")){a.changedTouches&&(a=a.changedTouches[0]);var b=parseInt(a.pageX-e-15),c=$("."+$(this).parents('div[role="slider"]').attr("class")),d=c.find("progress"),f=+d.attr("max"),g=+d.attr("min");if(f>=b&&b>=g){c.find("button").css("left",b+"%"),d.attr("value",b);var h=c.attr("class");settings[h]=b,$("#"+h+" span").html(b)}}}).on("mouseup mouseleave touchend",function(){$(this).removeAttr("data-moving")}),$(".fill, .stroke").on("click tap",function(){var a=$("."+$(this).attr("class")).find("span");"Yes"==a.html()?(a.html("No"),settings[$(this).attr("class")]=!1):(a.html("Yes"),settings[$(this).attr("class")]=!0)}),$(".close, .tour button").on("click tap",function(){$(this).parent().addClass("hidden")}),$("#clear").on("click tap",function(){c.clear();var a=window.points.history;window.points=[],window.points.history=a,window.points.history.last=a&&a>=c-f&&d+f>=b&&b>=d-f?!0:!1}function draw(a,b,c,d,e,f){if(e=e||{},f)var g=window.o;else var g=window.c;g.beginPath(),g.globalCompositeOperation="eraser"==settings.type?"destination-out":e.composite||settings.composite,g.lineCap=e.lineCap||settings.lineCap,g.lineJoin=e.lineJoin||settings.lineJoin,g.strokeStyle=e.color||settings.color,g.fillStyle=e.color||settings.color,g.lineWidth=(e.lineWidth||settings.lineWidth)/10,g.moveTo(a,b),g.lineTo(c,d),(!e.noStroke||settings.noStroke)&&g.stroke(),(e.fill||settings.fill)&&g.fill()}function mark(a,b){var c=window.o;c.beginPath(),c.fillStyle="red",c.arc(a,b,3,0,2*Math.PI),c.fill()}function erase(a,b,c,d,e){var e=e||{},f=window.c;f.beginPath(),f.lineWidth=(e.lineWidth||settings.lineWidth)/10,f.globalCompositeOperation="source-out",f.moveTo(a,b),f.lineTo(c,d),window.points=window.points.filter(function(e){return threshold(e.x,e.y,a,b,f.lineWidth)||threshold(e.x,e.y,c,d,f.lineWidth)?!1:!0})}function line(a,b,c){var c=c||{},d=window.o;d.beginPath(),d.lineCap=c.lineCap||settings.lineCap,d.lineJoin=c.lineJoin||settings.lineJoin,d.strokeStyle=c.color||settings.color,d.fillStyle=c.color||settings.color,d.lineWidth=(c.lineWidth||settings.lineWidth)/10;var e=settings.drawingLine.length-1;d.moveTo(settings.drawingLine[e].x,settings.drawingLine[e].y),d.lineTo(a,b),settings.drawingLine.push({x:a,y:b}),d.stroke(),(c.fill||settings.fill)&&d.fill()}function finishLine(a){var a=a||{},b=window.c;o.clear(),b.beginPath(),b.strokeStyle=a.color||settings.color,b.fillStyle=a.color||settings.color,b.lineWidth=(a.lineWidth||settings.lineWidth)/10,b.lineJoin=a.lineJoin||settings.lineJoin,b.lineCap=a.lineJoin||settings.lineJoin,b.moveTo(settings.drawingLine[0].x,settings.drawingLine[0].y);for(var c=1,d=settings.drawingLine.length;d>c;c++)b.lineTo(settings.drawingLine[c].x,settings.drawingLine[c].y);settings.stroke&&b.stroke(),settings.fill&&b.fill(),settings.drawingLine=[],window.points.history.push({data:b.getImageData(0,0,width(),height()),points:window.points.slice(0)}),window.points.history.last=window.points.history.length-1}function undo(){var a=window.points.history;if(a.last>1){var b=a[a.last-1];c.putImageData(b.data,0,0),window.points=b.points.slice(0),window.points.history=a,window.points.history.last=a.last-1}else c.clear(),window.points=[],window.points.history=a,window.points.history.last=0}function redo(){var a=window.points.history;if(a.last1&&(d&&threshold(d.x,d.y,a,b,f[0])||threshold(c.x,c.y,a,b,f[1]))?(window.active=!1,points[points.length-1].type="",points[points.length-1].start=void 0,void finishLine()):void points.push(e)}function drawPoint(a,b){var c=points[points.length-1];switch(c.type){case"eraser":erase(c.x,c.y,a,b);case"pencil":draw(c.x,c.y,a,b);var d={x:a,y:b,start:c.start,type:c.type};points.push(d);break;case"sketch":draw(c.x,c.y,a,b);var d={x:a,y:b,start:c.start,type:c.type};points.push(d);for(var e=0,f=points.length-1;f>e;e++)if(threshold(points[e].x,points[e].y,d.x,d.y,settings.connectTelorance)){var a=points[e].x-d.x,b=points[e].y-d.y,g=settings.lineWidth/20>.2?settings.lineWidth/20:.2;draw(points[e].x-.2*a,points[e].y-.2*b,d.x+.2*a,d.y+.2*b,{strokeStyle:"rgba(0,0,0,0.4)",lineWidth:g})}break;case"fur":draw(c.x,c.y,a,b);var d={x:a,y:b,start:c.start,type:c.type};points.push(d);for(var e=0,f=points.length-1;f>e;e++)if(threshold(points[e].x,points[e].y,d.x,d.y,settings.connectTelorance)){var a=points[e].x-d.x,b=points[e].y-d.y,h=settings.furLength/100||.2,g=settings.lineWidth/20>.2?settings.lineWidth/20:.2;draw(points[e].x+a*h,points[e].y+b*h,d.x-a*h,d.y-b*h,{strokeStyle:"rgba(0,0,0,0.4)",lineWidth:g})}break;case"shape":o.clear(),o.beginPath(),o.fillStyle=settings.color,o.strokeStyle=settings.color,o.lineWidth=settings.lineWidth/20;var i=settings.shapeStart;switch(settings.shape){case"circle":var j=Math.abs(a-i.x);o.arc(i.x,i.y,j,0,2*Math.PI),settings.comShape={type:"circle",x:i.x,y:i.y,radius:j};break;case"rectangle":var g=a-i.x,k=b-i.y;o.rect(i.x,i.y,g,k),settings.comShape={type:"rectangle",x:i.x,y:i.y,w:g,h:k};break;case"square":var g=a-i.x;o.rect(i.x,i.y,g,g),settings.comShape={type:"rectangle",x:i.x,y:i.y,w:g,h:g};break;case"triangle":var l=(a-i.x)/2,m=(b-i.y)/2;o.moveTo(i.x+l,i.y),o.lineTo(a,b),o.lineTo(i.x,b),o.lineTo(i.x+l,i.y),settings.comShape={type:"triangle",start:{x:i.x,y:i.y},x:a,y:b,dix:l,diy:m}}settings.fill&&o.fill(),settings.stroke&&o.stroke()}} \ No newline at end of file diff --git a/build/mobile/js/libs/color-picker-touch.js b/build/mobile/js/libs/color-picker-touch.js new file mode 100644 index 0000000..a4b5f79 --- /dev/null +++ b/build/mobile/js/libs/color-picker-touch.js @@ -0,0 +1 @@ +$(function(){"use strict";function a(a,b,c){a/=360,b/=100,c/=100;var d,e,f;if(0==b)d=e=f=c;else{var g=function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;d=g(i,h,a+1/3),e=g(i,h,a),f=g(i,h,a-1/3)}return{red:Math.round(255*d),green:Math.round(255*e),blue:Math.round(255*f)}}function b(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{hue:Math.round(360*d),saturation:Math.round(100*e),luminosity:Math.round(100*h)}}function c(a,b,c){return"#"+((1<<24)+(a<<16)+(b<<8)+c).toString(16).slice(1)}function d(a){var b=parseInt(a.replace("#",""),16),c=b>>16&255,d=b>>8&255,e=255&b;return{red:c,green:d,blue:e}}function e(a){var c=d(a);return b(c.red,c.green,c.blue)}function f(b,d,e){var f=a(b,d,e);return c(f.red,f.green,f.blue)}$.each($(".color-picker"),function(){function c(){var a=h.find(".pin").position(),b=l.width(),c=l.height();return{hue:Math.round(a.left/b*360),saturation:Math.round(a.top/c*100),luminosity:k.val()}}function d(){var b=c();switch(i.val()){case"HSL":j.val("hsl("+b.hue+", "+b.saturation+"%, "+b.luminosity+"%)");break;case"RGB":var d=a(b.hue,b.saturation,b.luminosity);j.val("rgb("+d.red+", "+d.green+", "+d.blue+")");break;case"Hex":j.val(f(b.hue,b.saturation,b.luminosity))}h.trigger("change")}function g(a){var b,c;50>=a?(b="0, 0, 0",c=1-a/100*2):(b="255, 255, 255",c=a/100*2-1),l.children().css("background-color","rgba("+b+", "+c+")")}var h=$(this),i=h.find(".format"),j=h.find(".color"),k=h.find("input[type=range]"),l=h.find(".spectrum"),m=h.find(".pin");i.on("change",function(){d()}),j.on("change",function(){var a;switch(i.val()){case"HSL":var c=$(this).val().match(/\d+/g);a={hue:c[0],saturation:c[1],luminosity:c[2]};break;case"RGB":var c=$(this).val().match(/\d+/g);a=b(c[0],c[1],c[2]);break;case"Hex":a=e($(this).val())}k.val(a.luminosity),g(a.luminosity),m.css({left:a.hue/360*100+"%",top:a.saturation+"%"}),h.trigger("change")}),k.on("change",function(){g($(this).val()),d()});var n=function(a){var b=l.offset(),c=l.width(),e=l.height(),f=a.changedTouches[0].clientX-b.left,g=a.changedTouches[0].clientY-b.top;0>f?f=0:f>=c&&(f=c),0>g?g=0:g>=e&&(g=e),m.css({left:f/c*100+"%",top:g/e*100+"%"}),d()};l.on("touchstart",function(a){a.preventDefault(),n(a),l.addClass("active"),$(document).on("touchmove",n)}),$(document).on("touchend",function(){l.removeClass("active"),$(document).off("touchmove",n)}),l.on("touchmove touchstart",n),h.on("change",function(){j.css("background-color",j.val()).toggleClass("dark",k.val()<=50)}),j.trigger("change")})}); \ No newline at end of file diff --git a/build/mobile/js/libs/color-picker.js b/build/mobile/js/libs/color-picker.js new file mode 100644 index 0000000..0563b45 --- /dev/null +++ b/build/mobile/js/libs/color-picker.js @@ -0,0 +1 @@ +$(function(){"use strict";function a(a,b,c){a/=360,b/=100,c/=100;var d,e,f;if(0==b)d=e=f=c;else{var g=function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;d=g(i,h,a+1/3),e=g(i,h,a),f=g(i,h,a-1/3)}return{red:Math.round(255*d),green:Math.round(255*e),blue:Math.round(255*f)}}function b(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{hue:Math.round(360*d),saturation:Math.round(100*e),luminosity:Math.round(100*h)}}function c(a,b,c){return"#"+((1<<24)+(a<<16)+(b<<8)+c).toString(16).slice(1)}function d(a){var b=parseInt(a.replace("#",""),16),c=b>>16&255,d=b>>8&255,e=255&b;return{red:c,green:d,blue:e}}function e(a){var c=d(a);return b(c.red,c.green,c.blue)}function f(b,d,e){var f=a(b,d,e);return c(f.red,f.green,f.blue)}$.each($(".color-picker"),function(){function c(){var a=h.find(".pin").position(),b=l.width(),c=l.height();return{hue:Math.round(a.left/b*360),saturation:Math.round(a.top/c*100),luminosity:k.val()}}function d(){var b=c();switch(i.val()){case"HSL":j.val("hsl("+b.hue+", "+b.saturation+"%, "+b.luminosity+"%)");break;case"RGB":var d=a(b.hue,b.saturation,b.luminosity);j.val("rgb("+d.red+", "+d.green+", "+d.blue+")");break;case"Hex":j.val(f(b.hue,b.saturation,b.luminosity))}h.trigger("change")}function g(a){var b,c;50>=a?(b="0, 0, 0",c=1-a/100*2):(b="255, 255, 255",c=a/100*2-1),l.children().css("background-color","rgba("+b+", "+c+")")}var h=$(this),i=h.find(".format"),j=h.find(".color"),k=h.find("input[type=range]"),l=h.find(".spectrum"),m=h.find(".pin");i.on("change",function(){d()}),j.on("change",function(){var a;switch(i.val()){case"HSL":var c=$(this).val().match(/\d+/g);a={hue:c[0],saturation:c[1],luminosity:c[2]};break;case"RGB":var c=$(this).val().match(/\d+/g);a=b(c[0],c[1],c[2]);break;case"Hex":a=e($(this).val())}k.val(a.luminosity),g(a.luminosity),m.css({left:a.hue/360*100+"%",top:a.saturation+"%"}),h.trigger("change")}),k.on("change",function(){g($(this).val()),d()});var n=function(a){var b=l.offset(),c=l.width(),e=l.height(),f=a.clientX-b.left,g=a.clientY-b.top;0>f?f=0:f>=c&&(f=c),0>g?g=0:g>=e&&(g=e),m.css({left:f/c*100+"%",top:g/e*100+"%"}),d()};l.on("mousedown",function(a){a.preventDefault(),n(a),l.addClass("active"),$(document).on("mousemove",n)}),$(document).on("mouseup",function(){l.removeClass("active"),$(document).off("mousemove",n)}),l.on("touchmove touchstart",n),h.on("change",function(){j.css("background-color",j.val()).toggleClass("dark",k.val()<=50)}),j.trigger("change")})}); \ No newline at end of file diff --git a/build/mobile/js/libs/mobilebrowsers.js b/build/mobile/js/libs/mobilebrowsers.js new file mode 100644 index 0000000..a7caf2a --- /dev/null +++ b/build/mobile/js/libs/mobilebrowsers.js @@ -0,0 +1 @@ +!function(a){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))&&(window.mobile=!0)}(navigator.userAgent||navigator.vendor||window.opera,"http://detectmobilebrowser.com/mobile"); \ No newline at end of file diff --git a/build/mobile/js/libs/stack.js b/build/mobile/js/libs/stack.js new file mode 100644 index 0000000..f9c8d3b --- /dev/null +++ b/build/mobile/js/libs/stack.js @@ -0,0 +1 @@ +!function(a){a.fn.end=function(){return this.prevObject||a()},a.fn.andSelf=function(){return this.add(this.prevObject||a())},"filter,add,not,eq,first,last,find,closest,parents,parent,children,siblings".split(",").forEach(function(b){var c=a.fn[b];a.fn[b]=function(){var a=c.apply(this,arguments);return a.prevObject=this,a}})}(Zepto); \ No newline at end of file diff --git a/build/mobile/js/libs/touch.js b/build/mobile/js/libs/touch.js new file mode 100644 index 0000000..4981bd7 --- /dev/null +++ b/build/mobile/js/libs/touch.js @@ -0,0 +1 @@ +!function(a){function b(a,b,c,d){return Math.abs(a-b)>=Math.abs(c-d)?a-b>0?"Left":"Right":c-d>0?"Up":"Down"}function c(){k=null,m.last&&(m.el.trigger("longTap"),window.touchEl=m.el,m={})}function d(){k&&clearTimeout(k),k=null}function e(){h&&clearTimeout(h),i&&clearTimeout(i),j&&clearTimeout(j),k&&clearTimeout(k),h=i=j=k=null,m={}}function f(a){return("touch"==a.pointerType||a.pointerType==a.MSPOINTER_TYPE_TOUCH)&&a.isPrimary}function g(a,b){return a.type=="pointer"+b||a.type.toLowerCase()=="mspointer"+b}var h,i,j,k,l,m={},n=750;a(document).ready(function(){var o,p,q,r,s=0,t=0;"MSGesture"in window&&(l=new MSGesture,l.target=document.body),a(document).bind("MSGestureEnd",function(a){var b=a.velocityX>1?"Right":a.velocityX<-1?"Left":a.velocityY>1?"Down":a.velocityY<-1?"Up":null;b&&(m.el.trigger("swipe"),m.el.trigger("swipe"+b))}).on("touchstart MSPointerDown pointerdown",function(b){(!(r=g(b,"down"))||f(b))&&(q=r?b:b.touches[0],b.touches&&1===b.touches.length&&m.x2&&(m.x2=void 0,m.y2=void 0),o=Date.now(),p=o-(m.last||o),m.el=a("tagName"in q.target?q.target:q.target.parentNode),h&&clearTimeout(h),m.x1=q.pageX,m.y1=q.pageY,p>0&&250>=p&&(m.isDoubleTap=!0),m.last=o,k=setTimeout(c,n),l&&r&&l.addPointer(b.pointerId))}).on("touchmove MSPointerMove pointermove",function(b){(!(r=g(b,"move"))||f(b))&&(q=r?b:b.touches[0],a.moveCancel&&d(),m.x2=q.pageX,m.y2=q.pageY,s+=Math.abs(m.x1-m.x2),t+=Math.abs(m.y1-m.y2))}).on("touchend MSPointerUp pointerup",function(c){(!(r=g(c,"up"))||f(c))&&(d(),m.x2&&Math.abs(m.x1-m.x2)>30||m.y2&&Math.abs(m.y1-m.y2)>30?j=setTimeout(function(){m.el.trigger("swipe"),m.el.trigger("swipe"+b(m.x1,m.x2,m.y1,m.y2)),m={}},0):"last"in m&&(30>s&&30>t?i=setTimeout(function(){var b=a.Event("tap");b.cancelTouch=e,m.el.trigger(b),m.isDoubleTap?(m.el&&m.el.trigger("doubleTap"),m={}):h=setTimeout(function(){h=null,m.el&&m.el.trigger("singleTap"),m={}},250)},0):m={}),s=t=0)}).on("touchcancel MSPointerCancel pointercancel",e),a(window).on("scroll",e)}),["swipe","swipeLeft","swipeRight","swipeUp","swipeDown","doubleTap","tap","singleTap","longTap"].forEach(function(b){a.fn[b]=function(a){return this.on(b,a)}})}(Zepto); \ No newline at end of file diff --git a/build/mobile/js/libs/yepnope.min.js b/build/mobile/js/libs/yepnope.min.js new file mode 100644 index 0000000..bd57852 --- /dev/null +++ b/build/mobile/js/libs/yepnope.min.js @@ -0,0 +1 @@ +!function(a,b,c){function d(a){return"[object Function]"==q.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=r.shift();s=1,a?a.t?o(function(){("c"==a.t?m.injectCss:m.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):s=0}function i(a,c,d,e,f,i,j){function k(b){if(!n&&g(l.readyState)&&(t.r=n=1,!s&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&o(function(){v.removeChild(l)},50);for(var d in A[c])A[c].hasOwnProperty(d)&&A[c][d].onload()}}var j=j||m.errorTimeout,l=b.createElement(a),n=0,q=0,t={t:d,s:c,e:f,a:i,x:j};1===A[c]&&(q=1,A[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,q)},r.splice(e,0,t),"img"!=a&&(q||2===A[c]?(v.insertBefore(l,u?null:p),o(k,j)):A[c].push(l))}function j(a,b,c,d,f){return s=0,b=b||"j",e(a)?i("c"==b?x:w,a,b,this.i++,c,d,f):(r.splice(this.i++,0,a),1==r.length&&h()),this}function k(){var a=m;return a.loader={load:j,i:0},a}var l,m,n=b.documentElement,o=a.setTimeout,p=b.getElementsByTagName("script")[0],q={}.toString,r=[],s=0,t="MozAppearance"in n.style,u=t&&!!b.createRange().compareNode,v=u?n:p.parentNode,n=a.opera&&"[object Opera]"==q.call(a.opera),n=!!b.attachEvent&&!n,w=t?"object":n?"script":"img",x=n?"script":w,y=Array.isArray||function(a){return"[object Array]"==q.call(a)},z=[],A={},B={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}};m=function(a){function b(a){var b,c,d,a=a.split("!"),e=z.length,f=a.pop(),g=a.length,f={url:f,origUrl:f,prefixes:a};for(c=0;g>c;c++)d=a[c].split("="),(b=B[d.shift()])&&(f=b(f,d));for(c=0;e>c;c++)f=z[c](f);return f}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(A[i.url]?i.noexec=!0:A[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),A[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(l=function(){var a=[].slice.call(arguments);m.apply(this,a),n()}),g(a,l,b,0,j);else if(Object(a)===a)for(i in h=function(){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c}(),a)a.hasOwnProperty(i)&&(!c&&!--h&&(d(l)?l=function(){var a=[].slice.call(arguments);m.apply(this,a),n()}:l[i]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),n()}}(m[i])),g(a[i],l,b,i,j))}else!c&&n()}var h,i,j=!!a.test,k=a.load||a.both,l=a.callback||f,m=l,n=a.complete||f;c(j?a.yep:a.nope,!!k),k&&c(k)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(y(a))for(i=0;i0?y.fn.concat.apply([],a):a}function k(a){return a.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function l(a){return a in H?H[a]:H[a]=new RegExp("(^|\\s)"+a+"(\\s|$)")}function m(a,b){return"number"!=typeof b||I[k(a)]?b:b+"px"}function n(a){var b,c;return G[a]||(b=F.createElement(a),F.body.appendChild(b),c=getComputedStyle(b,"").getPropertyValue("display"),b.parentNode.removeChild(b),"none"==c&&(c="block"),G[a]=c),G[a]}function o(a){return"children"in a?D.call(a.children):y.map(a.childNodes,function(a){return 1==a.nodeType?a:void 0})}function p(a,b,c){for(x in b)c&&(f(b[x])||g(b[x]))?(f(b[x])&&!f(a[x])&&(a[x]={}),g(b[x])&&!g(a[x])&&(a[x]=[]),p(a[x],b[x],c)):b[x]!==w&&(a[x]=b[x])}function q(a,b){return null==b?y(a):y(a).filter(b)}function r(a,c,d,e){return b(c)?c.call(a,d,e):c}function s(a,b,c){null==c?a.removeAttribute(b):a.setAttribute(b,c)}function t(a,b){var c=a.className,d=c&&c.baseVal!==w;return b===w?d?c.baseVal:c:void(d?c.baseVal=b:a.className=b)}function u(a){var b;try{return a?"true"==a||("false"==a?!1:"null"==a?null:/^0/.test(a)||isNaN(b=Number(a))?/^[\[\{]/.test(a)?y.parseJSON(a):a:b):a}catch(c){return a}}function v(a,b){b(a);for(var c in a.childNodes)v(a.childNodes[c],b)}var w,x,y,z,A,B,C=[],D=C.slice,E=C.filter,F=window.document,G={},H={},I={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},J=/^\s*<(\w+|!)[^>]*>/,K=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,L=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,M=/^(?:body|html)$/i,N=/([A-Z])/g,O=["val","css","html","text","data","width","height","offset"],P=["after","prepend","before","append"],Q=F.createElement("table"),R=F.createElement("tr"),S={tr:F.createElement("tbody"),tbody:Q,thead:Q,tfoot:Q,td:R,th:R,"*":F.createElement("div")},T=/complete|loaded|interactive/,U=/^[\w-]*$/,V={},W=V.toString,X={},Y=F.createElement("div"),Z={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"};return X.matches=function(a,b){if(!b||!a||1!==a.nodeType)return!1;var c=a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.matchesSelector;if(c)return c.call(a,b);var d,e=a.parentNode,f=!e;return f&&(e=Y).appendChild(a),d=~X.qsa(e,b).indexOf(a),f&&Y.removeChild(a),d},A=function(a){return a.replace(/-+(.)?/g,function(a,b){return b?b.toUpperCase():""})},B=function(a){return E.call(a,function(b,c){return a.indexOf(b)==c})},X.fragment=function(a,b,c){var d,e,g;return K.test(a)&&(d=y(F.createElement(RegExp.$1))),d||(a.replace&&(a=a.replace(L,"<$1>")),b===w&&(b=J.test(a)&&RegExp.$1),b in S||(b="*"),g=S[b],g.innerHTML=""+a,d=y.each(D.call(g.childNodes),function(){g.removeChild(this)})),f(c)&&(e=y(d),y.each(c,function(a,b){O.indexOf(a)>-1?e[a](b):e.attr(a,b)})),d},X.Z=function(a,b){return a=a||[],a.__proto__=y.fn,a.selector=b||"",a},X.isZ=function(a){return a instanceof X.Z},X.init=function(a,c){var d;if(!a)return X.Z();if("string"==typeof a)if(a=a.trim(),"<"==a[0]&&J.test(a))d=X.fragment(a,RegExp.$1,c),a=null;else{if(c!==w)return y(c).find(a);d=X.qsa(F,a)}else{if(b(a))return y(F).ready(a);if(X.isZ(a))return a;if(g(a))d=i(a);else if(e(a))d=[a],a=null;else if(J.test(a))d=X.fragment(a.trim(),RegExp.$1,c),a=null;else{if(c!==w)return y(c).find(a);d=X.qsa(F,a)}}return X.Z(d,a)},y=function(a,b){return X.init(a,b)},y.extend=function(a){var b,c=D.call(arguments,1);return"boolean"==typeof a&&(b=a,a=c.shift()),c.forEach(function(c){p(a,c,b)}),a},X.qsa=function(a,b){var c,e="#"==b[0],f=!e&&"."==b[0],g=e||f?b.slice(1):b,h=U.test(g);return d(a)&&h&&e?(c=a.getElementById(g))?[c]:[]:1!==a.nodeType&&9!==a.nodeType?[]:D.call(h&&!e?f?a.getElementsByClassName(g):a.getElementsByTagName(b):a.querySelectorAll(b))},y.contains=function(a,b){return a!==b&&a.contains(b)},y.type=a,y.isFunction=b,y.isWindow=c,y.isArray=g,y.isPlainObject=f,y.isEmptyObject=function(a){var b;for(b in a)return!1;return!0},y.inArray=function(a,b,c){return C.indexOf.call(b,a,c)},y.camelCase=A,y.trim=function(a){return null==a?"":String.prototype.trim.call(a)},y.uuid=0,y.support={},y.expr={},y.map=function(a,b){var c,d,e,f=[];if(h(a))for(d=0;d=0?a:a+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(a){return C.every.call(this,function(b,c){return a.call(b,c,b)!==!1}),this},filter:function(a){return b(a)?this.not(this.not(a)):y(E.call(this,function(b){return X.matches(b,a)}))},add:function(a,b){return y(B(this.concat(y(a,b))))},is:function(a){return this.length>0&&X.matches(this[0],a)},not:function(a){var c=[];if(b(a)&&a.call!==w)this.each(function(b){a.call(this,b)||c.push(this)});else{var d="string"==typeof a?this.filter(a):h(a)&&b(a.item)?D.call(a):y(a);this.forEach(function(a){d.indexOf(a)<0&&c.push(a)})}return y(c)},has:function(a){return this.filter(function(){return e(a)?y.contains(this,a):y(this).find(a).size()})},eq:function(a){return-1===a?this.slice(a):this.slice(a,+a+1)},first:function(){var a=this[0];return a&&!e(a)?a:y(a)},last:function(){var a=this[this.length-1];return a&&!e(a)?a:y(a)},find:function(a){var b,c=this;return b="object"==typeof a?y(a).filter(function(){var a=this;return C.some.call(c,function(b){return y.contains(b,a)})}):1==this.length?y(X.qsa(this[0],a)):this.map(function(){return X.qsa(this,a)})},closest:function(a,b){var c=this[0],e=!1;for("object"==typeof a&&(e=y(a));c&&!(e?e.indexOf(c)>=0:X.matches(c,a));)c=c!==b&&!d(c)&&c.parentNode;return y(c)},parents:function(a){for(var b=[],c=this;c.length>0;)c=y.map(c,function(a){return(a=a.parentNode)&&!d(a)&&b.indexOf(a)<0?(b.push(a),a):void 0});return q(b,a)},parent:function(a){return q(B(this.pluck("parentNode")),a)},children:function(a){return q(this.map(function(){return o(this)}),a)},contents:function(){return this.map(function(){return D.call(this.childNodes)})},siblings:function(a){return q(this.map(function(a,b){return E.call(o(b.parentNode),function(a){return a!==b})}),a)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(a){return y.map(this,function(b){return b[a]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=n(this.nodeName))})},replaceWith:function(a){return this.before(a).remove()},wrap:function(a){var c=b(a);if(this[0]&&!c)var d=y(a).get(0),e=d.parentNode||this.length>1;return this.each(function(b){y(this).wrapAll(c?a.call(this,b):e?d.cloneNode(!0):d)})},wrapAll:function(a){if(this[0]){y(this[0]).before(a=y(a));for(var b;(b=a.children()).length;)a=b.first();y(a).append(this)}return this},wrapInner:function(a){var c=b(a);return this.each(function(b){var d=y(this),e=d.contents(),f=c?a.call(this,b):a;e.length?e.wrapAll(f):d.append(f)})},unwrap:function(){return this.parent().each(function(){y(this).replaceWith(y(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(a){return this.each(function(){var b=y(this);(a===w?"none"==b.css("display"):a)?b.show():b.hide()})},prev:function(a){return y(this.pluck("previousElementSibling")).filter(a||"*")},next:function(a){return y(this.pluck("nextElementSibling")).filter(a||"*")},html:function(a){return 0===arguments.length?this.length>0?this[0].innerHTML:null:this.each(function(b){var c=this.innerHTML;y(this).empty().append(r(this,a,b,c))})},text:function(a){return 0===arguments.length?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=a===w?"":""+a})},attr:function(a,b){var c;return"string"==typeof a&&b===w?0==this.length||1!==this[0].nodeType?w:"value"==a&&"INPUT"==this[0].nodeName?this.val():!(c=this[0].getAttribute(a))&&a in this[0]?this[0][a]:c:this.each(function(c){if(1===this.nodeType)if(e(a))for(x in a)s(this,x,a[x]);else s(this,a,r(this,b,c,this.getAttribute(a)))})},removeAttr:function(a){return this.each(function(){1===this.nodeType&&s(this,a)})},prop:function(a,b){return a=Z[a]||a,b===w?this[0]&&this[0][a]:this.each(function(c){this[a]=r(this,b,c,this[a])})},data:function(a,b){var c=this.attr("data-"+a.replace(N,"-$1").toLowerCase(),b);return null!==c?u(c):w},val:function(a){return 0===arguments.length?this[0]&&(this[0].multiple?y(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value):this.each(function(b){this.value=r(this,a,b,this.value)})},offset:function(a){if(a)return this.each(function(b){var c=y(this),d=r(this,a,b,c.offset()),e=c.offsetParent().offset(),f={top:d.top-e.top,left:d.left-e.left};"static"==c.css("position")&&(f.position="relative"),c.css(f)});if(0==this.length)return null;var b=this[0].getBoundingClientRect();return{left:b.left+window.pageXOffset,top:b.top+window.pageYOffset,width:Math.round(b.width),height:Math.round(b.height)}},css:function(b,c){if(arguments.length<2){var d=this[0],e=getComputedStyle(d,"");if(!d)return;if("string"==typeof b)return d.style[A(b)]||e.getPropertyValue(b);if(g(b)){var f={};return y.each(g(b)?b:[b],function(a,b){f[b]=d.style[A(b)]||e.getPropertyValue(b)}),f}}var h="";if("string"==a(b))c||0===c?h=k(b)+":"+m(b,c):this.each(function(){this.style.removeProperty(k(b))});else for(x in b)b[x]||0===b[x]?h+=k(x)+":"+m(x,b[x])+";":this.each(function(){this.style.removeProperty(k(x))});return this.each(function(){this.style.cssText+=";"+h})},index:function(a){return a?this.indexOf(y(a)[0]):this.parent().children().indexOf(this[0])},hasClass:function(a){return a?C.some.call(this,function(a){return this.test(t(a))},l(a)):!1},addClass:function(a){return a?this.each(function(b){z=[];var c=t(this),d=r(this,a,b,c);d.split(/\s+/g).forEach(function(a){y(this).hasClass(a)||z.push(a)},this),z.length&&t(this,c+(c?" ":"")+z.join(" "))}):this},removeClass:function(a){return this.each(function(b){return a===w?t(this,""):(z=t(this),r(this,a,b,z).split(/\s+/g).forEach(function(a){z=z.replace(l(a)," ")}),t(this,z.trim()),void 0)})},toggleClass:function(a,b){return a?this.each(function(c){var d=y(this),e=r(this,a,c,t(this));e.split(/\s+/g).forEach(function(a){(b===w?!d.hasClass(a):b)?d.addClass(a):d.removeClass(a)})}):this},scrollTop:function(a){if(this.length){var b="scrollTop"in this[0];return a===w?b?this[0].scrollTop:this[0].pageYOffset:this.each(b?function(){this.scrollTop=a}:function(){this.scrollTo(this.scrollX,a)})}},scrollLeft:function(a){if(this.length){var b="scrollLeft"in this[0];return a===w?b?this[0].scrollLeft:this[0].pageXOffset:this.each(b?function(){this.scrollLeft=a}:function(){this.scrollTo(a,this.scrollY)})}},position:function(){if(this.length){var a=this[0],b=this.offsetParent(),c=this.offset(),d=M.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(y(a).css("margin-top"))||0,c.left-=parseFloat(y(a).css("margin-left"))||0,d.top+=parseFloat(y(b[0]).css("border-top-width"))||0,d.left+=parseFloat(y(b[0]).css("border-left-width"))||0,{top:c.top-d.top,left:c.left-d.left}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||F.body;a&&!M.test(a.nodeName)&&"static"==y(a).css("position");)a=a.offsetParent;return a})}},y.fn.detach=y.fn.remove,["width","height"].forEach(function(a){var b=a.replace(/./,function(a){return a[0].toUpperCase()});y.fn[a]=function(e){var f,g=this[0];return e===w?c(g)?g["inner"+b]:d(g)?g.documentElement["scroll"+b]:(f=this.offset())&&f[a]:this.each(function(b){g=y(this),g.css(a,r(this,e,b,g[a]()))})}}),P.forEach(function(b,c){var d=c%2;y.fn[b]=function(){var b,e,f=y.map(arguments,function(c){return b=a(c),"object"==b||"array"==b||null==c?c:X.fragment(c)}),g=this.length>1;return f.length<1?this:this.each(function(a,b){e=d?b:b.parentNode,b=0==c?b.nextSibling:1==c?b.firstChild:2==c?b:null,f.forEach(function(a){if(g)a=a.cloneNode(!0);else if(!e)return y(a).remove();v(e.insertBefore(a,b),function(a){null!=a.nodeName&&"SCRIPT"===a.nodeName.toUpperCase()&&(!a.type||"text/javascript"===a.type)&&!a.src&&window.eval.call(window,a.innerHTML)})})})},y.fn[d?b+"To":"insert"+(c?"Before":"After")]=function(a){return y(a)[b](this),this}}),X.Z.prototype=y.fn,X.uniq=B,X.deserializeValue=u,y.zepto=X,y}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(a){function b(a){return a._zid||(a._zid=m++)}function c(a,c,f,g){if(c=d(c),c.ns)var h=e(c.ns);return(q[b(a)]||[]).filter(function(a){return!(!a||c.e&&a.e!=c.e||c.ns&&!h.test(a.ns)||f&&b(a.fn)!==b(f)||g&&a.sel!=g)})}function d(a){var b=(""+a).split(".");return{e:b[0],ns:b.slice(1).sort().join(" ")}}function e(a){return new RegExp("(?:^| )"+a.replace(" "," .* ?")+"(?: |$)")}function f(a,b){return a.del&&!s&&a.e in t||!!b}function g(a){return u[a]||s&&t[a]||a}function h(c,e,h,i,k,m,n){var o=b(c),p=q[o]||(q[o]=[]);e.split(/\s/).forEach(function(b){if("ready"==b)return a(document).ready(h);var e=d(b);e.fn=h,e.sel=k,e.e in u&&(h=function(b){var c=b.relatedTarget;return!c||c!==this&&!a.contains(this,c)?e.fn.apply(this,arguments):void 0}),e.del=m;var o=m||h;e.proxy=function(a){if(a=j(a),!a.isImmediatePropagationStopped()){a.data=i;var b=o.apply(c,a._args==l?[a]:[a].concat(a._args));return b===!1&&(a.preventDefault(),a.stopPropagation()),b}},e.i=p.length,p.push(e),"addEventListener"in c&&c.addEventListener(g(e.e),e.proxy,f(e,n))})}function i(a,d,e,h,i){var j=b(a);(d||"").split(/\s/).forEach(function(b){c(a,b,e,h).forEach(function(b){delete q[j][b.i],"removeEventListener"in a&&a.removeEventListener(g(b.e),b.proxy,f(b,i))})})}function j(b,c){return(c||!b.isDefaultPrevented)&&(c||(c=b),a.each(y,function(a,d){var e=c[a];b[a]=function(){return this[d]=v,e&&e.apply(c,arguments)},b[d]=w}),(c.defaultPrevented!==l?c.defaultPrevented:"returnValue"in c?c.returnValue===!1:c.getPreventDefault&&c.getPreventDefault())&&(b.isDefaultPrevented=v)),b}function k(a){var b,c={originalEvent:a};for(b in a)!x.test(b)&&a[b]!==l&&(c[b]=a[b]);return j(c,a)}var l,m=(a.zepto.qsa,1),n=Array.prototype.slice,o=a.isFunction,p=function(a){return"string"==typeof a},q={},r={},s="onfocusin"in window,t={focus:"focusin",blur:"focusout"},u={mouseenter:"mouseover",mouseleave:"mouseout"};r.click=r.mousedown=r.mouseup=r.mousemove="MouseEvents",a.event={add:h,remove:i},a.proxy=function(c,d){if(o(c)){var e=function(){return c.apply(d,arguments)};return e._zid=b(c),e}if(p(d))return a.proxy(c[d],c);throw new TypeError("expected function")},a.fn.bind=function(a,b,c){return this.on(a,b,c)},a.fn.unbind=function(a,b){return this.off(a,b)},a.fn.one=function(a,b,c,d){return this.on(a,b,c,d,1)};var v=function(){return!0},w=function(){return!1},x=/^([A-Z]|returnValue$|layer[XY]$)/,y={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};a.fn.delegate=function(a,b,c){return this.on(b,a,c)},a.fn.undelegate=function(a,b,c){return this.off(b,a,c)},a.fn.live=function(b,c){return a(document.body).delegate(this.selector,b,c),this},a.fn.die=function(b,c){return a(document.body).undelegate(this.selector,b,c),this},a.fn.on=function(b,c,d,e,f){var g,j,m=this;return b&&!p(b)?(a.each(b,function(a,b){m.on(a,c,d,b,f)}),m):(!p(c)&&!o(e)&&e!==!1&&(e=d,d=c,c=l),(o(d)||d===!1)&&(e=d,d=l),e===!1&&(e=w),m.each(function(l,m){f&&(g=function(a){return i(m,a.type,e),e.apply(this,arguments)}),c&&(j=function(b){var d,f=a(b.target).closest(c,m).get(0);return f&&f!==m?(d=a.extend(k(b),{currentTarget:f,liveFired:m}),(g||e).apply(f,[d].concat(n.call(arguments,1)))):void 0}),h(m,b,e,d,c,j||g)}))},a.fn.off=function(b,c,d){var e=this;return b&&!p(b)?(a.each(b,function(a,b){e.off(a,c,b)}),e):(!p(c)&&!o(d)&&d!==!1&&(d=c,c=l),d===!1&&(d=w),e.each(function(){i(this,b,d,c)}))},a.fn.trigger=function(b,c){return b=p(b)||a.isPlainObject(b)?a.Event(b):j(b),b._args=c,this.each(function(){"dispatchEvent"in this?this.dispatchEvent(b):a(this).triggerHandler(b,c)})},a.fn.triggerHandler=function(b,d){var e,f;return this.each(function(g,h){e=k(p(b)?a.Event(b):b),e._args=d,e.target=h,a.each(c(h,b.type||b),function(a,b){return f=b.proxy(e),e.isImmediatePropagationStopped()?!1:void 0})}),f},"focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(b){a.fn[b]=function(a){return a?this.bind(b,a):this.trigger(b)}}),["focus","blur"].forEach(function(b){a.fn[b]=function(a){return a?this.bind(b,a):this.each(function(){try{this[b]()}catch(a){}}),this}}),a.Event=function(a,b){p(a)||(b=a,a=b.type);var c=document.createEvent(r[a]||"Events"),d=!0;if(b)for(var e in b)"bubbles"==e?d=!!b[e]:c[e]=b[e];return c.initEvent(a,d,!0),j(c)}}(Zepto),function(a){function b(b,c,d){var e=a.Event(c);return a(b).trigger(e,d),!e.isDefaultPrevented()}function c(a,c,d,e){return a.global?b(c||s,d,e):void 0}function d(b){b.global&&0===a.active++&&c(b,null,"ajaxStart")}function e(b){b.global&&!--a.active&&c(b,null,"ajaxStop")}function f(a,b){var d=b.context;return b.beforeSend.call(d,a,b)===!1||c(b,d,"ajaxBeforeSend",[a,b])===!1?!1:void c(b,d,"ajaxSend",[a,b])}function g(a,b,d,e){var f=d.context,g="success";d.success.call(f,a,g,b),e&&e.resolveWith(f,[a,g,b]),c(d,f,"ajaxSuccess",[b,d,a]),i(g,b,d)}function h(a,b,d,e,f){var g=e.context;e.error.call(g,d,b,a),f&&f.rejectWith(g,[d,b,a]),c(e,g,"ajaxError",[d,e,a||b]),i(b,d,e)}function i(a,b,d){var f=d.context;d.complete.call(f,b,a),c(d,f,"ajaxComplete",[b,d]),e(d)}function j(){}function k(a){return a&&(a=a.split(";",2)[0]),a&&(a==x?"html":a==w?"json":u.test(a)?"script":v.test(a)&&"xml")||"text"}function l(a,b){return""==b?a:(a+"&"+b).replace(/[&?]{1,2}/,"?")}function m(b){b.processData&&b.data&&"string"!=a.type(b.data)&&(b.data=a.param(b.data,b.traditional)),b.data&&(!b.type||"GET"==b.type.toUpperCase())&&(b.url=l(b.url,b.data),b.data=void 0)}function n(b,c,d,e){var f=!a.isFunction(c);return{url:b,data:f?c:void 0,success:f?a.isFunction(d)?d:void 0:c,dataType:f?e||d:d}}function o(b,c,d,e){var f,g=a.isArray(c),h=a.isPlainObject(c);a.each(c,function(c,i){f=a.type(i),e&&(c=d?e:e+"["+(h||"object"==f||"array"==f?c:"")+"]"),!e&&g?b.add(i.name,i.value):"array"==f||!d&&"object"==f?o(b,i,d,c):b.add(c,i)})}var p,q,r=0,s=window.document,t=/)<[^<]*)*<\/script>/gi,u=/^(?:text|application)\/javascript/i,v=/^(?:text|application)\/xml/i,w="application/json",x="text/html",y=/^\s*$/;a.active=0,a.ajaxJSONP=function(b,c){if("type"in b){var d,e,i=b.jsonpCallback,j=(a.isFunction(i)?i():i)||"jsonp"+ ++r,k=s.createElement("script"),l=window[j],m=function(b){a(k).triggerHandler("error",b||"abort")},n={abort:m};return c&&c.promise(n),a(k).on("load error",function(f,i){clearTimeout(e),a(k).off().remove(),"error"!=f.type&&d?g(d[0],n,b,c):h(null,i||"error",n,b,c),window[j]=l,d&&a.isFunction(l)&&l(d[0]),l=d=void 0}),f(n,b)===!1?(m("abort"),n):(window[j]=function(){d=arguments},k.src=b.url.replace(/=\?/,"="+j),s.head.appendChild(k),b.timeout>0&&(e=setTimeout(function(){m("timeout")},b.timeout)),n)}return a.ajax(b)},a.ajaxSettings={type:"GET",beforeSend:j,success:j,error:j,complete:j,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:w,xml:"application/xml, text/xml",html:x,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0},a.ajax=function(b){var c=a.extend({},b||{}),e=a.Deferred&&a.Deferred();for(p in a.ajaxSettings)void 0===c[p]&&(c[p]=a.ajaxSettings[p]);d(c),c.crossDomain||(c.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(c.url)&&RegExp.$2!=window.location.host),c.url||(c.url=window.location.toString()),m(c),c.cache===!1&&(c.url=l(c.url,"_="+Date.now()));var i=c.dataType,n=/=\?/.test(c.url);if("jsonp"==i||n)return n||(c.url=l(c.url,c.jsonp?c.jsonp+"=?":c.jsonp===!1?"":"callback=?")),a.ajaxJSONP(c,e);var o,r=c.accepts[i],s={},t=function(a,b){s[a.toLowerCase()]=[a,b]},u=/^([\w-]+:)\/\//.test(c.url)?RegExp.$1:window.location.protocol,v=c.xhr(),w=v.setRequestHeader;if(e&&e.promise(v),c.crossDomain||t("X-Requested-With","XMLHttpRequest"),t("Accept",r||"*/*"),(r=c.mimeType||r)&&(r.indexOf(",")>-1&&(r=r.split(",",2)[0]),v.overrideMimeType&&v.overrideMimeType(r)),(c.contentType||c.contentType!==!1&&c.data&&"GET"!=c.type.toUpperCase())&&t("Content-Type",c.contentType||"application/x-www-form-urlencoded"),c.headers)for(q in c.headers)t(q,c.headers[q]);if(v.setRequestHeader=t,v.onreadystatechange=function(){if(4==v.readyState){v.onreadystatechange=j,clearTimeout(o);var b,d=!1;if(v.status>=200&&v.status<300||304==v.status||0==v.status&&"file:"==u){i=i||k(c.mimeType||v.getResponseHeader("content-type")),b=v.responseText;try{"script"==i?(1,eval)(b):"xml"==i?b=v.responseXML:"json"==i&&(b=y.test(b)?null:a.parseJSON(b))}catch(f){d=f}d?h(d,"parsererror",v,c,e):g(b,v,c,e)}else h(v.statusText||null,v.status?"error":"abort",v,c,e)}},f(v,c)===!1)return v.abort(),h(null,"abort",v,c,e),v;if(c.xhrFields)for(q in c.xhrFields)v[q]=c.xhrFields[q];var x="async"in c?c.async:!0;v.open(c.type,c.url,x,c.username,c.password);for(q in s)w.apply(v,s[q]);return c.timeout>0&&(o=setTimeout(function(){v.onreadystatechange=j,v.abort(),h(null,"timeout",v,c,e)},c.timeout)),v.send(c.data?c.data:null),v},a.get=function(){return a.ajax(n.apply(null,arguments))},a.post=function(){var b=n.apply(null,arguments);return b.type="POST",a.ajax(b)},a.getJSON=function(){var b=n.apply(null,arguments);return b.dataType="json",a.ajax(b)},a.fn.load=function(b,c,d){if(!this.length)return this;var e,f=this,g=b.split(/\s/),h=n(b,c,d),i=h.success;return g.length>1&&(h.url=g[0],e=g[1]),h.success=function(b){f.html(e?a("
    ").html(b.replace(t,"")).find(e):b),i&&i.apply(f,arguments)},a.ajax(h),this};var z=encodeURIComponent;a.param=function(a,b){var c=[];return c.add=function(a,b){this.push(z(a)+"="+z(b))},o(c,a,b),c.join("&").replace(/%20/g,"+")}}(Zepto),function(a){a.fn.serializeArray=function(){var b,c=[];return a([].slice.call(this.get(0).elements)).each(function(){b=a(this);var d=b.attr("type");"fieldset"!=this.nodeName.toLowerCase()&&!this.disabled&&"submit"!=d&&"reset"!=d&&"button"!=d&&("radio"!=d&&"checkbox"!=d||this.checked)&&c.push({name:b.attr("name"),value:b.val()})}),c},a.fn.serialize=function(){var a=[];return this.serializeArray().forEach(function(b){a.push(encodeURIComponent(b.name)+"="+encodeURIComponent(b.value))}),a.join("&")},a.fn.submit=function(b){if(b)this.bind("submit",b);else if(this.length){var c=a.Event("submit");this.eq(0).trigger(c),c.isDefaultPrevented()||this.get(0).submit()}return this}}(Zepto),function(a){"__proto__"in{}||a.extend(a.zepto,{Z:function(b,c){return b=b||[],a.extend(b,a.fn),b.selector=c||"",b.__Z=!0,b},isZ:function(b){return"array"===a.type(b)&&"__Z"in b}});try{getComputedStyle(void 0)}catch(b){var c=getComputedStyle;window.getComputedStyle=function(a){try{return c(a)}catch(b){return null}}}}(Zepto); \ No newline at end of file diff --git a/build/mobile/js/main.js b/build/mobile/js/main.js new file mode 100644 index 0000000..e882e71 --- /dev/null +++ b/build/mobile/js/main.js @@ -0,0 +1 @@ +"use strict";$(document).ready(function(){window.c=$("canvas")[0].getContext("2d"),window.o=$("canvas")[1].getContext("2d"),window.c.clear=window.o.clear=function(){this.clearRect(0,0,width(),height())},window.settings={stroke:!0,fill:!1,lineWidth:2,color:"black",type:"sketch",lineCap:"round",lineJoin:"round",furLength:50,connectTelorance:40,composite:"source-over",shape:"circle",shapeStart:{},comShape:{},drawingLine:[],version:1.2},window.points=[],window.$c=$("canvas"),window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]}],window.points.history.last=0,sizeAndPos(),localStorage.getItem("sawTips")!=settings.version&&($(".tour").removeClass("hidden"),localStorage.setItem("sawTips",settings.version))}); \ No newline at end of file diff --git a/build/mobile/js/shared.js b/build/mobile/js/shared.js new file mode 100644 index 0000000..937af65 --- /dev/null +++ b/build/mobile/js/shared.js @@ -0,0 +1 @@ +$(document).ready(function(){window.c=$("canvas")[0].getContext("2d"),window.o=$("canvas")[1].getContext("2d"),window.c.clear=window.o.clear=function(){this.clearRect(0,0,width(),height())},window.settings={stroke:!0,fill:!1,lineWidth:2,color:"black",type:"sketch",lineCap:"round",lineJoin:"round",furLength:50,connectTelorance:40,composite:"source-over",shape:"circle",shapeStart:{},comShape:{},drawingLine:[],version:1.2},window.points=[],window.$c=$("canvas"),window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]}],window.points.history.last=0,sizeAndPos(),$(".color-picker").change(function(){var a=$(this).find(".color").val(),b=$(this).parent().attr("data-caller");settings[b]=a,$("#set"+b+" span").html(a),"bg"==b&&$c.first().css("background",a)}),$(".color").val("#000000"),localStorage.getItem("sawTips")!=settings.version&&($(".tour").removeClass("hidden"),localStorage.setItem("sawTips",settings.version))}); \ No newline at end of file diff --git a/build/mobile/manifest.webapp b/build/mobile/manifest.webapp new file mode 100644 index 0000000..e644881 --- /dev/null +++ b/build/mobile/manifest.webapp @@ -0,0 +1,42 @@ +{ + "name": "Sketchy", + "description": "Free Sketch/Paint app", + "version": "1.2", + "fullscreen": "true", + "type": "privileged", + "launch_path": "/index.html", + "default_locale": "en", + "icons": { + "16": "/img/icons/icon16.png", + "32": "/img/icons/icon32.png", + "48": "/img/icons/icon48.png", + "60": "/img/icons/icon60.png", + "64": "/img/icons/icon64.png", + "90": "/img/icons/icon90.png", + "120": "/img/icons/icon120.png", + "128": "/img/icons/icon128.png" + }, + "developer": { + "name": "Mahdi Dibaiee", + "url": "https://twitter.com/mdibaiee" + }, + "locales": { + "en": { + "name": "Sketchy", + "description": "Free Sketch/Paint app" + }, + "fa": { + "name": "Sketchy", + "description": "برنامه‌ی رایگان طراحی/نقاشی" + } + }, + "orientation": [ + "portrait" + ], + "permissions": { + "device-storage:pictures": { + "description": "Required to save sketched pics", + "access": "readwrite" + } + } +} diff --git a/build/web/cache.appcache b/build/web/cache.appcache new file mode 100644 index 0000000..1094b86 --- /dev/null +++ b/build/web/cache.appcache @@ -0,0 +1,5 @@ +CACHE MANIFEST +# v1 +index.html +js +css diff --git a/build/web/css/fonts/MozTT-Bold.ttf b/build/web/css/fonts/MozTT-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8ad5fab016dc23249fd5998f73cf881217d448d7 GIT binary patch literal 79388 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�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 literal 0 HcmV?d00001 diff --git a/build/web/css/fonts/MozTT-Light.ttf b/build/web/css/fonts/MozTT-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0553c178f3206165b933d6164a4da58347b83b28 GIT binary patch literal 93724 zcmd44349#InKxY3Bh7u^x8|OaG^1-YBgwjLNtSP0zT^Yj82QAvS>g~#2mwMIuH_B^ zLJ}Z^1>yiet@aDkd_y1IPYsL~J@BY61e!sU`)m2l~ zRrSZ4GQNH>WBir*D_760Jn)8| z@r^mg9KT+?YUTJ39~t-xW9BIoyMEcq){ZM1#;(J&&!PO5bM~Hn;OyUAei>tf?=hx% z^_=t1i?Ku6wTzA4h5X?513UKCpSZ1yv3akc%;6npA3ne?WF2U)8~N@Xdp^AV<1cr9 zn6ZT?8T-Z5&Z)geQlIbt7sjlAVywMx=eDz_{?cV#g|dK;m3Jbc{#5-(@cUByPVL-# z-jSbAu0mM}@EZHh-F9eS?{`Wk7;hh8%(iFG{&UX0>e%x!!1EMi^|8HYA30F>uHh_{ zzZd0W`_A6GZRv&n%NQRz1_VtW*njxE@Bj1%2F6GAjCooP9NKok5q-sl^2_o3N=CTk zZ0^X#U;o@@Ti-h@pm_r+?1laLM@0Cc+uu8Ncje`}k81A0Zv!wbJCxJ>N9AF_z)szL zy1VY9q9!Gi0_hq`k*<-RWoy_L(280@mypJ^C88LslPo-s3Yc_Mnnd0rIpmvI2k$fL zC6h)&nXK+&#(p=%V!)E@mam&w$)95Euad@lx`jQb`47G%#@O|gE19GR5X6`y-O5A> z?nf78zmea_rldBOgD+_=WxF&6c9_?(DL%@&;D`BfmPXzbo*(6xv$+U2N_ut#X~XcV zm9PV08Gb(e0{Ery?eM+yJe5V9+9AJQaZig1s#&+!c4ZUbjf+O@0%pA>x|cX4>}YSUyslRTE(a7K(wg!ZJ+`DCR)^b&_d8` zDc~f$zmM1Sf-Xc0(4p3Y4tDqyXz>pGX{iPIDjkRxwVrs4euEaZo@gOxO(FH0+MgMM z4@LVQ6cUeaL*3N>6$lAO1nb`m!Ow!HJ}3mQi~igTK3K+@fnyE&`A38?(f4NXlZhGd zJB!eZ@LYtuq}3?r1EbCqzT5{?PEglv3JNHR-uGcy!?L-Zs5`9BCXB=3+p zA@4+ARqjdlNd9ZXab_YuCtjQG59tq*VHF;d`LpnwJmigcvM9S2z5@Se{N4gThB&KS zr1%zu%is^dZ-@UX{5kNKz<&%LV@u^h;kn3z9@F(%*+sq6f)=VJnZNQaaeSACg==bs5>+tVF z7yU2ja2?Wbh8$;E7vf#?tm69+k{^U`hxfpnl;7$z6t04&u!TIvYiiF9Tn|cj0H=Dk zfbs?Wa(!x9syn4&7>{lP-@gSI7DI-ND6m*MwCh&RDUq5F&opGEq2(5EX9 zehT?PC2U0AAJKqbd?ddq-q1FQ@(4T#PM*|;& z55TA4Wt}!o_&WV3!WVh8y&YcQP6?x;4}`;7U(*-J_Hqe0RlUG1;aBy*GwKpv?dzKYAYStWMc&tG;odg`O-!fD?M(kvA^|)>mjdF9Y?RSXU%XJwZRcF#038?I z6z6TGi(BMNkM8Q#teIh4Bv_{Nb=*Jm5&Z6WpS0Sfzn5S8Eby+PzBaigjviHAn4$nr zPLza;%*dYpiQMV<2Smc;lsrA$nU6(27*l6HSogwzD zI*CF}oua=xrb*Q^u zt^^?!sMF!Ox;m*|tC6Txy?7oOl!=0H#GP1P2HbqsxwuiA&?M|E1{$e9`)exNo~4#y<~gx)h9;jdo9 z&`opzEu(-QQ&NT~xq7|UKt$H-&EhUP#5DDKfq(o0oIn;Kmb$BUSv)4+jMP_p0#2vL z0|cNT7$F2dKn@~^L9|yl3)_TiExJpzno2NJS=j+t^n?IcF3N_m$$?I5Fc1OJ3)KnURC6iR3!;i- zjb2aqKwrsmh}sO25DDs0yH>-1K0E{T0|$CDo+c{7X$?AHf}BO%MK`#n-k=Joz%x)K zg9OCQbY>ydGBWkGN`zV#NR*Wbc$eJ!^W-!#RjkWM79G=QL22RSM6Fg|#k8CxDkWUZ zK!Dx=@IQzrfe=WHPDfZkv%r9i<; z+9-myt2{|uL@mjc;7J3}Q%7i4c~Yk}8jVVGqMYCxolq5Mh1@hSz%v}7XF7=@#C5V$ z_>cHmNkLGFVebwG*KP^QpNM8c4q6>^cK}&@;dv)CsX1 zap9Q`MbIci6MzADAw*c}>ZWa?1evL{T7oDh*QO*1wL#K4lP8VPkFo>k zGZ8}qit!Rp5K572w&_VvqEeIKNsO$jo}#7&$XYXEL@_;SX7HqrbfsQL2vB&ENM9%P zsK!X;kc=nLMG#Z2L|3n?Gvcv&BV+Q4J>yT@47|5mpj?6~j6rCnLI_>Croz5bNrPEV! ztr2R$0J0l&1QV$f{DJgzhxVy6fn>yucmnWJb#f)dlOT-3lXa*J=912ACWa>`c$qXf zvV@aIGgKz$%e*UiQb`f%q=00n@+9!1q##iFh+wYrB=IMqlO#%9lnvV9rlZSj*26N< z6OzOwD?~X@z8fJzpa@-cMw5Yv13Lg{2T#_&kDk<#DAzG`lL$j9tlng=;YqUrm>}m6 zchLb}r!%X>0AiswP>NI-WG*MyAm$OJ=PSA(kbAK%bJU!M4g`2=NRY)ve%A z&Lg7KY4m`AvgPp$IRHmaP?H3sleEr2fYA&j%RC9t&*Vu$2s$K8I6^6MZ7w76B-*i> zF)qM5hM`k+veL4FSVm9`#lb~JqrnKKGzxQ^NT&xE0q6CCXX}JP1bt{A6cRBZW>g{6 zrkO<6j9-A7Dud3oTCGZJvT;wn7o(R^8O^|;@&jfe(3G$6tQ>$6N(Bo43Fwq0!DWKo zD3!{}4*ZFp$PxwJ0BJ!sgiQ{N2CLNo0vZHmiL3DlE;W}zvk*Pd5L&@(CVc3~)~my0 z1i_hTr(b##`ccO~NI)Rys$xB@XlgY96XaatF5u^NdaFzfg8`Egz1{+0Cw4)r zvz$XuB$AP7wt^f0NhX+yPzm^qL=YW#mz+sdK-e%S=%#?!S~Q?yos@%-#E2dQER?NN z3lPObf|^A2>r7zx89ZsW(ws^tS%7{fa`Z4J&><5IgMb)I=*;dm37#|QU3alOT;H)t)8 z3F1i*M{5*3Nd*iBVp!A%XB5L1S|O)m2Lz#~1ac^%I-rs8U%h~_>JNY|U#QI>TZMEt zB2LZK;SvgwvcWZSU^3WjMhuijnt6zeSPyuc&PU$`PYN-pH(O8?Lj~zS;z{lM@Fa>t zC>YR(9)NPdfyGtjNrTm76U=CJi$L^_c#fubIj+AP4S&WO@Ak^=@oj~wU|QH+Y~El>-j7|aIZK2j$J zl+YUy0r2{I8^H$(3O!1?9jPM8sI>w)IxBubsTj=|)s3LOjrt8IPdJGuO=9>$E93x- zoDYJ)QGN}4LIueADkGYVkeF$w@)5yIWn~ARBr{9qN4irs1^_uQ8*O%lCly|oc~Z@# z&Eh?^wJAS2Ua2RQ&zjS>NTCNZ!-C`u}BXwd#38+r3Kta8o zN`q9;B>)+api3gjq_u%xbT-Uu0JRCk(VL78hlBbJhfFwv+iVfeB<=u)(v3zaYq*(M zB%Y&mpbjy*z{g4nN>%xYV3w^yx&zpHLONDng;Z%N+hP(oiZ~o540I;QjC{$=CqE?L zZ5Co1p@g+IJK@8C;T>p)QK@?$o;0F%Q#~^ot%PkNqTcQUPpUL^Se!rwoL}65D3giT z8yz$WBnLQw0@7sEU3HR9Jye|6XtWrOGBRyWkOOjJGHYRQSV@VXx3Us(5vzf{MKOVG zA^P$S=!2sylp#k=o8@Uyy$SL`*{bDhCQ6G0HAxJSkXFMCp0qj1lodQ_)DhR!I3p%! zCZpa$gD%KtLY60F#R7#E?YQi~DVESNMpdB%gMh>ylf`TW#ZcUAwA-v^D~Mn3XPp}WdQfLWPwQVrlw^hA~@nEOVp%}f{m=sBy| z<+8w5us~+yOJ+VfPrf@yzGNZL*&S#Rj6#zh!ILx0c%p#GX0~8^!fdjmc|ljbGoaI{ zJZW~>+&~3fNZg?V%x11NxdiGE2b3n06Pzsg1m^5a=Qo)^A{m)>QX(LcP$EWP(*#Wp zmL(l#%y*Aun0L887XoAN?1Vd>Seb9x@jjf8%9RJ zEKif^Zna>lbOa< ztoP6)^h~tVFAHkN_JqakLEkUV(q~6o?flfbN4c z67Xlbu-R-ko4q2@=><7#W|I{Y8Yq22rNs=XASL3Li#bINgl(HZvt5`DKqj)OaT_EQ zjxbGRhtpaCi(pixfZdJf=piHugTqGko19QCGlbIVr8$)t=YhvFkzROB26*oa~%ZnJn?PP@}?vp8+UeMCAd7|dd~ z8Ng;(Hu8Zf>>w8LER27cjG_{o(Pr@4tu~VvRYJeoov^;`R=?k`H0Kf8k;XEI%Sp~A z?pC{9WtKUe0IsYM zU3R+ghgNX~0(K0Pc364xWr32h7^x2R^0=Unp?`20JYFYAXrXZx(^z$rm#iI8hPK=63~w3b>@WQ&(+VZ}k)Y$pKEQ)n~PVnSl;hms!vT835&Jo0 z6BM%}MLj45oMie^U0_RLa5zA4)C_i?A(Wl~*{@=p2g1(eNvj7|unprSVZm&(AvcnC z5l@=!_Mi{eGpu8iUX>icqu1kRi-Hs`o6QM3+HUo^-3~X%?zZ~?6Rc`*E;!Z!3K9zR z0fLWgGOHV-C?Jt5v778hpTlN1`3!alwBF&ysP3=@gF&S^@G{j0=W+{Y7k8V(LFteg zfgr*nutZJ{NVkDWNjoYU%;`ci>Lv4-(?&3>vmk@sfsuk(9pDP7(o?qEA#M~2h8(a= z941mQbji#oKP2CMZm_+~utuLB_`ow5S837aeRaFQ;L_qwykO^gTafTi4shCR0nEKDB*N;1NFYYO#cei_C@6k-Lskda5K6=#lnBY2 z)#9>xAV(3wYgUhVkg)9(#)5paIEW!B3w%tD@a&XLP`v~4K`dxd3-|#S)i#~vq0%I+ zGkDS)qPd0ONt=nduEyD52m=`&H`FaqZAVtD(Zc|k#p#R$fK#gzW0XS`1g8@qLxSQC zx6|XWyHVU}4|u&UF9vY01KekaRqb#X94?y+6a?@#L)e90Lccg^3TcJHlq+$Xou;76 z;WP(Pr3FK{7o)n%5s5^o-*5pTsWg^(#PH>HiooG=$@xKnAQ_8Q0G*(OoUd}9$L&!{ zP`cYLUj(x{V=)?B7%6~sy8#y|L<41eU37EO6^XdabYXZ9mmLbkZkF@pd%%kvSqMyl zpw|g8fc#-tzy!uL!;B{iID9Ub)4-e#KY9Q%0tcat$s`FPTP)6qFA7w^HHy2FXdoFJ z5yC$?g3}(dJ20R@b74XxIJM@MwmU$gh)4-U?Jo4(=5k}r#OCvO93G5pvJ#2OWqhIn z!nWHZJJJ9^Cb9+I+~PT6Keudx8e9fNJtze{LBK^%fp>-aaFdcka~Lvfm=4iEluTJ+ zdpgXHGxHoUgq;qHk4!j_(23l5lUL!%Xb?EXjLkBeClgNMNry-9WYFhx`P@#s&lv>p zq)vz@?JlRu0iLvjC*i=8E*n6Ev1d|v(gL1zJDirFvC5NfM>HB$L?Bq@NuO{|ai8YN zkX_KGD%rAt1C1acUCOu$o-PDB-PWHyf{9>J`~?!h4dR~1SqEsw{Yar-=ePz=RA&PXue33%PkfIC9Whs%W$ zPOsbSBAzwIydIAir1Chxvv$mW&?TzS>M=*XE{`>8Lf>shPXLyt*A?>Pj2>VV z;5spzg|v9-!XH}2l}LE4bg84Y6SkVuD(A`f2z0(nwnEL3h5(6y6}BEN+88V|%y{BS zchKYY7@5ZvMh`$p;GiLIu}DNkI8Qv71S;TK#T|m>@kmBj9LN$5Z~_G`w*^C~YkHC{ z5F_83U9N!36&F9k38xp57*#FM0D4eeNR*R8lpXRr9W#V7oG@XIF6OE(D{)Gyj~g}| zVZq_?AgieyX0T^aX(oEu z-2m5Zaa%lQWaAPyiexeYJ6$SAdu(*c56Sm<#OwCTLST(2BYvOD15*hz9W1ulW|;9r z0bkS~@SB<68$$;`N8ljYVYNzv$e?K^ngc4}%Hj^e^7|#TH$(U*2RJ>Rl*flr5+aXD zy27i|L7T@L_IfhncPtC75%jtPA&c4TiiSeIkk8`^d7=>0Cb>j)dLIl`oy$-9h_D@m zgu;G7ylb{FHhD13jN;83mkjFJcC}UX|v)}|cuiab2kcfI?n3?$; zQ8MBDEwgzE{SV9e0 z7YX|t8yo#X9|lrl;z@8vV-4hj;_eTHWU6EYf@nezRHg$0LQlvO0J#HxS=9x-(Qq^* z5=3&uCtn0}b$u}uu$l?!0GHIE&k_sKg+H{4tEnmEpi9+^J_lWLo_tTo{2sq71h!PB z0b_^Hfr$&&Ag}~E!;B{)1Y)6Z(87ZLBs$=B1K-YUm)$Oro`DNC#+rc&xL$D&2GBXl z;%_AUlLMSSU)C3}dmzGoSHLd|a`j&F`5XMcMv;(g_J#amzc&=ITKt}PG#ZF1O2p%B zk&7e*QVH7;VJt+2ISXVWo3g@?P&neXNR%G4nnM;p%m6s0Kr{owQEf<)wMd-UIT7`F zEY#(yOE%M-O3a%4PU5;6=TBmK9dN~CSRR1-2qLRvD9+HJI~*=#G3)V$vEdpNN8H8D zYDEw#h8n`LV4xvkvxWWHWFnG?h60ID4!E-83R;6u9w9sFQNOjB;B)$5wL^|PnDK>0 zC1F?Co{I*Sgw^7X1`CCPB6is@;hqMvSTaE_EbhTbl+qzH0zsrl!!ics z06YgFz!e4+=!!MOq9Q>gt9(Q-tE)veOEhG&gn@Fboj|7S0b4Rc7yj@Zu9lXllP*#) zbOoGr$$9cUmkj!XvI@3m8xs+F2Fp;iXk&KLigP4x0KL4h<9w zxo{!b3RJ)iiF-H%ylbq%0+1z~1yBZ>10kmmA{=ywW%EXsW^tbr2quDof{15Y0ue}- zKN_=HgT7P@@)i#GVu2JmxkD}^Pwxra4Y8^NGLcQ#hDsnu>=%pCV>U|!%0w`<`g|iG zquP)tC#5Jm9Sito3>29bo6nBPCS1@>Tvy|QFoeS)cQQ#>@P+XL5IH*RMm~%;$l>s& zl19YBcq{Zc5_Yp8yriC8Aq7Ml|ri5-Z2ICg(L5zoY1;;Z7HNk|E8!j^C*Jc(c;nrKdp zC$=QErJw(+bow+wfwp4oPPFx&~za%SLL$GrIqt5t12ri6O|>E z-b(AKADnvf)cvQv{Q5bspZ)rV*C$_J`}&&KSH8aR^|`P2yl#Enbn-_hr%s-Ia{bBj zYkz(1`q!>~?TXhv`PyZ#UGmz;UOW8S+Si6&>;JDGX}>7rR`l%u|C<(XzQKW%CMFftP}gECfTV|M0XPP{+kW*+8cKIUfu7GxoCQ3P+cHh_9@mS9Pi zVriCPS(ams;Gt%gX9d>6S{dH&$5$STtdo^knRT&l*2CtoUe?F@*#H{^&keJ=Y#tk7 zc$1CIXX9)ETgVo%#cT;%%J4=YTfrvqy@ge5HNJFJJ=W57ua3w9(FhT68kdyCw3pZpFP07!X9MD*jL%Z>}%{1_9#2f z{+T_&9%ui;p5*7VLwFx`8{R8D!j7=dvjceB?s9fM+s*G}SFl_8?ReYr^ZW~J2m27e zk>A2^=DYYEY!ADTf0EtHPOy)&bMP+pZG4!2j^D)gvWxhK*;aN5yNun;-Q2_X@%{WT zKaU^4`_GT@FS2j&Is77i8UF~skl)4c<{x4o=7;z{@Cz8;r)8gDSFxk)8oW#VkL+r8 zBfAMbyn)@uZfBomf8>k!1Utx=@@0HEyMV9cEBIoD&anKVQa@lb< z5_t^N)NI~VIL>%J78~6)a*S`m4=Im?rZ{4nd~EEPCOtMWnOqk;8aujR>S$~%w)5<% zV|8f}B4gXpb*-^uY~|!G+*eJ;j}5I0O-Hw_TQ>*w)KNVsg2#`pLk+u?8W4)4)>C+> zKEEh-Op{qYxnlCz#Ur6(LnG@#@px?X*i*|Vk3BUKimzLTr?k_M0^*By`4yOTfLYsw ze7#)D%E@Cxp<`^_(W6x7%E@H>*u_VWhK`~i%J1XssTm2J%}f|l5`YQR0Zfb@=NB(W zWeAe-5G5qz$vEI#H-fee`9&)yM*(SkU4d}k4BB&iX#=m+e;tv1V8%sY^9B%1-~4rC zTy#bXp2mAoOxKK}a^FC+EfbT+IQ8ThzZw%#NJ}2YO{aSqzU0A7QU}5ZAdzs|Ey{JR z_Jpom_o%*4|D^th2FZ{&Oc*XO+-i8x@S@>o#+-4n@g~eymYVLt6s^zvtfj@W#d59X znB_&wThbb=8sOJZsUwG@hdGC;SmG?=X-#6uZ3d8+&eHFq=*G%svk)4a8LU-Jd|aQ^E2t@(TM59OcCKc9a&|C9W03loJ+h24eo3zrnG zF5Fu9VaxKCjV(J{&TF~2<;s>fTHbDDt>#vLYpV6qHe;K&Ez#D}Hm7Z@ZK7>c+wQjW z+b(H)wS9T}#`c}<=e1wler5YD?SJXGq~q$2TRZOQc&Ovaj^{gG?)XW^Z#(`{)E1q^ zD~dlWzEym$Q{Ui?jdHl0D|eQM%8SdB<*D+4@=IMUU30p|x+c0db?xptzw6iC7j|FKeM9%1-S>AN z?|!EH#qL+S-{^k3=c9A>`r)L++c?+^Fq`aAoF`WN?4_D}U6=>J~-fA;^P{}26@0poyoATiJ~uyNr0 zfoliu8u;G8n}goLk-^Ic?;3n)@TtKc4E|+EJCqq37@8V7I&|mILqjhN{bHC6r-l~} zPY!P%zIOO8b0_BBs$37weR}T8bKjenm^XLc<@25&VIzGbSC8B`Dvdrn`s(PrW5%(O zv5Uu^o1d6JGXJS@>-d%9KU=VL!50>W7am{ui$&f=Ba8MedUVm-i&KkNExvT|BTLLn z%1h2)a{rR2mb|p&t)d>hd>NY+Ui&#Nvtb zCLWx4VWoBDo|Sj5e0SBVRYz9+cJ;#5yH_7wec$SnYg*P^zUCKe{cCSnd;i+ECYvUg zPF_0s$mF~0PONWPf64k2>)%{o*>GUPOB>xAM>ZbXc$bCA-Q?Xg zzUhuluWqVrPHf(?`SQ&#ZAoo8vgO3t?z4BE{hwR)TNiGsZDQM|ZM(OfzwMH3S8vyD zcW#evZ`xkoK6m@&+ppVx$M*Yn7y}-2?K-yWZ-R9lf zcOTmQ(cMSSwVxY4H+OF5xkKkJKKG?_Pwr{iGiT3*d#>1X!=5|$+`s4e-qhZnnPC{dhXDl4kr#b9qxdAfbV5U4bnr< zvO3ryCD<6Fup?H(R@jD7`5&N;FT>b+BSzA@VG(={WB<3`SsDPE8F zvpqb*(|Du1#QXUuU&2@Ov-mc?7vnRH*;l~=xE*8m1N>|JU--B9clp2bAM>B{-|%<% zDXCtvNFFI7rKN&YlKQ1lX^FI2I!oFn?UnvPx=6ZAx=OlHx?Q?kdO-S`^e@u4@J%O- z2BVY5S+q6u7;Gxtz&a&ih!Tcs62>TDtR`Wc62@y17E;2(nuO()u)LbU2av!AY7*vB z!rYpK5lR@TCP?=nLAs|V;XX>ZuO{JsO1Qt8z?LEb_FJ_t6O=GflR$950<1nkaKIF- zCM>3e#We|&lrUM7z$gJ@rHV052*M{<4ATjO55BM_fhvW;H2sA1AQGepYZ4x!gokPp z9-)LsstHU&0>*aDz`DoT3mEoc{xm<%UPA0Cit#DNVVhCfD@c1zq-{jnxJY{hX)lVj zRY)5WX>X&tVsw?3L)ifM7R;ZDZT~qEr2-)dgZMLu7ZLv<;y*oNkN6dc+Yz@T4v4uMaW~=@BOXRPjQ9b>Q;4S!KZ1B3@jT*Fh_@l$hWIMPyAkh3 z99ZOii1#60kN70w^z0rbJWmNPRKiP@5ZDsW-JpcGDdAm8c)t=pqJ&Q<;WOy(ar<%p zoD#mMgoI5>CrncKh7uCq=r`dEp#&U>5I7Mb@F7CK62=fdh39ezpFxQJOVt185J&&n z3kW+AzKF0J;Y$e7f1;=~^ddZ-1z$=dNCRc1aionSjpBU165oUP9+}gm^H2^nmX09p2=YN==|aRW zL>x4hE=BxO#6e@}O2n^3{0QPVAbtbtXhZxK#BV{o8}U04zZ1`Z#?oDg--UF@sdVp) z$N4zIV+fZcJdSV`LZZ15JZ)QFJx8wIC{I1GIzOVA_FW`*=TRH8^M11r*g2j>Z#hL@Ae6i0>hdtnJ zbb2~SM`^=!i_k4fHxJ#!NoDoDcsk&&)#5D^<*@|CYTaG6KmI4<0-)-xf$FaLiR0h8 z>Q51?K2mvj#?v!?{>{Sl?Ej>b9y+zOQ(AcH(I3-E?^T*aE|N28EJmwNZ*;|)yrmxf zWkeV3m-BUK*alBDz^hck(~)o@Kqq_(z6?*Nh>0@vj${{znMQaR{xk51>*zN$g(&?>&oZ{#)+U(f`)t|MNh@j@x+p9rgrPdo);iO{?<)PUa?TLDi^b7D}*?{n^&u zepd?7Iq>=p*nam|CrTI zJ+*@uWvCsVEqaph-00~$?&;$X{S{8snM1|2LKVWY*Jo9jT~yRn1GA43d^HJ5<>-Xc zyn&v;awS>SSWyEG$o7S$idM+F)!2_S9Y$gbO$a4~7K99;4I$Z@4kh#;r2H^K%8z2i zhY6*H8wHnFZu6xmv|Ep#RR=3YV&s%{>uZqnU>P|~dhubNky(Ym!2_EXOf&o7z_~nFlSj5<$ zf!*y#EQ%OuM-m%i|%SV6H%c0Ud9YDGWX6OJ=n& z)>_c(a#xFn2rAohR!Qe8ckzyLSJn#Zdo{!d19$*jp_OiQwFW=4a!33A-om0%WbQ~X z7qa@A2eP@ryw{%W%6_A@q4Lw#b-5Q~%|X-Bvca1UC)*;H!M0Kl-#oIj@#v;PGS zZee!{-QuVItMspG6&S5hARm^Mhg_!X^rgH`(+w#wp-er>I9l--@vx8jhz{ynG+n{M zKq?h4Kqtl~v}1yblG_oZMwO*&8pT{=qdE+U2E_=(*^$$C@oP0Hv_-HIk4S)(`!rd; zx&4>znw0syD`|~m7+-Myy#zfE-7+mrN=wyoP($K{-C|OpBttf#FExnKN(btd=SBh( zIw2*H8mLPC`~ACi?I+*2WZAMM`#2Ooa;!P~F9?)KZS7oSAuSUF^T6L?x% z9gP*4u0o+KLIH}l_P7I#P;~Ij*TO$)llJavy!g~g!IQY1M1R87-Z%(&N6m0ht>-a} zrKI^KaDfB8F^b;A<0Vztby;i~}508Cxjq5>^w1=2|{Ics3bQbLw6EOSO# zaHtb7nE=xX$OA%$v*!eMgE=cBcARCA+ahwCu@%;WH1LwD#i6Or0Nz96m{kJ5)C^NDQnh_U%h&V=K#xHbIKhN&YcMqB9w4 zNw|`+RHiA^(w9hgWdnMt&fnCZgFcM5w#L)B731l03TJNtDQ<6}?^f(UD}DbPbbTDF z$t0g7ojORRQISqFq%&TMms~y#%m@$3Dc@B2;Y%IQy{YS1x9))gf7M;-d-~}jKCI8# ze1Y%#F;>n~+e{F86E*m@QG!jzcm4DbnE*yn131Elm{)KEk9(>-Fav!FUD6Tf->#et z4#k?sOOaUL%3{x!Og6TtuwQ8f?rx~(el!^j@1LHOd+0*POWSn%()u) z0<(7mLkZ&leJ8`?bBG?EC1i^;Zr;7aJk)~wS(J8&mlZoFdK#J+@9f+3 z>FuKdKGIn%uNjDwIg~?h0S|x@;~)Q#7?aKz0jqXAnJ(4UHb+f-dNfo=MSh<$F{@my zM5qlhmWwt5Xh)t+XoN*ntyZH}D@OL|ia8DOS|bhdGwPlm>|vv^&+wNe570_I(5e(s zHZ-vHLc@OAhwmm#@eSU}cX-*y2RiO(r`4y6nlAy)#n1(t0cQf34yf2xlzdg=C{y8j5{NuXFA)L}0Oa_8FN)S5L?37; z;4z$!q8N<{t3|)+tzdgqpVFEy4X028$up(I=a7{G8NjNTz!vJ#h`E%|7hR4_MtalV z);TA!^{(@Wht9uu=hhphI>K$knNV}orKz)y^ri+|L)n4F8E+~cbF`)d`MA5V_M^); zUcbHEHFeFpfvwqRW0)t7b%kjsc1MLgiR;_S_q9)Gt^qQ9h zYlulc=x`k*WJu+KS)+G#k517#Rki*&RvA=gO~-XfSJ9PB7d1(KN9CuzeXlQieV}su z)J4)`k4X=lTKOw}74-WNw3$JhK1^Q=)zNSk=P9a9*h^_N;un-8olPDrg(=gsvumlm{oqzCMo;h$Gtx5mqjxvr$GeO~|I9KbV%d8!qB8L!%* z%C2*j8{H&5ZdrP0uTWlva3f}sA+N4N5dYxIDOL8vqQh$q!_7^Ld*bn)#rg7BC?4B5 zIA`m4W7C4O%l)eo(nK&2UvPNEvO^1#F<)aOU08qV+O?NW7UDRiDhWIf1J7pQYkFUN z<}NR*9YqNyP#Dnp1$3}96&Xl&O`|h;@)_2X>aG>j|-pQ7AW6k;b8(LRN4+Ium zdhWSbED3k`=AL)f=0kl>;0Uzl{|OjORXSJaunIF(ZS}{Y%Q$$EhA=*jErJJ3hB-*l z5!c1ZG<3v0NBDYO<&8i7k!Pg`I!<>~-hft<+xsrsGgN7!Clcsu?1ozAB`b?`E@p>l zh3rDu1aSv7L1y2xmEZjKx4nF|^pVOt9hIk1F`g&7H-ql!YM*A=p4HW-$3cFMxe2vF zdPe2|TBvzn4k&?L9W%J#udxMf&C3VU4c$xIS{BBx)P1*bZhzm@c&=^P_VU~{8EIKK zm>562V(H<9DVGC)o(M+slb5Z-$(lkULA?^Z&?e}xLY4CBf}}!+SyRF)VU#DTbHvAi zQQ3;8d0HIE0&U>=JC!GUd->d6zPxfwdZ6;}ycv@=(LQ?^?Q5!Yzge89Fb3ou11D;H zxR-Q>jPv@_N7zG%TEtjOYX-vlQAi1S!#Woxbbx@CChFtOAycn2)7QAp(vT}9qz$LO z)G^wTq;v1GTr{JudT_~n6&tglsaCDDHA@NVh_Uc>XKLIaB{}#e>5zhzpYoQ4m6v(A zauOY=JX^U6Csq4JM`Zr|zG%Do16!_QS+AEGngLM%}2 z#ou2ko<&n->MVK@*R*J|NewP5zWhqMoG$6gBz+4`k{+D%kc97?YwH@ihgaNR_vMMX zd_!Supg(o$XHq!TKQLCP;3UqeHzlu1bEyyTIdH;Q!Qm_{E83^3FlS-8x+HP}l8XPx zB#c=L=*SR*v=$vno`elgJjjbM-=+GlWtD%ycm2AT@=-}sFSzL3maCRl?m+a0!qrQ` z1}IN*ybW^f0#8os#}Be6fFDxiq#tSCh;#p9O++>ipWIk)Y0v)}>w1hOQ-i&8knVZ);iii8ZS(-O$#u{?f{Y=|u;Z+|Fz7jEFQgVn}?r_qLB+kr_FA z&N(}q$BW^e8+LG0lliih4CBsqP0kQNWsc1*7?L>*M*6d3J=VuF%?(Cb3RqRNZVc{{0#tEtyR?V)e64W z?D@3 zFsXATxe9xdrw{esci~4O?enrfnqPV9{OoXBaNSvlcxUAW>46QK^MlPHZRHuh%@*&< zE*K;p#0(!c_#c4R_Ub%$)?P<-N+k2$3D7qz)`E_+7Jx+~$_dnlO)McB8KmGHS4{Z= zc#8nYkB4+}U~RlQJG@&!9`t zx=*cpmadtl(Q8c~LLwyayfW1qd&cXHn261Ivf zJ1f7!D<+?*+`+fXe3b+tXuPhmCudb#%d<46lr226T45uBsj${8uXV-wH!EBCUUcJA zl^giBc4GEqd19eemE4%~|>P{))NJ zj6DDjtxPK%_}?g9{95b*EH`V;!#lxbvwnsBYPx=G5h9K1Cp6Y0CM>QJ$=9z?zsCID z7xS8WdUXQN6(k$~FU=5a^G3q8s`(X~SC5z~Bo+$~+?C8?GRVVUAG-PGp|5L(D*yWD zKl64`U+(m$`N`8?2cFK{Bk^IKBgc>bgSx&Em3FbWrMK}Mt=`aHD5KRIYz>`!I`*iv zYi;K)0e=oU^auE#j4`bKtx~x`QJPigs#cZ4FA)-*h^*(0Kto&%m>!VL3bM&VXHF0h z2PjAzV5z7$z2YI3kgzmJORibGaw;zqVn=abcujHf>W}PRKWAQKwAtRaJbl)RK){mB z>vd~auj%b-U*KKZ+O%f=#H!ALUbCa%vQ92L)tu1hwCTc=bNb3Xoy`DdAM}|<`XzK` z3@3kystVMK(OKTH0=s%pm9{=)qotU1bUA95k26^p){C*pE#}F0cJxG+ zb+*lK^@chZwY7~$Zs}MM^pEDpmr5sfm4C~(rN^cQ2eyspvd#RCf&5>x#r=nVEa*z> zNl$E%UASypIHFVFDQaf)D>H5g#aA2e`f5pO)j`5)MOWmp1 zvW{G4Y-)fInobWjwH`XKcYk+b8tzwt&k%MEruPhH@pW|&dmJm~vfiN6n#!4FoQqTm zkBwRxt2IjubnYPw>c=yg3pJraZ@g)4JT$tkys{@6=~~*pbtmV~4X&!^jneq2Rxzy5znV~8Adwe9%|Z%^A+US^ zTzj!S=d{uq)K=>u5Zx`$W&#l4)Jve5*BYF*Y@? zX|1I29~~vwSw-v_`tg3`lIm=vhq$w+hC3DHinYT<)3_uI#>8T}3E?7PS>c?Hu(6J_ z9^}puD~qGFs{yl$whU_RtWqa9S>7xa8|GwdmAjOEhAvMQk_R$$)$FPM*`0FOT&8Hb zxxAp@iuX>m@7?Jrm?oC5SZTxQgU+!ghd-Fg2ixc8|KAH@Z959X^M*#p1_wv~8DAw1 zTXDe8SXb{&wMJ6qv~#F06*9X5gzE1;zZCouk7+Na8nvYgn32A$S9Vwy%h#Vq|xJv|Mp%ZrA3@})o_ z8@G^t`F^2&VoBvwe8)(yE7nM#tdOwI&Db&N-!Tr@#0W&Y{6f>s;;vfbisn0@hRij< z?-zQ)_>hSkUNW6}M>3u7r;mZaQyZuMdb(4zVS?2~qulgrzL|Ig8KNJe)-7c#VE!Ky#7 zsA94@$(GF*G6!G@lL{7g@E00QPQ5*p%5+G-Jaw?6PSa>>E=xyICF%tH(jTFx((FT2 zC+&SJ8=14PR!va$KC20{#<5yX5|t_&fI=D5+OK#ggT)|q@uWlHDfGUGT{=<}bfZN9 zC5L~vC*R_0%)~4`?RBwT$(#p2|_^kG9Uvwkg4fN~+pV$b=U% zF};SSXs>E76f2{eP+cTaP^0jV=mpJixe&wOtU8mZA`ko_79FTW2j) z1S|N5#<#x$E*JFw^!X0OO05D?-3^y_KB{XOK_Q~mxw*Wi0h>V8S()L6ITM}5iSB4a z&qQY@hTYc|uUWNd@#>YlesJ4-?0ZfPBFtvSw(;13gZmF2Jh=Y=@dnv3Mc6T3VaKdh zxkFhZsKPc2YgHjTlc9h$br2@p(fR^d^-N>Np>q`RO()FbghthUF*X5nrr-@07qqo3 ziuAPW{R{Hf%^mAl6y#sS6i6{=QjL{A>!lx7&d(NKKd^T|*uI3@B5VhOKVBU-X36CT z84^$u3jDQf@VTK#G-j*N0?6K^xXXchJ=t$z6X7< zRrz)ncPP`wzd;g35l-{1Jhu_J$CykGRKQo%QpH5JC+$o|vVmxOn=cXan%wjHqa8_n5li$jfIjY&u7Mr29vnYy zxzFO7>U`;aR0FLyX@yy#9uUHygyS+b_E49wfy5y!*;K}Y1?-`oPia4qZgOWa2z56M z4Z$9|NOx(za!-4U#gwx<7S84P=g8_<@O{w51DohfHm$OOB8b(5s=cNZsm`lZU8YQz zXe}O6h|`CNCHZZ!m8J1{JuNMM8tZ%7p=4Jq;YTXh43h(#@LJ zS3#JiEfj7BYeE^&k~NkymV8e7Y~OKA>rIs={xS{tGHsxgzKFODuRbarm_?UaQ!Hg9 zszOk;Gn6`NA)r;A=>-*9KL6sy%g&R|Uvf$BUg@IY4@>*V{=m-C9Do+*uT>KKRhb^x zi{)PjY&GjDvsgq~y!jiTREJGiqnLtci#|G*jrsUbZWuX!=jcV!$L4+h_~?zl|2_A; z{k`w~q4LY$6W*cczKOP-e*-VG@UARARkd6d4GLbW(>;|k*jRv#)CB^4LAts3m^INc z)~?TWX9Fhp2_PiNe|+kXO(UHNU8^pX?Tibuk=_7qF2|4A>o8SR)LIaKXC3CE%IA5y z@<(h^y}}cD{$P8)G9mb*aQZ7aLu__S>SOju}RQE@`?#Zu2?bYD3!8e z>EDB~(&NK->F5+Wta*=)hE5M1Bq(*!FjQD>@?^`gmR1vw<&!yMQ%9_v^_U7t{-L$z zuUZoMkSQN(GCqv|(30sjYxMbo`4MY-JZ}mX5|*coO)-+!yHDT8{zKza)m9U9+z*W;OC!0!kA1pz;u{*<9kB9;*F7x0vPwuB3)#Sw=RP5r4e<*pLx#iTULhjdP9j)dMO#S8?&*RNwmGY!lv5cuBe!*rhXX^e(DHwV|uL zt}uV?IQIUl8{(CNGu|?IG}4z^uzKBCs<$B=9!|Dz+7T=+Y;8*oh52KC_klzE_u(|2 zKTvnomAY#_G-vDl=DO>zuM7AEZnuL;{(`-PB+eBpAOvV^#p$PMJES^_%cqRwQ_^M( zHgql)90fW!K?gc7?M6uFW@3UKE;^A(QydTWBIylDafteiIr-1O`Ar=@z|XsMm802) z;o-BFwJnWh{XLnEQT~b6&xLYfuR+t<;cL%7*m~`f$xN~#80qc<>=LlK1MmCK1y?lV z4e8^|46M4~Y4jv4iwS^Y!b0LnG*#B2?YN8pF`b~JRU_Fx0v-wKD5=PNY`049Cj8iS&xB$2E~&=_@x3%$qj=|Cu-*=@?D+`4A?Y_KD;~ z$7rhGzdW_V=4ho;edI|tu~R3Ruukl&j$4W{tm1yw{(6-`psER-Vm%snV46IgQ~%3_ zTb~#?ra3nB#GcD8yR7fRUyii$m6Zp`w~n+PKi&%T0e@B9Kqq-XKj2JD+5uy)PSy|| z9r(h+`pP|zRqm0?oOSvM@bYn-v0RCd8Ynnch7UmfI5wp?3^UqBq~#=9k2wKD3~${C zW2*-#WR#u2hX>TO1xgwkt}by@7j4vK5$*Ju%Nd(c_!Ox)V~G=2SXPx6QZ~01GQm(w zf3mzh6-y3higQd2-Gx*s4^q{4r?gh9L|mg{GIW5N8BC`HU>pjFyOF+<4yDN&lm#5kQ?7m z#K#c*O34Zg(%9dZy&b)X4)kv;bcQeVW;Jbn;s zsjmPA_zuWz6rmm7Ko49iiqZCMN}OoJa@LGfas0n< z1}9T4=X_~Lz+H?tbm9${Y%vmVac}EfKR2D8yS@`)CWEkV_p(A^+3vpn-AfCFrMsnw z)!Z{S)?>3I@d@z!P*c-Tlh}N%R5h`C`4_hvknFz2fcN zziY$7wr>BNw7qGxVPc-$V`@m~{Nqi-3vSBxyXRlk#vh$KFVkKyT61>O*wDA*VQoSi zP9)>=!@1;+_06=L3qZ!$T>iAAgIRA8JVS52ke;KR4FmBElvJs!0gFhbF5l%>B=5dE znHP7SdfxxN#_##RBL}2!rr1|-c61}wKpZ5wc;^M*s=!5dNgAie zC==b-eK;M?B-0J2QbTKt9h1YE%A(7k0;D-4vD^9@)>W%VH_rdDpoE zK6y?Sl|IY$((@1k+H=AT5)>g^acEtxfAdZ0v!qBRwunE^_hNm_1n#1pI7*`>>BnKQ zNT8f-_X)_wFfvmtUTth`ZEP$S8zZG$Ado9X!ksxBj_%~|mI^Ic{cS1bT`6!?Ddlpd zO9=`^8&e>v{2r4Hc%`?F6n*^u12zrQ)z_N9M&N23`XIAO9XRlUlZM!!bo0$~@b`Tj z9^O#A_S)jD6;r8%Hu1hCH}jSF7E2KHQ(99NGKBUIqQmkb68W_mk{Rq{Vu4d$R}q$( zI6AK@@+Fnu_N?d(G{<8dzFcg6OV0w@J^DU3=gP|li~fdmC=^bn`bv?W!ExHROyb)> zOVD;6??WhUS5MwNj-^DE(db34W}sa@c4LqwS3PopMF%>2JZ*Q2)4J6m1>AMB&mIff z8`BM?U}SLF;8-D7BLcqp_!@Pw(oKZQOmQOVCfWlDtXno3e0QovX}RAg$V@ zXQD%_w+Ibaoq5x#GorN*D_ym7Yz&wfVzOS(7fU_mW^Z$b=Gk?zm4#%7+w?81^m65< zd18^1Cfk^Q2V;2MkoKO7QW&<2gH4|RR;E%_+ePWXtf`)y0PfQW%5W^cCE=ChBvQC^ zxYW0%I~19-x<`88y{mMZrSCnalgvEaJ~xw{*MW1Yco&XaV5gr8nIp@EEIy$PYevxO zx%|HAgWFk(s0wsObb7(2KkB5DZ?GU+lf7IfcnpcCZl6IqJ>z zrkE|zaCOkZ53Q`v#+n-Oe`!4UH(vBF1vpy>`OpF{?|;4?xPi)+Us3zlz5ah}#?#w- z(<>^QNoUX)^#;Z$3%G#v2eZ`PuijO&WqjY*NS_Ce6=Nc~t9#YTRoyGQP}BG|g?5E@{1Ft%b1^9` zMR`;5r5{Vm6<7S0Q)#Cq<(JR!%JR!+Fo5%Yhir2}`)t??D4Rm1b2kt&#E#aKG&}~j zPeC5L2aqQ67>~h~6nEipKL%Q`Cm;A(t9w^^rMRv_&u8Gh@c7m4{TGINyxz`Kn6t5*dN zH2h;AllnFG@3bc*Z52hS~a92=(e6&ACBusZA3USwJwQi{)M33#N; zH#hu2E-6)&6Z)he0y6te*hXa`?ff*mJXg-wv_Sp^f&5{)PKyfU?+WCPNUZpQ{0)Kp zQIt3HI|KQ#rZS|4#q7TK`nv#BLwey02P4 zR{i884~1j}U7h30VZVub(^}{At=0-@62P*N`1@LPxPsdki&mvzEqqif#9c10is3~1 zO?yVeC6ZL~#x{pVbi6Y&++@Z6vVw@(mD39hzlwr!UKcql8jU3*HLzfGM|ip~SfZRQ zN`l-lGF`I4SWJr4Qi5^bjgG&<_(GNggfClooX6)6%X2OHgfFW6h}>n#C%jPkyCrHs z{j|l(iO_V=uLBHYvJIyABe|eUN#Mh=H-Na2csM7-7XHlxwhSq| zSFW7U=j370?iRIvzZ21}|K9I03@m(SNY^C7cUFaFDffOr+>SGFNsBO%V zu}bDip#)b^Od67sE72KwP&t+OjOCGFs?$hzmg?gDe`;D%p^^v`7THo$m0^2HzO$}) z_F}TvPAW(!s4JPX1orK)Z1;NZ$jKpVZLjC{*lcCw9<@7mzw2N2lihZB`1!FHyKcLm zjNEq|$d!$gPTxj$+dD3IoPH|Y#&BhOULKzYV|+k6FrMS{hvlu7d>S8BegraFvpkK1 z%I9%FJ-~ki#Uc7l@<+QImWy#!z9D359}5mBU^8w|NfVj|dmM;+X>p=@45}po2@5U9 zWCEJTGzpGWyi;=W7C4D<8@rQ)2YL;* z$}<4F+XUxerl+mc)l!yLP+pK*QD2dp>7H4X-;$bIR9ingr=qSR2M-$Rr?oc7+?o#0 zl;nI!=G{fE^t613qr9o4ct%BfTx?0|%xU>muAG93JV&XkBrmUK-lEf_^TIeN+s(gV z9NK6c#BvEAoeA<+1myz`M)@w;Xes|@Ab+Jyv*bS;$nTM$aQ^yj8G-yY@Z+Ub4lmF5L&1~5z6^G?B?8WYn(&xz3?(@dI= zk7`Yzlv%hEx8^b}_DC9v%^jID1q-c|wF?PV!V$SJV2Da4oiOSXx7jkwVb#|PtG-P$ z&&euT*A#4=I%iRI>e~7Z8->vK#KAzdrM`N}Tho_?3#XhFu=s1Po>sYX?$TwojWgI{ z)mu~Jy?h_6|JGHvPHJebZ>bYsHthggeK~9g>NeN+5GyKU=`a!3K>&5A^&N4GAbz45 zL~@NJ28{!E%Kw7bcT<7S>$~6j7XFi=tNV1U?kmRZ{(`e3y8N^KmYSh?Z2p%I^{1Mh(hl=zaMqaJm*N zedx-;XbYq?#(|a$Xah)U>Sg(gS{xMh@ViT=ra@+JM`H1au6wYvagM#BGjDdmtj>;X z@8X)O1#o?;n_FDh>4==(F#lJM#coGkVKUUC`3pN`-7-g|U?5OaCB(u6x5hbu)Bn5vor(V{ife0+hDJM}Z@2ocfF0O{;0f}v zW1<*pq>Tu~P%~HnQw9}cOJM4w3>s#79w}ZyaSgP~EU~O62B)Bqfi-Z2EX@GVKw=mh zEiG(87MB(4tS)S5AuF=%^n&Wb#%VAlTX1R0bxuxXgjmTb0r?7D6-&kyv6`laJVsDWB0Pjwdc zxdC3oWRyu0NztOPM5v%Aqy!x1*WfL6H5=gx zs-60Ch)=LDJs<05w7tHxux*M8R**4U%tyQeXg9E)eS*GtpbrV`twZeajlnlpG^>A! z6V;F=RT+{f1|Zne1OWv=UC-`mLi$jeOnz%GR_e9C4cLcyu z(Uu(Ld{z0S0Eal{0rSn+hA`j!H6DASw?E;zIEV7#F|XD=Ri5~ARenTXZz)f6QI+qK z-JGw=cLmDtk~dn)zZ59HS~gqCoAvLL{g(1({p+Nn4ZDGmt-S9o;`Z;8+x+F_9$PV5 zIhWhN-Ztp_6oZyW<^Q+sd(m!;2k#ZKK&iJ97we}{A$V(eMVfePa*+M-XjJw#2N%c39zPKc*QJSINmSj(MN+kV>;cZzZc{i zbDdj1WpR%IE@CVpQz5!l%wsub$W9b*Ms!Q@RI70657Bc~p6He;f1Vumk3D!fqFbtb zH?8G?@`Q`3{4TlIQl4;8m1kVUg1#Gcj%+}3a9R~0PW!VEDrdD(;}YhYOTjNB6b3{k zVD<|3fjD4-GwmUja90UUC;)5T1jGP=82sTe#4AY3J!C)f4fdT)ds zo16eYNt>EHV+#~(vl%;@`4(b^Bf(>FqHbccyR#wJ@35rb;`e0AD5}nmt~dObOcI}7 zlovZWdQwIq-pvGXfar_DfqjOYSK%1Z7li}s44#4LR~gfnQpU*< zoa{lkr2LPl{Cvt6U2+EJtMY`Cs{DC48pJG5IH}5aOE|Nk9#x)jQkCC@gF?*mgp;cL zY6;I(DzE>BVwL#Ii(W&H$nCLJ2g;u#^SM0ch;(!N%Z&E({zCEDw(C&7!)SlMb_<5L z2Ia?q^GQI`Tm4ucV(1hiKrwk?W1<*D$CRiTqC_(zWagL)t_rb2#t(kSH&TI+ew@UP zWX?tksZ^RZ9I6ELs1A~A{6U7Dz*=$&TQYk#1uj9VKhDuhBFgvSzw*<66PH|e873qk zBHn}iC7WkPwx6P&$z0f+9jP>bQq|s;IDchyN4}Zl9R=}UJi`2LBded;j-lyuu_t$UoCsxopv5mNYq3T%RrS(cT~JX z`9ACjMH=s&)ZTEVxSh*8kRQc#Rh1tTZ*xBFN&hB^uB!5@#4Vhkj`9gM!eLeZJn=iu zk3_y;x~j@|>Xnc+B2tV&@K`vxLU#=*$I+O*qU^aZrEdFJfhuhKfCu}rt z6^wR?4;dEVRr$ zpO5_|)jx;;H}F|Q{vs~li#vij?Z@BY{)EQXF?$qZ)^2vupa&*bqWYZ2&TV%!iZ$%o zrT_rjb=a`0{^Gm8X1)}BC-bEdoL>gMRM@_W)^&0_SBQJHTL^CYQS$3YzAAsd#0Vk3 zAN_)VT%dffc!u*q7g7G8zr0v4H~TK6@~D5Njrc}Y|9a{5eMEi?5eF(E=!#Ox5o92v=h#5duP6NU;f&`wM9_?k z)es&(v$Oaj{V%m5v#8iBR^uBkwAG1k8}rUjzf2vV->yVeYw`c9qw0UOE`3+P4X`eK zkvyg!Y$}?s|J85@Jmx5JiviVl=v+ntE2VQ8mXvqCm0*aF88Cn!+Sd$ zvb6p)!rUO;<~G$B1k(^E#3$2)r!j7(;SQN+`Q1bjBY%9Zl)<5lNH0*!eu=rJf0wbGnlmoM@7k~oH~V3_fRZ)7-wjldtrv{G$+ydp zH2XVHCvGzwcge_zJQV}(uF8Ek;7kdh#qU_0UTK~YAJfNc40vKDovO3xyPb#{4$wB?z zZ{B#*H(ebFCv`4|lVUmHCs>J6A? zsJB_@EybKtGDC{|1m+8@O&R*`!nGRLYPOM95fcpIXMoiQG>RA^R+}i7;{I8VICFhw z-G!{OxC`2iCPTaN)jIDL7T?qrqImk!aFH)(DXHR&){9wXQP)w8C}TocnTReqmg+cAghr#*tIe;sUJ2$wlV6t}0|XpfT5DPKxzPnXf2 z)0Xl?A65Agxr6gnd8%KPCvJpr)Cu_(#h{vH>T8UVHpyOyzNUtTzDDu1tr+?y9(q#j zD@PJS0;k&Nkv#@04U~#eT7pgal{ZGXgb9>4El}QE+&N+Rse+(DRf8KtbUCXc7EBn7 zswg;Y)rxJC8iNfs*tU@URA-tnF;uJObO?cohhXASFqr|EGzMTomNSr>04Dhsm;?c3 z0*#j8yBey|iUCmSmu64kr32O@;Uf_H>+D1OQWjM#w;u#h~@PvpE%C@O zX%f5dMxqDt_@k{TApnW|js9TB)t)ZMkvDX>9T@Ja%3h0SZ@D+5r#+E#8pXPDi?45v zEz}MP*6`w8rah2{g0}6G4jx1HS+*5}BCMo*@V5&g|1@K^S$xM04#=bp2BQkT)bv77 z!9SGg7(sx>kwl1e)(~xTCu2*1t^j$?s2{ zi<2&uWvg}17&0Ht4C}rdmgB52pl0|zt5b2Oj=6|JlQPh>NL=ZdBl5J)!Ie#uu<51& zqBaKaMoF+)XLwv+d8NhYdd(Wc>-viFy8>?4KPL*@FmG|>Xsyy*Zs(iPh%T(pbrcjmNW5}$y zJlja9@@ov6JM!csyy*ls{C5w-7tP5kc(1mK9{Ne3EA5ijFgE~MkHlZ zh+^e65-^x58Z?;&P&@$I3k5>=*(VSiL^z>bt>b`xP2Q$*iwv1k4enROJyJU@}JlR~S^1G!f?*uZaJ^ECx zXIMfufqIm0H}NsxYnZP($@!{0aVe_&E<-1;%D)sSzgkL5d1|LBzt7M?sq)lLRsTAn z<2yJ54*MpGSCt2T=usuF5Ao9oiGN^_d+eLkK_+C%Pe$+9Uhsk?KsA!_mqKzpq7SUw z4~kj^lPiuBw5PWh=Ych6C1<+RJf(hjb;D0*yO=IN0S6I> zy8S*3;k4s`7XnNy8#6D-xj5rIxjkoKAZOXo}9@R6-`x%BP!li1jQoSd_c^UZ=&u%l;#lMYSVFz zCL)Rd$+i{o4`^ioe4%_C7fRrFi8+~R(TV9X&bSIkN^W{;bV7PeL41Wgz%c|8oQ1ej zL?)Ml+qt6HmXBW9*>ab>zsP@+{A~OumwCw(Y<~UfwaaQZ$^+lYxGwQK**J$=-!J=p z%Q%juW&=87cJ5@?76K#$k;DGg#17fBOsItA0pc?6X529gPWUK{fp~ zBUG9U1W3d1X;R-PFZ2x={?(eW*hg8Nsr8M1C+f3!Q%n64xyjdN;C#^6t%$C_^93+n z>K6hIUo!AOqYf1{%ki~9rjvq&WSl#l+IXF|IMbP)5dl{^<^3S^ zYf(=p(*|vv&R3BF{h2RJ3-pJD!>5bIn1`BxtjU|XB>?E(l9t8n>TzNKU6izbHr;CwC5%~D@vKl!DbZIdVbtmK| zRggUzYnY)2H)}NIfkue}k`ds{KC;**tvDJEVnqT%B_qfO@8AUQK*3okTtW)*5PokK zMMT-llE8n_S|y5QBK-2l$2KN2&m8d=vfku!#W*MO%`==6i5SR%b0SerK7Xci z^80~ub6~&zp!^u~nY^2n_uHmy1a$?`kPVi)em1Ty-?`f3*ej{?G^t$_pE^LqnFLv0&#}IZq1DhY z(aCMegaL`_8J~zt)-`7DLWX{Pchk<)`I{|mx4>aaP(z>}Ks&lE?I5TGBLA3>G1_6A z{sI&n52`cv+}aKc3`5%CJ69}ccxEymLJ%c*sP>G9>>0myz1eFE$b&v6NOKHb?wcS? zG`GmBnDHP)PhikEbHZ7*xkTC2{IX$gg%M?=i3OrY))%6t;lBGC4vKg6Eb(s5(@$dq zX?{0J+lKE3PMR?EYUXD`Cc4ow-e*&Qb2{`I!(_G~9^F7I$lij4QskIM0x3FrQm}YO zoeXQX?%+YRPqpxUY91%l#&fifMYZ@TU}NQ?y%yHyKPp;UD)9Glb45iH{Q(R%I`>W< zhX)<;-%f2N`bQ&2ea!U3H)P2Ov9`*iH6)ML5Lk@*XClNKXSx@oe(Q1legBsF~}OIJ^OK`STB}epD;KkhEb) zDsf$eEBP<4!tnefhghHO@azBK0oUSI|B2WB>py(*b-Dj6Z2#4ACN`b*GgDwG!k(7! zjdmU!`;8;U7_nmfQDS&~2`*38pM3J6iUy#<0Qds{PSN`bkYCC-Q zZz3ms_H8G6T!*+Fs}Z+@@HY@O#K2f^Jt_o)ns@3DVU8N&C%*7<2s%1=b;sPf3l_|s z+tFBFQBh8R;^?-)!EM`i?AW$y>C#oJmeJW!)rhRHRz3osJdT3ypC^VS-sH7Re+Fel zq;#+2&zMbu)YcM&;12;ebrBQffG)HK^mRGpmO0Sr7$|Ls_PD1>0EY?36u!_1LW>>w|q>0q9-xg)i>!ReZn=}dKJRMfZ&i}Fj3%Zo;0=C;s5 z^BLJWX$jtn%Cf}gF+}(TwPzh*Pv?2NV<`3=RXj@sD;?o~63s%@;? zX!Va#h+79?Szd~5?cvu%`p-qG=&y9?d#MhaR*rseLcg=o?*=ncnHk&eF`%MkpUcBg zX%}nhh;F6is|Zenm}O1~vDC3qHavH7%(4XI4wN5OrhbhQc|ZCiv%?wL&L_Ysp??u^ zu0sqCFW(NM8s7)Gm0`N$D|h>PfSlvh|2R86c_&~J}ogmGO;K%JD)@<=ukP# z2Pi(z6m)=mv;usOVa&l}o{oa*%vUnn$WgFFv=j0c^bav@8zSsp4|=AIuorZ1k52RE zW>giVOev|)F7UdNc3sxnTqG;Xi)yMxY0Bcc8R?16YKNn?ASttQhHK#boagJB=X%P^ zDyeNktHe5H!``P_#jhZ4EJP;bB>IowyhIjY!pstTTWLC}$XXy(uaH4h}1XDHSpC1ZPn9@(`Y*PP;7f9#i3!j` zYxn`07b@UsA?{QhD+)kBF_nQvI4qPR40vnC&66UYB8YMMMqI<}4rhLQTXRZd{kOL) z|Jt^eY1_ZHr1P2`GrnGmcm(?k#h=BZ7t;!+#KcS~m@<7{-MUK_F1&2Lx32ffrSDbL z*Hu12w2NZZ4Dh-d1<80vU~M(%^8Z`N@v8AJAee55HnkXF1Wc1mZ&v< zPe2z-ARBS;3&e2=j%t(jc~M-b&vk)5yU}Ahu{S8b%}nazOiN7Ce9C}mmFPq`da9z@ z(D@tH+jBMD*{SE&fmL=Rs)h z8R7y7?P{$={uTa9ByqzA1=Pe2Il4baE=WTj)~U2KyMRgpe$Hum@~@{q60xr2uaxMg zg{|Z($*x!-lR%xK^HaWCARNL`@ZFUBXy`|^Td<(K3p>epmJbBtM3@3EvWZ1WH?V|rIQ=r_7V4k4?PUK( z%1%tUJS;v%MP30(Hdd#iysObrZo07Pr&ZI@nGLGx`kVTjM$@V7zT;^70NPHxDYuz|3R!mlJd0iPmn?G~UsgrNJwv;LhTv7({PCUm?BVev64a+u3<#`L1m# zT0?!Ly>=@47(T9x!2>j|!>Z<>@meyz_tf6t0R()X)z-^LWIJs3=-U*Lk~BgtL0l0n zLq$n0AROt>i|j&PtM9i-n~3oyi%Y{^jEqW*%ZU@>z&cBkV7RiA$0_F+xfk zad6}7Cy531%_~U34O71&Z+H?gju-4A@vJx?P-9YLB_l9ub?Emmu}?8FsH}%j8|~k5TO>S`$O~A&8N~**o4eTR4!e2HbcW@GnekruIkG zrsy}@9-cHQA;E!~Zjjmf%_82B5I1SkBR2iUBzF{bKx{?(gX{OVAF~kLG?)|7 zUFYH@tI*yk&=NW`{GTaH&w(v=BI=Ab`TGzE7{tmnSvGbNoI&0+AUCA=11CkkKg#R~ zlL+!A*e_#ufs=7A{Y`zh_)GV*wvNw!Vz+fvRekmo#vxb+;0!rBV>O^-3|X6v&taYN ze~RqX$lMXox513JF3EhXBTb~#T>hJ zA{jAU{{1rIFSsZFpT|!O$2e}VZN$cjqN_3IYD(^ub%Rn+(}@ONFrtvx{ntA)?ymW! zeC4pM`m)wUe-Eg<j-<{Mz)S zDWz%Ug>b}LI48f6&oOhCizSV-Cd2w8ve;!SY?{S~nU%m;m(Ifa1>)!b7hp@ehxS z#DCAY-)ItAx=HIooQyKau%`p}X!j(*>qOv*!Wn=M>pk^`aE3(3v;!pJEt%>~#+6L; z5`Z&a_@+Rj!hdOYXvXmOVY_Q;*Vz0g-e`AC>)t*8XV33V>8ssayC-oAQhWii1<{D# zK+i$3F3bGbZ|H?g3A4!_sTmJ_ASSq|bESoc+c8!3Z;75%{TWf8R#zvcdG4tE+E+;x z$>W50zT@jR1ysg#o49^gk;~-`PoetnNE7w?GpVAduI@(nSHD(yhX-}TV?lfjS{05l z4_MC_mmy68Cw~cfC(l9F$%Zs~kg34=rv>&w@vWQ}|xj?(XKawGB4zbBII$^fi6sjAY zFngs!X(!XN+q_2hGnuHU6YcFrm;c069WgB1gExmWqGG}dWW5AUv zuP$e5g?VyeR8-XIebr&MQaWL+BRUeDRfia|J=JPp7tX?y5u}}gebsJ^m&K3mbNtLm zV5uQ4?Tw&ex!T2m7RfBq@W&%<>Q9UeQx##JM62wy)rQ)JIY@JouB1pI#R|<$nzM1Z zrsGO>&vYdhTzXD)h@O)ZyWsii^g8YMGv;uOosO%iNeRc47T0DkT{Wd{%J=cNWM%fU z?zFnJ@8fT=e(?L*-xp83TKO>kt9-TcNBFPu)mLfm2`vj}bi8b9!alhjJ*4O?W&R$T z-u6Zht(ZzDqbSie83wC}Toq_(DYevKqD)5xXPuv}^P!GpzK?kE6mmFC+~SKhs`QIaU*v5tl)B=B&&o!)>M6s}ZT+`c?z}7fWhx zx~b+Sz!h=q!GFIeZ%2I=orX2;IvLz487svj1BwA^F2h5M1&|iCpGfGOKfjay`UeL3 z@mF-!O*dUlf1Z2qzWW~fBOHxGHK#ETRcz@nKYp4E0-48SWvfZ}#Z6g{yXERlrF%|q z!Ap3TX!Px9Zx&01tu&fNC=|z)LgUah^9OpAK;gXck`Ke0Bu{)>zqET#N8Y@8&s=9| z`8m^EvphM4i^e*|Oi#~ceap&QS}V(Qu#YOASz5KGfB#}?17LO^+Tb>&Z%)EJL)=S3 z3yOiLhJ^$=#N-9SMg@s$3=R*QC;!&PqAhX$cuH1H@s!yu6>UyONq2qu?5gzH?yxL( zL2_=xV)yXEVn;`LN9T%pPBE5{=gF_1ndNY~oS79Zj%f=MWkh;OgR8W?KBp_+mA7o> zJX$)zIce~jz8$I(k{nI|d&T=stUkig3Rd-z=+NJOs`|0F?4IuKdn(1#$@=1-{j5gG zT`K^if5jM+4K1YE{xP;nDM{SrVCYc%TC@wR2}vo*eGWt?kD~ynaSHH}ByzWM>lRdbmbK&;Rpb>o z(yLmFOIwPP;$p>g!YMTeo(D|wK@zvEUSIHVJo%ou{=>1p*UfCu8#Jrs{#Y zU8{CURF=)GNSC>bYh10K?A*F}B~6{xDb5+I>Pn_&XJ%G5xEJQixg9g-&XXgh3kO== zp7h#9_4O;K=2b7<(R|L=H-LdIPKo=|H23hnzGW*HpfOQ^^94MY$jd)4o>nU#^7)|M zA&DLMaEuucVg0)p)&CkH*Vj~?zKZ0QUexnPz(DO`=oAK?Th@3u*lM#^*I_VTjeHIc z7CzLC%?|WTHMnM~lT{3z5(U>JEll9JUnrGqtW+`r8;BsS(hH5#JLcy#Ev=@btryO! zZ^^H3bLO{s^BpM_?KQ14y5`SYslOKInp)N1>1b-|kfLs(BWKyvlG&cD%<8t%89iAU z?TsZFWC zvf4#}8RNhda^M4I03m6Z$(8RgV5Ax9vvjlW42EN;jyoU@^2{goTqvP4U5 z&Ca3a%eva}ZPJ5ZBOZmlm!g{ieWGc%4=zlx=X3n5xu^{==Fr_}|Bkie`{;=s)Lt=m zYLTS%gAkl5$V&;w-yCM}w~Eo)+I#(H(zoFI_XfUCvL?n6Ll+Gm85pM6_ho+8{ThRD z=k~XVSXg%rVuJtA&Oe)ThFw=|$SzB0)4>Nl^ndZJvK#(^v&!JP588M;rV-h|Fbu6L zF3mHgy)l>dGaXV!d^dS!0qKH|CR5(UhKuRJ#~dpOdjU=-YjC;S z#J;K9EGJM~XIo(#Yw!@l2xMy6rj zlB!n8x*6^!PYm3Jal}NYkR82r;IUahvi)erPj*~->7`AVzObrFOxK?lUj50cRaLj& zUPWujbet#l5Wdlfm>@K_s_keWg&%rNeJ7yvId^@@I*7mvDRs!r-HQ> z6~J+3{Hb8`<`g+IQbNuIn>XiyDrfc-IuIt7bn|zI>)bhn_mip+iIqHG_}-XP-HgW}Z2; zq~`L=apq8papur+?NaeQ@jUwex$)0)t?|!G#>YPg6z`R#pyL#0mGot#Gf6l00VW+k zQ)pGt_R!F(ITM9eg{=eN^b6p1G;>A)J4man)bGqgJhu{8ktb<5Z5*xEjw#C8@fSGV ztu2N&9z5u;ur9jc zQ)z(Msvaj*uG&|TP+bXraqbseeL?gBK$1aCK0u8X6rd*a85eR$;9i7lEUuLRwK{Gd zl4uCf?J%Fg@wI2SqgkIY)>GJ?n^7~htvmK~%tLRnJiD!kB3= zqUnec5ANQbm|T+6y}5dFY-V&)RQ14yoYdy{j0-QSj*3i)&14&z>FDQwp`Ud27}+)j zxOT(go_DfS&@-jxB6oV~5es6*>$o6ON4ykPa}ffiitEF#{6=igg^LR^>lRcO&8yGL zshL?&v*=vxDIDz;nboe;MWSIZ>A7Zay{en^TwptEs~6T}y7iy!=&z|uDr_oV497s& z!b2~$i03}Zsd-)+d-RFaP}ZYUhyai?sGkr7siB^D6KW_OYAEk#&)aQYsG-=#Pe5X& ziO2E17;|MX)lSN3Q0?tW$DnpJ!K$YALp)~bngPoRm0 zKf(VW^f`2X;bY*%|KtBlUCJ5Q_cQ5IwvOZKC)TCR(H3AW%=^EjOL=yjF6G}tbScC~ z(4Ooc(50xYmZ?iIw`^EH;6=`RuAut=K3xjcZ_%arw`3$1#U#aiBV7u4&IG(&tdh7O z^+}>teX>w2&>s{cRsTT$yPYN@936TdCmqNnM*mjZ^30rPrs{9KJRq;XUV2VH_X~l5 zLpIhKe1>l(gSeI|n`*M(42igD1~PjLn=${nX%wtnMRy`Wl_CCtxWf?M(Fvb9GCW0z z_#me;5Bhw|TQa3QKgEUPJFokCS!c6T|Mkw?#`5%3S55XMyIZEU&)y{NtZj)2Ps*## zt7s{Vm!8Ra^*?<(Dx)+nw>&GRvexaXWSab`IF48sdDv+fG}(w2VM5G|xdu%G+KGh| z%V9F^jAJrMp6_QjjDXsHrWykLC$gJxf~_YzyLwhp<@EHt?B$KM-7{Q;tt+eR7dXTl zX~`K)Yg(uGG-qWb7fo@v+IP&IH!#nYHHF4>HN=|BZ!GqGDts7sr`ab5@uLpS{DxJZgM&j19kM@42r)tvVgUBNMF_%Sm0OAz zv!_?MX4g70-Lp#C8+O}&ynLW;)pTdc?A4y8#rfj()YQzT9>#&pC#&>7RTj+K(LQgW zy#7lZ@h4F4s595u9SW?K#Inwen^2#~?z;Ks}l1r8yRv_FU~2e3^L&*;aRnnZe& zNYMWvJ%9f5>F508q1}(~hsG5(KWA<*fN=o({Y^w92->hD@O@3YliN>JF|a2wDHHTY zFovh#B#^s=x0E&~IK73llBU;-kMxw1#?qY0G^z}TDAW@U%$VzkM95q)FvDzG2*ERq zfdC12b)<9(GKx+Rr*&P#wd;TJ={nl3>-zJeQiS>YKy!d#5N>MtL%wV>SAKR1M~~U_ z5+3l`^=DC~=27s#8Yd6nHqGpXVUT4u+VImdGeXAG6#ZiqZI!knCsguISY6tPZqq;b z3WSA+he>&T{moL^!<-FGi@qhlxu{uWJL@YeGW0HScR_oBjn_T@R29V5ah7}5xSoyDko{#=xkkG zU*ChHpl9^d*RO7M{-vbNodJWMl4X6F)w9Huwt@LYuKC;N&feZpRM@^l|7CW|>Z#Lu zTC#WTo3^@{)T;_t5%YxTcA81W3 zo%c6=_1t~=Q&-llSnZl#k>0bo`{kFVXYp##mZZvUc_|G%LgC^lt+vGplbB)tm!YRCg@ECtV&GCi75uS=Jf1y zonL%S0zr_#6#!lUZisvDfh1;%8A->a6b3B|K{)G9j{-U=K$38POb8}J*2-tuC zE_HM`Llu#Lh4NH#Iz@DM(+$Jh(#x9jpPZ-vVau$g?MpWN?Qei=hqK0&8m{|bP1o$D zIEw;0k59!bz{5(!0Wum@M(anJW&JRHE!BqeFvd7jE5i&RYc<7397b)EH5>8{gMYMX zh(C|JDY!S3Kf$&FB+m?JG!Z((4D=^%%bQ*4ZI8|OmXtt&m+kHJT(H>bTv|VSS%Ryv zXzfZIbyPCFt3bS*F{QkmW0XW^7S+34Q_H8!Ey!}TG^V>UQ=>E5rsaAHlJiJ+L-E}n z!C2T~9}v8Vm>6s&Oa5)7-)xfBdgX2M)C1zSi2HEbEQlceM{&G9<#A2{M{d*|LT5r2 zeUs#=5U8}&u=Sp?cJPv$aL>H?^X50fCe`CvSd#(jac%puW$j{6zq+EmHaokvy+Vv~ z8=yBAZ*l)fr)u4goBcb>lm#gP#U(;3-g>CZKk#TaU;lSL>_fI1bF+9Dy{fSG*9vN#63eb4PpU92c_iA6F2Kuidp*W zVx#_3F}+GWUsGkA3kq6b`%lnkiW`^ou|tGHjuvtZ3xt3D+uJP*m*=0HF*o;W0H9u$5|l~!Z?!b zm>5TO_7ELHP9~xh>)X%dV;Li`718z);fK?pPQxGXBEMI1YI@5j;(WV)wBhAvr~UTy zA6{9`yGiE#X+udevK-!zg`VeomKjk5i<$5^(ZhZ`uDP;#eFoeomH@s@sj4#+YFOc5^?X4uXsxui+2>P&XC_FFR+v+SgG}i$=9G+OeTpTXv^#E}DjP!O?6vY zlJMxC#pKo$wKb#vs(sXM)xI^-#r;wA{6*xe^`bjyy*LrbUrn)G(K0#@+1f#8G$! zAoXg#f!5PF5iPOHE;+_xyrTnrb|Mfum9&;WBl|M(WxaOZ&~wF1jIr`W z%mJ7f6MU|i#CC=_0CflfaR79jXEyT!XFFHS5dVq8K_O^yuGnAw@<40oSvppX#e;-1 z7*q6%##Hs|9E0ak@;u5X!)?1{hkGw+VBlaldf`Rhu z<;{M0LIy|mzh=}A8iY9reFFG859ASP+CD#*A0mu1q~B)&u_-$uy`Kb)ASR1+-^z4! z64pqvil-}C!;@bQt(|nG@UUk*jOr!G^ybVVsUA|e^Fy>J9xYvr|4Q|FV)~vv=my|n z16+%EO;qdqDuOTa9mtPjyi@tz2LF(b`~-%p%3sa!rE_6&w6_5d%Xv(uZ0jt6JnOv> z|3yTsv(S=?!X|e?5CNg>Rdy@4Ydf0#1dpHkeh-g}zV2GZXrtGu<*kW~_X`Mw4n z4(VLDUh%pprSJLviu`mQ|JU&a;1_+5%HzBS$RvRmaCt%gdO4`_fftk?LHQ`R8SuKF zY2BM#u1ikxzfW>Sysz@t8+;q#`TerNpN|;oD|~kP9_I(j!$)H!JXaAbPUT}y7w|v| z+0&VF&%l{KDOmmCOp?ck@;va3jC)8_Nk{&8POT{(c-Hf3adCslRo?~AM6_D*OkKu& zq5eZ&7|34_{TIUp{f}pOsq*K@ZI*n33*{3%s-gEmNCJE0kamZ#I7UZIt+{FL_o&*( zn-mK>MdO$ph?wg_rH&+Oj%{+Mn!-n07|`L-!iKWE$t9`H_1P9NWKn+;V4?U#qQ#1j z>-N(QmQ50^QTeOQbxStdDg*iJh&EwnQ$3`E$cA;>en0InV(^%x!Uz&=W|+zzqqA1w z7ljW}o_lmY0KNjEOa>1yD#9H_&ZkiHIb?$a%0bakipjqjjwaZsL3kW|fJ`b*kP*T1 zQSobMQP`n_va|?1&E*gz8{Bz_C&R23d!c*Rh zqn^2ze4^hff2HijcSw$x!*aY<^K1^oF3ALVhyxW=tT{a|Vn4=5~iS zTXv%p!s#5GKTdF>^EXHq7<&H3L~!~C&fmz!`5Un;E)40^1`;5i{%KH?iPj{efsZgQ zypOipMV{3`dI z&PgCSdg)p8I3e=Ye8OuEo?=jz0?Ob3vnm){79)BApraz%TE(vs_E=ys#r?7zDXp}i zhDf%qCc7vt(z3!AI>IN7m(k8xn--U!pC2DMRn|EpO&CI3z!Q82WU4feKjg7qDSyIn zPp9{K^4XL^H}_my0pV%uXLAz$I@dTJ-;*FQ%`D)i-u z0qv5X5kE)q!T<16$051DqjoL6p|8WUD)o%xgReW}_^JHf+S(30%R-FosnQ1nVa*>O z+-t-Kzc6RRhMabkDV5jw7Re95>1q_Wo6P-+l%I|<==zB>1qi1qB;De!&@TI;0a9Coi1bl#7f%xDH z=G3iN+gYTykR{W0T-!c4qrf3mu zVke%*YdLtn+V=y^2O1Co>*T-T_Z!3OQiO*#l4VvSh7<1h6jOX}r%yCRRqoPLYwe;Y@MGo#|uN|xUJYSziF;xj?b6x`C@F}{+v1f z!|`+cy@}@dOu%8T?apy?e5NtSZ3)41{8QgHWBh{WxUKU4wK-mlIrb*aG5EL99K&zK zE~nq-oQS14Blhu}p*f;{pHG~*HiP{y$uA}u`>TNd&ydWRku6NQ3t3nH7;zYBpG2B$ z!$jN?ZWe?~iN?cgAt)zKNBnW9zki7S^sD3J-!GigxllBuznfT{gPWE2KKS6h_df8z zy&XGT;wA63-??ZXh5>MbQ$H^6s%A_@`z zBQ8X4V8Y0%QJ`=YWK)=6T?6VqZ0_zTnwp-OUh1gC>6NFCFIbh9SQ?+u*h0MPZp74B zf^YcGt3Dvgm>1fO{qIy$)*`dm~G4~Ch50lqgmd!)@yIxHm0q*T z-`}0}oT|~av1IS*o7rC$cm&>`;>lpn-_H1B#A?CsJJ3G*suqVBYw{WdCW*AI#_C+) zJAt&qcM@s6?>JJg@8?JxeaDbCaZa=EIo!8!{#4%)+_!Q0ZcclAFCb^F?`fzLj`U_CS%8wyA?-#z1^7DU?4VTqh{{9rl#KLsPT%4D_tD=1@q2uw zKzu-Ni4VEtag1$&_y|v3fbc1#UX+I`JD$3n^sd$O<#W7Cbr;@0Laz5ny<9z=S z-+zqzLbU$~Qffb9*df0VEj$j1?2kBohjQ@Ulc1W1Fn>z41mCqt3jl!<9_tdkdlL6; zoU;^dDA87-wi2y}@Aspg61Te19OX+dWr}meKkNKXcKq>dM6mUC<`xdmY5^#7LDPdG4 zu=f;F!purw(J`c5oYT!uS98t|^tY1xRS8((9-|qB^mR^YG%GO*s7Jhy?^a?=Ddz*e zr?yoJ8q-Q1(@LDJ76s}X?>mgtgW9UN4OJNBhj8D3x2n+Qr;#?H4OM6}CP+&qDMnw#~&Sh}a4)}uXmi)*Xrp4Rg`s^@uB&pm~~ zG`+>`^zztw@x?n~zn6{HdeQe6kkZ$^7}H}&+d%icXy+41yD*ww%oIv@aQXd!l@}NV zFHVdpYCs!M1Ln&Kq(?Y?nbTJ|eT~zjoW9QK8=St$>05xUSG>*l?@-N{FI3NaoF1e0 zpkHVkMvzJpW_r;(N@>=3(K||M)_8%R$q>92puY_~nvLl1F>rbbpt_Cd?+K&@z?Mei zDbbTghIu1;P5DbXUBzz^4QvFQDLsUm8+isba(^3{J~T3YXcR;r8U@jZMnUwUQ5@xz z=tH9*`p_tdJ~WEA=!@tt-M>R$VfxUB{!-2{^sx~=rF+8FMjppT9>+!=$42y&$`E~M zLhp_vO~B|tV}SBa=pE(IXf~loCy*}XoE@A)w6O`jz*F?%7*e89P53UQG)J2FTTS@N zN!-(XZ^l=iLrU|#ndf^mV{$WUK875kInBIwG&6oS15YTQ@UxlW){HM6N2Gq5`_25t zW}ZRK7+I9z?=~~uHgkWQxu?zib({|dY-~XvZ$O%j+1G+TK8KY0*n(CaK}zd*3*&7I zT6Gxrt2loLr-ZRBOaogOV_VR7)W8_q!Wi3v5j=q$!q^s!Af<${ErLd{1tUoJgt09c zL41obwgr7b&5W@vjIk}~*9*uYn$yA<+rs^7;eNF+#{P9jzc z(V3}$;oC?FhEvh^Gb9bY`5wF^4^VG*}y5$cS?J>kzHJVnam*va{w$UlX1 z$rA7uq6%|L+|g40`clv+y5CP_m;+hCb*^AsUBTa7!EIXs{5h$u!0DaINa-sp_$yu9 z{w|b137c;!(*+(0DQY{8(loDEq9y4_sU@qBe@g2{{z;?>z?p7*FH{Ix*AVUK_(uL{2qp659jyrTRjZ5DR?}j&A#JE!M`CzJxKAc_!0QVV@U6#lHf}z=YG`oBS7g0Qt+in zu}UI+pWX$QQb}-MNRLyUz$?lJT^0AB4M+*{;$GaJ6!!rdCvZd=I0~ePkbfW7e;;wD zxTli$fjdP>{?mbUX6bI2ZO7G*8T6GZRPl!YOl|y)XL>$7?<4CFHhfp)6528nh zP}^~FKbO3pYr7xiPl)@Ge^NZa`44dY4@LqB^<152C+#7d@r)VJ?Z)5cl8%k%GF4 zhqzS_ajPEU8Xn^QK8*aIi-$S?Vbp&D_f-GGsGshs*AJt9$|3kX%zb=`A^#Ha@T7PN z?L2|>9en*IjN?(HA8-oJ4fiyHzX1h1g%lJCDOOLUST~V^ONWgW_-dq>cjC9GjZ$j! zD`?xbNWm40SAZu+kb)8-1;-*@MLnmGf{#M_5z4%QdY(oKswLh)J(Ru!IJ`lWO1z1u zhatHE2Z$6j6DjATRS)6*_xR$QsPk#0AENzlqRxjv=|H29X5%aG5G54vpe4tVQjgxj zyT_1HkKRE`P!ew)L5h`2yo+~7#k(l~Hd1Q&yWHz{QHJiR%zJ1RQijZXT+e%W`Zjbk zgyEQ-sQDOw>lj*#9F#nTlzM%P>v^C1^*+kq3C&G5+V(ym@ElU`4B~zC7x!qxQKVSw z#qV){0x7ls1H5|-DL50P*~tHZ$Mge!_XCFE2Pl6;e1LcHl-uwj-Z~B~7gl_vSn-j9 zc8L#Bo>GDj_M`ajapa?|+zZTR%4f(QXUKnqGCzk_467jFN97CHQ=dl9Uo3t7*AnFYUMaKeDP*_vBm9Y21??!gAx@2AN#9 zaZmnWUpDT;u})oQ+(%$lyVba#1dj7Z#(kvaJ{l|5uZ;W{%RM}3w2zGZSj&C9r9BCj z_9Su}VCx?iiMD@N`y<|=d!eO@uNwC_{s?jgm2cBFfD)Gc z>WE{wZ=`SdyuMA93y1bDU%r6q<0>|d85I=L>z22h99+`DMVt7$mW-~x;gSBKK}U6^ z+g&}b%Com>>*(mtrmCu4yLMIfZR*=GVrlQjp&g~AKi4wN0lze+r5MLh$!nqQ^2hf!{X%btgH6G|>b&3l36%kgwUpoL5EbPK*ez+X38 zMQsXhQDLAp6St)a^-lZ^dgAYY7q@8y-ycHz9e_zCAVaV*-?g^xp8+KriBZ6>348u3 zZ5RKmWT^B3k|Sq;>_)V32jm;{Z=$wIMNl9~fQ@eGfASg-8VTtsBI{x{M?fz+36@P! zn9VVuB(dOO<1tSXVU3v#jb$pdSX00?W{qL0nsrl&%?H(i?n+?a_`Y{SUSf&bJzaMts2GR*?? zXAx-MV%VB21!gS=hYKziR&CwjJbMsHfp)tH)4nXiwM(^cXn)fFtbIkhLAz2!Xs>H0K%?%~KGFW7odk`%M|)a(O1l?W zzft=d@bDSH{Xeu{f-?T6_N?}t_Ip?xzMws?{aU*Zc=$){>)LO$7qyo#FFpj7{1Q&W z><7;80DcZ?w_rrh#b^y<%*HUH=V2s2fQEH1X4F3LrRPI>`!Cvsh=zR;Vmu$$KGqHk zyO<;*MU;pZG1_TO7n4P-h!gRe557SOB2grXWRZen*V4okkuEYsrpOZ6h!vA79NJ&C z{}y>T1jY#?aF-}VD5hdjg7XZ@M7gMddsvlli)!t+!Xs)#t*8_A!Ydj?qi7P%&QZ+JEeW5y{r9BtQI|DjaVzziF3qy(JMBHjbfAN6Pv{rM6T%<+r)M;Aa;mB=$jrB zJH@$TSd3`zX~(oX#i$q)=ZRfnx7Z{0ihbgI?TGf4*pD;oU(=3iZ)z`VZ-@)Th2kP{ zvA9HBDlWq@B$taT#FgSp;>+SHakco0_^P-@d`)~^T&vwIz9GITt`pa5_iGPm4{MKT zKi3}A9@2iHU84O=yF&Y+_U}0L_6hAL;s)_8aih2i5#PQoz9YV?U9Ei&@y~7%{~~S` zw~5=u9pX-Lm-xQ;fw)`zQ2Q442RCUqYJUJXf3J3jcCGep?Jn&a?VDI}f2{qh_9XcA zgT!%*2Z*Z$&-n-<*!)-=7LSRah@Xnb#S`LR#gpP^;@`y2#V^Fai>JhYh^NIb#WOf@ z;#u*W_?38G{962%ctN}f4)izRCy$7i!8g7tUPG*s*TE6KDc%xqgHL-`{0`g~xGHc& zAAol`4ld(k@dxooaYFnFXJ7qAd?HSYPsLxwe~Z6~Q{ppmTIjID)+7#2fzL)5Y_B7v zT~3mbu&RxgF>2ii_l{4im*@knW z=g7Hoo@|%%WrtiK7b22Vr(6uZ)>64lE{6?x7i`W~$!@t?_Q*AIty~8?wDq!AZjc-0 zCfO%9%Pn%N?3df*b~zw-$U!-T6Ti=u!*WE9$}xGK+$DF*J#w$yC(oDrj4fhXi+SoTZ+Be*{$=<56?Y-(6(Yj%{@4UWv8$IbadeW|X(yt)c zZnU{yU8C9qO_1&LW&gJ5`Q|60x0&}b9hNr5Y!CXeWw@_zaG-Z^Q~$<@1-%=`M*AWL z_!6_gT5iDdBVvJq)c{|@7N8Yj14tqksrLuf`-?2E#0*+~L@ZM84=Pv>_U;@S866(l zxwX$WdvJ@bZ*Ysf(}2T}0f$ZnhatX9?%X;yxTSY^Y{x+F*y!XT>#vBVstv=c4NEPb zjTyH5h*+xHFsv@i)LSEbiC$)cE_%egk6CW1AZFC^BVxI#W|S{s%V~5+X>?bp(H&Ex zyTa(zn9-{hs#jxt312bXKe#1)jMB*~tbLk1X8mPfVPL_Sx<;=wTNu5|a^G#a-(%iK ztX6&9%a^Ft0UV0j8@RQ%&gQ4~-aZA9&XIxMk*(@}$h?nPW&uLXh~)=U3Qu*bah*8{ zbr1B7jBHaGvl=6}4ELVbhc`Ava~; z_U{~^Dk3-apVz;MibQVe-Li!n5u@%lZJ@@{Iyt&^Xlw*z7C-GY;+)+(Jlfwou&ICZ zX8erWIXtv!Y$JU%W@HQtiqW1)fp7K?ZtfrKAEj@`_U=US-F-&)qtRIZeGI|I|0B+T zi~o1jz|dY0SO)UubNVYsHb!hdX8@P5UP?AlvXPQal=M-unUXD(Y^8+W3EM`=c1rl& z9dtKH$q*$wDLI#tVM<0Q8Kq>5lJh9pMagbT_E54H$z(tdas_~lUWn{v0>O7oAaEDk zYmza3z;pt4F}<7m!GVnQ)0>leiG<=NyqDS!-lA_4%$TTukr+!*9li@x+80!53_=*3mSPQ#^2N9UexI`I@5*1ZU67J%II3r|) z4>9U1-Uz?rtQ--&s<sABjoK_8==hh}Yrb0W68Na5s1oYhh}rGR4r~ZnDY9aK68lQ3f|d?^>7`{EV}* zF8Ccq`yEg9Ox*fWfsi1ECnE7B^n+)K@q=Fg=R)}b<^?~D{95z2-n{jiw+-fPt9eV` zH)@y_xb>Jdc+46+R73b?M%c|nlP8;NIDW+kE!@b6-Pwy3ka&v9jlCm%ar~1R3jQ6v zbr0C_LB5aQ0EF4z2lmY_#bYU_FHj(kf0~aIw~T=R_w67S(5NFu?I_#$3rT_J z<~y+_tf_$@{n(l?wCN|mPVnYuCd4hzYWbN_u-^K^YyHt+{n2XuG1K~EmgNUV!2Axz z!16=Y7Tq^U93el5?%NT#XE=;taRM+5IB?fF%j|k2GfR}j7;IA|T_fgKj*Pgg?d`^u z=n{U%TQ+^15lN`ZcS*rSi}Q%Tq#IAPV#WC0237!n1CWoxHyjesC`db_Az6%rjUVb)TlGZuC(aA@i zi@{7fAiE^%T?+W4u8_|1Z}{u*6*ck|zE^zxKh2#9Y*a-Y#%E@?Yi*$vT28AJL#0$P z+EhiwP)Q3#Ym6euq0riLR7jqTOcTnMWc~$j86xEN-9u(A1(fRhF@in9IeS?a42=(@`*F=9rua!1?41MuW zbWm$UHVK{dY}*ZOG#yPe6FsyaT4)wJXg2!iV6@L%bkB>>JTF1*EI{cT?p4lfP&h}S zYmP?Klp48$`D;VG{m{WiB@}cP9Bhk8VM9-dvq8!Y??ST%Tg4R9& zJv|TId^p;83HtX$TH-7eWwnJKDE0bvhI3HdFN8;2iF!U3g?tiZqzc_RC=*7#&qSdg zj0&HR+CBxc~OgcGq1e7y3XxNJXYjKE8Ol* zMAiQZ_bUm<=ybPFeO6+zvbt)fJCJy!c)2^&i8!aC+I?TG_>+&vd_1lg3j3HcXKrOp zC_V95%bjVcPvSAk(Fj#&zxASuZ@NZq6tT(lh9R( zNBRJ9w4fhl4kWLbAx&i7A5nco@SA})R*wFhHOdeE*?>fPaw4-1i6Z3cixruXNyJ`H z?B!#Ik37qQHR)V^7l-C0<%T~`%1w%}p zxz_p=Pdjm?@E}huq>4<{|1K?jiCa_96Nq{viSqFc47? zaS)LZu@KRafQPiukbsAXh=_@ZiUeFFAR}TUq9fuXA|zrY0VNS95h)o7DY@2`z)D0* z#7jg>#7sm@#7#s_#7;y{O4+v?JVOyh5l0b830R6~3gjaoPU0UOQ>Rv{G6OoYT3kdN ziWW_lqfHslghRCUG{z9=ED?JBL9}UQ8C>q<#tbr6A^$HXm*kKKZsMJBCVsW;R)`$WziWP|-zXu_fkP^3*{%?Phb7WxM$mw)iGIG-7r@Nc)=ip`QcI z7s~eL0QtTUYB|alQ(_FP(upnFh$o53aKr|P>N1w@u)uYU8Xkr9^?>uOXY{ZEs+S>- z2S;sY83@J7v)Q6Rb`Uu>xQ?t z)h;2vY8#2$>{4Pg&nG`8bp7e?T~DCgRmP79sMwN>MjXi{z_QL6|gQwy4T0)c6`h6 z95i-`Hvb*ge0tK{o->Ow4{PPi1?|{!oGf?5mDMk{kmYfwq{=fmCTHS((aCp3zqj5I zwZ9*V-wmDaUZ|w4hog;mBk*l(YSTK>&9W}Fj{n+=@b5VhVr~PU4J~)SMO|JIvc=C+?N^a4CI& zAL%1}NPBS~eTFaQOZ+iknXk#52XWGT=lw`O;BNXEZ_`oo=Wk@t<8+74hRKY{-ec6A zEZCFm*Bd`kf4oHJ;v*Wwcrgd>&`^9s!|)98j4!-GSKt#GfkUVeUr;eQR*s;+71N|l z8E+-z{;aOLF{mZWk1f)vrI67=nI9W0I%Nx0rk77Bo<{~ykDl`vG2QH5GT(lUUF-qY zTD;gDmU9nMzLfoNKF8?yz2f~j51x`wgf))b^+KC>dYMRD_XzJq$br9b#E+1r^V*bD z9e7K89hrEBPRKG=`7_8eXJ*gye<(7tC~2f%{76BWR>w$ZmU*mX;D%EF3?!D@^6_RQvq8E5;dP9-OpnU~u`Og}9O!-*Wtt;4tBk$*=FV+<4}bLX&qo=veaKjocIVXQZ68Uty?AyE`P+6Pq2k9CyKp^? z>&l&bFFI`ggZBl{mSfD+bHUW1eXa4%lZ-b!!I*vfp8Z=l|E$A_tV548R*~4d`S1bl z2Zl3v{$3;|_HEuf^>3!*zhk_=77RLaVE=^|{p%ag85v)I``-Ekho%m!jWxLO`~>nZ zXT(d1&ENmzx~Yx!oEnxEs^h`h4HbDEzQzYiMN znZcQi_FJMP1R$TzTN z-eWRIW}Sv^GVM{uem}qxmm!aE6Kj?&=Z`b?CrRU*sb^1Ve$JO97`u^fN-l|zkYJK@ zJCmOPcbM#J_}gqmYGgrpzh;^(&=}bQo?|0?hy{gznAve}3G!F++gU5Z8p*&`Bdr>K z0zMBPg0F(FQLYCO#^9?dKRt_hAN&&dQT{FqYfiIHY5B|<=|Z+r8e+}TjR^g0CI215 zXarlkP$Aa3IGL0_IFq?K%fzrpIj?>Z^X>cDF&(nENDf_qsz_s+a7MG?=j zQOzXEN4hkMym$^i&p*$W@c%^bJIqYdAlheS2I&vX#f#uP;`}GfhkC9282cQ;2xx5q zKZyUtt0DLlJd+w{&QKo22l;Up)1)DnNj5315d2+2yvKE#Zx?)RLB1vY2GoB8ONq9O zunA3tkW&rsVlkxmtItEOeTq+j_j$p0;{7>Z(>(KgAq&WXWTASUNg!PLKct%$wKvzgAv{USv(K_uTmfG zsd6A$lzYM$U6U-zJ;`MiTOs5_?WX$A4S_>Z|Hp-dQNjtee+xq55z+bALc%j)>f=IS zU9{&x=9QK+8+iOW+W7)_&Jq3r*S|;j2Ck#vg9G6Lgrm|nJXZsZw#~eS`_GGh0<20g zc!|{jvo7j4gk2F%D&g%2oinF-&&>ZTLv6+ z>IX_Vri9f0UDP)|HbkEl{YDL|fU{34{g`A&*!eGnqQ9fhiT+MT0b z2f{gFP2iN;rP8U;!F}NMx6p^kqrdTMS&Y4ba2|XM{NKo)vEmN+o$wj>JUqs*B6@T2 z7(At|fM2V`??Cu9#*4Qj+ys9K{N+#tgA#H`KVj_>`ml5e^rHl!BM=~Ng1!oC5-iN# zV|n--d439g|C9)G$V0lgntz6MNFTBq?QvFs9?SF1$lpAZfi56l1yA}S2j2ppgiqr+ zm*&&VPxWiQ$Ho;sQH5|b{AFs0ac8x1eJ{dU4_tH!`bVKRM_CWbTS9dT{brc?pU9i$ ztuyx^UFa-?qwq8q#H0y4vjw^ldRE|*aA`yPZOo)OA8C5DXMi>`9r|Do;A{a{zs%!c!n(y`Qt1r!D}B! zePgJj5qLO;JQnZ<`G|fhPvn*B$Vp8sEd2@N(Ra~jBG4uC5PH!^wxA!p3;(aUUcuU^ zKk__$7Gv0AgfAogMT}tw5nhS>8HCp$Uk5@x#)&t;kA1*E3&t=TXb)oy3$Y6RdluH> zzNm}pJJQvfq0>M8p}U}y!n||;b-7~2O2~0^WaxX=LvrOQUbrogJ)gD zH{oAL_`8`I(FSTqxi4#rW=P>F@m1k1@mKZ4XW{<{+?ThvEH3!3@SgZjULrmdpA=b< zT+xRY!BfAt!0X^^;luE-VT-U1i?DTz{UXkbu%nAh;5VxH5$&dSsrDAedBkhs)9_aK z2zZwl<3Bp@kAsCof7uNHml6zsyc zz^5lb1LCMhc=Y7~{sAzk^igP{FK}{_ICJh&!m|P`_wkG$dBSpXk|*Uzqna%vBAG^$ z36a^TLR?ZbwvBJ6E?=R1Q z@+Ap(XP;1u1wBzEUZPdKNgY-djy@p7Vv&`l+7<5`X zA5nz`%797@maaa5l;h=ph4;3nw#M zKC6Wx)CtNcfy7P@ED#R?2eK2jAOpyk6GWkUAVqU_>-7e}fc}UaSVQHm0VI$_gGnk~r(s}UXAtHe|ok3P2UgC(GdVdC#ff6el0>1@ThGCy!3dbhm;_(T5s76e16r@s z>h<6RT1I!xHWia5BY29Q1$|I*0ss|e0mBMCFbQes4LHC7J)w`(3I6nGxxl23Fo_BX zp`e*M)+{C~j3}oI$L#@OK z9cd3RUQr?>uyd7&S$<-U1|YVTN(0vg)FKBsl8e~x&Y84fJq^FjJ9SYI6=-X&Z0@cq#4W-PGAx&02&2R z3VcXak<;t#=*c>rK%CwPp5j0%2@FO7>ZU8|_Ry!~WDP*vmf0*bnjVrJH3&}B4Y7-i zphYAq@-dJ&MS_w~Rx8v&&oN$%W-$8WFlhn_U*UM=e$;p|dKs0`40mLDWb6v&i2PtQxe`tk9Vb(#wn4p5sr0PuKsQ=Kgwug;LboA1 zIWU4M1Ly>$G5}~8z@gry&gS8pm)BEnFmTZ$5~iX4y)p^3O5 zxTu`udvu0HO-@c%n1-xniIA9*9gvjsi9*4cb1`YM%wiH;JzG!eVN8HH6X{qqf$rMf zCbF|}VY8rv16EKPB_~MM+kp~Pg<%$Qv6#@O!C@1bK0^7UtrdU!IlqocLg~=pz1>_Egs%3JlqT$3I1+xYb&f*9ph{I$w zDNoRI7!&0Ksj^i_XAlbyN#nru!cajEp(+zvMu*L6geEZxohwi+kLV(koYe{z0Eu)| zSm*-Xk}wI|M>dMi<~&28=oAc{khm>mZgv5aLdcN4)eKIMbBi-I&A_z=8%+YySB$X5 z4F;2BBaQ=9A5)SW>caPjm}JLivagg~<(uKmBUR+vy4&*<{o*BN>r|N$|kp*6CDC8f|8~0He(#W0D#zFex|0MAiim2Md7MfX8KM zsol?Lbd%bUF=@1%qeO@asuFR^1(s_78Iy_vkZ*(Qq5}CA2?cP%09%$=!Xy&qd{(+| z!IS40FBUssf`JCkq{qwha%X@cj0Raq>4J%L*XffnX)@WZ=->tuFbRTGr_~~6Z~}zD zq#2lm4l!Fy76Pfsjxz}h#1b%cM$)4dNW~Pv0BuZq6bcjFOeC4~WWNKGIKj5G!kk2{ zcDvFbo4_8?Z8nSX%VZ%?;t`om5D1)T7ZsGDS0?0ZND6Dg;fS)!A&|2QW!v5N3CO9+MbeOj>3lBa#Lp z@WAQ;CWYd`Xlu7PzzR5@IE&VCtD%1c{R#KsS+-M4>cj zoP$ZL1A`He00*9yBN978Y)FKrBOME(>8?9q#iCgS3U%7?h`|g*%R{HAMkp<#+iWpI z1{Oft0_HkVa5KNQTp!4P?K=3c<;sGutar zo7w4fDh+aop_=Hn%FZkT0F<6Ko55!|Vvc;RoCzngQ?wjWC&VaD7CcS|QqA&|gw7Vk zDHBmoz|+xf3;=RqHM^V^40INQifDmPy?U2IhmG(lI)vWgz@vZ*##yp`Fub14cDgd7 zE1N4AIx-pn$$}p?zh2LUka6j>xxfmzfH;d5@d}d@tR-i`0A(^cfE4ODAWODu(0x?r zM<$cWNtb533z=XjnK7Y(60xA0fmVx|l!!-uK-K`nZPEXglUkU`WWnQbqHbkcWF|3_ zQ=cG7(-T0joMb16qJtXGS?{sCpt>-0!a@FLGslF<8319UISX2b7gfv~wh<;#sM|p^ zGYeFQtfoXYSocDUyjH6PGO*cnkc-o1x7Yzno7H83#wCd9Emo5iXJUa4sa7lWi^WWs zg}nuvfXXshj82qew9*U$sSX&gR;%0XHpvil3hWWxHk;5D7BQNkFhPk0e1@a@^0jg% z99ig)HJrs{v)TX=)!8iSVMmWroz;R7mrBDyQ(nEC33<^r9B#K2#v3SA^d>k7gsLS` z=yDL!2_GiC(`85PW|%8b8JHIdqv&kTGpijWRxpd%32qCy8XUnACM|Be2dsb#i!-&y z!Yj;frLk6E%WQU;EjXiMh>IF%qJE^fkOd+#yXndTgN&327^^4|5UeT@pPYY=2C$J7 z@R;JPcpOfM2AYhV1+V(p=1Z;Mj!)mcRu;c*jI&DrUONZTS1G+7wcC8Q- zWN1U3dZgNHMhoT%E*Sq9+rStq&S*8kez(F3rS=+ZZWszS8(uD2R6~k#5#0`l&=ppv z0}cSCbgR`P$fEmleqfIr5U3mq`W!Zg@&r9)R}P2G3F=g5M?J`7!8{dx#bh<$AsqNa z+i>{2b_|1dql|W(VTV|aawhrgby2NCu^K!cr;YN!6oL6dbHTIOPFE-toq}1(h$P(y zez>9r0~bPu?0rtZ{Gv530?{(Av-tGX2&>Jm2bET@#fISt*H8$+1ENq4!db0Rn-wDR ziFB7AwArCHpo44}0PR)>l%?I~Mw5f0K&wkUNc<4}-)zBWN2agHr6#$lQ1n*IIR>@M4>m(h!P!iBbzbf)Zp__m7@44Qfg(HZh0`u9Q0PHJ zzzc)TVu#|B)s(1MkZg@OoDRsq=`t7~FPGclMmt?jzXRyDVd`wOI{;Cfk==k)hXcLT zLFPL8wGmCCvdngi4-c3fupu!BIJ|m;+2IHT0#hnsED@1cD9@3O!C?9p?ZZka1&Pb2~q>a^>b-R1+gAvwF< zs;faFcY{T{c@l zTzG?aPzSZ)G#DIKkJD*)*&#l=7wC-0-1G>&NZc0v-{};lgM5$5a9~V>BRZTYg`C3x zBZZvugwv1glox$QPV$m6@Bk_27%$$S0j8`N_#I|PIU>G(#ey9Zx{XKP;fd!p^(y`fKZE|!RYn~=MbYAxFslY1VE$1 zLCjHjB5PB^9J&k+MaQ|FZsiHeFJsK@0L@OCkjRJ20b?IhCuNA~h22QEAv-znIKv?q z21*w(Nj_kQILs({_6Yi@UeO6mfq=(}d>Gy_f@2b5A*1LV=k%f-dgidhh$P*IZtF{9 z+K;UHNpXH04nW4yAx=n?&lO8)n<1o9oFGUI~{JjJw&K- z_`>J_LWvlSPMepMh{JAkIiN0VF;SqyC(uOPRy2UB0C1biZ~@?OM28DgdU8&q(GMR~ZYQj2r_NdMv7`@#=g9+ATG#YgXt>_N9i2*d0d41S+ z;`h76Xoj0IIbqRoYL~1=-Eu%Eaf!nYB5-)!UJv?^a(G?x;dA@k@|1+m9v3|IC>-c3 zP7~esx$%d#;fO^&RytJ82u@mD7CDoAjsyswLJ6BgVL!To6XuG|Y{kfJJ;!7s37}Aq z%fMXD5V#G=xm=b&#%z{I@4&gD{uo#RS1r!O5|?CfMopse&<3E=8FsqR_t7%2f|zBe zekA&%)0uU5 z=)Mq*2UB`-ZlfEh2jqpuz%yacM%mRQPml@?c%AlhFd2x^8jY|}-BxV|~cM z;D@?J-|^sHGVfC`84F<&VRvCTn}f-e$LsdF1SY*sVA2Cjx&$U&7~o(ExI7Mz%R-oR znSfM}M_>{f(+-QPgvqc6irr%&Oq$&xVAA7>#bRDW7h%$3rS*n$OePY6C*bzZVp8ZKYcOZA%wjSYh=Ubyd2xmk5SWa~nDls{@0`wv z(~UD)1r0!8a5#ZA;askqz+{ZB+`%|{DKJTBaswn_f*UHu9fE#I5m#KUpcqSt+X^HF zF6Dc4RxnBM^D3D1nA~mwR2jowFC;DW2=us|6rw_d&|c>l)WNt3^IbAV%^n+}uFN?x zIfF_I`k}bpP7mF!Y6vn?Jzj4z3iH+B#c<|UEA@JfM#NnipWheoxB@}589F2w@`e0f zPtc$6`8*aknF3xPAZitQ)QnW043AKHc^mGs-`P!SDI;s|<6MJYhI33Nk^l+u2uLX$!{$Q{(+xeK!vc}d74`=_0k7NT_eRmb zGcso)qTdp?{eEG=254wfx#sa;m?B4X_yd#;C7FFbkw`h|p*XQ04ghCRy>3Qe`p(yY*olf zhl*%FOfkPB5-1&&3945N^!8Lb77Td(4h#TxCq`};8Aazf6dDScS-_WqYJwaC0Y{?Q zZkJ>==L}?GIj{n*O`NHP0mVy`BIo(2i)-( zR4%%F2>0r{;|yZcDX1I^v=uD zL^$LRI$?@9TqZ2JoMSSP2qMXFG-P3+Kov9q1PdOd+Z_%`C?1z9RGq8=E8x1tIUE5< zBuk*$Cd2@304f8yK-d!qgaRQ9Ap})lAd1kBBN*%mhhl+1H6@4AHQ-3Z?+r(7wy-Z5 zjgk`aMTHV+Ag%<1=^){cxGn70XjGW9@;y37q5_}9;b@Gqp(I-vs7Iero`_~an;=6? zs-!~Gv4HO!<0V~V!+cj5qhU9GGEwdVRhV9fJ*gx#KKf1s_nHTijQT(%QkTVi+ZVBV zts&A+vLmGx2^M1UXfhm3r0kA(CbGk&32cvkOGFc*J2trV!?-P>0@-BNe3s ze`#^l*Tp?_$m%l^1SfIGndEa#CK`&$D%e$>Pe&<_4Q7tVjCEUYIn(8MtTGypSXm?l zBhmuFMk4M^kISV|M$1TDWdm3NHz3Xgk%-0`s0HbI7x6wi`c$s|JoT4gMAnFc%N=w32LW8PTV4MamZ z4EIrART_#LeJ3v8rA@))BTW1xfUTp3<-0>13ec@q!O7#W1=fDm^hI5Wa7SLDw#>v zCs!nIOGznR%ARtiys1zsma0jOq&B6ds-FInG&6&msICON6Lp=I0;uar)b*lSx@=tBTXbONuLs%Ztm3ON!mahBMEddF;%6XTJ5?*4H+_cK&OVudRM<)oaUNTm0Jm z*E(Oby=H#(rB}DTy7|?$ueQDNr&n%#<%UutwH|uRIj+YxY*w#@bm2 z>ttQ5oAt0>*2nsRxp{0pTfhd{5F2I-*$7+27PC<{hTn&dv!!f;oyV5pdkZVrN_-Dt zHJfB>*jjczTgTS34QwOZ#5SYdSF_Ku&#}+rO9r>Hud#2kyV%|A9`-lvZ`rrl-?4AA z``CBbciH{yIQt&^K6{XzU=OjA?C;s5>=gR}dyHSg4zX=)itWPhj1RMKumkJ@el@#< z?dEr~YuN4ltL#Gl4SpBC$M6Y$GryI8neXCXV|&;U{#kY}dxTxdwz7Tv4nB{6o!`Rt zvdj4=*%tO`b`|?Femmvm`}lr-A-{+p;0M{m{G055@GgEizlvYRkMO(s-|$bcPx3?j zVty%`X4kUMu(`v*o31*^2BQx{nwpIp>hK+m+C*Y#*Whu!2^SJRQo-{{#5A>u z;p3XB;boKQHHl-1V~e&OOAIG=Zr*lWTO~r=m^!wmA#t27pWKD>ipk{hfi>aT=+v4u zT_{IO<=_!yKeh%X>{d!ZD3Th^AX7!{XyUjgGckGI`Lnrys2^5APoeWb#I+;#_&NYLm+gLlgd~yhsCfC#v&ubui zjxTNCXU6}4NEZNKh0Z|}O+(E;;Kn?_K97z1vf@o$eZaM86Yjdq)ko8=f${ZS)v>jO&aC zj9)U|V|>TtF|9K_VJezem>)C0W!Y!>q2+yR$~xb=$$HfKg6**F5sW;$?Z@qJ!PYqB zc);a`%O>Av&!>r&wqF$-ZAe^?-B2<-Uqx-dVk>? z^xffm%RlJ9-T&LbErDOa++Q5LB6u(6=$k_K!_YbqekhWUTpIad|$1bB3HJm&n!TuF2h$ zyEAuR?qu$X+_Sm&t1qfPT77Nxt<`r|AFn>0-=05|zaoDue@p(Z{QWhHYaXk4y5@zN z*K6Lc`3TH))y8T+U3-1)?X~yRK2ZBu?bCHq-KBL`*L|t(YjxkQd#K)3AFI#Tx7E+D zAFn^zFwij8FxjxJ;XuQYhHDybYPhrEzJ`;Hp2q3M8yfFuytna096RB-UT<}^jFKS>kX}UwAtFWw;gJ` zqU~7QEp2zT-QS*Xf3*Fn_UGGQZU1fihaK7uM@OV1*U{4Pc;{H>WaqZd<6XI~mac)W z>8`iB-tT7JmhM1zWp`tDPxnaoitbI_kM}h9^z|(6S=FEHPAP(cHoMEy9XW^czodfd6V-VnGfYJ4$u7D{GRz6<{zDZ=lowR z@GKZxaAd*b3w|@$H&i*)Gqhr8=g=KPPY?Ts_YGe^{L#X`g%6AbMvja;y=ZvRFBTgX zcP-wz_=d$Vj)q1@MlTt?d-S=n{Md%EuZ=x7_M5SfmiU(REqQv}Gk)p#Bjc|xH7)I0 zdeeksA}~=o(KvC}#JlGmJMV$>ipz4#4lH|Nxnuc(|Q!D4MymaLQ zs|>3)t-5b@HP^5CXzk*)pI&=>?Gxuuod3}IAFPY58(w!{ z-H~l)tHw|t&w&|_S&71Gu{M;7L zmccDw+Vb31X>0S=zO9S5uG+d~>%Og*ZoPWzi`z!Ft=P6{+n#NQw@q)mVcQ+s?wyjR zY*V4B%vAGK-_+u%f1diq)NiKVohoiOZC|#1!}i_VFWLUW_Sd(+z5Sydx*e_^dv+Y& zF}>r49q;Toz0 zb=R)@cRjM}$zA`vyLNZS?!ny?yPw(p;_f$hzq9-F1%?YQz2NE#p1a`XJ(YVJ_w?); z*|TELrah1Ed1lXxd*0mh&YshI4SPL%6MJj-w(On1cVh3Bz1Q!(WA7t-pWXYxzRbR! zedGIf@4J5AiG7dnduHE@``+C5+kNlvJH21K-?HDcKeE4af9?L3{qy%v?BBBg`u%t8 ze`No2`#(I8JJ5Gv;=rB*Hyn8Az+(rVJn+v4UO1RLc+tUo4nA=3v4c+^JblP;sN>L< zL%RD@8!l-;PyBs6(br?~<3ftg2umgU;e#HKX z{fzyJ{hIxb{ehj~75Lq-7e6kp;&r^0_wpgWgstF$V6=U{y_=Efh z{73ws_|N#S_^rbvV_Hyu(&K?f)XZ5 z3A_&pyss=_J|)aAOBket!BT>B4-%w%$`Za!3EwVDxQ`O+=MeHOmqBp-G>3{zTq|0EwkY7(hQq*@TK zM!dS=B>N@e1;h&t55t&7PS$~xL8J`gF2%QBe ztwYYY5Pu7$+$VBL$p4Ip6>#rG+o*_ z`$MFDh*XN7M*KA5_c=~-_AI;-*CMV({3fIu5H}!x4dM>O9f+eH+=I9W@oB^(h({1V zfOsY1m53ikycY3V#J3^dh0O^mGB9)_@v_`e@Y3TRYKw?r4uhHB;Hdv&@(Q@`YLbMukIVlZ13y;d_uy~PQ-UA zaqw5#gZNEIKY;iF8Gq76Cp-9FmsqM*ME%K`)i=efA_DL3kYD1j3UDS0E%gtwZ?4vyDye zq%&FNOgh^=x^ybj+S=CE+LB49^x~?ePbxIWB(Dd1XZ_Kyku zO8Uozt;&7d9H0KX(z(K?|E}`RE$9Ds{$9rKF0SMIia)sv zJN@l#RsKxWj~_5uU6F)6Q4=)R7J58**+Sk9BRgyX+Fb(9oAIMXZ#i`2BNopL6*aAEvzjolbh-%y^5m z_{>AU!fssi3QZ~(&6zdW>0&olxD$C_Yp3BVk_+Br^EIfLen&zwz%L<$r>)u~fEM^l z_%?VKJV}OrC)N&ORw29){x*2T^>j^n$(P6HTr1E1wY(_i|Hz#=_J5T9zn^Fray2vW zvFBh|nz15UrP}LOvMsG8la?7N0Sj(@YZ{x{%hY?jrl6^5N~aqe)9I$D<9f$%x=CFA zoIg?=#*_u$QN5dAi}GpSA{Le~_-Nt9yns`&ysVxIO27|Ts2;bb;4HvjkiG(cD8^BI zhdgX;l#3Urk{{)Uu~Pe_O1GOHcbAoi7o-nkX?NB(XHH6RmRav!O7NB?1Sug{mY~pt zwkuSZn1RoQfqX16!vYS%s>52~2;3+-w6f?jxU1uprM;e{*QyF3Ts2PYy6mwR@355f->PaTLH{AxjReyabRNr4!)mI;S@UP}bw@MGUUgb=M@NPBbRKx0db-`fWyz1P13g;IuP;aQ= zIT^sU1vBqSA7G}Mg=Bm1=0U-xmRO`E7X2BpVp4{MTmq{R{K)~V03Gz8Kb_UdMqFEa zy+-AV7hKZ&+uGWBb35*PJwA=chihT<>7?WC`p`G-TGX_=^~jNdfnZh88fY3TG>o-I ze3{1Jt)7T^hArwik&E@!WK)&()s>kXU(vfM^TmOh)YPh;mDT=SHtSDz*9865ovB2j zrqXdua%o-hmBw#`o01K!{K0TT)L%%Xs69rKxYNK z9<=gyzuvFU>a*?Hc7L|OwbQBVcC24Cv~k-PlGDyZ(u(d~k*T30pPIKPva9<`MBfs; z$9Y47?iSiyk8*g!DIkKQ&ynP{P&f<#gg9d*DVT363} ziGNSifVzlQS(h|6`Lk~Sj}QFk{(T|MXJ})M#H!JE^wR%;u83nLO{pnFJttJAZ9J6V zp{}GV_7HlFN%WekGHoKXB<4fvu*d_U>WJMIsSby7*ntqqhA#Q!Coh3t9`4(=cyy{a z6z-c^v}md?yy?LQj{p6G4?OT7XrDj>z5;yfN~5sSmrH|}veG0*;iMCwC^&ii=B{7u zlj_&5{@fY7EaUW+o4=2?MM^CTP(uP`Ez?s1zJx_Bs}Mt004;OM`ha?UQlD(?gCd|o zK%Z^HbS@_G*TVffm++LWxN`NudBKjlOnYp3?t-DV<(*M}rh4U;L&H;>R$jVpB-PX! zuj(yy#akDGp3uyD`~%R_gg2oIr&CmYs*Ik}2zv^BmE)BXA+-WDSp;<{#KMBQDxtYc zqgE!JZWqH>Ii;c#dSe>?L2BOm?x72-C!!Tu({s#se-g0HUy@;$`gDgekJJ&wNG zueL`=?a`IBM^Q@P?*Wcb? zJ-GBMU-`;P{%mz|+kN+K!t>}GSbseMp3U-bj$u>I!x)}%&+^bLc<2WYgJnD{8~8DW zPdk(Pv{w=Ine@E%oyW!}BK_I!0ed9l&)00=SK2-d7ko7f3z1h_R`;hj4W?p?`YW4a zRuA8`;eMMT*125ttvvdc0rE~^T$-geP8^DtaY(Vc1cyK$-m;U#S5MC8dRSOQd6EXQnFJxw@-;O@FFo?ct#{Uzlq1dW!!uo7}c{@q%1ylD126 zHaPP>|6ihSHmEZH3w@JxEUnDa=nCDFgrfWPg~j6Y{5zIPseAJzibN}8;FAM+{ykFJ6Hi zTYihtpQs5JI(zx$4Xv(VcRJf#FYDvq2+V{a^IC8sq-uW$HQqtoIE5`39G#3{;y|+j zaj>@?)(KfIB~woHeJ&Ii>1DL3ee>lvnmr@U`9&?Us(F*mU2A&dg>5%&=Ek;;`gsoQ zT(0i&&re)28L3Y8tSGdu?oDQgw{&m6?ZBv?|I_&^<}Jz;64rbM5*1?<{;z>q>=uDB zuhRK(qm)w}6Us*{b-JXET>P`joJsT_G2WsMD|#!9VouayoHOFiDOetT&nj9Th52E% zbdFsq7w}(83&2JiW62&8W32Kf0q-klSg!Kpdl!BDvfAQ9d~q!g9=U)07p~nTXj{U* z#oypB0b_b_pfsAFqEQ4k294|OfO{4E5`If@H^1duQ&T^kn!?>t)cx*k-C}H}H$#f< z6m@fNMYgJ{oxfYWs+KP#y5L7zslMJ|+4~4SI}1`JDM)H36ntHhWJO!r(H5FiK8&pw6l=i!QQRK|Ix6P&0_qjnw3<#UvVN!N zQ7JB)~>#CMcdZg4_jJNSx?k!s|Y>d@(mpR)~=~<9~qvv_xka^ zeaoBN(X=zumF!y9c*PgIf#RF>$!!-6?H#Lb+jP~$dD9yT9vgpe)s~?JR6O;4x9M36*t_l5JUT6XF@*%L%IeGS$$ceicbHWu^rJ8kGq`e5!RYG%vM# z3EpqlH7?uVH@G1`*fm_$-+&FKeH*I$%aSei=YMu`_0?+|vZ;xtP|xOt!<&0Tz&Y`E zli+W#G=o*l?h<7#Vz*1~(;m^mVf54Zv7U{e z=zi>h{>!%X^7TtMwm6F(U&p4=3$9rbl}?05uO=RW7XBZg#axoJqSZ^3lz3FW@I!NH znPYl|I;c@Gr%HP9#zgCSBW!CrTX15TbBr#M|Iln39t?sQ3w?_`x zicO!iKKT8~tJl`oWk#`gyLZd*!Y#cKi|zic#qY*aGQEU{F(HH59b&_SmUPAqv(j2U`zMzy| zs;;q#N?SQi3PaF8^Wn@v_G>(E72_+-vnzde>dE%9o?Oxv^qN@iwel=FEwlxnwg2T+Pd({P zMTwL0l&-58-#;{TV7#Vg{J_xA{_&b)zI;zM+ne|K^SzmDPu|DZuDW_%L;d+zPp-Q9 z{6-3gxAcX>edx@aDcnqQm$BOpo|>RJX6gM4di@kEQjQUlG!JQbngfzvmj_5yt$P*4 z{+&g=-CDxqnTh$T#gLER;woIm_d1i_9P4JFZ znR_8&T3Hjla*j|-M*K-ewqsQ2Kho}5g@0Hn)r*zV(tKks6T5q^J8+4wAp{2I{{kbo z-Q4iy@rMkCzsyXTmutXFEB2@_{#b-6h7tP6oNj*#Ygp>c$%MwJ%RD+g%pai>n|*rK z7LgiO^#9=YyXQ~;`0DG9^)48j=b*D>(^;n~y+4W?6-pr#8X9N+3pWC1`f9tnSFm^;va2`rLOCj`aM^z2|+Z zW+c6`Jyf6em}7-p`$S7H-M6wZvcGOPJ({oUw#3_OYe(B+Pd1Eq#9C^WCv%oSRmc+$ z`z_AuLVvDis5x9)GoFfOt6liDip`d48b;gjgB0v^BiplGZQC40TUz6h`xuSL^7@XJ zUggke)0))tWz+v4>Fo4gQ(C-xH_Dy>-zJ2<=~2s8ruZd&GpDPRy7sIgsdi=>OvD=; zXF-}s%-htDzr=L+ym{TzziyqJSD7AI)5ia$*fBahJSzU7rP98&qJ3>D4Rdt-oCcSM zRR{`$2yACJ@BHfYFTVVX&wu4pQtKIv+-H7@PKR}OEO3zBY-hXF@=Igj$0=DGp~qH+ z9%Zom3refrgBYr=k6gH>2IR;w^crwi7Ci5NBFJFJ7_Qq?tws@Lr z`1gvBVJjr+z>oT{{z`Ssu5{0_GZjuld(5?D+i5MB(<0XQ_>jHW!iS14^9T3t-N9eK zU?oc*rCkJg*` z`(G8WDv&QGUCb*r1>~a@8Y)|&a`B3Wv)8+xkuKi2@d_FT6IiqO6aKea9INsxR0&52 z=aI7a%Ow;m7*OmFh~pHrwS*ra(ZCpi>crwWlniO{gcy>l@Inr+YG>cx6$<5x96ql` z80TVs&tG!5V)+hx^t{IN)*rpRztA2W&c&NI<_>QCb)v=7Fxrv+Tr{L#T@g>DQ)@?8 zo*!<>SZ!b>e|=xwWTrdT9BQBEjMc7n`B%oGxsj>9o*kn#k;H`G zv1&uZ{A&8aj6`%{&6D_;#P(wO&Ai~FqJc_$EUjQDoGvLGB+R0M_OB|uq@^CeQ+}x{ zn<{=~jR$kJOlBrO6gqm)5E^f28*BDQ+QwJ6b+$F8+C8ooDISV&lkH5nzcQCyw7tJ) z`)GdCs?A$gWTSr!pg#(_1*Suwdv--c8L&z;mqR#)r)bqh2ClrmPgb5xti1o=oaF_w z>$4DiA(Q#OVW2J1g}00w+U9NSkH>o^JNI0|`73p;6+e|4UK<^7hbE%w++qM=YP9C_ zpR$F`ug+gIxR7)QW>Wl{;BgS^aA)(bM5$s1mJ$@ZTJ%0Dgw&b5JJ>3EpA$=NE*j#+ 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 literal 0 HcmV?d00001 diff --git a/build/web/css/fonts/MozTT-Regular.ttf b/build/web/css/fonts/MozTT-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e74e0b2378d0f4a0eb23d5e46750c70d785d35f5 GIT binary patch literal 93124 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�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ʣ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 BEua7Z literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/bg_overlay_pressed_1.png b/build/web/css/imgs/bg_overlay_pressed_1.png new file mode 100644 index 0000000000000000000000000000000000000000..753e953a296c8f1e33e9a92eccb9cc9fac09524d GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^qCjlO$P6U;pA>urQp^E9A+8KPtJwS(WP{{AT^vIy m;_e=31acS}7W`fLeFXzE!x08X(;b%uL1Lb+elF{r5}E*+dKYN` literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/bg_overlay_pressed_2.png b/build/web/css/imgs/bg_overlay_pressed_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8db4bbf1b86938bbf71eadd430cbb0914e74c845 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^#z1Vy$P6TXmop~;Ddqs55LbqtRc!tXvVmMNPZ!6K pinzB23>kqu2ZO)Cs~;K&sWEmiFe+{PuMZSs@O1TaS?83{1OQgb6_5Y` literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/clear.png b/build/web/css/imgs/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..cfcff2ef492d63fba47e14e16bcb881936b37272 GIT binary patch literal 1781 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m@_g%B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij{?{rK_Q# zp{0?5k%5_op`nG5k)xBVqq&8ltA&Z9ktNIwY^2lw4p!z%&SA!V^D`1J6FGdB8kV1k4u5Y^PIA$i(^Q|tvA!-GlBwTj{ki>vU`FWR#&gN+3WwX3tVxFwEY~}1*-+PLWeJ#7Xn*Vhw z`@WcWmis^dp7YsyfAzVYm!j6H{gijz#eHw(q7~AuAzB$O?CR}$4&e(YPhiz@*1n)5 z(qQK>wLVS#$#jd_T6HWuwEqYiHmr{4=;fDnhAB2-) z^rl~*V4~h~Eo6zuydxd!bIg9vdFB}WK|N`XkJ|l*Tc_tM2dQ{9Uyzymr96Y-RVG`X z(CG-BXGdS}<2!JC;hYQano9kB{r%;Y=a)Hu`1I)$_oR@w4Vf0EpFe-T&hYbWYhF%H zijCa)Tq)Pe!vV`LzcjBf-DaK4b-m4L;cK40nv*@fy}XP6aV*K26*JZA>GH7EZ&j|` z{@|eSpy&8wd3SgB_E!s-5+vt^M^p$HrMI8lDqA*7U2NA*k6De|%>`=y#Bb1B#b>{K z+49K~8ifup`o-DY)7&6)d=6XWk6Fz13@2S2Qm$OP%sE43>g~7p`Zt&Nm7kgWT>jIX z*sd+LX~(?1y}zH}T^?(o8LKyawK)6H>U(wq?P?3$Lxi`iJ7zgC?M<1r<@VCK4ci|` z^&YdawyxeEp|ftwuJ0mTtw*k0x#E1s&2RDgnQGa;!{xU0%5f-7HD$DH+9zt&EQ tPHnume$$4(%Fm|l{H?w*`RRHFW(JQ3#pjPDh+PC#M4qmGF6*2UngEG1x*Grh literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/div_line_lg_black.png b/build/web/css/imgs/div_line_lg_black.png new file mode 100644 index 0000000000000000000000000000000000000000..2fd663e5d16d63d66813d039985a1404757c637c GIT binary patch literal 1051 zcmbVLO>5LZ7*4I)rMR}mlZrT|2nueJNp{mDG?v{YwF_=7+lB72v&pm@+GJufb<>Im zi$eVsUd4ldK*5V3;>C*;iir3JRO+Dz4^H-@dZ;}ZlFZCI@AJIhPZs8HqJ z)jfXZCYVkQMi5|%KpL!viIJLom)BtXOf2%Ct3uaIzUNf4wg4;=V^9*5f-6A?R8@e* zlB&WRK$f5^O6*k&uxON2L!JWthiBGeZ^fwFvwd6aWb$oFBSREBosQ5^1QM@`P}lX0 zLzW9nqmXQd6s3hQnH(_KIB{b?qCN>h#)w*EgPJ_^v=>4U)oO>tVbV_&OPQFWNQ8nU z20<2AS399~{Kt(WwUfqXgvB~e$VTk4daO(iz$|yi8_E=!H^!aVXGKBlHgPus9MY<7 z^6WlW)gaVlxoktls_2%i$whs@aTM0koQk9Cno^lkAarD1x1i>f z%B&2PN?ErC*lL(i6uNj|*JpP7*r{W&h81H(N!%c0eb505Z9+-XCK0d}RdB6_TtCbN z*Rulk;=Qd!J_5U{$MjxsmR*zVGj!L#^fIFQ+DcfeL5mwsUCw%A?0ub4zc> zcHifDt$cF$(#})xb!6v&<3Dfj>^^&QQTuV$el;?2dFaF$ZtNic;Qr5#&$Dr@I`j66 H%JTMaR%m;>0F-Nt-pXaW)@ym37vxXm>M9-qyG#FD7p`8wzfM zAk%|h6!hT5s~!|Qcn}0p4}*a>1rhHey7R!7eoPN@2Sbwg-v9l7zyJ5G%EamZzJq-f zMfI1)j4D}okdNP!BL6jUV2LaTuvy2GXa={e5K;vPO+&imS+lSTEob5K2bia*oej5E z$My2KVk3{W5*;@70)nQf{Ae6l_8i3YG@NyPmHF}NHAB0O%3R2n`EsDchC8+x!pX&n zn!Pw@%MLSolFr8pA@Cr!=-6xekrJy+n^z(GM9eXCTLsUlOvkBuxkBqGgmjh_(>4zP zElDiMWF-k4rv)Ae98X>;4KhkrQiKt@`!K{>=*%cpqu8}YPAb#DI8ZpQ)oQUVkwxJw z2V_}JI0PY0G}6(6kF7ZEM?*aZ14ee}2G~VDoiJL{XdbH!@w5|y7nIAJ#D3IG6iFEu zTLA}Hp7XpUuC{iBtMHE-TWUwOg#dC@7@_&lCiR#Z>VZk_wl|b05^t2Vp-YNlH4S9X zd(g)vLuJSf>$r|0=0w03b7saAcqs=!P7n$P5Oqz~g`AL)dmLL~K~57j(Hs%Akt_hF zAj>+)nb`sh z%a-l>iC{P>P$ymkhVB*U6hq|E?F=jK79M0wQ8x69EE)fbyn}WACu)RVObnU`-; fCmscF*Pl^4sU>Rv8Rz`x+sXKr%n9SEc5(SPX9-Qj literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/download.png b/build/web/css/imgs/download.png new file mode 100644 index 0000000000000000000000000000000000000000..897c9f21065be717ba3e842bc47a9e4afed8992e GIT binary patch literal 1302 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m@_g%B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij{?{rK_Q# zp{0?5k%5_op`nG5k)xBVqq&8ltA&Z9ktNIwYHGxhOTUB)=#mKR*YS0s=DfOY(~| z@(UE4gUu8)d=ry1^FRWcpa_Ea*Cn+mvn(~mttdZN0UW|snOI!l=4$R{XlQO?U=H=U zfrYW9r76(mZYFNd7G_FNy(#2`nm*7m`k>^2lw4p!z%&SA!V^D`1J6FGdB8kV1k4-( z3jOaG7#LkVT^vIyZYBNs|KI+w1A|%{BhzBB{wSM2I%$sL2`MQl49{{^6)uZ*gf{$8 z7TC^Ys42ORr{iej4?cnStdF84v>aGDjM};)nLeKX&vBuD9Up(5n+V`+ND>S*E29n@u{lO0djmobmnAQtyi@5%;=|2I(q1 zJG4wLJV1EUoQXo-AESJlo~lH9T}Wb@=Fj{nu1H7q6p%SNRr8{la&+CpL#+}ET=#2i zoTAb_QRn&X4T;VVR)??e+f(uJ(Um2hlZzHawsp7cId`Dr9#iAA7>jO|1vVP&8-PG<=!*!`Jb#9-t+ zV~)i%wyB#_eu;=YKi|QZWzudVo7>nEWs_yNkwM`A!^FFVi@T2VWPwU5Pgg&ebxsLQ E03FV|zW@LL literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/header_bg_black.png b/build/web/css/imgs/header_bg_black.png new file mode 100644 index 0000000000000000000000000000000000000000..56700214cc82049b03a2b618f468459a5f069a28 GIT binary patch literal 1160 zcmbtUKWNlY7=OKkQi?^LL|q=KgMydjC3k5O8tYw>+5@lF>s4=Tn!NTxFL^O}=cUD= z=+wno!A&T-2rdqG(8a+`p@N8rI13JLPQKiq>QD=62ru7z@B96}|Jh!czcev^Y8(JC zQJu5u0E}E@a%pUot>T!}W}lPPZqh}vO1n;sLD?fK7*+#k4cD>bZQOW`rvb>f{6>>D zYnOGG1iX{!@M#b+Gyu~xY2>);n8Fpj=7$FNZTAHSeb3;omug}yGI7hF+l=wz=6u85 zTz55(o4Ej|Q=Jh6m^v^G+F_!n2G`@&nVcO99PFvkb%X0W)vPT*lf)R7c)8$;2th^R zQL&^b=sc7}BncvWl>#d2B}JE};Nanywb)zL>(=bR7TXzIi_%CJgl@OXcV(W$YXZ_V zE#r`+0@ElY8zFVlLYPbr87!Q*u^&;NgfL@tR!D~$9P_jvLJ-wz`@~@~NEAz%kUEio zcu@#~EUun*LhJaK8wYA9jg1Hkb)1k+?6P{SP7c8=cZVCw6qz^rmDp!RaoQGfI{^-9 z)iOAC!+XA`%c_jTS=BDulBlQ%sghK-kZe{oQ&Od(Hsm-6i`0r-k!`k2l@PKeO*4^d zm&&XRl}cGNhuCVEP$zWp(5}zy4zT4zvAP*!hmyEKNPE};3oSxP(jpNw7ZrH6=D2>C z9h}Pw)Q{J~v40bLvoQ%^FT=WjfCoie)-1EADb}AN?_<4x$(q2N5wiC9tzCvktOql3 zzxml_e|&JrW+rCCasST49X43cs#dv?e)zgqJ`Uiq{L}ozqnAg&T+QG6{Lb4M{qg?V z(k{q#PJrAP-1_h3Zy9dA`E>X6)*j%ez~hkzA*kookKoMn+!3(-D))A2?)zl+Z>ZYy J)|1Ne?VpHuP}%?h literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/load.png b/build/web/css/imgs/load.png new file mode 100644 index 0000000000000000000000000000000000000000..193d42fcc1309d03e057fd5210ef49059ebf9214 GIT binary patch literal 413 zcmV;O0b>4%P)Acn+S#wv51wGg@t$nFJP^Oh3FM*tgNgQL=Yi` z7qAgbksGAQ1wsnb*a|TqRw5Cd$HD|cb~d|{7*n_pyv=^hkJ*`dS(C&(lADW~!5KWu zEF|1t1qu_6-28KD!ZLd=eFDJ-qmWgZJ=ak`H->VHdmy8BCuJl zR!^OCUxVG_ocm}tn}@&>kdJvcdTknXD7{vzbr6S71dlpPM@15qz7Y0Ed`NavE& z10H}QU>$e{E(2P_G4KK`1CRapBl(kF?aTlB1IgeFo>{&DV3jbfWhX#l00000NkvXX Hu0mjf35>B3 literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/menu.png b/build/web/css/imgs/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d38c0e7cd30a83fd321f92f340b28b5f54bd18 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3wVp1HAr-gYUfamqV8G*YQDmh? zV^gVs>okX^CPfK_wcKG|ZYSi{B*biJFjR7~^4?!})wAqOjOu}g)d#vuq@w4}5xaM@ zV(Ap;JAT~xVHVG2Smm}9%nq8>kx>`Lktnhw{NVS>m4?qkKgNeF4_HUUq&l=jxHSymAI)uT~)z4*}Q$iB}`=>#G literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/redo.png b/build/web/css/imgs/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..d2864fba5f62fb6faf36910f9e0e97dc1401a153 GIT binary patch literal 1330 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m@_g%B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij{?{rK_Q# zp{0?5k%5_op`nG5k)xBVqq&8ltA&Z9ktNIwY^2lw4p!z%&SA!V^D`1J6FGdB8kV1k4=v zx^C7C42%h$E{-7;x03$+|8IZTf#FzScl+L>JPO?x4JZEk)etc^$NI!Zi4|?^9s8L+ z1}Et(Uv@O^zhJ|Hr#IdtD4FLne2mwK=IZz^DE(&25kq5v&vq3b6r@*t<2STh9u?rM z`+Rr#`#3(sX~CD1YNpvcZ=Z8ZOj%l{{d`eQS%R*Egrub7q-hRmOq}1WnKv3uO6~Wb zZb$Y>136JT2mkZq4Rk~UvLxg+f&6na!mp;0_KAzRVl3}(CH=nJ~^>wkk zRa8{AaIKihJpW-%PEP%gpFj71`uK4sf?lu-Vmoe`bX}SCC2%VAEVwAVq`VSX3uNARI>l$3TFOO11%#Kr%&Y zQUkOShqH)N21`+?$d4_DRRo#YhM-qzFf|ef&iUP0I4)O9rOUmB#=xbVT0}oQrR>*o6G%(Ad@{Y3r}sT8kOli)!K!V417o{ zN0b^=39A7!qbvqaM!oQu(sv=KG$PS^VzqW6QCP}|dYOg@5=caq${g3YwHB2?|H}BF zwKh0a0}&;V7EVUw*m=Y*oCIUJ`?w>sA*P1yk0`N2ktOnBd9n&pqdt5uJobg4P%79= z0ZRaaAd5^QljuwkWRl4ou7JZ}f&wO$LuO5KdhspZh5UnS;u0!#WRmd!&T844r8Fq}A90ReF^3TxwF4ZsVc14~3Q zxl(Q3SZY3?ck%KeM4199gb1tx#xu-Ten5dxzz~8UgGypdL{4H-SS%W*Tu2r2m~{LE zR`GwbM#RJr&E@f*a+%!1YS6rVU;Nn1`}Tpb6m8(YK!%pz=zKX*57>?YVr*V zbQwO&qPX+zkv&it{dIa1KPnPZxy43-Il}!s$*Aqh6L2 zNV}{W>Mo-oPa9v_)0)!O{bhG^XApjJ&dYwp+QmKk{5-${uIkTG3E^srsmLRZ-Ix?oTgjYHFf9k}V1h2EzdV;4OEf zD*W~jg_%R~Bwk;^vF{rcj$>nEQ64N?mnp}k!F?9JW1HTFxOgny5g8e|@mgzRR>r!n z6A#0`v9q(&13EjS4cY11!C`-Y|DxIf`#{&JqmMOAXEf_bak0a<3Omy>B9lU)*c7gx zdu)xmrpmu7q`SM@geE7SPPo7PTyOkY$M%Hn1%HmDSCKXa{M%-a2i5bw}AHJrs7{lz^#`_QRVM&oq9BP}ob`}@C`mHVi4RA)71Nn^z{ zd;7@7M~G}6*H~|`H?_949gI3TOdqQL&9P}lc2fDBEQi3ES^PaIlG#2%c~^MObfv=x zV^G@B!;4N$9dRnJIvf#J;rz(5Rrg%(>+3r|`eNptc+ZN8it66p-qJY3&m|>?tFH&C zz^inje^Kum;HGO%{pIL^+nt>*sr`$(X5I9YMnt4@wD&cCh57q8iOPCPi&pu~yvjE` zOL;xF>UWXDA6<&$qobpH3X2KrPk0LJV!tZ9d;Zr8;t;WT#+5qVVC983=iZ7hTF$}A WPl`8NaVjIszbYSrm|x0`-uw?QF4L+2 literal 0 HcmV?d00001 diff --git a/build/web/css/imgs/undo.png b/build/web/css/imgs/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..6117001feaeb41e271c4afdcb2cf5d2f10010621 GIT binary patch literal 1416 zcmbVMeM}o=7{9{Sbif>p3EQ&hd4wqw+Ix?FU8RF-dmSCNAfP}(B1e1B1A14k2Q5q; zXr?esgsHfY7{?Y8jdKG7M#M-qAwo=GACRGwNHjPWmN6s|lPUNXTJ#UHKfK(%pU?02 z{GR81-fPWs9NQgrFbYAC-L`B?KJ1?eehN8kpTjSmhur~*E|v;}3dzriEJC@2au&6D zm`XOEWn2xl<7@_kM7p`cVyW2vyum4WluXb@8Sr=^8bLBL175~i%}QuFTgmZ8Y-wm1 zLphfbE7I6;yVuORx$H)fEogKUIvcB~1kif%A3>xs%@IFJph;8s1;5fLf z!q5#9soIEbiYm6}p=Lp3QH?S^&4~kmYPCwB)@ZdL6(w*$sBrjd(}3Eb(HaOH8hSA3 zO>|Wl@-5boFE}$|Zb|YQR4TvUuk@!Y1+h{ENRkY45JVcZNb@!D5)(+{eMw;k3+r== zoLAxm9t|=wgvOE!xUgF8wW=Q8MNk_G^f z1Ww>uJpg)wpiDHS(*s(srU)|3u^kpz0Y%}IHC;n%0H6udtRYP4YMRoUDJ^A54`Xe- zPhxl{8}`dVzacFBNUXsuvWz5%g@RBMu7EtZAPGLV;6=>^TJ#w^8n>}u0A zfB9CN;#zW+X>9+qNKX~fdpLF&`9;;;-F;)>_mLT@wWrMcVD5@OZ>*yV#2>ga^kmCu zw|woy!#~mz+sA3q(y@5+M zAl2HpPq9||%`0T0(LLUGHZC{$si=`V&BX_8_q6KTxai+xE6cW;`rf(g`&uee6d#+w z3v;7wiMh>F$>^Hn`1q)U>r?dacgdgDk{6H4<$G4(?ybeUcc)En9Ey2ueeKoN`R_kS zY*I(#9boV0f6nwdi<+ihKEDFS`1YLDdp|fIt}gwo%Whq~H9O>wZx+vFT~v%53G`z9 z=a{6F7tI%%Pu!XKuzsO4vR2XaNmp}|%vIueKVru_^TV|zjsYzGqxseQvnxA$c6CiT z&Yju&UgGTR>|{iIX)I0;pPE1YY0>55*S@O1`hbi*d2@PNBcDgQbUVsAFP9G9*m-s! z!JI=_t2(Fkvfd_H$;8CuzBP&2wlMFe9 WL=7JKEY~0WH`-{2<&vrF^?v~TKKh^l literal 0 HcmV?d00001 diff --git a/build/web/css/main.css b/build/web/css/main.css new file mode 100644 index 0000000..e2da7ab --- /dev/null +++ b/build/web/css/main.css @@ -0,0 +1,631 @@ +@font-face { + font-family: 'MozTT-Regular'; + src: url('fonts/MozTT-Regular.ttf'); +} +@font-face { + font-family: 'MozTT-Light'; + src: url('fonts/MozTT-Light.ttf'); +} +@font-face { + font-family: 'MozTT-Medium'; + src: url('fonts/MozTT-Medium.ttf'); +} +@font-face { + font-family: 'MozTT-Bold'; + src: url('fonts/MozTT-Bold.ttf'); +} +/* Purty Picker Copyright 2013 Jayden Seric (MIT license): https://github.com/jaydenseric/Purty-Picker */ +/* Core: No touchy! */ +.color-picker .spectrum { + position: relative; + /* To position pin, luminosity filter */ + background: linear-gradient(#808080, transparent), linear-gradient(90deg, #ff0000, #ff2b00, #ff5500, #ff8000, #ffaa00, #ffd500, #ffff00, #d4ff00, #aaff00, #80ff00, #55ff00, #2bff00, #00ff00, #00ff2b, #00ff55, #00ff80, #00ffaa, #00ffd5, #00ffff, #00d4ff, #00aaff, #007fff, #0055ff, #002bff, #0000ff, #2a00ff, #5500ff, #7f00ff, #aa00ff, #d400ff, #ff00ff, #ff00d4, #ff00aa, #ff0080, #ff0055, #ff002b, #ff0000); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + /* Prevent pin interaction causing content selection */ + cursor: crosshair; +} +.color-picker .spectrum.active { + cursor: none; +} +.color-picker .spectrum.active .pin { + cursor: none; +} +.color-picker .spectrum > div { + /* Luminosity filter */ + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} +.color-picker .spectrum .pin { + position: absolute; + cursor: move; +} +/* Customization: Default skin */ +.color-picker { + margin: 20px; + padding: 11px; + border: 1px solid #e3e3e3; + border-radius: 4px; + background-color: #f5f5f5; +} +.color-picker .color, +.color-picker .luminosity { + -moz-box-sizing: border-box; + box-sizing: border-box; + display: block; + width: 100%; +} +.color-picker .format { + display: block; + margin: 0 auto 10px auto; +} +.color-picker .color { + -webkit-appearance: none; + border: 0; + border-radius: 2px; + padding: 10px; + text-align: center; + font-size: 11px; + letter-spacing: 1px; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + color: rgba(0, 0, 0, 0.6); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2); + transition: color 0.2s; +} +.color-picker .color.dark { + color: rgba(255, 255, 255, 0.7); +} +.color-picker .spectrum { + height: 150px; + /* Arbitary but required */ + overflow: hidden; + /* Prevent pin overflowing container */ + border-radius: 2px; + margin: 10px 0; +} +.color-picker .spectrum > div { + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2); +} +.color-picker .spectrum .pin { + margin-left: -4px; + margin-top: -4px; + width: 4px; + height: 4px; + border: 2px solid white; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); + border-radius: 100%; +} +.color-picker .luminosity { + margin: 0; +} +/* ---------------------------------- +* Seekbars +* ---------------------------------- */ +div[role="slider"] { + position: relative; + height: 3.5rem; +} +div[role="slider"] > div { + display: block; + padding: 0; + overflow-y: hidden; + position: relative; + height: 100%; +} +div[role="slider"] progress { + width: 100%; + background: #000; + border: none; + height: 0.1rem; + display: block; + border-radius: 0; + margin-top: 1.9rem; +} +div[role="slider"] progress::-moz-progress-bar { + background: #01c5ed; + height: 0.6rem; + margin-top: -0.3rem; + border-radius: 0; +} +div[role="slider"] > label { + font-size: 1.5rem; + line-height: 3.8rem; + font-family: sans-serif; + color: #00aacb; + float: right; + padding: 0 0 0 1rem; + height: 3.5rem; + width: auto; +} +div[role="slider"] label:first-of-type { + float: left; + padding: 0 1rem 0 0; +} +div[role="slider"] > label.icon { + width: 3rem; + height: 3rem; + margin-top: 0.5rem; + font-size: 0; + background: no-repeat right top / 3rem auto; +} +div[role="slider"] > label.icon:first-of-type { + background-position: top left; +} +div[role="slider"] button { + width: 3.2rem; + height: 3.2rem; + background: url(seekbars/images/ui/handler.png) no-repeat center center / 3rem auto; + font: 0/0 a; + position: absolute; + top: 50%; + left: 0; + margin: -1.5rem 0 0 -1.6rem; + border-radius: 3.2rem; + border: solid 0.1rem transparent; + transition: border 0.15s ease; + padding: 0; + z-index: 10; +} +div[role="slider"] button:active { + border: solid 0.5rem #01c5ed; +} +/* ---------------------------------- + * Value selector (Single & Multiple) + * ---------------------------------- */ +/* Main dialog setup */ +form[role="dialog"][data-type="value-selector"] { + background: url(value_selector/images/ui/pattern.png) repeat left top, url(value_selector/images/ui/gradient.png) no-repeat left top / 100% 100%; + overflow: hidden; + position: absolute; + z-index: 100; + top: 0; + left: 0; + right: 0; + bottom: 0; + padding: 0 0 7rem; + color: #fff; + font-family: sans-serif; +} +form[role="dialog"][data-type="value-selector"] > section { + padding: 0 1.5rem 0; + -moz-box-sizing: padding-box; + width: 100%; + height: 100%; + overflow: auto; +} +form[role="dialog"][data-type="value-selector"] h1 { + font-weight: 400; + font-size: 1.9rem; + line-height: 4.8rem; + color: #fff; + border-bottom: 0.1rem solid #616262; + background: rgba(0, 0, 0, 0.2); + margin: 0 -1.5rem; + padding: 0 3rem 1rem; + height: 4.8rem; + -moz-box-sizing: border-box; +} +/* Specific component code */ +form[role="dialog"][data-type="value-selector"] [role="listbox"] { + position: relative; + padding: 0; + margin: 0 -1.5rem; + max-height: calc(95%); + overflow: auto; + border-top: solid 0.1rem #222323; +} +form[role="dialog"][data-type="value-selector"] .scrollable:before { + content: ""; + display: block; + position: absolute; + pointer-events: none; + top: 4.8rem; + left: 0; + right: 0; + bottom: 6.9rem; + background: url(value_selector/images/ui/shadow.png) repeat-x left top, url(value_selector/images/ui/shadow-invert.png) repeat-x left bottom; +} +form[role="dialog"][data-type="value-selector"] [role="listbox"] li { + margin: 0; + padding: 0 1.5rem; + height: auto; + list-style: none; + position: relative; + font-weight: lighter; + font-size: 2.2rem; + line-height: 3.9rem; + color: #fff; + transition: background-color 0.2s ease; +} +form[role="dialog"][data-type="value-selector"] [role="listbox"] li:first-child label { + border-top-color: transparent; +} +form[role="dialog"][data-type="value-selector"] [role="listbox"] li label { + outline: none; + display: block; + color: #fff; + border-top: 0.1rem solid #666; + border-bottom: 0.1rem solid #000; +} +form[role="dialog"][data-type="value-selector"] [role="listbox"] li:last-child label { + border-bottom-color: transparent; +} +form[role="dialog"][data-type="value-selector"] [role="listbox"] li label span { + display: block; + padding: 1rem 1.5rem; + line-height: 4rem; + word-wrap: break-word; +} +/* Pressed status */ +form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active { + background-color: #00ABCC; +} +form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active label { + border-color: transparent; +} +form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active + li label { + border-top-color: #000; +} +form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active label span { + color: #fff !important; + background-image: none; +} +/* Checked status */ +form[role="dialog"][data-type="value-selector"] [role="listbox"] li[aria-selected="true"]:not([data-input]) span { + padding-right: 2.6rem; + margin-right: 1.2rem; + color: #00abcd; + background: transparent url(value_selector/images/icons/checked.png) no-repeat 100% 50%; + background-size: 2rem; +} +/* Menu & buttons setup */ +form[role="dialog"][data-type="value-selector"] menu { + white-space: nowrap; + margin: 0; + padding: 1.5rem; + border-top: solid 0.1rem rgba(255, 255, 255, 0.1); + background: #2d2d2d url(value_selector/images/ui/pattern.png) repeat left top; + display: block; + overflow: hidden; + position: absolute; + left: 0; + right: 0; + bottom: 0; +} +form[role="dialog"][data-type="value-selector"] menu button::-moz-focus-inner { + border: none; + outline: none; +} +form[role="dialog"][data-type="value-selector"] menu button, +.button { + width: calc(49.5%); + height: 3.8rem; + margin: 0 0 1rem; + padding: 0 1.5rem; + -moz-box-sizing: border-box; + display: inline-block; + vertical-align: middle; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + background: #fafafa url(value_selector/images/ui/default.png) repeat-x left bottom / auto 100%; + border: 0.1rem solid #a6a6a6; + border-radius: 0.3rem; + font-weight: 500; + font-size: 1.6rem; + line-height: 3.8rem; + color: #333; + text-align: center; + text-shadow: 0.1rem 0.1rem 0 rgba(255, 255, 255, 0.3); + text-decoration: none; + outline: none; +} +/* Press (default & affirmative) */ +form[role="dialog"][data-type="value-selector"] menu button:active, +form[role="dialog"][data-type="value-selector"] menu button.affirmative:active, +.button:active { + border-color: #008aaa; + background: #008aaa; + color: #333; +} +/* affirmative */ +form[role="dialog"][data-type="value-selector"] menu button.affirmative, +.button.affirmative { + background-image: url(value_selector/images/ui/affirmative.png); + background-color: #00caf2; + border-color: #008eab; +} +form[role="dialog"][data-type="value-selector"] menu button:last-child { + margin-left: 1rem; +} +form[role="dialog"][data-type="value-selector"] menu button, +form[role="dialog"][data-type="value-selector"] menu button:first-child { + margin: 0; +} +form[role="dialog"][data-type="value-selector"] menu button.full, +.button.full { + width: 100%; +} +/* Right to left tweaks */ +html[dir="rtl"] #value-selector li input:checked + span, +html[dir="rtl"] #value-selector li[aria-selected="true"] span { + padding-left: 2.6rem; + margin-left: 1.2rem; +} +html, +body { + margin: 0; + font-size: 10px; + overflow: hidden; + width: 100%; + height: 100%; +} +*::-moz-focus-inner { + border: none; +} +*:focus { + outline: none; +} +.hidden { + display: none !important; + visibility: none !important; +} +div#container { + position: absolute; +} +canvas { + position: absolute; + top: 0; + left: 0; +} +.separator { + display: block; + height: 4.8rem; + width: 0.1rem; +} +.separator.long { + background: url('imgs/div_line_lg_black.png'); +} +.separator.small { + background: url('imgs/div_line_sm_black.png'); +} +.separator.left { + float: left; +} +.separator.right { + float: right; +} +.separator.menu { + position: relative; + left: -3rem; +} +.overlay { + z-index: 9999; + position: absolute; + left: 0; + top: 5.3rem; +} +button { + -moz-appearance: none; + z-index: 1; + position: relative; + border: none; +} +.close { + display: block; + width: 2rem; + height: 2rem; + padding: 0 0 0.2rem 0.2rem; + font-size: 10pt; + border: 1px solid #e3e3e3; + border-radius: 50%; + position: absolute; + text-align: center; + top: -2%; + left: 97%; +} +.picker, +.about, +.tour { + font-family: 'MozTT-Light'; + width: 30rem; + height: 24.6rem; + position: absolute; + left: 50%; + top: 50%; + margin-top: -12.3rem; + margin-left: -15rem; +} +.picker .color-picker, +.about .color-picker, +.tour .color-picker { + margin: 0; +} +.about, +.tour { + background: #262626; + padding: 1rem 2rem; + height: 23rem; + margin-top: -11.5rem; + margin-left: -17rem; + border-radius: 0.2rem; + color: white; + box-shadow: 0 0 0.3rem black; +} +.about a, +.tour a, +.about a:link, +.tour a:link, +.about a:visited, +.tour a:visited, +.about a:active, +.tour a:active { + color: white; +} +.about .close, +.tour .close { + background: #262626; + color: white; + border: 1px solid gray; +} +.about p, +.tour p { + font-size: 11pt; +} +.about span, +.tour span { + font-size: 8pt; +} +.tour .button { + width: 30rem; + position: absolute; + bottom: 1rem; + left: 1.8rem; +} +header { + width: 100%; + height: 5.3rem; + background: url('imgs/header_bg_black.png'); +} +header button { + width: 5rem; + height: 5rem; +} +header .menu { + background: url('imgs/menu.png') -12px center no-repeat; + float: left; +} +header .menu:active { + background: url('imgs/menu.png') -12px center no-repeat, url('imgs/bg_overlay_pressed_1.png') left no-repeat; +} +header .save { + background: url('imgs/download.png') center center no-repeat; + float: right; +} +header .save:active { + background: url('imgs/download.png') center center no-repeat, url('imgs/bg_overlay_pressed_2.png') center center; +} +header .load { + background: url('imgs/load.png') center center no-repeat; + float: right; +} +header .load:active { + background: url('imgs/load.png') center center no-repeat, url('imgs/bg_overlay_pressed_2.png') center center; +} +header #title { + color: white; + font-size: 11pt; + font-family: 'MozTT-Regular'; + float: left; + margin: 1.5rem 0; + position: relative; + left: -2rem; +} +#menu { + width: 15rem; + height: 100%; + display: block; + background: #262626; + position: absolute; + left: -15rem; + top: 5rem; + color: white; + font-family: 'MozTT-Light'; + font-size: 8pt; + transition: left 0.2s ease-out; + border-collapse: collapse; + overflow-y: auto; +} +#menu.pulled { + left: 0; + transition: left 0.2s ease-out; +} +#menu button[id^='set'], +#menu p, +#menu .bottom button { + background: none; + display: block; + width: 75%; + color: white; + text-align: left; + margin: 1rem 2.5rem; + font-family: 'MozTT-Light'; + font-size: 8pt; + padding: 0 0.6rem; + cursor: pointer; +} +#menu p { + width: 65%; +} +#menu span { + float: right; + font-size: 7pt; +} +#menu div[role='slider'] { + width: 60%; + float: right; + margin: 0 2rem 0 0; +} +#menu div[role='slider'] div { + overflow: visible; +} +#menu div[role='slider'] div button { + margin-top: -3.4rem; + left: 0%; +} +#menu hr { + clear: both; + padding: 0.7rem 0; + margin-bottom: 0.7rem; + border: none; + border-bottom: 1px solid rgba(255, 255, 255, 0.3); +} +#menu *[class^='icon'] { + display: block; + margin: 1rem 0.5rem; +} +#menu *[class^='icon']:nth-of-type(2) { + padding-top: 0.5rem; +} +#menu *[class^='icon']:before { + content: ''; + background-size: 2rem; + width: 2rem; + height: 2rem; + display: block; + float: left; + margin: -0.3rem 0.5rem 0 0; +} +#menu .icon-settings:before { + background-image: url('imgs/settings.png'); +} +#menu .icon-clear:before { + background-image: url('imgs/clear.png'); +} +#menu .icon-undo:before { + background-image: url('imgs/undo.png'); +} +#menu .icon-redo:before { + background-image: url('imgs/redo.png'); +} +#menu .options { + display: table-row; + vertical-align: top; + margin-top: 1rem; +} +#menu .bottom { + width: 100%; + position: absolute; + bottom: 5rem; +} +#menu .bottom button[class^='icon'] { + margin-left: 3.5rem; +} +#menu .bottom button { + margin-left: 5rem; +} diff --git a/build/web/css/seekbars/images/ui/handler.png b/build/web/css/seekbars/images/ui/handler.png new file mode 100644 index 0000000000000000000000000000000000000000..246b7b4ca3fd9a283a1a3234240f1afa4dda11b6 GIT binary patch literal 636 zcmXAlYiN>T6vy9XfsGtGMq6Xm)`h@gVGtCuB&V5FW7%lzOKZ^uXA#93n|-P%>ci;5 zJ~SHD2boLIa{AJ+CQNhQZ+V&bdovU_O?#b7vJ>xt=l>j@=bYd9KhLw?9uBF#wH`qb z68AKV2YcK9MI?Z-U5957q^_y=Y#+N;t7WsguXQ zA}JIKpi-$6&f!+AR!1U{bUKZqC@9_zs?}-(fdCZX2^0emu+R$%5IE86^*A3AkH-Ui zz(RllAmBqS77J8@I-O2@qDG?urcS4WE`z~fG#X7Nli6&xTCFyl&2G0l91bXUyWPO_ zdc8iM&+qqxnP4y&3WdVqFc^+Tqp?^lkx0P1R#sNPc_x#|<#PFa9=sKcMGV6#mCC## zS%PmmHp1(vqkq&&B7Ziil<8UG?pCJmPFFWCHS$eVc~!?} z4Lm{oZ>};s&e3NEr)ez4^_#RChc3~~8qzh3Y^1wcfxaBrY57{!u6GWdI745`Y;kcK zwk5R6qZr4e9wIbNQz!Z4zf-*G$A)*b#m9dpYOdG);rE5fT?eVWCH{e*Eql>8CX$GA npSIIBSrZe@!UbkX@PJMyJkJcjo!Wf608d4@>>iekdHLZ#yf}$M literal 0 HcmV?d00001 diff --git a/build/web/css/seekbars/images/ui/handler@1.5x.png b/build/web/css/seekbars/images/ui/handler@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..26a5092a221112769e6928b814481460c7dcb0bf GIT binary patch literal 960 zcmeAS@N?(olHy`uVBq!ia0vp^S|H593?x6vT4pjZF!l%dgt*S1KYzi31&bCfTC!xx zmoHzwef##~$B&;sfBygff9=|}uV24jwrts_PoGw;TJ`STyAK~etXQ!Er~s(t;K75} zuU`kUpFMj9)CknRY11Ykd&iC)4<0-KngcWwqVmX*BUi3mIez^3#fuk#A`k}9gqJU0 z0!@afId$sPxpU`$-1Y0%L)buBpw&Pwkc61Fd-v|Uckcp?-MV$_0!`tXZ>X&mN$s4j(=YbnwxmM~@vlcH+c| zlP6CC-E-#5nX_ll0$q6i{P_zPE?l~F>GI{vKu=x0diC11Yrt^0apT6#n>TOYzJ2G; z9iSuc-Ma@21fV0IJbCi;>C@-WpTBzb3K*Dg-n@YXChp%o*_WrET{8J(iQ4PpZBuIxFJb%cXjAe@S;W3TIz;Pc z$nEF-bG?rIagN%#B~8&T&)mRjO1L;=2`vIfX!abclNhM zf;}(dR;$c?tf738j;kNF@Y~RiO z3}sPMr26MExVwE6IJYTMr!3BBz3y)Q^Ah~KbuYC__U%b74Ycip+V z`pImbqP@F*q+D6oQvALnrebN>JAu&N_nYN~-uz1ueYVF`U+&V*^YWI@3N}WrbO~;( z%u=uLnV?cAb7!XE^g3q0LeITN@7>Seer5U-#+6JT*W2^F;hsFdCy-gX^fV~4Jzf1= J);T3K0RWciJp=#% literal 0 HcmV?d00001 diff --git a/build/web/css/seekbars/images/ui/handler@2x.png b/build/web/css/seekbars/images/ui/handler@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9a69e7707d87fa161042b0afea3742867b0f4247 GIT binary patch literal 938 zcmV;b16BNqP)40vc6J8W9o_Y<9hq2MQ6g)LkcbUMA&7-cSjvjTG6I7Lia-ez!!U}3s82!= zn4zp?9|}Y%5TdYHD#b`zT+|j1p-F0+k=Qn*7*_rvx&aXas`~xS~!2Q5)VkQ5t z1`)d(Y*a;FeUh~XOX^fdu-&t|beO9H3>h}0&q4h{t9lkW$k?Pur*h6ZV9(Uqrdop& zX*+C`ByU_+-lRN8NJwbaYzDC3HfP#}j>G@GkcoSgT4s0aY5@WE>- z`>f@v5w}#6kk$%Etv3w7?6ARX#$lb4MqCwEN?MXZPZ$7b4HvwUaZG#81qHQ;TPVe- zmHL4>VS-~Ve$qK%M4(nNZBh(*%n-~AbBDoRoi|-l5>vZNn3>UQwIZqqM>bhobh(a) zc1&Dig{|HT5xkhPldM3@bd_YyW3$fx*+`7oP5NtfU|+jT%_9^ibJ_ z!754`M5QF4TZLd3u?T|%ET?R+cpphI(J9bb;SNtuiq90KoD%muG&<$N<4xkx{-6W` zQl<_DDWVRR1f-ZcnBzZLm@5-}bo|$%c(lQyBID)HVo*m>qo|Y=$Qvzx7X3OVB}FB# zNdL-W`GtMDb5f#mQ$Qc(gFo0lp-oh-3piRKSp3E4^#wUIMWG-|-jNC~4c~v_&G{CI z!g<3Sd~#idg#^33aVdVUqX z?mVL&HvrFs3G($4$1G^GT%%g#9XCSGYJI@Ea6!IW=CJk_4_Y9stUp|1&>DXNJQp@d zZ@XSyWISM&YI6Sa5BzMMVE|qTA7p>rcAGV^*!`N7bJO3>$&uW)X22cR*Bbm1mU%~y6p%0rOt=M*_nlq(OkqQ div { display: block; + overflow: hidden; padding: 0; - overflow-y: hidden; position: relative; height: 100%; } @@ -72,7 +72,6 @@ div[role="slider"] button { border: solid 0.1rem transparent; transition: border 0.15s ease; padding: 0; - z-index: 10; } div[role="slider"] button:active { diff --git a/build/web/css/switches/images/check/danger.png b/build/web/css/switches/images/check/danger.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1f267ac121eabb1dbd732d77d90b64d6efc6aa GIT binary patch literal 583 zcmeAS@N?(olHy`uVBq!ia0vp^VnFP~!3-o*O0T^DQqKc?LR@z;F#P}jA4t*)F*5FA zX5P)lwws-OHz(&FZtlJO{QCq2_lt@il#w|oCwE9u@rb(mQC;2RCMGA$&CmJzp7Zm& z6dipnGxKI~@y(Kw2fe+IrcHZ1bLO)pOJ1yA{c7XJH@kPg-Mjb0@#7y(ocM6^+OyM@_#^sqJ`B`TzMx1=lPi;|~n4>VL+Tg$5szQq`EL>9}&sR+xm;bGDa=o4W^3PTb&C&V1+~#dL z4__JE%gm@bzE_H8-@}WBBKvl=T$#CNzSF~kKNs1~*{RE}=;>a6FtPZ^^$z2_pD(Ar zUs!x2y^fRjnCJJ89D(0frp><&G&uX_^R>0i)h5m^i=JPY3-mjKr>mdKI;Vst09V2b AH2?qr literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/check/danger@1.5x.png b/build/web/css/switches/images/check/danger@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d4b61d2ab56263a182ccf1d57ff8a80e9a333fc GIT binary patch literal 946 zcmeAS@N?(olHy`uVBq!ia0vp^ia?yq!3-poR?W0xU|?(x@Ck9<$-wac|9>Dk3=t#a zE@tN4Y;1eDxc2by?B(Oz%g?`0P;kGf=s_8ogR-)Rl#~vus2tVRJz;Ks!ouRTgTrYj zr*po(=luLGMMqyvPrsI#c`YmJdQQ&G;^Ld7rFUCe?ss)P=|L-3#@RMFYeh7>ekCGt2UuXyOQj@i#=&&krk@hvceloA6}lMJK-w3XKkd~hav^#XWF3*Qe8H0{O28F zV+j58%GiNNSR|JJ$B(1@A_j>+52)BP9_e(|VemHaTvy;)p%liGr1Oyd(-9@{51%(P zujm$QJYki6&6HuQW#AkCz?-HFCdcP~o@KQ+nr+wRwd}&DXSpY2FWIRxu{E?McwIrO zcFafnCdrvf3-^@rY&&*ady>w?YpkAoXD<6t;&jV_OI$S|j?M$O#3gIjIcXJSG|bP{aCy+QkAH#CflE9tNf!$Jq-E3hMyP7>9(*Kfef|B@ vrlnq<{%ppq-Ws`*t!p=$>2^js-PGU1kn!!0b9(_W))_oq{an^LB{Ts5ISrDh literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/check/danger@2x.png b/build/web/css/switches/images/check/danger@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7befd670ae36959484bda1bf276f20967caf1392 GIT binary patch literal 1119 zcmeAS@N?(olHy`uVBq!ia0vp^IzZgQ!3-qth+1x7U|`%C;1lAylY!y?|NlU87$Qc- zT}({7n3;F8vF&DO-_60Xhl^_uH}_tC{(XXi`$R?u&U}&Ev=)v zx+l!dPg+@>vb8+<#C?R8;h67cb+{z9}dE9j&oWF*ZMUZhN`hxj*Z^J+iDmckbx9%C)78TwS_Z z?oW3fNp=19b5-oRlaCi!WmrW%dicmKBm35@9;L2pP%1^x%)ZAI*$!|*ZLoA%zttK~RJm9{$K2xLc6LaJA0&m|-kMHoV zFl^g*@%eq$uWdQ+3a=Nz|DC^Ih;we=Z7=lub--jz-D6kf z`!dP|s(P#~um6){V}ERUvsI_!$EnBL*RON#%{72{qUXuGXDa2}m;KKx-^|?+&am!q WGE*&+{%>GnWAJqKb6Mw<&;$U@>jQ!S literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/check/default.png b/build/web/css/switches/images/check/default.png new file mode 100644 index 0000000000000000000000000000000000000000..9f188bb1e1095e5f16623d906bcb4380a1b23deb GIT binary patch literal 583 zcmeAS@N?(olHy`uVBq!ia0vp^VnFP~!3-o*O0T^DQqKc?LR=Y6eft0ZKaivmVm$SU z`Sd5Y)1TN+f8spziTliF{_gUt`XSoYs6fb^Jzw|}-@)whbJj-fBt*+>))&2|33ct_xbO?uYdpj`S<@H(0l*?FLG(m1$tS&B*-tA zfq{ux%fQgc!m6cp!`5xP_wL(&;P9izPu{%y@bT-9pP^Ek*MLetc)B=-RNQ)d`DV}| z2a%SC&MqM?OkPSFOH`S-9yR?wrMBZi<^Sg&6yW~rsK*j zTfGjQto>1GuJwNL9<@0KmpOa+Nv$g=EO!kp+^@7JTwyKKKP&NC_t~eoTQ+;VKAgwB z{M3h{ypVIw8x(ysw=*qGNT0hbXIo3|-_QB!vpyXiJp$@O;f%RgH&G)L$2 za+|m1JbYzrFEgX&_+BZVeGe}hitO9fa%JY8`A!cD{#;}`XQwW^qNjWP!NlSt*E@{! ze!iUgeqr&A^g2%7W1inXas+-`nKu7A(BSNw&)3#6SDQGyEP8%nF3|4`p00i_>zopr E0M6(_UH||9 literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/check/default@1.5x.png b/build/web/css/switches/images/check/default@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c25caeb8a4ee6fbd0711b60a529b7416eaa42ef GIT binary patch literal 946 zcmeAS@N?(olHy`uVBq!ia0vp^ia?yq!3-poR?W0xU|?(x@Ck8cIQ8lO|NlU8_#wtq zpO{a7Vmtkb>&$1KGoSg+e&#>>S@7Iv(Q}_=E_{}~@LB2N7nO@&bT5A~zxvhU+E<6` zU!87z^}Y4Y@7A~IyWi9Af6sjIJ?p{uoCiOOAN?qO^rPkJ&#vb`d!PTD_VU-vSHIT1 z`@R0%?~U(&Z+ZWF@5eufKmR%L<uXyOQj@i#=&&krk@hvceloA6}lMJK-w3XKkd~hav^#XWF3*Qe8H0 z{O28FV+j58%GiNNSR|JJ$B(1@A_j>+52)BP9_e(|VemHaTvy;)p%liGr1Oyd(-9@{ z51%(Pujm$QJYki6&6HuQW#AkCz?-HFCdcP~o@KQ+nr+wRwd}&DXSpY2FWIRxu{E?M zcwIrOcFafnCdrvf3-^@rY&&*ady>w?YpkAoXD<6t;&jV_OI$S|j?M$O#3gIjIcXJSG|bP{aCy+QkAH#CflE9tNf!$Jq-E3hMyP7>9(*Kf zef|B@rlnq<{%ppq-Ws`*t!p=$>2^js-PGU1kn!!0b9(_W))_oq{an^LB{Ts5B^ULY literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/check/default@2x.png b/build/web/css/switches/images/check/default@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3e196926b728f033d37a97214fa0540730e38f70 GIT binary patch literal 1119 zcmds#`%e=G0LQOwthBW&2t|h#Hzr{tfEpvvA`>Xj30;FIF$P1jEkg%P6rme11Rt#( zC=T2RLn6)+suOU?fR(8m)H1*mWY`B~(iSN4DDCxi?OpHIWdFsI@8johKHsZ+UK*Vm zLV%axVP!nG`hnH}(8>g@+g?~%lh)l+w$PWh@M&A*v@K@F&Us~zSK5T!EYTj9-gU{+=fdQ^qfU6eZ>IL}XqD#2sYFKvNeB*9jaks6y z@2r%F&vZwBdM7-v@Lh3sh+kZ-xT*OjMCM-qBZ$dl z%Efeo{94l}Ca;Y9bbky8_Lm2PXqQ9Jt^h$f_|=2+1gbdlblT$J$Y&`I*S);1zYKRc z1)Sr0oj$eT3r&k+AHV3pqWDe;|MO!O9+0PNkVFKK`_kr514!iSa1qOYfFks5mGQQqqzfx!lM)wvQS;k!Q_H&(KW`*FRsmpX@7Hy4Y$X;<-fUp2FGmRAF++cM7q`A>?|&oe7EDXK%lkX<;__aa aC>Q7&{)AXX+=F<}24tl0lDm@fYySmUqi_lU literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/radio/danger.png b/build/web/css/switches/images/radio/danger.png new file mode 100644 index 0000000000000000000000000000000000000000..d2858876f3c8e5282ba41c9c8ab2e8499a26fb8d GIT binary patch literal 578 zcmV-I0=@l-P)!N00006BNklRNBPYJIRg`*8#IF^&;#bdonvkv)cz)pfENxvf&{Ss zcvJx}3JSa@2g2XQHQ<5+C!mh~VrT)ky!QZ9IK{I-a3IWHQAi0NQGt$eTO0!KZ1w39NFvXNlpn8Ui_0Lammkd1W~>2k!BPtmn1iz61D9*Dc>I+VpFi>L?UC|y^w zIAzi5fw+yX3t4Ql=<`4vr)yUhODq;V5YN%ID2rYe51>+4%zGc`irMS$o{h0G#A!Ni zfZrY%Ve<_{G+ya;@Ign?xmWnXp1o8+LkaQ@$F8{Pwrz&(HO;|6U@1 z&JAAZW5h;m#71nyMr_3YBsN*vWa-kgv;|Ti1M(!po~4_mEieOw8~n`D$ixB5Evb2U+k)<^rg(^$y|9R>xt+CuRvb5p_FC&?F7gU|%8REbJ Q{{R3007*qoM6N<$f_pFu00000 literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/radio/danger@1.5x.png b/build/web/css/switches/images/radio/danger@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..3b6a7d2e8a7c31faadc1f7d9c5af35259fdce5aa GIT binary patch literal 893 zcmV-@1A_dCP)84qfKVgI2PDs76t`YkQ5XJk>n-_T6A~OqFfYVR8Wv~Ta+ac71+i_K~xJ1 zvKy9*E^aC)f<)AA5M3lnEyG9~o3H;_1TTlt&Y5#D;#>S&yl3=%W>n66!(%)uFzm|0 z3Y^4!yhk6B=)nuz!~rZq2!;)|9yATL_y*;`8|=Y2HzBfc3kvP% z4&|7Q7^29>0&K+<^g~%RAlGh)`RIlcKA;j27&hc#Z;D@G3*vtZQH(C}O-Y=<7#L|N zKvRk!(V;@*pj|w80Oc@T3gbAGa2=skAx>Fdf%PyvR0Ab!wuYF2LGgeiFgzAQqu9}f zTp8kwxY&--Fnkb4uh_NkPl&PT6BpLP@KKfJzb?ZZt`WmdWcnN;7vIIsQgc`<2B%>J zpkC}eWDf3&!RmlQREV98=HQ(e%nB&PT(R?|VfkyF5KxE$v9re<{1k&|Kq2zP&adX+ zix^A}C`6Ii`O&c4vKI#wVyW2q%p5d`!Onm}>=rxg&A}cqXbLFAJ+X6#IVcf>1mZpi zn1)|sXYrp49b#DHbBH>z>xsOJZW9-Npvb2H^Nh zLbs>#@u?h)k@9bRKB1c=x=Es&B)UoBXOkq3WmtzY#DZ*+l%g3) zC?SDsnC)kiB!t6a`A`P1$*(3!mBUZ@S9#qeDMkXyfo{aSY?7RZO2dAynj~RSZ*c0d zS51;hP-*J(s!3AlB1FGeO_B%((+u&-%O=UgG((*8vPrTL%Aq6{c-bV$zypUN&ic_L z$;We>0h*ERSCb@$i%1T0-#Cs)5KWSqIDo6ThfCOnDY{9bnpFY{dz`(-c>EaktaqI2u_!JpOndAN4 z-4m?VIc3PMRgRH;s-@4n(8a%BpijWdV%5bAQ>jJE6{VaypDn#8bk_T~NN<=or)tXt zua-+0OM({vH(RrQ=jpd^-=4AiBWL&1czf~Zjb-U+>EEQQ>eW(2PH(#N zVCO-D6AhjlSi%kpZpi6-yD8Oxb(2Dp(+{Z`%)bv5on)NB9w~ch`ayM}4~K*@zB^lR z#W9~&f99|z?hxmO(1jcI6J$!7v=>|q+~4E|Hx{=y5%eW9C$yGul|16mfaPz3c>++p1@Y-?U}_xP6ad zN?k8UjQxwz*Cf7zMYe2CL^`>kgp=PtLO zW_xy6$JW`;*)MV44IVa!9rN8ImK%KMo6e+AGjC3rf6L*n*Gn%>F!27by8c;EqPFNi zriBe0`JZ~jwe~o)+B2!_Ic6Ka(!jCxKC{Z7nRjme|9&v!hq1#U=_k{4MBPN1-JBg- z{!a*hv*eLkZGj=f-CL3K?a``Y@kpoI!@17BiU|PK3>>a-qv&<%J^PF{Wm+AiNJ@RUT ziGpIpp|akeYol*wPm9_7WR~i6ot*J|R+A8Y7yD5~gete$FRg2#jn?{_{EO{h$m z)>3=c^myabiMG3Qb$33q<6l&hoPE-i|Ei}2_nzmoOu2!a=dV=eFafn1u6q1*+2v{3 zaS5GL?l!qQpKW2k$$Y^JWNK?v%gdPo)$4wCa$ig~aQNE$WL9yB{E7&Dq}I&WZ40W1_n=8KbLh*2~7a9=JuNa literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/radio/default.png b/build/web/css/switches/images/radio/default.png new file mode 100644 index 0000000000000000000000000000000000000000..086d61afe61353b0e085ce9d4f0b1041738dd554 GIT binary patch literal 575 zcmV-F0>J%=P)!N000068Nkl6nF(f!95rTew8@FZzjkom;^nb1vG;gSO9m9xqVPuNZbgXIrsqL!207+ z1;7}1l-DqS(x=IDyr`|qBO@iN3II&Og9 z9vEfw6*OwR(jDNFj)e29@Pj>jtAK_Q z^UM$=%f(S1^iAAStKi8ow+X6MS5qZ#jTaykoPzh5Y|4D4Jw8_$?XK4#0K^o*qnmtQ5OIu(T2sijQOD9Vwfl!dt$X8${*K9m3e N002ovPDHLkV1mb%2)+OS literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/radio/default@1.5x.png b/build/web/css/switches/images/radio/default@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..27ead4176426190b27d11290e732163b6a2b0227 GIT binary patch literal 889 zcmV-<1BU#GP)n zV>8a910OMl2!`@IbS|%0)S7z<1~|c!x^NOC&@x&S3(20=}Xgo>)UHL(eo{ zuo0!mLl6OEpb-0U6XVcLT99Tn#2O4i7e1i^erOh?<5-j*VK+j53z3UK@ktTXV-B=9 zWTGufkic{yQqd@|m2j!ALB8E7{1pjGS` zM4Ak7NgVcJHZ%u>Fe-K(p9(P-W8z>3GzV3g{_1?jaJv`|Aj#nnY4{;_78}C`F}MiL z1-JJHHu& z5iwZoQiyD^^Rs5UWf!>=VuRTE!WguO!C{v|92Gm8jX|Xtw7C?bUF}--ejWfg*JDVhBaRi8<(9R}_4^LtYaoLF`Nd{h8 z4A6-bruN@Ck8cIQ8lO|NlU86wxRI z-Um)p1_pX*NswPK0|PS)8#^ZtzmTw~gtUyDqLPZbmbR{ev5A?rjlGkryN8#zUtmah zRBS?WT1IAePF{XtQAuesncf6oHK9!lBKKHuG_G2%l2J+4;(&r z^3<8L=PzBocH`#lJNNECeDd`9i&t;oefa$4+s{9VmzS|KFfi@*ba4!+xb^n>-|$NT z5(hq7&tX~_=+M$8xKJS=#r4u573W@^&Em{FK9e~XaU|LNuRnj6Z{zjqwZ*>{7JvJj zID5|dn=_^F%x&kW7chL%l^gon=)j6N?W3-L4#>sdf8V_9pyM5}_*(vDtGcJ%_$;Jz z`}?eo`#HVj&8LekJsGhCT78a*n6WTpJ z<-k1Q?rn^d7Yp0mW__c$(Q5~P#QE>i`x)ObZaj7<_kdQi4Er0yjfW2@Kiw4i#_HhX z@FQ~E`T|>AS=AZ3HxzVq^)&H+%$U4k!-mEu9gixjx)0~PnSPN)AiW@7IY(!T;8TIi z@6Su|FMs*j)#v?DQMr8`E0hJq_s+?b6RTTPG}-b_opMY~n~sCt!*AU3=2N1d9e|R5#`!s0sehEO&RD{wDqG zUH1j~{f6bg4+NY~wJ%@av~k1VJ9CX6?x=j1mhgM0b>bn#-#c$x8~ttW+4=iIgZG-9 z)@!ymTRyv^`?6q?ak>4>3xU(D%hjV6l*w2gzoV=7{>tmEYiAgjTNi(~pS8Q5(L+I} Uv`qgRs5oQrboFyt=akR{0LV~w{{R30 literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/switch/background.png b/build/web/css/switches/images/switch/background.png new file mode 100644 index 0000000000000000000000000000000000000000..99bfe33455459c0e89d7d6dfeb79b3319c5eb72d GIT binary patch literal 755 zcmVH3xF`j+YXqTuYQ;_k5J@3H0Yw&(D+@cXy$ z`?~1yyXf)4>+{6({KfP9$nEsW^!&>7{LSw5*Z2M5_4(rY{^R!fw+JH zxH?IC8&p&xwo?y#7b@cBCFy%L_#LsmI@p_o^O(5%a5ytmgAX&<_x+u{`0*(HpFtch zf~tzx4{Aeaq%GZgS&*tQ4s+^o4*OwE_H=7wbO|3mmyo0g4j-t)_pu+*gvYPn=MjpX z4Yv@o{N!lv?Iw;YuqW1*KXbG?INX7nR9k;rjsR{arPBI)o~&J_ajkemOXl8CR!nbc zjI$fMdkYcU6?vA;Q(e()KQHu{e!fQabJLS(rK6Zc%giJ)J437T46V+xGt~U_FV~-V l;kjOBr~m(dw^;wh^$k`0*9o2P5|#h}002ovPDHLkV1hwWsg?i$ literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/switch/background@1.5x.png b/build/web/css/switches/images/switch/background@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c2bd553f552392126ac151ae8cc636d7c431ff GIT binary patch literal 1047 zcmV+y1nB#TP)r001cn0{{R3-O)i70004=P)t-s0IJLY ztj++e&j7E{0I<^lu+#vt)Bv&70JGNswAcW(*#NfN0Jqx!x7+}@-2l1W0J+`(yWjx4 z;sC(r0Kn$}!sr0T?EuH_0Lk$H%JKoK%mK>s0?P6OtIY$;@&v2R1+2{ptB(~Ej)ATCS^efZ!ExFY$ z)buaZ^f9{DGu8Dp)%7;j^*6lNJl6F>z}ZB>+EK;aQQP)X+xAu5_E+5YSlsqm$lhAr z_hH`mV&3;-%iv?*_h`-GY0cqy(&T;Q_h1TbV=J|%#=Ze_q zlH2K%+v%0u>XzKH3)6>Yv~2q~YzU?fb0m`>pQ#vE}c%=<&Mf@w@2pz3KA6 z^8CT_{KE45#q9IO^Zdv2{K@U~%Jlrp^!(EB_Sf?F*z)(;^7q~J_~7~d;radM_xk7e z`s?`n?D_lc`TOqq{O z_8~oixm|MZxe586CJ%Q`PLj!;JEWtYHPw?(%A%|(T1LJovRIo{M1E-G96E-l=T_6{ z)w${64$h&Gd=SdR!ky~Nmi7Qw;EU)LtbMnHIOF`TqK*t!s&J7wcgEwMPAtR{6?mdS!kU{ z0rRas)blN5Zl#um%P44og<3K<@(<&76k%Zz1ue1=A!8T*;8n~HTSV?2xai@XTFBI~ zZ}=Ry!(tXD;9`P>Vls2^6MiJfR?5N$xOmS(DH(~q#8#3r%0=dV8*s6)S1hO?BM*S< z&PAoj+yz%%VnG#YJ9EwnuK^FqQ7tm}!d0(WP(!*7e_1+2w&WIG$H-A9GWWw(zgSR5 zx{iFsGdoIr$5NcO)tEh%YSNbcixDEC_%ePbXoo7ZZ>5s--NWybL~U;~#p9?jtDthy zxBneJw$T${oP;3$D<^*8>0RIv3BmkrF9E=t7zx^Y&{9t zo%=^grS>ZW2K|bO;JY}M5{FxQ!RkX7N` zm?U(jpm^cmBth1*>wM)rXNiV(Z|XEOHM^2dugp#j`8ah7eij$}gfjTK?SHN`u!!J^ R&zArI002ovPDHLkV1k^nQYioc literal 0 HcmV?d00001 diff --git a/build/web/css/switches/images/switch/background_off.png b/build/web/css/switches/images/switch/background_off.png new file mode 100644 index 0000000000000000000000000000000000000000..963a0d141c410e2dbae50af391886139e0e884fe GIT binary patch literal 475 zcmV<10VMv3P)UK%shy~*pQ)>#s;r=^t)Z)}p{%W*(t1 z>Fez2?CkFF@bdHX^Y!)g_4V}j_W1bu`TF|$`uh6%`}_R-|NsBGMNI_&009F@L_t(| z+QpX15`r)gL?bAQ3NC?rY^(Aq4joA+Dt4s$%8& z5PU%S#Z&(1xgc|Zzypf+&a$C%kL&<|&nUf>8g0p*0q`-Uk2?5~>@fg$>hMHrHK~0E zfYTr*dU#U%HUOs+%k=P!&KrP>TDcyc(*qs6c?aJdnHGG`59T??Z|KHwL;u??rzZQ< z*e&Q*oC902%Y7bNtch-%U9Oa4hyQozkay_N(4koSzkv4dr001cn0{{R3-O)i700024P)t-so2ICo zr>UK&s-UW@psTH+tF5E1u%xfCrLVE3u(GDHv!}7MsIjxCva_hNw5hYTsvv%9>y!Na=3!@$SL$>E`L`=+I?5?CR|8>h10D^78fe_V)Mp`T6?# z`}_O*`}_R-{QUg?|Nk!!*WmyF0d+}4K~#9!-Pp-)!axuN(86XXK){$C6T(gw!cPDH zkA)Lb4d9Wbo{Qgotdf`ZOkt2f2?>=32_%UUAhEzrl)i_=yuOntc|74qv-R$9*sW)g zk0AWkor0>cbEvTg73(}t}DVVkj|DZNMP?vw^Ux~E^ z$)$C_(gNEk?BcZcwr6?i{0`!!cgG*XFws5->7NciV92KH%xrHGmSR|1ngoaaN_&2i zyVJaF=~o=LPNQ4vwBO%ar;&2&q~FD*yP`GrC+84IG>o6HlbYUf+CvPgwz5nL!e(ahbunGJ|(-6&U`v zFzitXRQ8y%bTa?H2A9ny)7rH>Ow?nzjXbvK$SHYjnZY4?W3jEz2KTS=*8&eEKkKt~ bWc|y)zslMrb5nvF&AU5FCo7(`}A!+6pe+Z*%brIEX`sy14oY?C#*~U{MeeKY)uM9Jo0ZiVhVN zoVuJ?D8~OB-X<3$&G1|9AkPEIn>&%=Qz{v*Qx+J&qzdoDq$;q7d8z{2s9;hQSjRg| ziUKXXz*x#$9T>;eU5O85X0yTB%< zO85=3x&;o=gapbl*2WDDh|RTk!@%$cN+tXaIYi^zyI#%k72Gcvw>G41foE%hZ*(9Y z=dN)JDbQ6;?+9y-MUG$;eTa|t@EFE&>H4&~$1S`-hFjkSf-Wi;%N??i0-6?Ht%WPJ zA=to|f86|BFL&@`1$^KP6D53t91^1Dzne}Ux9|c!SDx@W3P`L1O^je%;})*~&{=Te mPa*LO0K0g^CrTVZ{_78`uX|}7e1+5i0000J%afUER`1Rs&36OPWV-2+0i%M=zQ+tmvc{q_&=Mq&4cHl$B}1;a{O-e#{|p0 zSQ?UTrSx&t)4E>^RKG1U`gKD}{Q`O%(r%l0y-nu)Xrd^q$hU)bcH z=KtN-vrpBm*zim{Q*^$cjkD0z;X>)78&qol`;+0KM-bLjV8( literal 0 HcmV?d00001 diff --git a/build/web/css/value_selector/images/ui/affirmative.png b/build/web/css/value_selector/images/ui/affirmative.png new file mode 100644 index 0000000000000000000000000000000000000000..c1823ebb8fabcace029f5a2936c00516a4d9a874 GIT binary patch literal 101 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 literal 0 HcmV?d00001 diff --git a/build/web/css/value_selector/images/ui/gradient@1.5x.png b/build/web/css/value_selector/images/ui/gradient@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..0e420cda6e6a49a7d4b46be375d1768d3e53724f GIT binary patch literal 7864 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 literal 0 HcmV?d00001 diff --git a/build/web/css/value_selector/images/ui/pattern.png b/build/web/css/value_selector/images/ui/pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..af03f569090f55e6462d14d6db888556eb5ff061 GIT binary patch literal 6851 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 literal 0 HcmV?d00001 diff --git a/build/web/css/value_selector/images/ui/shadow-invert.png b/build/web/css/value_selector/images/ui/shadow-invert.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b905fa44ccf63f86474aa40ea211e35e233515 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrA!2%@j-~MwDNJ)9RIEHY@CMP^dO-f)@HdABc gQ)4TWVA^EKz?#nx+t+3G0jP?>)78&qol`;+0J1I;*8l(j literal 0 HcmV?d00001 diff --git a/build/web/css/value_selector/images/ui/shadow-invert@1.5x.png b/build/web/css/value_selector/images/ui/shadow-invert@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2dc1cb75512cc84eb0fb6780cc33f492358b2b GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-f!VDyB*qBcODct~{5LX~gJUF;O!w#sLza+>n zn3;`JKwM5$+sM-1%`YU{Z^g2EKq+2N7sn6|+2q6o!6Uqk0*@HA)5BcAmUz1QxvXFVdQ&MBb@0516#(*OVf literal 0 HcmV?d00001 diff --git a/build/web/css/value_selector/images/ui/shadow@1.5x.png b/build/web/css/value_selector/images/ui/shadow@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..44b35b49af2af585d0e17d5a1108281dab895f65 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-f!VDyB*qBcODct~{5LX~gJUF;O!w#sLza+>n zI6B17&EC>TTUAb6fRl}R&)2-?Kq+2N7sn6|+2q6o!6Uqk0*@HA)5BcAmUz1QxvX?z5X0h kYMbwH`6Iu}pVmzbo6Lnn!ai9<0aY@1y85}Sb4q9e03`tzbpQYW literal 0 HcmV?d00001 diff --git a/build/web/index.html b/build/web/index.html new file mode 100644 index 0000000..3fa2c1e --- /dev/null +++ b/build/web/index.html @@ -0,0 +1,262 @@ + + + + + Sketchy + + + + + + + + +

    + + +

    Sketchy

    + + + +
    + +
    + + +
    + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + diff --git a/build/web/js/Untitled Document b/build/web/js/Untitled Document new file mode 100644 index 0000000..e69de29 diff --git a/build/web/js/events.js b/build/web/js/events.js new file mode 100644 index 0000000..6c0a2e6 --- /dev/null +++ b/build/web/js/events.js @@ -0,0 +1 @@ +"use strict";$(window).resize(sizeAndPos),$(document).ready(function(){$(".menu").on("click tap",function(){$("#menu").toggleClass("pulled")}),$(".save").on("click tap",function(){$("#save").removeClass("hidden")}),$(".load").on("click tap",function(){$("#load").removeClass("hidden"),$("#load li").remove();var a=JSON.parse(localStorage.getItem("projects"));if(!a||a.length<1)return void $("#load ol").append($("

    No sketch found.

    "));for(var c=0,d=a.length;d>c;c++)$("#load ol").append($("
  • "));b.find("li").off("click").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Transparent"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2) li").removeClass("hidden")})}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Transparent"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2) li").removeClass("hidden")}),$c.last().on("mousedown touchstart",function(a){a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]);var b=relative(a.pageX,a.pageY);startPoint(b.x,b.y),window.active=!0}).on("mousemove touchmove",function(a){if(a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]),window.active&&"line"!=settings.type){var b=relative(a.pageX,a.pageY);drawPoint(b.x,b.y)}}).on("mouseup touchend",function(a){if(a.preventDefault(),window.active=!1,"eraser"!=settings.type){if(window.points.history.last div").addClass("hidden"),$("#menu div.options > .general, #menu div.options > ."+c).removeClass("hidden")),$(this).parents("form").addClass("hidden")}),a.submit(function(a){a.preventDefault(),$(this).addClass("hidden")});var b=$("form.confirm");b.each(function(){$(this).find("li").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$(this).find("button").last().on("click tap",function(a){a.preventDefault();var b=$(this).parents("form").attr("id");$(this).parents("form").find("h1").each(function(a){if(a>0){var c=$(this).html().toLowerCase(),d=$(this).parent().find("ol:nth-of-type("+a+") li[aria-selected] span").html();"file name"!==c&&"file"!==c&&(d=d.toLowerCase()),window[b][c]=d}}),$(this).parents("form").addClass("hidden"),window[b]()}),$(this).find("button").first().on("click tap",function(a){a.preventDefault(),$(this).parents("form").addClass("hidden")})});var d=$('button[id^="set"]');d.each(function(){var a=/set(.*)/.exec($(this).attr("id"))[1];return"color"==a||"bg"==a?$(this).on("click tap",function(){$(".picker").removeClass("hidden"),$(".picker").attr("data-caller",a)}):void $(this).on("click tap",function(b){b.preventDefault(),$('form[id="'+a+'"]').removeClass("hidden")})});var e;$('div[role="slider"] button').on("mousedown touchstart",function(){$(this).attr("data-moving","true"),e||(e=$('div[role="slider"] button').offset().left)}).on("mousemove touchmove",function(a){if($(this).attr("data-moving")){a.changedTouches&&(a=a.changedTouches[0]);var b=parseInt(a.pageX-e-15),c=$("."+$(this).parents('div[role="slider"]').attr("class")),d=c.find("progress"),f=+d.attr("max"),g=+d.attr("min");if(f>=b&&b>=g){c.find("button").css("left",b+"%"),d.attr("value",b);var h=c.attr("class");settings[h]=b,$("#"+h+" span").html(b)}}}).on("mouseup mouseleave touchend",function(){$(this).removeAttr("data-moving")}),$(".fill, .stroke").on("click tap",function(){var a=$("."+$(this).attr("class")).find("span");"Yes"==a.html()?(a.html("No"),settings[$(this).attr("class")]=!1):(a.html("Yes"),settings[$(this).attr("class")]=!0)}),$(".close, .tour button").on("click tap",function(){$(this).parent().addClass("hidden")}),$("#clear").on("click tap",function(){c.clear();var a=window.points.history;window.points=[],window.points.history=a,window.points.history.last=a&&a>=c-f&&d+f>=b&&b>=d-f?!0:!1}function draw(a,b,c,d,e,f){if(e=e||{},f)var g=window.o;else var g=window.c;g.beginPath(),g.globalCompositeOperation="eraser"==settings.type?"destination-out":e.composite||settings.composite,g.lineCap=e.lineCap||settings.lineCap,g.lineJoin=e.lineJoin||settings.lineJoin,g.strokeStyle=e.color||settings.color,g.fillStyle=e.color||settings.color,g.lineWidth=(e.lineWidth||settings.lineWidth)/10,g.moveTo(a,b),g.lineTo(c,d),(!e.noStroke||settings.noStroke)&&g.stroke(),(e.fill||settings.fill)&&g.fill()}function mark(a,b){var c=window.o;c.beginPath(),c.fillStyle="red",c.arc(a,b,3,0,2*Math.PI),c.fill()}function erase(a,b,c,d,e){var e=e||{},f=window.c;f.beginPath(),f.lineWidth=(e.lineWidth||settings.lineWidth)/10,f.globalCompositeOperation="source-out",f.moveTo(a,b),f.lineTo(c,d),window.points=window.points.filter(function(e){return threshold(e.x,e.y,a,b,f.lineWidth)||threshold(e.x,e.y,c,d,f.lineWidth)?!1:!0})}function line(a,b,c){var c=c||{},d=window.o;d.beginPath(),d.lineCap=c.lineCap||settings.lineCap,d.lineJoin=c.lineJoin||settings.lineJoin,d.strokeStyle=c.color||settings.color,d.fillStyle=c.color||settings.color,d.lineWidth=(c.lineWidth||settings.lineWidth)/10;var e=settings.drawingLine.length-1;d.moveTo(settings.drawingLine[e].x,settings.drawingLine[e].y),d.lineTo(a,b),settings.drawingLine.push({x:a,y:b}),d.stroke(),(c.fill||settings.fill)&&d.fill()}function finishLine(a){var a=a||{},b=window.c;o.clear(),b.beginPath(),b.strokeStyle=a.color||settings.color,b.fillStyle=a.color||settings.color,b.lineWidth=(a.lineWidth||settings.lineWidth)/10,b.lineJoin=a.lineJoin||settings.lineJoin,b.lineCap=a.lineJoin||settings.lineJoin,b.moveTo(settings.drawingLine[0].x,settings.drawingLine[0].y);for(var c=1,d=settings.drawingLine.length;d>c;c++)b.lineTo(settings.drawingLine[c].x,settings.drawingLine[c].y);settings.stroke&&b.stroke(),settings.fill&&b.fill(),settings.drawingLine=[],window.points.history.push({data:b.getImageData(0,0,width(),height()),points:window.points.slice(0)}),window.points.history.last=window.points.history.length-1}function undo(){var a=window.points.history;if(a.last>1){var b=a[a.last-1];c.putImageData(b.data,0,0),window.points=b.points.slice(0),window.points.history=a,window.points.history.last=a.last-1}else c.clear(),window.points=[],window.points.history=a,window.points.history.last=0}function redo(){var a=window.points.history;if(a.last1&&(d&&threshold(d.x,d.y,a,b,f[0])||threshold(c.x,c.y,a,b,f[1]))?(window.active=!1,points[points.length-1].type="",points[points.length-1].start=void 0,void finishLine()):void points.push(e)}function drawPoint(a,b){var c=points[points.length-1];switch(c.type){case"eraser":erase(c.x,c.y,a,b);case"pencil":draw(c.x,c.y,a,b);var d={x:a,y:b,start:c.start,type:c.type};points.push(d);break;case"sketch":draw(c.x,c.y,a,b);var d={x:a,y:b,start:c.start,type:c.type};points.push(d);for(var e=0,f=points.length-1;f>e;e++)if(threshold(points[e].x,points[e].y,d.x,d.y,settings.connectTelorance)){var a=points[e].x-d.x,b=points[e].y-d.y,g=settings.lineWidth/20>.2?settings.lineWidth/20:.2;draw(points[e].x-.2*a,points[e].y-.2*b,d.x+.2*a,d.y+.2*b,{strokeStyle:"rgba(0,0,0,0.4)",lineWidth:g})}break;case"fur":draw(c.x,c.y,a,b);var d={x:a,y:b,start:c.start,type:c.type};points.push(d);for(var e=0,f=points.length-1;f>e;e++)if(threshold(points[e].x,points[e].y,d.x,d.y,settings.connectTelorance)){var a=points[e].x-d.x,b=points[e].y-d.y,h=settings.furLength/100||.2,g=settings.lineWidth/20>.2?settings.lineWidth/20:.2;draw(points[e].x+a*h,points[e].y+b*h,d.x-a*h,d.y-b*h,{strokeStyle:"rgba(0,0,0,0.4)",lineWidth:g})}break;case"shape":o.clear(),o.beginPath(),o.fillStyle=settings.color,o.strokeStyle=settings.color,o.lineWidth=settings.lineWidth/20;var i=settings.shapeStart;switch(settings.shape){case"circle":var j=Math.abs(a-i.x);o.arc(i.x,i.y,j,0,2*Math.PI),settings.comShape={type:"circle",x:i.x,y:i.y,radius:j};break;case"rectangle":var g=a-i.x,k=b-i.y;o.rect(i.x,i.y,g,k),settings.comShape={type:"rectangle",x:i.x,y:i.y,w:g,h:k};break;case"square":var g=a-i.x;o.rect(i.x,i.y,g,g),settings.comShape={type:"rectangle",x:i.x,y:i.y,w:g,h:g};break;case"triangle":var l=(a-i.x)/2,m=(b-i.y)/2;o.moveTo(i.x+l,i.y),o.lineTo(a,b),o.lineTo(i.x,b),o.lineTo(i.x+l,i.y),settings.comShape={type:"triangle",start:{x:i.x,y:i.y},x:a,y:b,dix:l,diy:m}}settings.fill&&o.fill(),settings.stroke&&o.stroke()}} \ No newline at end of file diff --git a/build/web/js/libs/color-picker-touch.js b/build/web/js/libs/color-picker-touch.js new file mode 100644 index 0000000..a4b5f79 --- /dev/null +++ b/build/web/js/libs/color-picker-touch.js @@ -0,0 +1 @@ +$(function(){"use strict";function a(a,b,c){a/=360,b/=100,c/=100;var d,e,f;if(0==b)d=e=f=c;else{var g=function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;d=g(i,h,a+1/3),e=g(i,h,a),f=g(i,h,a-1/3)}return{red:Math.round(255*d),green:Math.round(255*e),blue:Math.round(255*f)}}function b(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{hue:Math.round(360*d),saturation:Math.round(100*e),luminosity:Math.round(100*h)}}function c(a,b,c){return"#"+((1<<24)+(a<<16)+(b<<8)+c).toString(16).slice(1)}function d(a){var b=parseInt(a.replace("#",""),16),c=b>>16&255,d=b>>8&255,e=255&b;return{red:c,green:d,blue:e}}function e(a){var c=d(a);return b(c.red,c.green,c.blue)}function f(b,d,e){var f=a(b,d,e);return c(f.red,f.green,f.blue)}$.each($(".color-picker"),function(){function c(){var a=h.find(".pin").position(),b=l.width(),c=l.height();return{hue:Math.round(a.left/b*360),saturation:Math.round(a.top/c*100),luminosity:k.val()}}function d(){var b=c();switch(i.val()){case"HSL":j.val("hsl("+b.hue+", "+b.saturation+"%, "+b.luminosity+"%)");break;case"RGB":var d=a(b.hue,b.saturation,b.luminosity);j.val("rgb("+d.red+", "+d.green+", "+d.blue+")");break;case"Hex":j.val(f(b.hue,b.saturation,b.luminosity))}h.trigger("change")}function g(a){var b,c;50>=a?(b="0, 0, 0",c=1-a/100*2):(b="255, 255, 255",c=a/100*2-1),l.children().css("background-color","rgba("+b+", "+c+")")}var h=$(this),i=h.find(".format"),j=h.find(".color"),k=h.find("input[type=range]"),l=h.find(".spectrum"),m=h.find(".pin");i.on("change",function(){d()}),j.on("change",function(){var a;switch(i.val()){case"HSL":var c=$(this).val().match(/\d+/g);a={hue:c[0],saturation:c[1],luminosity:c[2]};break;case"RGB":var c=$(this).val().match(/\d+/g);a=b(c[0],c[1],c[2]);break;case"Hex":a=e($(this).val())}k.val(a.luminosity),g(a.luminosity),m.css({left:a.hue/360*100+"%",top:a.saturation+"%"}),h.trigger("change")}),k.on("change",function(){g($(this).val()),d()});var n=function(a){var b=l.offset(),c=l.width(),e=l.height(),f=a.changedTouches[0].clientX-b.left,g=a.changedTouches[0].clientY-b.top;0>f?f=0:f>=c&&(f=c),0>g?g=0:g>=e&&(g=e),m.css({left:f/c*100+"%",top:g/e*100+"%"}),d()};l.on("touchstart",function(a){a.preventDefault(),n(a),l.addClass("active"),$(document).on("touchmove",n)}),$(document).on("touchend",function(){l.removeClass("active"),$(document).off("touchmove",n)}),l.on("touchmove touchstart",n),h.on("change",function(){j.css("background-color",j.val()).toggleClass("dark",k.val()<=50)}),j.trigger("change")})}); \ No newline at end of file diff --git a/build/web/js/libs/color-picker.js b/build/web/js/libs/color-picker.js new file mode 100644 index 0000000..0563b45 --- /dev/null +++ b/build/web/js/libs/color-picker.js @@ -0,0 +1 @@ +$(function(){"use strict";function a(a,b,c){a/=360,b/=100,c/=100;var d,e,f;if(0==b)d=e=f=c;else{var g=function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;d=g(i,h,a+1/3),e=g(i,h,a),f=g(i,h,a-1/3)}return{red:Math.round(255*d),green:Math.round(255*e),blue:Math.round(255*f)}}function b(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{hue:Math.round(360*d),saturation:Math.round(100*e),luminosity:Math.round(100*h)}}function c(a,b,c){return"#"+((1<<24)+(a<<16)+(b<<8)+c).toString(16).slice(1)}function d(a){var b=parseInt(a.replace("#",""),16),c=b>>16&255,d=b>>8&255,e=255&b;return{red:c,green:d,blue:e}}function e(a){var c=d(a);return b(c.red,c.green,c.blue)}function f(b,d,e){var f=a(b,d,e);return c(f.red,f.green,f.blue)}$.each($(".color-picker"),function(){function c(){var a=h.find(".pin").position(),b=l.width(),c=l.height();return{hue:Math.round(a.left/b*360),saturation:Math.round(a.top/c*100),luminosity:k.val()}}function d(){var b=c();switch(i.val()){case"HSL":j.val("hsl("+b.hue+", "+b.saturation+"%, "+b.luminosity+"%)");break;case"RGB":var d=a(b.hue,b.saturation,b.luminosity);j.val("rgb("+d.red+", "+d.green+", "+d.blue+")");break;case"Hex":j.val(f(b.hue,b.saturation,b.luminosity))}h.trigger("change")}function g(a){var b,c;50>=a?(b="0, 0, 0",c=1-a/100*2):(b="255, 255, 255",c=a/100*2-1),l.children().css("background-color","rgba("+b+", "+c+")")}var h=$(this),i=h.find(".format"),j=h.find(".color"),k=h.find("input[type=range]"),l=h.find(".spectrum"),m=h.find(".pin");i.on("change",function(){d()}),j.on("change",function(){var a;switch(i.val()){case"HSL":var c=$(this).val().match(/\d+/g);a={hue:c[0],saturation:c[1],luminosity:c[2]};break;case"RGB":var c=$(this).val().match(/\d+/g);a=b(c[0],c[1],c[2]);break;case"Hex":a=e($(this).val())}k.val(a.luminosity),g(a.luminosity),m.css({left:a.hue/360*100+"%",top:a.saturation+"%"}),h.trigger("change")}),k.on("change",function(){g($(this).val()),d()});var n=function(a){var b=l.offset(),c=l.width(),e=l.height(),f=a.clientX-b.left,g=a.clientY-b.top;0>f?f=0:f>=c&&(f=c),0>g?g=0:g>=e&&(g=e),m.css({left:f/c*100+"%",top:g/e*100+"%"}),d()};l.on("mousedown",function(a){a.preventDefault(),n(a),l.addClass("active"),$(document).on("mousemove",n)}),$(document).on("mouseup",function(){l.removeClass("active"),$(document).off("mousemove",n)}),l.on("touchmove touchstart",n),h.on("change",function(){j.css("background-color",j.val()).toggleClass("dark",k.val()<=50)}),j.trigger("change")})}); \ No newline at end of file diff --git a/build/web/js/libs/mobilebrowsers.js b/build/web/js/libs/mobilebrowsers.js new file mode 100644 index 0000000..a7caf2a --- /dev/null +++ b/build/web/js/libs/mobilebrowsers.js @@ -0,0 +1 @@ +!function(a){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))&&(window.mobile=!0)}(navigator.userAgent||navigator.vendor||window.opera,"http://detectmobilebrowser.com/mobile"); \ No newline at end of file diff --git a/build/web/js/libs/stack.js b/build/web/js/libs/stack.js new file mode 100644 index 0000000..f9c8d3b --- /dev/null +++ b/build/web/js/libs/stack.js @@ -0,0 +1 @@ +!function(a){a.fn.end=function(){return this.prevObject||a()},a.fn.andSelf=function(){return this.add(this.prevObject||a())},"filter,add,not,eq,first,last,find,closest,parents,parent,children,siblings".split(",").forEach(function(b){var c=a.fn[b];a.fn[b]=function(){var a=c.apply(this,arguments);return a.prevObject=this,a}})}(Zepto); \ No newline at end of file diff --git a/build/web/js/libs/touch.js b/build/web/js/libs/touch.js new file mode 100644 index 0000000..4981bd7 --- /dev/null +++ b/build/web/js/libs/touch.js @@ -0,0 +1 @@ +!function(a){function b(a,b,c,d){return Math.abs(a-b)>=Math.abs(c-d)?a-b>0?"Left":"Right":c-d>0?"Up":"Down"}function c(){k=null,m.last&&(m.el.trigger("longTap"),window.touchEl=m.el,m={})}function d(){k&&clearTimeout(k),k=null}function e(){h&&clearTimeout(h),i&&clearTimeout(i),j&&clearTimeout(j),k&&clearTimeout(k),h=i=j=k=null,m={}}function f(a){return("touch"==a.pointerType||a.pointerType==a.MSPOINTER_TYPE_TOUCH)&&a.isPrimary}function g(a,b){return a.type=="pointer"+b||a.type.toLowerCase()=="mspointer"+b}var h,i,j,k,l,m={},n=750;a(document).ready(function(){var o,p,q,r,s=0,t=0;"MSGesture"in window&&(l=new MSGesture,l.target=document.body),a(document).bind("MSGestureEnd",function(a){var b=a.velocityX>1?"Right":a.velocityX<-1?"Left":a.velocityY>1?"Down":a.velocityY<-1?"Up":null;b&&(m.el.trigger("swipe"),m.el.trigger("swipe"+b))}).on("touchstart MSPointerDown pointerdown",function(b){(!(r=g(b,"down"))||f(b))&&(q=r?b:b.touches[0],b.touches&&1===b.touches.length&&m.x2&&(m.x2=void 0,m.y2=void 0),o=Date.now(),p=o-(m.last||o),m.el=a("tagName"in q.target?q.target:q.target.parentNode),h&&clearTimeout(h),m.x1=q.pageX,m.y1=q.pageY,p>0&&250>=p&&(m.isDoubleTap=!0),m.last=o,k=setTimeout(c,n),l&&r&&l.addPointer(b.pointerId))}).on("touchmove MSPointerMove pointermove",function(b){(!(r=g(b,"move"))||f(b))&&(q=r?b:b.touches[0],a.moveCancel&&d(),m.x2=q.pageX,m.y2=q.pageY,s+=Math.abs(m.x1-m.x2),t+=Math.abs(m.y1-m.y2))}).on("touchend MSPointerUp pointerup",function(c){(!(r=g(c,"up"))||f(c))&&(d(),m.x2&&Math.abs(m.x1-m.x2)>30||m.y2&&Math.abs(m.y1-m.y2)>30?j=setTimeout(function(){m.el.trigger("swipe"),m.el.trigger("swipe"+b(m.x1,m.x2,m.y1,m.y2)),m={}},0):"last"in m&&(30>s&&30>t?i=setTimeout(function(){var b=a.Event("tap");b.cancelTouch=e,m.el.trigger(b),m.isDoubleTap?(m.el&&m.el.trigger("doubleTap"),m={}):h=setTimeout(function(){h=null,m.el&&m.el.trigger("singleTap"),m={}},250)},0):m={}),s=t=0)}).on("touchcancel MSPointerCancel pointercancel",e),a(window).on("scroll",e)}),["swipe","swipeLeft","swipeRight","swipeUp","swipeDown","doubleTap","tap","singleTap","longTap"].forEach(function(b){a.fn[b]=function(a){return this.on(b,a)}})}(Zepto); \ No newline at end of file diff --git a/build/web/js/libs/yepnope.min.js b/build/web/js/libs/yepnope.min.js new file mode 100644 index 0000000..bd57852 --- /dev/null +++ b/build/web/js/libs/yepnope.min.js @@ -0,0 +1 @@ +!function(a,b,c){function d(a){return"[object Function]"==q.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=r.shift();s=1,a?a.t?o(function(){("c"==a.t?m.injectCss:m.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):s=0}function i(a,c,d,e,f,i,j){function k(b){if(!n&&g(l.readyState)&&(t.r=n=1,!s&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&o(function(){v.removeChild(l)},50);for(var d in A[c])A[c].hasOwnProperty(d)&&A[c][d].onload()}}var j=j||m.errorTimeout,l=b.createElement(a),n=0,q=0,t={t:d,s:c,e:f,a:i,x:j};1===A[c]&&(q=1,A[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,q)},r.splice(e,0,t),"img"!=a&&(q||2===A[c]?(v.insertBefore(l,u?null:p),o(k,j)):A[c].push(l))}function j(a,b,c,d,f){return s=0,b=b||"j",e(a)?i("c"==b?x:w,a,b,this.i++,c,d,f):(r.splice(this.i++,0,a),1==r.length&&h()),this}function k(){var a=m;return a.loader={load:j,i:0},a}var l,m,n=b.documentElement,o=a.setTimeout,p=b.getElementsByTagName("script")[0],q={}.toString,r=[],s=0,t="MozAppearance"in n.style,u=t&&!!b.createRange().compareNode,v=u?n:p.parentNode,n=a.opera&&"[object Opera]"==q.call(a.opera),n=!!b.attachEvent&&!n,w=t?"object":n?"script":"img",x=n?"script":w,y=Array.isArray||function(a){return"[object Array]"==q.call(a)},z=[],A={},B={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}};m=function(a){function b(a){var b,c,d,a=a.split("!"),e=z.length,f=a.pop(),g=a.length,f={url:f,origUrl:f,prefixes:a};for(c=0;g>c;c++)d=a[c].split("="),(b=B[d.shift()])&&(f=b(f,d));for(c=0;e>c;c++)f=z[c](f);return f}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(A[i.url]?i.noexec=!0:A[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),A[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(l=function(){var a=[].slice.call(arguments);m.apply(this,a),n()}),g(a,l,b,0,j);else if(Object(a)===a)for(i in h=function(){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c}(),a)a.hasOwnProperty(i)&&(!c&&!--h&&(d(l)?l=function(){var a=[].slice.call(arguments);m.apply(this,a),n()}:l[i]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),n()}}(m[i])),g(a[i],l,b,i,j))}else!c&&n()}var h,i,j=!!a.test,k=a.load||a.both,l=a.callback||f,m=l,n=a.complete||f;c(j?a.yep:a.nope,!!k),k&&c(k)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(y(a))for(i=0;i0?y.fn.concat.apply([],a):a}function k(a){return a.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function l(a){return a in H?H[a]:H[a]=new RegExp("(^|\\s)"+a+"(\\s|$)")}function m(a,b){return"number"!=typeof b||I[k(a)]?b:b+"px"}function n(a){var b,c;return G[a]||(b=F.createElement(a),F.body.appendChild(b),c=getComputedStyle(b,"").getPropertyValue("display"),b.parentNode.removeChild(b),"none"==c&&(c="block"),G[a]=c),G[a]}function o(a){return"children"in a?D.call(a.children):y.map(a.childNodes,function(a){return 1==a.nodeType?a:void 0})}function p(a,b,c){for(x in b)c&&(f(b[x])||g(b[x]))?(f(b[x])&&!f(a[x])&&(a[x]={}),g(b[x])&&!g(a[x])&&(a[x]=[]),p(a[x],b[x],c)):b[x]!==w&&(a[x]=b[x])}function q(a,b){return null==b?y(a):y(a).filter(b)}function r(a,c,d,e){return b(c)?c.call(a,d,e):c}function s(a,b,c){null==c?a.removeAttribute(b):a.setAttribute(b,c)}function t(a,b){var c=a.className,d=c&&c.baseVal!==w;return b===w?d?c.baseVal:c:void(d?c.baseVal=b:a.className=b)}function u(a){var b;try{return a?"true"==a||("false"==a?!1:"null"==a?null:/^0/.test(a)||isNaN(b=Number(a))?/^[\[\{]/.test(a)?y.parseJSON(a):a:b):a}catch(c){return a}}function v(a,b){b(a);for(var c in a.childNodes)v(a.childNodes[c],b)}var w,x,y,z,A,B,C=[],D=C.slice,E=C.filter,F=window.document,G={},H={},I={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},J=/^\s*<(\w+|!)[^>]*>/,K=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,L=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,M=/^(?:body|html)$/i,N=/([A-Z])/g,O=["val","css","html","text","data","width","height","offset"],P=["after","prepend","before","append"],Q=F.createElement("table"),R=F.createElement("tr"),S={tr:F.createElement("tbody"),tbody:Q,thead:Q,tfoot:Q,td:R,th:R,"*":F.createElement("div")},T=/complete|loaded|interactive/,U=/^[\w-]*$/,V={},W=V.toString,X={},Y=F.createElement("div"),Z={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"};return X.matches=function(a,b){if(!b||!a||1!==a.nodeType)return!1;var c=a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.matchesSelector;if(c)return c.call(a,b);var d,e=a.parentNode,f=!e;return f&&(e=Y).appendChild(a),d=~X.qsa(e,b).indexOf(a),f&&Y.removeChild(a),d},A=function(a){return a.replace(/-+(.)?/g,function(a,b){return b?b.toUpperCase():""})},B=function(a){return E.call(a,function(b,c){return a.indexOf(b)==c})},X.fragment=function(a,b,c){var d,e,g;return K.test(a)&&(d=y(F.createElement(RegExp.$1))),d||(a.replace&&(a=a.replace(L,"<$1>")),b===w&&(b=J.test(a)&&RegExp.$1),b in S||(b="*"),g=S[b],g.innerHTML=""+a,d=y.each(D.call(g.childNodes),function(){g.removeChild(this)})),f(c)&&(e=y(d),y.each(c,function(a,b){O.indexOf(a)>-1?e[a](b):e.attr(a,b)})),d},X.Z=function(a,b){return a=a||[],a.__proto__=y.fn,a.selector=b||"",a},X.isZ=function(a){return a instanceof X.Z},X.init=function(a,c){var d;if(!a)return X.Z();if("string"==typeof a)if(a=a.trim(),"<"==a[0]&&J.test(a))d=X.fragment(a,RegExp.$1,c),a=null;else{if(c!==w)return y(c).find(a);d=X.qsa(F,a)}else{if(b(a))return y(F).ready(a);if(X.isZ(a))return a;if(g(a))d=i(a);else if(e(a))d=[a],a=null;else if(J.test(a))d=X.fragment(a.trim(),RegExp.$1,c),a=null;else{if(c!==w)return y(c).find(a);d=X.qsa(F,a)}}return X.Z(d,a)},y=function(a,b){return X.init(a,b)},y.extend=function(a){var b,c=D.call(arguments,1);return"boolean"==typeof a&&(b=a,a=c.shift()),c.forEach(function(c){p(a,c,b)}),a},X.qsa=function(a,b){var c,e="#"==b[0],f=!e&&"."==b[0],g=e||f?b.slice(1):b,h=U.test(g);return d(a)&&h&&e?(c=a.getElementById(g))?[c]:[]:1!==a.nodeType&&9!==a.nodeType?[]:D.call(h&&!e?f?a.getElementsByClassName(g):a.getElementsByTagName(b):a.querySelectorAll(b))},y.contains=function(a,b){return a!==b&&a.contains(b)},y.type=a,y.isFunction=b,y.isWindow=c,y.isArray=g,y.isPlainObject=f,y.isEmptyObject=function(a){var b;for(b in a)return!1;return!0},y.inArray=function(a,b,c){return C.indexOf.call(b,a,c)},y.camelCase=A,y.trim=function(a){return null==a?"":String.prototype.trim.call(a)},y.uuid=0,y.support={},y.expr={},y.map=function(a,b){var c,d,e,f=[];if(h(a))for(d=0;d=0?a:a+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(a){return C.every.call(this,function(b,c){return a.call(b,c,b)!==!1}),this},filter:function(a){return b(a)?this.not(this.not(a)):y(E.call(this,function(b){return X.matches(b,a)}))},add:function(a,b){return y(B(this.concat(y(a,b))))},is:function(a){return this.length>0&&X.matches(this[0],a)},not:function(a){var c=[];if(b(a)&&a.call!==w)this.each(function(b){a.call(this,b)||c.push(this)});else{var d="string"==typeof a?this.filter(a):h(a)&&b(a.item)?D.call(a):y(a);this.forEach(function(a){d.indexOf(a)<0&&c.push(a)})}return y(c)},has:function(a){return this.filter(function(){return e(a)?y.contains(this,a):y(this).find(a).size()})},eq:function(a){return-1===a?this.slice(a):this.slice(a,+a+1)},first:function(){var a=this[0];return a&&!e(a)?a:y(a)},last:function(){var a=this[this.length-1];return a&&!e(a)?a:y(a)},find:function(a){var b,c=this;return b="object"==typeof a?y(a).filter(function(){var a=this;return C.some.call(c,function(b){return y.contains(b,a)})}):1==this.length?y(X.qsa(this[0],a)):this.map(function(){return X.qsa(this,a)})},closest:function(a,b){var c=this[0],e=!1;for("object"==typeof a&&(e=y(a));c&&!(e?e.indexOf(c)>=0:X.matches(c,a));)c=c!==b&&!d(c)&&c.parentNode;return y(c)},parents:function(a){for(var b=[],c=this;c.length>0;)c=y.map(c,function(a){return(a=a.parentNode)&&!d(a)&&b.indexOf(a)<0?(b.push(a),a):void 0});return q(b,a)},parent:function(a){return q(B(this.pluck("parentNode")),a)},children:function(a){return q(this.map(function(){return o(this)}),a)},contents:function(){return this.map(function(){return D.call(this.childNodes)})},siblings:function(a){return q(this.map(function(a,b){return E.call(o(b.parentNode),function(a){return a!==b})}),a)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(a){return y.map(this,function(b){return b[a]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=n(this.nodeName))})},replaceWith:function(a){return this.before(a).remove()},wrap:function(a){var c=b(a);if(this[0]&&!c)var d=y(a).get(0),e=d.parentNode||this.length>1;return this.each(function(b){y(this).wrapAll(c?a.call(this,b):e?d.cloneNode(!0):d)})},wrapAll:function(a){if(this[0]){y(this[0]).before(a=y(a));for(var b;(b=a.children()).length;)a=b.first();y(a).append(this)}return this},wrapInner:function(a){var c=b(a);return this.each(function(b){var d=y(this),e=d.contents(),f=c?a.call(this,b):a;e.length?e.wrapAll(f):d.append(f)})},unwrap:function(){return this.parent().each(function(){y(this).replaceWith(y(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(a){return this.each(function(){var b=y(this);(a===w?"none"==b.css("display"):a)?b.show():b.hide()})},prev:function(a){return y(this.pluck("previousElementSibling")).filter(a||"*")},next:function(a){return y(this.pluck("nextElementSibling")).filter(a||"*")},html:function(a){return 0===arguments.length?this.length>0?this[0].innerHTML:null:this.each(function(b){var c=this.innerHTML;y(this).empty().append(r(this,a,b,c))})},text:function(a){return 0===arguments.length?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=a===w?"":""+a})},attr:function(a,b){var c;return"string"==typeof a&&b===w?0==this.length||1!==this[0].nodeType?w:"value"==a&&"INPUT"==this[0].nodeName?this.val():!(c=this[0].getAttribute(a))&&a in this[0]?this[0][a]:c:this.each(function(c){if(1===this.nodeType)if(e(a))for(x in a)s(this,x,a[x]);else s(this,a,r(this,b,c,this.getAttribute(a)))})},removeAttr:function(a){return this.each(function(){1===this.nodeType&&s(this,a)})},prop:function(a,b){return a=Z[a]||a,b===w?this[0]&&this[0][a]:this.each(function(c){this[a]=r(this,b,c,this[a])})},data:function(a,b){var c=this.attr("data-"+a.replace(N,"-$1").toLowerCase(),b);return null!==c?u(c):w},val:function(a){return 0===arguments.length?this[0]&&(this[0].multiple?y(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value):this.each(function(b){this.value=r(this,a,b,this.value)})},offset:function(a){if(a)return this.each(function(b){var c=y(this),d=r(this,a,b,c.offset()),e=c.offsetParent().offset(),f={top:d.top-e.top,left:d.left-e.left};"static"==c.css("position")&&(f.position="relative"),c.css(f)});if(0==this.length)return null;var b=this[0].getBoundingClientRect();return{left:b.left+window.pageXOffset,top:b.top+window.pageYOffset,width:Math.round(b.width),height:Math.round(b.height)}},css:function(b,c){if(arguments.length<2){var d=this[0],e=getComputedStyle(d,"");if(!d)return;if("string"==typeof b)return d.style[A(b)]||e.getPropertyValue(b);if(g(b)){var f={};return y.each(g(b)?b:[b],function(a,b){f[b]=d.style[A(b)]||e.getPropertyValue(b)}),f}}var h="";if("string"==a(b))c||0===c?h=k(b)+":"+m(b,c):this.each(function(){this.style.removeProperty(k(b))});else for(x in b)b[x]||0===b[x]?h+=k(x)+":"+m(x,b[x])+";":this.each(function(){this.style.removeProperty(k(x))});return this.each(function(){this.style.cssText+=";"+h})},index:function(a){return a?this.indexOf(y(a)[0]):this.parent().children().indexOf(this[0])},hasClass:function(a){return a?C.some.call(this,function(a){return this.test(t(a))},l(a)):!1},addClass:function(a){return a?this.each(function(b){z=[];var c=t(this),d=r(this,a,b,c);d.split(/\s+/g).forEach(function(a){y(this).hasClass(a)||z.push(a)},this),z.length&&t(this,c+(c?" ":"")+z.join(" "))}):this},removeClass:function(a){return this.each(function(b){return a===w?t(this,""):(z=t(this),r(this,a,b,z).split(/\s+/g).forEach(function(a){z=z.replace(l(a)," ")}),t(this,z.trim()),void 0)})},toggleClass:function(a,b){return a?this.each(function(c){var d=y(this),e=r(this,a,c,t(this));e.split(/\s+/g).forEach(function(a){(b===w?!d.hasClass(a):b)?d.addClass(a):d.removeClass(a)})}):this},scrollTop:function(a){if(this.length){var b="scrollTop"in this[0];return a===w?b?this[0].scrollTop:this[0].pageYOffset:this.each(b?function(){this.scrollTop=a}:function(){this.scrollTo(this.scrollX,a)})}},scrollLeft:function(a){if(this.length){var b="scrollLeft"in this[0];return a===w?b?this[0].scrollLeft:this[0].pageXOffset:this.each(b?function(){this.scrollLeft=a}:function(){this.scrollTo(a,this.scrollY)})}},position:function(){if(this.length){var a=this[0],b=this.offsetParent(),c=this.offset(),d=M.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(y(a).css("margin-top"))||0,c.left-=parseFloat(y(a).css("margin-left"))||0,d.top+=parseFloat(y(b[0]).css("border-top-width"))||0,d.left+=parseFloat(y(b[0]).css("border-left-width"))||0,{top:c.top-d.top,left:c.left-d.left}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||F.body;a&&!M.test(a.nodeName)&&"static"==y(a).css("position");)a=a.offsetParent;return a})}},y.fn.detach=y.fn.remove,["width","height"].forEach(function(a){var b=a.replace(/./,function(a){return a[0].toUpperCase()});y.fn[a]=function(e){var f,g=this[0];return e===w?c(g)?g["inner"+b]:d(g)?g.documentElement["scroll"+b]:(f=this.offset())&&f[a]:this.each(function(b){g=y(this),g.css(a,r(this,e,b,g[a]()))})}}),P.forEach(function(b,c){var d=c%2;y.fn[b]=function(){var b,e,f=y.map(arguments,function(c){return b=a(c),"object"==b||"array"==b||null==c?c:X.fragment(c)}),g=this.length>1;return f.length<1?this:this.each(function(a,b){e=d?b:b.parentNode,b=0==c?b.nextSibling:1==c?b.firstChild:2==c?b:null,f.forEach(function(a){if(g)a=a.cloneNode(!0);else if(!e)return y(a).remove();v(e.insertBefore(a,b),function(a){null!=a.nodeName&&"SCRIPT"===a.nodeName.toUpperCase()&&(!a.type||"text/javascript"===a.type)&&!a.src&&window.eval.call(window,a.innerHTML)})})})},y.fn[d?b+"To":"insert"+(c?"Before":"After")]=function(a){return y(a)[b](this),this}}),X.Z.prototype=y.fn,X.uniq=B,X.deserializeValue=u,y.zepto=X,y}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(a){function b(a){return a._zid||(a._zid=m++)}function c(a,c,f,g){if(c=d(c),c.ns)var h=e(c.ns);return(q[b(a)]||[]).filter(function(a){return!(!a||c.e&&a.e!=c.e||c.ns&&!h.test(a.ns)||f&&b(a.fn)!==b(f)||g&&a.sel!=g)})}function d(a){var b=(""+a).split(".");return{e:b[0],ns:b.slice(1).sort().join(" ")}}function e(a){return new RegExp("(?:^| )"+a.replace(" "," .* ?")+"(?: |$)")}function f(a,b){return a.del&&!s&&a.e in t||!!b}function g(a){return u[a]||s&&t[a]||a}function h(c,e,h,i,k,m,n){var o=b(c),p=q[o]||(q[o]=[]);e.split(/\s/).forEach(function(b){if("ready"==b)return a(document).ready(h);var e=d(b);e.fn=h,e.sel=k,e.e in u&&(h=function(b){var c=b.relatedTarget;return!c||c!==this&&!a.contains(this,c)?e.fn.apply(this,arguments):void 0}),e.del=m;var o=m||h;e.proxy=function(a){if(a=j(a),!a.isImmediatePropagationStopped()){a.data=i;var b=o.apply(c,a._args==l?[a]:[a].concat(a._args));return b===!1&&(a.preventDefault(),a.stopPropagation()),b}},e.i=p.length,p.push(e),"addEventListener"in c&&c.addEventListener(g(e.e),e.proxy,f(e,n))})}function i(a,d,e,h,i){var j=b(a);(d||"").split(/\s/).forEach(function(b){c(a,b,e,h).forEach(function(b){delete q[j][b.i],"removeEventListener"in a&&a.removeEventListener(g(b.e),b.proxy,f(b,i))})})}function j(b,c){return(c||!b.isDefaultPrevented)&&(c||(c=b),a.each(y,function(a,d){var e=c[a];b[a]=function(){return this[d]=v,e&&e.apply(c,arguments)},b[d]=w}),(c.defaultPrevented!==l?c.defaultPrevented:"returnValue"in c?c.returnValue===!1:c.getPreventDefault&&c.getPreventDefault())&&(b.isDefaultPrevented=v)),b}function k(a){var b,c={originalEvent:a};for(b in a)!x.test(b)&&a[b]!==l&&(c[b]=a[b]);return j(c,a)}var l,m=(a.zepto.qsa,1),n=Array.prototype.slice,o=a.isFunction,p=function(a){return"string"==typeof a},q={},r={},s="onfocusin"in window,t={focus:"focusin",blur:"focusout"},u={mouseenter:"mouseover",mouseleave:"mouseout"};r.click=r.mousedown=r.mouseup=r.mousemove="MouseEvents",a.event={add:h,remove:i},a.proxy=function(c,d){if(o(c)){var e=function(){return c.apply(d,arguments)};return e._zid=b(c),e}if(p(d))return a.proxy(c[d],c);throw new TypeError("expected function")},a.fn.bind=function(a,b,c){return this.on(a,b,c)},a.fn.unbind=function(a,b){return this.off(a,b)},a.fn.one=function(a,b,c,d){return this.on(a,b,c,d,1)};var v=function(){return!0},w=function(){return!1},x=/^([A-Z]|returnValue$|layer[XY]$)/,y={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};a.fn.delegate=function(a,b,c){return this.on(b,a,c)},a.fn.undelegate=function(a,b,c){return this.off(b,a,c)},a.fn.live=function(b,c){return a(document.body).delegate(this.selector,b,c),this},a.fn.die=function(b,c){return a(document.body).undelegate(this.selector,b,c),this},a.fn.on=function(b,c,d,e,f){var g,j,m=this;return b&&!p(b)?(a.each(b,function(a,b){m.on(a,c,d,b,f)}),m):(!p(c)&&!o(e)&&e!==!1&&(e=d,d=c,c=l),(o(d)||d===!1)&&(e=d,d=l),e===!1&&(e=w),m.each(function(l,m){f&&(g=function(a){return i(m,a.type,e),e.apply(this,arguments)}),c&&(j=function(b){var d,f=a(b.target).closest(c,m).get(0);return f&&f!==m?(d=a.extend(k(b),{currentTarget:f,liveFired:m}),(g||e).apply(f,[d].concat(n.call(arguments,1)))):void 0}),h(m,b,e,d,c,j||g)}))},a.fn.off=function(b,c,d){var e=this;return b&&!p(b)?(a.each(b,function(a,b){e.off(a,c,b)}),e):(!p(c)&&!o(d)&&d!==!1&&(d=c,c=l),d===!1&&(d=w),e.each(function(){i(this,b,d,c)}))},a.fn.trigger=function(b,c){return b=p(b)||a.isPlainObject(b)?a.Event(b):j(b),b._args=c,this.each(function(){"dispatchEvent"in this?this.dispatchEvent(b):a(this).triggerHandler(b,c)})},a.fn.triggerHandler=function(b,d){var e,f;return this.each(function(g,h){e=k(p(b)?a.Event(b):b),e._args=d,e.target=h,a.each(c(h,b.type||b),function(a,b){return f=b.proxy(e),e.isImmediatePropagationStopped()?!1:void 0})}),f},"focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(b){a.fn[b]=function(a){return a?this.bind(b,a):this.trigger(b)}}),["focus","blur"].forEach(function(b){a.fn[b]=function(a){return a?this.bind(b,a):this.each(function(){try{this[b]()}catch(a){}}),this}}),a.Event=function(a,b){p(a)||(b=a,a=b.type);var c=document.createEvent(r[a]||"Events"),d=!0;if(b)for(var e in b)"bubbles"==e?d=!!b[e]:c[e]=b[e];return c.initEvent(a,d,!0),j(c)}}(Zepto),function(a){function b(b,c,d){var e=a.Event(c);return a(b).trigger(e,d),!e.isDefaultPrevented()}function c(a,c,d,e){return a.global?b(c||s,d,e):void 0}function d(b){b.global&&0===a.active++&&c(b,null,"ajaxStart")}function e(b){b.global&&!--a.active&&c(b,null,"ajaxStop")}function f(a,b){var d=b.context;return b.beforeSend.call(d,a,b)===!1||c(b,d,"ajaxBeforeSend",[a,b])===!1?!1:void c(b,d,"ajaxSend",[a,b])}function g(a,b,d,e){var f=d.context,g="success";d.success.call(f,a,g,b),e&&e.resolveWith(f,[a,g,b]),c(d,f,"ajaxSuccess",[b,d,a]),i(g,b,d)}function h(a,b,d,e,f){var g=e.context;e.error.call(g,d,b,a),f&&f.rejectWith(g,[d,b,a]),c(e,g,"ajaxError",[d,e,a||b]),i(b,d,e)}function i(a,b,d){var f=d.context;d.complete.call(f,b,a),c(d,f,"ajaxComplete",[b,d]),e(d)}function j(){}function k(a){return a&&(a=a.split(";",2)[0]),a&&(a==x?"html":a==w?"json":u.test(a)?"script":v.test(a)&&"xml")||"text"}function l(a,b){return""==b?a:(a+"&"+b).replace(/[&?]{1,2}/,"?")}function m(b){b.processData&&b.data&&"string"!=a.type(b.data)&&(b.data=a.param(b.data,b.traditional)),b.data&&(!b.type||"GET"==b.type.toUpperCase())&&(b.url=l(b.url,b.data),b.data=void 0)}function n(b,c,d,e){var f=!a.isFunction(c);return{url:b,data:f?c:void 0,success:f?a.isFunction(d)?d:void 0:c,dataType:f?e||d:d}}function o(b,c,d,e){var f,g=a.isArray(c),h=a.isPlainObject(c);a.each(c,function(c,i){f=a.type(i),e&&(c=d?e:e+"["+(h||"object"==f||"array"==f?c:"")+"]"),!e&&g?b.add(i.name,i.value):"array"==f||!d&&"object"==f?o(b,i,d,c):b.add(c,i)})}var p,q,r=0,s=window.document,t=/)<[^<]*)*<\/script>/gi,u=/^(?:text|application)\/javascript/i,v=/^(?:text|application)\/xml/i,w="application/json",x="text/html",y=/^\s*$/;a.active=0,a.ajaxJSONP=function(b,c){if("type"in b){var d,e,i=b.jsonpCallback,j=(a.isFunction(i)?i():i)||"jsonp"+ ++r,k=s.createElement("script"),l=window[j],m=function(b){a(k).triggerHandler("error",b||"abort")},n={abort:m};return c&&c.promise(n),a(k).on("load error",function(f,i){clearTimeout(e),a(k).off().remove(),"error"!=f.type&&d?g(d[0],n,b,c):h(null,i||"error",n,b,c),window[j]=l,d&&a.isFunction(l)&&l(d[0]),l=d=void 0}),f(n,b)===!1?(m("abort"),n):(window[j]=function(){d=arguments},k.src=b.url.replace(/=\?/,"="+j),s.head.appendChild(k),b.timeout>0&&(e=setTimeout(function(){m("timeout")},b.timeout)),n)}return a.ajax(b)},a.ajaxSettings={type:"GET",beforeSend:j,success:j,error:j,complete:j,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:w,xml:"application/xml, text/xml",html:x,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0},a.ajax=function(b){var c=a.extend({},b||{}),e=a.Deferred&&a.Deferred();for(p in a.ajaxSettings)void 0===c[p]&&(c[p]=a.ajaxSettings[p]);d(c),c.crossDomain||(c.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(c.url)&&RegExp.$2!=window.location.host),c.url||(c.url=window.location.toString()),m(c),c.cache===!1&&(c.url=l(c.url,"_="+Date.now()));var i=c.dataType,n=/=\?/.test(c.url);if("jsonp"==i||n)return n||(c.url=l(c.url,c.jsonp?c.jsonp+"=?":c.jsonp===!1?"":"callback=?")),a.ajaxJSONP(c,e);var o,r=c.accepts[i],s={},t=function(a,b){s[a.toLowerCase()]=[a,b]},u=/^([\w-]+:)\/\//.test(c.url)?RegExp.$1:window.location.protocol,v=c.xhr(),w=v.setRequestHeader;if(e&&e.promise(v),c.crossDomain||t("X-Requested-With","XMLHttpRequest"),t("Accept",r||"*/*"),(r=c.mimeType||r)&&(r.indexOf(",")>-1&&(r=r.split(",",2)[0]),v.overrideMimeType&&v.overrideMimeType(r)),(c.contentType||c.contentType!==!1&&c.data&&"GET"!=c.type.toUpperCase())&&t("Content-Type",c.contentType||"application/x-www-form-urlencoded"),c.headers)for(q in c.headers)t(q,c.headers[q]);if(v.setRequestHeader=t,v.onreadystatechange=function(){if(4==v.readyState){v.onreadystatechange=j,clearTimeout(o);var b,d=!1;if(v.status>=200&&v.status<300||304==v.status||0==v.status&&"file:"==u){i=i||k(c.mimeType||v.getResponseHeader("content-type")),b=v.responseText;try{"script"==i?(1,eval)(b):"xml"==i?b=v.responseXML:"json"==i&&(b=y.test(b)?null:a.parseJSON(b))}catch(f){d=f}d?h(d,"parsererror",v,c,e):g(b,v,c,e)}else h(v.statusText||null,v.status?"error":"abort",v,c,e)}},f(v,c)===!1)return v.abort(),h(null,"abort",v,c,e),v;if(c.xhrFields)for(q in c.xhrFields)v[q]=c.xhrFields[q];var x="async"in c?c.async:!0;v.open(c.type,c.url,x,c.username,c.password);for(q in s)w.apply(v,s[q]);return c.timeout>0&&(o=setTimeout(function(){v.onreadystatechange=j,v.abort(),h(null,"timeout",v,c,e)},c.timeout)),v.send(c.data?c.data:null),v},a.get=function(){return a.ajax(n.apply(null,arguments))},a.post=function(){var b=n.apply(null,arguments);return b.type="POST",a.ajax(b)},a.getJSON=function(){var b=n.apply(null,arguments);return b.dataType="json",a.ajax(b)},a.fn.load=function(b,c,d){if(!this.length)return this;var e,f=this,g=b.split(/\s/),h=n(b,c,d),i=h.success;return g.length>1&&(h.url=g[0],e=g[1]),h.success=function(b){f.html(e?a("
    ").html(b.replace(t,"")).find(e):b),i&&i.apply(f,arguments)},a.ajax(h),this};var z=encodeURIComponent;a.param=function(a,b){var c=[];return c.add=function(a,b){this.push(z(a)+"="+z(b))},o(c,a,b),c.join("&").replace(/%20/g,"+")}}(Zepto),function(a){a.fn.serializeArray=function(){var b,c=[];return a([].slice.call(this.get(0).elements)).each(function(){b=a(this);var d=b.attr("type");"fieldset"!=this.nodeName.toLowerCase()&&!this.disabled&&"submit"!=d&&"reset"!=d&&"button"!=d&&("radio"!=d&&"checkbox"!=d||this.checked)&&c.push({name:b.attr("name"),value:b.val()})}),c},a.fn.serialize=function(){var a=[];return this.serializeArray().forEach(function(b){a.push(encodeURIComponent(b.name)+"="+encodeURIComponent(b.value))}),a.join("&")},a.fn.submit=function(b){if(b)this.bind("submit",b);else if(this.length){var c=a.Event("submit");this.eq(0).trigger(c),c.isDefaultPrevented()||this.get(0).submit()}return this}}(Zepto),function(a){"__proto__"in{}||a.extend(a.zepto,{Z:function(b,c){return b=b||[],a.extend(b,a.fn),b.selector=c||"",b.__Z=!0,b},isZ:function(b){return"array"===a.type(b)&&"__Z"in b}});try{getComputedStyle(void 0)}catch(b){var c=getComputedStyle;window.getComputedStyle=function(a){try{return c(a)}catch(b){return null}}}}(Zepto); \ No newline at end of file diff --git a/build/web/js/main.js b/build/web/js/main.js new file mode 100644 index 0000000..2d7a55b --- /dev/null +++ b/build/web/js/main.js @@ -0,0 +1 @@ +"use strict";$(document).ready(function(){function a(){switch(a.background){case"white":c.fillStyle="white",c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.fillStyle=settings.color,c.globalCompositeOperation=settings.composite;break;case"current color":c.fillStyle=settings.bg,c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.globalCompositeOperation=settings.composite}var b=$c[0].toDataURL();if("sketchy project"==a.type){var d,e=JSON.parse(localStorage.getItem("projects"));e&&e.some(function(b,c){return b.name==a["file name"]?(d=c,!0):!1})?(console.log(d),e[d]={name:a["file name"],data:b,points:window.points,settings:settings},localStorage.setItem("projects",JSON.stringify(e))):e?e.push({name:a["file name"],data:b,points:window.points}):e=[{name:a["file name"],data:b,points:window.points}],localStorage.setItem("projects",JSON.stringify(e))}else window.open(b,"_blank").focus();c.putImageData(window.points.history[window.points.history.last].data,0,0)}function b(){var a=JSON.parse(localStorage.getItem("projects")).filter(function(a){return a.name==b.file})[0],d=document.createElement("img");d.src=a.data,d.onload=function(){c.clearRect(0,0,width(),height()),c.drawImage(d,0,0),window.points=a.points,window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]},{data:c.getImageData(0,0,width(),height()),points:a.points}],$c.first().css("background",a.settings.bg),window.settings.bg=a.settings.bg}}yepnope({test:window.mobile,yep:["js/mobile.js","js/libs/color-picker-touch.js"],nope:["js/libs/color-picker.js"]}),window.load=b,window.save=a}); \ No newline at end of file diff --git a/build/web/js/shared.js b/build/web/js/shared.js new file mode 100644 index 0000000..937af65 --- /dev/null +++ b/build/web/js/shared.js @@ -0,0 +1 @@ +$(document).ready(function(){window.c=$("canvas")[0].getContext("2d"),window.o=$("canvas")[1].getContext("2d"),window.c.clear=window.o.clear=function(){this.clearRect(0,0,width(),height())},window.settings={stroke:!0,fill:!1,lineWidth:2,color:"black",type:"sketch",lineCap:"round",lineJoin:"round",furLength:50,connectTelorance:40,composite:"source-over",shape:"circle",shapeStart:{},comShape:{},drawingLine:[],version:1.2},window.points=[],window.$c=$("canvas"),window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]}],window.points.history.last=0,sizeAndPos(),$(".color-picker").change(function(){var a=$(this).find(".color").val(),b=$(this).parent().attr("data-caller");settings[b]=a,$("#set"+b+" span").html(a),"bg"==b&&$c.first().css("background",a)}),$(".color").val("#000000"),localStorage.getItem("sawTips")!=settings.version&&($(".tour").removeClass("hidden"),localStorage.setItem("sawTips",settings.version))}); \ No newline at end of file diff --git a/build/web/manifest.webapp b/build/web/manifest.webapp new file mode 100644 index 0000000..f641d16 --- /dev/null +++ b/build/web/manifest.webapp @@ -0,0 +1,31 @@ +{ + "name": "Sketchy Web", + "description": "Free Sketch/Paint app", + "version": "1.2", + "default_locale": "en", + "launch_path": "/Sketchy/Web/index.html", + "icons": { + "16": "/Sketchy/Web/img/icons/icon16.png", + "32": "/Sketchy/Web/img/icons/icon32.png", + "48": "/Sketchy/Web/img/icons/icon48.png", + "60": "/Sketchy/Web/img/icons/icon60.png", + "64": "/Sketchy/Web/img/icons/icon64.png", + "90": "/Sketchy/Web/img/icons/icon90.png", + "120": "/Sketchy/Web/img/icons/icon120.png", + "128": "/Sketchy/Web/img/icons/icon128.png" + }, + "developer": { + "name": "Mahdi Dibaiee", + "url": "https://twitter.com/mdibaiee" + }, + "locales": { + "en": { + "name": "Sketchy Web", + "description": "Free Sketch/Paint app" + }, + "fa": { + "name": "Sketchy Web", + "description": "برنامه‌ی رایگان طراحی/نقاشی" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..cfb1c80 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "Sketchy", + "version": "1.2.0", + "description": "Free Firefox Sketch/Paint Tool", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "http://github.com/mdibaiee/Sketchy/" + }, + "devDependecies": { + "grunt": "~0.4.2", + "grunt-contrib-less": "~0.9.0", + "grunt-contrib-uglify": "~0.2.2", + "grunt-contrib-copy": "~0.5.0", + "grunt-contrib-watch": "~0.5.3" + }, + "keywords": [ + "Sketch", + "Firefox", + "Javascript" + ], + "author": "Mahdi Dibaiee", + "license": "GPL V2", + "devDependencies": { + "grunt": "~0.4.2" + } +}