From 6ecd9224d775dc7ada0098c060e16f10299132f5 Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Wed, 29 Nov 2017 21:43:07 -0700
Subject: [PATCH 01/17] Cleaned stuff up
---
.jshintrc | 2 +-
.project | 18 -
.travis.yml | 6 +-
Doc/Install.md | 6 -
Gruntfile.js | 316 +++++++++---------
OpenNote.Test/unit/folder.js | 6 -
OpenNote/bower.json | 22 --
OpenNote/index.html | 33 +-
.../openNote/controllers/folderController.js | 9 +-
.../openNote/controllers/noteController.js | 37 +-
.../settings/databaseController.js | 4 +-
.../controllers/settings/legacyController.js | 60 ----
.../openNote/controllers/tagListController.js | 2 +
OpenNote/openNote/openNote.config.js | 37 --
OpenNote/openNote/openNote.js | 90 ++---
OpenNote/openNote/partials/folderPartial.html | 2 +-
OpenNote/openNote/partials/navBarPartial.html | 11 +-
OpenNote/openNote/partials/notePartial.html | 8 +-
.../partials/settings/legacyPartial.html | 33 --
.../partials/settings/settingsPartial.html | 15 +-
.../openNote/partials/tagListPartial.html | 3 +-
OpenNote/openNote/router.js | 4 -
.../openNote/services/legacyImportService.js | 80 -----
.../openNote/services/serverConfigService.js | 73 ----
OpenNote/openNote/services/userService.js | 164 ---------
.../style/dark/ckeditor/moono.dark/dialog.css | 5 -
.../dark/ckeditor/moono.dark/dialog_ie.css | 5 -
.../dark/ckeditor/moono.dark/dialog_ie7.css | 5 -
.../dark/ckeditor/moono.dark/dialog_ie8.css | 5 -
.../ckeditor/moono.dark/dialog_iequirks.css | 5 -
.../dark/ckeditor/moono.dark/dialog_opera.css | 5 -
.../style/dark/ckeditor/moono.dark/editor.css | 5 -
.../dark/ckeditor/moono.dark/editor_gecko.css | 5 -
.../dark/ckeditor/moono.dark/editor_ie.css | 5 -
.../dark/ckeditor/moono.dark/editor_ie7.css | 5 -
.../dark/ckeditor/moono.dark/editor_ie8.css | 5 -
.../ckeditor/moono.dark/editor_iequirks.css | 5 -
.../style/dark/ckeditor/moono.dark/icons.png | Bin 23655 -> 0 bytes
.../dark/ckeditor/moono.dark/images/arrow.png | Bin 261 -> 0 bytes
.../dark/ckeditor/moono.dark/images/close.png | Bin 389 -> 0 bytes
.../dark/ckeditor/moono.dark/images/mini.png | Bin 818 -> 0 bytes
.../style/dark/ckeditor/moono.dark/readme.md | 51 ---
OpenNote/openNote/style/invert/introjs.less | 128 -------
OpenNote/openNote/style/invert/note.less | 97 ------
OpenNote/openNote/style/invert/style.less | 2 +-
OpenNote/package.json | 26 ++
_config.yml | 1 -
package.json | 1 +
48 files changed, 267 insertions(+), 1140 deletions(-)
delete mode 100644 .project
delete mode 100644 OpenNote/bower.json
delete mode 100644 OpenNote/openNote/controllers/settings/legacyController.js
delete mode 100644 OpenNote/openNote/partials/settings/legacyPartial.html
delete mode 100644 OpenNote/openNote/services/legacyImportService.js
delete mode 100644 OpenNote/openNote/services/serverConfigService.js
delete mode 100644 OpenNote/openNote/services/userService.js
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie7.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie8.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_iequirks.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_opera.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/editor.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_gecko.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie7.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie8.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_iequirks.css
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/icons.png
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/images/arrow.png
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/images/close.png
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/images/mini.png
delete mode 100644 OpenNote/openNote/style/dark/ckeditor/moono.dark/readme.md
delete mode 100644 OpenNote/openNote/style/invert/introjs.less
delete mode 100644 OpenNote/openNote/style/invert/note.less
create mode 100644 OpenNote/package.json
delete mode 100644 _config.yml
diff --git a/.jshintrc b/.jshintrc
index 0610a72..8fb55c3 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -8,6 +8,6 @@
"devel":true,
"jquery":true,
"jasmine": true,
- "predef": [ "angular","alertify","", "PouchDB", "CKEDITOR","inject" ],
+ "predef": [ "angular","alertify","", "PouchDB","inject" ],
"globals":{"openNote":true}
}
diff --git a/.project b/.project
deleted file mode 100644
index 145bca8..0000000
--- a/.project
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- OpenNote
-
-
-
-
-
- tern.eclipse.ide.core.ternBuilder
-
-
-
-
-
- org.eclipse.angularjs.core.angularnature
- tern.eclipse.ide.core.ternnature
-
-
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index 6e53737..578f402 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,5 @@
language: node_js
node_js:
- - '0.10'
+ - 0.10
before_script:
- - 'npm install -g grunt-cli'
-
-
+ - npm install -g grunt-cli
diff --git a/Doc/Install.md b/Doc/Install.md
index 38b2da6..8836ee9 100644
--- a/Doc/Install.md
+++ b/Doc/Install.md
@@ -52,12 +52,6 @@ curl -X PUT http://127.0.0.1:5984/_config/ssl/key_file \
Now in `/OpenNote/#/settings/database/` put the following connection string in the `Replication url` field `https://admin:password@127.0.0.1:6984/opennote`
-To import a database from older versions check out `/OpenNote/#/settings/legacy/`
-
-# Legacy service
-The legacy service is still included to migrate data to the new data structure.
-All write endpoints have been hidden with the exception of the file upload api's.
-
### Automatic(Wizard Based Install)
To run the installer open
`/Service/install.php`
diff --git a/Gruntfile.js b/Gruntfile.js
index 9c76020..6855ada 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,162 +1,166 @@
module.exports = function(grunt) {
- //Initializing the configuration object
- grunt.initConfig({
- compress: {
- main: {
- options: {
- archive: "build/version.zip"
- },
- files: [{
- src: ["**/*"],
- cwd:"OpenNote/",
- expand: true
- }]
- }
- },
- jshint: {
- options:{
- },
- all: [ "**/*.js*",//Order matters
- "!node_modules/**",
- "!OpenNote/bower_components/**"]
- },
- //Style
- less: {
- devDark: {
- options: {
- paths: ["assets/css"],
- modifyVars: {
- offset: "#000000"
- }
- },
- files: {
- "OpenNote/openNote/style/invert/dark/style.css": "OpenNote/openNote/style/invert/style.less",
- "OpenNote/openNote/style/invert/dark/note.css": "OpenNote/openNote/style/invert/note.less",
- "OpenNote/openNote/style/invert/dark/alertify.css": "OpenNote/openNote/style/invert/alertify.less",
- "OpenNote/openNote/style/invert/dark/intojs.css": "OpenNote/openNote/style/invert/introjs.less"
- }
- },
- devLight: {
- options: {
- paths: ["assets/css"],
- modifyVars: {
- offset: "#FFFFFF"
- }
- },
- files: {
- "OpenNote/openNote/style/invert/light/style.css": "OpenNote/openNote/style/invert/style.less",
- "OpenNote/openNote/style/invert/light/note.css": "OpenNote/openNote/style/invert/note.less",
- "OpenNote/openNote/style/invert/light/alertify.css": "OpenNote/openNote/style/invert/alertify.less",
- "OpenNote/openNote/style/invert/light/intojs.css": "OpenNote/openNote/style/invert/introjs.less"
- }
- },
- prodDark: {
- options: {
- paths: ["assets/css"],
- cleancss: true,
- modifyVars: {
- offset: "#000000"
- }
- },
- files: {
- "OpenNote/openNote/style/invert/dark/style.css": "OpenNote/openNote/style/invert/style.less",
- "OpenNote/openNote/style/invert/dark/note.css": "OpenNote/openNote/style/invert/note.less",
- "OpenNote/openNote/style/invert/dark/alertify.css": "OpenNote/openNote/style/invert/alertify.less",
- "OpenNote/openNote/style/invert/dark/intojs.css": "OpenNote/openNote/style/invert/introjs.less"
- }
- },
- prodLight: {
- options: {
- paths: ["assets/css"],
- cleancss: true,
- modifyVars: {
- offset: "#FFFFFF"
- }
- },
- files: {
- "OpenNote/openNote/style/invert/light/style.css": "OpenNote/openNote/style/invert/style.less",
- "OpenNote/openNote/style/invert/light/note.css": "OpenNote/openNote/style/invert/note.less",
- "OpenNote/openNote/style/invert/light/alertify.css": "OpenNote/openNote/style/invert/alertify.less",
- "OpenNote/openNote/style/invert/light/intojs.css": "OpenNote/openNote/style/invert/introjs.less"
- }
- }
- },
- //Testing setup
- karma: {
- unit: {
- configFile: "OpenNote.Test/karma.conf.js",
- background: true
- },
- travis: {
- configFile: "OpenNote.Test/karma.conf.js",
- singleRun: true,
- browsers: ["PhantomJS"]//Override config browsers
- }
- },
- watch: {
- karma: {
- files: ["src/**/*.js", "test/unit/**/*.js"],
- tasks: ["karma:unit:run"]
- }
- },
- shell: {
- bowerInstall: {
- command: [ "cd OpenNote",
- "bower install" ].join("&&")
- },
- clean:{
- command: [ "rm -rf build",
- "cd OpenNote",
- "rm -rf bower_components",
- "cd openNote/style/invert/",
- "rm -rf dark light"].join("&&")
- }
- },
- //HTML 5
- manifest: {
- generate: {
- options: {
- basePath: "OpenNote/",
- exclude: ["openNote.appcache", "Service", "bower_components/intro.js"],
- verbose: true,
- timestamp: true,
- hash: true,
- master: ["index.html"]
- },
- src: [
- "**/*.js",
- "**/*.css",
- "**/*.html",
- "**/*.png",
- "**/*.jpg"
- ],
- dest: "OpenNote/openNote.appcache"
- }
- }
- });
+ //Initializing the configuration object
+ grunt.initConfig({
+ compress: {
+ main: {
+ options: {
+ archive: "build/version.zip"
+ },
+ files: [{
+ src: ["**/*"],
+ cwd: "OpenNote/",
+ expand: true
+ }]
+ }
+ },
+ connect: {
+ server: {
+ options: {
+ port: 8080,
+ base: "OpenNote",
+ keepalive:true
+ }
+ }
+ },
+ jshint: {
+ options: {},
+ all: ["**/*.js*", //Order matters
+ "!node_modules/**",
+ "!OpenNote/node_moduless/**"
+ ]
+ },
+ //Style
+ less: {
+ devDark: {
+ options: {
+ paths: ["assets/css"],
+ modifyVars: {
+ offset: "#000000"
+ }
+ },
+ files: {
+ "OpenNote/openNote/style/invert/dark/style.css": "OpenNote/openNote/style/invert/style.less",
+ "OpenNote/openNote/style/invert/dark/alertify.css": "OpenNote/openNote/style/invert/alertify.less"
+ }
+ },
+ devLight: {
+ options: {
+ paths: ["assets/css"],
+ modifyVars: {
+ offset: "#FFFFFF"
+ }
+ },
+ files: {
+ "OpenNote/openNote/style/invert/light/style.css": "OpenNote/openNote/style/invert/style.less",
+ "OpenNote/openNote/style/invert/light/alertify.css": "OpenNote/openNote/style/invert/alertify.less"
+ }
+ },
+ prodDark: {
+ options: {
+ paths: ["assets/css"],
+ cleancss: true,
+ modifyVars: {
+ offset: "#000000"
+ }
+ },
+ files: {
+ "OpenNote/openNote/style/invert/dark/style.css": "OpenNote/openNote/style/invert/style.less",
+ "OpenNote/openNote/style/invert/dark/alertify.css": "OpenNote/openNote/style/invert/alertify.less"
+ }
+ },
+ prodLight: {
+ options: {
+ paths: ["assets/css"],
+ cleancss: true,
+ modifyVars: {
+ offset: "#FFFFFF"
+ }
+ },
+ files: {
+ "OpenNote/openNote/style/invert/light/style.css": "OpenNote/openNote/style/invert/style.less",
+ "OpenNote/openNote/style/invert/light/alertify.css": "OpenNote/openNote/style/invert/alertify.less"
+ }
+ }
+ },
+ //Testing setup
+ karma: {
+ unit: {
+ configFile: "OpenNote.Test/karma.conf.js",
+ background: true
+ },
+ travis: {
+ configFile: "OpenNote.Test/karma.conf.js",
+ singleRun: true,
+ browsers: ["PhantomJS"] //Override config browsers
+ }
+ },
+ watch: {
+ karma: {
+ files: ["src/**/*.js", "test/unit/**/*.js"],
+ tasks: ["karma:unit:run"]
+ }
+ },
+ shell: {
+ npmInstall: {
+ command: ["cd OpenNote",
+ "npm install"
+ ].join("&&")
+ },
+ clean: {
+ command: ["rm -rf build",
+ "cd OpenNote",
+ "rm -rf node_moduless",
+ "cd openNote/style/invert/",
+ "rm -rf dark light"
+ ].join("&&")
+ }
+ },
+ //HTML 5
+ manifest: {
+ generate: {
+ options: {
+ basePath: "OpenNote/",
+ exclude: ["openNote.appcache", "Service"],
+ verbose: true,
+ timestamp: true,
+ hash: true,
+ master: ["index.html"]
+ },
+ src: [
+ "**/*.js",
+ "**/*.css",
+ "**/*.html",
+ "**/*.png",
+ "**/*.jpg"
+ ],
+ dest: "OpenNote/openNote.appcache"
+ }
+ }
+ });
- //Plugin loading
- grunt.loadNpmTasks("grunt-contrib-jshint");
- grunt.loadNpmTasks("grunt-contrib-less");
- grunt.loadNpmTasks("grunt-contrib-watch");
- grunt.loadNpmTasks("grunt-karma");
- grunt.loadNpmTasks("grunt-shell");
- grunt.loadNpmTasks("grunt-manifest");
- grunt.loadNpmTasks("grunt-contrib-compress");
+ //Plugin loading
+ grunt.loadNpmTasks("grunt-contrib-jshint");
+ grunt.loadNpmTasks("grunt-contrib-less");
+ grunt.loadNpmTasks("grunt-contrib-watch");
+ grunt.loadNpmTasks("grunt-karma");
+ grunt.loadNpmTasks("grunt-shell");
+ grunt.loadNpmTasks("grunt-manifest");
+ grunt.loadNpmTasks("grunt-contrib-compress");
+ grunt.loadNpmTasks("grunt-contrib-connect");
- //Task definition
- //css
- grunt.registerTask("buildDevCSS", ["less:devDark","less:devLight"]);
- grunt.registerTask("buildProdCSS", ["less:prodDark","less:prodLight"]);
+ //Task definition
+ //css
+ grunt.registerTask("buildDevCSS", ["less:devDark", "less:devLight"]);
+ grunt.registerTask("buildProdCSS", ["less:prodDark", "less:prodLight"]);
- //deployment
- // you can run individual command using the plug-in command syntax suck as manifest:generate or shell:clean
- grunt.registerTask("build", ["shell:bowerInstall", "buildDevCSS", "manifest:generate"]);
- grunt.registerTask("default", ["build"]);
- grunt.registerTask("deploy", ["shell:clean", "shell:bowerInstall", "buildProdCSS", "manifest:generate","compress"]);
+ //deployment
+ // you can run individual command using the plug-in command syntax suck as manifest:generate or shell:clean
+ grunt.registerTask("build", ["shell:npmInstall", "buildDevCSS", "manifest:generate"]);
+ grunt.registerTask("default", ["build", "connect:server"]);
+ grunt.registerTask("deploy", ["shell:clean", "shell:npmInstall", "buildProdCSS", "manifest:generate", "compress"]);
- //testing
- grunt.registerTask("devmode", ["karma:unit", "watch"]);
- grunt.registerTask("test", ["karma:travis"]);
- grunt.registerTask("ci", ["build","jshint:all","karma:travis"]);
+ //testing
+ grunt.registerTask("devmode", ["karma:unit", "watch"]);
+ grunt.registerTask("test", ["karma:travis"]);
+ grunt.registerTask("ci", ["build", "jshint:all", "karma:travis"]);
};
diff --git a/OpenNote.Test/unit/folder.js b/OpenNote.Test/unit/folder.js
index 2102929..3fc1205 100644
--- a/OpenNote.Test/unit/folder.js
+++ b/OpenNote.Test/unit/folder.js
@@ -23,12 +23,6 @@ describe("folderController", function() {
$scope = $rootScope.$new();
this.$rootScope=$rootScope;
- $rootScope.helpContent={
- newNoteButton: "",
- newFolderButton: "",
- findButton: ""
- };
-
$rootScope.buttons=[];
/**
diff --git a/OpenNote/bower.json b/OpenNote/bower.json
deleted file mode 100644
index 259584a..0000000
--- a/OpenNote/bower.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "opennote",
- "authors": [
- "Jacob Liscom "
- ],
- "description": "A note taking software",
- "version": "17.02.0",
- "dependencies": {
- "jquery": "2.1.4",
- "bootstrap": "^3.3.6",
- "angular": "^1.5.5",
- "angular-route": "^1.5.5",
- "angular-resource": "^1.5.5",
- "angular-sanitize": "^1.5.5",
- "angular-animate": "^1.5.5",
- "angular-mocks": "^1.5.5",
- "ckeditor": "ckeditor/ckeditor-releases#full/4.5.x",
- "alertify": "0.3.10",
- "intro.js": "0.8.0",
- "pouchdb": "^5.3.2"
- }
-}
diff --git a/OpenNote/index.html b/OpenNote/index.html
index 539e1cb..44a4bda 100644
--- a/OpenNote/index.html
+++ b/OpenNote/index.html
@@ -1,5 +1,5 @@
-
+
@@ -16,31 +16,28 @@
-
-
+
+
-
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
@@ -48,10 +45,7 @@
-
-
-
@@ -66,7 +60,6 @@
-
@@ -74,7 +67,7 @@
-
+
© 2017 Jacob Liscom - Version {{version}}
diff --git a/OpenNote/openNote/controllers/folderController.js b/OpenNote/openNote/controllers/folderController.js
index 9bb79aa..835e948 100644
--- a/OpenNote/openNote/controllers/folderController.js
+++ b/OpenNote/openNote/controllers/folderController.js
@@ -20,8 +20,7 @@ openNote.controller("folderController", function( $scope,
$scope.fadeOutFoldersAndNotes(function(){
$location.url("/note/").search("folderID",$scope.currentFolder._id);
});
- },
- helpText: $rootScope.helpContent.newNoteButton
+ }
});
//Create a folder
@@ -47,8 +46,7 @@ openNote.controller("folderController", function( $scope,
createFolder(folder);
},
"");
- },
- helpText: $rootScope.helpContent.newFolderButton
+ }
});
if($routeParams.id)
@@ -76,8 +74,7 @@ openNote.controller("folderController", function( $scope,
text: "Search",
action: function(){
$location.url("/search/"+$scope.currentFolder.id);
- },
- helpText: $rootScope.helpContent.findButton
+ }
});
/**
diff --git a/OpenNote/openNote/controllers/noteController.js b/OpenNote/openNote/controllers/noteController.js
index c74c8a7..5fbc559 100644
--- a/OpenNote/openNote/controllers/noteController.js
+++ b/OpenNote/openNote/controllers/noteController.js
@@ -12,7 +12,6 @@ openNote.controller("noteController", function( $scope,
$routeParams,
storageService,
config,
- serverConfigService,
$sce) {
$rootScope.buttons=[];
$scope.note = {};
@@ -27,8 +26,7 @@ openNote.controller("noteController", function( $scope,
text: "Save",
action: function(){
save();
- },
- helpText: $rootScope.helpContent.saveButton
+ }
};
};
@@ -50,8 +48,7 @@ openNote.controller("noteController", function( $scope,
text: "Clear",
action: function(){
$scope.clear();
- },
- helpText: $rootScope.helpContent.clearButton
+ }
};
};
@@ -60,8 +57,7 @@ openNote.controller("noteController", function( $scope,
text: "Edit",
action: function(){
activateEditMode();
- },
- helpText: $rootScope.helpContent.editButton
+ }
};
};
@@ -70,8 +66,7 @@ openNote.controller("noteController", function( $scope,
text: "Go up a folder",
action: function(){
$location.url("/folder/"+folderID);
- },
- helpText: $rootScope.helpContent.editButton
+ }
};
};
@@ -79,28 +74,28 @@ openNote.controller("noteController", function( $scope,
* Take us into edit mode
*/
var activateEditMode = function(){
- serverConfigService.getEditorConfig().then(function(config){
- $scope.editMode=true;
+ //FIXME
- if($scope.note._id)
- $scope.showDeleteButton = true;
+ $scope.editMode=true;
- CKEDITOR.replace("note", config);
- $rootScope.buttons=[];
+ if($scope.note._id)
+ $scope.showDeleteButton = true;
- attachWindowUnload();
+ $rootScope.buttons=[];
+
+ attachWindowUnload();
+
+ //Add new buttons
+ $rootScope.buttons.push(saveButton());
+ $rootScope.buttons.push(clearButton());
- //Add new buttons
- $rootScope.buttons.push(saveButton());
- $rootScope.buttons.push(clearButton());
- });
};
/**
* Save a note
*/
var save = function(){
- $scope.note.note = CKEDITOR.instances.note.getData();
+ //$scope.note.note = CKEDITOR.instances.note.getData();//FIXME
$(".notePartial").fadeOut(config.fadeSpeedShort(),function(){
$scope.note.type="note";
diff --git a/OpenNote/openNote/controllers/settings/databaseController.js b/OpenNote/openNote/controllers/settings/databaseController.js
index f629f0e..0a3d437 100644
--- a/OpenNote/openNote/controllers/settings/databaseController.js
+++ b/OpenNote/openNote/controllers/settings/databaseController.js
@@ -3,8 +3,7 @@
*/
openNote.controller("databaseController", function( $scope,
$rootScope,
- storageService,
- userService) {
+ storageService) {
$scope.downloadFile = null;
$scope.url = storageService.getRemoteURL();
@@ -38,7 +37,6 @@ openNote.controller("databaseController", function( $scope,
return;
storageService.destroyDatabase(function(){
- userService.destroyTokenHeader();
$rootScope.$emit("reloadListView", {});
window.location.href='#/';
$rootScope.$apply();
diff --git a/OpenNote/openNote/controllers/settings/legacyController.js b/OpenNote/openNote/controllers/settings/legacyController.js
deleted file mode 100644
index a9eba69..0000000
--- a/OpenNote/openNote/controllers/settings/legacyController.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Search
- */
-openNote.controller("legacyController", function( $scope,
- $rootScope,
- storageService,
- userService,
- config,
- legacyImportService) {
-
-
- $scope.username = userService.getUsername();
- $scope.password = "";
- $scope.url = config.servicePath();
-
- /**
- * Handle login
- */
- $scope.login = function(){
- legacyImportService.setServiceURL($scope.url);
-
- userService.login($scope.username, $scope.password).then(function(data){
- if(data)
- alertify.success("Credentials Accepted");
- else
- alertify.error("Invalid credentials");
- });
- };
-
- /**
- * Handle register
- */
- $scope.register = function(){
- legacyImportService.setServiceURL($scope.url);
-
- userService.register($scope.username, $scope.password).then(function(data){
- if(data)
- alertify.success("Credentials Accepted");
- else
- alertify.error("Invalid credentials");
- });
- };
-
- /**
- * Run legacy import
- */
- $scope.import = function(){
- if(userService.hasValidToken()){
- legacyImportService.import();
-
- //Wait until we are done and let the world know
- $rootScope.$on("importComplete", function() {
- alertify.success("Import has completed");
- $rootScope.$emit("reloadListView", {});
- });
- }
- else
- alertify.error("You must be logged in to run import");
- };
-});
diff --git a/OpenNote/openNote/controllers/tagListController.js b/OpenNote/openNote/controllers/tagListController.js
index cf98f66..77d2ad4 100644
--- a/OpenNote/openNote/controllers/tagListController.js
+++ b/OpenNote/openNote/controllers/tagListController.js
@@ -20,6 +20,8 @@ openNote.controller("tagListController", function( $scope,
$scope.tags.push(tag);
$scope.$apply();
+ }).catch(function(){
+ //TODO
});
};
diff --git a/OpenNote/openNote/openNote.config.js b/OpenNote/openNote/openNote.config.js
index 75d44a1..1cc87f5 100644
--- a/OpenNote/openNote/openNote.config.js
+++ b/OpenNote/openNote/openNote.config.js
@@ -17,16 +17,6 @@ openNote.value("config", {
return "https://cdn.rawgit.com/FoxUSA/OpenNote/master/package.json";
},
- /**
- * http path to backend rest service
- */
- servicePath: function(){
- var url = localStorage.getItem("serviceURL");
- if(url)
- return url;
-
- return "./Service/service.php";
- },
/**
* Used to compute random short fade speed
@@ -42,33 +32,6 @@ openNote.value("config", {
return 2000*Math.random()+200;
},
- /**
- * returns help contents
- */
- getHelpContent: function(){
- return {
- homeButton: "Click here to return to home page.",
- listArea: "This area gives you a high level tree view of the folder structure. You can drag folder to re-arange them. To drag a folder into another, the parrent folder must be open.",
- newNoteButton: "Allows you to create a new note in the the current folder.",
- newFolderButton: "Allows you to create a sub folder in the current folder.",
- findButton: "Launches the folder/note find utility.",
- folderEditModeButton: "Click this button to reveal edit mode buttons. You cannot edit the Home folder.",
- viewArea: "This is the main area. Folder browser and note editor are displayed here.",
- noteBody: "This is the main note body. If edit mode is enabled this becomes the editor.",
- clearButton: "Press this button to revert current changes.",
- saveButton: "Click this to save this note. Old version are kept.",
- editButton: "Click this to change the note into edit mode.",
- noteTitle: "This the note title field. In edit mode, you can use it to edit the notes title."
- };
- },
-
- /**
- * Do we want to show the help button
- */
- showHelpButton: function(){
- return true;
- },
-
/**
* See if we are dark or light
*/
diff --git a/OpenNote/openNote/openNote.js b/OpenNote/openNote/openNote.js
index 6dc7539..1c94e5e 100644
--- a/OpenNote/openNote/openNote.js
+++ b/OpenNote/openNote/openNote.js
@@ -4,80 +4,44 @@
*/
//Module Declaration
-var openNote = angular.module("openNote", [ "ngRoute",
- "ngResource",
- "ngSanitize",
- "ngAnimate"]);
+var openNote = angular.module("openNote", ["ngRoute",
+ "ngResource",
+ "ngSanitize",
+ "ngAnimate"
+]);
/**
* Used to redirect users to login if their token has expired
* Runs on every route
*/
-openNote.run(function ( $rootScope,
- $location,
- userService,
- config,
- serverConfigService,
- tagService,
- $http){
+openNote.run(function($rootScope,
+ $location,
+ config,
+ tagService,
+ $http) {
- $rootScope.helpContent=config.getHelpContent();
- $rootScope.version=config.getVersion();
+ $rootScope.version = config.getVersion();
tagService.bindHandlers();
- $rootScope.$on("$routeChangeStart", function () {
- //server config values
- serverConfigService.getConfig().then(function(config){
- if(!config)
- console.error("Connection to service failed");
- else
- $rootScope.serverConfig=config;
- }); //attach server config to root scope
+ $rootScope.$on("$routeChangeStart", function() {
- //Initial entry after if logged in
- if(!$rootScope.showMenu && !$rootScope.showSideBar)//make sure we only fade in/run once
- $rootScope.$emit("init");
+ //Initial entry after if logged in
+ if (!$rootScope.showMenu && !$rootScope.showSideBar) //make sure we only fade in/run once
+ $rootScope.$emit("init");
});
- /**
- * Refresh token
- */
- var tokenRefresh = function(){
- userService.login().then(function(response){
- if(response)
- alertify.success("Token refreshed");
- else
- alertify.error("Refreshed token failed");
- }).catch(function(){
- alertify.error("Refreshed token failed");
- });
-
- };
-
-
/**
* Initialize app and start fade in
*/
- $rootScope.$on("init",function(){
- userService.useAPITokenHeader();//use token
-
- $rootScope.showMenu=true;
- $rootScope.showSideBar=true;
-
- //options for humans
- $rootScope.showHelpButton = config.showHelpButton();
-
- //Check for updates
- $http.get(config.getUpdateURL()).then(
- function(response){//Successful
- if(response.data.version!=config.getVersion())
- alertify.log("Update available ", "", 0);
- }
- );
-
- //Setup auto login interval
- if(userService.getUsername() && !$rootScope.autoLogInInterval){
- tokenRefresh();
- $rootScope.autoLogInInterval=setInterval(tokenRefresh, 1800000);
- }
- });
+ $rootScope.$on("init", function() {
+ $rootScope.showMenu = true;
+ $rootScope.showSideBar = true;
+
+ //Check for updates
+ $http.get(config.getUpdateURL()).then(
+ function(response) { //Successful
+ if (response.data.version != config.getVersion())
+ alertify.log("Update available ", "", 0);
+ }
+ );
+ });
});
diff --git a/OpenNote/openNote/partials/folderPartial.html b/OpenNote/openNote/partials/folderPartial.html
index c72c527..5430e69 100644
--- a/OpenNote/openNote/partials/folderPartial.html
+++ b/OpenNote/openNote/partials/folderPartial.html
@@ -4,7 +4,7 @@
{{parentFolder.name}}
-
+
{{currentFolder.name}}
diff --git a/OpenNote/openNote/partials/navBarPartial.html b/OpenNote/openNote/partials/navBarPartial.html
index 2554874..deaa088 100644
--- a/OpenNote/openNote/partials/navBarPartial.html
+++ b/OpenNote/openNote/partials/navBarPartial.html
@@ -1,6 +1,6 @@
-
+
- {{button.text}}
+ {{button.text}}
Settings
-
- Help
-
-
\ No newline at end of file
+
diff --git a/OpenNote/openNote/partials/notePartial.html b/OpenNote/openNote/partials/notePartial.html
index 78d9039..3886a26 100644
--- a/OpenNote/openNote/partials/notePartial.html
+++ b/OpenNote/openNote/partials/notePartial.html
@@ -1,11 +1,15 @@
-
+
Delete
-
diff --git a/OpenNote/openNote/partials/settings/legacyPartial.html b/OpenNote/openNote/partials/settings/legacyPartial.html
deleted file mode 100644
index 8acaa38..0000000
--- a/OpenNote/openNote/partials/settings/legacyPartial.html
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
File/Legacy Service
-
-
\ No newline at end of file
diff --git a/OpenNote/openNote/partials/settings/settingsPartial.html b/OpenNote/openNote/partials/settings/settingsPartial.html
index 68e6e06..3bfff68 100644
--- a/OpenNote/openNote/partials/settings/settingsPartial.html
+++ b/OpenNote/openNote/partials/settings/settingsPartial.html
@@ -2,7 +2,7 @@
-
+
Database
@@ -13,15 +13,4 @@
-
-
-
- File/Legacy API
-
-
- Service used for uploading files and converting data from legacy service
-
-
-
-
-
\ No newline at end of file
+
diff --git a/OpenNote/openNote/partials/tagListPartial.html b/OpenNote/openNote/partials/tagListPartial.html
index dacf686..857adbd 100644
--- a/OpenNote/openNote/partials/tagListPartial.html
+++ b/OpenNote/openNote/partials/tagListPartial.html
@@ -1,8 +1,7 @@
+ ng-show="showSideBar">
Tags
diff --git a/OpenNote/openNote/router.js b/OpenNote/openNote/router.js
index 2ae57da..3501cc4 100644
--- a/OpenNote/openNote/router.js
+++ b/OpenNote/openNote/router.js
@@ -26,9 +26,5 @@ openNote.config(function($routeProvider,$locationProvider){
controller: "databaseController",
templateUrl: "openNote/partials/settings/databasePartial.html"
})
- .when("/settings/legacy/",{
- controller: "legacyController",
- templateUrl: "openNote/partials/settings/legacyPartial.html"
- })
.otherwise({ redirectTo: "/folder" });
});
diff --git a/OpenNote/openNote/services/legacyImportService.js b/OpenNote/openNote/services/legacyImportService.js
deleted file mode 100644
index 084fc6a..0000000
--- a/OpenNote/openNote/services/legacyImportService.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Connects the the rest service to get user details
- */
-openNote.service("legacyImportService", function ( $http,
- $q,
- config,
- storageService,
- userService,
- $rootScope) {
-
- //Used to determin when we are finished looping through the import tree
- var recursion = 0;
- var folderImportSuffix="importFolder";
-
- /**
- * Set service url
- * @param url - the url to save
- */
- this.setServiceURL = function(url){
- localStorage.setItem("serviceURL",url);
- };
-
- /**
- * Import from legacy
- */
- this.import = function(){
- if(userService.hasValidToken)
- return $http.get(config.servicePath() +"/folder?includeNotes=true&includeNotesHTML=true&levels=1000",
- {headers:{token:userService.getAPITokenString()}}).then(function(response){//Successful
- if(response.status!=200)
- return false;
-
- //Start the machine
- if(response.data.foldersInside){
- recursion = response.data.foldersInside.length;
-
- processFolder(response.data);
- }
- },
- function(){
- return false;
- }
- );
- else
- throw Error("User must be logged in to legacy service.");
- };
-
- /**
- * Given a folder insert folders and notes
- */
- var processFolder = function(folder){
- if(folder.foldersInside){
- recursion+=folder.foldersInside.length;//add our queue to the counter
-
- folder.foldersInside.forEach(function(childFolder){
- var parentFolderID = childFolder.parrentFolderID;
- if(parentFolderID) //keep it null if it is
- parentFolderID+=folderImportSuffix;
-
- storageService.database().put({_id:childFolder.id+folderImportSuffix,
- parentFolderID:parentFolderID,
- name:childFolder.name,
- type:"folder"});//TODO config folder factory
- processFolder(childFolder);
- });
- }
-
- if(folder.notesInside)
- folder.notesInside.forEach(function(note){
- storageService.database().put({_id:note.id,
- parentFolderID:note.folderID+folderImportSuffix,
- title:note.title,
- note:note.note,
- type:"note"});//TODO config note factory
- });
-
- if(--recursion===0)
- $rootScope.$emit("importComplete");
- };
-});
diff --git a/OpenNote/openNote/services/serverConfigService.js b/OpenNote/openNote/services/serverConfigService.js
deleted file mode 100644
index 16d790a..0000000
--- a/OpenNote/openNote/services/serverConfigService.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * @author - Jake Liscom
- * @project - OpenNote
- */
-
-/**
- * Server configuration service
- */
-openNote.service("serverConfigService", function ($http, $q, config, userService) {
- /**
- * @return - config object promise
- */
- this.getConfig = function(){
- if(!sessionStorage.serverConfig)//if we do not have it yet, request it
- return requestServerConfig();
-
- //make a quick promise
- var deferred = $q.defer();
- deferred.resolve(angular.fromJson(sessionStorage.serverConfig));
- return deferred.promise;
- };
-
- /**
- * Get server config list from server
- */
- var requestServerConfig = function(){
- return $http.get(config.servicePath() +"/config/").then(
- function(response){//Successful
- if(response.status==200){
- sessionStorage.serverConfig=angular.toJson(response.data);
- return response.data;
- }
- return false;
- },
- function(){
- return false;
- }
- );
- };
-
- //FIXME pull register again
-
- /**
- * @param dark - true if dark theme
- * @return - ckeditor config object
- */
- this.getEditorConfig = function(){
- var dark = config.isDarkTheme();
- return this.getConfig().then(function(data){
- var temp = {
- removePlugins : "newpage,save,templates,about,liststyle,tabletools,scayt,contextmenu", //remove some icons menu button
- //extraPlugins : "imagepaste",
- height : "400px",
- disableNativeSpellChecker : false
- };
-
- //style sheet
- if(dark){
- temp.contentsCss = "openNote/style/invert/dark/note.css";
- temp.skin = "moono.dark,../../openNote/style/dark/ckeditor/moono.dark/";
- }
- else
- temp.contentsCss = "openNote/style/invert/light/note.css";
-
- //configure the upload path if uploads are enabled
- if(data && data.uploadEnabled && userService.hasValidToken()){
- temp.filebrowserUploadUrl = config.servicePath()+"/file/"+"?token="+userService.getAPITokenObject().token;//FIXME
- temp.filebrowserImageUploadUrl = temp.filebrowserUploadUrl;
- }
- return temp;
- });
- };
-});
diff --git a/OpenNote/openNote/services/userService.js b/OpenNote/openNote/services/userService.js
deleted file mode 100644
index 4da69d0..0000000
--- a/OpenNote/openNote/services/userService.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * Connects the the rest service to get user details
- */
-openNote.service("userService", function ($http, $q, config) {
-
- /**
- * @return - raw token object
- */
- this.getAPITokenObject = function(){
- return angular.fromJson(sessionStorage.apiToken);
- };
-
- /**
- * tell httpd to use our token in requests
- */
- this.useAPITokenHeader = function(){
- document.cookie="token="+this.getAPITokenString()+"; path=/;"; //This is the download token, it is used for pulling files
- };
-
- /**
- * Stop using a token
- */
- this.destroyTokenHeader = function(){
- $http.delete(config.servicePath() +"/token/");//have the server delete it
-
- delete sessionStorage.apiToken;
- document.cookie = "token=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;";
- };
-
- /**
- * Is token valid?
- * @return - true if token is still valid
- */
- this.hasValidToken = function(){
- var tokenObject = this.getAPITokenObject();
- if(!tokenObject)
- return false;
-
- var tokenTime = tokenObject.expires.replace(" ","T")+"Z";//convert to ISO-8601 date and time in UTC
- return new Date().getTime()< new Date(tokenTime);//UTC time
- };
-
- /**
- * @return - the apiToken
- */
- this.getAPITokenString = function(){
- var tokenObject = this.getAPITokenObject();
- if(tokenObject)
- return tokenObject.token;
- return null;
- };
-
- /**
- * Get the username
- */
- this.getUsername = function(){
- var apiCredentials = JSON.parse(localStorage.getItem("apiCredentials"));
- if(apiCredentials)
- return apiCredentials.username;
- else
- return "";
- };
-
- /**
- * Checks is a user is available
- * @param userName - the username to check
- * @return - true if available, false if not
- */
- this.isAvailable = function(userName){
- return $http.get(config.servicePath() +"/user/"+userName).then(function(){
- throw "Error"; // Weirdly if we get a 2xx value its a failure
- },function(response){
- switch(response.status){
- case 302://we found it so its not available
- return false;
-
- case 404://could not find it so its available
- return true;
-
- default://there was a error
- throw "Error";
- }
- });
- };
-
- /**
- * Get api credentals object
- */
- var getApiCredentials = function(){
- var cred = localStorage.getItem("apiCredentials");
- if(cred)
- return JSON.parse(cred);
- return {};
- };
-
- /**
- * Logs the user in
- * @param userName - the username to login with
- * @param password - the password to login with
- * @return - true if successful, false if not
- */
- this.login = function(username, password){
- var apiCredentials = getApiCredentials();
-
- if(username && password){
- apiCredentials.username = username;
- apiCredentials.password = password;
- }
-
- var self = this;
- return $http.post(config.servicePath() +"/token/"+apiCredentials.username+"&"+apiCredentials.password).then(
- function(response){//Successful
- if(response.status==200){
- localStorage.setItem("apiCredentials", JSON.stringify(apiCredentials));
-
- if(response.data.token===null)
- throw "Invalid response from server";
-
- sessionStorage.apiToken=angular.toJson(response.data);
- self.useAPITokenHeader();//used by the resources implicitly
- return true;
- }
- },
- function(){
- return false;
- }
- );
- };
-
- /**
- * Registers the user
- * @param userName - the username to register with
- * @param password - the password to register with
- * @return - true if successful, false if not
- */
- this.register = function(username, password){
- var apiCredentials = getApiCredentials();
-
- if(username && password){
- apiCredentials.username = username;
- apiCredentials.password = password;
- }
-
-
- var self = this;
- return $http.post(config.servicePath() +"/user/"+apiCredentials.username+"&"+apiCredentials.password).then(
- function(response){//Successful
- if(response.status==200){
- localStorage.setItem("apiCredentials", JSON.stringify(apiCredentials));
-
- if(response.data.token===null)
- throw "Invalid response from server";
-
- sessionStorage.apiToken=angular.toJson(response.data);
- self.useAPITokenHeader();//used by the resources implicitly
- return true;
- }
- },
- function(){//non 200 response
- return false;
- });
- };
-
-});
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog.css
deleted file mode 100644
index d8f8cc2..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#151515;border:1px solid #4d4d4d;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #666;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_dialog_contents{background-color:#000;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #404040;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #000}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#a6a6a6;border:1px solid #404040;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#2b2b2b;background-image:-webkit-gradient(linear,left top,left bottom,from(#050505),to(#121212));background-image:-moz-linear-gradient(top,#050505,#121212);background-image:-webkit-linear-gradient(top,#050505,#121212);background-image:-o-linear-gradient(top,#050505,#121212);background-image:-ms-linear-gradient(top,#050505,#121212);background-image:linear-gradient(top,#050505,#121212);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000505fa',endColorstr='#001212ed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#141414;background:-moz-linear-gradient(top,#141414 0,#202020 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#141414),color-stop(100%,#202020));background:-webkit-linear-gradient(top,#141414 0,#202020 100%);background:-o-linear-gradient(top,#141414 0,#202020 100%);background:-ms-linear-gradient(top,#141414 0,#202020 100%);background:linear-gradient(to bottom,#141414 0,#202020 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#141414',endColorstr='#202020',GradientType=0)}a.cke_dialog_tab_selected{background:#000;color:#c7c7c7;border-bottom-color:#000;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#121212;background:-moz-linear-gradient(top,#121212 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#121212),color-stop(100%,#000));background:-webkit-linear-gradient(top,#121212 0,#000 100%);background:-o-linear-gradient(top,#121212 0,#000 100%);background:-ms-linear-gradient(top,#121212 0,#000 100%);background:linear-gradient(to bottom,#121212 0,#000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#121212',endColorstr='#000000',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#222;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #514c46;border-top-color:#5f5952}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #ec6008;border-top-color:#ec6d16}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#ccc;vertical-align:middle;cursor:pointer;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#616161;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#696969;outline:0;-moz-box-shadow:0 0 6px rgba(255,255,255,.4) inset;-webkit-box-shadow:0 0 6px rgba(255,255,255,.4) inset;box-shadow:0 0 6px rgba(255,255,255,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#000;text-shadow:0 -1px 0 #aa7cf3;border-color:#9d59f5 #9d59f5 #b26dff;background:#964ef4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#6528e8),to(#964ef4));background-image:-webkit-linear-gradient(top,#6528e8,#964ef4);background-image:-o-linear-gradient(top,#6528e8,#964ef4);background-image:linear-gradient(to bottom,#6528e8,#964ef4);background-image:-moz-linear-gradient(top,#6528e8,#964ef4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#00652817',endColorstr='#00964e0b')}a.cke_dialog_ui_button_ok:hover{border-color:#a466f6 #a466f6 #b87aff;background:#7741eb;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#7741eb),color-stop(100%,#a263f5));background:-webkit-linear-gradient(top,#7741eb 0,#a263f5 100%);background:-o-linear-gradient(top,#7741eb 0,#a263f5 100%);background:linear-gradient(to bottom,#7741eb 0,#a263f5 100%);background:-moz-linear-gradient(top,#7741eb 0,#a263f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7741eb',endColorstr='#a263f5',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #000}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #aa7cf3}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#a973f5}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#212121}.cke_dialog .cke_light_background{background-color:#141414}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge white;overflow:scroll;height:200px;width:300px;padding:2px;background-color:black}.cke_dialog .ImagePreviewBox table td{black-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;black-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#1b1b1b}.cke_dialog .FlashPreviewBox{black-space:normal;border:2px ridge white;overflow:auto;height:160px;width:390px;padding:2px;background-color:black}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:black;border:1px solid #514c46;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#5f5f5f}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#000;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#777}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#ec6008}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #969696}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie.css
deleted file mode 100644
index c785054..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#151515;border:1px solid #4d4d4d;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #666;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_dialog_contents{background-color:#000;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #404040;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #000}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#a6a6a6;border:1px solid #404040;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#2b2b2b;background-image:-webkit-gradient(linear,left top,left bottom,from(#050505),to(#121212));background-image:-moz-linear-gradient(top,#050505,#121212);background-image:-webkit-linear-gradient(top,#050505,#121212);background-image:-o-linear-gradient(top,#050505,#121212);background-image:-ms-linear-gradient(top,#050505,#121212);background-image:linear-gradient(top,#050505,#121212);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000505fa',endColorstr='#001212ed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#141414;background:-moz-linear-gradient(top,#141414 0,#202020 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#141414),color-stop(100%,#202020));background:-webkit-linear-gradient(top,#141414 0,#202020 100%);background:-o-linear-gradient(top,#141414 0,#202020 100%);background:-ms-linear-gradient(top,#141414 0,#202020 100%);background:linear-gradient(to bottom,#141414 0,#202020 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#141414',endColorstr='#202020',GradientType=0)}a.cke_dialog_tab_selected{background:#000;color:#c7c7c7;border-bottom-color:#000;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#121212;background:-moz-linear-gradient(top,#121212 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#121212),color-stop(100%,#000));background:-webkit-linear-gradient(top,#121212 0,#000 100%);background:-o-linear-gradient(top,#121212 0,#000 100%);background:-ms-linear-gradient(top,#121212 0,#000 100%);background:linear-gradient(to bottom,#121212 0,#000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#121212',endColorstr='#000000',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#222;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #514c46;border-top-color:#5f5952}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #ec6008;border-top-color:#ec6d16}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#ccc;vertical-align:middle;cursor:pointer;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#616161;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#696969;outline:0;-moz-box-shadow:0 0 6px rgba(255,255,255,.4) inset;-webkit-box-shadow:0 0 6px rgba(255,255,255,.4) inset;box-shadow:0 0 6px rgba(255,255,255,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#000;text-shadow:0 -1px 0 #aa7cf3;border-color:#9d59f5 #9d59f5 #b26dff;background:#964ef4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#6528e8),to(#964ef4));background-image:-webkit-linear-gradient(top,#6528e8,#964ef4);background-image:-o-linear-gradient(top,#6528e8,#964ef4);background-image:linear-gradient(to bottom,#6528e8,#964ef4);background-image:-moz-linear-gradient(top,#6528e8,#964ef4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#00652817',endColorstr='#00964e0b')}a.cke_dialog_ui_button_ok:hover{border-color:#a466f6 #a466f6 #b87aff;background:#7741eb;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#7741eb),color-stop(100%,#a263f5));background:-webkit-linear-gradient(top,#7741eb 0,#a263f5 100%);background:-o-linear-gradient(top,#7741eb 0,#a263f5 100%);background:linear-gradient(to bottom,#7741eb 0,#a263f5 100%);background:-moz-linear-gradient(top,#7741eb 0,#a263f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7741eb',endColorstr='#a263f5',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #000}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #aa7cf3}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#a973f5}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#212121}.cke_dialog .cke_light_background{background-color:#141414}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge white;overflow:scroll;height:200px;width:300px;padding:2px;background-color:black}.cke_dialog .ImagePreviewBox table td{black-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;black-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#1b1b1b}.cke_dialog .FlashPreviewBox{black-space:normal;border:2px ridge white;overflow:auto;height:160px;width:390px;padding:2px;background-color:black}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:black;border:1px solid #514c46;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#5f5f5f}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#000;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#777}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#ec6008}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #969696}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie7.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie7.css
deleted file mode 100644
index 0f6244e..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie7.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#151515;border:1px solid #4d4d4d;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #666;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_dialog_contents{background-color:#000;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #404040;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #000}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#a6a6a6;border:1px solid #404040;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#2b2b2b;background-image:-webkit-gradient(linear,left top,left bottom,from(#050505),to(#121212));background-image:-moz-linear-gradient(top,#050505,#121212);background-image:-webkit-linear-gradient(top,#050505,#121212);background-image:-o-linear-gradient(top,#050505,#121212);background-image:-ms-linear-gradient(top,#050505,#121212);background-image:linear-gradient(top,#050505,#121212);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000505fa',endColorstr='#001212ed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#141414;background:-moz-linear-gradient(top,#141414 0,#202020 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#141414),color-stop(100%,#202020));background:-webkit-linear-gradient(top,#141414 0,#202020 100%);background:-o-linear-gradient(top,#141414 0,#202020 100%);background:-ms-linear-gradient(top,#141414 0,#202020 100%);background:linear-gradient(to bottom,#141414 0,#202020 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#141414',endColorstr='#202020',GradientType=0)}a.cke_dialog_tab_selected{background:#000;color:#c7c7c7;border-bottom-color:#000;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#121212;background:-moz-linear-gradient(top,#121212 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#121212),color-stop(100%,#000));background:-webkit-linear-gradient(top,#121212 0,#000 100%);background:-o-linear-gradient(top,#121212 0,#000 100%);background:-ms-linear-gradient(top,#121212 0,#000 100%);background:linear-gradient(to bottom,#121212 0,#000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#121212',endColorstr='#000000',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#222;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #514c46;border-top-color:#5f5952}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #ec6008;border-top-color:#ec6d16}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#ccc;vertical-align:middle;cursor:pointer;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#616161;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#696969;outline:0;-moz-box-shadow:0 0 6px rgba(255,255,255,.4) inset;-webkit-box-shadow:0 0 6px rgba(255,255,255,.4) inset;box-shadow:0 0 6px rgba(255,255,255,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#000;text-shadow:0 -1px 0 #aa7cf3;border-color:#9d59f5 #9d59f5 #b26dff;background:#964ef4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#6528e8),to(#964ef4));background-image:-webkit-linear-gradient(top,#6528e8,#964ef4);background-image:-o-linear-gradient(top,#6528e8,#964ef4);background-image:linear-gradient(to bottom,#6528e8,#964ef4);background-image:-moz-linear-gradient(top,#6528e8,#964ef4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#00652817',endColorstr='#00964e0b')}a.cke_dialog_ui_button_ok:hover{border-color:#a466f6 #a466f6 #b87aff;background:#7741eb;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#7741eb),color-stop(100%,#a263f5));background:-webkit-linear-gradient(top,#7741eb 0,#a263f5 100%);background:-o-linear-gradient(top,#7741eb 0,#a263f5 100%);background:linear-gradient(to bottom,#7741eb 0,#a263f5 100%);background:-moz-linear-gradient(top,#7741eb 0,#a263f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7741eb',endColorstr='#a263f5',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #000}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #aa7cf3}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#a973f5}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#212121}.cke_dialog .cke_light_background{background-color:#141414}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge white;overflow:scroll;height:200px;width:300px;padding:2px;background-color:black}.cke_dialog .ImagePreviewBox table td{black-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;black-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#1b1b1b}.cke_dialog .FlashPreviewBox{black-space:normal;border:2px ridge white;overflow:auto;height:160px;width:390px;padding:2px;background-color:black}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:black;border:1px solid #514c46;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#5f5f5f}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#000;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#777}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#ec6008}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #969696}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #404040}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie8.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie8.css
deleted file mode 100644
index 56ee359..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_ie8.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#151515;border:1px solid #4d4d4d;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #666;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_dialog_contents{background-color:#000;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #404040;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #000}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#a6a6a6;border:1px solid #404040;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#2b2b2b;background-image:-webkit-gradient(linear,left top,left bottom,from(#050505),to(#121212));background-image:-moz-linear-gradient(top,#050505,#121212);background-image:-webkit-linear-gradient(top,#050505,#121212);background-image:-o-linear-gradient(top,#050505,#121212);background-image:-ms-linear-gradient(top,#050505,#121212);background-image:linear-gradient(top,#050505,#121212);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000505fa',endColorstr='#001212ed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#141414;background:-moz-linear-gradient(top,#141414 0,#202020 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#141414),color-stop(100%,#202020));background:-webkit-linear-gradient(top,#141414 0,#202020 100%);background:-o-linear-gradient(top,#141414 0,#202020 100%);background:-ms-linear-gradient(top,#141414 0,#202020 100%);background:linear-gradient(to bottom,#141414 0,#202020 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#141414',endColorstr='#202020',GradientType=0)}a.cke_dialog_tab_selected{background:#000;color:#c7c7c7;border-bottom-color:#000;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#121212;background:-moz-linear-gradient(top,#121212 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#121212),color-stop(100%,#000));background:-webkit-linear-gradient(top,#121212 0,#000 100%);background:-o-linear-gradient(top,#121212 0,#000 100%);background:-ms-linear-gradient(top,#121212 0,#000 100%);background:linear-gradient(to bottom,#121212 0,#000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#121212',endColorstr='#000000',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#222;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #514c46;border-top-color:#5f5952}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #ec6008;border-top-color:#ec6d16}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#ccc;vertical-align:middle;cursor:pointer;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#616161;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#696969;outline:0;-moz-box-shadow:0 0 6px rgba(255,255,255,.4) inset;-webkit-box-shadow:0 0 6px rgba(255,255,255,.4) inset;box-shadow:0 0 6px rgba(255,255,255,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#000;text-shadow:0 -1px 0 #aa7cf3;border-color:#9d59f5 #9d59f5 #b26dff;background:#964ef4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#6528e8),to(#964ef4));background-image:-webkit-linear-gradient(top,#6528e8,#964ef4);background-image:-o-linear-gradient(top,#6528e8,#964ef4);background-image:linear-gradient(to bottom,#6528e8,#964ef4);background-image:-moz-linear-gradient(top,#6528e8,#964ef4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#00652817',endColorstr='#00964e0b')}a.cke_dialog_ui_button_ok:hover{border-color:#a466f6 #a466f6 #b87aff;background:#7741eb;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#7741eb),color-stop(100%,#a263f5));background:-webkit-linear-gradient(top,#7741eb 0,#a263f5 100%);background:-o-linear-gradient(top,#7741eb 0,#a263f5 100%);background:linear-gradient(to bottom,#7741eb 0,#a263f5 100%);background:-moz-linear-gradient(top,#7741eb 0,#a263f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7741eb',endColorstr='#a263f5',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #000}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #aa7cf3}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#a973f5}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#212121}.cke_dialog .cke_light_background{background-color:#141414}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge white;overflow:scroll;height:200px;width:300px;padding:2px;background-color:black}.cke_dialog .ImagePreviewBox table td{black-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;black-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#1b1b1b}.cke_dialog .FlashPreviewBox{black-space:normal;border:2px ridge white;overflow:auto;height:160px;width:390px;padding:2px;background-color:black}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:black;border:1px solid #514c46;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#5f5f5f}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#000;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#777}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#ec6008}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #969696}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_iequirks.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_iequirks.css
deleted file mode 100644
index 6055fdf..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_iequirks.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#151515;border:1px solid #4d4d4d;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #666;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_dialog_contents{background-color:#000;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #404040;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #000}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#a6a6a6;border:1px solid #404040;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#2b2b2b;background-image:-webkit-gradient(linear,left top,left bottom,from(#050505),to(#121212));background-image:-moz-linear-gradient(top,#050505,#121212);background-image:-webkit-linear-gradient(top,#050505,#121212);background-image:-o-linear-gradient(top,#050505,#121212);background-image:-ms-linear-gradient(top,#050505,#121212);background-image:linear-gradient(top,#050505,#121212);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000505fa',endColorstr='#001212ed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#141414;background:-moz-linear-gradient(top,#141414 0,#202020 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#141414),color-stop(100%,#202020));background:-webkit-linear-gradient(top,#141414 0,#202020 100%);background:-o-linear-gradient(top,#141414 0,#202020 100%);background:-ms-linear-gradient(top,#141414 0,#202020 100%);background:linear-gradient(to bottom,#141414 0,#202020 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#141414',endColorstr='#202020',GradientType=0)}a.cke_dialog_tab_selected{background:#000;color:#c7c7c7;border-bottom-color:#000;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#121212;background:-moz-linear-gradient(top,#121212 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#121212),color-stop(100%,#000));background:-webkit-linear-gradient(top,#121212 0,#000 100%);background:-o-linear-gradient(top,#121212 0,#000 100%);background:-ms-linear-gradient(top,#121212 0,#000 100%);background:linear-gradient(to bottom,#121212 0,#000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#121212',endColorstr='#000000',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#222;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #514c46;border-top-color:#5f5952}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #ec6008;border-top-color:#ec6d16}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#ccc;vertical-align:middle;cursor:pointer;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#616161;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#696969;outline:0;-moz-box-shadow:0 0 6px rgba(255,255,255,.4) inset;-webkit-box-shadow:0 0 6px rgba(255,255,255,.4) inset;box-shadow:0 0 6px rgba(255,255,255,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#000;text-shadow:0 -1px 0 #aa7cf3;border-color:#9d59f5 #9d59f5 #b26dff;background:#964ef4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#6528e8),to(#964ef4));background-image:-webkit-linear-gradient(top,#6528e8,#964ef4);background-image:-o-linear-gradient(top,#6528e8,#964ef4);background-image:linear-gradient(to bottom,#6528e8,#964ef4);background-image:-moz-linear-gradient(top,#6528e8,#964ef4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#00652817',endColorstr='#00964e0b')}a.cke_dialog_ui_button_ok:hover{border-color:#a466f6 #a466f6 #b87aff;background:#7741eb;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#7741eb),color-stop(100%,#a263f5));background:-webkit-linear-gradient(top,#7741eb 0,#a263f5 100%);background:-o-linear-gradient(top,#7741eb 0,#a263f5 100%);background:linear-gradient(to bottom,#7741eb 0,#a263f5 100%);background:-moz-linear-gradient(top,#7741eb 0,#a263f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7741eb',endColorstr='#a263f5',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #000}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #aa7cf3}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#a973f5}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#212121}.cke_dialog .cke_light_background{background-color:#141414}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge white;overflow:scroll;height:200px;width:300px;padding:2px;background-color:black}.cke_dialog .ImagePreviewBox table td{black-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;black-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#1b1b1b}.cke_dialog .FlashPreviewBox{black-space:normal;border:2px ridge white;overflow:auto;height:160px;width:390px;padding:2px;background-color:black}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:black;border:1px solid #514c46;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#5f5f5f}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#000;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#777}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#ec6008}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #969696}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_opera.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_opera.css
deleted file mode 100644
index efc8c59..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/dialog_opera.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#151515;border:1px solid #4d4d4d;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #666;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_dialog_contents{background-color:#000;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #404040;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #000}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#a6a6a6;border:1px solid #404040;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#2b2b2b;background-image:-webkit-gradient(linear,left top,left bottom,from(#050505),to(#121212));background-image:-moz-linear-gradient(top,#050505,#121212);background-image:-webkit-linear-gradient(top,#050505,#121212);background-image:-o-linear-gradient(top,#050505,#121212);background-image:-ms-linear-gradient(top,#050505,#121212);background-image:linear-gradient(top,#050505,#121212);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000505fa',endColorstr='#001212ed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#141414;background:-moz-linear-gradient(top,#141414 0,#202020 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#141414),color-stop(100%,#202020));background:-webkit-linear-gradient(top,#141414 0,#202020 100%);background:-o-linear-gradient(top,#141414 0,#202020 100%);background:-ms-linear-gradient(top,#141414 0,#202020 100%);background:linear-gradient(to bottom,#141414 0,#202020 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#141414',endColorstr='#202020',GradientType=0)}a.cke_dialog_tab_selected{background:#000;color:#c7c7c7;border-bottom-color:#000;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#121212;background:-moz-linear-gradient(top,#121212 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#121212),color-stop(100%,#000));background:-webkit-linear-gradient(top,#121212 0,#000 100%);background:-o-linear-gradient(top,#121212 0,#000 100%);background:-ms-linear-gradient(top,#121212 0,#000 100%);background:linear-gradient(to bottom,#121212 0,#000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#121212',endColorstr='#000000',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#222;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #514c46;border-top-color:#5f5952}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #ec6008;border-top-color:#ec6d16}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#ccc;vertical-align:middle;cursor:pointer;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#616161;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#696969;outline:0;-moz-box-shadow:0 0 6px rgba(255,255,255,.4) inset;-webkit-box-shadow:0 0 6px rgba(255,255,255,.4) inset;box-shadow:0 0 6px rgba(255,255,255,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#000;text-shadow:0 -1px 0 #aa7cf3;border-color:#9d59f5 #9d59f5 #b26dff;background:#964ef4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#6528e8),to(#964ef4));background-image:-webkit-linear-gradient(top,#6528e8,#964ef4);background-image:-o-linear-gradient(top,#6528e8,#964ef4);background-image:linear-gradient(to bottom,#6528e8,#964ef4);background-image:-moz-linear-gradient(top,#6528e8,#964ef4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#00652817',endColorstr='#00964e0b')}a.cke_dialog_ui_button_ok:hover{border-color:#a466f6 #a466f6 #b87aff;background:#7741eb;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#7741eb),color-stop(100%,#a263f5));background:-webkit-linear-gradient(top,#7741eb 0,#a263f5 100%);background:-o-linear-gradient(top,#7741eb 0,#a263f5 100%);background:linear-gradient(to bottom,#7741eb 0,#a263f5 100%);background:-moz-linear-gradient(top,#7741eb 0,#a263f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7741eb',endColorstr='#a263f5',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #000}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #aa7cf3}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#a973f5}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#000;border:1px solid #363330;border-top-color:#514c46;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 2px rgba(255,255,255,.15) inset;box-shadow:0 1px 2px rgba(255,255,255,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#212121}.cke_dialog .cke_light_background{background-color:#141414}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge white;overflow:scroll;height:200px;width:300px;padding:2px;background-color:black}.cke_dialog .ImagePreviewBox table td{black-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;black-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#1b1b1b}.cke_dialog .FlashPreviewBox{black-space:normal;border:2px ridge white;overflow:auto;height:160px;width:390px;padding:2px;background-color:black}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:black;border:1px solid #514c46;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#5f5f5f}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#000;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#777}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#ec6008}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #969696}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_footer{display:block;height:38px}.cke_ltr .cke_dialog_footer>*{float:right}.cke_rtl .cke_dialog_footer>*{float:left}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor.css
deleted file mode 100644
index 02af5d4..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#fff;text-align:left;black-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{black-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #1f201c}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #494949;padding:0;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#000;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #494949;padding:6px 8px 2px;black-space:normal;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_float .cke_top{border:1px solid #494949;border-bottom-color:#666}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #999 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.3);box-shadow:0 1px 0 rgba(0,0,0,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #5a5a5a;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#000;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;black-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #000;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#fff}*:first-child+html .cke_panel_listItem a{color:#fff}.cke_panel_listItem.cke_selected a{border:1px solid #212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;black-space:nowrap;margin:0;padding:4px 6px;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #494949;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#fff}span.cke_colorbox{width:10px;height:10px;border:#7f7f7f 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#000 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#494949 1px solid;background-color:#1a1a1a}a.cke_colorauto,a.cke_colormore{border:#000 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#494949 1px solid;background-color:#1a1a1a}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid white;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(255,255,255,.3) inset;-webkit-box-shadow:0 0 1px rgba(255,255,255,.3) inset;box-shadow:0 0 1px rgba(255,255,255,.3) inset;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#3f3f3f;background-color:rgba(255,255,255,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(0,0,0,.5);-moz-box-shadow:1px 0 1px rgba(0,0,0,.5);box-shadow:1px 0 1px rgba(0,0,0,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:-1px 0 1px rgba(0,0,0,.1);box-shadow:-1px 0 1px rgba(0,0,0,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_toolbox_collapser:hover{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #b8b8b8;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#b8b8b8}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#2c2c2c;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#282728;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#2f2d2f}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#100f10}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#2c2c2c;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #888;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#b3b3b3;text-shadow:0 1px 0 #000;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#404040;color:#ccc;text-shadow:0 1px 0 rgba(0,0,0,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);-webkit-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{color:#fff;font-family:'Courier New',Monospace;font-size:small;background-color:#000;black-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#000}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__bidiltr_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_button__bidirtl_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__bgcolor_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_button__textcolor_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_button__creatediv_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__find_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__replace_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_button__flash_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__button_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__checkbox_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_button__form_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__hiddenfield_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__imagebutton_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__radio_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1376px !important;}.cke_ltr .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1408px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -1440px !important;}.cke_button__iframe_icon{background: url(icons.png) no-repeat 0 -1472px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -1504px !important;}.cke_button__smiley_icon{background: url(icons.png) no-repeat 0 -1536px !important;}.cke_button__justifyblock_icon{background: url(icons.png) no-repeat 0 -1568px !important;}.cke_button__justifycenter_icon{background: url(icons.png) no-repeat 0 -1600px !important;}.cke_button__justifyleft_icon{background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__justifyright_icon{background: url(icons.png) no-repeat 0 -1664px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1696px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1728px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -1760px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -1792px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -1824px !important;}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1856px !important;}.cke_ltr .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1888px !important;}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1952px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -1984px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -2016px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2048px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2080px !important;}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2112px !important;}.cke_ltr .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2144px !important;}.cke_button__print_icon{background: url(icons.png) no-repeat 0 -2176px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -2208px !important;}.cke_button__save_icon{background: url(icons.png) no-repeat 0 -2240px !important;}.cke_button__selectall_icon{background: url(icons.png) no-repeat 0 -2272px !important;}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2304px !important;}.cke_ltr .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2336px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2368px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2400px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -2432px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -2464px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -2496px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2528px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2560px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2592px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2624px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -2656px !important;}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_gecko.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_gecko.css
deleted file mode 100644
index 5da6448..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_gecko.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#fff;text-align:left;black-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{black-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #1f201c}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #494949;padding:0;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#000;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #494949;padding:6px 8px 2px;black-space:normal;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_float .cke_top{border:1px solid #494949;border-bottom-color:#666}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #999 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.3);box-shadow:0 1px 0 rgba(0,0,0,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #5a5a5a;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#000;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;black-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #000;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#fff}*:first-child+html .cke_panel_listItem a{color:#fff}.cke_panel_listItem.cke_selected a{border:1px solid #212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;black-space:nowrap;margin:0;padding:4px 6px;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #494949;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#fff}span.cke_colorbox{width:10px;height:10px;border:#7f7f7f 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#000 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#494949 1px solid;background-color:#1a1a1a}a.cke_colorauto,a.cke_colormore{border:#000 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#494949 1px solid;background-color:#1a1a1a}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid white;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(255,255,255,.3) inset;-webkit-box-shadow:0 0 1px rgba(255,255,255,.3) inset;box-shadow:0 0 1px rgba(255,255,255,.3) inset;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#3f3f3f;background-color:rgba(255,255,255,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(0,0,0,.5);-moz-box-shadow:1px 0 1px rgba(0,0,0,.5);box-shadow:1px 0 1px rgba(0,0,0,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:-1px 0 1px rgba(0,0,0,.1);box-shadow:-1px 0 1px rgba(0,0,0,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_toolbox_collapser:hover{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #b8b8b8;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#b8b8b8}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#2c2c2c;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#282728;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#2f2d2f}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#100f10}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#2c2c2c;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #888;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#b3b3b3;text-shadow:0 1px 0 #000;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#404040;color:#ccc;text-shadow:0 1px 0 rgba(0,0,0,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);-webkit-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{color:#fff;font-family:'Courier New',Monospace;font-size:small;background-color:#000;black-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#000}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__bidiltr_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_button__bidirtl_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__bgcolor_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_button__textcolor_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_button__creatediv_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__find_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__replace_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_button__flash_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__button_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__checkbox_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_button__form_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__hiddenfield_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__imagebutton_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__radio_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1376px !important;}.cke_ltr .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1408px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -1440px !important;}.cke_button__iframe_icon{background: url(icons.png) no-repeat 0 -1472px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -1504px !important;}.cke_button__smiley_icon{background: url(icons.png) no-repeat 0 -1536px !important;}.cke_button__justifyblock_icon{background: url(icons.png) no-repeat 0 -1568px !important;}.cke_button__justifycenter_icon{background: url(icons.png) no-repeat 0 -1600px !important;}.cke_button__justifyleft_icon{background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__justifyright_icon{background: url(icons.png) no-repeat 0 -1664px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1696px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1728px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -1760px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -1792px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -1824px !important;}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1856px !important;}.cke_ltr .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1888px !important;}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1952px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -1984px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -2016px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2048px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2080px !important;}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2112px !important;}.cke_ltr .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2144px !important;}.cke_button__print_icon{background: url(icons.png) no-repeat 0 -2176px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -2208px !important;}.cke_button__save_icon{background: url(icons.png) no-repeat 0 -2240px !important;}.cke_button__selectall_icon{background: url(icons.png) no-repeat 0 -2272px !important;}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2304px !important;}.cke_ltr .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2336px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2368px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2400px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -2432px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -2464px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -2496px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2528px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2560px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2592px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2624px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -2656px !important;}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie.css
deleted file mode 100644
index bef6b2b..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#fff;text-align:left;black-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{black-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #1f201c}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #494949;padding:0;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#000;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #494949;padding:6px 8px 2px;black-space:normal;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_float .cke_top{border:1px solid #494949;border-bottom-color:#666}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #999 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.3);box-shadow:0 1px 0 rgba(0,0,0,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #5a5a5a;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#000;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;black-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #000;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#fff}*:first-child+html .cke_panel_listItem a{color:#fff}.cke_panel_listItem.cke_selected a{border:1px solid #212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;black-space:nowrap;margin:0;padding:4px 6px;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #494949;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#fff}span.cke_colorbox{width:10px;height:10px;border:#7f7f7f 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#000 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#494949 1px solid;background-color:#1a1a1a}a.cke_colorauto,a.cke_colormore{border:#000 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#494949 1px solid;background-color:#1a1a1a}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid white;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(255,255,255,.3) inset;-webkit-box-shadow:0 0 1px rgba(255,255,255,.3) inset;box-shadow:0 0 1px rgba(255,255,255,.3) inset;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#3f3f3f;background-color:rgba(255,255,255,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(0,0,0,.5);-moz-box-shadow:1px 0 1px rgba(0,0,0,.5);box-shadow:1px 0 1px rgba(0,0,0,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:-1px 0 1px rgba(0,0,0,.1);box-shadow:-1px 0 1px rgba(0,0,0,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_toolbox_collapser:hover{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #b8b8b8;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#b8b8b8}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#2c2c2c;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#282728;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#2f2d2f}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#100f10}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#2c2c2c;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #888;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#b3b3b3;text-shadow:0 1px 0 #000;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#404040;color:#ccc;text-shadow:0 1px 0 rgba(0,0,0,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);-webkit-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{color:#fff;font-family:'Courier New',Monospace;font-size:small;background-color:#000;black-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#000}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff0000FF,endColorstr=#ff0000FF)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #595959}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__bidiltr_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_button__bidirtl_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__bgcolor_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_button__textcolor_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_button__creatediv_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__find_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__replace_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_button__flash_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__button_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__checkbox_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_button__form_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__hiddenfield_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__imagebutton_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__radio_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1376px !important;}.cke_ltr .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1408px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -1440px !important;}.cke_button__iframe_icon{background: url(icons.png) no-repeat 0 -1472px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -1504px !important;}.cke_button__smiley_icon{background: url(icons.png) no-repeat 0 -1536px !important;}.cke_button__justifyblock_icon{background: url(icons.png) no-repeat 0 -1568px !important;}.cke_button__justifycenter_icon{background: url(icons.png) no-repeat 0 -1600px !important;}.cke_button__justifyleft_icon{background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__justifyright_icon{background: url(icons.png) no-repeat 0 -1664px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1696px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1728px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -1760px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -1792px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -1824px !important;}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1856px !important;}.cke_ltr .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1888px !important;}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1952px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -1984px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -2016px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2048px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2080px !important;}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2112px !important;}.cke_ltr .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2144px !important;}.cke_button__print_icon{background: url(icons.png) no-repeat 0 -2176px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -2208px !important;}.cke_button__save_icon{background: url(icons.png) no-repeat 0 -2240px !important;}.cke_button__selectall_icon{background: url(icons.png) no-repeat 0 -2272px !important;}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2304px !important;}.cke_ltr .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2336px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2368px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2400px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -2432px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -2464px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -2496px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2528px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2560px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2592px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2624px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -2656px !important;}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie7.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie7.css
deleted file mode 100644
index 8ad73f8..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie7.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#fff;text-align:left;black-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{black-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #1f201c}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #494949;padding:0;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#000;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #494949;padding:6px 8px 2px;black-space:normal;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_float .cke_top{border:1px solid #494949;border-bottom-color:#666}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #999 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.3);box-shadow:0 1px 0 rgba(0,0,0,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #5a5a5a;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#000;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;black-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #000;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#fff}*:first-child+html .cke_panel_listItem a{color:#fff}.cke_panel_listItem.cke_selected a{border:1px solid #212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;black-space:nowrap;margin:0;padding:4px 6px;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #494949;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#fff}span.cke_colorbox{width:10px;height:10px;border:#7f7f7f 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#000 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#494949 1px solid;background-color:#1a1a1a}a.cke_colorauto,a.cke_colormore{border:#000 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#494949 1px solid;background-color:#1a1a1a}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid white;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(255,255,255,.3) inset;-webkit-box-shadow:0 0 1px rgba(255,255,255,.3) inset;box-shadow:0 0 1px rgba(255,255,255,.3) inset;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#3f3f3f;background-color:rgba(255,255,255,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(0,0,0,.5);-moz-box-shadow:1px 0 1px rgba(0,0,0,.5);box-shadow:1px 0 1px rgba(0,0,0,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:-1px 0 1px rgba(0,0,0,.1);box-shadow:-1px 0 1px rgba(0,0,0,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_toolbox_collapser:hover{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #b8b8b8;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#b8b8b8}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#2c2c2c;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#282728;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#2f2d2f}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#100f10}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#2c2c2c;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #888;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#b3b3b3;text-shadow:0 1px 0 #000;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#404040;color:#ccc;text-shadow:0 1px 0 rgba(0,0,0,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);-webkit-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{color:#fff;font-family:'Courier New',Monospace;font-size:small;background-color:#000;black-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#000}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff0000FF,endColorstr=#ff0000FF)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #595959}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#3f3f3f}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__bidiltr_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_button__bidirtl_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__bgcolor_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_button__textcolor_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_button__creatediv_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__find_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__replace_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_button__flash_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__button_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__checkbox_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_button__form_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__hiddenfield_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__imagebutton_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__radio_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1376px !important;}.cke_ltr .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1408px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -1440px !important;}.cke_button__iframe_icon{background: url(icons.png) no-repeat 0 -1472px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -1504px !important;}.cke_button__smiley_icon{background: url(icons.png) no-repeat 0 -1536px !important;}.cke_button__justifyblock_icon{background: url(icons.png) no-repeat 0 -1568px !important;}.cke_button__justifycenter_icon{background: url(icons.png) no-repeat 0 -1600px !important;}.cke_button__justifyleft_icon{background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__justifyright_icon{background: url(icons.png) no-repeat 0 -1664px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1696px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1728px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -1760px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -1792px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -1824px !important;}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1856px !important;}.cke_ltr .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1888px !important;}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1952px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -1984px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -2016px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2048px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2080px !important;}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2112px !important;}.cke_ltr .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2144px !important;}.cke_button__print_icon{background: url(icons.png) no-repeat 0 -2176px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -2208px !important;}.cke_button__save_icon{background: url(icons.png) no-repeat 0 -2240px !important;}.cke_button__selectall_icon{background: url(icons.png) no-repeat 0 -2272px !important;}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2304px !important;}.cke_ltr .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2336px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2368px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2400px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -2432px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -2464px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -2496px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2528px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2560px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2592px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2624px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -2656px !important;}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie8.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie8.css
deleted file mode 100644
index 0e1f1cf..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_ie8.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#fff;text-align:left;black-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{black-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #1f201c}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #494949;padding:0;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#000;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #494949;padding:6px 8px 2px;black-space:normal;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_float .cke_top{border:1px solid #494949;border-bottom-color:#666}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #999 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.3);box-shadow:0 1px 0 rgba(0,0,0,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #5a5a5a;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#000;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;black-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #000;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#fff}*:first-child+html .cke_panel_listItem a{color:#fff}.cke_panel_listItem.cke_selected a{border:1px solid #212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;black-space:nowrap;margin:0;padding:4px 6px;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #494949;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#fff}span.cke_colorbox{width:10px;height:10px;border:#7f7f7f 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#000 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#494949 1px solid;background-color:#1a1a1a}a.cke_colorauto,a.cke_colormore{border:#000 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#494949 1px solid;background-color:#1a1a1a}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid white;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(255,255,255,.3) inset;-webkit-box-shadow:0 0 1px rgba(255,255,255,.3) inset;box-shadow:0 0 1px rgba(255,255,255,.3) inset;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#3f3f3f;background-color:rgba(255,255,255,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(0,0,0,.5);-moz-box-shadow:1px 0 1px rgba(0,0,0,.5);box-shadow:1px 0 1px rgba(0,0,0,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:-1px 0 1px rgba(0,0,0,.1);box-shadow:-1px 0 1px rgba(0,0,0,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_toolbox_collapser:hover{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #b8b8b8;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#b8b8b8}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#2c2c2c;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#282728;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#2f2d2f}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#100f10}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#2c2c2c;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #888;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#b3b3b3;text-shadow:0 1px 0 #000;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#404040;color:#ccc;text-shadow:0 1px 0 rgba(0,0,0,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);-webkit-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{color:#fff;font-family:'Courier New',Monospace;font-size:small;background-color:#000;black-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#000}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff0000FF,endColorstr=#ff0000FF)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #595959}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__bidiltr_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_button__bidirtl_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__bgcolor_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_button__textcolor_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_button__creatediv_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__find_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__replace_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_button__flash_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__button_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__checkbox_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_button__form_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__hiddenfield_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__imagebutton_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__radio_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1376px !important;}.cke_ltr .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1408px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -1440px !important;}.cke_button__iframe_icon{background: url(icons.png) no-repeat 0 -1472px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -1504px !important;}.cke_button__smiley_icon{background: url(icons.png) no-repeat 0 -1536px !important;}.cke_button__justifyblock_icon{background: url(icons.png) no-repeat 0 -1568px !important;}.cke_button__justifycenter_icon{background: url(icons.png) no-repeat 0 -1600px !important;}.cke_button__justifyleft_icon{background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__justifyright_icon{background: url(icons.png) no-repeat 0 -1664px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1696px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1728px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -1760px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -1792px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -1824px !important;}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1856px !important;}.cke_ltr .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1888px !important;}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1952px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -1984px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -2016px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2048px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2080px !important;}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2112px !important;}.cke_ltr .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2144px !important;}.cke_button__print_icon{background: url(icons.png) no-repeat 0 -2176px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -2208px !important;}.cke_button__save_icon{background: url(icons.png) no-repeat 0 -2240px !important;}.cke_button__selectall_icon{background: url(icons.png) no-repeat 0 -2272px !important;}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2304px !important;}.cke_ltr .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2336px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2368px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2400px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -2432px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -2464px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -2496px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2528px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2560px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2592px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2624px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -2656px !important;}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_iequirks.css b/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_iequirks.css
deleted file mode 100644
index a0a6ee1..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/editor_iequirks.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#fff;text-align:left;black-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{black-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #1f201c}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #494949;padding:0;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#000;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #494949;padding:6px 8px 2px;black-space:normal;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_float .cke_top{border:1px solid #494949;border-bottom-color:#666}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #404040;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#302e30));background-image:-moz-linear-gradient(top,#141414,#302e30);background-image:-webkit-linear-gradient(top,#141414,#302e30);background-image:-o-linear-gradient(top,#141414,#302e30);background-image:-ms-linear-gradient(top,#141414,#302e30);background-image:linear-gradient(top,#141414,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#001414eb',endColorstr='#302e30')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #999 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.3);box-shadow:0 1px 0 rgba(0,0,0,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #5a5a5a;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#000;border:1px solid #494949;border-bottom-color:#666;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(255,255,255,.15);-webkit-box-shadow:0 0 3px rgba(255,255,255,.15);box-shadow:0 0 3px rgba(255,255,255,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;black-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #000;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#fff}*:first-child+html .cke_panel_listItem a{color:#fff}.cke_panel_listItem.cke_selected a{border:1px solid #212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#212121;background-color:#0d0d0d;-moz-box-shadow:0 0 2px rgba(255,255,255,.1) inset;-webkit-box-shadow:0 0 2px rgba(255,255,255,.1) inset;box-shadow:0 0 2px rgba(255,255,255,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;black-space:nowrap;margin:0;padding:4px 6px;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.75);border-bottom:1px solid #494949;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #000 inset;-webkit-box-shadow:0 1px 0 #000 inset;box-shadow:0 1px 0 #000 inset;background:#302e30;background-image:-webkit-gradient(linear,left top,left bottom,from(#0a0a0a),to(#302e30));background-image:-moz-linear-gradient(top,#0a0a0a,#302e30);background-image:-webkit-linear-gradient(top,#0a0a0a,#302e30);background-image:-o-linear-gradient(top,#0a0a0a,#302e30);background-image:-ms-linear-gradient(top,#0a0a0a,#302e30);background-image:linear-gradient(top,#0a0a0a,#302e30);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000a0af5',endColorstr='#00302ecf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#fff}span.cke_colorbox{width:10px;height:10px;border:#7f7f7f 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#000 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#494949 1px solid;background-color:#1a1a1a}a.cke_colorauto,a.cke_colormore{border:#000 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#494949 1px solid;background-color:#1a1a1a}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid white;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 5px rgba(255,255,255,.6) inset,0 1px 0 rgba(255,255,255,.2);background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(255,255,255,.3) inset;-webkit-box-shadow:0 0 1px rgba(255,255,255,.3) inset;box-shadow:0 0 1px rgba(255,255,255,.3) inset;background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#3f3f3f;background-color:rgba(255,255,255,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(0,0,0,.5);-moz-box-shadow:1px 0 1px rgba(0,0,0,.5);box-shadow:1px 0 1px rgba(0,0,0,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(0,0,0,.1);-moz-box-shadow:-1px 0 1px rgba(0,0,0,.1);box-shadow:-1px 0 1px rgba(0,0,0,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_toolbox_collapser:hover{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #b8b8b8;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#b8b8b8}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#2c2c2c;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#282728;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#2f2d2f}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#100f10}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#2c2c2c;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #595959;border-bottom-color:#686868;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.15) inset,0 1px 0 rgba(0,0,0,.15) inset;background:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#000),to(#1b1b1b));background-image:-moz-linear-gradient(top,#000,#1b1b1b);background-image:-webkit-linear-gradient(top,#000,#1b1b1b);background-image:-o-linear-gradient(top,#000,#1b1b1b);background-image:-ms-linear-gradient(top,#000,#1b1b1b);background-image:linear-gradient(top,#000,#1b1b1b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000000ff',endColorstr='#001b1be4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#333;background-image:-webkit-gradient(linear,left top,left bottom,from(#0d0d0d),to(#333));background-image:-moz-linear-gradient(top,#0d0d0d,#333);background-image:-webkit-linear-gradient(top,#0d0d0d,#333);background-image:-o-linear-gradient(top,#0d0d0d,#333);background-image:-ms-linear-gradient(top,#0d0d0d,#333);background-image:linear-gradient(top,#0d0d0d,#333);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#000d0df2',endColorstr='#003333cc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #888;-moz-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;box-shadow:0 1px 0 rgba(0,0,0,.5),0 1px 5px rgba(255,255,255,.6) inset;background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#353535));background-image:-moz-linear-gradient(top,#555,#353535);background-image:-webkit-linear-gradient(top,#555,#353535);background-image:-o-linear-gradient(top,#555,#353535);background-image:-ms-linear-gradient(top,#555,#353535);background-image:linear-gradient(top,#555,#353535);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#005555aa',endColorstr='#003535ca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2);box-shadow:0 1px 6px rgba(255,255,255,.7) inset,0 1px 0 rgba(255,255,255,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#b8b8b8;text-shadow:0 1px 0 rgba(0,0,0,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #b8b8b8}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#b3b3b3;text-shadow:0 1px 0 #000;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#404040;color:#ccc;text-shadow:0 1px 0 rgba(0,0,0,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);-webkit-box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5);box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{color:#fff;font-family:'Courier New',Monospace;font-size:small;background-color:#000;black-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#000}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff0000FF,endColorstr=#ff0000FF)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #595959}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{black-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__bidiltr_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_button__bidirtl_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__bgcolor_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_button__textcolor_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__templates_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_button__creatediv_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__find_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__replace_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_button__flash_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__button_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__checkbox_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_button__form_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__hiddenfield_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__imagebutton_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__radio_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__select_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__textarea_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1376px !important;}.cke_ltr .cke_button__textfield_icon{background: url(icons.png) no-repeat 0 -1408px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -1440px !important;}.cke_button__iframe_icon{background: url(icons.png) no-repeat 0 -1472px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -1504px !important;}.cke_button__smiley_icon{background: url(icons.png) no-repeat 0 -1536px !important;}.cke_button__justifyblock_icon{background: url(icons.png) no-repeat 0 -1568px !important;}.cke_button__justifycenter_icon{background: url(icons.png) no-repeat 0 -1600px !important;}.cke_button__justifyleft_icon{background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__justifyright_icon{background: url(icons.png) no-repeat 0 -1664px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1696px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -1728px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -1760px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -1792px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -1824px !important;}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1856px !important;}.cke_ltr .cke_button__newpage_icon{background: url(icons.png) no-repeat 0 -1888px !important;}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__pagebreak_icon{background: url(icons.png) no-repeat 0 -1952px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -1984px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -2016px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2048px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -2080px !important;}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2112px !important;}.cke_ltr .cke_button__preview_icon{background: url(icons.png) no-repeat 0 -2144px !important;}.cke_button__print_icon{background: url(icons.png) no-repeat 0 -2176px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -2208px !important;}.cke_button__save_icon{background: url(icons.png) no-repeat 0 -2240px !important;}.cke_button__selectall_icon{background: url(icons.png) no-repeat 0 -2272px !important;}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2304px !important;}.cke_ltr .cke_button__showblocks_icon{background: url(icons.png) no-repeat 0 -2336px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2368px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -2400px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -2432px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -2464px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -2496px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2528px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -2560px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2592px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -2624px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -2656px !important;}
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/icons.png b/OpenNote/openNote/style/dark/ckeditor/moono.dark/icons.png
deleted file mode 100644
index ebf1e08c8ab4b18593999e3813c822c72b277af3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 23655
zcmZs?1yoht8ZNvxAR*ly(jAI)v+0sXK}t$#q`TRObV`GPv~-t%ASocy4N}tGclv$j
zoPUh}UIwrW*4}HbIp6oG8TmwA0sB71eF%cEl@#Gx;1&;p?gyfyf_tCVYVE)chLhsc
z*ARqB`1c0}rDu|XztDIoEBoY$jiamMYa2%=Iwe_IIwu!LtCx0`5acI=|9=xrYkXSD{%BmVhYe&aQQGBHNI1sB)h6aBzq^IlK
z(ki!9(0xWH2oJr=;=$`11{ieiFDAx8-;UM_!92$>(V=#=jCNkCh&$XZnRiC8z))Db
zYrK#OdLR)bWSG@`pkExQj;v5R@BF49@oG#&Za#Y-mUzrWVJ9YpV_Qj^5mS<#uhj*hvb4mR$Wu
zZaI0XC;~-M1MP3~nRZcZj4^ZF&Z4X;aiwaY+|6nIBd5P(BbOJ~Fg3Ndx;m-cC1YsT
zr|)-b{neyh|HkgZU+ntqWU+ObG3ep*AO)23#jgX$svoI_6EH%}XMe{kT-RaVT~m+I
zcPW`S7_bwqXc9Qbz|-FzJ^V-?DU-m~%`|#vvAn=}g)Fh~82a)`0_GFX_4)Y=8~XcMwD>~Xgzd83fa1O-|tB{)NnF`SWGr>{z~2OWaoxk2n-
zq$!U($T-_ksXFe>c3@tc3WUlqc72t>leupZNabS6RuU}38b0`in%$J=rxZ1RyQWQe
zq7x4HSKWFXaVOkMGxY2Z*5)7#6zN`cLbC_c2$=aB1BMuM(syC!4>}Z42%;G2z9Wb<
z=~dz%EAnZ*(V^2-q&^gPK@yHIl5dO`?S&o&Uxzm<@FfLRYKs5Fs*!E@EJzV5pO5*&
z!j&&QmLxahhf6hu_*;Rz^&iDHxYMx`vOT=*8)RsYy6kwlzjew~2ytR0zUZ%@FTpDQ
zM)5_j1i2~l2MR%uTswvUiiZrH8I81}fvSP}q~d2fDn@?%X$(OOAWNC;)QmXi%GfFTjKkA^xu*q4N
z!LLZckobMt!nP7kIEj;vqc?0dYqfLr(JJNYgG0mnS>{sCAI`OxS+)9JDU+|^t?{p+
zTBbde)_tF@HTOAB2mf*GGnvx7TCH-;h|h%lZt22TA-AB!UI(cu;3+fG}5
zhx^V^*MPm2-IqAN?|!m!GIKH|JC9Cb(Wj#MB23*Q-F}_eLSt>eGI`xc+AD<^KU0cz
zi?W_eEiuP7T=)nz(1Vkc0=71C0tI{LF$qJn|Y!=
zwq-WTPyDJ4e3nMGMJcH%2E~fSn#Bs+Edpgb1zDe3s2dD6<%`C|Ji1-OF0n
zp3R2%E)v|s`<;QcQb7Oy5aH4=^
zfLevch&qEcL?+h#*x6Bxnx|*xKvVX4rrO^0>5wZ8<^3n3RZ(n{hT47wV
z|7QQ~Ju@ov17;PqEw$ZrEwzSEY@b9`MOAwS2L|&8f4zI0A9Ksb_jbW{Pd%N?z87r@}*g&Ouw2+n+os?8q^cji?e@OcYZmj
z{a#yGNB(7P5_P7m*1p!y%-WpPx~{vdb2qUi(XY`j`bHcLJ7Nl_nEDyD|LbZOA`v~2
z`ShX8T}i+0xl<*$Gbq2!
z^|q`kyPh~dU-BM3$;zn8_`36XrhHdm_vLQHY|a3G4qNuqN3VZ$_R215u8l}y<|Oml
zE|mCd$Z7;x*Q_(}yx@t~FP->O_tB&1%xsTT;#9&VXGLN~OmP0;{8N(w!S=e|x_*sL
z$83|Z1=#?GJBvH-yAh}$kO^ju92q1XWQcTi?(O@aEk;sg#`3gsYDfBQZi6(jbZl^G
z@LEUd1DoDIaitH=*3*XKhhE}@J@Mc8^#jf9w^>xDKNd?^M3{cKWQ-HSfMSF%^|8mu
ztnBLr_$53AKA&ODry*RweDh;3#_mTSIoBFOSqkHtRk2m)GDNaT(%tFo
zABu~#@P#DA$2rRsJy1)mwcfJ+ZROryVi{I>+wBll$3v5h_T9EBuH@cRuKTqzpEh)!
zu}-j~Ra#r>TeS^F_6esHXLAhh3{>^a#0h5Z<=pKMd?i>)sQnnOqR&Nb@Vlktm2jn)
zv)9c172*J8EFI+nBod*TVd^XD4=^
zYZ&l6U8pg;49}vJAdY-fMl?g3N*plBI_tSc8R6L1_HH(*y0Eyb!D85I)N1qhJXf|M
zPD)Yg?^GNI?5XK$>;=8*os(0!8J^TZ)|sY|TG@v8ZDRG!mIdF321O-xKIk0lT{9wPpYs11pD}DcyOH?bI-?8IRU5Y&x4crisydS_i!9naPr0&xUaD^I
zywig`ihP5{fKxls@N=AcR9r_Z_7}&t0!|NY>uuJa2N$*gwr+Ihw`B$=xYz3D8OFjH
z4YtU%`&*xqCA2YGcWP^Do>wyIhw1Ve+UZw@=7x;@w&uOB6=rC0Gx^1ydMO|2
ze1AE;89bI~eK`C!D>=*0pZj9gbSA&nXZ^*{!Yf?Iy+%COrBS)NsCCh1(IKP5de_6s
znKeTFdj0fr5fl3@*DbNz#4(MYrp%`FvIZmDhF$NL8Xv2(P0DP+p}FH0uLF|1U*p-r
z;&UxW-i~M8XD16JbN((YH$(kRQywh4rOg`6CdX1c(o?c?5#y4Ex3iObvjMN#J#vpm
zW);p*!$O8{<4&$UOw~f>o=O#@1BqNjF0uMb~-#}J*fBIFW_pd`qBlk
z-q~DKoM`_jxJo2XOuR!uPCL4O@rY{%;7z(0idt$AZcU$Ir)8XD#b)JyZC#nw1NaR6E{NxRi}1enX_Pef2MP
zjh5Sz~&xa4$2_~V*{{DW_lamuO7Z(D74D5@Gi}PjDwsTluIa9*og}Bct=PO%V
z%%_|wiD6-3-Fn3}jkUET5jfP1;?ELnpxTcg*D_E;U|5|=bM7
z#>R7#lVp%D19SW4Sb?>htE*V(rf5E;G~&3Eq=g*%7Hsz;?kB<*ZN+Q~D75VV#
zllfeu8%@kg8S)P*ZKSHHwN?tvNH{`>cD^?9dG
z>=tLkpcNq}DzxnNhKh;``ns9u(^Gd|tdIyA@6Y*#g_|q&5LRcqDQ~+C|NR2>tfJoD
zUS2Y+@Gz??;hM5C2jU)QTX{i*Ij#?9?qtGwM+MSa(WCEiHYG!ayK>;qL8ex^y5mYQD?cVDZSY=d{GsQ?LM|A?fHol+c(sL{
zo!xU;S!Ao>Y-&?7E3GX_ZRprroRb7IxFfe??<^Jy9A208@DThx@Gc}jKc7Hz>D#X%
zl~isyUb3$9b0O$lD27r)L!)i~W-owNA%;p=8s6$DhYmw$Qz!4@$5_OLA3Mz6A$9Wh
z1u!IOjGYIe=E7{C9LeAZ)E-2{#4QYLlv(O%VCZejTTUGyT1JMBR3q+GGaH*;-iHs(
z(NU04tEL95EG@$lC{AIMNVx$Et$x=d?-ec@UaylN?IRl`{F%JC!yhSsn$kV+?opPw
zxOf|CoIE^QNtYf!EVyIw8U5F{ox+yom0B4;zZ>t6j=-|AGAnwD9EV5T&O%gE
zdd0-Fe#ay4R5sDJKe3C-vzF(;;P8A
z%AgMscUYZiI*0cVia-8492$YqPz>@0+9K)?wp)LROPU(}X;}sahVt==iK<{ase-W%
z8-5w^Sy)&UHnz8`j00{?veT|}>*_pKOY7$IJr?{@Q@Ee^A)^na@iCkym-~h-)H%}L
zT(3*ku^lO>n6h(l9N}PN=e4#<9Iqy7_-jzv%s`y?_PHQI0!^tJ9I|j}dwVW}lk`+oL?2*#*jbWm!Z3D3f76*-SzNYbMMLl9SaLumDM1@-zo9u&!2}7kA}K>
zYifErg;sHh7X7l)8XiiJuLSKqBpAWbzWHrbQM4J^cL$=ppb|X}8t;tQO
zkdu|wG?mNn8<K5eSv|WE9AqTX5f{N{L!
zr@K-3nP3^R)5gz2?Lsy-wiRgcz;m>`?be$m&=986RSKuy`V6Y+)#YXQTlp6a-R2dz
zI5;ssCnk>Ij2F*|*vOR8@SmfgqlQGtm(m5|fJ!n!BgjHLn{zlb*3|k=v`Q+S
z`?D_q=?Cf}MR!B8`GTihg4P4+vyV2`#+edOpagxRZ{uB<1pRW?&*WY*!J6;%EIddQ
z9iT8n*o#NlPf!9$wR@^zWZ@V}o3jnCy~dcy;MG#z9EO}Jtv2KCaR`w}o8;wL5zU}x
zS-6e8{TkCC3Y}I>Hv<`W>NY37nVnsUVcxqK7B$`!9us32L{3irKu#RxlNxV6bB!#V
zD4nE(E*}rjVWLZu2V~l4+u!l9+7{XbA4nyjAW!d`{M#b;|QJ-&>wYfPn||
z7YkL^7Yga%Wg^6LZ+Jw8g~$%jbK89}RjA95MH+ox0b^Wm-H^pY89#ajJ*c?GZ$J)$
z3dT0uD@)=&6Hrt2bga2pvL6Xk#Za{vSLSX-
zW|iD+ejzI-*Zsk`d{}-m%cVXqufzFl&Z7X?fNO+O7X#i-j6UoFE{61E&=M0=n}#CW
zElp5>xy{>lZDA$LwqCid5V0AZ$tZ;|Weg2n+q&
z*w~|@*PO3^4|ISoA(1WUIR8baF|c0I_1*ZZWTiBANmj64;6D%hKX)nksgvJIW|+1V
zuuF~hC7Y2+;*)-pc=17XwQNXc;HMM*IZ-Xnl9t|B={#bJ>?St0mS
zT_5OK)yqVmZ2QnC5K)VZg|(lYoZOu5qSkwl+o*ou8=S?$?CgNX654mCpzG`FB``F8
zV%9@cUDPc-T5AN@e?Q6F$KD#~c!NwjHLp3jd9&_<*-4);(NIYK^WIX(Y4;c1n}kD2
zC43*K-(EnwZ+~npU-{j`cM}v8JbM5By%@fqBHS)XVsh>5>LMkDBpY!VxxxI=c(Un5
zPfRo+At4?8>iYUhS<`MKX8YCh>tC5-UX{nkn`3w=FwpsMCC*LB11Xp{yt_FotglZC
zIGwVdP}uCGEqhvJwb6+yNhRX4ioP&5c63U#HVtkT4_10EZf|dyp|e8P@qusOzTFlT
zvEMG--7EyW|CDw1SU>APsTbs}XeBED+u?d`EW?>20YdM?uhj@x-
zGnL`iU;;%z*KFyuob>s-v^N_Hv`9iI?F4R*RNz;bn3$q?*#ckS$g|&^XSE@Jf)J;H
zg)e5E{ZOsVE!sbA!1ok(PWIAA24!SD22xc59r}f`tea{3`^H5e5o
zQ(&PM{6s^biw!G4=)rhZT3*?)kmfyv?#oxn?1chfyWOHi4g}we{IpE-rQeDxdjv-b
zH&fJPQ5A#OGF-E?XOD$%1ixi`UgjZ}a@8{D-f9?VDzl(bd
z8b+SPThD$B8Ao|OW*a*{KNl_-6Q(a?eA}A6?%s6evTbqy?(Yc*Cbfb*4D;ug+K4Lo|OU?E~uZTdBf{IhJ7nX7w*lVI`o(7alDC&T6+@s
zDrS!|BO@cHw7lHJhL;SWVZm#({>mXj7IiT`Vc|&2{*)8WrL1+c@zys&|3~oOuMSPt`lWP%<%DxPhWz5r7KOeC-K4SjBmQgt00a}SK|@G30L@?$jA$_hRjR3~W@4a*loO6T_HS#e
zEHBqMov5DKk$jh#`G+ar&A9x`y0f$M1!{=dOE|tm{ZjaIxCKjowGB!7fCVtld~<}{DlQlJ2xc!#+EZM6(2{+oupl`h8*Xg`S8!oh^Do<
zmRk9Dq8qWd3)jsIHqANEEFsE@6kH85*74m7ix-+a_P*ZU`a|si@&4^Bb&x^0Q`%|{
z5^EHyP?P6@d09h)*VCs@-%&y==w^mBWSDf-4s(r3a#1AXf{!1EK}N)Rq+oSOyILXt
zC^FA+9#!n){NvMR~t(C#IK
z2%uO9RvBKh)fHmdMs5{6YBw`;bD5V**_EvD#-VQZ;3>P5)~%mg(%?aY6rb~Zs}~bW
z6AdDSW{kfX*?;oL8S%8uX2++Yv`^QsXYvnbXPdwR?Jm|
zS|}!@zV7t~V0YY86)zN~0HtAxmS+G@s~5OVr#7~BWPvDe*0@yV8HZHG2YBw||-zM_28g6fIzX5MicYbrL
zh>>*VDsg+hLcE-a+UH3?kCRuK0t}zlwmj<(c+g|@GXbh7|6$&Z)2$N&VA6FdjFLhc2Ddvm&
z&a?G#eG_rCKx+{KvDvvf?Dr#x#zqm!z^hN%C@RmN&mjYV_2R{gaR4*-&H@5NAY6Wa
z{z;*jZLjNt9uLZB`K8tGi5z(Z^U}oa+b0s7=tvJAJ{+3aanI>6-PqjOxfi&{g8Zej
zx!JejyM+uOA!<=1T;5aW6|0*k-kG2r!=My6ge#h*ZeeMO?cwfTOC{;wZ0YJ+&GhKe
zqaVM1St0KaA~gMf4uXU2oLO30E@gSl7y560O#L8EItfk!8x*eMF7s=0<)$Ed@zLq&
zzO&O)Z=R+pVL2HA4^N4X(=d{BW)U9`7$PcuZ~?2diYM&o;~CsfbX4Z7cZ9I
z&9;fj1u3RUJFNZDuvn*$ST~@E3)GrA}*F|3PJCs#pq?e6K30u({c&m6;kF8+(i3!-o&hlGMpd>!HlZCzi^|BnRTp
zwiOL=RS3rt*tHwy+1jcqlEPize~4CNPV`kP%$qVOw~b=5>moffZ4bVO`N4Z>eK3PG
zJ)e|F@Bng}vP=y_pl@z&j;>W>l5*E~9~P*Yy<8qkCj7~~X>{ziCO$HT{1RS`6sVy}
zm+uI9BDWjUU#84CNPg@i?5=);_=d2lTb_Lf{ujj&w52@+tY9mWRl(ld6dPYHDLHux
z_9qVMAy6Xs*VfiPLMcc>Ba@SpYH;gF8@*$hDW8n=bS;ma>G7DTL_W!7FB-|ai{awP
z-n$EG(>QFyFYLFB19aP`0GYYA+xC{Wsi%uYG)cLV)ID4V4fcwWz{x%L8t2FIAjo?CW*_Iw{!%KMgyzGw$*m_u^U7bO;K5kP1F%
z);uML1pQ8rznT<~Yh;OZ=ZLtm=aYYg-lBf)35m<#Aj6_y3?|1y#eS%-suv8tvVx>?
zneotn&U$Z`-jQZ#{!335tM28N2@$Ym!7n98I80L7mz;Vp1Du?Gc-v4(%Z%W#(TM%)Hfhy{k^wR6DyH|KEveqY0fy8ovyZG957GwO~xh
z)seeOLJI6$iaT_Oy=?wWYHpK@hu>k!tLSL&)!-fav+qn2KMT(dSp)tN9-5bzSK(<(
z!HA0hf&-{Dit5=3DO%?*J|Ru=eI$T?(CSWPU<6=30R>G#L7~9N`lHAb73hQK6V6WF
zl9?TDO`~B8vTzjxwEQ-D$bz0~lto6;MVXrHW3;U1w^U8Yqh|*VUTrK)Oq6^!dKo0+
z!?KIUCnWW<*}t7>87Tkf%Qq&VO8kR3*3nEOKI3v@FJ509nMkeDsA0fr-#BiRO60^+
zQc)!h?ddGx+C%j=$S4Z%2bfG}3uh!dZqlDuSXh`OOQD*9O100QPLA?Pwnu}JC03_rLJ@MC1Se@TJ{|f
zQT&jl09o*1b($5iz!3-;=N&ZjjGlGe{{YR!F{ECUeM%@9UExI`QGhk``}ql&XH#RN
z_pjAe##skJEiJ9M^z=8jWerwRR9nev(s&DA?;PryJchHyeVv^v#93GhP}`rVtE;Pl
zM}FYh=9wKJ?+zFo5C&8Q-1)bHCSpW%g$5mV5BDV`BplvcogKlCDRrUp2}7^r4b9ub
zejdrt&*MlC*3s|5tNo3U_stXAr8?BNK<(gM6~dvWrY={wVkOYb1v(6I%nC0*f3;K%
zF;LI(uu!Gp;;$a7!8`riXn_!cT?BywCdbb&_7N3`m9;=31_O`us?CNYQJAAi6*Qa#18GiPUw06)aS#eLt@
zL=KrW!jTN*)IX
z2PS~$8-M=zYQ01<%@02phO$X~)_kFYF8YeUjzH|gM~_~ErCb60FC*Y7`F3S)q>=b6*kZ$ac2jd*-Ned?H#kCy0z5YAx`PBpH~nJ_
zFNTZrJ#gYylK;vx)drkQm?WJ06`b2Xzu#G3LSh`&BJO|40)7vWOH5Ohc}5o?PqM{h
zLwAQjP5+Zz4jjT5M@Pq0wRyz-04iBQyCmd2=?X?|u~CF#>C=1;gY4$Ww1=@rI>Ovf
zEG<7W@)yiiwN+9p7HSn^`nml-5fy>M0z}J&zN9u9rTcH(0F;!4gQ^OB@jVJp+Uq@#jxT-F9LQad&
z-G~D10sbSZe4f5LhWvo~%dO%osDvqB5M~Oji3bO`J;;mHI6ZQ-djBmPsYp*K4-FtY
z*cUx2NhB%aKtjk^?k7(Fh~o!0X#R6iQToEfL?gmqO8s@A2QUSp$
z1?DIzwU}p|ThrW+?Gr!*6xGziy3GsEfpWFlu-AH}`j>LK6pwosqtFv~EW0$!Pl8h_
z9@_+~`+kdYED%}VzI{uy;Ir2v0iiWDHI*aB`2p#)&8+5G8+to~?s5u)Ld<|5MKo{5
z;9(-TzCLDSpVY?T$GY^5Po6z%{BH4(OUUk0uWu*zfwmNbQxSH`Z7bIn#IG8S2fF^yzTW34vN3mDZ6tU7C++$1>@r#Fy`?P
z8zfK!B?W~*n9KvfGeM!Gd-RAf)x^KS3E)2g=)4?}-OD==4r-EJaY@O*+0~5~;5`8P
znLZ@}EE#C4z{Yxh@7_I9;J@WC=f@Uc-N9y&a&LzNZjY9L1*ugqHnr{2;0@F^Wsg6T
z&SX;JfriTtIqke}vD-DwuPFmm;6t8w@;h0d|LOS)B7sCBsX11a$Ob*&%qIhmG8RgR
zO39R{gXw^Kya?uXsp(($iIkYw42V@=E+|vu4}W`W%8LLq$O%+o&VG7u5*?;bXhxZl
z0LKN|Rum9(5O!SOY46nr$7x1)2yBq@{m5}k-k;;rXIYOiddrhfbCzU8q(s*S(*N)RXO6s
z_>(38dFHeiwZSiUorKQWIQGP8G@A4Msig+@_xHDP{?Lotw1NjM<{j4=JJFY<1^9CZGimo}*
zzVhG`uQ+n)knAO1cVB
zIVgjPf^&w+)4bp5*%_c+xhlgz_K(VJ18qSOJZ9$s2L6Sh#_zi~QRh8jHIK5Yk*@nN
ztygXw4FsbtA&88Ywg&`U4AvY*M?JFFAD{;}|9*}{K}$=zN((-_FTE8(7U0~TPer4`
z(Q7h!*P1K#J-GK8X90bU7*z{9XjS@+W$5yNUnBTJmy}D>aJr
zB5YO(-t*z}*{kU^#C-$;7X|4tbe~Z}W?zgaR_6UI);P)d5#Tr5l=!#a$^l)#NHBo5
zW%Ka%&aP~`D*IdC;zNCAe#c`#YWHm945CAignprgNYAey$w`WHO7oH>IZ}|3Exr(M
z$<1BF*3FTVOA4bOsn5sK_%gqDc9fWy_(}r}|GnFHg1?6fFow(8K@54S`7QduOlFd0bg@!VmJO+L_xH
zhNbaB)c_4HAP?V^N+6uT>U0GXMkWc08R6K%f{8z{Tgu7E$bhlTeC&Ng#1THqK}U2S
zc&k{z$^W`L*Hm0TKR-_lRE7FKmHiOBO9!=+7uZ7`rg)%c{2NWNcnIhZ3``!5dMP?6
z#j@i_OpFHi+Fuf&5}-nY>`u=4pQ_>f)>azO(71tIW{@IBhX)O11LX*qPs>M#hv&fN
zIdE(~KsC|T?dEw_jR2s6J0~%*v+b~toA<(bUg%$ldqZ@_T51b?cdAJAt@x(
zD+yM*D9m*1bY~_C@i`j-ta?6w3kyb>8kKb-L&cwt3#~1RcK(BR|7dT(vwnp8g?y>L
zuf<%1HCx-SlU*`k=O}0MT3kZ-kkiopkIIKq{0_vkrJ693fB)qq;t=YimJX
zl1t10_QeG<8qPi%4%MQlsHhkHG)myj-&bYd*ikLD12A3A#>F+qQ%2@_4s<*xku2~n
zFd^2Go2yZ5#c_dI&Brj|%ia-q*iX|9J}f+vT_qE_}JP(+}oA#6;;W!vNA`
zGcasq=jP^4{{9%&+6kkWKEkhn>#+ZhE&<|TbWDsM!AR9Iosrf>0=ppoNEL7>lOdY)
zhwdcnWTylpMvw$F%<$(JHAT3#Zb?zm^3%E*YB@9%%L+#R)oy0b2X^SQJ%nVzh`%F4=ra(;gIm7}AFCAg11GD^!a
z{_EFa=4y#FJQ1t&`WS>Zd|?m(r2)$DMCU80KUkZ)fi7Pp+-yFjm1PSaOcw~`_Gom&
z{n$5xw|w8#4FCY6sCYGAltxH|G5SuoSZ@c_T=fZK{18;H^xE`44)8hWen@dy<5uEP
z2=KeJPrO@F2XF!VGf-;j5jHA^-g9I&_IS@x!?B$CJC=A
zwn*Bp$S9&jLHK@%5IZNcW7=2T<-pH}sJi}mXsfY+Y|bnG(|WFnAw7DkGRwxT7J_!~
zP?@~^?XspaqCgLkm*3u!Crjj%qxQtop3zg$^5iMA*(u~nv#8!g)0PimY9@IA{L}r!G2ahn>KRt;yB&1~3F-6CmNtj0{`I2@6tX)}9R4
zGBRpjj1k=>qotyHi}{sTbqmD2kgz(@6R_`rIxs(&AxIh>8;e`^tY#~;b4f@AE{Tx#
zFkp3$c=ht-0jN^9)nl8-630JeYMKJ4VIA}EdOQ4U>Z60_I;o1G$Y5v$Xc=PiRDW=w&&4FHj+0rm6csw@*x&>{Z~wWXr7l
z)Vj3NydMHPm1r_D)vX!Z`Iq7L6jW5cnd=t_wgmd(@%u)zN{@aIf~6I^;JFh0Uj99P
ziMjoYUh|4xQI(#ii%%I26kI$!Im6CWKS2CIVdu+0_mlMuFflXA8h)n}g4o)A)549z
z2(Z_^G9?3Ajg3|bVlnLicyMgoZQNEr_ifGF^V{>011)a%^77KV#JEL-4LP)noN+=W
zXZVa%K+2|^|6e2*jGt{%zg1Mson^|pPKx;KLcz$O%A0hAImSqC7HsxVE-i6FJ;DO)
z`-nnW(NYXoFUWY+k%sgA$unN=FpE%F{t$7b9J?|FynI6C2-B2|IVmeE3t^$C5M*3F
z@td?-Fya5lms{e&+F!hT7-%=@cez>MRX4*GaiJ~x0dWRgqsdzPj9s2XnRq78r7%*@
zoZ(cRS--^Zp*=J{e|R`MK(X#cLkbG@!By0}`%CfL-l7ClST+B&7wUXK2huvgN~8D1
zT&4!56p$U3T6nrA<8D>F#6T>B{=@TE)V-zqU}~rplhgX2FKOg)sK6Krlt9o=GOXe>ryIdR`Dk0h-JnbNB%}*K1dFWSYi>H96E7M<+TAl~j0Lp9$E`~1n
zq#mFE^!E36f>pZ>oP87MNlDy!$m!|nvxW3Dp^)M0Acc*-n&&tFh9Q53c&&MFw`nh14o(PnO+mEc?WD5I6YeSkEh!q>McNNCD7h;vD;p~P{CRQK
z;Vd6mYrjBlwhr=DDS6{4oHZohKqf`GfL1zJ)D2UkK(
zM^++{+so~8S~Mq$vDvl*3J59ina!2ptG^=We!~N@RIy`AST4X%Se>Dt5W
zbPpOu*ihnQ6OITt^HV;Wva5|kk;O7Wq2J=>PSc-9zjj~8jtL^s=86kq(o4Gpl^EC*Lz8VKxpl0kw@eke<{
zhj1jT&%F2~WDoMBl&U?SSv|WtBOxU%$dT})0MSKJ7^id79I2r+U%{6TZEbhNO>_RS
z6WijLi`i0i`!2xic6sUZ8-y5jVtcAI1PWD_!F(Owauw+Z(Xf)MMD*ft=C1N7l=4ILdw~UGYHe93URA0v3)zN^&|W1eA%~Obj6WY>8I7tiep3
zoOqjgEHeki$iiVg&Um5;oYEUwx9EM(Dr2CjiEJqLmC5vmCYw$$295hR#%I!;wG{ajdx#ikTEhjKwI+yfwz
zR!-^HuOHpbz8?0I=3IBFm=fUVYkewKmx27j4zYFbOb5WALOG-+r0y2Kq
zsDt9)8&G7`MnB0&(saW+7=%ZKEj&sZ`&X
z&H*G9(WQQf7N0ywFt)SYa0})EF3f#ZDkzUrFeR}iDo82tMfIak-~
zHRqMIku43r*MBXKg?6kS*J!*(^gs}_0g@U6(f#g|4v@$PI_zH&kHMs9EGvM8{zWJX
zyvr|Nq~2)>>4QB9A+g!t+BH0US3>-k^58@;)u=tdKYppDM}vKG>?imWt3pXit-o71&NDKh__S`
zAZoarZd(@l9EERLy?MgNw2xIotO9+B_i?JaGteLa$2M<#r_B9{IS~VB7QKUmEe0r>
z$KO>(RQqzJH$Q&-s4{-~Q11gDh~|%e%;RARMu)z^K7iB=c|I{PkbrQQChjAEuo2Vb
zz%o(h;Dnx}Tb!j(ky~*vEq?3ic@5I5qIGm`tX>K1MZ}lfABh=xG;!KzUm_X(*8vZB
ze~SEE26}u2I;#TUf@LkI(_JBDo(%dglhSQ|3Q!Xw9Hvi^Ump5{0edJ|zuHk(sW?XA
z`v@!1Md=h7=#b=(tl)Ouo=S30Y@=1|!wNaM$giYT{d1@OCG|fb32|hUPo3n;NSUB&
z0DOW^$=s7^g2=-pbV23L?)~0e!2kg~0ZamvoZ*7TR<7OauOD4PH|Re^lFsEQJ_7vV
z5O`C34Z%Wfcs|aHuJys}BbhO+Z$E=w3*>^Rp#p9H@xKfkkOE%<-4Wzb8vuO~yO(R*
zSFEJ^5zg44@(y8xjlXm3-7^2}n|y0g(Hme58PiYG|6XD+DgwJ~E-sGNJFTjs2{f%t
zOhDd%;>Yy#eQCUQUMxUcTQ3G3>AASnCMG9)d7f6nSxEmT#sRQ~;y@0fgBJ@l_W`S_
zKQ3iJZmgSe1}3lc^q3+lkadCJwtsa)>NhI4F0t8UT;AsSzTP`fyNENSBhG2)=^GSI
zKbO9x7BWs&W)O5u6y%AMu>4OxXP8Iv2qS@|g;9Ed9*C-7cM8xbgAjiuO@WN~goI$Q
z3NiiL0u0J0cov1YpJULSg#ZF~R^7Qo2F_>&>_z~Ykhz{5&*ez^(5x#Fe1Z8hcMlI*
z7J86}keF`Rn}NbX76fHc#xpid0miAdS^@LSKmcBO!Pe@PAMFPVY~6V5%O~_h&HgkhxU8UJHN(cw$>0%OtW6l?JNRLC$wUF`+dlEp2hZdz%Xd35JIcwipoW8wLIKX#@pHu{z(1WDN~~y)c|6
ztwyAIl(2S(ItC^txmzxDB*2G9=I3$fL7;00C9t`#GQ*=VtAvKoYI?q4
zTE!f5=xdsh^hF%HKb;?FHv3|W5gT8Jh2n35Rj=4hj0`Iq
z$mCNFb)pM9?w#8w^ki7UW@JF%g_j)YY+dc{?yf-IauPo~Y7m#D(Ch+>o2XV(sV!_Vc`6Uukrg4
z&u8!S8=P9>5uw0lVF%8UM(|olNQiE}pxJvPG=K?y({|O5j*hiJ&3s#n{P@(Qd-3lk
zfA7rHk+Qk>Ek`0iz|V0BKtjy-!2}a_KpH_`zORbW9=P8cJtF-khgjS7$ucd(+x3jf
zM(c;ENy+PUm+^m@_>c1r>k!&~F%wIHj4Py|_Tvi>Pt!UK(OcVS$wuhmU|}UGyj-Tk
z_iF;33pRX2iLf!hyS?c_u#yHoM@4kw`d{>$&=|J)-?S0LU;Wh^U`q|*&&`FRx~>Be
zxA)rLXcwp_zcI_r2FMnuFSk7Y2T>YKow)vV#xp+W`%8zlwF0*w)%*f|ucLzhr9YV1
zsUSB(MM*~1`)m8;57>N=GcYuCYgx_3rI)S&p99tD2HLWH^-3MleI;E&r;Xq9doaTu
zLOnb@giekCj?ibS6vwis=|x$`=X<1as|y6JVTqtl>29Ifd&eQ<8|xn
z>mPyWw=W1L!mgh&?Ujdg(3w1a`u*?oVEb9~hh#o}{?Pe(TND2a51HsNGumh})aAf#Btp;3D5ZvcD>f_Os#`EO+!}X7Y
z1w<)rbBtf(;|GAp#DA!82biQI5)&Wi=@Eo~0QyNYnGGI16nIg89}wt!LQ=(@ORPFY
zwW-~glR-`!vRbOsiiAR;PR+U0=JToJNZVh`F`Ka$X}T|bx?Z=TwtvGeIZEA9B*=Sn
z;&VT+a%G>1iAgBnw%KPA7Vk-y^)T-A=>Kn(SKlezu*1}{rP*ei!f%C%MF
z+FI+C_1Er=`;oVSm1IUqHcCoFOB03vNoPx72YULN`pixc;)4xa+2+o{Ao{>ZKVA0f
zVf4o{;uqh1p%&me7t!&Zv{LkTb#)QNrFlz|AZ#eo`fv$0$taswZtqTbcevP{4b
z+VX_8zmUSx58C)ZM~q58J-4vH(?qIn-O_~JehcCPClIggFHWa7Pwq8-zOQ@L(gebT
zHyazQ+#u5D^ndC&^KdBJ_l-YeFt%#!3WKqykXH!V8f6Q~9)*%6vM(bvmYCr!OSbH(
zUQ5@gQtZ_Dcl!$zSBWn#5Sz=1Gk(?yAE)K*s^^*iUD6%K~MF4Po
zDP7M}>C`D
z5D+lJ>d*VHexg+5b#_(=8^ocMXxmylE)gR*GS~MZ+q%}P3<$JR!2tm^-T|F1QWl{O
z4tOusHl--@p(TLM%FCv{z3HBQ+FKNt*JR
z-h=1sU(NaUCC!CFjzO=Lj-Rl*QKicrkB1#iwPd_jvc%KU<_OP~#E<1{f~^{5EPPlg
z?F+kW;!ybOIa9WWlG4I43op#;ENNrg^5o@ap?#TJIy0Eh5td~lhCsD@#KSmQFsQHP
zQjBSA?_l!$vdOjqoqzptw!<$Tm>yn<>HY`w%_7M>@#?B7zq6T>u)n;|8;V@kOYhht
zh}vR2A~sK5&A04x`Hjf##BMdu`HH;)74*AlXm0-oB{5OI+*Mh<_wE$iirCV==M&8M
zR3*MM7`-fY{w}P~7d5LcY$ZddcNAclFZWv>-F;gSO;&EQd%Gi6Xs(?#%F#y0<{dTr
zH0$NFG};7qsw%-SEHGO}*Ngu5*&WZJ4xZc0^XJbezo12%m3t4lA)cRi!vN6Y4fpk#
ztnI$m#zv$$WgTdV-)I@Gbb1fnQYJ@p_M}qn`_DaQ7Pg!j0_2C7#0iYvz82@Q^81;u
zX*C5?9EG1YC;GX?no(Xq5-6y6Ot9a(+XM^aB8JH@H(kV#^>wJAcX(QKhot=G@2D?3Y05#6
z8u&nzAFcWABSg9HUlcUh{5V?`-^-oPj~2>f8yOi1^JIyA
zL9*gfdK=^KPW;1F
zgm}P71Q0koh+R4;McauPcRgJ*6tXoAM0`Gw0n58N{V?*DmyMJe$^hAm=VM>MAuWMh
z8kPUiZOer;!R?a*f8V+l`ehyCDwyNC6+t6<3j1c;I^l$Y`wa;a4Wa^)Y$;!q{m|x8
z({(P=d&1*oAi+6J&k4NVVY
zp}=kI*WG#o<9(BC1E)7XJPK2IA`YJOR$eF(tmr9-f{lZAspA_+JaM$goKJ0R6k1_s
zDf8m7(d#=QG|QNyq1bM7tm$%81eQA-LMFe;rf!91BZ4hYtg```n5&?PLOvuWvPE>y
zWK8VQAjsY^u!OA`AzAs2Q9M^2xTz&*(?sU++2?0DUXHsIH>dX5ZN13rlBFyF2a{=te(-FZ1W3D{9+QH{2ODTBLT_5%?9Ned
z`Vn`1Yf=x4q3CB`M|7$l-@OQ*ft@=?6mNLAs-{L=$~}JnIKPCuisWZoVs2gCey-RD
zDfVgDXR<=EZ6+h{-m&17o4stP=5LDS<3vOmdnQ*7rDlIx2~2r;&HUta@;zS2VGLsu
z9IYUypbwuck-rB>4WvG&X4?~QU)kvBV347+z3T3s)#o;G49FWWCnE!tv!=g@Stw+@
zLLc$2=$|yqQWllDC4b;%8u+D%AaqF9)w7hIu0C&q*B~Y|IM^mzp?Be%j*$@tu{Blm
z`_?7tfi95#aHANkoINy6=@7Zw!-3GuMB{$e>a0fPB8a{!{{7dO64H=&m=nvtLx
zV1^Fd5lW2p;qK6s*KglG>2XsK=3(Iin!y{2IQ6aZeWySr?jNPFJS)};F)JPe7^y6M0^7R9)8>7$;a(-Vq+!ldT?<;!R$pxn+`kKg88Gmgk4zf
z)#WRH=PDu90!p45AG)orUHIHPmjhKBMwisj8XK3NyE&nHdrDxQg_QAIE!3dat_+;>
zn5NT2y1$wzsT_Np^R`|~ehBu7i!eh%S(<~XBDCoO9OzCFExFBJd{-1QZrI6oL}>|y
z%@9)@tu(Q;<}fIOJ|gV2zCJqyzlZJ{5TM*4goHemKgj{DVsuxR;YPsf43H}zRnsD4
zf!R(!Lz@r;QZBF*qX!q-ASO5dEeOyY8+kyfGG0YNNf0r!QBJFzWf=cqMIqy~xueNC
zebvP`MP_zZ=JE3ESLE(Q9`pHV=iopCIUacaDk|6XmbJ4Cqk-W1H~TnmxL~9xd=v(J
zKzpRCXd6k3Pn7lepbC+f4p!bbx6;_iQPD=yVXxJj*}5Tp`V(X`VcceFy~v`
z=D=!RYC|!WfclQ6*IJaWaDd{+CV~%H6^978^s;Ike6cRCe=ol8VF-bW$|$
zaLJrM^xe|Dp^(+SyC>XOqF;iBXM06pXC>FUm#i~EjIfD3ceTz@ku^&w?=LX-zh1?M
zI}0eW-(zrU{E}Su$-GPEoyc3-OZB9Q%*+1;w#Ukt%a3<?+wcn4eIPu@!z
zTuV+(#SpWv%RXVdC%jkEf+sY@!J$=3dUTbo_qgi@9!ZK7;iRGordX*9k=~~jhEn7%
zJoe9C!*ypeWn~QDy8pEEXHo0t$k%1n)Nm@>VJ5b=CR^y_8XsCk?6GINWmE~_Mwb(1
z)-QowV~W9poT>Q{dsYPN*C>Q#Xt-E2BG5nQyF-iY-W6QgC|FWm=MgdZ-XbQitEm!j
z`$;O5pdS?UBL~&&TJ?D)P_+u`pa3M$?!|e|gYU*#Kr#|!U1TrgFDfo(`J%dWqUy!1
zwmqLI6Z9A2685dsYHD(vGJd7FsFB&bktZBt6w3=JhWif^;)VR%fGFM^aK%4I#);;DRDQ$jVszJ|kza9c&h8gBcMT85k
zQ=BUgXcR$G`@8ziS2&}eMZZLSLd#lIR4*2u!V#y2RF)c^eP3M-q&REKH^092{quAj
z-?0ghmQ)-(BTp^*Ut0hhkccn(yQd3&DT+YnL(b0@lqjS2f}tJQZTA4x3PXOZ_BM;5
zeSLjxgrj6SeYZjkp+nEk&gL$A50ib~@})TL4i(s0
zkK2i#;ojZgOk+_TTnL#_4&nj;dR+X_KzydY(P@-EjemE2=jZdwU73=BPtPNPO6@;u
zU`)$Qet!PFqM~^Q)?-OW8@4h=w?0yK4@a=4Rat+Yd~`==jkauX0ocr~`lZHmjAIG2
zm*3HhEr5y7FK(3mNiE!T~mPoccC@DNHp&Us4%IhceMCcaEYCvmvEwPFNxy8)tw)$c0U)!
z^QCjlyAEF(7Z+!=HE+>$F#bh1O#uZzd=cSlufx%noBk=q6d0rA=W=6zl&C6BH;ABQ
zPP6Ophbdc>S)Uid6C0ka;QXSz(k)qfWL}lzqjVmYm0=J_a(2v6Ii$mD5h`XEuGDis
zR8q>!n$X~RRgYhy+A>jiJOBQD4Yu24C5@2V!dwVM7pA{}Ll|XdretV*fF$2JoBO0%
z)7zW-O@^+oe>7yCoSIPU6b2%Zn0%&k;?a8Ojg&S0oR~}aJQ_`G1FVECIOJldf=w*#
z9LaXt1$MXBH@R}UXQU4wp57;*7R=Io!ds0~VNHVd{r&Z)Ei+&17X9mezg}4(Uk)2t
z{3tFiZj0}rhjL2IZ=U1&r=g0A#)QL3eH;thFu+M4!nA|CEGGs9!I9Sx0*Gx|eIS!1
zp0{*LQ7h7)YxwN~j2Kzj0?VlwLxKQOVg?A<@V~zIHpe9l)I^Rihxb^dt?(7
zqzo3|R7q5bngC50!a^UxM>bl_1Q8M@s@c_yNCp``0L`z^$G<+S7UqUw&rlr{dbhHc
zZ9rkHpnPgy=|Uk7t5wy5_6iNu*~v-q0N}{z7qf
zA`&;!q0@)rUO#x26LANuIGE$g(07Dn0gU)1UK}n8piN=6S2^ke;7J0mzB^`N5V7MW
zp;-|C@Iw?76$A7^w}VY3R?v)Xh3SSC)M9NhoKo?(Z~G{czF$J3>~XZq-Ec#9!@|O3
zAix5qEG*}U$=Y3w>;X*&|Ni~DpcFNK8@!I`xgBJ^u`n0uFxX^h(z$GiswwC
zm}pCBVMUY@jOB`ZUfVc*$0>U_!}&Ya0J%14Gn!X|`@_#&K!zl}Z@8?Wk5TyUo}OYk
zTPmKE3p6WmGF<{VoZ7AOGO-K;)~l#x36cf;4#Ham*I+1~xv8lt0LETNx|TWGyv0fR
zBX8fPJh72p4_1R6>7@;HQc#}p0^MSfg={l6XXr&e>K*s|R8myb3ejRdDLtke9kMJC
z(t`RDT*jfs#zsfT1IV>mK~N+B;BER{>l)bC=cv^^EG!05T6dGrmvQI$pfA5lHw%D7
zt`|1oeG1a}W_b9Hvd4#pn9~^wjQ;hu4(7K(%7dsO%(B29Ja{ms45qu7BG-)wGs&-N
zmnxp)q&PaM{0NK5UldIS74Acp#+34B;);%;oeX{DWz{F|<(bYC2lxo?9{||3dXM_L%
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/images/arrow.png b/OpenNote/openNote/style/dark/ckeditor/moono.dark/images/arrow.png
deleted file mode 100644
index 0d1eb39c6763770690d4cd6faf81503975a25f08..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 261
zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol>0V4T5^Y?)SlDyqr82*Fcg1yTp14TFsJR*x3
z7`TN&n2}-D90{Nxdx@v7EBhTTAs$Q7;?s#GK%q&VE{-7@=ig3J6RR&$neB-Qn+l0CXLLr>mdKI;Vst0B#;z
A`2YX_
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/images/close.png b/OpenNote/openNote/style/dark/ckeditor/moono.dark/images/close.png
deleted file mode 100644
index a795fd520a9b6d2cc6ae7847635d3a3d15ce44de..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 389
zcmV;00eb$4P)RCwBA{Qv(y12q8?1C_z3fiyHw
zLPFwzq@?6kK|w(|m>7r+5(CQZ!ljP|mxPg#k@lxgpG4lhdv{D&Sl9|E#0)g-FwjtG
z9v&WXl3h4?^5lI=N=iR~u8{_UV?cZu#8y>R{V{Xq%zZfh3`*EIu-LtO_cq7I#(sBq
zcmEHMWxDE9`JCPrLYkDs4k
z5$MHZKrA6AC-(y+26P?Aix)4RzI^%8>f^_ck4TCXAt9k1z`&OPM#zuW*47;$v4VmE
z51=chfBpKk8^~2BDGUPw0-lD3hJL<(|2{0tL_lniSV&07V_f?1MM^gi&qj*?5vW)@
jE`5xn#n<375Fo$+`G5QuESVtt00000NkvXXu0mjfN7%S1Z0(}J4<7u!_q^ZZd4HZ)DVnCq-z@6iBv7eTiz6c=4@Dx81J8SV
zd-+DAaj#OTWO)%xPfwRD7R&cgD71y=L?YqZ-Q890?CfZJoRNSHr_)J;^KICh5V%Jh
zmoF!Q!{I<@=^>l+z}Dm269T+?Myu7jYqc7wR;!Fnp-_R+Rt!8XOp^yj!0@7?Y-E99J0*ORIAp4}-?UHafoJ8CD`uZvo;In}Q7}Ea!
zK7q24jg5^rXsg%jt58#;l*r|BW*!8C!Qng@&I5jnj~1YekDwaT6N|}av;8oe%^!itHc(6ljk72g
zi`PH{7qG3N{_0k%B`Fq*&2qVX6GZi-Zzt+>y8C*)K91do?F&Sx#wK9sL;y1fI>$&trRUb0%?SX6F6U(h?ny$6vwO
z1&|@&SNa{i_8r)3j!fdh!a^Osna<^MS6Ggh0V1vh{~;!bkwVoalgSUP)Vze8$T2jH
zMpNsnMsWIy1ler%8aufY6B7ZLR>W?%f9p%IyuAE^q9_^=g9~f$H%E`aJ-pomoK}9n
z|M^j!I2DORUeC?V(N?RKhKex2J=&ttXa;=-HIgfxPTxqSQkM#af&mRiqw&ki%F0`>
w*NY|G;v=Rhz(u@!a4rCHfX}C{#$N&q08tFxHw5c*b^rhX07*qoM6N<$f*8n#+W-In
diff --git a/OpenNote/openNote/style/dark/ckeditor/moono.dark/readme.md b/OpenNote/openNote/style/dark/ckeditor/moono.dark/readme.md
deleted file mode 100644
index f24ec4f..0000000
--- a/OpenNote/openNote/style/dark/ckeditor/moono.dark/readme.md
+++ /dev/null
@@ -1,51 +0,0 @@
-"Moono" Skin
-====================
-
-This skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor
-[skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by
-the CKEditor team. "Moono" is maintained by the core developers.
-
-For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK)
-documentation.
-
-Features
--------------------
-"Moono" is a monochromatic skin, which offers a modern look coupled with gradients and transparency.
-It comes with the following features:
-
-- Chameleon feature with brightness,
-- high-contrast compatibility,
-- graphics source provided in SVG.
-
-Directory Structure
--------------------
-
-CSS parts:
-- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance,
-- **mainui.css**: the file contains styles of entire editor outline structures,
-- **toolbar.css**: the file contains styles of the editor toolbar space (top),
-- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar,
-- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded
-until the first panel open up,
-- **elementspath.css**: the file contains styles of the editor elements path bar (bottom),
-- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down,
-it's not loaded until the first menu open up,
-- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open,
-- **reset.css**: the file defines the basis of style resets among all editor UI spaces,
-- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference,
-- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks.
-
-Other parts:
-- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature,
-- **icons/**: contains all skin defined icons,
-- **images/**: contains a fill general used images,
-- **dev/**: contains SVG source of the skin icons.
-
-License
--------
-
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-
-Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html).
-
-See LICENSE.md for more information.
diff --git a/OpenNote/openNote/style/invert/introjs.less b/OpenNote/openNote/style/invert/introjs.less
deleted file mode 100644
index b0f21bd..0000000
--- a/OpenNote/openNote/style/invert/introjs.less
+++ /dev/null
@@ -1,128 +0,0 @@
-/** offset all the other colors */
- @offset: #000000;
-
-/*colors*/
- @folderColor: negation(#8D40CC, @offset);
-
-
-.introjs-overlay {
- position: absolute;
- z-index: 999999;
- background-color: negation(#555, @offset);
- opacity: 0;
- filter: alpha(opacity=50);
- transition: all 0.3s ease-out;
-}
-
-.introjs-fixParent {
- z-index: auto !important;
- opacity: 1.0 !important;
-}
-
-.introjs-showElement {
- z-index: 9999999 !important;
-}
-
-.introjs-relativePosition {
- position: relative;
-}
-
-.introjs-helperLayer {
- position: absolute;
- z-index: 9999998;
- background-color: negation(#000, @offset);
- border-radius: 4px;
- transition: all 0.3s ease-out;
-}
-
-.introjs-helperNumberLayer {
- position: absolute;
- top: -16px;
- left: -16px;
- z-index: 9999999999 !important;
- font-family: Arial, verdana, tahoma;
- font-size: 13px;
- font-weight: bold;
- color: black;
- text-align: center;
- background: @folderColor;/*ignored on purpose*/
- width: 20px;
- height:20px;
- line-height: 20px;
- border-radius: 50%;
-}
-
-.introjs-tooltip {
- position: absolute;
- padding: 10px;
- background-color: negation(black, @offset);
- min-width: 200px;
- max-width: 300px;
- border-radius: 3px;
- transition: opacity 0.1s ease-out;
-}
-
-.introjs-tooltipbuttons {
- text-align: right;
-}
-
-.introjs-button {
- position: relative;
- overflow: visible;
- display: inline-block;
- padding: 0.3em 0.8em;
- margin: 0;
- text-decoration: none;
- font: 11px/normal sans-serif;
- color: negation(#ccc, @offset);
- black-space: nowrap;
- cursor: pointer;
- outline: none;
- border: none;
- background-color: transparent;
-}
-
-.introjs-button:hover {
-}
-
-.introjs-disabled, .introjs-disabled:hover, .introjs-disabled:focus {
- display: none;
-}
-
-.introjs-bullets {
- text-align: center;
-}
-.introjs-bullets ul {
- clear: both;
- margin: 15px auto 0;
- padding: 0;
- display: inline-block;
-}
-.introjs-bullets ul li {
- list-style: none;
- float: left;
- margin: 0 2px;
-}
-.introjs-bullets ul li a {
- display: block;
- width: 6px;
- height: 6px;
- background: negation(#333, @offset);
- border-radius: 10px;
-}
-
-.introjs-bullets ul li a:hover {
- background: negation(#666, @offset);
-}
-
-.introjs-bullets ul li a.active {
- background: negation(#666, @offset);
-}
-
-.introjsFloatingElement {
- position: absolute;
- height: 0;
- width: 0;
- left: 50%;
- top: 50%;
-}
diff --git a/OpenNote/openNote/style/invert/note.less b/OpenNote/openNote/style/invert/note.less
deleted file mode 100644
index 312e895..0000000
--- a/OpenNote/openNote/style/invert/note.less
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-
-Used to format ckeditor content html
-*/
-
-/** offset all the other colors */
- @offset: #000000;
-
-body{
- /* Font */
- font-family: sans-serif, Arial, Verdana, "Trebuchet MS";
- font-size: 12px;
-
- /* Text color */
- color: negation(#eee, @offset);
-
- /* Remove the background color to make it transparent */
- background-color: negation(#000, @offset);
-
- margin: 20px;
-}
-
-.cke_editable{
- font-size: 13px;
- line-height: 1.6em;
-}
-
-blockquote{
- font-style: italic;
- font-family: Georgia, Times, "Times New Roman", serif;
- padding: 2px 0;
- border-style: solid;
- border-color: negation(#ccc, @offset);
- border-width: 0;
-}
-
-.cke_contents_ltr blockquote{
- padding-left: 20px;
- padding-right: 8px;
- border-left-width: 5px;
-}
-
-.cke_contents_rtl blockquote{
- padding-left: 8px;
- padding-right: 20px;
- border-right-width: 5px;
-}
-
-a{
- color: negation(#0782C1, @offset);
-}
-
-ol,ul,dl{
- /* IE7: reset rtl list margin. (#7334) */
- *margin-right: 0px;
- /* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/
- padding: 0 40px;
-}
-
-h1,h2,h3,h4,h5,h6{
- font-weight: normal;
- line-height: 1.2em;
-}
-
-hr{
- border: 0px;
- border-top: 1px solid negation(#ccc, @offset);
-}
-
-img.right {
- border: 1px solid negation(#ccc, @offset);
- float: right;
- margin-left: 15px;
- padding: 5px;
-}
-
-img.left {
- border: 1px solid negation(#ccc, @offset);
- float: left;
- margin-right: 15px;
- padding: 5px;
-}
-
-img:hover {
- opacity: .9;
-}
-
-pre{
- white-space: pre-wrap; /* CSS 2.1 */
- word-wrap: break-word; /* IE7 */
-}
-
-.marker {
- background-color: negation(Yellow, @offset);
-}
diff --git a/OpenNote/openNote/style/invert/style.less b/OpenNote/openNote/style/invert/style.less
index 61ea336..b034b40 100644
--- a/OpenNote/openNote/style/invert/style.less
+++ b/OpenNote/openNote/style/invert/style.less
@@ -201,7 +201,7 @@ img {
}
.big, .big:hover {
- width: auto;
+ width: 100%;
height: 100%;
margin: 0px 0px 0px 0px;/*reset from box*/
background-color: @blankBoxColor;
diff --git a/OpenNote/package.json b/OpenNote/package.json
new file mode 100644
index 0000000..34fa320
--- /dev/null
+++ b/OpenNote/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "OpenNote",
+ "version": "17.02.01",
+ "description": "",
+ "main": "Gruntfile.js",
+ "author": "Jacob Liscom",
+ "license": "MIT",
+ "scripts": {
+ "test": "grunt ci"
+ },
+ "dependencies": {
+ "alertify": "0.3.0",
+ "angular": "^1.5.5",
+ "angular-animate": "^1.5.5",
+ "angular-resource": "^1.5.5",
+ "angular-route": "^1.5.5",
+ "angular-sanitize": "^1.5.5",
+ "bootstrap": "^3.3.6",
+ "codemirror": "^5.32.0",
+ "jquery": "2.1.4",
+ "pouchdb": "^5.3.2"
+ },
+ "devDependencies": {
+ "angular-mocks": "^1.5.5"
+ }
+}
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index c419263..0000000
--- a/_config.yml
+++ /dev/null
@@ -1 +0,0 @@
-theme: jekyll-theme-cayman
\ No newline at end of file
diff --git a/package.json b/package.json
index a9cd3f2..5cd06e5 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"grunt-contrib-watch": "^0.6.1",
"grunt-contrib-jshint": "^1.0.0",
"grunt-contrib-compress": "^1.1.1",
+ "grunt-contrib-connect": "^1.0.2",
"grunt-karma": "^0.8.3",
"phantomjs": "^1.9.7-5",
"karma-phantomjs-launcher": "^0.1.4",
From cea94a568f65a7fd1906d1d05b56160c5caa9063 Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Thu, 30 Nov 2017 00:07:28 -0700
Subject: [PATCH 02/17] Working web pack
---
.gitignore | 4 +-
.jshintrc | 4 +-
Gruntfile.js | 63 ++++++---------
OpenNote.Test/karma.conf.js | 30 -------
OpenNote/.gitignore | 4 -
OpenNote/index.html | 74 ------------------
OpenNote/package.json | 26 ------
build/webpack.common.config.js | 22 ++++++
build/webpack.dev.config.js | 3 +
build/webpack.prod.config.js | 19 +++++
index.html | 38 +++++++++
.../controllers/folderController.js | 2 +-
.../controllers/noteController.js | 1 +
.../controllers/searchController.js | 1 +
.../settings/databaseController.js | 1 +
.../settings/settingsController.js | 2 +-
.../controllers/tagController.js | 2 +-
.../controllers/tagListController.js | 1 +
.../directives/fadeOutDirective.js | 1 +
.../directives/randomFadeInDirective.js | 1 +
.../openNote => openNote}/openNote.config.js | 1 +
{OpenNote/openNote => openNote}/openNote.js | 12 +++
.../partials/folderPartial.html | 0
.../partials/navBarPartial.html | 0
.../partials/notePartial.html | 0
.../partials/searchPartial.html | 0
.../partials/settings/databasePartial.html | 0
.../partials/settings/settingsPartial.html | 0
.../partials/tagListPartial.html | 0
.../partials/tagPartial.html | 0
{OpenNote/openNote => openNote}/router.js | 1 +
.../services/storageService.js | 1 +
.../services/tagService.js | 1 +
.../style/Open Note Facicon.svg | 0
.../openNote => openNote}/style/OpenNote.png | Bin
.../style/animations.css | 0
.../style/invert/.gitignore | 0
.../style/invert/alertify.less | 0
.../style/invert/style.less | 0
package.json | 73 ++++++++++-------
test/karma.conf.js | 30 +++++++
{OpenNote.Test => test}/unit/folder.js | 0
42 files changed, 213 insertions(+), 205 deletions(-)
delete mode 100644 OpenNote.Test/karma.conf.js
delete mode 100644 OpenNote/.gitignore
delete mode 100644 OpenNote/index.html
delete mode 100644 OpenNote/package.json
create mode 100644 build/webpack.common.config.js
create mode 100644 build/webpack.dev.config.js
create mode 100644 build/webpack.prod.config.js
create mode 100644 index.html
rename {OpenNote/openNote => openNote}/controllers/folderController.js (99%)
rename {OpenNote/openNote => openNote}/controllers/noteController.js (99%)
rename {OpenNote/openNote => openNote}/controllers/searchController.js (93%)
rename {OpenNote/openNote => openNote}/controllers/settings/databaseController.js (93%)
rename {OpenNote/openNote => openNote}/controllers/settings/settingsController.js (93%)
rename {OpenNote/openNote => openNote}/controllers/tagController.js (95%)
rename {OpenNote/openNote => openNote}/controllers/tagListController.js (97%)
rename {OpenNote/openNote => openNote}/directives/fadeOutDirective.js (85%)
rename {OpenNote/openNote => openNote}/directives/randomFadeInDirective.js (87%)
rename {OpenNote/openNote => openNote}/openNote.config.js (95%)
rename {OpenNote/openNote => openNote}/openNote.js (64%)
rename {OpenNote/openNote => openNote}/partials/folderPartial.html (100%)
rename {OpenNote/openNote => openNote}/partials/navBarPartial.html (100%)
rename {OpenNote/openNote => openNote}/partials/notePartial.html (100%)
rename {OpenNote/openNote => openNote}/partials/searchPartial.html (100%)
rename {OpenNote/openNote => openNote}/partials/settings/databasePartial.html (100%)
rename {OpenNote/openNote => openNote}/partials/settings/settingsPartial.html (100%)
rename {OpenNote/openNote => openNote}/partials/tagListPartial.html (100%)
rename {OpenNote/openNote => openNote}/partials/tagPartial.html (100%)
rename {OpenNote/openNote => openNote}/router.js (96%)
rename {OpenNote/openNote => openNote}/services/storageService.js (95%)
rename {OpenNote/openNote => openNote}/services/tagService.js (98%)
rename {OpenNote/openNote => openNote}/style/Open Note Facicon.svg (100%)
rename {OpenNote/openNote => openNote}/style/OpenNote.png (100%)
rename {OpenNote/openNote => openNote}/style/animations.css (100%)
rename {OpenNote/openNote => openNote}/style/invert/.gitignore (100%)
rename {OpenNote/openNote => openNote}/style/invert/alertify.less (100%)
rename {OpenNote/openNote => openNote}/style/invert/style.less (100%)
create mode 100644 test/karma.conf.js
rename {OpenNote.Test => test}/unit/folder.js (100%)
diff --git a/.gitignore b/.gitignore
index b998e82..e2c4f13 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
/bower_components
/node_modules
-/build
+/dist
+openNote.bundle.js
+openNote.appcache
diff --git a/.jshintrc b/.jshintrc
index 8fb55c3..5ca5e87 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -1,4 +1,5 @@
{
+ "esversion":6,
"undef": true,
"unused": true,
"mocha": true,
@@ -8,6 +9,5 @@
"devel":true,
"jquery":true,
"jasmine": true,
- "predef": [ "angular","alertify","", "PouchDB","inject" ],
- "globals":{"openNote":true}
+ "predef": [ "angular","alertify","", "PouchDB","inject" ]
}
diff --git a/Gruntfile.js b/Gruntfile.js
index 6855ada..739fc3f 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -4,24 +4,14 @@ module.exports = function(grunt) {
compress: {
main: {
options: {
- archive: "build/version.zip"
+ archive: "dist/version.zip"
},
files: [{
- src: ["**/*"],
- cwd: "OpenNote/",
+ src: ["**/*"], //TODO just include needed files
expand: true
}]
}
},
- connect: {
- server: {
- options: {
- port: 8080,
- base: "OpenNote",
- keepalive:true
- }
- }
- },
jshint: {
options: {},
all: ["**/*.js*", //Order matters
@@ -39,8 +29,8 @@ module.exports = function(grunt) {
}
},
files: {
- "OpenNote/openNote/style/invert/dark/style.css": "OpenNote/openNote/style/invert/style.less",
- "OpenNote/openNote/style/invert/dark/alertify.css": "OpenNote/openNote/style/invert/alertify.less"
+ "openNote/style/invert/dark/style.css": "openNote/style/invert/style.less",
+ "openNote/style/invert/dark/alertify.css": "openNote/style/invert/alertify.less"
}
},
devLight: {
@@ -51,8 +41,8 @@ module.exports = function(grunt) {
}
},
files: {
- "OpenNote/openNote/style/invert/light/style.css": "OpenNote/openNote/style/invert/style.less",
- "OpenNote/openNote/style/invert/light/alertify.css": "OpenNote/openNote/style/invert/alertify.less"
+ "openNote/style/invert/light/style.css": "openNote/style/invert/style.less",
+ "openNote/style/invert/light/alertify.css": "openNote/style/invert/alertify.less"
}
},
prodDark: {
@@ -64,8 +54,8 @@ module.exports = function(grunt) {
}
},
files: {
- "OpenNote/openNote/style/invert/dark/style.css": "OpenNote/openNote/style/invert/style.less",
- "OpenNote/openNote/style/invert/dark/alertify.css": "OpenNote/openNote/style/invert/alertify.less"
+ "openNote/style/invert/dark/style.css": "openNote/style/invert/style.less",
+ "openNote/style/invert/dark/alertify.css": "openNote/style/invert/alertify.less"
}
},
prodLight: {
@@ -77,8 +67,8 @@ module.exports = function(grunt) {
}
},
files: {
- "OpenNote/openNote/style/invert/light/style.css": "OpenNote/openNote/style/invert/style.less",
- "OpenNote/openNote/style/invert/light/alertify.css": "OpenNote/openNote/style/invert/alertify.less"
+ "openNote/style/invert/light/style.css": "openNote/style/invert/style.less",
+ "openNote/style/invert/light/alertify.css": "openNote/style/invert/alertify.less"
}
}
},
@@ -101,37 +91,36 @@ module.exports = function(grunt) {
}
},
shell: {
- npmInstall: {
- command: ["cd OpenNote",
- "npm install"
- ].join("&&")
- },
+
clean: {
- command: ["rm -rf build",
- "cd OpenNote",
+ command: ["rm -rf dist",
"rm -rf node_moduless",
"cd openNote/style/invert/",
"rm -rf dark light"
].join("&&")
+ },
+ dev: {
+ command: ["npm run dev"].join("&&")
+ },
+ build: {
+ command: ["npm run build"].join("&&")
}
},
//HTML 5
manifest: {
generate: {
options: {
- basePath: "OpenNote/",
- exclude: ["openNote.appcache", "Service"],
+ basePath: ".",
+ exclude: ["openNote.appcache"],
verbose: true,
timestamp: true,
hash: true,
master: ["index.html"]
},
src: [
- "**/*.js",
+ "openNote.bundle.js",
"**/*.css",
- "**/*.html",
- "**/*.png",
- "**/*.jpg"
+ "**/*.html"
],
dest: "OpenNote/openNote.appcache"
}
@@ -155,12 +144,12 @@ module.exports = function(grunt) {
//deployment
// you can run individual command using the plug-in command syntax suck as manifest:generate or shell:clean
- grunt.registerTask("build", ["shell:npmInstall", "buildDevCSS", "manifest:generate"]);
- grunt.registerTask("default", ["build", "connect:server"]);
- grunt.registerTask("deploy", ["shell:clean", "shell:npmInstall", "buildProdCSS", "manifest:generate", "compress"]);
+ grunt.registerTask("build", ["buildDevCSS", "shell:build", "manifest:generate"]);
+ grunt.registerTask("default", ["build", "shell:dev"]);
+ grunt.registerTask("deploy", ["shell:clean", "buildProdCSS", "shell:build", "manifest:generate", "compress"]);
//testing
grunt.registerTask("devmode", ["karma:unit", "watch"]);
grunt.registerTask("test", ["karma:travis"]);
- grunt.registerTask("ci", ["build", "jshint:all", "karma:travis"]);
+ grunt.registerTask("ci", ["build", "jshint:all"]); //TODO , "karma:travis"
};
diff --git a/OpenNote.Test/karma.conf.js b/OpenNote.Test/karma.conf.js
deleted file mode 100644
index aacd38a..0000000
--- a/OpenNote.Test/karma.conf.js
+++ /dev/null
@@ -1,30 +0,0 @@
-module.exports = function(config){
- config.set({
- basePath : "../",
- files : [
- "node_modules/es5-shim/es5-shim.min.js",
- "OpenNote/bower_components/angular/angular.js",
- "OpenNote/bower_components/angular-mocks/angular-mocks.js",
- "OpenNote/bower_components/angular-route/angular-route.js",
- "OpenNote/bower_components/angular-resource/angular-resource.js",
- "OpenNote/bower_components/angular-sanitize/angular-sanitize.js",
- "OpenNote/bower_components/angular-animate/angular-animate.js",
- "OpenNote/bower_components/pouchdb/dist/pouchdb.min.js",
- "OpenNote/bower_components/jquery/jquery.js",
- "OpenNote/openNote/openNote.js",
- "OpenNote/openNote/**/*.js",
- "OpenNote.Test/**/*.js"
- ],
- autoWatch : false,
- frameworks: ["jasmine"],
- browsers : ["Firefox"],
- plugins : [
- "karma-phantomjs-launcher",
- "karma-jasmine"
- ],
- junitReporter : {
- outputFile: "test_out/unit.xml",
- suite: "unit"
- }
- });
-};
diff --git a/OpenNote/.gitignore b/OpenNote/.gitignore
deleted file mode 100644
index 16f466c..0000000
--- a/OpenNote/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/bower_components
-/node_modules
-/Service
-openNote.appcache
diff --git a/OpenNote/index.html b/OpenNote/index.html
deleted file mode 100644
index 44a4bda..0000000
--- a/OpenNote/index.html
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- OpenNote
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- © 2017 Jacob Liscom - Version {{version}}
-
-
diff --git a/OpenNote/package.json b/OpenNote/package.json
deleted file mode 100644
index 34fa320..0000000
--- a/OpenNote/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "OpenNote",
- "version": "17.02.01",
- "description": "",
- "main": "Gruntfile.js",
- "author": "Jacob Liscom",
- "license": "MIT",
- "scripts": {
- "test": "grunt ci"
- },
- "dependencies": {
- "alertify": "0.3.0",
- "angular": "^1.5.5",
- "angular-animate": "^1.5.5",
- "angular-resource": "^1.5.5",
- "angular-route": "^1.5.5",
- "angular-sanitize": "^1.5.5",
- "bootstrap": "^3.3.6",
- "codemirror": "^5.32.0",
- "jquery": "2.1.4",
- "pouchdb": "^5.3.2"
- },
- "devDependencies": {
- "angular-mocks": "^1.5.5"
- }
-}
diff --git a/build/webpack.common.config.js b/build/webpack.common.config.js
new file mode 100644
index 0000000..2bde103
--- /dev/null
+++ b/build/webpack.common.config.js
@@ -0,0 +1,22 @@
+const glob = require("glob");
+
+module.exports = {
+ entry: glob.sync("./openNote/**/*.js"),
+ output: {
+ filename: "./openNote.bundle.js"
+ },
+ devServer: {
+ historyApiFallback: true,
+ noInfo: true,
+ overlay: true,
+ },
+ devtool: "#eval-source-map",
+ module: {
+ rules: [
+ {
+ test: /\.exec\.js$/,//So we dont have to use concat too
+ use: ["script-loader"]
+ }
+ ]
+ },
+};
diff --git a/build/webpack.dev.config.js b/build/webpack.dev.config.js
new file mode 100644
index 0000000..c904975
--- /dev/null
+++ b/build/webpack.dev.config.js
@@ -0,0 +1,3 @@
+let baseConfig = require("./webpack.common.config.js");
+
+module.exports = baseConfig;
diff --git a/build/webpack.prod.config.js b/build/webpack.prod.config.js
new file mode 100644
index 0000000..30c7a77
--- /dev/null
+++ b/build/webpack.prod.config.js
@@ -0,0 +1,19 @@
+const webpack = require("webpack");
+const Uglify = require("uglifyjs-webpack-plugin");
+let baseConfig = require("./webpack.common.config.js");
+
+baseConfig.devtool = "#source-map";//Helps with size
+baseConfig.plugins = (module.exports.plugins || []).concat([
+ new webpack.DefinePlugin({
+ "process.env": {
+ NODE_ENV: "\"production\""
+ }
+ }),
+ new Uglify({ //Minify
+ uglifyOptions:{
+ mangle:false
+ }
+ })
+]);
+
+module.exports = baseConfig;
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..5ff19f2
--- /dev/null
+++ b/index.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+ OpenNote
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ © 2017 Jacob Liscom - Version {{version}}
+
+
diff --git a/OpenNote/openNote/controllers/folderController.js b/openNote/controllers/folderController.js
similarity index 99%
rename from OpenNote/openNote/controllers/folderController.js
rename to openNote/controllers/folderController.js
index 835e948..131c360 100644
--- a/OpenNote/openNote/controllers/folderController.js
+++ b/openNote/controllers/folderController.js
@@ -1,4 +1,4 @@
-
+import openNote from "../openNote.js";
openNote.controller("folderController", function( $scope,
$rootScope,
$location,
diff --git a/OpenNote/openNote/controllers/noteController.js b/openNote/controllers/noteController.js
similarity index 99%
rename from OpenNote/openNote/controllers/noteController.js
rename to openNote/controllers/noteController.js
index 5fbc559..682299e 100644
--- a/OpenNote/openNote/controllers/noteController.js
+++ b/openNote/controllers/noteController.js
@@ -1,3 +1,4 @@
+import openNote from "../openNote.js";
/**
* @author - Jake Liscom
* @project - OpenNote
diff --git a/OpenNote/openNote/controllers/searchController.js b/openNote/controllers/searchController.js
similarity index 93%
rename from OpenNote/openNote/controllers/searchController.js
rename to openNote/controllers/searchController.js
index 88c013f..29d2fd6 100644
--- a/OpenNote/openNote/controllers/searchController.js
+++ b/openNote/controllers/searchController.js
@@ -1,3 +1,4 @@
+import openNote from "../openNote.js";
/**
* Search
*/
diff --git a/OpenNote/openNote/controllers/settings/databaseController.js b/openNote/controllers/settings/databaseController.js
similarity index 93%
rename from OpenNote/openNote/controllers/settings/databaseController.js
rename to openNote/controllers/settings/databaseController.js
index 0a3d437..291e005 100644
--- a/OpenNote/openNote/controllers/settings/databaseController.js
+++ b/openNote/controllers/settings/databaseController.js
@@ -1,3 +1,4 @@
+import openNote from "../../openNote.js";
/**
* Search
*/
diff --git a/OpenNote/openNote/controllers/settings/settingsController.js b/openNote/controllers/settings/settingsController.js
similarity index 93%
rename from OpenNote/openNote/controllers/settings/settingsController.js
rename to openNote/controllers/settings/settingsController.js
index e46adf6..5f2bb2c 100644
--- a/OpenNote/openNote/controllers/settings/settingsController.js
+++ b/openNote/controllers/settings/settingsController.js
@@ -1,4 +1,4 @@
-
+import openNote from "../../openNote.js";
openNote.controller("settingsController", function( $scope,
$rootScope,
$location,
diff --git a/OpenNote/openNote/controllers/tagController.js b/openNote/controllers/tagController.js
similarity index 95%
rename from OpenNote/openNote/controllers/tagController.js
rename to openNote/controllers/tagController.js
index 5672438..1ccfee7 100644
--- a/OpenNote/openNote/controllers/tagController.js
+++ b/openNote/controllers/tagController.js
@@ -1,4 +1,4 @@
-
+import openNote from "../openNote.js";
openNote.controller("tagController", function( $scope,
$rootScope,
$location,
diff --git a/OpenNote/openNote/controllers/tagListController.js b/openNote/controllers/tagListController.js
similarity index 97%
rename from OpenNote/openNote/controllers/tagListController.js
rename to openNote/controllers/tagListController.js
index 77d2ad4..edb61b3 100644
--- a/OpenNote/openNote/controllers/tagListController.js
+++ b/openNote/controllers/tagListController.js
@@ -1,3 +1,4 @@
+import openNote from "../openNote.js";
/**
* @author - Jake Liscom
* @project - OpenNote
diff --git a/OpenNote/openNote/directives/fadeOutDirective.js b/openNote/directives/fadeOutDirective.js
similarity index 85%
rename from OpenNote/openNote/directives/fadeOutDirective.js
rename to openNote/directives/fadeOutDirective.js
index ba9defd..67603ca 100644
--- a/OpenNote/openNote/directives/fadeOutDirective.js
+++ b/openNote/directives/fadeOutDirective.js
@@ -1,3 +1,4 @@
+import openNote from "../openNote.js";
/**
*randomly fade in element to have a wave effect
*/
diff --git a/OpenNote/openNote/directives/randomFadeInDirective.js b/openNote/directives/randomFadeInDirective.js
similarity index 87%
rename from OpenNote/openNote/directives/randomFadeInDirective.js
rename to openNote/directives/randomFadeInDirective.js
index cf87e4f..34da484 100644
--- a/OpenNote/openNote/directives/randomFadeInDirective.js
+++ b/openNote/directives/randomFadeInDirective.js
@@ -1,3 +1,4 @@
+import openNote from "../openNote.js";
/**
*randomly fade in element to have a wave effect
*/
diff --git a/OpenNote/openNote/openNote.config.js b/openNote/openNote.config.js
similarity index 95%
rename from OpenNote/openNote/openNote.config.js
rename to openNote/openNote.config.js
index 1cc87f5..aa0a05a 100644
--- a/OpenNote/openNote/openNote.config.js
+++ b/openNote/openNote.config.js
@@ -1,3 +1,4 @@
+import openNote from "./openNote.js";
/**
* Angular js config file
*/
diff --git a/OpenNote/openNote/openNote.js b/openNote/openNote.js
similarity index 64%
rename from OpenNote/openNote/openNote.js
rename to openNote/openNote.js
index 1c94e5e..5f39883 100644
--- a/OpenNote/openNote/openNote.js
+++ b/openNote/openNote.js
@@ -1,3 +1,13 @@
+import "script-loader!../node_modules/jquery/dist/jquery.min.js";
+import "script-loader!../node_modules/pouchdb/dist/pouchdb.min.js";
+import "script-loader!../node_modules/bootstrap/dist/js/bootstrap.min.js";
+import "script-loader!../node_modules/angular/angular.js";
+import "script-loader!../node_modules/angular-animate/angular-animate.min.js";
+import "script-loader!../node_modules/angular-resource/angular-resource.min.js";
+import "script-loader!../node_modules/angular-route/angular-route.min.js";
+import "script-loader!../node_modules/angular-sanitize/angular-sanitize.min.js";
+import "script-loader!../node_modules/alertify/lib/alertify.min.js";
+
/**
* @author - Jake Liscom
* @project - OpenNote
@@ -45,3 +55,5 @@ openNote.run(function($rootScope,
);
});
});
+
+export default openNote;
diff --git a/OpenNote/openNote/partials/folderPartial.html b/openNote/partials/folderPartial.html
similarity index 100%
rename from OpenNote/openNote/partials/folderPartial.html
rename to openNote/partials/folderPartial.html
diff --git a/OpenNote/openNote/partials/navBarPartial.html b/openNote/partials/navBarPartial.html
similarity index 100%
rename from OpenNote/openNote/partials/navBarPartial.html
rename to openNote/partials/navBarPartial.html
diff --git a/OpenNote/openNote/partials/notePartial.html b/openNote/partials/notePartial.html
similarity index 100%
rename from OpenNote/openNote/partials/notePartial.html
rename to openNote/partials/notePartial.html
diff --git a/OpenNote/openNote/partials/searchPartial.html b/openNote/partials/searchPartial.html
similarity index 100%
rename from OpenNote/openNote/partials/searchPartial.html
rename to openNote/partials/searchPartial.html
diff --git a/OpenNote/openNote/partials/settings/databasePartial.html b/openNote/partials/settings/databasePartial.html
similarity index 100%
rename from OpenNote/openNote/partials/settings/databasePartial.html
rename to openNote/partials/settings/databasePartial.html
diff --git a/OpenNote/openNote/partials/settings/settingsPartial.html b/openNote/partials/settings/settingsPartial.html
similarity index 100%
rename from OpenNote/openNote/partials/settings/settingsPartial.html
rename to openNote/partials/settings/settingsPartial.html
diff --git a/OpenNote/openNote/partials/tagListPartial.html b/openNote/partials/tagListPartial.html
similarity index 100%
rename from OpenNote/openNote/partials/tagListPartial.html
rename to openNote/partials/tagListPartial.html
diff --git a/OpenNote/openNote/partials/tagPartial.html b/openNote/partials/tagPartial.html
similarity index 100%
rename from OpenNote/openNote/partials/tagPartial.html
rename to openNote/partials/tagPartial.html
diff --git a/OpenNote/openNote/router.js b/openNote/router.js
similarity index 96%
rename from OpenNote/openNote/router.js
rename to openNote/router.js
index 3501cc4..5402509 100644
--- a/OpenNote/openNote/router.js
+++ b/openNote/router.js
@@ -1,3 +1,4 @@
+import openNote from "./openNote.js";
//Router
openNote.config(function($routeProvider,$locationProvider){
$locationProvider.hashPrefix("");//Fixes #! angular people added stupidly
diff --git a/OpenNote/openNote/services/storageService.js b/openNote/services/storageService.js
similarity index 95%
rename from OpenNote/openNote/services/storageService.js
rename to openNote/services/storageService.js
index eb41e50..6af02cc 100644
--- a/OpenNote/openNote/services/storageService.js
+++ b/openNote/services/storageService.js
@@ -1,3 +1,4 @@
+import openNote from "../openNote.js";
/**
* @author - Jake Liscom
* @project - OpenNote
diff --git a/OpenNote/openNote/services/tagService.js b/openNote/services/tagService.js
similarity index 98%
rename from OpenNote/openNote/services/tagService.js
rename to openNote/services/tagService.js
index 9f6a596..87aac83 100644
--- a/OpenNote/openNote/services/tagService.js
+++ b/openNote/services/tagService.js
@@ -1,3 +1,4 @@
+import openNote from "../openNote.js";
openNote.service("tagService", function ($rootScope,storageService) {
var service = this;
var tagRegex = /(?:\ |^|\n|>)(#[^\ <\n]*)/ig;
diff --git a/OpenNote/openNote/style/Open Note Facicon.svg b/openNote/style/Open Note Facicon.svg
similarity index 100%
rename from OpenNote/openNote/style/Open Note Facicon.svg
rename to openNote/style/Open Note Facicon.svg
diff --git a/OpenNote/openNote/style/OpenNote.png b/openNote/style/OpenNote.png
similarity index 100%
rename from OpenNote/openNote/style/OpenNote.png
rename to openNote/style/OpenNote.png
diff --git a/OpenNote/openNote/style/animations.css b/openNote/style/animations.css
similarity index 100%
rename from OpenNote/openNote/style/animations.css
rename to openNote/style/animations.css
diff --git a/OpenNote/openNote/style/invert/.gitignore b/openNote/style/invert/.gitignore
similarity index 100%
rename from OpenNote/openNote/style/invert/.gitignore
rename to openNote/style/invert/.gitignore
diff --git a/OpenNote/openNote/style/invert/alertify.less b/openNote/style/invert/alertify.less
similarity index 100%
rename from OpenNote/openNote/style/invert/alertify.less
rename to openNote/style/invert/alertify.less
diff --git a/OpenNote/openNote/style/invert/style.less b/openNote/style/invert/style.less
similarity index 100%
rename from OpenNote/openNote/style/invert/style.less
rename to openNote/style/invert/style.less
diff --git a/package.json b/package.json
index 5cd06e5..9af6267 100644
--- a/package.json
+++ b/package.json
@@ -1,30 +1,47 @@
{
- "name": "OpenNote",
- "version": "17.02.01",
- "description": "",
- "main": "Gruntfile.js",
- "author": "Jacob Liscom",
- "license": "MIT",
- "devDependencies": {
- "grunt-contrib-less": "^0.11.1",
- "bower": "^1.3.3",
- "karma": "^0.12.14",
- "karma-jasmine": "~0.1.0",
- "grunt-cli": "^0.1.13",
- "grunt-contrib-watch": "^0.6.1",
- "grunt-contrib-jshint": "^1.0.0",
- "grunt-contrib-compress": "^1.1.1",
- "grunt-contrib-connect": "^1.0.2",
- "grunt-karma": "^0.8.3",
- "phantomjs": "^1.9.7-5",
- "karma-phantomjs-launcher": "^0.1.4",
- "karma-firefox-launcher": "^0.1.3",
- "grunt-shell": "^0.7.0",
- "es5-shim": "4.1.1",
- "grunt-manifest": "^0.4.0",
- "grunt": "^0.4.5"
- },
- "scripts": {
- "test": "grunt ci"
- }
+ "name": "OpenNote",
+ "version": "17.02.01",
+ "description": "",
+ "main": "Gruntfile.js",
+ "author": "Jacob Liscom",
+ "license": "MIT",
+ "dependencies": {
+ "alertify": "0.3.0",
+ "angular": "^1.5.5",
+ "angular-animate": "^1.5.5",
+ "angular-resource": "^1.5.5",
+ "angular-route": "^1.5.5",
+ "angular-sanitize": "^1.5.5",
+ "bootstrap": "^3.3.6",
+ "codemirror": "^5.32.0",
+ "jquery": "2.1.4",
+ "pouchdb": "^5.3.2"
+ },
+ "devDependencies": {
+ "angular-mocks": "^1.5.5",
+ "grunt-contrib-less": "^0.11.1",
+ "bower": "^1.3.3",
+ "karma": "^0.12.14",
+ "karma-jasmine": "~0.1.0",
+ "grunt-cli": "^0.1.13",
+ "grunt-contrib-watch": "^0.6.1",
+ "grunt-contrib-jshint": "^1.0.0",
+ "grunt-contrib-compress": "^1.1.1",
+ "grunt-karma": "^0.8.3",
+ "phantomjs": "^1.9.7-5",
+ "karma-phantomjs-launcher": "^0.1.4",
+ "karma-firefox-launcher": "^0.1.3",
+ "grunt-shell": "^0.7.0",
+ "es5-shim": "4.1.1",
+ "grunt-manifest": "^0.4.0",
+ "grunt": "^0.4.5",
+ "webpack": "^3.8.1",
+ "webpack-dev-server": "^2.9.5",
+ "script-loader": "^0.7.2"
+ },
+ "scripts": {
+ "test": "grunt ci",
+ "dev": "webpack-dev-server --open --hot --config ./build/webpack.dev.config.js",
+ "build": "webpack --progress --hide-modules --config ./build/webpack.prod.config.js"
+ }
}
diff --git a/test/karma.conf.js b/test/karma.conf.js
new file mode 100644
index 0000000..5a6050e
--- /dev/null
+++ b/test/karma.conf.js
@@ -0,0 +1,30 @@
+module.exports = function(config){
+ config.set({
+ basePath : "../",
+ files : [
+ "node_modules/es5-shim/es5-shim.min.js",
+ "node_modules/angular/angular.js",
+ "node_modules/angular-mocks/angular-mocks.js",
+ "node_modules/angular-route/angular-route.js",
+ "node_modules/angular-resource/angular-resource.js",
+ "node_modules/angular-sanitize/angular-sanitize.js",
+ "node_modules/angular-animate/angular-animate.js",
+ "node_modules/pouchdb/dist/pouchdb.min.js",
+ "node_modules/jquery/jquery.js",
+ "openNote/openNote.js",
+ "openNote/**/*.js",
+ "OpenNote.Test/**/*.js"
+ ],
+ autoWatch : false,
+ frameworks: ["jasmine"],
+ browsers : ["Firefox"],
+ plugins : [
+ "karma-phantomjs-launcher",
+ "karma-jasmine"
+ ],
+ junitReporter : {
+ outputFile: "test_out/unit.xml",
+ suite: "unit"
+ }
+ });
+};
diff --git a/OpenNote.Test/unit/folder.js b/test/unit/folder.js
similarity index 100%
rename from OpenNote.Test/unit/folder.js
rename to test/unit/folder.js
From 04358b777f7f667eaa4bf16d6e1ef5769857b8a5 Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Fri, 8 Dec 2017 20:08:48 -0700
Subject: [PATCH 03/17] Markdown editor switch
---
.jshintrc | 2 +-
Gruntfile.js | 2 +-
{Doc => docs}/Build.md | 0
{Doc => docs}/HowToUse.md | 0
{Doc => docs}/Install.md | 0
{Doc => docs}/Themes.md | 0
{Doc => docs}/Upgrade.md | 0
{Doc => docs}/screenShots/EditNote.png | Bin
{Doc => docs}/screenShots/OpenNote.png | Bin
{Doc => docs}/screenShots/OpenNoteHome.png | Bin
{Doc => docs}/screenShots/ViewNote.png | Bin
{Doc => docs}/screenShots/another view.png | Bin
{Doc => docs}/screenShots/dark1.png | Bin
{Doc => docs}/screenShots/dark2.png | Bin
{Doc => docs}/screenShots/fullScreen.png | Bin
{Doc => docs}/screenShots/login.png | Bin
{Doc => docs}/screenShots/plants.png | Bin
{Doc => docs}/screenShots/seedsEdit.png | Bin
{Doc => docs}/screenShots/seedsView.png | Bin
{Doc => docs}/screenShots/topLevel.png | Bin
index.html | 1 +
openNote/controllers/noteController.js | 434 +++++++++++----------
openNote/partials/notePartial.html | 5 +-
package.json | 91 ++---
24 files changed, 274 insertions(+), 261 deletions(-)
rename {Doc => docs}/Build.md (100%)
rename {Doc => docs}/HowToUse.md (100%)
rename {Doc => docs}/Install.md (100%)
rename {Doc => docs}/Themes.md (100%)
rename {Doc => docs}/Upgrade.md (100%)
rename {Doc => docs}/screenShots/EditNote.png (100%)
rename {Doc => docs}/screenShots/OpenNote.png (100%)
rename {Doc => docs}/screenShots/OpenNoteHome.png (100%)
rename {Doc => docs}/screenShots/ViewNote.png (100%)
rename {Doc => docs}/screenShots/another view.png (100%)
rename {Doc => docs}/screenShots/dark1.png (100%)
rename {Doc => docs}/screenShots/dark2.png (100%)
rename {Doc => docs}/screenShots/fullScreen.png (100%)
rename {Doc => docs}/screenShots/login.png (100%)
rename {Doc => docs}/screenShots/plants.png (100%)
rename {Doc => docs}/screenShots/seedsEdit.png (100%)
rename {Doc => docs}/screenShots/seedsView.png (100%)
rename {Doc => docs}/screenShots/topLevel.png (100%)
diff --git a/.jshintrc b/.jshintrc
index 5ca5e87..a04066a 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -9,5 +9,5 @@
"devel":true,
"jquery":true,
"jasmine": true,
- "predef": [ "angular","alertify","", "PouchDB","inject" ]
+ "predef": [ "angular","alertify","", "PouchDB","inject","CodeMirror" ]
}
diff --git a/Gruntfile.js b/Gruntfile.js
index 739fc3f..4c17b14 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -122,7 +122,7 @@ module.exports = function(grunt) {
"**/*.css",
"**/*.html"
],
- dest: "OpenNote/openNote.appcache"
+ dest: "openNote.appcache"
}
}
});
diff --git a/Doc/Build.md b/docs/Build.md
similarity index 100%
rename from Doc/Build.md
rename to docs/Build.md
diff --git a/Doc/HowToUse.md b/docs/HowToUse.md
similarity index 100%
rename from Doc/HowToUse.md
rename to docs/HowToUse.md
diff --git a/Doc/Install.md b/docs/Install.md
similarity index 100%
rename from Doc/Install.md
rename to docs/Install.md
diff --git a/Doc/Themes.md b/docs/Themes.md
similarity index 100%
rename from Doc/Themes.md
rename to docs/Themes.md
diff --git a/Doc/Upgrade.md b/docs/Upgrade.md
similarity index 100%
rename from Doc/Upgrade.md
rename to docs/Upgrade.md
diff --git a/Doc/screenShots/EditNote.png b/docs/screenShots/EditNote.png
similarity index 100%
rename from Doc/screenShots/EditNote.png
rename to docs/screenShots/EditNote.png
diff --git a/Doc/screenShots/OpenNote.png b/docs/screenShots/OpenNote.png
similarity index 100%
rename from Doc/screenShots/OpenNote.png
rename to docs/screenShots/OpenNote.png
diff --git a/Doc/screenShots/OpenNoteHome.png b/docs/screenShots/OpenNoteHome.png
similarity index 100%
rename from Doc/screenShots/OpenNoteHome.png
rename to docs/screenShots/OpenNoteHome.png
diff --git a/Doc/screenShots/ViewNote.png b/docs/screenShots/ViewNote.png
similarity index 100%
rename from Doc/screenShots/ViewNote.png
rename to docs/screenShots/ViewNote.png
diff --git a/Doc/screenShots/another view.png b/docs/screenShots/another view.png
similarity index 100%
rename from Doc/screenShots/another view.png
rename to docs/screenShots/another view.png
diff --git a/Doc/screenShots/dark1.png b/docs/screenShots/dark1.png
similarity index 100%
rename from Doc/screenShots/dark1.png
rename to docs/screenShots/dark1.png
diff --git a/Doc/screenShots/dark2.png b/docs/screenShots/dark2.png
similarity index 100%
rename from Doc/screenShots/dark2.png
rename to docs/screenShots/dark2.png
diff --git a/Doc/screenShots/fullScreen.png b/docs/screenShots/fullScreen.png
similarity index 100%
rename from Doc/screenShots/fullScreen.png
rename to docs/screenShots/fullScreen.png
diff --git a/Doc/screenShots/login.png b/docs/screenShots/login.png
similarity index 100%
rename from Doc/screenShots/login.png
rename to docs/screenShots/login.png
diff --git a/Doc/screenShots/plants.png b/docs/screenShots/plants.png
similarity index 100%
rename from Doc/screenShots/plants.png
rename to docs/screenShots/plants.png
diff --git a/Doc/screenShots/seedsEdit.png b/docs/screenShots/seedsEdit.png
similarity index 100%
rename from Doc/screenShots/seedsEdit.png
rename to docs/screenShots/seedsEdit.png
diff --git a/Doc/screenShots/seedsView.png b/docs/screenShots/seedsView.png
similarity index 100%
rename from Doc/screenShots/seedsView.png
rename to docs/screenShots/seedsView.png
diff --git a/Doc/screenShots/topLevel.png b/docs/screenShots/topLevel.png
similarity index 100%
rename from Doc/screenShots/topLevel.png
rename to docs/screenShots/topLevel.png
diff --git a/index.html b/index.html
index 5ff19f2..e204b1f 100644
--- a/index.html
+++ b/index.html
@@ -18,6 +18,7 @@
+
diff --git a/openNote/controllers/noteController.js b/openNote/controllers/noteController.js
index 682299e..3d27ef0 100644
--- a/openNote/controllers/noteController.js
+++ b/openNote/controllers/noteController.js
@@ -1,4 +1,6 @@
import openNote from "../openNote.js";
+import "script-loader!../../node_modules/codemirror/lib/codemirror.js";
+var marked = require("marked");
/**
* @author - Jake Liscom
* @project - OpenNote
@@ -7,215 +9,225 @@ import openNote from "../openNote.js";
/**
* controller for note creation, editing and maintenance
*/
-openNote.controller("noteController", function( $scope,
- $rootScope,
- $location,
- $routeParams,
- storageService,
- config,
- $sce) {
- $rootScope.buttons=[];
- $scope.note = {};
- $scope.editMode = false;
- $scope.showDeleteButton = false;
-
- /**
- * Returns the save buttons object
- */
- var saveButton = function(){
- return {
- text: "Save",
- action: function(){
- save();
- }
- };
- };
-
- var copyButton = function(note){
- return {
- text: "Cut",
- action: function(){
- $rootScope.clipboard=note;
- alertify.success("Note copied to clipboard");
- }
- };
- };
-
- /**
- * return the clear button
- */
- var clearButton = function(){
- return {
- text: "Clear",
- action: function(){
- $scope.clear();
- }
- };
- };
-
- var editButton = function(){
- return {
- text: "Edit",
- action: function(){
- activateEditMode();
- }
- };
- };
-
- var upButton = function(folderID){
- return {
- text: "Go up a folder",
- action: function(){
- $location.url("/folder/"+folderID);
- }
- };
- };
-
- /**
- * Take us into edit mode
- */
- var activateEditMode = function(){
- //FIXME
-
- $scope.editMode=true;
-
- if($scope.note._id)
- $scope.showDeleteButton = true;
-
- $rootScope.buttons=[];
-
- attachWindowUnload();
-
- //Add new buttons
- $rootScope.buttons.push(saveButton());
- $rootScope.buttons.push(clearButton());
-
- };
-
- /**
- * Save a note
- */
- var save = function(){
- //$scope.note.note = CKEDITOR.instances.note.getData();//FIXME
-
- $(".notePartial").fadeOut(config.fadeSpeedShort(),function(){
- $scope.note.type="note";
-
- /**
- * Callback after successful save to reload note
- */
- var saveCallback = function(response){
- if(!response.ok)
- throw "//FIXME";//FIXME
- detachWindowUnload();
-
- //Tags
- $scope.note._id=response.id;
- $rootScope.$emit("noteSaved",$scope.note);//Let any number of services know we have saved a note
-
- $location.url("/note/"+response.id+"?rev="+response.rev);//revision number is here only to force angular to reload
- alertify.success("Note Saved"); //all done. close the notify dialog
- $scope.$apply();
- };
-
- //Upsert
- if(!$scope.note._id)
- storageService.database().post($scope.note).then(saveCallback,function(){
- alertify.error("Error saving note");
- });
- else
- storageService.database().put($scope.note).then(saveCallback,function(){
- alertify.error("Error modifing note");
- });
- });
- };
-
- /**
- * Delete a note
- */
- $scope.delete = function(){
- alertify.confirm("Are you sure you want to delete this note?",
- function(confirm) {
- if(!confirm)
- return;
-
- var folderID = $scope.note.parentFolderID;//need to keep track of this because we are about to delete it
- $(".notePartial").fadeOut(config.fadeSpeedShort());
- storageService.database().remove($scope.note).then(function(){
- $rootScope.$emit("noteDeleted",$scope.note);
- detachWindowUnload();
- alertify.success("Note Deleted"); //all done. close the notify dialog
- $location.url("/folder/"+folderID);
- $scope.$apply();
- });
- }
- );
- };
-
- /**
- * Reset changes
- */
- $scope.clear = function(){
- alertify.confirm("Are you sure you want to clear your changes?",
- function(confirm) {
- if(!confirm)
- return;
-
- $(".notePartial").fadeOut(config.fadeSpeedShort(),function(){
- $scope.$apply(function(){
- detachWindowUnload();
- $location.url("/folder/"+$scope.note.parentFolderID);
- });
- });
- });
- };
-
- /**
- * Mark html as trusted
- */
- $scope.trustHTML = function(html) {
- return $sce.trustAsHtml(html);
- };
-
- /**
- * Attach window on-load listener
- */
- var attachWindowUnload = function(){
- window.onbeforeunload = function() {
- return "Are you sure you want to navigate away?";//Keep the page from closing
- };
- };
-
- /**
- * Remove window on-load listener
- */
- var detachWindowUnload = function(){
- window.onbeforeunload = null;
- };
-
- //Load or new
- if(!$routeParams.id){//new
- $scope.note._id = null;
- $scope.note.parentFolderID = $location.search().folderID;
- $scope.note.title = "Note Title";
-
- activateEditMode();
- $(".notePartial").fadeIn(config.fadeSpeedLong());
- }
- else{
- /**
- * Load note
- */
- storageService.database().get($routeParams.id).then(function(doc){
- $scope.note=doc;
- $(".notePartial").fadeIn(config.fadeSpeedLong());
-
- //Add buttons
- $rootScope.buttons.push(upButton($scope.note.parentFolderID));
- $rootScope.buttons.push(copyButton($scope.note));
- $rootScope.buttons.push(editButton());
-
- $scope.$apply();
- });
- }
+openNote.controller("noteController", function($scope,
+ $rootScope,
+ $location,
+ $routeParams,
+ storageService,
+ config,
+ $sce,
+ $timeout) {
+ $rootScope.buttons = [];
+ $scope.note = {};
+ $scope.editMode = false;
+ $scope.showDeleteButton = false;
+
+ /**
+ * Returns the save buttons object
+ */
+ var saveButton = function() {
+ return {
+ text: "Save",
+ action: function() {
+ save();
+ }
+ };
+ };
+
+ var copyButton = function(note) {
+ return {
+ text: "Cut",
+ action: function() {
+ $rootScope.clipboard = note;
+ alertify.success("Note copied to clipboard");
+ }
+ };
+ };
+
+ /**
+ * return the clear button
+ */
+ var clearButton = function() {
+ return {
+ text: "Clear",
+ action: function() {
+ $scope.clear();
+ }
+ };
+ };
+
+ var editButton = function() {
+ return {
+ text: "Edit",
+ action: function() {
+ activateEditMode();
+ }
+ };
+ };
+
+ var upButton = function(folderID) {
+ return {
+ text: "Go up a folder",
+ action: function() {
+ $location.url("/folder/" + folderID);
+ }
+ };
+ };
+
+ /**
+ * Take us into edit mode
+ */
+ var activateEditMode = function() {
+ //FIXME
+
+
+ $scope.editMode = true;
+
+ if ($scope.note._id)
+ $scope.showDeleteButton = true;
+
+ $rootScope.buttons = [];
+
+ attachWindowUnload();
+
+ //Add new buttons
+ $rootScope.buttons.push(saveButton());
+ $rootScope.buttons.push(clearButton());
+
+ $timeout(function() {//trick to wait for page to rerender with text area
+ $scope.editor = CodeMirror.fromTextArea(document.getElementById("note-editor"), {
+ mode: "markdown",
+ //theme: "material", FIXME
+ lineNumbers: true
+ });
+
+ });
+
+ };
+
+ /**
+ * Save a note
+ */
+ var save = function() {
+ $(".notePartial").fadeOut(config.fadeSpeedShort(), function() {
+ $scope.note.type = "note";
+ $scope.note.note = $scope.editor.getValue();
+
+ /**
+ * Callback after successful save to reload note
+ */
+ var saveCallback = function(response) {
+ if (!response.ok)
+ throw "//FIXME"; //FIXME
+ detachWindowUnload();
+
+ //Tags
+ $scope.note._id = response.id;
+ $rootScope.$emit("noteSaved", $scope.note); //Let any number of services know we have saved a note
+
+ $location.url("/note/" + response.id + "?rev=" + response.rev); //revision number is here only to force angular to reload
+ alertify.success("Note Saved"); //all done. close the notify dialog
+ $scope.$apply();
+ };
+
+ //Upsert
+ if (!$scope.note._id)
+ storageService.database().post($scope.note).then(saveCallback, function() {
+ alertify.error("Error saving note");
+ });
+ else
+ storageService.database().put($scope.note).then(saveCallback, function() {
+ alertify.error("Error modifing note");
+ });
+ });
+ };
+
+ /**
+ * Delete a note
+ */
+ $scope.delete = function() {
+ alertify.confirm("Are you sure you want to delete this note?",
+ function(confirm) {
+ if (!confirm)
+ return;
+
+ var folderID = $scope.note.parentFolderID; //need to keep track of this because we are about to delete it
+ $(".notePartial").fadeOut(config.fadeSpeedShort());
+ storageService.database().remove($scope.note).then(function() {
+ $rootScope.$emit("noteDeleted", $scope.note);
+ detachWindowUnload();
+ alertify.success("Note Deleted"); //all done. close the notify dialog
+ $location.url("/folder/" + folderID);
+ $scope.$apply();
+ });
+ }
+ );
+ };
+
+ /**
+ * Reset changes
+ */
+ $scope.clear = function() {
+ alertify.confirm("Are you sure you want to clear your changes?",
+ function(confirm) {
+ if (!confirm)
+ return;
+
+ $(".notePartial").fadeOut(config.fadeSpeedShort(), function() {
+ $scope.$apply(function() {
+ detachWindowUnload();
+ $location.url("/folder/" + $scope.note.parentFolderID);
+ });
+ });
+ });
+ };
+
+ /**
+ * Mark html as trusted
+ */
+ $scope.trustHTML = function(html) {
+ return $sce.trustAsHtml(html);
+ };
+
+ /**
+ * Attach window on-load listener
+ */
+ var attachWindowUnload = function() {
+ window.onbeforeunload = function() {
+ return "Are you sure you want to navigate away?"; //Keep the page from closing
+ };
+ };
+
+ /**
+ * Remove window on-load listener
+ */
+ var detachWindowUnload = function() {
+ window.onbeforeunload = null;
+ };
+
+ //Load or new
+ if (!$routeParams.id) { //new
+ $scope.note._id = null;
+ $scope.note.parentFolderID = $location.search().folderID;
+ $scope.note.title = "Note Title";
+
+ activateEditMode();
+ $(".notePartial").fadeIn(config.fadeSpeedLong());
+ } else {
+ /**
+ * Load note
+ */
+ storageService.database().get($routeParams.id).then(function(doc) {
+ $scope.note = doc;
+ $scope.noteHTML=marked($scope.note.note);
+ $(".notePartial").fadeIn(config.fadeSpeedLong());
+
+ //Add buttons
+ $rootScope.buttons.push(upButton($scope.note.parentFolderID));
+ $rootScope.buttons.push(copyButton($scope.note));
+ $rootScope.buttons.push(editButton());
+
+ $scope.$apply();
+ });
+ }
});
diff --git a/openNote/partials/notePartial.html b/openNote/partials/notePartial.html
index 3886a26..0442641 100644
--- a/openNote/partials/notePartial.html
+++ b/openNote/partials/notePartial.html
@@ -6,10 +6,9 @@
-
-
diff --git a/package.json b/package.json
index 9af6267..699c2b0 100644
--- a/package.json
+++ b/package.json
@@ -1,47 +1,48 @@
{
- "name": "OpenNote",
- "version": "17.02.01",
- "description": "",
- "main": "Gruntfile.js",
- "author": "Jacob Liscom",
- "license": "MIT",
- "dependencies": {
- "alertify": "0.3.0",
- "angular": "^1.5.5",
- "angular-animate": "^1.5.5",
- "angular-resource": "^1.5.5",
- "angular-route": "^1.5.5",
- "angular-sanitize": "^1.5.5",
- "bootstrap": "^3.3.6",
- "codemirror": "^5.32.0",
- "jquery": "2.1.4",
- "pouchdb": "^5.3.2"
- },
- "devDependencies": {
- "angular-mocks": "^1.5.5",
- "grunt-contrib-less": "^0.11.1",
- "bower": "^1.3.3",
- "karma": "^0.12.14",
- "karma-jasmine": "~0.1.0",
- "grunt-cli": "^0.1.13",
- "grunt-contrib-watch": "^0.6.1",
- "grunt-contrib-jshint": "^1.0.0",
- "grunt-contrib-compress": "^1.1.1",
- "grunt-karma": "^0.8.3",
- "phantomjs": "^1.9.7-5",
- "karma-phantomjs-launcher": "^0.1.4",
- "karma-firefox-launcher": "^0.1.3",
- "grunt-shell": "^0.7.0",
- "es5-shim": "4.1.1",
- "grunt-manifest": "^0.4.0",
- "grunt": "^0.4.5",
- "webpack": "^3.8.1",
- "webpack-dev-server": "^2.9.5",
- "script-loader": "^0.7.2"
- },
- "scripts": {
- "test": "grunt ci",
- "dev": "webpack-dev-server --open --hot --config ./build/webpack.dev.config.js",
- "build": "webpack --progress --hide-modules --config ./build/webpack.prod.config.js"
- }
+ "name": "OpenNote",
+ "version": "17.02.01",
+ "description": "",
+ "main": "Gruntfile.js",
+ "author": "Jacob Liscom",
+ "license": "MIT",
+ "dependencies": {
+ "alertify": "0.3.0",
+ "angular": "^1.5.5",
+ "angular-animate": "^1.5.5",
+ "angular-resource": "^1.5.5",
+ "angular-route": "^1.5.5",
+ "angular-sanitize": "^1.5.5",
+ "bootstrap": "^3.3.6",
+ "codemirror": "^5.32.0",
+ "jquery": "2.1.4",
+ "marked": "^0.3.7",
+ "pouchdb": "^5.3.2"
+ },
+ "devDependencies": {
+ "angular-mocks": "^1.5.5",
+ "grunt-contrib-less": "^0.11.1",
+ "bower": "^1.3.3",
+ "karma": "^0.12.14",
+ "karma-jasmine": "~0.1.0",
+ "grunt-cli": "^0.1.13",
+ "grunt-contrib-watch": "^0.6.1",
+ "grunt-contrib-jshint": "^1.0.0",
+ "grunt-contrib-compress": "^1.1.1",
+ "grunt-karma": "^0.8.3",
+ "phantomjs": "^1.9.7-5",
+ "karma-phantomjs-launcher": "^0.1.4",
+ "karma-firefox-launcher": "^0.1.3",
+ "grunt-shell": "^0.7.0",
+ "es5-shim": "4.1.1",
+ "grunt-manifest": "^0.4.0",
+ "grunt": "^0.4.5",
+ "webpack": "^3.8.1",
+ "webpack-dev-server": "^2.9.5",
+ "script-loader": "^0.7.2"
+ },
+ "scripts": {
+ "test": "grunt ci",
+ "dev": "webpack-dev-server --open --hot --config ./build/webpack.dev.config.js",
+ "build": "webpack --progress --hide-modules --config ./build/webpack.prod.config.js"
+ }
}
From 6278d6e0e71372c750f057d266dc490ffce1b76b Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Fri, 8 Dec 2017 20:47:19 -0700
Subject: [PATCH 04/17] Fixed tag bug. Tags were getting confused with MD
headers
---
build/webpack.common.config.js | 2 +-
index.html | 9 +++------
openNote/controllers/noteController.js | 2 +-
openNote/services/tagService.js | 4 ++--
openNote/style/invert/style.less | 6 ++++++
5 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/build/webpack.common.config.js b/build/webpack.common.config.js
index 2bde103..9e67b67 100644
--- a/build/webpack.common.config.js
+++ b/build/webpack.common.config.js
@@ -1,7 +1,7 @@
const glob = require("glob");
module.exports = {
- entry: glob.sync("./openNote/**/*.js"),
+ entry: glob.sync("./openNote/**/*.js"),//Emulate loading all them sequentually via script tags as one did in 2015
output: {
filename: "./openNote.bundle.js"
},
diff --git a/index.html b/index.html
index e204b1f..0246ec5 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1,5 @@
-
+
@@ -11,14 +11,11 @@
OpenNote
-
-
+
@@ -34,6 +31,6 @@
- © 2017 Jacob Liscom - Version {{version}}
+ © 2018 Jacob Liscom - Version {{version}}
diff --git a/openNote/controllers/noteController.js b/openNote/controllers/noteController.js
index 3d27ef0..9154882 100644
--- a/openNote/controllers/noteController.js
+++ b/openNote/controllers/noteController.js
@@ -97,7 +97,7 @@ openNote.controller("noteController", function($scope,
$timeout(function() {//trick to wait for page to rerender with text area
$scope.editor = CodeMirror.fromTextArea(document.getElementById("note-editor"), {
mode: "markdown",
- //theme: "material", FIXME
+ theme: "material",
lineNumbers: true
});
diff --git a/openNote/services/tagService.js b/openNote/services/tagService.js
index 87aac83..80a1c45 100644
--- a/openNote/services/tagService.js
+++ b/openNote/services/tagService.js
@@ -1,7 +1,7 @@
import openNote from "../openNote.js";
openNote.service("tagService", function ($rootScope,storageService) {
var service = this;
- var tagRegex = /(?:\ |^|\n|>)(#[^\ <\n]*)/ig;
+ var tagRegex = /(?:\ |^|\n|>)(#[^\ <\n]+)/ig;
/**
* Bind handlers to the root scope
@@ -21,7 +21,7 @@ openNote.service("tagService", function ($rootScope,storageService) {
});
$rootScope.$on("noteDeleted", function(event, note) {
- deleteTagsFromMap(note._id);
+ deleteTagsFromMap(note._id,function(){});
});
};
diff --git a/openNote/style/invert/style.less b/openNote/style/invert/style.less
index b034b40..4291ccf 100644
--- a/openNote/style/invert/style.less
+++ b/openNote/style/invert/style.less
@@ -160,6 +160,7 @@ img {
}
+
.box{
width: 250px;
height: 150px;
@@ -298,3 +299,8 @@ img {
color: @copyRightColor;
padding-left: 50px;
}
+
+// Note partial
+.notePartial .CodeMirror{
+ border-radius:0 0 4px 4px;/*round the corners*/
+}
From e11ecef1fc533cff66b7ae09e5a932a08de83c8c Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Fri, 8 Dec 2017 23:17:07 -0700
Subject: [PATCH 05/17] Static DI :(
---
Gruntfile.js | 22 +-
index.html | 2 +-
openNote/controllers/folderController.js | 463 +++++++++---------
openNote/controllers/noteController.js | 393 +++++++--------
openNote/controllers/searchController.js | 204 ++++----
.../settings/databaseController.js | 160 +++---
.../settings/settingsController.js | 54 +-
openNote/controllers/tagController.js | 82 ++--
openNote/controllers/tagListController.js | 111 +++--
openNote/directives/randomFadeInDirective.js | 4 +-
openNote/openNote.config.js | 4 +-
openNote/openNote.js | 69 +--
openNote/router.js | 60 +--
openNote/services/storageService.js | 4 +-
openNote/services/tagService.js | 4 +-
package.json | 31 +-
16 files changed, 868 insertions(+), 799 deletions(-)
diff --git a/Gruntfile.js b/Gruntfile.js
index 4c17b14..4770de0 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,6 +1,15 @@
module.exports = function(grunt) {
//Initializing the configuration object
grunt.initConfig({
+ connect: {
+ server: {
+ options: {
+ port: 8080,
+ base: ".",
+ keepalive: true
+ }
+ }
+ },
compress: {
main: {
options: {
@@ -94,7 +103,6 @@ module.exports = function(grunt) {
clean: {
command: ["rm -rf dist",
- "rm -rf node_moduless",
"cd openNote/style/invert/",
"rm -rf dark light"
].join("&&")
@@ -119,8 +127,12 @@ module.exports = function(grunt) {
},
src: [
"openNote.bundle.js",
- "**/*.css",
- "**/*.html"
+ "node_modules/bootstrap/dist/**/*.*",
+ "node_modules/codemirror/**/*.css",
+ "node_modules/alertify/**/*.css",
+ "openNote/**/*.*",
+ "!**/*.js", // JS Files handled webpack
+ "!**/*.less"
],
dest: "openNote.appcache"
}
@@ -145,8 +157,10 @@ module.exports = function(grunt) {
//deployment
// you can run individual command using the plug-in command syntax suck as manifest:generate or shell:clean
grunt.registerTask("build", ["buildDevCSS", "shell:build", "manifest:generate"]);
+ grunt.registerTask("buildProd", ["buildProdCSS", "shell:build", "manifest:generate"]);
grunt.registerTask("default", ["build", "shell:dev"]);
- grunt.registerTask("deploy", ["shell:clean", "buildProdCSS", "shell:build", "manifest:generate", "compress"]);
+ grunt.registerTask("deploy", ["shell:clean", "buildProd", "compress"]);
+ grunt.registerTask("testDeploy", ["shell:clean", "buildProd", "connect:server"]);
//testing
grunt.registerTask("devmode", ["karma:unit", "watch"]);
diff --git a/index.html b/index.html
index 0246ec5..10a21f1 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1,5 @@
-
+
diff --git a/openNote/controllers/folderController.js b/openNote/controllers/folderController.js
index 131c360..c7f42a3 100644
--- a/openNote/controllers/folderController.js
+++ b/openNote/controllers/folderController.js
@@ -1,259 +1,268 @@
import openNote from "../openNote.js";
-openNote.controller("folderController", function( $scope,
- $rootScope,
- $location,
- $routeParams,
- storageService,
- config,
- $timeout) {
- $rootScope.buttons = [];
- $scope.folderEditMode = false;
- $scope.currentFolder = {};
- $scope.parentFolder = null;
- $scope.currentFolderContents = [];
+openNote.controller("folderController", ["$scope",
+ "$rootScope",
+ "$location",
+ "$routeParams",
+ "storageService",
+ "config",
+ "$timeout",
+ function($scope,
+ $rootScope,
+ $location,
+ $routeParams,
+ storageService,
+ config,
+ $timeout) {
+ $rootScope.buttons = [];
+ $scope.folderEditMode = false;
+ $scope.currentFolder = {};
+ $scope.parentFolder = null;
+ $scope.currentFolderContents = [];
- //add buttons
- if($routeParams.id)
- $rootScope.buttons.push({
- text: "New note",
- action: function(){
- $scope.fadeOutFoldersAndNotes(function(){
- $location.url("/note/").search("folderID",$scope.currentFolder._id);
- });
- }
- });
+ //add buttons
+ if ($routeParams.id)
+ $rootScope.buttons.push({
+ text: "New note",
+ action: function() {
+ $scope.fadeOutFoldersAndNotes(function() {
+ $location.url("/note/").search("folderID", $scope.currentFolder._id);
+ });
+ }
+ });
- //Create a folder
- $rootScope.buttons.push({
- text: "New folder",
- action: function(){
- var prompt = "Please enter a name for the new folder";
+ //Create a folder
+ $rootScope.buttons.push({
+ text: "New folder",
+ action: function() {
+ var prompt = "Please enter a name for the new folder";
- if($scope.currentFolder.name)
- prompt += "that will be created in "+$scope.currentFolder.name;
+ if ($scope.currentFolder.name)
+ prompt += "that will be created in " + $scope.currentFolder.name;
- alertify.prompt(
- prompt,
- function(confirm,data){
- if(!confirm)
- return;
+ alertify.prompt(
+ prompt,
+ function(confirm, data) {
+ if (!confirm)
+ return;
- var folder = {
- parentFolderID:$scope.currentFolder._id,
- name:data
- };
+ var folder = {
+ parentFolderID: $scope.currentFolder._id,
+ name: data
+ };
- createFolder(folder);
- },
- "");
- }
- });
+ createFolder(folder);
+ },
+ "");
+ }
+ });
- if($routeParams.id)
- $rootScope.buttons.push({
- text: "Cut",
- action: function(){
- $rootScope.clipboard=$scope.currentFolder;
- alertify.success("Folder copied to clipboard");
- }
- });
+ if ($routeParams.id)
+ $rootScope.buttons.push({
+ text: "Cut",
+ action: function() {
+ $rootScope.clipboard = $scope.currentFolder;
+ alertify.success("Folder copied to clipboard");
+ }
+ });
- if($rootScope.clipboard && $rootScope.clipboard!=$scope.currentFolder)
- $rootScope.buttons.push({
- text: "Paste",
- action: function(){
- $rootScope.$emit("moveKey", {//fire off an event to tell everyone we just modified a folder
- destFolder: $scope.currentFolder,
- moveObject: $rootScope.clipboard
- });
- $rootScope.clipboard=null;
- }
- });
+ if ($rootScope.clipboard && $rootScope.clipboard != $scope.currentFolder)
+ $rootScope.buttons.push({
+ text: "Paste",
+ action: function() {
+ $rootScope.$emit("moveKey", { //fire off an event to tell everyone we just modified a folder
+ destFolder: $scope.currentFolder,
+ moveObject: $rootScope.clipboard
+ });
+ $rootScope.clipboard = null;
+ }
+ });
- $rootScope.buttons.push({
- text: "Search",
- action: function(){
- $location.url("/search/"+$scope.currentFolder.id);
- }
- });
+ $rootScope.buttons.push({
+ text: "Search",
+ action: function() {
+ $location.url("/search/" + $scope.currentFolder.id);
+ }
+ });
- /**
- * Load current folder contents
- */
- $scope.loadCurrentFolder = function(){
- //Load the folder
- if(!$routeParams.id){
- $scope.currentFolder={//FIXME config special root
- _id:null,
- name:"Home"};
- loadCurrentFolderContents();
- }
- else{
- storageService.database().get($routeParams.id).then(function(doc){
- $scope.currentFolder=doc;
- loadCurrentFolderContents();
+ /**
+ * Load current folder contents
+ */
+ $scope.loadCurrentFolder = function() {
+ //Load the folder
+ if (!$routeParams.id) {
+ $scope.currentFolder = { //FIXME config special root
+ _id: null,
+ name: "Home"
+ };
+ loadCurrentFolderContents();
+ } else {
+ storageService.database().get($routeParams.id).then(function(doc) {
+ $scope.currentFolder = doc;
+ loadCurrentFolderContents();
- if(!$scope.currentFolder.parentFolderID)
- $scope.parentFolder={name:"Home"};
- else
- storageService.database().get($scope.currentFolder.parentFolderID).then(function(doc){
- $scope.parentFolder=doc;
- $scope.$apply();
- });
- });
- }
- };
+ if (!$scope.currentFolder.parentFolderID)
+ $scope.parentFolder = {
+ name: "Home"
+ };
+ else
+ storageService.database().get($scope.currentFolder.parentFolderID).then(function(doc) {
+ $scope.parentFolder = doc;
+ $scope.$apply();
+ });
+ });
+ }
+ };
- /**
- * Activate folder edit mode if we are not in the home folder
- */
- $scope.activateFolderEditMode = function(){
- if($scope.currentFolder._id)
- $scope.folderEditMode = !$scope.folderEditMode;
- };
+ /**
+ * Activate folder edit mode if we are not in the home folder
+ */
+ $scope.activateFolderEditMode = function() {
+ if ($scope.currentFolder._id)
+ $scope.folderEditMode = !$scope.folderEditMode;
+ };
- /**
- * fade out all folders
- */
- $scope.fadeOutFoldersAndNotes = function(callback){
- if($scope.currentFolder.foldersInside||$scope.currentFolder.notesInside){
- $(".note").fadeTo(config.fadeSpeedShort(),0,function(){
- $scope.$apply(function(){
- callback();
- });
- });
+ /**
+ * fade out all folders
+ */
+ $scope.fadeOutFoldersAndNotes = function(callback) {
+ if ($scope.currentFolder.foldersInside || $scope.currentFolder.notesInside) {
+ $(".note").fadeTo(config.fadeSpeedShort(), 0, function() {
+ $scope.$apply(function() {
+ callback();
+ });
+ });
- $(".folder").fadeTo(config.fadeSpeedShort(),0,function(){
- $scope.$apply(function(){
- callback();
- });
- });
- }
- else
- callback();
- };
+ $(".folder").fadeTo(config.fadeSpeedShort(), 0, function() {
+ $scope.$apply(function() {
+ callback();
+ });
+ });
+ } else
+ callback();
+ };
- /**
- * Load a folder
- * @param folder- the folder to load
- */
- $scope.loadFolder = function(folder){
- $scope.fadeOutFoldersAndNotes(function(){
- $location.url("/folder/"+folder.doc._id);
- });
- };
+ /**
+ * Load a folder
+ * @param folder- the folder to load
+ */
+ $scope.loadFolder = function(folder) {
+ $scope.fadeOutFoldersAndNotes(function() {
+ $location.url("/folder/" + folder.doc._id);
+ });
+ };
- /**
- * Load a note
- * @param note - load a note
- */
- $scope.loadNote = function(note){
- $scope.fadeOutFoldersAndNotes(function(){
- $location.url("/note/"+note.id);
- });
- };
+ /**
+ * Load a note
+ * @param note - load a note
+ */
+ $scope.loadNote = function(note) {
+ $scope.fadeOutFoldersAndNotes(function() {
+ $location.url("/note/" + note.id);
+ });
+ };
- /**
- * Rename the current folder
- */
- $scope.renameFolder = function(){
- alertify.prompt("Rename "+$scope.currentFolder.name+" to:",
- function(confirm,data){
- if(!confirm)
- return;
+ /**
+ * Rename the current folder
+ */
+ $scope.renameFolder = function() {
+ alertify.prompt("Rename " + $scope.currentFolder.name + " to:",
+ function(confirm, data) {
+ if (!confirm)
+ return;
- $scope.currentFolder.name=data;
- storageService.database().put($scope.currentFolder).then(function(result){
- $scope.currentFolder._rev=result.rev;
- $rootScope.$emit("reloadListView", {});
- $scope.$apply();
- }).catch(function(error){
- throw error;
- //FIXME conflict resolution
- });
- },
- $scope.currentFolder.name//show the current folder name
- );
- };
+ $scope.currentFolder.name = data;
+ storageService.database().put($scope.currentFolder).then(function(result) {
+ $scope.currentFolder._rev = result.rev;
+ $rootScope.$emit("reloadListView", {});
+ $scope.$apply();
+ }).catch(function(error) {
+ throw error;
+ //FIXME conflict resolution
+ });
+ },
+ $scope.currentFolder.name //show the current folder name
+ );
+ };
- /**
- * Remove this folder and all sub items
- */
- $scope.removeFolder = function(){//FIXME Clear orphans
- alertify.confirm("Are you sure you want to delete "+$scope.currentFolder.name+" and all subfolders and notes it contains?",
- function(confirm) {
- if(!confirm)
- return;
+ /**
+ * Remove this folder and all sub items
+ */
+ $scope.removeFolder = function() { //FIXME Clear orphans
+ alertify.confirm("Are you sure you want to delete " + $scope.currentFolder.name + " and all subfolders and notes it contains?",
+ function(confirm) {
+ if (!confirm)
+ return;
- var parentFolderID = $scope.currentFolder.parentFolderID;
- storageService.deleteFolder($scope.currentFolder, function(){
- $rootScope.$emit("reloadListView", {});
+ var parentFolderID = $scope.currentFolder.parentFolderID;
+ storageService.deleteFolder($scope.currentFolder, function() {
+ $rootScope.$emit("reloadListView", {});
- if(!parentFolderID)
- $location.url("/folder/");
- else
- $location.url("/folder/"+parentFolderID);
+ if (!parentFolderID)
+ $location.url("/folder/");
+ else
+ $location.url("/folder/" + parentFolderID);
- $scope.$apply();
- });
- });
- };
+ $scope.$apply();
+ });
+ });
+ };
- /**
- * Listen to changed folder events to see if its the current open folder
- */
- $rootScope.$on("changedFolder", function(event, request) {
- if(request.folder.parentFolderID==$scope.currentFolder.id || $scope.currentFolder.id==request.oldparentFolderID){//does the change effect us?
- $scope.loadCurrentFolder();//reload
- }
- });
+ /**
+ * Listen to changed folder events to see if its the current open folder
+ */
+ $rootScope.$on("changedFolder", function(event, request) {
+ if (request.folder.parentFolderID == $scope.currentFolder.id || $scope.currentFolder.id == request.oldparentFolderID) { //does the change effect us?
+ $scope.loadCurrentFolder(); //reload
+ }
+ });
- /**
- * Create a folder object
- */
- var createFolder = function(folder){
- folder.type="folder";
- storageService.database().post(folder).then(function(response){
- if(!response.ok)
- throw "//FIXME";
- $rootScope.$emit("reloadListView", {});
- $location.url("/folder/"+response.id);
- $scope.$apply();
+ /**
+ * Create a folder object
+ */
+ var createFolder = function(folder) {
+ folder.type = "folder";
+ storageService.database().post(folder).then(function(response) {
+ if (!response.ok)
+ throw "//FIXME";
+ $rootScope.$emit("reloadListView", {});
+ $location.url("/folder/" + response.id);
+ $scope.$apply();
- }).catch(function(error){
- console.log(error);//FIXME
- });
- };
+ }).catch(function(error) {
+ console.log(error); //FIXME
+ });
+ };
- /**
- * Load the current folders contents
- */
- var loadCurrentFolderContents = function(){
- storageService.loadFolderContents($scope.currentFolder._id, function (results) {
- $scope.currentFolderContents=results.rows;
+ /**
+ * Load the current folders contents
+ */
+ var loadCurrentFolderContents = function() {
+ storageService.loadFolderContents($scope.currentFolder._id, function(results) {
+ $scope.currentFolderContents = results.rows;
- //Do they have anything to display?
- if(!$scope.currentFolder._id && !$scope.currentFolderContents.length)
- alertify.alert("It looks like you dont have any folders. You can create one using the \"New Folder\" button in the top right of the page. If you need to pull your remote notes click here .");
+ //Do they have anything to display?
+ if (!$scope.currentFolder._id && !$scope.currentFolderContents.length)
+ alertify.alert("It looks like you dont have any folders. You can create one using the \"New Folder\" button in the top right of the page. If you need to pull your remote notes click here .");
- $scope.$apply();
- });
- };
+ $scope.$apply();
+ });
+ };
- /**
- * Filter out everything but type folder
- */
- $scope.folderFilter=function(object){
- return storageService.folderFilter(object);
- };
+ /**
+ * Filter out everything but type folder
+ */
+ $scope.folderFilter = function(object) {
+ return storageService.folderFilter(object);
+ };
- /**
- * Filter out everything but type note
- */
- $scope.noteFilter=function(object){
- return storageService.noteFilter(object);
- };
+ /**
+ * Filter out everything but type note
+ */
+ $scope.noteFilter = function(object) {
+ return storageService.noteFilter(object);
+ };
- //Load current folder
- $timeout($scope.loadCurrentFolder);
-});
+ //Load current folder
+ $timeout($scope.loadCurrentFolder);
+ }
+]);
diff --git a/openNote/controllers/noteController.js b/openNote/controllers/noteController.js
index 9154882..050b0d8 100644
--- a/openNote/controllers/noteController.js
+++ b/openNote/controllers/noteController.js
@@ -9,225 +9,234 @@ var marked = require("marked");
/**
* controller for note creation, editing and maintenance
*/
-openNote.controller("noteController", function($scope,
- $rootScope,
- $location,
- $routeParams,
- storageService,
- config,
- $sce,
- $timeout) {
- $rootScope.buttons = [];
- $scope.note = {};
- $scope.editMode = false;
- $scope.showDeleteButton = false;
-
- /**
- * Returns the save buttons object
- */
- var saveButton = function() {
- return {
- text: "Save",
- action: function() {
- save();
- }
+openNote.controller("noteController", ["$scope",
+ "$rootScope",
+ "$location",
+ "$routeParams",
+ "storageService",
+ "config",
+ "$sce",
+ "$timeout",
+ function($scope,
+ $rootScope,
+ $location,
+ $routeParams,
+ storageService,
+ config,
+ $sce,
+ $timeout) {
+ $rootScope.buttons = [];
+ $scope.note = {};
+ $scope.editMode = false;
+ $scope.showDeleteButton = false;
+
+ /**
+ * Returns the save buttons object
+ */
+ var saveButton = function() {
+ return {
+ text: "Save",
+ action: function() {
+ save();
+ }
+ };
};
- };
-
- var copyButton = function(note) {
- return {
- text: "Cut",
- action: function() {
- $rootScope.clipboard = note;
- alertify.success("Note copied to clipboard");
- }
+
+ var copyButton = function(note) {
+ return {
+ text: "Cut",
+ action: function() {
+ $rootScope.clipboard = note;
+ alertify.success("Note copied to clipboard");
+ }
+ };
};
- };
-
- /**
- * return the clear button
- */
- var clearButton = function() {
- return {
- text: "Clear",
- action: function() {
- $scope.clear();
- }
+
+ /**
+ * return the clear button
+ */
+ var clearButton = function() {
+ return {
+ text: "Clear",
+ action: function() {
+ $scope.clear();
+ }
+ };
};
- };
-
- var editButton = function() {
- return {
- text: "Edit",
- action: function() {
- activateEditMode();
- }
+
+ var editButton = function() {
+ return {
+ text: "Edit",
+ action: function() {
+ activateEditMode();
+ }
+ };
};
- };
-
- var upButton = function(folderID) {
- return {
- text: "Go up a folder",
- action: function() {
- $location.url("/folder/" + folderID);
- }
+
+ var upButton = function(folderID) {
+ return {
+ text: "Go up a folder",
+ action: function() {
+ $location.url("/folder/" + folderID);
+ }
+ };
};
- };
- /**
- * Take us into edit mode
- */
- var activateEditMode = function() {
- //FIXME
+ /**
+ * Take us into edit mode
+ */
+ var activateEditMode = function() {
+ //FIXME
- $scope.editMode = true;
+ $scope.editMode = true;
- if ($scope.note._id)
- $scope.showDeleteButton = true;
+ if ($scope.note._id)
+ $scope.showDeleteButton = true;
- $rootScope.buttons = [];
+ $rootScope.buttons = [];
- attachWindowUnload();
+ attachWindowUnload();
- //Add new buttons
- $rootScope.buttons.push(saveButton());
- $rootScope.buttons.push(clearButton());
+ //Add new buttons
+ $rootScope.buttons.push(saveButton());
+ $rootScope.buttons.push(clearButton());
- $timeout(function() {//trick to wait for page to rerender with text area
- $scope.editor = CodeMirror.fromTextArea(document.getElementById("note-editor"), {
- mode: "markdown",
- theme: "material",
- lineNumbers: true
- });
+ $timeout(function() { //trick to wait for page to rerender with text area
+ $scope.editor = CodeMirror.fromTextArea(document.getElementById("note-editor"), {
+ mode: "markdown",
+ theme: "material",
+ lineNumbers: true
+ });
- });
+ });
- };
+ };
- /**
- * Save a note
- */
- var save = function() {
- $(".notePartial").fadeOut(config.fadeSpeedShort(), function() {
- $scope.note.type = "note";
- $scope.note.note = $scope.editor.getValue();
+ /**
+ * Save a note
+ */
+ var save = function() {
+ $(".notePartial").fadeOut(config.fadeSpeedShort(), function() {
+ $scope.note.type = "note";
+ $scope.note.note = $scope.editor.getValue();
+
+ /**
+ * Callback after successful save to reload note
+ */
+ var saveCallback = function(response) {
+ if (!response.ok)
+ throw "//FIXME"; //FIXME
+ detachWindowUnload();
- /**
- * Callback after successful save to reload note
- */
- var saveCallback = function(response) {
- if (!response.ok)
- throw "//FIXME"; //FIXME
- detachWindowUnload();
+ //Tags
+ $scope.note._id = response.id;
+ $rootScope.$emit("noteSaved", $scope.note); //Let any number of services know we have saved a note
- //Tags
- $scope.note._id = response.id;
- $rootScope.$emit("noteSaved", $scope.note); //Let any number of services know we have saved a note
+ $location.url("/note/" + response.id + "?rev=" + response.rev); //revision number is here only to force angular to reload
+ alertify.success("Note Saved"); //all done. close the notify dialog
+ $scope.$apply();
+ };
- $location.url("/note/" + response.id + "?rev=" + response.rev); //revision number is here only to force angular to reload
- alertify.success("Note Saved"); //all done. close the notify dialog
- $scope.$apply();
- };
+ //Upsert
+ if (!$scope.note._id)
+ storageService.database().post($scope.note).then(saveCallback, function() {
+ alertify.error("Error saving note");
+ });
+ else
+ storageService.database().put($scope.note).then(saveCallback, function() {
+ alertify.error("Error modifing note");
+ });
+ });
+ };
- //Upsert
- if (!$scope.note._id)
- storageService.database().post($scope.note).then(saveCallback, function() {
- alertify.error("Error saving note");
- });
- else
- storageService.database().put($scope.note).then(saveCallback, function() {
- alertify.error("Error modifing note");
- });
- });
- };
-
- /**
- * Delete a note
- */
- $scope.delete = function() {
- alertify.confirm("Are you sure you want to delete this note?",
- function(confirm) {
- if (!confirm)
- return;
-
- var folderID = $scope.note.parentFolderID; //need to keep track of this because we are about to delete it
- $(".notePartial").fadeOut(config.fadeSpeedShort());
- storageService.database().remove($scope.note).then(function() {
- $rootScope.$emit("noteDeleted", $scope.note);
- detachWindowUnload();
- alertify.success("Note Deleted"); //all done. close the notify dialog
- $location.url("/folder/" + folderID);
- $scope.$apply();
- });
- }
- );
- };
-
- /**
- * Reset changes
- */
- $scope.clear = function() {
- alertify.confirm("Are you sure you want to clear your changes?",
- function(confirm) {
- if (!confirm)
- return;
-
- $(".notePartial").fadeOut(config.fadeSpeedShort(), function() {
- $scope.$apply(function() {
+ /**
+ * Delete a note
+ */
+ $scope.delete = function() {
+ alertify.confirm("Are you sure you want to delete this note?",
+ function(confirm) {
+ if (!confirm)
+ return;
+
+ var folderID = $scope.note.parentFolderID; //need to keep track of this because we are about to delete it
+ $(".notePartial").fadeOut(config.fadeSpeedShort());
+ storageService.database().remove($scope.note).then(function() {
+ $rootScope.$emit("noteDeleted", $scope.note);
detachWindowUnload();
- $location.url("/folder/" + $scope.note.parentFolderID);
+ alertify.success("Note Deleted"); //all done. close the notify dialog
+ $location.url("/folder/" + folderID);
+ $scope.$apply();
+ });
+ }
+ );
+ };
+
+ /**
+ * Reset changes
+ */
+ $scope.clear = function() {
+ alertify.confirm("Are you sure you want to clear your changes?",
+ function(confirm) {
+ if (!confirm)
+ return;
+
+ $(".notePartial").fadeOut(config.fadeSpeedShort(), function() {
+ $scope.$apply(function() {
+ detachWindowUnload();
+ $location.url("/folder/" + $scope.note.parentFolderID);
+ });
});
});
- });
- };
-
- /**
- * Mark html as trusted
- */
- $scope.trustHTML = function(html) {
- return $sce.trustAsHtml(html);
- };
-
- /**
- * Attach window on-load listener
- */
- var attachWindowUnload = function() {
- window.onbeforeunload = function() {
- return "Are you sure you want to navigate away?"; //Keep the page from closing
};
- };
-
- /**
- * Remove window on-load listener
- */
- var detachWindowUnload = function() {
- window.onbeforeunload = null;
- };
-
- //Load or new
- if (!$routeParams.id) { //new
- $scope.note._id = null;
- $scope.note.parentFolderID = $location.search().folderID;
- $scope.note.title = "Note Title";
-
- activateEditMode();
- $(".notePartial").fadeIn(config.fadeSpeedLong());
- } else {
+
/**
- * Load note
+ * Mark html as trusted
*/
- storageService.database().get($routeParams.id).then(function(doc) {
- $scope.note = doc;
- $scope.noteHTML=marked($scope.note.note);
+ $scope.trustHTML = function(html) {
+ return $sce.trustAsHtml(html);
+ };
+
+ /**
+ * Attach window on-load listener
+ */
+ var attachWindowUnload = function() {
+ window.onbeforeunload = function() {
+ return "Are you sure you want to navigate away?"; //Keep the page from closing
+ };
+ };
+
+ /**
+ * Remove window on-load listener
+ */
+ var detachWindowUnload = function() {
+ window.onbeforeunload = null;
+ };
+
+ //Load or new
+ if (!$routeParams.id) { //new
+ $scope.note._id = null;
+ $scope.note.parentFolderID = $location.search().folderID;
+ $scope.note.title = "Note Title";
+
+ activateEditMode();
$(".notePartial").fadeIn(config.fadeSpeedLong());
+ } else {
+ /**
+ * Load note
+ */
+ storageService.database().get($routeParams.id).then(function(doc) {
+ $scope.note = doc;
+ $scope.noteHTML = marked($scope.note.note);
+ $(".notePartial").fadeIn(config.fadeSpeedLong());
- //Add buttons
- $rootScope.buttons.push(upButton($scope.note.parentFolderID));
- $rootScope.buttons.push(copyButton($scope.note));
- $rootScope.buttons.push(editButton());
+ //Add buttons
+ $rootScope.buttons.push(upButton($scope.note.parentFolderID));
+ $rootScope.buttons.push(copyButton($scope.note));
+ $rootScope.buttons.push(editButton());
- $scope.$apply();
- });
+ $scope.$apply();
+ });
+ }
}
-});
+]);
diff --git a/openNote/controllers/searchController.js b/openNote/controllers/searchController.js
index 29d2fd6..f1e0f30 100644
--- a/openNote/controllers/searchController.js
+++ b/openNote/controllers/searchController.js
@@ -1,99 +1,105 @@
-import openNote from "../openNote.js";
-/**
- * Search
- */
-openNote.controller("searchController", function( $scope,
- $rootScope,
- config,
- storageService,
- $location) {
- /**
- * Default valie
- */
- $scope.searchRequest={
- type: "Both",
- field: "Both",
- search: ""
- };
-
- $scope.notes = null;
- $scope.folders = null;
-
- /**
- * Search the database
- */
- $scope.search = function(){
- alertify.log("Search started");
- $scope.notes=[];
- $scope.folders=[];
-
- var removeDuplicates = function(array){
- var listOfIDs = [];
- array.forEach(function(element){//for each is synchronous
- var index=listOfIDs.indexOf(element.id);
- if(index==-1){
- listOfIDs.push(element.id);
- }else
- array.splice(index, 1);
- });
- return array;
- };
-
- var appendNotes = function(notes){
- $scope.notes=removeDuplicates($scope.notes.concat(notes));
- $scope.$apply();
- };
-
- var appendFolders = function(folders){
- $scope.folders=$scope.folders.concat(folders);
- alertify.success(folders.length+" objects found");
- $scope.$apply();
- };
-
- var type = $scope.searchRequest.type;
- var search = $scope.searchRequest.search;
- var field = $scope.searchRequest.field;
-
- if(type=="Both" || type=="Folders")
- storageService.searchFolderNames(search,appendFolders);
-
- if(type=="Both" || type=="Notes"){
- if(field=="Both" || type=="Title")
- storageService.searchNoteTitles(search,appendNotes);
-
- if(field=="Both" || type=="Body")
- storageService.searchNoteBody(search,appendNotes);
- }
- };
-
- /**
- * Load a folder
- * @param folder- the folder to load
- */
- $scope.loadFolder = function(folder){
- $scope.fadeOutBoxes(function(){
- $location.url("/folder/"+folder.doc._id);
- });
- };
-
- /**
- * Load a note
- * @param note - load a note
- */
- $scope.loadNote = function(note){
- $scope.fadeOutBoxes(function(){
- $location.url("/note/"+note.doc._id);
- });
- };
-
- /**
- * fade out all boxes
- */
- $scope.fadeOutBoxes = function(callback){
- $(".box").fadeOut(config.fadeSpeedShort(),function(){
- $scope.$apply(function(){
- callback();
- });
- });
- };
-});
+import openNote from "../openNote.js";
+/**
+ * Search
+ */
+openNote.controller("searchController", ["$scope",
+ "$rootScope",
+ "config",
+ "storageService",
+ "$location",
+ function($scope,
+ $rootScope,
+ config,
+ storageService,
+ $location) {
+ /**
+ * Default valie
+ */
+ $scope.searchRequest = {
+ type: "Both",
+ field: "Both",
+ search: ""
+ };
+
+ $scope.notes = null;
+ $scope.folders = null;
+
+ /**
+ * Search the database
+ */
+ $scope.search = function() {
+ alertify.log("Search started");
+ $scope.notes = [];
+ $scope.folders = [];
+
+ var removeDuplicates = function(array) {
+ var listOfIDs = [];
+ array.forEach(function(element) { //for each is synchronous
+ var index = listOfIDs.indexOf(element.id);
+ if (index == -1) {
+ listOfIDs.push(element.id);
+ } else
+ array.splice(index, 1);
+ });
+ return array;
+ };
+
+ var appendNotes = function(notes) {
+ $scope.notes = removeDuplicates($scope.notes.concat(notes));
+ $scope.$apply();
+ };
+
+ var appendFolders = function(folders) {
+ $scope.folders = $scope.folders.concat(folders);
+ alertify.success(folders.length + " objects found");
+ $scope.$apply();
+ };
+
+ var type = $scope.searchRequest.type;
+ var search = $scope.searchRequest.search;
+ var field = $scope.searchRequest.field;
+
+ if (type == "Both" || type == "Folders")
+ storageService.searchFolderNames(search, appendFolders);
+
+ if (type == "Both" || type == "Notes") {
+ if (field == "Both" || type == "Title")
+ storageService.searchNoteTitles(search, appendNotes);
+
+ if (field == "Both" || type == "Body")
+ storageService.searchNoteBody(search, appendNotes);
+ }
+ };
+
+ /**
+ * Load a folder
+ * @param folder- the folder to load
+ */
+ $scope.loadFolder = function(folder) {
+ $scope.fadeOutBoxes(function() {
+ $location.url("/folder/" + folder.doc._id);
+ });
+ };
+
+ /**
+ * Load a note
+ * @param note - load a note
+ */
+ $scope.loadNote = function(note) {
+ $scope.fadeOutBoxes(function() {
+ $location.url("/note/" + note.doc._id);
+ });
+ };
+
+ /**
+ * fade out all boxes
+ */
+ $scope.fadeOutBoxes = function(callback) {
+ $(".box").fadeOut(config.fadeSpeedShort(), function() {
+ $scope.$apply(function() {
+ callback();
+ });
+ });
+ };
+ }
+]);
diff --git a/openNote/controllers/settings/databaseController.js b/openNote/controllers/settings/databaseController.js
index 291e005..a6c0fbf 100644
--- a/openNote/controllers/settings/databaseController.js
+++ b/openNote/controllers/settings/databaseController.js
@@ -1,78 +1,82 @@
-import openNote from "../../openNote.js";
-/**
- * Search
- */
-openNote.controller("databaseController", function( $scope,
- $rootScope,
- storageService) {
- $scope.downloadFile = null;
- $scope.url = storageService.getRemoteURL();
-
- /**
- * Generate a backup
- */
- $scope.generateBackup = function(){
- storageService.exportToFile(function(data){
- $scope.downloadFile=data;
- });
- };
-
- /**
- * Save replication settings
- */
- $scope.save = function(){
- storageService.setRemoteURL($scope.url);
- $rootScope.$on("replicationComplete", function() {
- $rootScope.$emit("reloadListView", {});
- });
- storageService.setupSync();
- };
-
- /**
- * Delete the database
- */
- $scope.deleteDatabase = function(){
- alertify.confirm("Are you sure you want to delete the database?",
- function(confirm) {
- if(!confirm)
- return;
-
- storageService.destroyDatabase(function(){
- $rootScope.$emit("reloadListView", {});
- window.location.href='#/';
- $rootScope.$apply();
- alertify.success("Database deleted");
- });
- });
- };
-
- /**
- * Handle cleaning orphaned docs
- */
- $scope.cleanOrphans = function(){
- storageService.cleanOrphans();
- alertify.log("Finding and removing orphans");
- };
-
- /**
- * Watch for file change
- */
- $scope.upload = function(file){
- if(!file || !file.length)
- return;
-
- var fileReader = new FileReader();
-
- alertify.confirm("Are you sure you want import the backup? If there are any conflicts, they will be ignored. You might want to take a backup first.",
- function(confirm) {
- if(!confirm)
- return;
-
- fileReader.addEventListener("load", function(event) {
- storageService.importFile(JSON.parse(event.target.result));
- });
-
- fileReader.readAsText( file[0]);
- });
- };
-});
+import openNote from "../../openNote.js";
+/**
+ * Search
+ */
+openNote.controller("databaseController", ["$scope",
+ "$rootScope",
+ "storageService",
+ function($scope,
+ $rootScope,
+ storageService) {
+ $scope.downloadFile = null;
+ $scope.url = storageService.getRemoteURL();
+
+ /**
+ * Generate a backup
+ */
+ $scope.generateBackup = function() {
+ storageService.exportToFile(function(data) {
+ $scope.downloadFile = data;
+ });
+ };
+
+ /**
+ * Save replication settings
+ */
+ $scope.save = function() {
+ storageService.setRemoteURL($scope.url);
+ $rootScope.$on("replicationComplete", function() {
+ $rootScope.$emit("reloadListView", {});
+ });
+ storageService.setupSync();
+ };
+
+ /**
+ * Delete the database
+ */
+ $scope.deleteDatabase = function() {
+ alertify.confirm("Are you sure you want to delete the database?",
+ function(confirm) {
+ if (!confirm)
+ return;
+
+ storageService.destroyDatabase(function() {
+ $rootScope.$emit("reloadListView", {});
+ window.location.href = '#/';
+ $rootScope.$apply();
+ alertify.success("Database deleted");
+ });
+ });
+ };
+
+ /**
+ * Handle cleaning orphaned docs
+ */
+ $scope.cleanOrphans = function() {
+ storageService.cleanOrphans();
+ alertify.log("Finding and removing orphans");
+ };
+
+ /**
+ * Watch for file change
+ */
+ $scope.upload = function(file) {
+ if (!file || !file.length)
+ return;
+
+ var fileReader = new FileReader();
+
+ alertify.confirm("Are you sure you want import the backup? If there are any conflicts, they will be ignored. You might want to take a backup first.",
+ function(confirm) {
+ if (!confirm)
+ return;
+
+ fileReader.addEventListener("load", function(event) {
+ storageService.importFile(JSON.parse(event.target.result));
+ });
+
+ fileReader.readAsText(file[0]);
+ });
+ };
+ }
+]);
diff --git a/openNote/controllers/settings/settingsController.js b/openNote/controllers/settings/settingsController.js
index 5f2bb2c..4fb3072 100644
--- a/openNote/controllers/settings/settingsController.js
+++ b/openNote/controllers/settings/settingsController.js
@@ -1,30 +1,32 @@
import openNote from "../../openNote.js";
-openNote.controller("settingsController", function( $scope,
- $rootScope,
- $location,
- $routeParams,
- storageService,
- config) {
+openNote.controller("settingsController", [
+ "$scope",
+ "$location",
+ "config",
+ function($scope,
+ $location,
+ config) {
- /**
- * fade out all folders
- */
- $scope.fadeOutBoxes = function(callback){
- $(".box").fadeTo(config.fadeSpeedShort(),0,function(){
- $scope.$apply(function(){
- callback();
- });
- });
- };
+ /**
+ * fade out all folders
+ */
+ $scope.fadeOutBoxes = function(callback) {
+ $(".box").fadeTo(config.fadeSpeedShort(), 0, function() {
+ $scope.$apply(function() {
+ callback();
+ });
+ });
+ };
- /**
- * Load a settings
- * @param folder- the folder to load
- */
- $scope.loadURL = function(url){
- $scope.fadeOutBoxes(function(){
- $location.url(url);
- });
- };
-});
+ /**
+ * Load a settings
+ * @param folder- the folder to load
+ */
+ $scope.loadURL = function(url) {
+ $scope.fadeOutBoxes(function() {
+ $location.url(url);
+ });
+ };
+ }
+]);
diff --git a/openNote/controllers/tagController.js b/openNote/controllers/tagController.js
index 1ccfee7..2b15a54 100644
--- a/openNote/controllers/tagController.js
+++ b/openNote/controllers/tagController.js
@@ -1,40 +1,48 @@
import openNote from "../openNote.js";
-openNote.controller("tagController", function( $scope,
- $rootScope,
- $location,
- $routeParams,
- storageService,
- config,
- tagService) {
- $rootScope.buttons=[];
+openNote.controller("tagController", ["$scope",
+ "$rootScope",
+ "$location",
+ "$routeParams",
+ "storageService",
+ "config",
+ "tagService",
+ function($scope,
+ $rootScope,
+ $location,
+ $routeParams,
+ storageService,
+ config,
+ tagService) {
+ $rootScope.buttons = [];
- /**
- * Load a note
- * @param note - load a note
- */
- $scope.loadNote = function(note){
- $(".note").fadeTo(config.fadeSpeedShort(),0,function(){
- $location.url("/note/"+note._id);
- $scope.$apply();
- });
- };
+ /**
+ * Load a note
+ * @param note - load a note
+ */
+ $scope.loadNote = function(note) {
+ $(".note").fadeTo(config.fadeSpeedShort(), 0, function() {
+ $location.url("/note/" + note._id);
+ $scope.$apply();
+ });
+ };
- /**
- * Load tags
- */
- var loadTags = function(){
- tagService.getMap().then(function(map){
- var tags = map.tags[$scope.tag];
- var db = storageService.database();
- tags.forEach(function(tag){
- db.get(tag).then(function(note){
- $scope.notes.push(note);
- $scope.$apply();
- });
- });
- });
- };
- $scope.notes=[];
- $scope.tag = $routeParams.tag;
- loadTags();
-});
+ /**
+ * Load tags
+ */
+ var loadTags = function() {
+ tagService.getMap().then(function(map) {
+ var tags = map.tags[$scope.tag];
+ var db = storageService.database();
+ tags.forEach(function(tag) {
+ db.get(tag).then(function(note) {
+ $scope.notes.push(note);
+ $scope.$apply();
+ });
+ });
+ });
+ };
+ $scope.notes = [];
+ $scope.tag = $routeParams.tag;
+ loadTags();
+ }
+]);
diff --git a/openNote/controllers/tagListController.js b/openNote/controllers/tagListController.js
index edb61b3..d143f61 100644
--- a/openNote/controllers/tagListController.js
+++ b/openNote/controllers/tagListController.js
@@ -7,63 +7,70 @@ import openNote from "../openNote.js";
/**
* Control
*/
-openNote.controller("tagListController", function( $scope,
- $rootScope,
- tagService,
- $location,
- storageService) {
- $scope.tags = [];
+openNote.controller("tagListController", [
+ "$scope",
+ "$rootScope",
+ "tagService",
+ "$location",
+ "storageService",
+ function($scope,
+ $rootScope,
+ tagService,
+ $location,
+ storageService) {
+ $scope.tags = [];
- var updateTags = function(){
- tagService.getMap().then(function(map){
- $scope.tags = [];
- for(var tag in map.tags)
- $scope.tags.push(tag);
+ var updateTags = function() {
+ tagService.getMap().then(function(map) {
+ $scope.tags = [];
+ for (var tag in map.tags)
+ $scope.tags.push(tag);
- $scope.$apply();
- }).catch(function(){
- //TODO
- });
- };
+ $scope.$apply();
+ }).catch(function() {
+ //TODO
+ });
+ };
- /**
- * Open a tag
- * @param tag - Tag to open
- */
- $scope.openTag = function(tag){
- $location.url("/tag/"+encodeURIComponent(tag));
- };
+ /**
+ * Open a tag
+ * @param tag - Tag to open
+ */
+ $scope.openTag = function(tag) {
+ $location.url("/tag/" + encodeURIComponent(tag));
+ };
- /**
- * Move key
- * @param request.destFolder -
- * @param request.moveObject - object to move
- * TODO this is should be moved. It is left over from the list controller days
- */
- $rootScope.$on("moveKey", function(event, request) {
- //Confirm action
- alertify.confirm("Are you sure you want to move "+(request.moveObject.name || request.moveObject.title)+" into "+ request.destFolder.name+"?" , function (confirm) {
- if (confirm){
- var origParrentFolderID=request.moveObject.parentFolderID;
+ /**
+ * Move key
+ * @param request.destFolder -
+ * @param request.moveObject - object to move
+ * TODO this is should be moved. It is left over from the list controller days
+ */
+ $rootScope.$on("moveKey", function(event, request) {
+ //Confirm action
+ alertify.confirm("Are you sure you want to move " + (request.moveObject.name || request.moveObject.title) + " into " + request.destFolder.name + "?", function(confirm) {
+ if (confirm) {
+ var origParrentFolderID = request.moveObject.parentFolderID;
- request.moveObject.parentFolderID=request.destFolder._id;
- storageService.database().put(request.moveObject).then(function(){
- $rootScope.$emit("changedFolder", {//fire off an event to tell everyone we just modified a folder
- folder: request.moveObject,
- oldParrentFolderID: origParrentFolderID
- });
- }).catch(function(error){
- throw error;
- });
- }
+ request.moveObject.parentFolderID = request.destFolder._id;
+ storageService.database().put(request.moveObject).then(function() {
+ $rootScope.$emit("changedFolder", { //fire off an event to tell everyone we just modified a folder
+ folder: request.moveObject,
+ oldParrentFolderID: origParrentFolderID
+ });
+ }).catch(function(error) {
+ throw error;
+ });
+ }
- return $rootScope.$emit("reloadListView", {});//Always reload
- });
- });
+ return $rootScope.$emit("reloadListView", {}); //Always reload
+ });
+ });
- $rootScope.$on("tagsUpdated", function() {
- updateTags();
- });
+ $rootScope.$on("tagsUpdated", function() {
+ updateTags();
+ });
- updateTags();
-});
+ updateTags();
+ }
+]);
diff --git a/openNote/directives/randomFadeInDirective.js b/openNote/directives/randomFadeInDirective.js
index 34da484..25ad5b6 100644
--- a/openNote/directives/randomFadeInDirective.js
+++ b/openNote/directives/randomFadeInDirective.js
@@ -2,11 +2,11 @@ import openNote from "../openNote.js";
/**
*randomly fade in element to have a wave effect
*/
-openNote.directive("randomFadeInDirective", function($timeout,config) {
+openNote.directive("randomFadeInDirective", ["$timeout","config", function($timeout,config) {
return {
restrict: "C",//class
link: function(scope, element) {
element.hide().stop().fadeTo(config.fadeSpeedLong(),1);
}
};
-});
+}]);
diff --git a/openNote/openNote.config.js b/openNote/openNote.config.js
index aa0a05a..af24fec 100644
--- a/openNote/openNote.config.js
+++ b/openNote/openNote.config.js
@@ -45,6 +45,6 @@ openNote.value("config", {
* Change link behavior to not be stupid an allow all href links
* @param $compileProvider
*/
-openNote.config(function($compileProvider) {
+openNote.config(["$compileProvider",function($compileProvider) {
$compileProvider.aHrefSanitizationWhitelist("[\s\S]*");
-});
+}]);
diff --git a/openNote/openNote.js b/openNote/openNote.js
index 5f39883..f1dfc89 100644
--- a/openNote/openNote.js
+++ b/openNote/openNote.js
@@ -24,36 +24,43 @@ var openNote = angular.module("openNote", ["ngRoute",
* Used to redirect users to login if their token has expired
* Runs on every route
*/
-openNote.run(function($rootScope,
- $location,
- config,
- tagService,
- $http) {
-
- $rootScope.version = config.getVersion();
- tagService.bindHandlers();
- $rootScope.$on("$routeChangeStart", function() {
-
- //Initial entry after if logged in
- if (!$rootScope.showMenu && !$rootScope.showSideBar) //make sure we only fade in/run once
- $rootScope.$emit("init");
- });
-
- /**
- * Initialize app and start fade in
- */
- $rootScope.$on("init", function() {
- $rootScope.showMenu = true;
- $rootScope.showSideBar = true;
-
- //Check for updates
- $http.get(config.getUpdateURL()).then(
- function(response) { //Successful
- if (response.data.version != config.getVersion())
- alertify.log("Update available ", "", 0);
- }
- );
- });
-});
+openNote.run([
+ "$rootScope",
+ "$location",
+ "config",
+ "tagService",
+ "$http",
+ function($rootScope,
+ $location,
+ config,
+ tagService,
+ $http) {
+
+ $rootScope.version = config.getVersion();
+ tagService.bindHandlers();
+ $rootScope.$on("$routeChangeStart", function() {
+
+ //Initial entry after if logged in
+ if (!$rootScope.showMenu && !$rootScope.showSideBar) //make sure we only fade in/run once
+ $rootScope.$emit("init");
+ });
+
+ /**
+ * Initialize app and start fade in
+ */
+ $rootScope.$on("init", function() {
+ $rootScope.showMenu = true;
+ $rootScope.showSideBar = true;
+
+ //Check for updates
+ $http.get(config.getUpdateURL()).then(
+ function(response) { //Successful
+ if (response.data.version != config.getVersion())
+ alertify.log("Update available ", "", 0);
+ }
+ );
+ });
+ }
+]);
export default openNote;
diff --git a/openNote/router.js b/openNote/router.js
index 5402509..a4cf88b 100644
--- a/openNote/router.js
+++ b/openNote/router.js
@@ -1,31 +1,33 @@
import openNote from "./openNote.js";
//Router
-openNote.config(function($routeProvider,$locationProvider){
- $locationProvider.hashPrefix("");//Fixes #! angular people added stupidly
- $routeProvider
- .when("/folder/:id?",{
- controller: "folderController",
- templateUrl: "openNote/partials/folderPartial.html",
- })
- .when("/tag/:tag",{
- controller: "tagController",
- templateUrl: "openNote/partials/tagPartial.html",
- })
- .when("/note/:id?",{
- controller: "noteController",
- templateUrl: "openNote/partials/notePartial.html"
- })
- .when("/search/:id?",{
- controller: "searchController",
- templateUrl: "openNote/partials/searchPartial.html"
- })
- .when("/settings/",{
- controller: "settingsController",
- templateUrl: "openNote/partials/settings/settingsPartial.html"
- })
- .when("/settings/database/",{
- controller: "databaseController",
- templateUrl: "openNote/partials/settings/databasePartial.html"
- })
- .otherwise({ redirectTo: "/folder" });
-});
+openNote.config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) {
+ $locationProvider.hashPrefix(""); //Fixes #! angular people added stupidly
+ $routeProvider
+ .when("/folder/:id?", {
+ controller: "folderController",
+ templateUrl: "openNote/partials/folderPartial.html",
+ })
+ .when("/tag/:tag", {
+ controller: "tagController",
+ templateUrl: "openNote/partials/tagPartial.html",
+ })
+ .when("/note/:id?", {
+ controller: "noteController",
+ templateUrl: "openNote/partials/notePartial.html"
+ })
+ .when("/search/:id?", {
+ controller: "searchController",
+ templateUrl: "openNote/partials/searchPartial.html"
+ })
+ .when("/settings/", {
+ controller: "settingsController",
+ templateUrl: "openNote/partials/settings/settingsPartial.html"
+ })
+ .when("/settings/database/", {
+ controller: "databaseController",
+ templateUrl: "openNote/partials/settings/databasePartial.html"
+ })
+ .otherwise({
+ redirectTo: "/folder"
+ });
+}]);
diff --git a/openNote/services/storageService.js b/openNote/services/storageService.js
index 6af02cc..0dc992d 100644
--- a/openNote/services/storageService.js
+++ b/openNote/services/storageService.js
@@ -7,7 +7,7 @@ import openNote from "../openNote.js";
/**
* Storage service
*/
-openNote.service("storageService", function ($rootScope) {
+openNote.service("storageService", ["$rootScope", function ($rootScope) {
var localDatabase = null;
var remoteDatabase = null;
@@ -304,4 +304,4 @@ openNote.service("storageService", function ($rootScope) {
//First time create database
this.init();
-});
+}]);
diff --git a/openNote/services/tagService.js b/openNote/services/tagService.js
index 80a1c45..3ce77b7 100644
--- a/openNote/services/tagService.js
+++ b/openNote/services/tagService.js
@@ -1,5 +1,5 @@
import openNote from "../openNote.js";
-openNote.service("tagService", function ($rootScope,storageService) {
+openNote.service("tagService", ["$rootScope","storageService", function ($rootScope,storageService) {
var service = this;
var tagRegex = /(?:\ |^|\n|>)(#[^\ <\n]+)/ig;
@@ -98,4 +98,4 @@ openNote.service("tagService", function ($rootScope,storageService) {
this.getMap = function(){
return storageService.database().get("tagMap");
};
-});
+}]);
diff --git a/package.json b/package.json
index 699c2b0..f02bb6d 100644
--- a/package.json
+++ b/package.json
@@ -20,29 +20,30 @@
},
"devDependencies": {
"angular-mocks": "^1.5.5",
- "grunt-contrib-less": "^0.11.1",
- "bower": "^1.3.3",
- "karma": "^0.12.14",
- "karma-jasmine": "~0.1.0",
+ "es5-shim": "4.1.1",
+ "grunt": "^0.4.5",
"grunt-cli": "^0.1.13",
- "grunt-contrib-watch": "^0.6.1",
- "grunt-contrib-jshint": "^1.0.0",
"grunt-contrib-compress": "^1.1.1",
+ "grunt-contrib-connect": "^1.0.2",
+ "grunt-contrib-jshint": "^1.0.0",
+ "grunt-contrib-less": "^0.11.1",
+ "grunt-contrib-watch": "^0.6.1",
"grunt-karma": "^0.8.3",
- "phantomjs": "^1.9.7-5",
- "karma-phantomjs-launcher": "^0.1.4",
- "karma-firefox-launcher": "^0.1.3",
- "grunt-shell": "^0.7.0",
- "es5-shim": "4.1.1",
"grunt-manifest": "^0.4.0",
- "grunt": "^0.4.5",
+ "grunt-shell": "^0.7.0",
+ "karma": "^0.12.14",
+ "karma-firefox-launcher": "^0.1.3",
+ "karma-jasmine": "~0.1.0",
+ "karma-phantomjs-launcher": "^0.1.4",
+ "phantomjs": "^1.9.7-5",
+ "script-loader": "^0.7.2",
"webpack": "^3.8.1",
- "webpack-dev-server": "^2.9.5",
- "script-loader": "^0.7.2"
+ "webpack-dev-server": "^2.9.5"
},
"scripts": {
"test": "grunt ci",
"dev": "webpack-dev-server --open --hot --config ./build/webpack.dev.config.js",
- "build": "webpack --progress --hide-modules --config ./build/webpack.prod.config.js"
+ "build": "webpack --progress --hide-modules --config ./build/webpack.prod.config.js",
+ "serve": "webpack-dev-server --open --config ./build/webpack.serve.config.js"
}
}
From 17b739c3856d65dba6d761210274c23245d1ffc5 Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Fri, 8 Dec 2017 23:31:47 -0700
Subject: [PATCH 06/17] Updated dependencies
---
openNote/openNote.js | 4 ++++
package.json | 21 ++++++++++-----------
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/openNote/openNote.js b/openNote/openNote.js
index f1dfc89..dd34cb5 100644
--- a/openNote/openNote.js
+++ b/openNote/openNote.js
@@ -1,3 +1,4 @@
+//Scripts to bundle
import "script-loader!../node_modules/jquery/dist/jquery.min.js";
import "script-loader!../node_modules/pouchdb/dist/pouchdb.min.js";
import "script-loader!../node_modules/bootstrap/dist/js/bootstrap.min.js";
@@ -8,6 +9,9 @@ import "script-loader!../node_modules/angular-route/angular-route.min.js";
import "script-loader!../node_modules/angular-sanitize/angular-sanitize.min.js";
import "script-loader!../node_modules/alertify/lib/alertify.min.js";
+
+//Style
+
/**
* @author - Jake Liscom
* @project - OpenNote
diff --git a/package.json b/package.json
index f02bb6d..3e0fa51 100644
--- a/package.json
+++ b/package.json
@@ -7,19 +7,19 @@
"license": "MIT",
"dependencies": {
"alertify": "0.3.0",
- "angular": "^1.5.5",
- "angular-animate": "^1.5.5",
- "angular-resource": "^1.5.5",
- "angular-route": "^1.5.5",
- "angular-sanitize": "^1.5.5",
- "bootstrap": "^3.3.6",
+ "angular": "^1.6.6",
+ "angular-animate": "^1.6.6",
+ "angular-resource": "^1.6.6",
+ "angular-route": "^1.6.6",
+ "angular-sanitize": "^1.6.6",
+ "bootstrap": "^3.3.7",
"codemirror": "^5.32.0",
- "jquery": "2.1.4",
+ "jquery": "3.2.1",
"marked": "^0.3.7",
- "pouchdb": "^5.3.2"
+ "pouchdb": "^6.3.4"
},
"devDependencies": {
- "angular-mocks": "^1.5.5",
+ "angular-mocks": "^1.6.6",
"es5-shim": "4.1.1",
"grunt": "^0.4.5",
"grunt-cli": "^0.1.13",
@@ -43,7 +43,6 @@
"scripts": {
"test": "grunt ci",
"dev": "webpack-dev-server --open --hot --config ./build/webpack.dev.config.js",
- "build": "webpack --progress --hide-modules --config ./build/webpack.prod.config.js",
- "serve": "webpack-dev-server --open --config ./build/webpack.serve.config.js"
+ "build": "webpack --progress --hide-modules --config ./build/webpack.prod.config.js"
}
}
From ab2dda096f49afdc5c5d1a06c8c0750ccb10ba71 Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Fri, 8 Dec 2017 23:43:14 -0700
Subject: [PATCH 07/17] Prep to move tests into own project
---
Gruntfile.js | 22 +---------------------
README.md | 17 ++++++++---------
docs/Build.md | 32 +++++++-------------------------
package.json | 7 -------
test/karma.conf.js | 2 +-
5 files changed, 17 insertions(+), 63 deletions(-)
diff --git a/Gruntfile.js b/Gruntfile.js
index 4770de0..5ae234a 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -81,24 +81,6 @@ module.exports = function(grunt) {
}
}
},
- //Testing setup
- karma: {
- unit: {
- configFile: "OpenNote.Test/karma.conf.js",
- background: true
- },
- travis: {
- configFile: "OpenNote.Test/karma.conf.js",
- singleRun: true,
- browsers: ["PhantomJS"] //Override config browsers
- }
- },
- watch: {
- karma: {
- files: ["src/**/*.js", "test/unit/**/*.js"],
- tasks: ["karma:unit:run"]
- }
- },
shell: {
clean: {
@@ -143,7 +125,6 @@ module.exports = function(grunt) {
grunt.loadNpmTasks("grunt-contrib-jshint");
grunt.loadNpmTasks("grunt-contrib-less");
grunt.loadNpmTasks("grunt-contrib-watch");
- grunt.loadNpmTasks("grunt-karma");
grunt.loadNpmTasks("grunt-shell");
grunt.loadNpmTasks("grunt-manifest");
grunt.loadNpmTasks("grunt-contrib-compress");
@@ -164,6 +145,5 @@ module.exports = function(grunt) {
//testing
grunt.registerTask("devmode", ["karma:unit", "watch"]);
- grunt.registerTask("test", ["karma:travis"]);
- grunt.registerTask("ci", ["build", "jshint:all"]); //TODO , "karma:travis"
+ grunt.registerTask("ci", ["build", "jshint:all"]);
};
diff --git a/README.md b/README.md
index 6c16b02..bec1d1e 100644
--- a/README.md
+++ b/README.md
@@ -52,7 +52,7 @@ Documentation
[How to upgrade][Upgrade]
-[How to build][Build]
+[How to build](https://github.com/FoxUSA/OpenNote/blob/master/docs/Build.md)
[Themes][Themes]
@@ -82,16 +82,15 @@ Credits
Kam Bnkamalesh - His TODO project heavily influenced my UI design
-[topLevel]: https://raw.github.com/FoxUSA/OpenNote/master/Doc/screenShots/topLevel.png
-[dark]: https://raw.github.com/FoxUSA/OpenNote/master/Doc/screenShots/dark1.png
-[responsive]: https://raw.githubusercontent.com/FoxUSA/OpenNote/master/Doc/screenShots/OpenNote.png
+[topLevel]: https://raw.github.com/FoxUSA/OpenNote/master/docs/screenShots/topLevel.png
+[dark]: https://raw.github.com/FoxUSA/OpenNote/master/docs/screenShots/dark1.png
+[responsive]: https://raw.githubusercontent.com/FoxUSA/OpenNote/master/docs/screenShots/OpenNote.png
-[Install]: https://github.com/FoxUSA/OpenNote/blob/master/Doc/Install.md
-[Upgrade]: https://github.com/FoxUSA/OpenNote/blob/master/Doc/Upgrade.md
-[Build]: https://github.com/FoxUSA/OpenNote/blob/master/Doc/Build.md
+[Install]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Install.md
+[Upgrade]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Upgrade.md
[PHP]: https://github.com/FoxUSA/OpenNoteService-PHP
-[Dependencies]: https://github.com/FoxUSA/OpenNote/blob/master/Doc/Dependencies.md
-[Themes]: https://github.com/FoxUSA/OpenNote/blob/master/Doc/Themes.md
+[Dependencies]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Dependencies.md
+[Themes]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Themes.md
[GitTip]: https://www.gittip.com/FoxUSA/
[Bitcoins]: http://blockchain.info/address/15Q2jhnTvxDQm4LvTku68vTzU8j8dcLnLB
[Alternative]: http://alternativeto.net/software/opennote/
diff --git a/docs/Build.md b/docs/Build.md
index a343c3e..c26bba4 100644
--- a/docs/Build.md
+++ b/docs/Build.md
@@ -1,32 +1,14 @@
# How to build
-
-## Clone
-You will need to clone the front end and the backend
-https://github.com/FoxUSA/OpenNote
-https://github.com/FoxUSA/OpenNoteService-PHP
-
-Most of the build tasks require the OpenNote and OpenNoteService-PHP to be in the same folder
-
-For example
-In the folder `OpenNote` we expect `openNote`, and `Service` to be sister folders.
-
-I normally have `Service` folder as a symbolic link to `OpenNoteService-PHP/Service`;
-
-Once the `OpenNote` and `OpenNoteService-PHP` project have been cloned you need to build the projects
-
-To do so for the front end project
-- Run `npm install` to get the dev dependencies
-- Then, you need to run `grunt build` in `OpenNote/`(This runs bower install and builds the less CSS)
-
-In the PHP service you will need too
-- You need to run `php ./composer.phar install -v` to install all the PHP dependencies and build the projects autoloading structure
-
## Build Requirements
- npm
-- Bower `npm install -g bower`
- Grunt `npm install -g grunt-cli`
-- Composer
## Build
-Run from OpenNote project
+Clone this project
+`cd` into the project
+Run `npm install` to fetch and install dependencies
+Then run
`grunt build`
+this will start a webpack dev server.
+
+To test production bundles run `grunt testDeploy`
diff --git a/package.json b/package.json
index 3e0fa51..77ae28f 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,6 @@
},
"devDependencies": {
"angular-mocks": "^1.6.6",
- "es5-shim": "4.1.1",
"grunt": "^0.4.5",
"grunt-cli": "^0.1.13",
"grunt-contrib-compress": "^1.1.1",
@@ -28,14 +27,8 @@
"grunt-contrib-jshint": "^1.0.0",
"grunt-contrib-less": "^0.11.1",
"grunt-contrib-watch": "^0.6.1",
- "grunt-karma": "^0.8.3",
"grunt-manifest": "^0.4.0",
"grunt-shell": "^0.7.0",
- "karma": "^0.12.14",
- "karma-firefox-launcher": "^0.1.3",
- "karma-jasmine": "~0.1.0",
- "karma-phantomjs-launcher": "^0.1.4",
- "phantomjs": "^1.9.7-5",
"script-loader": "^0.7.2",
"webpack": "^3.8.1",
"webpack-dev-server": "^2.9.5"
diff --git a/test/karma.conf.js b/test/karma.conf.js
index 5a6050e..292714e 100644
--- a/test/karma.conf.js
+++ b/test/karma.conf.js
@@ -1,4 +1,4 @@
-module.exports = function(config){
+module.exports = function(config){//TODO move this stuff into another project
config.set({
basePath : "../",
files : [
From 17f154becc91117b2c807b121ac7c399331a7b74 Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sat, 9 Dec 2017 00:53:23 -0700
Subject: [PATCH 08/17] Budled css. Alertify css fix
---
.gitignore | 3 ++-
Gruntfile.js | 10 +++-----
build/webpack.common.config.js | 20 +++++++++++++---
build/webpack.prod.config.js | 2 +-
index.html | 11 +--------
openNote/openNote.js | 9 ++++++-
openNote/style/invert/alertify.less | 37 ++++++++++++++---------------
package.json | 5 ++++
8 files changed, 55 insertions(+), 42 deletions(-)
diff --git a/.gitignore b/.gitignore
index e2c4f13..533abc9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
/bower_components
/node_modules
/dist
-openNote.bundle.js
+openNote.bundle.*
openNote.appcache
+webpack_files
diff --git a/Gruntfile.js b/Gruntfile.js
index 5ae234a..592fedc 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -108,13 +108,9 @@ module.exports = function(grunt) {
master: ["index.html"]
},
src: [
- "openNote.bundle.js",
- "node_modules/bootstrap/dist/**/*.*",
- "node_modules/codemirror/**/*.css",
- "node_modules/alertify/**/*.css",
- "openNote/**/*.*",
- "!**/*.js", // JS Files handled webpack
- "!**/*.less"
+ "openNote.bundle.*",
+ "webpack_files/**/*.*",
+ "openNote/**/*.html",
],
dest: "openNote.appcache"
}
diff --git a/build/webpack.common.config.js b/build/webpack.common.config.js
index 9e67b67..f930d54 100644
--- a/build/webpack.common.config.js
+++ b/build/webpack.common.config.js
@@ -1,7 +1,8 @@
const glob = require("glob");
+const ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
- entry: glob.sync("./openNote/**/*.js"),//Emulate loading all them sequentually via script tags as one did in 2015
+ entry: glob.sync("./openNote/**/*.js"), //Emulate loading all them sequentually via script tags as one did in 2015
output: {
filename: "./openNote.bundle.js"
},
@@ -12,11 +13,24 @@ module.exports = {
},
devtool: "#eval-source-map",
module: {
- rules: [
+ rules: [{
+ test: /\.css$/,
+ use: ExtractTextPlugin.extract({
+ fallback: "style-loader",//css-loader and style-loader used
+ use: "css-loader"
+ })
+ },
{
- test: /\.exec\.js$/,//So we dont have to use concat too
+ test: /\.exec\.js$/, //So we dont have to use concat too
use: ["script-loader"]
+ },
+ {
+ test: /\.(png|woff|woff2|eot|ttf|svg)$/,//Need url-loader and file-loader for this
+ loader: "url-loader?limit=100000&name=./webpack_files/[hash].[ext]"
}
]
},
+ plugins: [
+ new ExtractTextPlugin("openNote.bundle.css"),
+ ]
};
diff --git a/build/webpack.prod.config.js b/build/webpack.prod.config.js
index 30c7a77..716837d 100644
--- a/build/webpack.prod.config.js
+++ b/build/webpack.prod.config.js
@@ -3,7 +3,7 @@ const Uglify = require("uglifyjs-webpack-plugin");
let baseConfig = require("./webpack.common.config.js");
baseConfig.devtool = "#source-map";//Helps with size
-baseConfig.plugins = (module.exports.plugins || []).concat([
+baseConfig.plugins = (baseConfig.plugins || []).concat([
new webpack.DefinePlugin({
"process.env": {
NODE_ENV: "\"production\""
diff --git a/index.html b/index.html
index 10a21f1..ad776dc 100644
--- a/index.html
+++ b/index.html
@@ -12,16 +12,7 @@
OpenNote
-
-
-
-
-
-
-
-
-
-
+
diff --git a/openNote/openNote.js b/openNote/openNote.js
index dd34cb5..cfd9753 100644
--- a/openNote/openNote.js
+++ b/openNote/openNote.js
@@ -9,8 +9,15 @@ import "script-loader!../node_modules/angular-route/angular-route.min.js";
import "script-loader!../node_modules/angular-sanitize/angular-sanitize.min.js";
import "script-loader!../node_modules/alertify/lib/alertify.min.js";
-
//Style
+import "../node_modules/bootstrap/dist/css/bootstrap.min.css";
+import "../node_modules/alertify/themes/alertify.core.css";
+import "../node_modules/codemirror/lib/codemirror.css";
+import "../node_modules/codemirror/theme/material.css";
+import "../openNote/style/invert/light/alertify.css";
+import "../openNote/style/invert/light/style.css";
+import "../openNote/style/animations.css";
+
/**
* @author - Jake Liscom
diff --git a/openNote/style/invert/alertify.less b/openNote/style/invert/alertify.less
index 1ceeeec..e5ef52c 100644
--- a/openNote/style/invert/alertify.less
+++ b/openNote/style/invert/alertify.less
@@ -2,10 +2,10 @@
* Twitter Bootstrap Look and Feel
* Based on http://twitter.github.com/bootstrap/
*/
-
+
/** offset all the other colors */
@offset: #000000;
-
+
.alertify,
.alertify-log {
font-family: inherit;
@@ -33,7 +33,7 @@
}
.alertify-text {
color: negation(#CCC, @offset);
-
+
padding: 8px;
border: 1px solid negation(#CCC, @offset);
}
@@ -61,27 +61,26 @@
.alertify-button:active {
position: relative;
}
- .alertify-button-cancel,
- .alertify-button-cancel:hover,
- .alertify-button-cancel:focus,
- .alertify-button-cancel:active {
- color: negation(#CCC, @offset);
- }
- .alertify-button-cancel:hover,
- .alertify-button-cancel:focus,
- .alertify-button-cancel:active {
- color: negation(#000, @offset);
- background: negation(#fff, @offset);
- }
+
.alertify-button-ok,
.alertify-button-ok:hover,
.alertify-button-ok:focus,
- .alertify-button-ok:active {
+ .alertify-button-ok:active,
+ .alertify-button-cancel,
+ .alertify-button-cancel:hover,
+ .alertify-button-cancel:focus,
+ .alertify-button-cancel:active {
+ border: none;
color: negation(#CCC, @offset);
+ background: negation(#000, @offset);
}
.alertify-button-ok:hover,
.alertify-button-ok:focus,
- .alertify-button-ok:active {
+ .alertify-button-ok:active,
+ .alertify-button-cancel:hover,
+ .alertify-button-cancel:focus,
+ .alertify-button-cancel:active {
+ border: none;
color: negation(#000, @offset);
background: negation(#fff, @offset);
}
@@ -99,7 +98,7 @@
.alertify-log-success {
color: negation(#CCC, @offset);
}
-
+
.alertify-cover {
transition: opacity 1s ease-out, width 0s;
background-color: negation(#555, @offset);
@@ -111,7 +110,7 @@
right:0;
}
-.alertify-cover.alertify-cover-hidden{/*For animation*/
+.alertify-cover.alertify-cover-hidden{/*For animation*/
display: block;
opacity: 0;
width:0;
diff --git a/package.json b/package.json
index 77ae28f..f4d4674 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,9 @@
},
"devDependencies": {
"angular-mocks": "^1.6.6",
+ "css-loader": "^0.28.7",
+ "extract-text-webpack-plugin": "^3.0.2",
+ "file-loader": "^1.1.5",
"grunt": "^0.4.5",
"grunt-cli": "^0.1.13",
"grunt-contrib-compress": "^1.1.1",
@@ -30,6 +33,8 @@
"grunt-manifest": "^0.4.0",
"grunt-shell": "^0.7.0",
"script-loader": "^0.7.2",
+ "style-loader": "^0.19.0",
+ "url-loader": "^0.6.2",
"webpack": "^3.8.1",
"webpack-dev-server": "^2.9.5"
},
From c5989019c0932c34b41c72e80c0fcae8aace869d Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sat, 9 Dec 2017 01:14:40 -0700
Subject: [PATCH 09/17] Deploy command
---
.jshintrc | 1 +
Gruntfile.js | 21 ++++++++++++++-------
package.json | 2 +-
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/.jshintrc b/.jshintrc
index a04066a..684ba52 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -1,5 +1,6 @@
{
"esversion":6,
+ "node": true,
"undef": true,
"unused": true,
"mocha": true,
diff --git a/Gruntfile.js b/Gruntfile.js
index 592fedc..b585d46 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,3 +1,11 @@
+var package_json = require(__dirname+"/package.json");
+var bundleFiles=[
+ "openNote.bundle.*",
+ "webpack_files/**/*.*",
+ "openNote/**/*.html"
+];
+
+
module.exports = function(grunt) {
//Initializing the configuration object
grunt.initConfig({
@@ -13,10 +21,13 @@ module.exports = function(grunt) {
compress: {
main: {
options: {
- archive: "dist/version.zip"
+ archive: "dist/"+package_json.version+".zip"
},
files: [{
- src: ["**/*"], //TODO just include needed files
+ src: [
+ "openNote.appcache",
+ "index.html",
+ ].concat(bundleFiles),
expand: true
}]
}
@@ -107,11 +118,7 @@ module.exports = function(grunt) {
hash: true,
master: ["index.html"]
},
- src: [
- "openNote.bundle.*",
- "webpack_files/**/*.*",
- "openNote/**/*.html",
- ],
+ src: bundleFiles,
dest: "openNote.appcache"
}
}
diff --git a/package.json b/package.json
index f4d4674..4dcef36 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "OpenNote",
- "version": "17.02.01",
+ "version": "18.03.00-Alpha",
"description": "",
"main": "Gruntfile.js",
"author": "Jacob Liscom",
From 7712b360d71851e9c998b9b9a6f740a9e24915bf Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sun, 28 Jan 2018 01:20:39 -0700
Subject: [PATCH 10/17] Abstracted tag service. Fix tag bug
---
.jshintrc | 4 +-
openNote/controllers/folderController.js | 18 +-
openNote/controllers/noteController.js | 12 +-
.../settings/databaseController.js | 2 +
openNote/services/storageService.js | 352 +-
openNote/services/tagService.js | 99 +-
openNote/style/invert/style.less | 1 +
package-lock.json | 8345 +++++++++++++++++
8 files changed, 8427 insertions(+), 406 deletions(-)
create mode 100644 package-lock.json
diff --git a/.jshintrc b/.jshintrc
index 684ba52..c05a4f7 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -1,5 +1,5 @@
{
- "esversion":6,
+ "esversion":5,
"node": true,
"undef": true,
"unused": true,
@@ -10,5 +10,5 @@
"devel":true,
"jquery":true,
"jasmine": true,
- "predef": [ "angular","alertify","", "PouchDB","inject","CodeMirror" ]
+ "predef": [ "angular","alertify","", "PouchDB","inject","CodeMirror"]
}
diff --git a/openNote/controllers/folderController.js b/openNote/controllers/folderController.js
index c7f42a3..3d0e5b3 100644
--- a/openNote/controllers/folderController.js
+++ b/openNote/controllers/folderController.js
@@ -3,6 +3,7 @@ openNote.controller("folderController", ["$scope",
"$rootScope",
"$location",
"$routeParams",
+ "tagService",
"storageService",
"config",
"$timeout",
@@ -10,6 +11,7 @@ openNote.controller("folderController", ["$scope",
$rootScope,
$location,
$routeParams,
+ tagService,
storageService,
config,
$timeout) {
@@ -194,15 +196,17 @@ openNote.controller("folderController", ["$scope",
return;
var parentFolderID = $scope.currentFolder.parentFolderID;
- storageService.deleteFolder($scope.currentFolder, function() {
- $rootScope.$emit("reloadListView", {});
+ tagService.deleteFolder($scope.currentFolder).then(function(){ // This needs to be done synchronously instead of an event because its possible for the storage service delete loop to get ahead and destoy the notes before the tag service has a change to delete them.
+ storageService.deleteFolder($scope.currentFolder, function() {
+ $rootScope.$emit("reloadListView", {});
- if (!parentFolderID)
- $location.url("/folder/");
- else
- $location.url("/folder/" + parentFolderID);
+ if (!parentFolderID)
+ $location.url("/folder/");
+ else
+ $location.url("/folder/" + parentFolderID);
- $scope.$apply();
+ $scope.$apply();
+ });
});
});
};
diff --git a/openNote/controllers/noteController.js b/openNote/controllers/noteController.js
index 050b0d8..ba8363f 100644
--- a/openNote/controllers/noteController.js
+++ b/openNote/controllers/noteController.js
@@ -86,9 +86,6 @@ openNote.controller("noteController", ["$scope",
* Take us into edit mode
*/
var activateEditMode = function() {
- //FIXME
-
-
$scope.editMode = true;
if ($scope.note._id)
@@ -106,9 +103,16 @@ openNote.controller("noteController", ["$scope",
$scope.editor = CodeMirror.fromTextArea(document.getElementById("note-editor"), {
mode: "markdown",
theme: "material",
- lineNumbers: true
+ lineNumbers: true,
+ indentUnit: 4
});
+ // var resize = function() {
+ // $(".CodeMirror").css({"height": ($(window).height()*0.75 )+ "px"});
+ // };
+ // window.onresize = resize;
+ // resize();
+
});
};
diff --git a/openNote/controllers/settings/databaseController.js b/openNote/controllers/settings/databaseController.js
index a6c0fbf..c7edeef 100644
--- a/openNote/controllers/settings/databaseController.js
+++ b/openNote/controllers/settings/databaseController.js
@@ -42,6 +42,7 @@ openNote.controller("databaseController", ["$scope",
storageService.destroyDatabase(function() {
$rootScope.$emit("reloadListView", {});
+ $rootScope.$emit("tagsUpdated");
window.location.href = '#/';
$rootScope.$apply();
alertify.success("Database deleted");
@@ -54,6 +55,7 @@ openNote.controller("databaseController", ["$scope",
*/
$scope.cleanOrphans = function() {
storageService.cleanOrphans();
+ //TODO implement tagService.cleanOrphans()
alertify.log("Finding and removing orphans");
};
diff --git a/openNote/services/storageService.js b/openNote/services/storageService.js
index 0dc992d..adc223b 100644
--- a/openNote/services/storageService.js
+++ b/openNote/services/storageService.js
@@ -1,307 +1,45 @@
-import openNote from "../openNote.js";
-/**
- * @author - Jake Liscom
- * @project - OpenNote
- */
-
-/**
- * Storage service
- */
-openNote.service("storageService", ["$rootScope", function ($rootScope) {
-
- var localDatabase = null;
- var remoteDatabase = null;
- var replicationTimeout = null;
- var self=this;
-
- /**
- * helper function to create indexes
- * @param name - the name of the index
- * @param mapFunction - the map function
- */
- var createDesignDoc = function (name, mapFunction) {
- var ddoc = {
- _id: "_design/" + name,
- views: {}
- };
- ddoc.views[name] = { map: mapFunction.toString() };
- return ddoc;
- };
-
- /**
- * Initialize the PouchDB database and create indexes
- */
- this.init = function(){
- //Create or find database
- localDatabase = new PouchDB("openNote");
-
- //Indexes
- localDatabase.put(createDesignDoc("parentFolderID",function (doc) {
- emit(doc.parentFolderID);
- })).catch(function (err) {
- if (err.status != 409)
- throw err;
- // ignore if doc already exists
- });
-
- //Re-init sync
- var url = localStorage.getItem("remoteURL");
- if(url){
- remoteDatabase = new PouchDB(url);
- this.setupSync();
- }
- };
-
- /**
- * @param url - The remote URL to use in replication
- */
- this.setRemoteURL = function(url){
- localStorage.setItem("remoteURL",url);
- remoteDatabase = new PouchDB(url);
- };
-
- /**
- * @return - The remote URL to use in replication
- */
- this.getRemoteURL = function(){
- return localStorage.getItem("remoteURL");
- };
-
- /**
- * Get the local database
- */
- this.database = function(){
- return localDatabase;
- };
-
- /**
- * Get the remote database
- */
- this.remoteDatabase = function(){
- return remoteDatabase;
- };
-
- /**
- * Setup live sync
- */
- this.setupSync = function(){
- localDatabase.sync(remoteDatabase,{live: true, retry: true}).on("complete", function () {
- alertify.success("Replication complete");
- }).on("error", function () {
- alertify.error("Replication error");
- }).on("paused", function () {
- if(!replicationTimeout)
- replicationTimeout = setTimeout(function(){
- alertify.log("Replication complete");
- replicationTimeout = null;
-
- $rootScope.$emit("replicationComplete", {});
- $rootScope.$apply();
- }, 1000);
- });
- };
-
- /**
- * Load a folders contents
- * @param folderID - the folder id to load the content folder
- * @param callback - query callback handler
- */
- this.loadFolderContents = function(folderID, callback){
- localDatabase.query("parentFolderID", {key: folderID, include_docs: true}).then(callback);
- };
-
- /**
- * Delete the database
- */
- this.destroyDatabase = function(callback){
- localDatabase.destroy().then(function(){
- localStorage.removeItem("remoteURL");
- self.init();
- callback();
- });
- };
-
- /**
- * Dump database to a file
- * @param callback - callback where data is returned to
- */
- this.exportToFile = function(callback){
- localDatabase.allDocs({
- include_docs: true
- }).then(function (result) {
- var file = new Blob([JSON.stringify({ data:result.rows})], {type : "application/json"}); // the blob
- callback(URL.createObjectURL(file));
- });
- };
-
- /**
- * Import database from a file
- */
- this.importFile = function(backup){
- backup.data.forEach(function(document){
- localDatabase.put(document.doc).catch(function(error){
- if(error.status == 409){
- var errorMSG=document.doc._id+" was in conflict and was not imported";
- alertify.error(errorMSG);
- console.error(errorMSG);
- }
- else throw error;
- });
- });
- };
-
- /**
- * Delete a folder tree
- * @param folder - the folder doc to delete
- * @param callback - callback when the given folder has been removed
- */
- this.deleteFolder = function(folder,callback){//TODO test
- if(!folder._id)//Required
- return;
- self.loadFolderContents(folder._id, function (results) {
- results.rows.filter(self.noteFilter).forEach(function(note){
- localDatabase.remove(note.doc);
- });
-
- results.rows.filter(self.folderFilter).forEach(function(subFolder){
- self.deleteFolder(subFolder.doc);
- });
- localDatabase.remove(folder).then(callback);
- });
- };
-
-
- /**
- * Find an clean the orphans
- * That is delete docs whose parent id is not null and does not exist in the database
- */
- this.cleanOrphans = function(){
- var map = {};
- var length = 0;
- var processed = 0;
-
- /**
- * Check to see if we have processed all the records
- * @return {[type]} [description]
- */
- var doneCheck = function(){
- processed++;
- if(processed>=length)
- orphanRemover();
- };
-
- /**
- * Find orphans
- * @param result - the result object as returned by allDocs
- */
- var orphanHunter = function(result){
- if(!result.doc.parentFolderID)//nulls are root and cannot be orphans
- return doneCheck();
-
- localDatabase.get(result.doc.parentFolderID).then(doneCheck).catch(function(err){
- if(err.status==404)
- map[result.id]=result;
- else
- throw err;
-
- doneCheck();
- });
- };
-
- /**
- * Remove the orphans
- */
- var orphanRemover = function(){
- for(var orphan in map){
- if(self.typeFilter(map[orphan],"folder"))
- self.deleteFolder(map[orphan]);
- else
- localDatabase.remove(map[orphan].doc);
- }
- };
-
- localDatabase.allDocs({
- include_docs: true
- }).then(function (result) {
- length=result.rows.length;
- result.rows.forEach(orphanHunter);
- });
- };
-
- /**
- * @param doc - the doc we are looping through
- * @param property - the property of the doc we want to compare
- * @param searchString - the searchString to look for
- */
- var searchFilter = function(doc,property,searchString){
- if(doc[property])
- return doc[property].toLowerCase().indexOf(searchString.toLowerCase()) > -1;
- else
- return false;
- };
-
- /**
- * Search folder names
- * @param searchString - the search string to use
- * @param callback - the callback to return the data to
- */
- this.searchFolderNames = function(searchString, callback){
- localDatabase.query(function (doc, emit) {
- emit(searchFilter(doc,"name",searchString));
- }, {key: true, include_docs: true}).then(function (results) {
- callback(results.rows.filter(self.folderFilter));
- });
- };
-
- /**
- * Search note titles
- * @param searchString - the search string to use
- * @param callback - the callback to return the data to
- */
- this.searchNoteTitles = function(searchString, callback){
- localDatabase.query(function (doc, emit) {
- emit(searchFilter(doc,"title",searchString));
- }, {key: true, include_docs: true}).then(function (results) {
- callback(results.rows.filter(self.noteFilter));
- });
- };
-
- /**
- * Search note body
- * @param searchString - the search string to use
- * @param callback - the callback to return the data to
- */
- this.searchNoteBody = function(searchString, callback){
- localDatabase.query(function (doc, emit) {
- emit(searchFilter(doc,"note",searchString));
- }, {key: true, include_docs: true}).then(function (results) {
- callback(results.rows.filter(self.noteFilter));
- });
- };
-
- /**
- * Filter out everything but a given type
- * @param object - the object to filter
- * @param type - the type to filter in
- */
- this.typeFilter = function(object,type){
- return object.doc.type==type;
- };
-
- /**
- * Filter out everything but type folder
- */
- this.folderFilter=function(object){
- return self.typeFilter(object,"folder");
- };
-
- /**
- * Filter out everything but type note
- */
- this.noteFilter=function(object){
- return self.typeFilter(object,"note");
- };
-
- //First time create database
- this.init();
-}]);
+import openNote from "../openNote.js";
+var StorageService = require("../../../OpenNote-SharedServices/Storage.service.js");
+/**
+ * @author - Jake Liscom
+ * @project - OpenNote
+ */
+
+var replicationTimeoutDuration=5000;
+
+/**
+ * Storage service
+ */
+openNote.service("storageService", ["$rootScope", function($rootScope) { //Needs to be a function not a lambda
+ var replicationTimeout = null;
+
+ StorageService.call(this,
+ localStorage,
+ PouchDB,
+ { //Apply makes a function call act more as a macro then a function. Everything is run under this context
+ options: {
+ live: true,
+ retry: true
+ },
+ callback: function(syncObject) {
+ syncObject.on("complete", function() {
+ alertify.success("Replication complete");
+ }).on("error", function() {
+ alertify.error("Replication error");
+ }).on("paused", function() {
+ if (!replicationTimeout)
+ replicationTimeout = setTimeout(function() {
+ alertify.log("Replication complete");
+ replicationTimeout = null;
+
+ $rootScope.$emit("replicationComplete", {});
+ $rootScope.$apply();
+ }, replicationTimeoutDuration);
+ });
+ }
+ }
+ );
+
+ //Execute
+ this.init();
+}]);
diff --git a/openNote/services/tagService.js b/openNote/services/tagService.js
index 3ce77b7..0500390 100644
--- a/openNote/services/tagService.js
+++ b/openNote/services/tagService.js
@@ -1,101 +1,28 @@
import openNote from "../openNote.js";
+var TagService = require("../../../OpenNote-SharedServices/Tag.service.js");
openNote.service("tagService", ["$rootScope","storageService", function ($rootScope,storageService) {
- var service = this;
- var tagRegex = /(?:\ |^|\n|>)(#[^\ <\n]+)/ig;
+ // Wrapper for event emmit;
+ var eventEmitter = function(title){
+ $rootScope.$emit(title); // When passing in $rootScope.$emit dirrectly got a weird error
+ };
+
+ var tagService = TagService(storageService, eventEmitter);
/**
* Bind handlers to the root scope
*/
this.bindHandlers = function(){
$rootScope.$on("noteSaved", function(event, note) {
- deleteTagsFromMap(note._id,function(){
- var matches;
- var output = [];
- while ((matches = tagRegex.exec(note.note)))
- output.push(matches[1]);
-
- if(!output.length)
- return;
- addTagsToMap(output,note._id);
- });
- });
-
- $rootScope.$on("noteDeleted", function(event, note) {
- deleteTagsFromMap(note._id,function(){});
- });
- };
-
- /**
- * Add tags to the map
- * @param tags - array of tags present
- * @param id - ID of the note
- * @emmit - emiits tagsUpdated on success
- */
- var addTagsToMap = function(tags,id){
- var saveCallback = function(response){
- if(!response.ok)
- throw response;
- $rootScope.$emit("tagsUpdated");
- };
-
- var addTags = function(map){
- tags.forEach(function(tag){
- tag = tag.toLowerCase();
- if(!tag.indexOf("#39;")||!tag.indexOf("#34;"))//Remove html and special characters
- return;
-
- if(!map.tags[tag])
- return (map.tags[tag]=[id]);
- return map.tags[tag].push(id);
- });
-
- map._id="tagMap";
- storageService.database().put(map).then(saveCallback);
- };
-
- service.getMap().then(addTags,function(err){
- if(err.status==404)
- return addTags({tags:{}});//Nothing found nothing to delete
- throw err;
+ tagService.saveNote(note);
});
- };
- /**
- * Remove all tags for an id
- * @param id - the id to remove tags for
- * @param callback - calls on sucessful return
- */
- var deleteTagsFromMap = function(id,callback){
- service.getMap().then(function(map){
- //Remove all tags from array
- for(var tag in map.tags){
- var index = map.tags[tag].indexOf(id);
- if(index == -1)
- continue;
- map.tags[tag].splice(index, 1);
- if(!map.tags[tag].length)
- delete map.tags[tag];
- }
- //Save
- storageService.database().put(map).then(function(response){
- if(!response.ok)
- throw response;
- $rootScope.$emit("tagsUpdated");
- return callback();
- });
- },function(err){
- if(err.status==404)
- return callback();//Nothing found nothing to delete
- throw err;
+ //$rootScope.$emit
+ $rootScope.$on("noteDeleted", function(event, note) {
+ tagService.deleteNote(note);
});
};
- /**
- * Get the map
- * @return - a promise that when resolves return the tag map
- */
- this.getMap = function(){
- return storageService.database().get("tagMap");
- };
+ this.getMap = tagService.getMap;
+ this.deleteFolder = tagService.deleteFolder;
}]);
diff --git a/openNote/style/invert/style.less b/openNote/style/invert/style.less
index 4291ccf..46e2c6a 100644
--- a/openNote/style/invert/style.less
+++ b/openNote/style/invert/style.less
@@ -303,4 +303,5 @@ img {
// Note partial
.notePartial .CodeMirror{
border-radius:0 0 4px 4px;/*round the corners*/
+ size: 75vh;
}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..7d235cc
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,8345 @@
+{
+ "name": "OpenNote",
+ "version": "18.03.00-Alpha",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "abstract-leveldown": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz",
+ "integrity": "sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ==",
+ "requires": {
+ "xtend": "4.0.1"
+ }
+ },
+ "accepts": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
+ "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=",
+ "dev": true,
+ "requires": {
+ "mime-types": "2.1.17",
+ "negotiator": "0.6.1"
+ }
+ },
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ },
+ "acorn-dynamic-import": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz",
+ "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
+ "dev": true,
+ "requires": {
+ "acorn": "4.0.13"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
+ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
+ "dev": true
+ }
+ }
+ },
+ "ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+ "requires": {
+ "co": "4.6.0",
+ "json-stable-stringify": "1.0.1"
+ }
+ },
+ "ajv-keywords": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
+ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
+ "dev": true
+ },
+ "alertify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/alertify/-/alertify-0.3.0.tgz",
+ "integrity": "sha1-Mq2jKY/02RrOcfJ0bXCRCnvQgTU="
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2",
+ "longest": "1.0.1",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+ "dev": true
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true,
+ "optional": true
+ },
+ "angular": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/angular/-/angular-1.6.8.tgz",
+ "integrity": "sha512-9WErZIOw1Cu1V5Yxdvxz/6YpND8ntdP71fdPpufPFJvZodZXqCjQBYrHqEoMZreO5i84O3D/Jw/vepoFt68Azw=="
+ },
+ "angular-animate": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.6.8.tgz",
+ "integrity": "sha512-zKaq9vtJ+QPV6q159mJkb6uKa3SiTe0PXj+W9WO3cDhLly8LuQHYRteAAD3/SqlS7GMq2SFlJvs7VQduPJpUQw=="
+ },
+ "angular-mocks": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.6.8.tgz",
+ "integrity": "sha512-yuP+PnUqOVh1ewIWAxBHOTowl/JNpTRFcVPKmIm+AZfQLU/jJxz4om4FgQY5udlIRLcbwPeXEx/TbamfC7Md9w==",
+ "dev": true
+ },
+ "angular-resource": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/angular-resource/-/angular-resource-1.6.8.tgz",
+ "integrity": "sha512-Vx97FiunDEWlrKFwaSH3O8/S7krWarWme1Tj88a58EJSD2RSGgHPvbD4YXvzZHk9yqitUr/t1f+6UzYLge5o/g=="
+ },
+ "angular-route": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/angular-route/-/angular-route-1.6.8.tgz",
+ "integrity": "sha512-6PlZVc9SRkzYdinL8urilbA/6RmbKdaGrgAKWo2XXgblOHLxguWcYcqYXPUdlMVbMYZuubI+OzTXMa2zol18AQ=="
+ },
+ "angular-sanitize": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.6.8.tgz",
+ "integrity": "sha512-XUYxWgPwwT+DGIMzmMBMSwJbYt5g6yMiu5Pq2GIW9EuO+PBNhL4xAf8qU7b2HfH/PwM4VY5NpIa25EoKDdgXAA=="
+ },
+ "ansi-html": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+ "dev": true,
+ "requires": {
+ "micromatch": "2.3.11",
+ "normalize-path": "2.1.1"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "archiver": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz",
+ "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=",
+ "dev": true,
+ "requires": {
+ "archiver-utils": "1.3.0",
+ "async": "2.6.0",
+ "buffer-crc32": "0.2.13",
+ "glob": "7.1.2",
+ "lodash": "4.17.4",
+ "readable-stream": "2.3.3",
+ "tar-stream": "1.5.5",
+ "walkdir": "0.0.11",
+ "zip-stream": "1.2.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "archiver-utils": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
+ "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2",
+ "graceful-fs": "4.1.11",
+ "lazystream": "1.0.0",
+ "lodash": "4.17.4",
+ "normalize-path": "2.1.1",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
+ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
+ "requires": {
+ "delegates": "1.0.0",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "argparse": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
+ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "1.0.3"
+ }
+ },
+ "argsarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/argsarray/-/argsarray-0.0.1.tgz",
+ "integrity": "sha1-bnIHtOzbObCviDA/pa4ivajfYcs="
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-flatten": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
+ "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=",
+ "dev": true
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.2",
+ "es-abstract": "1.10.0"
+ }
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "1.0.3"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
+ },
+ "asn1.js": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz",
+ "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.0"
+ }
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "dev": true,
+ "requires": {
+ "util": "0.10.3"
+ }
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
+ },
+ "async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.4"
+ }
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "attempt-x": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/attempt-x/-/attempt-x-1.1.1.tgz",
+ "integrity": "sha512-hIp37ojJRRW8ExWSxxLpkDHUufk/DFfsb7/cUC1cVbBg7JV4gJTkCTRa44dlL9e5jx1P3VNrjL7QOQfi4MyltA=="
+ },
+ "autoprefixer": {
+ "version": "6.7.7",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
+ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "caniuse-db": "1.0.30000784",
+ "normalize-range": "0.1.2",
+ "num2fraction": "1.2.2",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ }
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "dev": true
+ },
+ "base64-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
+ "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
+ "dev": true
+ },
+ "basic-auth": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz",
+ "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "optional": true,
+ "requires": {
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+ "dev": true
+ },
+ "bindings": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
+ "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw=="
+ },
+ "bl": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
+ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
+ "requires": {
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "body-parser": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
+ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "content-type": "1.0.4",
+ "debug": "2.6.9",
+ "depd": "1.1.1",
+ "http-errors": "1.6.2",
+ "iconv-lite": "0.4.19",
+ "on-finished": "2.3.0",
+ "qs": "6.5.1",
+ "raw-body": "2.3.2",
+ "type-is": "1.6.15"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+ "dev": true
+ }
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "dev": true,
+ "requires": {
+ "array-flatten": "2.1.1",
+ "deep-equal": "1.0.1",
+ "dns-equal": "1.0.0",
+ "dns-txt": "2.0.2",
+ "multicast-dns": "6.2.1",
+ "multicast-dns-service-types": "1.1.0"
+ },
+ "dependencies": {
+ "deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+ "dev": true
+ }
+ }
+ },
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "bootstrap": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
+ "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ }
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
+ "requires": {
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.2"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
+ "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "1.0.3",
+ "cipher-base": "1.0.4",
+ "create-hash": "1.1.3",
+ "evp_bytestokey": "1.0.3",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
+ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "1.1.1",
+ "browserify-des": "1.0.0",
+ "evp_bytestokey": "1.0.3"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
+ "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "des.js": "1.0.0",
+ "inherits": "2.0.3"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "randombytes": "2.0.5"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.1.3",
+ "create-hmac": "1.1.6",
+ "elliptic": "6.4.0",
+ "inherits": "2.0.3",
+ "parse-asn1": "5.1.0"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "1.0.6"
+ }
+ },
+ "browserslist": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "dev": true,
+ "requires": {
+ "caniuse-db": "1.0.30000784",
+ "electron-to-chromium": "1.3.30"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "1.2.1",
+ "ieee754": "1.1.8",
+ "isarray": "1.0.0"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
+ },
+ "buffer-from": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.1.tgz",
+ "integrity": "sha1-V7GLHaChnsBvM4N6UnWiQjUb114=",
+ "requires": {
+ "is-array-buffer-x": "1.7.0"
+ }
+ },
+ "buffer-indexof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "cached-constructors-x": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cached-constructors-x/-/cached-constructors-x-1.0.0.tgz",
+ "integrity": "sha512-JVP0oilYlPgBTD8bkQ+of7hSIJRtydCCJiMtzdRMXVQ98gdj0NyrJTZzbu5wtlO26Ev/1HXRTtbBNsVlLJ3+3A=="
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ }
+ }
+ },
+ "caniuse-api": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
+ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "caniuse-db": "1.0.30000784",
+ "lodash.memoize": "4.1.2",
+ "lodash.uniq": "4.5.0"
+ }
+ },
+ "caniuse-db": {
+ "version": "1.0.30000784",
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000784.tgz",
+ "integrity": "sha1-G+lQEtlInHcZB0+BruV9vf/mNhs=",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "requires": {
+ "align-text": "0.1.4",
+ "lazy-cache": "1.0.4"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "dev": true,
+ "requires": {
+ "anymatch": "1.3.2",
+ "async-each": "1.0.1",
+ "glob-parent": "2.0.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "2.0.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.1.0"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE="
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "clap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
+ "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3"
+ }
+ },
+ "clean-css": {
+ "version": "2.2.23",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-2.2.23.tgz",
+ "integrity": "sha1-BZC1R4tRbEkD7cLYm9P9vdKGMow=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "commander": "2.2.0"
+ }
+ },
+ "cli": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz",
+ "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
+ "dev": true,
+ "requires": {
+ "exit": "0.1.2",
+ "glob": "7.1.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "requires": {
+ "center-align": "0.1.3",
+ "right-align": "0.1.3",
+ "wordwrap": "0.0.2"
+ }
+ },
+ "clone": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
+ "dev": true
+ },
+ "clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg="
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+ },
+ "coa": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
+ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
+ "dev": true,
+ "requires": {
+ "q": "1.5.1"
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
+ "codemirror": {
+ "version": "5.33.0",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.33.0.tgz",
+ "integrity": "sha512-HT6PKVqkwpzwB3jl5hXFoQteEWXbSWMzG3Z8RVYlx8hZwCOLCy4NU7vkSB3dYX3e6ORwRfGw4uFOXaw4rn/a9Q=="
+ },
+ "coffee-script": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz",
+ "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=",
+ "dev": true
+ },
+ "color": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
+ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.3",
+ "color-convert": "1.9.1",
+ "color-string": "0.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "color-string": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
+ "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "colormin": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
+ "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
+ "dev": true,
+ "requires": {
+ "color": "0.11.4",
+ "css-color-names": "0.0.4",
+ "has": "1.0.1"
+ }
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.2.0.tgz",
+ "integrity": "sha1-F1rUuTF/P/YV8gHB5XIk9Vo+kd8=",
+ "dev": true,
+ "optional": true
+ },
+ "compress-commons": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz",
+ "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "crc32-stream": "2.0.0",
+ "normalize-path": "2.1.1",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "compressible": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz",
+ "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.30.0"
+ }
+ },
+ "compression": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz",
+ "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=",
+ "dev": true,
+ "requires": {
+ "accepts": "1.3.4",
+ "bytes": "3.0.0",
+ "compressible": "2.0.12",
+ "debug": "2.6.9",
+ "on-headers": "1.0.1",
+ "safe-buffer": "5.1.1",
+ "vary": "1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
+ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "typedarray": "0.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "connect": {
+ "version": "3.6.5",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz",
+ "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "finalhandler": "1.0.6",
+ "parseurl": "1.3.2",
+ "utils-merge": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "connect-history-api-fallback": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
+ "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
+ "dev": true
+ },
+ "connect-livereload": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz",
+ "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "0.1.4"
+ }
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
+ "dev": true
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "crc": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz",
+ "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=",
+ "dev": true
+ },
+ "crc32-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz",
+ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=",
+ "dev": true,
+ "requires": {
+ "crc": "3.5.0",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
+ "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "elliptic": "6.4.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
+ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "inherits": "2.0.3",
+ "ripemd160": "2.0.1",
+ "sha.js": "2.4.9"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz",
+ "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "create-hash": "1.1.3",
+ "inherits": "2.0.3",
+ "ripemd160": "2.0.1",
+ "safe-buffer": "5.1.1",
+ "sha.js": "2.4.9"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
+ "which": "1.3.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ }
+ }
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "requires": {
+ "boom": "2.10.1"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "1.0.0",
+ "browserify-sign": "4.0.4",
+ "create-ecdh": "4.0.0",
+ "create-hash": "1.1.3",
+ "create-hmac": "1.1.6",
+ "diffie-hellman": "5.0.2",
+ "inherits": "2.0.3",
+ "pbkdf2": "3.0.14",
+ "public-encrypt": "4.0.0",
+ "randombytes": "2.0.5",
+ "randomfill": "1.0.3"
+ }
+ },
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+ "dev": true
+ },
+ "css-loader": {
+ "version": "0.28.7",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz",
+ "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "css-selector-tokenizer": "0.7.0",
+ "cssnano": "3.10.0",
+ "icss-utils": "2.1.0",
+ "loader-utils": "1.1.0",
+ "lodash.camelcase": "4.3.0",
+ "object-assign": "4.1.1",
+ "postcss": "5.2.18",
+ "postcss-modules-extract-imports": "1.1.0",
+ "postcss-modules-local-by-default": "1.2.0",
+ "postcss-modules-scope": "1.1.0",
+ "postcss-modules-values": "1.3.0",
+ "postcss-value-parser": "3.3.0",
+ "source-list-map": "2.0.0"
+ }
+ },
+ "css-selector-tokenizer": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
+ "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
+ "dev": true,
+ "requires": {
+ "cssesc": "0.1.0",
+ "fastparse": "1.1.1",
+ "regexpu-core": "1.0.0"
+ }
+ },
+ "cssesc": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
+ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
+ "dev": true
+ },
+ "cssnano": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
+ "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
+ "dev": true,
+ "requires": {
+ "autoprefixer": "6.7.7",
+ "decamelize": "1.2.0",
+ "defined": "1.0.0",
+ "has": "1.0.1",
+ "object-assign": "4.1.1",
+ "postcss": "5.2.18",
+ "postcss-calc": "5.3.1",
+ "postcss-colormin": "2.2.2",
+ "postcss-convert-values": "2.6.1",
+ "postcss-discard-comments": "2.0.4",
+ "postcss-discard-duplicates": "2.1.0",
+ "postcss-discard-empty": "2.1.0",
+ "postcss-discard-overridden": "0.1.1",
+ "postcss-discard-unused": "2.2.3",
+ "postcss-filter-plugins": "2.0.2",
+ "postcss-merge-idents": "2.1.7",
+ "postcss-merge-longhand": "2.0.2",
+ "postcss-merge-rules": "2.1.2",
+ "postcss-minify-font-values": "1.0.5",
+ "postcss-minify-gradients": "1.0.5",
+ "postcss-minify-params": "1.2.2",
+ "postcss-minify-selectors": "2.1.1",
+ "postcss-normalize-charset": "1.1.1",
+ "postcss-normalize-url": "3.0.8",
+ "postcss-ordered-values": "2.2.3",
+ "postcss-reduce-idents": "2.4.0",
+ "postcss-reduce-initial": "1.0.1",
+ "postcss-reduce-transforms": "1.0.4",
+ "postcss-svgo": "2.1.6",
+ "postcss-unique-selectors": "2.0.2",
+ "postcss-value-parser": "3.3.0",
+ "postcss-zindex": "2.2.0"
+ }
+ },
+ "csso": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
+ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
+ "dev": true,
+ "requires": {
+ "clap": "1.2.3",
+ "source-map": "0.5.7"
+ }
+ },
+ "ctype": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz",
+ "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=",
+ "dev": true,
+ "optional": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "1.0.2"
+ }
+ },
+ "d": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
+ "dev": true,
+ "requires": {
+ "es5-ext": "0.10.37"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "dateformat": {
+ "version": "1.0.2-1.2.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
+ "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=",
+ "dev": true
+ },
+ "debug": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.0.1.tgz",
+ "integrity": "sha512-6nVc6S36qbt/mutyt+UGMnawAMrPDZUPQjRZI3FS9tCtDRhvxJbK79unYBLPi+z5SLXQ3ftoVBFCblQtNSls8w==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "deep-equal": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.0.0.tgz",
+ "integrity": "sha1-mWedO70EcVb81FDT0B7rkGhpHoM=",
+ "dev": true
+ },
+ "deep-extend": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
+ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8="
+ },
+ "deferred-leveldown": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-2.0.3.tgz",
+ "integrity": "sha512-8c2Hv+vIwKNc7qqy4zE3t5DIsln+FQnudcyjLYstHwLFg7XnXZT/H8gQb8lj6xi8xqGM0Bz633ZWcCkonycBTA==",
+ "requires": {
+ "abstract-leveldown": "3.0.0"
+ }
+ },
+ "define-properties": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
+ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+ "dev": true,
+ "requires": {
+ "foreach": "2.0.5",
+ "object-keys": "1.0.11"
+ }
+ },
+ "defined": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+ "dev": true
+ },
+ "del": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
+ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+ "dev": true,
+ "requires": {
+ "globby": "6.1.0",
+ "is-path-cwd": "1.0.0",
+ "is-path-in-cwd": "1.0.0",
+ "p-map": "1.2.0",
+ "pify": "3.0.0",
+ "rimraf": "2.2.8"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ },
+ "depd": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+ "dev": true
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.0"
+ }
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "detect-libc": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-0.2.0.tgz",
+ "integrity": "sha1-R/31ZzSKF+wl/L8LnkRjSKdvn7U=",
+ "dev": true,
+ "optional": true
+ },
+ "detect-node": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz",
+ "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
+ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "miller-rabin": "4.0.1",
+ "randombytes": "2.0.5"
+ }
+ },
+ "dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+ "dev": true
+ },
+ "dns-packet": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz",
+ "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==",
+ "dev": true,
+ "requires": {
+ "ip": "1.1.5",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+ "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+ "dev": true,
+ "requires": {
+ "buffer-indexof": "1.1.1"
+ }
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.1.3",
+ "entities": "1.1.1"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+ "dev": true
+ },
+ "entities": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+ "dev": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
+ "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
+ "dev": true
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
+ "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.0"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.0"
+ }
+ },
+ "double-ended-queue": {
+ "version": "2.1.0-0",
+ "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
+ "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw="
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "electron-releases": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/electron-releases/-/electron-releases-2.1.0.tgz",
+ "integrity": "sha512-cyKFD1bTE/UgULXfaueIN1k5EPFzs+FRc/rvCY5tIynefAPqopQEgjr0EzY+U3Dqrk/G4m9tXSPuZ77v6dL/Rw==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.3.30",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz",
+ "integrity": "sha512-zx1Prv7kYLfc4OA60FhxGbSo4qrEjgSzpo1/37i7l9ltXPYOoQBtjQxY9KmsgfHnBxHlBGXwLlsbt/gub1w5lw==",
+ "dev": true,
+ "requires": {
+ "electron-releases": "2.1.0"
+ }
+ },
+ "elliptic": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
+ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0",
+ "hash.js": "1.1.3",
+ "hmac-drbg": "1.0.1",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.0",
+ "minimalistic-crypto-utils": "1.0.1"
+ }
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
+ "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
+ "dev": true
+ },
+ "encoding-down": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-3.0.1.tgz",
+ "integrity": "sha512-uvx+39YNqiPLqhXAvOSGBVy/oYBh4p2ShwG9YFCipwgfOhnVIOxuOPE3R9dEGM44bn0VHIrC3ojXq6lNf2ulwg==",
+ "requires": {
+ "abstract-leveldown": "3.0.0",
+ "level-codec": "8.0.0",
+ "level-errors": "1.1.2"
+ },
+ "dependencies": {
+ "level-codec": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-8.0.0.tgz",
+ "integrity": "sha512-gNZlo1HRHz0BWxzGCyNf7xntAs2HKOPvvRBWtXsoDvEX4vMYnSTBS6ZnxoaiX7nhxSBPpegRa8CQ/hnfGBKk3Q=="
+ }
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
+ "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
+ "requires": {
+ "once": "1.4.0"
+ }
+ },
+ "end-stream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/end-stream/-/end-stream-0.1.0.tgz",
+ "integrity": "sha1-MgA/P0OKKwFDFoE3+PpumGbIHtU=",
+ "requires": {
+ "write-stream": "0.4.3"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
+ "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "memory-fs": "0.4.1",
+ "object-assign": "4.1.1",
+ "tapable": "0.2.8"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ }
+ }
+ },
+ "entities": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
+ "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
+ "dev": true
+ },
+ "errno": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz",
+ "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==",
+ "requires": {
+ "prr": "1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz",
+ "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "1.1.1",
+ "function-bind": "1.1.1",
+ "has": "1.0.1",
+ "is-callable": "1.1.3",
+ "is-regex": "1.0.4"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
+ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+ "dev": true,
+ "requires": {
+ "is-callable": "1.1.3",
+ "is-date-object": "1.0.1",
+ "is-symbol": "1.0.1"
+ }
+ },
+ "es5-ext": {
+ "version": "0.10.37",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz",
+ "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=",
+ "dev": true,
+ "requires": {
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "es6-map": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
+ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37",
+ "es6-iterator": "2.0.3",
+ "es6-set": "0.1.5",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "0.3.5"
+ }
+ },
+ "es6-set": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37",
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "0.3.5"
+ }
+ },
+ "es6-symbol": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37"
+ }
+ },
+ "es6-weak-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
+ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37",
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "escope": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
+ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
+ "dev": true,
+ "requires": {
+ "es6-map": "0.1.5",
+ "es6-weak-map": "2.0.2",
+ "esrecurse": "4.2.0",
+ "estraverse": "4.2.0"
+ }
+ },
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true
+ },
+ "esrecurse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
+ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "dev": true
+ },
+ "event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37"
+ }
+ },
+ "eventemitter2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
+ "dev": true
+ },
+ "eventemitter3": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
+ "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
+ "dev": true
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+ "dev": true
+ },
+ "eventsource": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
+ "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+ "dev": true,
+ "requires": {
+ "original": "1.0.0"
+ }
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "1.3.4",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "5.1.0",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ }
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
+ "requires": {
+ "is-posix-bracket": "0.1.1"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
+ "requires": {
+ "fill-range": "2.2.3"
+ }
+ },
+ "expand-template": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.0.tgz",
+ "integrity": "sha512-kkjwkMqj0h4w/sb32ERCDxCQkREMCAgS39DscDnSwDsbxnwwM1BTZySdC3Bn1lhY7vL08n9GoO/fVTynjDgRyQ=="
+ },
+ "express": {
+ "version": "4.16.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz",
+ "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=",
+ "dev": true,
+ "requires": {
+ "accepts": "1.3.4",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.18.2",
+ "content-disposition": "0.5.2",
+ "content-type": "1.0.4",
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "1.1.1",
+ "encodeurl": "1.0.1",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "finalhandler": "1.1.0",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "1.1.2",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "2.0.2",
+ "qs": "6.5.1",
+ "range-parser": "1.2.0",
+ "safe-buffer": "5.1.1",
+ "send": "0.16.1",
+ "serve-static": "1.13.1",
+ "setprototypeof": "1.1.0",
+ "statuses": "1.3.1",
+ "type-is": "1.6.15",
+ "utils-merge": "1.0.1",
+ "vary": "1.1.2"
+ },
+ "dependencies": {
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
+ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "1.0.1",
+ "escape-html": "1.0.3",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "statuses": "1.3.1",
+ "unpipe": "1.0.0"
+ }
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "dev": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "extract-text-webpack-plugin": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz",
+ "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==",
+ "dev": true,
+ "requires": {
+ "async": "2.6.0",
+ "loader-utils": "1.1.0",
+ "schema-utils": "0.3.0",
+ "webpack-sources": "1.1.0"
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "fast-deep-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
+ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
+ "dev": true
+ },
+ "fast-future": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz",
+ "integrity": "sha1-hDWpqqAteSSNF9cE52JZMB2ZKAo="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fastparse": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
+ "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
+ "dev": true
+ },
+ "faye-websocket": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz",
+ "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=",
+ "dev": true
+ },
+ "file-loader": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.6.tgz",
+ "integrity": "sha512-873ztuL+/hfvXbLDJ262PGO6XjERnybJu2gW1/5j8HUfxSiFJI9Hj/DhZ50ZGRUxBvuNiazb/cM2rh9pqrxP6Q==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "1.1.0",
+ "schema-utils": "0.3.0"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "dev": true,
+ "requires": {
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "1.1.7",
+ "repeat-element": "1.1.2",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "finalhandler": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz",
+ "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "1.0.1",
+ "escape-html": "1.0.3",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "statuses": "1.3.1",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "2.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
+ "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=",
+ "dev": true,
+ "requires": {
+ "glob": "3.2.11",
+ "lodash": "2.4.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
+ "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimatch": "0.3.0"
+ }
+ },
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
+ "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ }
+ }
+ },
+ "flatten": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
+ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.17"
+ }
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+ "dev": true
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.2.8"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "requires": {
+ "aproba": "1.2.0",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.2"
+ }
+ },
+ "gaze": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
+ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
+ "dev": true,
+ "requires": {
+ "globule": "0.1.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
+ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+ "dev": true
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "getobject": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
+ "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4="
+ },
+ "glob": {
+ "version": "3.1.21",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
+ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "1.2.3",
+ "inherits": "1.0.2",
+ "minimatch": "0.2.14"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
+ "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
+ "dev": true
+ }
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
+ "requires": {
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
+ "requires": {
+ "is-glob": "2.0.1"
+ }
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ }
+ }
+ },
+ "globule": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
+ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
+ "dev": true,
+ "requires": {
+ "glob": "3.1.21",
+ "lodash": "1.0.2",
+ "minimatch": "0.2.14"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
+ "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=",
+ "dev": true
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
+ "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
+ "dev": true
+ },
+ "grunt": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
+ "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=",
+ "dev": true,
+ "requires": {
+ "async": "0.1.22",
+ "coffee-script": "1.3.3",
+ "colors": "0.6.2",
+ "dateformat": "1.0.2-1.2.3",
+ "eventemitter2": "0.4.14",
+ "exit": "0.1.2",
+ "findup-sync": "0.1.3",
+ "getobject": "0.1.0",
+ "glob": "3.1.21",
+ "grunt-legacy-log": "0.1.3",
+ "grunt-legacy-util": "0.2.0",
+ "hooker": "0.2.3",
+ "iconv-lite": "0.2.11",
+ "js-yaml": "2.0.5",
+ "lodash": "0.9.2",
+ "minimatch": "0.2.14",
+ "nopt": "1.0.10",
+ "rimraf": "2.2.8",
+ "underscore.string": "2.2.1",
+ "which": "1.0.9"
+ },
+ "dependencies": {
+ "argparse": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
+ "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=",
+ "dev": true,
+ "requires": {
+ "underscore": "1.7.0",
+ "underscore.string": "2.4.0"
+ },
+ "dependencies": {
+ "underscore.string": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz",
+ "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=",
+ "dev": true
+ }
+ }
+ },
+ "async": {
+ "version": "0.1.22",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
+ "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=",
+ "dev": true
+ },
+ "colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
+ "dev": true
+ },
+ "esprima": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
+ "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
+ "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=",
+ "dev": true,
+ "requires": {
+ "argparse": "0.1.16",
+ "esprima": "1.0.4"
+ }
+ },
+ "lodash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
+ "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-cli": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-0.1.13.tgz",
+ "integrity": "sha1-6evEBHYx9QEtkidww5N4EzytEPQ=",
+ "dev": true,
+ "requires": {
+ "findup-sync": "0.1.3",
+ "nopt": "1.0.10",
+ "resolve": "0.3.1"
+ }
+ },
+ "grunt-contrib-compress": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-1.4.3.tgz",
+ "integrity": "sha1-Ac7/ucY39S5wgfRjdQmD0KOw+nM=",
+ "dev": true,
+ "requires": {
+ "archiver": "1.3.0",
+ "chalk": "1.1.3",
+ "iltorb": "1.3.10",
+ "lodash": "4.17.4",
+ "pretty-bytes": "4.0.2",
+ "stream-buffers": "2.2.0"
+ }
+ },
+ "grunt-contrib-connect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz",
+ "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=",
+ "dev": true,
+ "requires": {
+ "async": "1.5.2",
+ "connect": "3.6.5",
+ "connect-livereload": "0.5.4",
+ "http2": "3.3.7",
+ "morgan": "1.9.0",
+ "opn": "4.0.2",
+ "portscanner": "1.2.0",
+ "serve-index": "1.9.1",
+ "serve-static": "1.13.1"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-contrib-jshint": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz",
+ "integrity": "sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "hooker": "0.2.3",
+ "jshint": "2.9.5"
+ }
+ },
+ "grunt-contrib-less": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-0.11.4.tgz",
+ "integrity": "sha1-VmdHWsRRfzLKYjuaTYHWz0rtK1E=",
+ "dev": true,
+ "requires": {
+ "async": "0.2.10",
+ "chalk": "0.5.1",
+ "less": "1.7.5",
+ "lodash": "2.4.2",
+ "maxmin": "0.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz",
+ "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz",
+ "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=",
+ "dev": true
+ },
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
+ "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "1.1.0",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "0.1.0",
+ "strip-ansi": "0.3.0",
+ "supports-color": "0.2.0"
+ }
+ },
+ "has-ansi": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
+ "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "0.2.1"
+ }
+ },
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
+ "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "0.2.1"
+ }
+ },
+ "supports-color": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz",
+ "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-contrib-watch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz",
+ "integrity": "sha1-ZP3LolpjX1tNobbOb5DaCutuPxU=",
+ "dev": true,
+ "requires": {
+ "async": "0.2.10",
+ "gaze": "0.5.2",
+ "lodash": "2.4.2",
+ "tiny-lr-fork": "0.0.5"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-legacy-log": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
+ "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=",
+ "dev": true,
+ "requires": {
+ "colors": "0.6.2",
+ "grunt-legacy-log-utils": "0.1.1",
+ "hooker": "0.2.3",
+ "lodash": "2.4.2",
+ "underscore.string": "2.3.3"
+ },
+ "dependencies": {
+ "colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+ "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-legacy-log-utils": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
+ "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=",
+ "dev": true,
+ "requires": {
+ "colors": "0.6.2",
+ "lodash": "2.4.2",
+ "underscore.string": "2.3.3"
+ },
+ "dependencies": {
+ "colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+ "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-legacy-util": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
+ "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=",
+ "dev": true,
+ "requires": {
+ "async": "0.1.22",
+ "exit": "0.1.2",
+ "getobject": "0.1.0",
+ "hooker": "0.2.3",
+ "lodash": "0.9.2",
+ "underscore.string": "2.2.1",
+ "which": "1.0.9"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.1.22",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
+ "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
+ "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-manifest": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/grunt-manifest/-/grunt-manifest-0.4.4.tgz",
+ "integrity": "sha1-Nfqwj+uglkZlQvr+3H7TjhqROmQ=",
+ "dev": true
+ },
+ "grunt-shell": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-0.7.0.tgz",
+ "integrity": "sha1-K3HlTuXlZTfTTsBr+ZfAbOW000s=",
+ "dev": true,
+ "requires": {
+ "chalk": "0.4.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+ "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "1.0.0",
+ "has-color": "0.1.7",
+ "strip-ansi": "0.1.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
+ "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
+ "dev": true
+ }
+ }
+ },
+ "gzip-size": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-0.1.1.tgz",
+ "integrity": "sha1-rjNIO2/IIk6DQilt4Qjvk3V/duA=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "1.6.0",
+ "zlib-browserify": "0.0.3"
+ }
+ },
+ "handle-thing": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
+ "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
+ "dev": true
+ },
+ "har-schema": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+ "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
+ },
+ "har-validator": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+ "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+ "requires": {
+ "ajv": "4.11.8",
+ "har-schema": "1.0.5"
+ }
+ },
+ "has": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
+ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "dev": true,
+ "requires": {
+ "function-bind": "1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-color": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
+ "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "has-own-property-x": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/has-own-property-x/-/has-own-property-x-3.2.0.tgz",
+ "integrity": "sha512-HtRQTYpRFz/YVaQ7jh2mU5iorMAxFcML9FNOLMI1f8VNJ2K0hpOlXoi1a+nmVl6oUcGnhd6zYOFAVe7NUFStyQ==",
+ "requires": {
+ "cached-constructors-x": "1.0.0",
+ "to-object-x": "1.5.0",
+ "to-property-key-x": "2.0.2"
+ }
+ },
+ "has-symbol-support-x": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz",
+ "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA=="
+ },
+ "has-to-string-tag-x": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
+ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
+ "requires": {
+ "has-symbol-support-x": "1.4.1"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+ },
+ "hash-base": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
+ "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
+ "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.0"
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "requires": {
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
+ }
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "1.1.3",
+ "minimalistic-assert": "1.0.0",
+ "minimalistic-crypto-utils": "1.0.1"
+ }
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
+ },
+ "hooker": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
+ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
+ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
+ "dev": true
+ },
+ "hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "obuf": "1.1.1",
+ "readable-stream": "2.3.3",
+ "wbuf": "1.7.2"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "html-comment-regex": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
+ "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=",
+ "dev": true
+ },
+ "html-entities": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
+ "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.0",
+ "domhandler": "2.3.0",
+ "domutils": "1.5.1",
+ "entities": "1.0.0",
+ "readable-stream": "1.1.14"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+ "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+ "dev": true,
+ "requires": {
+ "depd": "1.1.1",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.0.3",
+ "statuses": "1.3.1"
+ }
+ },
+ "http-parser-js": {
+ "version": "0.4.9",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz",
+ "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=",
+ "dev": true
+ },
+ "http-proxy": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
+ "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
+ "dev": true,
+ "requires": {
+ "eventemitter3": "1.2.0",
+ "requires-port": "1.0.0"
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz",
+ "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=",
+ "dev": true,
+ "requires": {
+ "http-proxy": "1.16.2",
+ "is-glob": "3.1.0",
+ "lodash": "4.17.4",
+ "micromatch": "2.3.11"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "requires": {
+ "assert-plus": "0.2.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.1"
+ }
+ },
+ "http2": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz",
+ "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==",
+ "dev": true
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
+ "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=",
+ "dev": true
+ },
+ "icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
+ "dev": true
+ },
+ "icss-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
+ "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.14"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
+ "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "ieee754": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
+ "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
+ "dev": true
+ },
+ "iltorb": {
+ "version": "1.3.10",
+ "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-1.3.10.tgz",
+ "integrity": "sha512-nyB4+ru1u8CQqQ6w7YjasboKN3NQTN8GH/V/eEssNRKhW6UbdxdWhB9fJ5EEdjJfezKY0qPrcwLyIcgjL8hHxA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "0.2.0",
+ "nan": "2.8.0",
+ "node-gyp": "3.6.2",
+ "prebuild-install": "2.4.1"
+ }
+ },
+ "immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
+ },
+ "import-local": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz",
+ "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "2.0.0",
+ "resolve-cwd": "2.0.0"
+ }
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+ "dev": true
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "infinity-x": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/infinity-x/-/infinity-x-1.0.0.tgz",
+ "integrity": "sha512-wjy2TupBtZ+aAniKt+xs/PO0xOkuaL6wBysUKbgD7aL1PMW/qY5xXDG59zXZ7dU+gk3zwXOu4yIEWPCEFBTgHQ=="
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ },
+ "internal-ip": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz",
+ "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=",
+ "dev": true,
+ "requires": {
+ "meow": "3.7.0"
+ }
+ },
+ "interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "dev": true
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "dev": true
+ },
+ "ipaddr.js": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz",
+ "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=",
+ "dev": true
+ },
+ "is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+ "dev": true
+ },
+ "is-array-buffer-x": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/is-array-buffer-x/-/is-array-buffer-x-1.7.0.tgz",
+ "integrity": "sha512-ufSZRMY2WZX5xyNvk0NOZAG7cgi35B/sGQDGqv8w0X7MoQ2GC9vedanJhuYTPaC4PUCqLQsda1w7NF+dPZmAJw==",
+ "requires": {
+ "attempt-x": "1.1.1",
+ "has-to-string-tag-x": "1.4.1",
+ "is-object-like-x": "1.6.0",
+ "object-get-own-property-descriptor-x": "3.2.0",
+ "to-string-tag-x": "1.4.2"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "1.11.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "1.1.1"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
+ "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
+ "dev": true
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true,
+ "requires": {
+ "is-primitive": "2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-falsey-x": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-falsey-x/-/is-falsey-x-1.0.1.tgz",
+ "integrity": "sha512-XWNZC4A+3FX1ECoMjspuEFgSdio82IWjqY/suE0gZ10QA7nzHd/KraRq7Tc5VEHtFRgTRyTdY6W+ykPrDnyoAQ==",
+ "requires": {
+ "to-boolean-x": "1.0.1"
+ }
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-finite-x": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite-x/-/is-finite-x-3.0.2.tgz",
+ "integrity": "sha512-HyFrxJZsgmP5RtR1PVlVvHSP4VslZOqr4uoq4x3rDrSOFaYp4R9tfmiWtAzQxPzixXhac3cYEno3NuVn0OHk2Q==",
+ "requires": {
+ "infinity-x": "1.0.0",
+ "is-nan-x": "1.0.1"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-function-x": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/is-function-x/-/is-function-x-3.3.0.tgz",
+ "integrity": "sha512-SreSSU1dlgYaXR5c0mm4qJHKYHIiGiEY+7Cd8/aRLLoMP/VvofD2XcWgBnP833ajpU5XzXbUSpfysnfKZLJFlg==",
+ "requires": {
+ "attempt-x": "1.1.1",
+ "has-to-string-tag-x": "1.4.1",
+ "is-falsey-x": "1.0.1",
+ "is-primitive": "2.0.0",
+ "normalize-space-x": "3.0.0",
+ "replace-comments-x": "2.0.0",
+ "to-boolean-x": "1.0.1",
+ "to-string-tag-x": "1.4.2"
+ }
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "is-index-x": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-index-x/-/is-index-x-1.1.0.tgz",
+ "integrity": "sha512-qULKLMepQLGC8rSVdi8uF2vI4LiDrU9XSDg1D+Aa657GIB7GV1jHpga7uXgQvkt/cpQ5mVBHUFTpSehYSqT6+A==",
+ "requires": {
+ "math-clamp-x": "1.2.0",
+ "max-safe-integer": "1.0.1",
+ "to-integer-x": "3.0.0",
+ "to-number-x": "2.0.0",
+ "to-string-symbols-supported-x": "1.0.0"
+ }
+ },
+ "is-nan-x": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-nan-x/-/is-nan-x-1.0.1.tgz",
+ "integrity": "sha512-VfNJgfuT8USqKCYQss8g7sFvCzDnL+OOVMQoXhVoulZAyp0ZTj3oyZaaPrn2dxepAkKSQI2BiKHbBabX1DqVtw=="
+ },
+ "is-nil-x": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/is-nil-x/-/is-nil-x-1.4.1.tgz",
+ "integrity": "sha512-cfTKWI5iSR04SSCzzugTH5tS2rYG7kwI8yl/AqWkyuxZ7k55cbA47Y7Lezdg1N9aaELd+UxLg628bdQeNQ6BUw==",
+ "requires": {
+ "lodash.isnull": "3.0.0",
+ "validate.io-undefined": "1.0.3"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-object-like-x": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/is-object-like-x/-/is-object-like-x-1.6.0.tgz",
+ "integrity": "sha512-mc3dBMv1jEOdk0f1i2RkJFsZDux0MuHqGwHOoRo770ShUOf4VE6tWThAW8dAZARr9a5RN+iNX1yzMDA5ad1clQ==",
+ "requires": {
+ "is-function-x": "3.3.0",
+ "is-primitive": "2.0.0"
+ }
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
+ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "1.0.1"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "1.0.2"
+ }
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "1.0.1"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-string": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz",
+ "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ="
+ },
+ "is-svg": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
+ "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
+ "dev": true,
+ "requires": {
+ "html-comment-regex": "1.1.1"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
+ "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI="
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "jquery": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz",
+ "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c="
+ },
+ "js-base64": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz",
+ "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
+ "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.9",
+ "esprima": "2.7.3"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "optional": true
+ },
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ },
+ "jshint": {
+ "version": "2.9.5",
+ "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz",
+ "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=",
+ "dev": true,
+ "requires": {
+ "cli": "1.0.1",
+ "console-browserify": "1.1.0",
+ "exit": "0.1.2",
+ "htmlparser2": "3.8.3",
+ "lodash": "3.7.0",
+ "minimatch": "3.0.4",
+ "shelljs": "0.3.0",
+ "strip-json-comments": "1.0.4"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz",
+ "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "strip-json-comments": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
+ "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
+ "dev": true
+ }
+ }
+ },
+ "json-loader": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
+ "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "json3": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
+ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "killable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz",
+ "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true
+ },
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "dev": true,
+ "requires": {
+ "invert-kv": "1.0.0"
+ }
+ },
+ "less": {
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/less/-/less-1.7.5.tgz",
+ "integrity": "sha1-TyIM9yiKJ+rKc5325ICKLUwNV1Y=",
+ "dev": true,
+ "requires": {
+ "clean-css": "2.2.23",
+ "graceful-fs": "3.0.11",
+ "mime": "1.2.11",
+ "mkdirp": "0.5.1",
+ "request": "2.40.0",
+ "source-map": "0.1.43"
+ },
+ "dependencies": {
+ "asn1": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz",
+ "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=",
+ "dev": true,
+ "optional": true
+ },
+ "assert-plus": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz",
+ "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=",
+ "dev": true,
+ "optional": true
+ },
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "dev": true,
+ "optional": true
+ },
+ "aws-sign2": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz",
+ "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=",
+ "dev": true,
+ "optional": true
+ },
+ "boom": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz",
+ "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=",
+ "dev": true,
+ "requires": {
+ "hoek": "0.9.1"
+ }
+ },
+ "combined-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
+ "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delayed-stream": "0.0.5"
+ }
+ },
+ "cryptiles": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz",
+ "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "boom": "0.4.2"
+ }
+ },
+ "delayed-stream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz",
+ "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=",
+ "dev": true,
+ "optional": true
+ },
+ "forever-agent": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz",
+ "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=",
+ "dev": true,
+ "optional": true
+ },
+ "form-data": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz",
+ "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "async": "0.9.2",
+ "combined-stream": "0.0.7",
+ "mime": "1.2.11"
+ }
+ },
+ "graceful-fs": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
+ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "natives": "1.1.1"
+ }
+ },
+ "hawk": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz",
+ "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "boom": "0.4.2",
+ "cryptiles": "0.2.2",
+ "hoek": "0.9.1",
+ "sntp": "0.2.4"
+ }
+ },
+ "hoek": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz",
+ "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=",
+ "dev": true
+ },
+ "http-signature": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz",
+ "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "asn1": "0.1.11",
+ "assert-plus": "0.1.5",
+ "ctype": "0.5.3"
+ }
+ },
+ "mime": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
+ "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=",
+ "dev": true,
+ "optional": true
+ },
+ "mime-types": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
+ "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=",
+ "dev": true,
+ "optional": true
+ },
+ "node-uuid": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
+ "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=",
+ "dev": true,
+ "optional": true
+ },
+ "oauth-sign": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz",
+ "integrity": "sha1-y1QPk7srIqfVlBaRoojWDo6pOG4=",
+ "dev": true,
+ "optional": true
+ },
+ "qs": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz",
+ "integrity": "sha1-UKk+K1r2aRwxvOpdrnjubqGQN2g=",
+ "dev": true,
+ "optional": true
+ },
+ "request": {
+ "version": "2.40.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.40.0.tgz",
+ "integrity": "sha1-TdZw9pbx5uhC5mtLXoOTAaub62c=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aws-sign2": "0.5.0",
+ "forever-agent": "0.5.2",
+ "form-data": "0.1.4",
+ "hawk": "1.1.1",
+ "http-signature": "0.10.1",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "1.0.2",
+ "node-uuid": "1.4.8",
+ "oauth-sign": "0.3.0",
+ "qs": "1.0.2",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.4.3"
+ }
+ },
+ "sntp": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz",
+ "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "hoek": "0.9.1"
+ }
+ },
+ "source-map": {
+ "version": "0.1.43",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "level": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/level/-/level-2.1.1.tgz",
+ "integrity": "sha512-jhsItEs/L5bf5ctKsvIPcMzeh4nwXxnL3Tsxm4E9My07jcFfqEYwKP57Y9AZu7tmtECdyK6bvCqoClwuOBuY9w==",
+ "requires": {
+ "level-packager": "2.1.0",
+ "leveldown": "2.1.1"
+ }
+ },
+ "level-codec": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz",
+ "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ=="
+ },
+ "level-errors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.1.2.tgz",
+ "integrity": "sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w==",
+ "requires": {
+ "errno": "0.1.6"
+ }
+ },
+ "level-iterator-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-2.0.0.tgz",
+ "integrity": "sha512-TWOYw8HR5mhj6xwoVLo0yu26RPL6v28KgvhK1kY1CJf9LyL+rJXjx99zhORTYhN9ysOBIH+iaxAiqRteA+C1/g==",
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "level-packager": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-2.1.0.tgz",
+ "integrity": "sha512-I97zvGOZ6fJ9OFfYv+QmgBpDWbC+UaP5ERJ3oraTyk1v+ABAL4tazris5ym5qL2iLe+qNjXNM/iP8LQcoZMEWw==",
+ "requires": {
+ "encoding-down": "3.0.1",
+ "levelup": "2.0.1"
+ }
+ },
+ "level-write-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/level-write-stream/-/level-write-stream-1.0.0.tgz",
+ "integrity": "sha1-P3+7Z5pVE3wP6zA97nZuEu4Twdw=",
+ "requires": {
+ "end-stream": "0.1.0"
+ }
+ },
+ "leveldown": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-2.1.1.tgz",
+ "integrity": "sha512-JNMCTSchq1YtQLMGePmT07UE7hIIYR4GHpZI7+nUXbM9XgNtRAwcBGhnyJyITwpTILTkUcNPBKZ9lZmTUj2E3g==",
+ "requires": {
+ "abstract-leveldown": "3.0.0",
+ "bindings": "1.3.0",
+ "fast-future": "1.0.2",
+ "nan": "2.8.0",
+ "prebuild-install": "2.4.1"
+ }
+ },
+ "levelup": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/levelup/-/levelup-2.0.1.tgz",
+ "integrity": "sha1-PckbPmMtN8nlRiOchkEYsATJ+GA=",
+ "requires": {
+ "deferred-leveldown": "2.0.3",
+ "level-errors": "1.1.2",
+ "level-iterator-stream": "2.0.0",
+ "xtend": "4.0.1"
+ }
+ },
+ "lie": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
+ "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
+ "requires": {
+ "immediate": "3.0.6"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "strip-bom": "3.0.0"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ }
+ }
+ },
+ "loader-runner": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz",
+ "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
+ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
+ "dev": true,
+ "requires": {
+ "big.js": "3.2.0",
+ "emojis-list": "2.1.0",
+ "json5": "0.5.1"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "2.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
+ "dev": true
+ },
+ "lodash.isnull": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash.isnull/-/lodash.isnull-3.0.0.tgz",
+ "integrity": "sha1-+vvlnqHcon7teGU0A53YTC4HxW4="
+ },
+ "lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+ "dev": true
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+ "dev": true
+ },
+ "loglevel": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz",
+ "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=",
+ "dev": true
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "0.4.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
+ },
+ "ltgt": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.0.tgz",
+ "integrity": "sha1-tlul/LNJopkkyOMz98alVi8uSEI="
+ },
+ "macaddress": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz",
+ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "marked": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.9.tgz",
+ "integrity": "sha512-nW5u0dxpXxHfkHzzrveY45gCbi+R4PaO4WRZYqZNl+vB0hVGeqlFn0aOg1c8AKL63TrNFn9Bm2UP4AdiZ9TPLw=="
+ },
+ "math-clamp-x": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/math-clamp-x/-/math-clamp-x-1.2.0.tgz",
+ "integrity": "sha512-tqpjpBcIf9UulApz3EjWXqTZpMlr2vLN9PryC9ghoyCuRmqZaf3JJhPddzgQpJnKLi2QhoFnvKBFtJekAIBSYg==",
+ "requires": {
+ "to-number-x": "2.0.0"
+ }
+ },
+ "math-expression-evaluator": {
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
+ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
+ "dev": true
+ },
+ "math-sign-x": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/math-sign-x/-/math-sign-x-3.0.0.tgz",
+ "integrity": "sha512-OzPas41Pn4d16KHnaXmGxxY3/l3zK4OIXtmIwdhgZsxz4FDDcNnbrABYPg2vGfxIkaT9ezGnzDviRH7RfF44jQ==",
+ "requires": {
+ "is-nan-x": "1.0.1",
+ "to-number-x": "2.0.0"
+ }
+ },
+ "max-safe-integer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/max-safe-integer/-/max-safe-integer-1.0.1.tgz",
+ "integrity": "sha1-84BgvixWPYwC5tSK85Ei/YO29BA="
+ },
+ "maxmin": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-0.1.0.tgz",
+ "integrity": "sha1-ldgcUonjqdMPf8fcVZwCTlAwydA=",
+ "dev": true,
+ "requires": {
+ "chalk": "0.4.0",
+ "gzip-size": "0.1.1",
+ "pretty-bytes": "0.1.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+ "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "1.0.0",
+ "has-color": "0.1.7",
+ "strip-ansi": "0.1.1"
+ }
+ },
+ "pretty-bytes": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-0.1.2.tgz",
+ "integrity": "sha1-zZApTVihyk6KXQ+5yCJZmIgazwA=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
+ "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
+ "dev": true
+ }
+ }
+ },
+ "md5.js": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
+ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
+ "dev": true,
+ "requires": {
+ "hash-base": "3.0.4",
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.1"
+ }
+ }
+ }
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "dev": true
+ },
+ "mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "1.1.0"
+ }
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "0.1.6",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.0",
+ "normalize-package-data": "2.4.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ }
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+ "dev": true
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.1",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.2.2",
+ "normalize-path": "2.1.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.4"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0"
+ }
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
+ "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
+ },
+ "mime-types": {
+ "version": "2.1.17",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
+ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
+ "requires": {
+ "mime-db": "1.30.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
+ "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
+ "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "morgan": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz",
+ "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=",
+ "dev": true,
+ "requires": {
+ "basic-auth": "2.0.0",
+ "debug": "2.6.9",
+ "depd": "1.1.1",
+ "on-finished": "2.3.0",
+ "on-headers": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "multicast-dns": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz",
+ "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==",
+ "dev": true,
+ "requires": {
+ "dns-packet": "1.2.2",
+ "thunky": "0.1.0"
+ }
+ },
+ "multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz",
+ "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo="
+ },
+ "nan-x": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/nan-x/-/nan-x-1.0.0.tgz",
+ "integrity": "sha512-yw4Fhe2/UTzanQ4f0yHWkRnfTuHZFAi4GZDjXS4G+qv5BqXTqPJBbSxpa7MyyW9v4Y4ZySZQik1vcbNkhdnIOg=="
+ },
+ "natives": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz",
+ "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==",
+ "dev": true,
+ "optional": true
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+ "dev": true
+ },
+ "node-abi": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.2.tgz",
+ "integrity": "sha512-hmUtb8m75RSi7N+zZLYqe75XDvZB+6LyTBPkj2DConvNgQet2e3BIqEwe1LLvqMrfyjabuT5ZOrTioLCH1HTdA==",
+ "requires": {
+ "semver": "5.4.1"
+ }
+ },
+ "node-forge": {
+ "version": "0.6.33",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz",
+ "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=",
+ "dev": true
+ },
+ "node-gyp": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
+ "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fstream": "1.0.11",
+ "glob": "7.1.2",
+ "graceful-fs": "4.1.11",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "nopt": "3.0.6",
+ "npmlog": "4.1.2",
+ "osenv": "0.1.4",
+ "request": "2.80.0",
+ "rimraf": "2.2.8",
+ "semver": "5.3.0",
+ "tar": "2.2.1",
+ "which": "1.0.9"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1.1.1"
+ }
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "node-libs-browser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
+ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
+ "dev": true,
+ "requires": {
+ "assert": "1.4.1",
+ "browserify-zlib": "0.2.0",
+ "buffer": "4.9.1",
+ "console-browserify": "1.1.0",
+ "constants-browserify": "1.0.0",
+ "crypto-browserify": "3.12.0",
+ "domain-browser": "1.1.7",
+ "events": "1.1.1",
+ "https-browserify": "1.0.0",
+ "os-browserify": "0.3.0",
+ "path-browserify": "0.0.0",
+ "process": "0.11.10",
+ "punycode": "1.4.1",
+ "querystring-es3": "0.2.1",
+ "readable-stream": "2.3.3",
+ "stream-browserify": "2.0.1",
+ "stream-http": "2.7.2",
+ "string_decoder": "1.0.3",
+ "timers-browserify": "2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "0.11.0",
+ "util": "0.10.3",
+ "vm-browserify": "0.0.4"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "noop-logger": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
+ "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI="
+ },
+ "nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1.1.1"
+ }
+ },
+ "noptify": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz",
+ "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=",
+ "dev": true,
+ "requires": {
+ "nopt": "2.0.0"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz",
+ "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1.1.1"
+ }
+ }
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "2.5.0",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.4.1",
+ "validate-npm-package-license": "3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+ "dev": true
+ },
+ "normalize-space-x": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-space-x/-/normalize-space-x-3.0.0.tgz",
+ "integrity": "sha512-tbCJerqZCCHPst4rRKgsTanLf45fjOyeAU5zE3mhDxJtFJKt66q39g2XArWhXelgTFVib8mNBUm6Wrd0LxYcfQ==",
+ "requires": {
+ "cached-constructors-x": "1.0.0",
+ "trim-x": "3.0.0",
+ "white-space-x": "3.0.0"
+ }
+ },
+ "normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "prepend-http": "1.0.4",
+ "query-string": "4.3.4",
+ "sort-keys": "1.1.2"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "2.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "1.1.4",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
+ }
+ },
+ "num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-get-own-property-descriptor-x": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/object-get-own-property-descriptor-x/-/object-get-own-property-descriptor-x-3.2.0.tgz",
+ "integrity": "sha512-Z/0fIrptD9YuzN+SNK/1kxAEaBcPQM4gSrtOSMSi9eplnL/AbyQcAyAlreAoAzmBon+DQ1Z+AdhxyQSvav5Fyg==",
+ "requires": {
+ "attempt-x": "1.1.1",
+ "has-own-property-x": "3.2.0",
+ "has-symbol-support-x": "1.4.1",
+ "is-falsey-x": "1.0.1",
+ "is-index-x": "1.1.0",
+ "is-primitive": "2.0.0",
+ "is-string": "1.0.4",
+ "property-is-enumerable-x": "1.1.0",
+ "to-object-x": "1.5.0",
+ "to-property-key-x": "2.0.2"
+ }
+ },
+ "object-keys": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
+ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
+ "dev": true
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
+ "requires": {
+ "for-own": "0.1.5",
+ "is-extendable": "0.1.1"
+ }
+ },
+ "obuf": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz",
+ "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "opn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
+ "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "original": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz",
+ "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=",
+ "dev": true,
+ "requires": {
+ "url-parse": "1.0.5"
+ },
+ "dependencies": {
+ "url-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz",
+ "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=",
+ "dev": true,
+ "requires": {
+ "querystringify": "0.0.4",
+ "requires-port": "1.0.0"
+ }
+ }
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "os-locale": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ "dev": true,
+ "requires": {
+ "execa": "0.7.0",
+ "lcid": "1.0.0",
+ "mem": "1.1.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
+ "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
+ "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
+ "dev": true
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "1.1.0"
+ }
+ },
+ "p-map": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+ "dev": true
+ },
+ "pako": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
+ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
+ "dev": true
+ },
+ "parse-asn1": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
+ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
+ "dev": true,
+ "requires": {
+ "asn1.js": "4.9.2",
+ "browserify-aes": "1.1.1",
+ "create-hash": "1.1.3",
+ "evp_bytestokey": "1.0.3",
+ "pbkdf2": "3.0.14"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
+ "requires": {
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.3",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "parse-int-x": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/parse-int-x/-/parse-int-x-2.0.0.tgz",
+ "integrity": "sha512-NIMm52gmd1+0qxJK8lV3OZ4zzWpRH1xcz9xCHXl+DNzddwUdS4NEtd7BmTeK7iCIXoaK5e6BoDMHgieH2eNIhg==",
+ "requires": {
+ "cached-constructors-x": "1.0.0",
+ "nan-x": "1.0.0",
+ "to-string-x": "1.4.2",
+ "trim-left-x": "3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "2.3.0"
+ }
+ },
+ "pbkdf2": {
+ "version": "3.0.14",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
+ "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "1.1.3",
+ "create-hmac": "1.1.6",
+ "ripemd160": "2.0.1",
+ "safe-buffer": "5.1.1",
+ "sha.js": "2.4.9"
+ }
+ },
+ "performance-now": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+ "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "2.1.0"
+ }
+ },
+ "portfinder": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
+ "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=",
+ "dev": true,
+ "requires": {
+ "async": "1.5.2",
+ "debug": "2.6.9",
+ "mkdirp": "0.5.1"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "portscanner": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz",
+ "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=",
+ "dev": true,
+ "requires": {
+ "async": "1.5.2"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ }
+ }
+ },
+ "postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "js-base64": "2.4.0",
+ "source-map": "0.5.7",
+ "supports-color": "3.2.3"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "1.0.0"
+ }
+ }
+ }
+ },
+ "postcss-calc": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz",
+ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-message-helpers": "2.0.0",
+ "reduce-css-calc": "1.3.0"
+ }
+ },
+ "postcss-colormin": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz",
+ "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
+ "dev": true,
+ "requires": {
+ "colormin": "1.1.2",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-convert-values": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz",
+ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-discard-comments": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz",
+ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-discard-duplicates": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz",
+ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-discard-empty": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz",
+ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-discard-overridden": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz",
+ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-discard-unused": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz",
+ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "uniqs": "2.0.0"
+ }
+ },
+ "postcss-filter-plugins": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz",
+ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "uniqid": "4.1.1"
+ }
+ },
+ "postcss-merge-idents": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
+ "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
+ "dev": true,
+ "requires": {
+ "has": "1.0.1",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-merge-longhand": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz",
+ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-merge-rules": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz",
+ "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "caniuse-api": "1.6.1",
+ "postcss": "5.2.18",
+ "postcss-selector-parser": "2.2.3",
+ "vendors": "1.0.1"
+ }
+ },
+ "postcss-message-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
+ "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
+ "dev": true
+ },
+ "postcss-minify-font-values": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz",
+ "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-minify-gradients": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz",
+ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-minify-params": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz",
+ "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "1.0.2",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0",
+ "uniqs": "2.0.0"
+ }
+ },
+ "postcss-minify-selectors": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz",
+ "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "1.0.2",
+ "has": "1.0.1",
+ "postcss": "5.2.18",
+ "postcss-selector-parser": "2.2.3"
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz",
+ "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.14"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
+ "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-modules-local-by-default": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
+ "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
+ "dev": true,
+ "requires": {
+ "css-selector-tokenizer": "0.7.0",
+ "postcss": "6.0.14"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
+ "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
+ "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
+ "dev": true,
+ "requires": {
+ "css-selector-tokenizer": "0.7.0",
+ "postcss": "6.0.14"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
+ "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-modules-values": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
+ "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
+ "dev": true,
+ "requires": {
+ "icss-replace-symbols": "1.1.0",
+ "postcss": "6.0.14"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
+ "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-charset": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz",
+ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-normalize-url": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz",
+ "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
+ "dev": true,
+ "requires": {
+ "is-absolute-url": "2.1.0",
+ "normalize-url": "1.9.1",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-ordered-values": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz",
+ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-reduce-idents": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz",
+ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-reduce-initial": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz",
+ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-reduce-transforms": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz",
+ "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
+ "dev": true,
+ "requires": {
+ "has": "1.0.1",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
+ "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
+ "dev": true,
+ "requires": {
+ "flatten": "1.0.2",
+ "indexes-of": "1.0.1",
+ "uniq": "1.0.1"
+ }
+ },
+ "postcss-svgo": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz",
+ "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
+ "dev": true,
+ "requires": {
+ "is-svg": "2.1.0",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0",
+ "svgo": "0.7.2"
+ }
+ },
+ "postcss-unique-selectors": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz",
+ "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "1.0.2",
+ "postcss": "5.2.18",
+ "uniqs": "2.0.0"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
+ "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
+ "dev": true
+ },
+ "postcss-zindex": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz",
+ "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
+ "dev": true,
+ "requires": {
+ "has": "1.0.1",
+ "postcss": "5.2.18",
+ "uniqs": "2.0.0"
+ }
+ },
+ "pouchdb": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/pouchdb/-/pouchdb-6.4.1.tgz",
+ "integrity": "sha512-7YrhsBXbQh/iPA8O5Nzixi9QigaQJjqbbCFr+D7Kc258oeXNW9a0t/tOME1Lh84TJiFRuN9982FGVnrBrUhLiA==",
+ "requires": {
+ "argsarray": "0.0.1",
+ "buffer-from": "0.1.1",
+ "clone-buffer": "1.0.0",
+ "debug": "3.0.1",
+ "double-ended-queue": "2.1.0-0",
+ "immediate": "3.0.6",
+ "inherits": "2.0.3",
+ "level": "2.1.1",
+ "level-codec": "7.0.1",
+ "level-write-stream": "1.0.0",
+ "leveldown": "2.1.1",
+ "levelup": "2.0.1",
+ "lie": "3.1.1",
+ "ltgt": "2.2.0",
+ "readable-stream": "1.0.33",
+ "request": "2.80.0",
+ "spark-md5": "3.0.0",
+ "through2": "2.0.3",
+ "uuid": "3.1.0",
+ "vuvuzela": "1.0.3"
+ }
+ },
+ "prebuild-install": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.4.1.tgz",
+ "integrity": "sha512-99TyEFYTTkBWANT+mwSptmLb9ZCLQ6qKIUE36fXSIOtShB0JNprL2hzBD8F1yIuT9btjFrFEwbRHXhqDi1HmRA==",
+ "requires": {
+ "expand-template": "1.1.0",
+ "github-from-package": "0.0.0",
+ "minimist": "1.2.0",
+ "mkdirp": "0.5.1",
+ "node-abi": "2.1.2",
+ "noop-logger": "0.1.1",
+ "npmlog": "4.1.2",
+ "os-homedir": "1.0.2",
+ "pump": "1.0.3",
+ "rc": "1.2.2",
+ "simple-get": "1.4.3",
+ "tar-fs": "1.16.0",
+ "tunnel-agent": "0.6.0",
+ "xtend": "4.0.1"
+ }
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "pretty-bytes": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
+ "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
+ },
+ "property-is-enumerable-x": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/property-is-enumerable-x/-/property-is-enumerable-x-1.1.0.tgz",
+ "integrity": "sha512-22cKy3w3OpRswU6to9iKWDDlg+F9vF2REcwGlGW23jyLjHb1U/jJEWA44sWupOnkhGfDgotU6Lw+N2oyhNi+5A==",
+ "requires": {
+ "to-object-x": "1.5.0",
+ "to-property-key-x": "2.0.2"
+ }
+ },
+ "proxy-addr": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz",
+ "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=",
+ "dev": true,
+ "requires": {
+ "forwarded": "0.1.2",
+ "ipaddr.js": "1.5.2"
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
+ "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.1.3",
+ "parse-asn1": "5.1.0",
+ "randombytes": "2.0.5"
+ }
+ },
+ "pump": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
+ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
+ "requires": {
+ "end-of-stream": "1.4.0",
+ "once": "1.4.0"
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
+ "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw="
+ },
+ "query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "strict-uri-encode": "1.1.0"
+ }
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "querystringify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz",
+ "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",
+ "dev": true
+ },
+ "randomatic": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "randombytes": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz",
+ "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz",
+ "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==",
+ "dev": true,
+ "requires": {
+ "randombytes": "2.0.5",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
+ "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "http-errors": "1.6.2",
+ "iconv-lite": "0.4.19",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+ "dev": true
+ }
+ }
+ },
+ "raw-loader": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz",
+ "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=",
+ "dev": true
+ },
+ "rc": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz",
+ "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=",
+ "requires": {
+ "deep-extend": "0.4.2",
+ "ini": "1.3.5",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ }
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "2.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "2.1.0",
+ "read-pkg": "2.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "1.0.33",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
+ "integrity": "sha1-OjYN1mwbHX/UcFOJhg7aHQ9hEmw=",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "readdirp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "minimatch": "3.0.4",
+ "readable-stream": "2.3.3",
+ "set-immediate-shim": "1.0.1"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
+ }
+ },
+ "reduce-css-calc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
+ "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "0.4.2",
+ "math-expression-evaluator": "1.2.17",
+ "reduce-function-call": "1.0.2"
+ }
+ },
+ "reduce-function-call": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz",
+ "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "0.4.2"
+ }
+ },
+ "regenerate": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz",
+ "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==",
+ "dev": true
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "dev": true,
+ "requires": {
+ "is-equal-shallow": "0.1.3"
+ }
+ },
+ "regexpu-core": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
+ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
+ "dev": true,
+ "requires": {
+ "regenerate": "1.3.3",
+ "regjsgen": "0.2.0",
+ "regjsparser": "0.1.5"
+ }
+ },
+ "regjsgen": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
+ "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
+ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+ "dev": true,
+ "requires": {
+ "jsesc": "0.5.0"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "1.0.2"
+ }
+ },
+ "replace-comments-x": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/replace-comments-x/-/replace-comments-x-2.0.0.tgz",
+ "integrity": "sha512-+vMP4jqU+8HboLWms6YMNEiaZG5hh1oR6ENCnGYDF/UQ7aYiJUK/8tcl3+KZAHRCKKa3gqzrfiarlUBHQSgRlg==",
+ "requires": {
+ "require-coercible-to-string-x": "1.0.0",
+ "to-string-x": "1.4.2"
+ }
+ },
+ "request": {
+ "version": "2.80.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.80.0.tgz",
+ "integrity": "sha1-jMFi1215OBze/dNQXXa4C2BYm9A=",
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.4",
+ "har-validator": "4.2.1",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "performance-now": "0.2.0",
+ "qs": "6.3.2",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.4.3",
+ "uuid": "3.1.0"
+ },
+ "dependencies": {
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us="
+ }
+ }
+ },
+ "require-coercible-to-string-x": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/require-coercible-to-string-x/-/require-coercible-to-string-x-1.0.0.tgz",
+ "integrity": "sha512-Rpfd4sMdflPAKecdKhfAtQHlZzzle4UMUgxJ01hXtTcNWMV8w9GeZnKhEyrT73kgrflBOP1zg41amUPZGcNspA==",
+ "requires": {
+ "require-object-coercible-x": "1.4.1",
+ "to-string-x": "1.4.2"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "require-object-coercible-x": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/require-object-coercible-x/-/require-object-coercible-x-1.4.1.tgz",
+ "integrity": "sha512-0YHa2afepsLfQvwQ1P2XvDZnGOUia5sC07ZijIRU2dnsRxnuilXWF6B2CFaKGDA9eZl39lJHrXCDsnfgroRd6Q==",
+ "requires": {
+ "is-nil-x": "1.4.1"
+ }
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.3.1.tgz",
+ "integrity": "sha1-NMY0R8ZkxwWY0cmxJvxDsqJDEKQ=",
+ "dev": true
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "3.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "dev": true,
+ "requires": {
+ "align-text": "0.1.4"
+ }
+ },
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+ "dev": true
+ },
+ "ripemd160": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
+ "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=",
+ "dev": true,
+ "requires": {
+ "hash-base": "2.0.2",
+ "inherits": "2.0.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
+ "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
+ "dev": true,
+ "requires": {
+ "ajv": "5.5.2"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ }
+ }
+ },
+ "script-loader": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.2.tgz",
+ "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==",
+ "dev": true,
+ "requires": {
+ "raw-loader": "0.5.1"
+ }
+ },
+ "select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+ "dev": true
+ },
+ "selfsigned": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz",
+ "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=",
+ "dev": true,
+ "requires": {
+ "node-forge": "0.6.33"
+ }
+ },
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
+ },
+ "send": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
+ "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "1.1.1",
+ "destroy": "1.0.4",
+ "encodeurl": "1.0.1",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "2.3.0",
+ "range-parser": "1.2.0",
+ "statuses": "1.3.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+ "dev": true,
+ "requires": {
+ "accepts": "1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "1.0.3",
+ "http-errors": "1.6.2",
+ "mime-types": "2.1.17",
+ "parseurl": "1.3.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz",
+ "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==",
+ "dev": true,
+ "requires": {
+ "encodeurl": "1.0.1",
+ "escape-html": "1.0.3",
+ "parseurl": "1.3.2",
+ "send": "0.16.1"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
+ "set-immediate-shim": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+ "dev": true
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz",
+ "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "shelljs": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
+ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ },
+ "simple-get": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz",
+ "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=",
+ "requires": {
+ "once": "1.4.0",
+ "unzip-response": "1.0.2",
+ "xtend": "4.0.1"
+ }
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "sockjs": {
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz",
+ "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=",
+ "dev": true,
+ "requires": {
+ "faye-websocket": "0.10.0",
+ "uuid": "2.0.3"
+ },
+ "dependencies": {
+ "faye-websocket": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+ "dev": true,
+ "requires": {
+ "websocket-driver": "0.7.0"
+ }
+ },
+ "uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "dev": true
+ }
+ }
+ },
+ "sockjs-client": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz",
+ "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "eventsource": "0.1.6",
+ "faye-websocket": "0.11.1",
+ "inherits": "2.0.3",
+ "json3": "3.3.2",
+ "url-parse": "1.2.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "faye-websocket": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
+ "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
+ "dev": true,
+ "requires": {
+ "websocket-driver": "0.7.0"
+ }
+ }
+ }
+ },
+ "sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "1.1.0"
+ }
+ },
+ "source-list-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
+ "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "spark-md5": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.0.tgz",
+ "integrity": "sha1-NyIifFTi+vJLHcbZM8wUTm9xv+8="
+ },
+ "spdx-correct": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
+ "dev": true,
+ "requires": {
+ "spdx-license-ids": "1.2.2"
+ }
+ },
+ "spdx-expression-parse": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
+ "dev": true
+ },
+ "spdx-license-ids": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
+ "dev": true
+ },
+ "spdy": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
+ "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "handle-thing": "1.2.5",
+ "http-deceiver": "1.2.7",
+ "safe-buffer": "5.1.1",
+ "select-hose": "2.0.0",
+ "spdy-transport": "2.0.20"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "spdy-transport": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz",
+ "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "detect-node": "2.0.3",
+ "hpack.js": "2.1.6",
+ "obuf": "1.1.1",
+ "readable-stream": "2.3.3",
+ "safe-buffer": "5.1.1",
+ "wbuf": "1.7.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
+ "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.1",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "tweetnacl": "0.14.5"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "stream-buffers": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+ "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=",
+ "dev": true
+ },
+ "stream-http": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
+ "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "3.0.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "to-arraybuffer": "1.0.1",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "4.0.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
+ },
+ "style-loader": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.1.tgz",
+ "integrity": "sha512-IRE+ijgojrygQi3rsqT0U4dd+UcPCqcVvauZpCnQrGAlEe+FUIyrK93bUDScamesjP08JlQNsFJU+KmPedP5Og==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "1.1.0",
+ "schema-utils": "0.3.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "svgo": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
+ "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
+ "dev": true,
+ "requires": {
+ "coa": "1.0.4",
+ "colors": "1.1.2",
+ "csso": "2.3.2",
+ "js-yaml": "3.7.0",
+ "mkdirp": "0.5.1",
+ "sax": "1.2.4",
+ "whet.extend": "0.9.9"
+ }
+ },
+ "tapable": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz",
+ "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=",
+ "dev": true
+ },
+ "tape": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/tape/-/tape-0.2.2.tgz",
+ "integrity": "sha1-ZMz6S37PSgBgAH5hcW1CR4FnFjc=",
+ "dev": true,
+ "requires": {
+ "deep-equal": "0.0.0",
+ "defined": "0.0.0",
+ "jsonify": "0.0.0"
+ },
+ "dependencies": {
+ "defined": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
+ "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=",
+ "dev": true
+ }
+ }
+ },
+ "tar": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "block-stream": "0.0.9",
+ "fstream": "1.0.11",
+ "inherits": "2.0.3"
+ }
+ },
+ "tar-fs": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz",
+ "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==",
+ "requires": {
+ "chownr": "1.0.1",
+ "mkdirp": "0.5.1",
+ "pump": "1.0.3",
+ "tar-stream": "1.5.5"
+ }
+ },
+ "tar-stream": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz",
+ "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==",
+ "requires": {
+ "bl": "1.2.1",
+ "end-of-stream": "1.4.0",
+ "readable-stream": "2.3.3",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "requires": {
+ "readable-stream": "2.3.3",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "thunky": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz",
+ "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=",
+ "dev": true
+ },
+ "time-stamp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz",
+ "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=",
+ "dev": true
+ },
+ "timers-browserify": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz",
+ "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "1.0.5"
+ }
+ },
+ "tiny-lr-fork": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz",
+ "integrity": "sha1-Hpnh4qhGm3NquX2X7vqYxx927Qo=",
+ "dev": true,
+ "requires": {
+ "debug": "0.7.4",
+ "faye-websocket": "0.4.4",
+ "noptify": "0.0.3",
+ "qs": "0.5.6"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+ "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+ "dev": true
+ },
+ "qs": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz",
+ "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=",
+ "dev": true
+ }
+ }
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "to-boolean-x": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-boolean-x/-/to-boolean-x-1.0.1.tgz",
+ "integrity": "sha512-PstxY3K6hVEHnY3FITs8XBoJbt0RI1e4MLIhAL9hWa3BtVLCrb86vU5z6lEKh7uZZjiPiLqIKMmfMro1nNgtXQ=="
+ },
+ "to-integer-x": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/to-integer-x/-/to-integer-x-3.0.0.tgz",
+ "integrity": "sha512-794L2Lpwjtynm7RxahJi2YdbRY75gTxUW27TMuN26UgwPkmJb/+HPhkFEFbz+E4vNoiP0dxq5tq5fkXoXLaK/w==",
+ "requires": {
+ "is-finite-x": "3.0.2",
+ "is-nan-x": "1.0.1",
+ "math-sign-x": "3.0.0",
+ "to-number-x": "2.0.0"
+ }
+ },
+ "to-number-x": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-number-x/-/to-number-x-2.0.0.tgz",
+ "integrity": "sha512-lGOnCoccUoSzjZ/9Uen8TC4+VFaQcFGhTroWTv2tYWxXgyJV1zqAZ8hEIMkez/Eo790fBMOjidTnQ/OJSCvAoQ==",
+ "requires": {
+ "cached-constructors-x": "1.0.0",
+ "nan-x": "1.0.0",
+ "parse-int-x": "2.0.0",
+ "to-primitive-x": "1.1.0",
+ "trim-x": "3.0.0"
+ }
+ },
+ "to-object-x": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/to-object-x/-/to-object-x-1.5.0.tgz",
+ "integrity": "sha512-AKn5GQcdWky+s20vjWkt+Wa6y3dxQH3yQyMBhOfBOPldUwqwhgvlqcIg5H092ntNc+TX8/Cxzs1kMHH19pyCnA==",
+ "requires": {
+ "cached-constructors-x": "1.0.0",
+ "require-object-coercible-x": "1.4.1"
+ }
+ },
+ "to-primitive-x": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/to-primitive-x/-/to-primitive-x-1.1.0.tgz",
+ "integrity": "sha512-gyMY0gi3wjK3e4MUBKqv9Zl8QGcWguIkaUr2VJmoBEsOpDcpDZSEyljR773eVG4maS48uX7muLkoQoh/BA82OQ==",
+ "requires": {
+ "has-symbol-support-x": "1.4.1",
+ "is-date-object": "1.0.1",
+ "is-function-x": "3.3.0",
+ "is-nil-x": "1.4.1",
+ "is-primitive": "2.0.0",
+ "is-symbol": "1.0.1",
+ "require-object-coercible-x": "1.4.1",
+ "validate.io-undefined": "1.0.3"
+ }
+ },
+ "to-property-key-x": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/to-property-key-x/-/to-property-key-x-2.0.2.tgz",
+ "integrity": "sha512-YISLpZFYIazNm0P8hLsKEEUEZ3m8U3+eDysJZqTu3+B9tQp+2TrMpaEGT8Agh4fZ5LSoums60/glNEzk5ozqrg==",
+ "requires": {
+ "has-symbol-support-x": "1.4.1",
+ "to-primitive-x": "1.1.0",
+ "to-string-x": "1.4.2"
+ }
+ },
+ "to-string-symbols-supported-x": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-string-symbols-supported-x/-/to-string-symbols-supported-x-1.0.0.tgz",
+ "integrity": "sha512-HbVH673pybrUmhzESGHUm17BBJvqb7BU8HciOvuEYm9ipuDyjmddhvkVqpVW6sM/C5/zhJo17n7O7I/24loJIQ==",
+ "requires": {
+ "cached-constructors-x": "1.0.0",
+ "has-symbol-support-x": "1.4.1",
+ "is-symbol": "1.0.1"
+ }
+ },
+ "to-string-tag-x": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/to-string-tag-x/-/to-string-tag-x-1.4.2.tgz",
+ "integrity": "sha512-ytO9eLigxsQQLGuab0C1iSSTzKdJNVSlBg0Spg4J/rGAVrQJ5y774mo0SSzgGeTT4RJGGyJNfObXaTMzX0XDOQ==",
+ "requires": {
+ "lodash.isnull": "3.0.0",
+ "validate.io-undefined": "1.0.3"
+ }
+ },
+ "to-string-x": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/to-string-x/-/to-string-x-1.4.2.tgz",
+ "integrity": "sha512-/WP5arlwtCpAAexCCHiQBW0eXwse84osWyP1Qtaz71nsYSuUpOkT6tBm8nQ4IIUfSh5hji0hDupUCD2xbbOL6A==",
+ "requires": {
+ "is-symbol": "1.0.1"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
+ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
+ "requires": {
+ "punycode": "1.4.1"
+ }
+ },
+ "trim-left-x": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/trim-left-x/-/trim-left-x-3.0.0.tgz",
+ "integrity": "sha512-+m6cqkppI+CxQBTwWEZliOHpOBnCArGyMnS1WCLb6IRgukhTkiQu/TNEN5Lj2eM9jk8ewJsc7WxFZfmwNpRXWQ==",
+ "requires": {
+ "cached-constructors-x": "1.0.0",
+ "require-coercible-to-string-x": "1.0.0",
+ "white-space-x": "3.0.0"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "trim-right-x": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/trim-right-x/-/trim-right-x-3.0.0.tgz",
+ "integrity": "sha512-iIqEsWEbWVodqdixJHi4FoayJkUxhoL4AvSNGp4FF4FfQKRPGizt8++/RnyC9od75y7P/S6EfONoVqP+NddiKA==",
+ "requires": {
+ "cached-constructors-x": "1.0.0",
+ "require-coercible-to-string-x": "1.0.0",
+ "white-space-x": "3.0.0"
+ }
+ },
+ "trim-x": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/trim-x/-/trim-x-3.0.0.tgz",
+ "integrity": "sha512-w8s38RAUScQ6t3XqMkS75iz5ZkIYLQpVnv2lp3IuTS36JdlVzC54oe6okOf4Wz3UH4rr3XAb2xR3kR5Xei82fw==",
+ "requires": {
+ "trim-left-x": "3.0.0",
+ "trim-right-x": "3.0.0"
+ }
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "optional": true
+ },
+ "type-is": {
+ "version": "1.6.15",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
+ "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
+ "dev": true,
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "2.1.17"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.10.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "requires": {
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true,
+ "optional": true
+ },
+ "uglifyjs-webpack-plugin": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz",
+ "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7",
+ "uglify-js": "2.8.29",
+ "webpack-sources": "1.1.0"
+ }
+ },
+ "underscore": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
+ "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
+ "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=",
+ "dev": true
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
+ "uniqid": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz",
+ "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
+ "dev": true,
+ "requires": {
+ "macaddress": "0.2.8"
+ }
+ },
+ "uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
+ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+ "dev": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ },
+ "unzip-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
+ "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4="
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "url-loader": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz",
+ "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "1.1.0",
+ "mime": "1.4.1",
+ "schema-utils": "0.3.0"
+ }
+ },
+ "url-parse": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz",
+ "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==",
+ "dev": true,
+ "requires": {
+ "querystringify": "1.0.0",
+ "requires-port": "1.0.0"
+ },
+ "dependencies": {
+ "querystringify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz",
+ "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=",
+ "dev": true
+ }
+ }
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "1.0.2",
+ "spdx-expression-parse": "1.0.4"
+ }
+ },
+ "validate.io-undefined": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/validate.io-undefined/-/validate.io-undefined-1.0.3.tgz",
+ "integrity": "sha1-fif8uzFbhB54JDQxiXZxkp4gt/Q="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "dev": true
+ },
+ "vendors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz",
+ "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "1.3.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "dev": true,
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "vuvuzela": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/vuvuzela/-/vuvuzela-1.0.3.tgz",
+ "integrity": "sha1-O+FF5YJxxzylUnndhR8SpoIRSws="
+ },
+ "walkdir": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
+ "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
+ "dev": true
+ },
+ "watchpack": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz",
+ "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=",
+ "dev": true,
+ "requires": {
+ "async": "2.6.0",
+ "chokidar": "1.7.0",
+ "graceful-fs": "4.1.11"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ }
+ }
+ },
+ "wbuf": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz",
+ "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=",
+ "dev": true,
+ "requires": {
+ "minimalistic-assert": "1.0.0"
+ }
+ },
+ "webpack": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz",
+ "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==",
+ "dev": true,
+ "requires": {
+ "acorn": "5.2.1",
+ "acorn-dynamic-import": "2.0.2",
+ "ajv": "5.5.2",
+ "ajv-keywords": "2.1.1",
+ "async": "2.6.0",
+ "enhanced-resolve": "3.4.1",
+ "escope": "3.6.0",
+ "interpret": "1.1.0",
+ "json-loader": "0.5.7",
+ "json5": "0.5.1",
+ "loader-runner": "2.3.0",
+ "loader-utils": "1.1.0",
+ "memory-fs": "0.4.1",
+ "mkdirp": "0.5.1",
+ "node-libs-browser": "2.1.0",
+ "source-map": "0.5.7",
+ "supports-color": "4.5.0",
+ "tapable": "0.2.8",
+ "uglifyjs-webpack-plugin": "0.4.6",
+ "watchpack": "1.4.0",
+ "webpack-sources": "1.1.0",
+ "yargs": "8.0.2"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz",
+ "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==",
+ "dev": true,
+ "requires": {
+ "memory-fs": "0.4.1",
+ "mime": "1.6.0",
+ "path-is-absolute": "1.0.1",
+ "range-parser": "1.2.0",
+ "time-stamp": "2.0.0"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ }
+ }
+ },
+ "webpack-dev-server": {
+ "version": "2.9.7",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.7.tgz",
+ "integrity": "sha512-Pu7uoQFgQj5RE5wmlfkpYSzihMKxulwEuO2xCsaMnAnyRSApwoVi3B8WCm9XbigyWTHaIMzYGkB90Vr6leAeTQ==",
+ "dev": true,
+ "requires": {
+ "ansi-html": "0.0.7",
+ "array-includes": "3.0.3",
+ "bonjour": "3.5.0",
+ "chokidar": "1.7.0",
+ "compression": "1.7.1",
+ "connect-history-api-fallback": "1.5.0",
+ "debug": "3.1.0",
+ "del": "3.0.0",
+ "express": "4.16.2",
+ "html-entities": "1.2.1",
+ "http-proxy-middleware": "0.17.4",
+ "import-local": "0.1.1",
+ "internal-ip": "1.2.0",
+ "ip": "1.1.5",
+ "killable": "1.0.0",
+ "loglevel": "1.6.0",
+ "opn": "5.1.0",
+ "portfinder": "1.0.13",
+ "selfsigned": "1.10.1",
+ "serve-index": "1.9.1",
+ "sockjs": "0.3.18",
+ "sockjs-client": "1.1.4",
+ "spdy": "3.4.7",
+ "strip-ansi": "3.0.1",
+ "supports-color": "4.5.0",
+ "webpack-dev-middleware": "1.12.2",
+ "yargs": "6.6.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wrap-ansi": "2.1.0"
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
+ }
+ },
+ "opn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz",
+ "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "1.1.0"
+ }
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "dev": true,
+ "requires": {
+ "lcid": "1.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
+ "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
+ "dev": true,
+ "requires": {
+ "camelcase": "3.0.0",
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "1.4.0",
+ "read-pkg-up": "1.0.1",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "1.0.2",
+ "which-module": "1.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "4.2.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
+ "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
+ "dev": true,
+ "requires": {
+ "camelcase": "3.0.0"
+ }
+ }
+ }
+ },
+ "webpack-sources": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz",
+ "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "2.0.0",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "websocket-driver": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
+ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+ "dev": true,
+ "requires": {
+ "http-parser-js": "0.4.9",
+ "websocket-extensions": "0.1.3"
+ }
+ },
+ "websocket-extensions": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+ "dev": true
+ },
+ "whet.extend": {
+ "version": "0.9.9",
+ "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
+ "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
+ "dev": true
+ },
+ "which": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
+ "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
+ "dev": true
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "white-space-x": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/white-space-x/-/white-space-x-3.0.0.tgz",
+ "integrity": "sha512-nMPVXGMdi/jQepXKryxqzEh/vCwdOYY/u6NZy40glMHvZfEr7/+vQKnDhEq4rZ1nniOFq9GWohQYB30uW/5Olg=="
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
+ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
+ "requires": {
+ "string-width": "1.0.2"
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "write-stream": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/write-stream/-/write-stream-0.4.3.tgz",
+ "integrity": "sha1-g8yMA0fQr2BXqThitOOuAd5cgcE=",
+ "requires": {
+ "readable-stream": "0.0.4"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-0.0.4.tgz",
+ "integrity": "sha1-8y124/uGM0SlSNeZIwBxc2ZbO40="
+ }
+ }
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
+ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
+ "dev": true,
+ "requires": {
+ "camelcase": "4.1.0",
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "2.1.0",
+ "read-pkg-up": "2.0.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "7.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
+ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+ "dev": true,
+ "requires": {
+ "camelcase": "4.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ }
+ }
+ },
+ "zip-stream": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz",
+ "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=",
+ "dev": true,
+ "requires": {
+ "archiver-utils": "1.3.0",
+ "compress-commons": "1.2.2",
+ "lodash": "4.17.4",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "zlib-browserify": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/zlib-browserify/-/zlib-browserify-0.0.3.tgz",
+ "integrity": "sha1-JAzNv9AgP6hCsTDe77FBQSLIzFA=",
+ "dev": true,
+ "requires": {
+ "tape": "0.2.2"
+ }
+ }
+ }
+}
From 71e2f55e9d68eeed9521b8c6cce026296c5ad686 Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sat, 10 Feb 2018 23:57:15 -0700
Subject: [PATCH 11/17] E2E tests
---
.jshintrc | 2 +-
Gruntfile.js | 32 ++--
docs/Build.md | 17 ++
openNote/controllers/folderController.js | 6 +-
openNote/controllers/noteController.js | 5 +
openNote/controllers/tagListController.js | 4 +-
openNote/partials/folderPartial.html | 11 +-
openNote/partials/navBarPartial.html | 4 +-
openNote/style/invert/style.less | 117 +++++++------
package.json | 3 +-
test/e2e/test.js | 191 ++++++++++++++++++++++
11 files changed, 317 insertions(+), 75 deletions(-)
create mode 100644 test/e2e/test.js
diff --git a/.jshintrc b/.jshintrc
index c05a4f7..e9b1673 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -1,5 +1,5 @@
{
- "esversion":5,
+ "esversion":6,
"node": true,
"undef": true,
"unused": true,
diff --git a/Gruntfile.js b/Gruntfile.js
index b585d46..c1a5a5d 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -5,18 +5,25 @@ var bundleFiles=[
"openNote/**/*.html"
];
+// Helper function
+var serverConfig = function(keepalive){
+ if(keepalive==undefined)
+ keepalive = true;
+ return {
+ options: {
+ port: 8080,
+ base: ".",
+ keepalive: keepalive
+ }
+ };
+};
module.exports = function(grunt) {
//Initializing the configuration object
grunt.initConfig({
connect: {
- server: {
- options: {
- port: 8080,
- base: ".",
- keepalive: true
- }
- }
+ server: serverConfig(),
+ serverNoAlive: serverConfig(false)
},
compress: {
main: {
@@ -33,8 +40,10 @@ module.exports = function(grunt) {
}
},
jshint: {
- options: {},
- all: ["**/*.js*", //Order matters
+ options: {
+ "esversion":6,
+ },
+ all: ["openNote/**/*.js*", //Order matters
"!node_modules/**",
"!OpenNote/node_moduless/**"
]
@@ -100,6 +109,9 @@ module.exports = function(grunt) {
"rm -rf dark light"
].join("&&")
},
+ test: {
+ command: ["npm run test"].join("&&")
+ },
dev: {
command: ["npm run dev"].join("&&")
},
@@ -148,5 +160,5 @@ module.exports = function(grunt) {
//testing
grunt.registerTask("devmode", ["karma:unit", "watch"]);
- grunt.registerTask("ci", ["build", "jshint:all"]);
+ grunt.registerTask("ci", "Build the app and runs tests on it", ["jshint:all", "buildProd", "connect:serverNoAlive", "shell:test" ]);
};
diff --git a/docs/Build.md b/docs/Build.md
index c26bba4..4f9ad37 100644
--- a/docs/Build.md
+++ b/docs/Build.md
@@ -12,3 +12,20 @@ Then run
this will start a webpack dev server.
To test production bundles run `grunt testDeploy`
+
+//TODO new stuff and note in an ascii tree how the shared services are are expected to be neighbors of the cli and OpenNoteFolder
+
+
+//TODO grunt --help to get steps
+
+Super important
+grunt default or grunt
+grunt ci
+grunt deploy //TODO
+
+
+To develop tests
+```
+grunt dev # in terminal A
+npm run testChrome # in terminal B. Iterate on this terminal
+```
diff --git a/openNote/controllers/folderController.js b/openNote/controllers/folderController.js
index 3d0e5b3..8f5412b 100644
--- a/openNote/controllers/folderController.js
+++ b/openNote/controllers/folderController.js
@@ -24,6 +24,7 @@ openNote.controller("folderController", ["$scope",
//add buttons
if ($routeParams.id)
$rootScope.buttons.push({
+ id: "newNote",
text: "New note",
action: function() {
$scope.fadeOutFoldersAndNotes(function() {
@@ -34,6 +35,7 @@ openNote.controller("folderController", ["$scope",
//Create a folder
$rootScope.buttons.push({
+ id: "newFolder",
text: "New folder",
action: function() {
var prompt = "Please enter a name for the new folder";
@@ -244,10 +246,6 @@ openNote.controller("folderController", ["$scope",
storageService.loadFolderContents($scope.currentFolder._id, function(results) {
$scope.currentFolderContents = results.rows;
- //Do they have anything to display?
- if (!$scope.currentFolder._id && !$scope.currentFolderContents.length)
- alertify.alert("It looks like you dont have any folders. You can create one using the \"New Folder\" button in the top right of the page. If you need to pull your remote notes click here .");
-
$scope.$apply();
});
};
diff --git a/openNote/controllers/noteController.js b/openNote/controllers/noteController.js
index ba8363f..8e08300 100644
--- a/openNote/controllers/noteController.js
+++ b/openNote/controllers/noteController.js
@@ -35,6 +35,7 @@ openNote.controller("noteController", ["$scope",
*/
var saveButton = function() {
return {
+ id: "save",
text: "Save",
action: function() {
save();
@@ -44,6 +45,7 @@ openNote.controller("noteController", ["$scope",
var copyButton = function(note) {
return {
+ id: "cut",
text: "Cut",
action: function() {
$rootScope.clipboard = note;
@@ -57,6 +59,7 @@ openNote.controller("noteController", ["$scope",
*/
var clearButton = function() {
return {
+ id: "clear",
text: "Clear",
action: function() {
$scope.clear();
@@ -66,6 +69,7 @@ openNote.controller("noteController", ["$scope",
var editButton = function() {
return {
+ id: "edit",
text: "Edit",
action: function() {
activateEditMode();
@@ -75,6 +79,7 @@ openNote.controller("noteController", ["$scope",
var upButton = function(folderID) {
return {
+ id: "goToParentFolder",
text: "Go up a folder",
action: function() {
$location.url("/folder/" + folderID);
diff --git a/openNote/controllers/tagListController.js b/openNote/controllers/tagListController.js
index d143f61..dbcf93a 100644
--- a/openNote/controllers/tagListController.js
+++ b/openNote/controllers/tagListController.js
@@ -50,13 +50,13 @@ openNote.controller("tagListController", [
//Confirm action
alertify.confirm("Are you sure you want to move " + (request.moveObject.name || request.moveObject.title) + " into " + request.destFolder.name + "?", function(confirm) {
if (confirm) {
- var origParrentFolderID = request.moveObject.parentFolderID;
+ var origParentFolderID = request.moveObject.parentFolderID;
request.moveObject.parentFolderID = request.destFolder._id;
storageService.database().put(request.moveObject).then(function() {
$rootScope.$emit("changedFolder", { //fire off an event to tell everyone we just modified a folder
folder: request.moveObject,
- oldParrentFolderID: origParrentFolderID
+ oldParentFolderID: origParentFolderID
});
}).catch(function(error) {
throw error;
diff --git a/openNote/partials/folderPartial.html b/openNote/partials/folderPartial.html
index 5430e69..9dede3a 100644
--- a/openNote/partials/folderPartial.html
+++ b/openNote/partials/folderPartial.html
@@ -4,14 +4,14 @@
{{parentFolder.name}}
-
+
{{currentFolder.name}}
Go up a folder
- Rename
- Delete
+ Rename
+ Delete
@@ -39,4 +39,9 @@
Note
+
+
+
It looks like you dont have any folders. You can create one using the "New Folder" button in the top right of the page. If you need to pull your remote notes click here .
+
This folder is empty.
+
diff --git a/openNote/partials/navBarPartial.html b/openNote/partials/navBarPartial.html
index deaa088..c60a252 100644
--- a/openNote/partials/navBarPartial.html
+++ b/openNote/partials/navBarPartial.html
@@ -11,10 +11,10 @@
- {{button.text}}
+ {{button.text}}
- Settings
+ Settings
diff --git a/openNote/style/invert/style.less b/openNote/style/invert/style.less
index 46e2c6a..45bdc27 100644
--- a/openNote/style/invert/style.less
+++ b/openNote/style/invert/style.less
@@ -19,7 +19,7 @@
@treeHandleBackgroundColor: negation(#0b0908, @offset);
@treeHandleBorderColor: negation(#231d17, @offset);
- @copyRightColor: negation(#656565, @offset);
+ @copyRightColor: negation(#777777, @offset);
@loginInputColor: negation(#444, @offset);
body{
@@ -93,33 +93,6 @@ input:focus, select:focus, textarea:focus, button:focus {
border-radius:4px;/*round the corners*/
}
-#folderTitleBar{
- padding: 0px 0px 15px 0px;
- overflow: hidden;
- font-size: 18px;
-
- .breadcrumb{
- margin-bottom:0;
- padding: 0 15px 0 0;
- background: none;
- float:left;
-
- >.active{
- color:inherit;
- }
-
- li{
- font-size: 20px;
- }
- }
-}
-
- #folderTitle{
- float:left;
- padding-right:15px;
- font-size: 20px;
- }
-
.customButton{ /*custom button class that removes all browser formating*/
border: none;
background:transparent;
@@ -146,21 +119,6 @@ img {
float: right;
}
-#sideBar{
- background: @navBackground;
-
- /*round the corners*/
- border-radius:4px ;
- margin-bottom: 15px;
- padding: 15px 15px 15px 30px;
-}
-
-#sideBar ul{
- padding-left: 20px;
-}
-
-
-
.box{
width: 250px;
height: 150px;
@@ -193,7 +151,7 @@ img {
resize:none;
/* copied from div.event */
- color: inherit; /*inherit from parrent*/
+ color: inherit; /*inherit from parent*/
/*coped from body to prevent glitch*/
font-family: inherit;
@@ -259,7 +217,7 @@ img {
resize:none;
/* copied from div.event */
- color: inherit; /*inherit from parrent*/
+ color: inherit; /*inherit from parent*/
/*coped from body to prevent glitch*/
font-family: inherit;
@@ -295,13 +253,68 @@ img {
box-shadow: none;
}
- #copyRight{
- color: @copyRightColor;
- padding-left: 50px;
- }
+
+
+// Main
+#copyRight{
+ color: @copyRightColor;
+ padding-left: 50px;
+}
+
+#sideBar{
+ background: @navBackground;
+
+ /*round the corners*/
+ border-radius:4px ;
+ margin-bottom: 15px;
+ padding: 15px 15px 15px 30px;
+}
+
+#sideBar ul{
+ padding-left: 20px;
+}
// Note partial
-.notePartial .CodeMirror{
- border-radius:0 0 4px 4px;/*round the corners*/
- size: 75vh;
+.notePartial{
+ .CodeMirror{
+ border-radius:0 0 4px 4px;/*round the corners*/
+ size: 75vh;
+ }
+}
+
+
+// Folder partial
+.folderPartial{
+ #folderTitleBar{
+ padding: 0px 0px 15px 0px;
+ overflow: hidden;
+ font-size: 18px;
+
+ .breadcrumb{
+ margin-bottom:0;
+ padding: 0 15px 0 0;
+ background: none;
+ float:left;
+
+ >.active{
+ color:inherit;
+ }
+
+ li{
+ font-size: 20px;
+ }
+ }
+ }
+
+ #folderTitle{
+ float:left;
+ padding-right:15px;
+ font-size: 20px;
+ }
+
+ .noFolderHelp{
+ margin-top: 25px;
+ text-align: center;
+ color: @copyRightColor
+ }
}
diff --git a/package.json b/package.json
index 4dcef36..b4dcf48 100644
--- a/package.json
+++ b/package.json
@@ -34,12 +34,13 @@
"grunt-shell": "^0.7.0",
"script-loader": "^0.7.2",
"style-loader": "^0.19.0",
+ "testcafe": "^0.18.6",
"url-loader": "^0.6.2",
"webpack": "^3.8.1",
"webpack-dev-server": "^2.9.5"
},
"scripts": {
- "test": "grunt ci",
+ "test": "testcafe chrome ./test/e2e/test.js -e -c 3",
"dev": "webpack-dev-server --open --hot --config ./build/webpack.dev.config.js",
"build": "webpack --progress --hide-modules --config ./build/webpack.prod.config.js"
}
diff --git a/test/e2e/test.js b/test/e2e/test.js
new file mode 100644
index 0000000..faaec66
--- /dev/null
+++ b/test/e2e/test.js
@@ -0,0 +1,191 @@
+// jshint ignore: start
+
+import { Selector, ClientFunction } from "testcafe"; // first import testcafe selectors
+
+const WAIT_TIME = 500; // Time to wait after some actions to give angular time to re render
+
+fixture`Getting Started`
+ .page `http://127.0.0.1:8080/`
+ .afterEach(async testController => {//Clean up local storage and local db
+ let clean = ClientFunction(() => {
+ localStorage.clear();
+ return PouchDB("openNote").destroy()
+ });
+
+ await clean();
+ });
+
+/**
+ * Create a folder. Expects to be in a folder partial.
+ * @param {[type]} testController [description]
+ * @param {[type]} name - name folder
+ * @return {testController} - testController object
+ */
+let createFolder = (testController, name) => {
+ return testController.click("#newFolder")
+ .typeText("#alertify-text", name)
+ .click("#alertify-ok");
+}
+
+
+/**
+ * Create a note. Expects to be in a sub folder in a folder partial.
+ * @param {[type]} testController [description]
+ * @param {[type]} title [description]
+ * @param {[type]} note [description]
+ * @return {testController} - testController object
+ */
+let createNote = (testController, title, note) => {
+ let typeString = note.split("")
+
+ typeString.forEach((char, index)=>{
+ if(char != " ")
+ return;
+ typeString[index]="space";
+ });
+ typeString = typeString.join(" ");
+
+ return testController.click("#newNote")
+ .typeText("#noteName", title,{replace:true})
+ .click(".CodeMirror-scroll")
+ .pressKey(typeString)
+ .click("#save")
+}
+
+/**
+ * Edits a note. Expects to be on a note partial
+ * @param {[type]} testController [description]
+ * @param {[type]} title [description]
+ * @param {[type]} note [description]
+ */
+let editNote = async (testController, title, note) => {
+ const CLEAR_STRING = "ctrl+a backspace"
+ let typeString = note.split("")
+
+ typeString.forEach((char, index)=>{
+ if(char != " ")
+ return;
+ typeString[index]="space";
+ });
+ typeString = typeString.join(" ");
+
+ await testController.click("#edit")
+ .typeText("#noteName", title,{replace:true})
+ .click(".CodeMirror-scroll")
+ .pressKey(CLEAR_STRING)
+ .pressKey(typeString)
+ .click("#save")
+}
+
+test("Create Folder", async testController => {
+ //Arrange
+
+ //Act
+ let folderName="TestFolder"
+ await createFolder(testController, folderName).wait(WAIT_TIME)
+
+ //Asert
+ let result = await Selector("#currentFolder").innerText;//#Stupid should really just be sync
+ await testController.expect(result.trim()).eql(folderName);
+});
+
+test("Create note", async testController => {
+ //Arrange
+
+ //Act
+ let title="TestNote";
+ let tag = "#Something"
+ let note = `Now is the time for all good men to come to the aid of their country. ${tag}`;
+
+ await createFolder(testController, "NoteTestFolder")
+ .wait(WAIT_TIME)
+
+ await createNote(testController, title, note)
+
+ //Asert
+ let titleActual = await Selector("#noteName").value;
+ let noteActual = await Selector("#note").innerText;//#Stupid should really just be sync
+ let tagActual = await Selector("#sideBar ul li:first-child ").innerText;
+ await testController.expect(titleActual).eql(title);
+ await testController.expect(noteActual.trim()).eql(note);
+ await testController.expect(tagActual).eql(tag.toLowerCase());
+
+});
+
+test("Edit note", async testController => {
+ //Arrange
+
+ //Act
+ let title="TestNote";
+ let tag = "#Something"
+ let note = `Now is the time for all good men to come to the aid of their country. ${tag}`;
+
+ await createFolder(testController, "NoteTestFolder")
+ .wait(WAIT_TIME)
+
+ await createNote(testController, title, note)
+
+ title="TestNote2";
+ tag = "#SomethingElse"
+ note = `YO ${tag}`;
+
+ await editNote(testController, title, note)
+
+ //Asert
+ let titleActual = await Selector("#noteName").value;
+ let noteActual = await Selector("#note").innerText;//#Stupid should really just be sync
+ let tagActual = await Selector("#sideBar ul li:first-child ").innerText;
+ await testController.expect(titleActual).eql(title);
+ await testController.expect(noteActual.trim()).eql(note);
+ await testController.expect(tagActual).eql(tag.toLowerCase());
+});
+
+test("Delete note", async testController => {
+ //Arrange
+
+ //Act
+ let folderName = "NoteTestFolder";
+ await createFolder(testController, folderName)
+ .wait(WAIT_TIME);
+
+ await createNote(testController, "TestNote", "Now is the time for all good men to come to the aid of their country. #something");
+
+ await testController.click("#edit")
+ .click("#removeNote")
+ .click("#alertify-ok");
+
+ //Asert
+ await testController.expect(Selector("#sideBar ul li:first-child ").innerText).eql("No tags found. Add a # to a note to add a tag.");
+ let result = await Selector("#currentFolder").innerText;//Make sure we are back to parent folder
+ await testController.expect(result.trim()).eql(folderName);
+});
+
+test("Delete folder tree", async testController => {
+ //Create first level
+ let firstLevelTag="#firstLevel"
+ await createFolder(testController, "NoteTestFolder")
+ .wait(WAIT_TIME)
+ await createNote(testController, "TestNote", `Quick. ${firstLevelTag}`).wait(WAIT_TIME);
+ await testController.expect(await Selector("#sideBar ul li:first-child ").innerText).eql(firstLevelTag.toLowerCase());
+
+ //Create second level
+ await testController.click("#goToParentFolder");
+ await createFolder(testController, "SubFolder")
+ .wait(WAIT_TIME)
+ await createNote(testController, "Sub Note", "Bla #foo").wait(WAIT_TIME);
+ await testController.expect(Selector("#sideBar ul").childElementCount).eql(2);//We should have two tags
+
+ //Delete it
+ await testController.click("#home")
+ .click(".folderPartial div.folder")
+ .click("#currentFolder")
+ .click("#delete")
+ .click("#alertify-ok")
+ .wait(WAIT_TIME);
+
+
+ await testController.expect(Selector("#sideBar ul li:first-child").innerText).eql("No tags found. Add a # to a note to add a tag."); //Make sure no tags
+ let result = await Selector("#currentFolder").innerText
+ await testController.expect(result.trim()).eql("Home");;//Make sure we are back to parent folder
+ await testController.expect(Selector(".folderPartial div.folder").length).eql(0);//Make sure there are no folders anymore
+});
From 0324402d818bee64987262a7ddc16408fbfcc48b Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sat, 17 Feb 2018 00:31:54 -0700
Subject: [PATCH 12/17] Removed direct db call from controllers
---
README.md | 41 +++++++----------------
docs/Upgrade.md | 4 +++
openNote/controllers/folderController.js | 10 +++---
openNote/controllers/noteController.js | 8 ++---
openNote/controllers/tagController.js | 3 +-
openNote/controllers/tagListController.js | 2 +-
6 files changed, 28 insertions(+), 40 deletions(-)
diff --git a/README.md b/README.md
index bec1d1e..185b0b4 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
-OpenNote [](https://travis-ci.org/FoxUSA/OpenNote)
-=============
+# OpenNote [](https://travis-ci.org/FoxUSA/OpenNote)
+
![][responsive]
-OpenNote was built to be a open source(MIT License), web based note taking software.
-It is designed to be self hosted and gives you ownership of your data.
+OpenNote is a progressive web application(PWA)/HTML5 offline app that was built to be a open source(MIT License), web based text editor/note taking software.
+It is designed to be self hosted and gives you ownership of your data
Please support this project by:
- [Using GitTip][GitTip],
@@ -25,9 +25,7 @@ https://foxusa.github.io/OpenNote/OpenNote/
Features
--------
- BYOS(Bring Your Own Server)
-- Full WYSIWYG editor
- Touch friendly and mouse friendly ui
-- Upload manager (not enabled in demo :) )
- Light weight
- Multi user support
- Search
@@ -36,36 +34,25 @@ Features
- Move Folders(Drag into another folder in the list view.)
- Rename/Delete Folders(Click on folder title to get menu.)
- Responsive
-
+- Tags
+- [CLI](https://github.com/FoxUSA/OpenNote-CLI)
Upcoming Features
-----------------
-- Tags (You win)
- Email to note
-- Implement history viewer
-- Install script
-- Move Notes (Feature lost when migrating to Angular based list)
- Mobile App
Documentation
-----------------
-[How to install][Install]
-
-[How to upgrade][Upgrade]
-
-[How to build](https://github.com/FoxUSA/OpenNote/blob/master/docs/Build.md)
-
-[Themes][Themes]
-
-[PHP backend][php]
-
+- [How to install][Install]
+- [How to upgrade][Upgrade]
+- [How to build](https://github.com/FoxUSA/OpenNote/blob/master/docs/Build.md)
+-[Themes][Themes]
-![][dark]
License
-------
JQuery - Distributed under the MIT License
Angular - Distributed under the MIT License
Bootstrap - Distributed under the MIT License
- CKEditor - Distributed under the MPL License
Angular UI Tree - Distributed under the MIT License
Alertify.js - Distributed under the MIT License
PouchDB - Distributed under the Apache License
@@ -74,7 +61,7 @@ License
OpenNote Code - Distributed under the MIT License
- © Jacob Liscom 2017
+ © Jacob Liscom 2018
Credits
-------
@@ -82,13 +69,11 @@ Credits
Kam Bnkamalesh - His TODO project heavily influenced my UI design
-[topLevel]: https://raw.github.com/FoxUSA/OpenNote/master/docs/screenShots/topLevel.png
-[dark]: https://raw.github.com/FoxUSA/OpenNote/master/docs/screenShots/dark1.png
-[responsive]: https://raw.githubusercontent.com/FoxUSA/OpenNote/master/docs/screenShots/OpenNote.png
+[topLevel]: ./docs/screenShots/topLevel.png
+[responsive]: ./docs/screenShots/OpenNote.png
[Install]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Install.md
[Upgrade]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Upgrade.md
-[PHP]: https://github.com/FoxUSA/OpenNoteService-PHP
[Dependencies]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Dependencies.md
[Themes]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Themes.md
[GitTip]: https://www.gittip.com/FoxUSA/
diff --git a/docs/Upgrade.md b/docs/Upgrade.md
index af1dadd..bcf82ac 100644
--- a/docs/Upgrade.md
+++ b/docs/Upgrade.md
@@ -1,5 +1,9 @@
# How to upgrade
+//TODO
+
+If you have an issue with the html use https://domchristie.github.io/turndown/ to convert
+
##Upgrading from 14.xx(Locomotive) to 15.07.01
All you need to do is merge your existing deployment with the release folder while keeping your config files (`openNote\openNote.config.js` and `\Service\Config.php`).
Make sure to backup your old folder and database.
diff --git a/openNote/controllers/folderController.js b/openNote/controllers/folderController.js
index 8f5412b..c37ab75 100644
--- a/openNote/controllers/folderController.js
+++ b/openNote/controllers/folderController.js
@@ -100,7 +100,7 @@ openNote.controller("folderController", ["$scope",
};
loadCurrentFolderContents();
} else {
- storageService.database().get($routeParams.id).then(function(doc) {
+ storageService.get($routeParams.id).then(function(doc) {
$scope.currentFolder = doc;
loadCurrentFolderContents();
@@ -109,7 +109,7 @@ openNote.controller("folderController", ["$scope",
name: "Home"
};
else
- storageService.database().get($scope.currentFolder.parentFolderID).then(function(doc) {
+ storageService.get($scope.currentFolder.parentFolderID).then(function(doc) {
$scope.parentFolder = doc;
$scope.$apply();
});
@@ -175,7 +175,7 @@ openNote.controller("folderController", ["$scope",
return;
$scope.currentFolder.name = data;
- storageService.database().put($scope.currentFolder).then(function(result) {
+ storageService.put($scope.currentFolder).then(function(result) {
$scope.currentFolder._rev = result.rev;
$rootScope.$emit("reloadListView", {});
$scope.$apply();
@@ -227,7 +227,7 @@ openNote.controller("folderController", ["$scope",
*/
var createFolder = function(folder) {
folder.type = "folder";
- storageService.database().post(folder).then(function(response) {
+ storageService.post(folder).then(function(response) {
if (!response.ok)
throw "//FIXME";
$rootScope.$emit("reloadListView", {});
@@ -243,7 +243,7 @@ openNote.controller("folderController", ["$scope",
* Load the current folders contents
*/
var loadCurrentFolderContents = function() {
- storageService.loadFolderContents($scope.currentFolder._id, function(results) {
+ storageService.loadFolderContents($scope.currentFolder._id).then(function(results) {
$scope.currentFolderContents = results.rows;
$scope.$apply();
diff --git a/openNote/controllers/noteController.js b/openNote/controllers/noteController.js
index 8e08300..46723ec 100644
--- a/openNote/controllers/noteController.js
+++ b/openNote/controllers/noteController.js
@@ -149,11 +149,11 @@ openNote.controller("noteController", ["$scope",
//Upsert
if (!$scope.note._id)
- storageService.database().post($scope.note).then(saveCallback, function() {
+ storageService.post($scope.note).then(saveCallback, function() {
alertify.error("Error saving note");
});
else
- storageService.database().put($scope.note).then(saveCallback, function() {
+ storageService.put($scope.note).then(saveCallback, function() {
alertify.error("Error modifing note");
});
});
@@ -170,7 +170,7 @@ openNote.controller("noteController", ["$scope",
var folderID = $scope.note.parentFolderID; //need to keep track of this because we are about to delete it
$(".notePartial").fadeOut(config.fadeSpeedShort());
- storageService.database().remove($scope.note).then(function() {
+ storageService.delete($scope.note).then(function() {
$rootScope.$emit("noteDeleted", $scope.note);
detachWindowUnload();
alertify.success("Note Deleted"); //all done. close the notify dialog
@@ -234,7 +234,7 @@ openNote.controller("noteController", ["$scope",
/**
* Load note
*/
- storageService.database().get($routeParams.id).then(function(doc) {
+ storageService.get($routeParams.id).then(function(doc) {
$scope.note = doc;
$scope.noteHTML = marked($scope.note.note);
$(".notePartial").fadeIn(config.fadeSpeedLong());
diff --git a/openNote/controllers/tagController.js b/openNote/controllers/tagController.js
index 2b15a54..bc85efa 100644
--- a/openNote/controllers/tagController.js
+++ b/openNote/controllers/tagController.js
@@ -32,9 +32,8 @@ openNote.controller("tagController", ["$scope",
var loadTags = function() {
tagService.getMap().then(function(map) {
var tags = map.tags[$scope.tag];
- var db = storageService.database();
tags.forEach(function(tag) {
- db.get(tag).then(function(note) {
+ storageService.get(tag).then(function(note) {
$scope.notes.push(note);
$scope.$apply();
});
diff --git a/openNote/controllers/tagListController.js b/openNote/controllers/tagListController.js
index dbcf93a..2203a00 100644
--- a/openNote/controllers/tagListController.js
+++ b/openNote/controllers/tagListController.js
@@ -53,7 +53,7 @@ openNote.controller("tagListController", [
var origParentFolderID = request.moveObject.parentFolderID;
request.moveObject.parentFolderID = request.destFolder._id;
- storageService.database().put(request.moveObject).then(function() {
+ storageService.put(request.moveObject).then(function() {
$rootScope.$emit("changedFolder", { //fire off an event to tell everyone we just modified a folder
folder: request.moveObject,
oldParentFolderID: origParentFolderID
From 6001882555bf9100e39aa35c85ced0a05b5b7a9b Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sat, 24 Feb 2018 10:59:27 -0700
Subject: [PATCH 13/17] DRYed up folder logic for use in search. Use alldocs to
greatly increase speed of search
---
.travis.yml | 2 +-
index.html | 3 +-
openNote/controllers/folderController.js | 54 +--------
openNote/controllers/searchController.js | 103 +++++-------------
openNote/directives/fadeOutDirective.js | 4 +-
.../directives/folderContentsDirective.js | 68 ++++++++++++
.../directives/folderContentsPartial.html | 23 ++++
openNote/partials/folderPartial.html | 24 +---
openNote/partials/searchPartial.html | 43 +-------
openNote/style/invert/style.less | 19 +++-
10 files changed, 140 insertions(+), 203 deletions(-)
create mode 100644 openNote/directives/folderContentsDirective.js
create mode 100644 openNote/partials/directives/folderContentsPartial.html
diff --git a/.travis.yml b/.travis.yml
index 578f402..967a59c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,5 @@
language: node_js
node_js:
- - 0.10
+ - node
before_script:
- npm install -g grunt-cli
diff --git a/index.html b/index.html
index ad776dc..a425934 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1,6 @@
-
+
+
diff --git a/openNote/controllers/folderController.js b/openNote/controllers/folderController.js
index c37ab75..71dd085 100644
--- a/openNote/controllers/folderController.js
+++ b/openNote/controllers/folderController.js
@@ -84,7 +84,7 @@ openNote.controller("folderController", ["$scope",
$rootScope.buttons.push({
text: "Search",
action: function() {
- $location.url("/search/" + $scope.currentFolder.id);
+ $location.url("/search/");
}
});
@@ -125,45 +125,7 @@ openNote.controller("folderController", ["$scope",
$scope.folderEditMode = !$scope.folderEditMode;
};
- /**
- * fade out all folders
- */
- $scope.fadeOutFoldersAndNotes = function(callback) {
- if ($scope.currentFolder.foldersInside || $scope.currentFolder.notesInside) {
- $(".note").fadeTo(config.fadeSpeedShort(), 0, function() {
- $scope.$apply(function() {
- callback();
- });
- });
- $(".folder").fadeTo(config.fadeSpeedShort(), 0, function() {
- $scope.$apply(function() {
- callback();
- });
- });
- } else
- callback();
- };
-
- /**
- * Load a folder
- * @param folder- the folder to load
- */
- $scope.loadFolder = function(folder) {
- $scope.fadeOutFoldersAndNotes(function() {
- $location.url("/folder/" + folder.doc._id);
- });
- };
-
- /**
- * Load a note
- * @param note - load a note
- */
- $scope.loadNote = function(note) {
- $scope.fadeOutFoldersAndNotes(function() {
- $location.url("/note/" + note.id);
- });
- };
/**
* Rename the current folder
@@ -250,20 +212,6 @@ openNote.controller("folderController", ["$scope",
});
};
- /**
- * Filter out everything but type folder
- */
- $scope.folderFilter = function(object) {
- return storageService.folderFilter(object);
- };
-
- /**
- * Filter out everything but type note
- */
- $scope.noteFilter = function(object) {
- return storageService.noteFilter(object);
- };
-
//Load current folder
$timeout($scope.loadCurrentFolder);
}
diff --git a/openNote/controllers/searchController.js b/openNote/controllers/searchController.js
index f1e0f30..cf829b1 100644
--- a/openNote/controllers/searchController.js
+++ b/openNote/controllers/searchController.js
@@ -7,99 +7,46 @@ openNote.controller("searchController", ["$scope",
"config",
"storageService",
"$location",
+ "$routeParams",
+ "$timeout",
function($scope,
$rootScope,
config,
storageService,
- $location) {
- /**
- * Default valie
- */
- $scope.searchRequest = {
- type: "Both",
- field: "Both",
- search: ""
- };
+ $location,
+ $routeParams,
+ $timeout) {
- $scope.notes = null;
- $scope.folders = null;
+ $scope.searchString = $routeParams.id; //Default
- /**
- * Search the database
- */
$scope.search = function() {
+ $location.url("/search/" + $scope.searchString);
+ };
+
+ $scope.loadResults = function() {
+ if (!$routeParams.id)
+ return;
+
alertify.log("Search started");
- $scope.notes = [];
- $scope.folders = [];
+ $scope.results = [];
- var removeDuplicates = function(array) {
- var listOfIDs = [];
- array.forEach(function(element) { //for each is synchronous
- var index = listOfIDs.indexOf(element.id);
- if (index == -1) {
- listOfIDs.push(element.id);
- } else
- array.splice(index, 1);
+ storageService.allDocs().then(function(result) {
+ result.rows.filter(storageService.folderFilter).forEach(function(folder) { // search folders
+ if (folder.doc.name.match($routeParams.id)) //search folder name
+ return $scope.results.push(folder);
});
- return array;
- };
- var appendNotes = function(notes) {
- $scope.notes = removeDuplicates($scope.notes.concat(notes));
- $scope.$apply();
- };
-
- var appendFolders = function(folders) {
- $scope.folders = $scope.folders.concat(folders);
- alertify.success(folders.length + " objects found");
+ result.rows.filter(storageService.noteFilter).forEach(function(note) { //Search notes
+ if (note.doc.title.match($routeParams.id) || note.doc.note.match($routeParams.id)) //search note name and title
+ return $scope.results.push(note);
+ });
$scope.$apply();
- };
-
- var type = $scope.searchRequest.type;
- var search = $scope.searchRequest.search;
- var field = $scope.searchRequest.field;
-
- if (type == "Both" || type == "Folders")
- storageService.searchFolderNames(search, appendFolders);
-
- if (type == "Both" || type == "Notes") {
- if (field == "Both" || type == "Title")
- storageService.searchNoteTitles(search, appendNotes);
-
- if (field == "Both" || type == "Body")
- storageService.searchNoteBody(search, appendNotes);
- }
- };
-
- /**
- * Load a folder
- * @param folder- the folder to load
- */
- $scope.loadFolder = function(folder) {
- $scope.fadeOutBoxes(function() {
- $location.url("/folder/" + folder.doc._id);
+ alertify.success($scope.results.length + " objects found");
});
- };
- /**
- * Load a note
- * @param note - load a note
- */
- $scope.loadNote = function(note) {
- $scope.fadeOutBoxes(function() {
- $location.url("/note/" + note.doc._id);
- });
};
- /**
- * fade out all boxes
- */
- $scope.fadeOutBoxes = function(callback) {
- $(".box").fadeOut(config.fadeSpeedShort(), function() {
- $scope.$apply(function() {
- callback();
- });
- });
- };
+ //Load results
+ $timeout($scope.loadResults);
}
]);
diff --git a/openNote/directives/fadeOutDirective.js b/openNote/directives/fadeOutDirective.js
index 67603ca..78fcc69 100644
--- a/openNote/directives/fadeOutDirective.js
+++ b/openNote/directives/fadeOutDirective.js
@@ -1,7 +1,5 @@
import openNote from "../openNote.js";
-/**
- *randomly fade in element to have a wave effect
- */
+
openNote.directive("fadeOutDirective", function() {
return {
restrict: "C",//class
diff --git a/openNote/directives/folderContentsDirective.js b/openNote/directives/folderContentsDirective.js
new file mode 100644
index 0000000..1d514a8
--- /dev/null
+++ b/openNote/directives/folderContentsDirective.js
@@ -0,0 +1,68 @@
+import openNote from "../openNote.js";
+
+openNote.directive("folderContentsDirective", [
+ "config",
+ "storageService",
+ "$location",
+ function(config, storageService, $location) {
+ return {
+ restrict: "E", //class
+ templateUrl: "openNote/partials/directives/folderContentsPartial.html",
+ scope: {
+ fadeOut: "=", //basically make the fadeOut method public
+ contents: "<" //Accept contents as a parameter
+ },
+ link: function($scope) {
+ /**
+ * fade out all folders
+ */
+ $scope.fadeOut = function(callback) {
+ $(".note").fadeTo(config.fadeSpeedShort(), 0, function() {
+ $scope.$apply(function() {
+ callback();
+ });
+ });
+
+ $(".folder").fadeTo(config.fadeSpeedShort(), 0, function() {
+ $scope.$apply(function() {
+ callback();
+ });
+ });
+ };
+
+ /**
+ * Load a folder
+ * @param folder- the folder to load
+ */
+ $scope.loadFolder = function(folder) { //TODO DRY
+ $scope.fadeOut(function() {
+ $location.url("/folder/" + folder.doc._id);
+ });
+ };
+
+ /**
+ * Load a note
+ * @param note - load a note
+ */
+ $scope.loadNote = function(note) { //TODO DRY
+ $scope.fadeOut(function() {
+ $location.url("/note/" + note.id);
+ });
+ };
+
+ /**
+ * Filter out everything but type folder
+ */
+ $scope.folderFilter = function(object) {
+ return storageService.folderFilter(object);
+ };
+
+ /**
+ * Filter out everything but type note
+ */
+ $scope.noteFilter = function(object) {
+ return storageService.noteFilter(object);
+ };
+ }
+ };
+ }]);
diff --git a/openNote/partials/directives/folderContentsPartial.html b/openNote/partials/directives/folderContentsPartial.html
new file mode 100644
index 0000000..6dac7fe
--- /dev/null
+++ b/openNote/partials/directives/folderContentsPartial.html
@@ -0,0 +1,23 @@
+
+
+ {{folder.doc.name}}
+
+
+
+ Folder
+
+
+
+
+
+ {{note.doc.title}}
+
+
+
+ Note
+
+
diff --git a/openNote/partials/folderPartial.html b/openNote/partials/folderPartial.html
index 9dede3a..f2e71e6 100644
--- a/openNote/partials/folderPartial.html
+++ b/openNote/partials/folderPartial.html
@@ -16,29 +16,7 @@
-
-
- {{folder.doc.name}}
-
-
-
- Folder
-
-
-
-
-
- {{note.doc.title}}
-
-
-
- Note
-
-
+
It looks like you dont have any folders. You can create one using the "New Folder" button in the top right of the page. If you need to pull your remote notes click here .
diff --git a/openNote/partials/searchPartial.html b/openNote/partials/searchPartial.html
index 5024979..619d2f2 100644
--- a/openNote/partials/searchPartial.html
+++ b/openNote/partials/searchPartial.html
@@ -1,26 +1,9 @@
-
Search in Home
+
Search
-
-
-
- {{folder.doc.name}}
-
-
-
- Folder
-
-
-
-
-
- {{note.doc.title}}
-
-
-
- Note
-
-
-
+
diff --git a/openNote/style/invert/style.less b/openNote/style/invert/style.less
index 45bdc27..f8d8c4e 100644
--- a/openNote/style/invert/style.less
+++ b/openNote/style/invert/style.less
@@ -195,10 +195,6 @@ img {
}
}
- .search, .search:hover, .search option{
- background-color: negation(@folderColor, #FFFFFF);
- }
-
.searchPartial,
.settingsPartials{
margin-bottom: 30px;
@@ -274,6 +270,21 @@ img {
padding-left: 20px;
}
+// Search
+.searchPartial{
+
+ .search,
+ .search:hover,
+ .search option{
+ background-color: negation(@folderColor, #FFFFFF);
+ }
+
+ input::placeholder{
+ color: @navBackground;
+ }
+
+}
+
// Note partial
.notePartial{
.CodeMirror{
From a770ce62981eb089a49e57968c3301a8cdfaa8be Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sat, 24 Feb 2018 22:51:30 -0700
Subject: [PATCH 14/17] Release prep
---
Changelog.md | 0
Gruntfile.js | 2 -
README.md | 4 +-
docs/Build.md | 38 +--
docs/History.md | 14 +
docs/HowToUse.md | 78 ++++--
docs/Install.md | 138 +++-------
docs/Upgrade.md | 33 ++-
docs/{screenShots => images}/EditNote.png | Bin
docs/{screenShots => images}/OpenNote.png | Bin
docs/{screenShots => images}/OpenNoteHome.png | Bin
docs/{screenShots => images}/ViewNote.png | Bin
docs/{screenShots => images}/another view.png | Bin
docs/{screenShots => images}/dark1.png | Bin
docs/{screenShots => images}/dark2.png | Bin
docs/{screenShots => images}/fullScreen.png | Bin
docs/{screenShots => images}/plants.png | Bin
docs/{screenShots => images}/seedsEdit.png | Bin
docs/{screenShots => images}/seedsView.png | Bin
docs/{screenShots => images}/topLevel.png | Bin
docs/screenShots/login.png | Bin 11345 -> 0 bytes
index.html | 3 +-
openNote/controllers/folderController.js | 14 +-
openNote/controllers/noteController.js | 8 +-
openNote/controllers/searchController.js | 19 +-
openNote/controllers/tagListController.js | 7 +-
.../directives/folderContentsDirective.js | 14 +-
package.json | 4 +-
test/e2e/test.js | 251 ++++++------------
test/e2e/usecases/folder.create.test.js | 20 ++
test/e2e/usecases/folder.delete.test.js | 46 ++++
test/e2e/usecases/folder.deleteTree.test.js | 40 +++
test/e2e/usecases/note.create.test.js | 29 ++
test/e2e/usecases/note.delete.test.js | 28 ++
test/e2e/usecases/note.edit.test.js | 36 +++
test/karma.conf.js | 30 ---
test/unit/folder.js | 62 -----
37 files changed, 466 insertions(+), 452 deletions(-)
create mode 100644 Changelog.md
create mode 100644 docs/History.md
rename docs/{screenShots => images}/EditNote.png (100%)
rename docs/{screenShots => images}/OpenNote.png (100%)
rename docs/{screenShots => images}/OpenNoteHome.png (100%)
rename docs/{screenShots => images}/ViewNote.png (100%)
rename docs/{screenShots => images}/another view.png (100%)
rename docs/{screenShots => images}/dark1.png (100%)
rename docs/{screenShots => images}/dark2.png (100%)
rename docs/{screenShots => images}/fullScreen.png (100%)
rename docs/{screenShots => images}/plants.png (100%)
rename docs/{screenShots => images}/seedsEdit.png (100%)
rename docs/{screenShots => images}/seedsView.png (100%)
rename docs/{screenShots => images}/topLevel.png (100%)
delete mode 100644 docs/screenShots/login.png
create mode 100644 test/e2e/usecases/folder.create.test.js
create mode 100644 test/e2e/usecases/folder.delete.test.js
create mode 100644 test/e2e/usecases/folder.deleteTree.test.js
create mode 100644 test/e2e/usecases/note.create.test.js
create mode 100644 test/e2e/usecases/note.delete.test.js
create mode 100644 test/e2e/usecases/note.edit.test.js
delete mode 100644 test/karma.conf.js
delete mode 100644 test/unit/folder.js
diff --git a/Changelog.md b/Changelog.md
new file mode 100644
index 0000000..e69de29
diff --git a/Gruntfile.js b/Gruntfile.js
index c1a5a5d..75242a1 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -139,7 +139,6 @@ module.exports = function(grunt) {
//Plugin loading
grunt.loadNpmTasks("grunt-contrib-jshint");
grunt.loadNpmTasks("grunt-contrib-less");
- grunt.loadNpmTasks("grunt-contrib-watch");
grunt.loadNpmTasks("grunt-shell");
grunt.loadNpmTasks("grunt-manifest");
grunt.loadNpmTasks("grunt-contrib-compress");
@@ -159,6 +158,5 @@ module.exports = function(grunt) {
grunt.registerTask("testDeploy", ["shell:clean", "buildProd", "connect:server"]);
//testing
- grunt.registerTask("devmode", ["karma:unit", "watch"]);
grunt.registerTask("ci", "Build the app and runs tests on it", ["jshint:all", "buildProd", "connect:serverNoAlive", "shell:test" ]);
};
diff --git a/README.md b/README.md
index 185b0b4..9a77f45 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,8 @@ Documentation
- [How to install][Install]
- [How to upgrade][Upgrade]
- [How to build](https://github.com/FoxUSA/OpenNote/blob/master/docs/Build.md)
--[Themes][Themes]
+- [Themes][Themes]
+- [Project history][History]
License
-------
@@ -73,6 +74,7 @@ Credits
[responsive]: ./docs/screenShots/OpenNote.png
[Install]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Install.md
+[History]: https://github.com/FoxUSA/OpenNote/blob/master/docs/History.md
[Upgrade]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Upgrade.md
[Dependencies]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Dependencies.md
[Themes]: https://github.com/FoxUSA/OpenNote/blob/master/docs/Themes.md
diff --git a/docs/Build.md b/docs/Build.md
index 4f9ad37..cf2a84f 100644
--- a/docs/Build.md
+++ b/docs/Build.md
@@ -4,28 +4,36 @@
- Grunt `npm install -g grunt-cli`
## Build
-Clone this project
-`cd` into the project
-Run `npm install` to fetch and install dependencies
-Then run
-`grunt build`
-this will start a webpack dev server.
+Clone [this project](https://github.com/FoxUSA/OpenNote) an the [SharedServices Project](https://github.com/FoxUSA/OpenNoteService-PHP)
+
+My project folder structure is setup as follows
+```
+Some working folder
+├─ OpenNote
+├─ OpenNote-SharedServices
+├─ OpenNote-Docer
+└─ OpenNote-CLI
+```
+
-To test production bundles run `grunt testDeploy`
+`cd` into the OpenNote
+Run `npm install` to fetch and install dependencies
+Then run`grunt` this will start a webpack dev server and open your browser.
-//TODO new stuff and note in an ascii tree how the shared services are are expected to be neighbors of the cli and OpenNoteFolder
+To test production bundles run `grunt testDeploy`.
-//TODO grunt --help to get steps
+### Usefull commands
+You can see a full list of commands by running `grunt --help`.
-Super important
-grunt default or grunt
-grunt ci
-grunt deploy //TODO
+Below are the most important commands
+- `grunt default` or `grunt` to have webpack in development mode
+- `grunt ci` run linting and tests
+- `grunt deploy` Package up the project
To develop tests
```
-grunt dev # in terminal A
-npm run testChrome # in terminal B. Iterate on this terminal
+grunt # in terminal A
+npm run testSingle # in terminal B. Iterate on this terminal
```
diff --git a/docs/History.md b/docs/History.md
new file mode 100644
index 0000000..93b69c0
--- /dev/null
+++ b/docs/History.md
@@ -0,0 +1,14 @@
+# OpenNote History
+
+Back in 2013 OneNote was started. Back then Microsoft OneNote did not have a full featured web interface. I used that at the time and had many notebooks. I wanted a way of taking those notes with me on my phone. I had limited data and wanted an application that would sync all my notes, let me modify them, and sync them back. I tried a bunch of applications and there were none that fulfilled my offline and tree structure requirements.
+
+## Open note
+OpenNote has a text only design. No icons or symbols other than ascii non alphabetical characters. The application just so happened to end up this way. It has a very clean feel to it and does not distract you. I would like to keep this going forward
+### Generation Alpha
+The first version of OpenNote was a PHP fat application. Views were prepared by PHP and sent to the browser via a full load or AJAX.
+
+### Generation Beta
+Second major revision was the switch to the then booming Angular 1 framework and use HTML5 application manifest and CouchDB to provided offline access and syncing.
+
+### Current Generation
+The most recent efforts have been to add modern features. Tags, markdown, and a CLI.
diff --git a/docs/HowToUse.md b/docs/HowToUse.md
index ef4c4a1..0409429 100644
--- a/docs/HowToUse.md
+++ b/docs/HowToUse.md
@@ -1,34 +1,70 @@
-How to use
---------------
-OpenNote uses a touch to open scheme.
-If you want to open something just click it.
+# How to use
-## Login
-To login simple go to your instance on OpenNote. You will need to have javascript enabled
-Then simply click "Login"
+```
++---------+ +-------------------------+
+|OpenNote | | CouchDB |
+|(Web App)+<--------------PouchDB sync----------------------->+//Stores notes and folder|
++----+----+ +--------------+----------+
+ ^ ^
+ | |
+ | |PouchDB sync
+ |Pre-signed urls |
+ | |
+ v v
++----+-------------------------+ +----------------------------+----------+
+|Minio | | OpenNote-CLI |
+|//Stores blob data like images+<-S3 API (TEMP)-+//Allows use of other editors like Atom|
++------------------------------+ +---------------------------------------+
+```
-![][login]
+OpenNote, when utilized fulloy, is made up of several components
+
+Component | Purpose
+--------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+OpenNote | A PWA(Offline compatible) web application that allows you edit and access notes.
+CouchDB | Couch DB is a database that stores your notes. When this is setup, you do not need to worry if your phone gets lost. When fully replicated, your notes will be safely stored in CouchDB. CouchDB also allows multiple browsers to sync. So you can have your notes on all your devices.
+Minio | Minio is a blob storage server that implements the AWS S3 API. This allows you to upload your images and non text files for use with OpenNote/
+[OpenNote-CLI](https://github.com/FoxUSA/OpenNote-CLI) | OpenNote CLI syncs the database to disk. This allows you to use other editors like Atom to create and edit notes.
+
+## General
+
+OpenNote uses a touch to open scheme. If you want to open something just click it.
## Browsing
-Now that you are logged in, you can browse around. At first you won't have any folders or notes. So, create some!
-Once you have some stuff simply click on a folder(Always Green) or browse a tree view on the left to crawl into you notes.
-![][topLevel]
-Eventually you'll find a note(Always blue) that you want to open. Simply click it or touch it.
+Now that you are logged in, you can browse around. At first you won't have any folders or notes. So, create some! Once you have some stuff simply click on a folder(Always Green) or browse a tree view on the left to crawl into you notes.
+
+![][toplevel] Eventually you'll find a note(Always blue) that you want to open. Simply click it or touch it.
![][plants]
## Notes
+
Once you click on a note you'll will be presented with it in a read only view.
-![][seedsView]
-If you want to edit a note, click on the "Edit" button in the top bar
+![][seedsview] If you want to edit a note, click on the "Edit" button in the top bar
+
+![][seedsedit] This will bring you to the editor. Once you are all done editing, click "Save" to store the note.
+
+## Syncing
+By default OpenNote is storing info in your browser. Until you setup syncing, you are at risk of lousing your notes. To setup syncing. From the home page click `Settings`, then click database. On the right hand side of the panel you will see a Replication url field. This expect a url to your couchDB database in the form of `$protocol://$user:$password@$serverurl:$port/$database`.
+
+For example if your server information is as follows:
+
+Item | Value
+--- | ---
+protocol | http
+user | admin
+password | password
+serverurl | 127.0.0.1
+port | 6984
+database | opennote
+
+then your replication url would be `http://admin:password@127.0.0.1:6984/opennote`
-![][seedsEdit]
-This will bring you to the CKEditor. Once you are all done editing, click "Save" to store the note.
+You will see an alert if replication is working.
-[login]: https://raw.github.com/FoxUSA/OpenNote/master/Doc/screenShots/login.png
-[topLevel]: https://raw.github.com/FoxUSA/OpenNote/master/Doc/screenShots/topLevel.png
-[plants]: https://raw.github.com/FoxUSA/OpenNote/master/Doc/screenShots/plants.png
-[seedsView]: https://raw.github.com/FoxUSA/OpenNote/master/Doc/screenShots/seedsView.png
-[seedsEdit]: https://raw.github.com/FoxUSA/OpenNote/master/Doc/screenShots/seedsEdit.png
+[plants]: ./images/plants.png
+[seedsedit]: ./images/seedsEdit.png
+[seedsview]: ./images/seedsView.png
+[toplevel]: ./images/topLevel.png
diff --git a/docs/Install.md b/docs/Install.md
index 8836ee9..4d8d1bf 100644
--- a/docs/Install.md
+++ b/docs/Install.md
@@ -1,116 +1,38 @@
# How To Install
-[Download most resent release from here.][Download]
-
-# HTML5 based new super fancy version
-## Web app
-Just extract in a HTML5 compatible webserver public directory. Or just use the [GitHub hosted version](https://foxusa.github.io/OpenNote/OpenNote/).
-
-## CouchDB Install
-If you want sync your notes with a server, you will need to install CouchDB.
-[CouchDB Download page](http://couchdb.apache.org/)
-
-You will need to enable CORS in CouchDB
-The easiest way to do this is to use `add-cors-to-couchdb`
-```shell
-npm install -g add-cors-to-couchdb
-add-cors-to-couchdb
+Put the following text in a `docker-compose.yml`. Make sure to set all the items marked `#TODO`. Also make sure this file is in a secure place. Your credentials are stored in it.
```
+version: "2"
+services:
+ opennote:
+ image: foxusa/opennote
+ ports:
+ - "8080:80"
+ couchdb:
+ image: couchdb
+ ports:
+ - "5984:5984"
+ - "6984:6984"
+ environment:
+ COUCHDB_USER: user #TODO set this
+ COUCHDB_PASSWORD: password #TODO set this
+
+ minio:
+ image: minio/minio
+ volumes:
+ - "/tmp/data:/data" #TODO set this
+ ports:
+ - "9000:9000"
+ environment:
+ MINIO_ACCESS_KEY: tests #TODO set this
+ MINIO_SECRET_KEY: testssdfasdf #TODO set this
+ command: server /data
-Run the commands below substituting `http://127.0.0.1:5984/` with the url of your server
-```shell
-# Create DB
-curl -X PUT http://127.0.0.1:5984/opennote
-
-# Set permissions on opennote database
-curl -X PUT http://localhost:5984/opennote/_security \
- -u admin:password \
- -H "Content-Type: application/json" \
- -d '{"admins": { "names": ["admin"], "roles": [] }, "members": { "names": ["admin"], "roles": [] } }'
-
-# SSL
-curl -X PUT http://localhost:5984/_config/daemons/httpsd \
- -u admin:password \
- -H "Content-Type: application/json" \
- -d '"{couch_httpd, start_link, [https]}"'
-
-mkdir /etc/couchdb/cert
-openssl genrsa > /etc/couchdb/cert/privkey.pem
-openssl req -new -x509 -key /etc/couchdb/cert/privkey.pem -out /etc/couchdb/cert/mycert.pem -days 1095
-
-curl -X PUT http://127.0.0.1:5984/_config/ssl/cert_file \
- -u admin:password \
- -H "Content-Type: application/json" \
- -d '"/etc/couchdb/cert/mycert.pem"'
-
-curl -X PUT http://127.0.0.1:5984/_config/ssl/key_file \
- -u admin:password \
- -H "Content-Type: application/json" \
- -d '"/etc/couchdb/cert/privkey.pem"'
-
-# Default SSL port 6984
-```
-
-Now in `/OpenNote/#/settings/database/` put the following connection string in the `Replication url` field `https://admin:password@127.0.0.1:6984/opennote`
-
-### Automatic(Wizard Based Install)
-To run the installer open
-`/Service/install.php`
-
-Make sure you delete `install.php` and `Config.template`.
-
-#### Security Note
-Be default we put the sqlite databse in the web folder. This is not a good idea. We solved this by putting in a htaccess file to not allow the database to be downloaded.
-
-Still, you should move this file out of the webserver directory and change the location in `Config.php`
-
-### Using Docker(Full Stack)
-Make sure docker in running in daemon mode with restart previously running containers on
-`docker -d -r` or you could louse your notes if you do not know what your doing
-
-Pull the current docker image
-`docker pull foxusa/opennote`
-
-and run it on port 80
-`sudo docker run -d -p 80:80 -p 443:443 foxusa/opennote`
-
-or if port 80 is in use
-`sudo docker run -d -p 8080:80 -p 8443:443 foxusa/opennote`
-
-### Manual
-####MYSql
-- Create a MYSQL database named "OpenNote"
-- Download and extract OpenNote into a folder on your php web-server called "OpenNote"
-- Open up the `Service/model/sql` folder and run `notebook.sql` in your OpenNote database
-- Change the database connection settings inside of `Service/Config.php` to match your db settings.
-These are stored in the following lines of code in `/OpenNote/Config.php`:
-```php
- $dbUserName = "notebook";
- $dbPassword = "password";
- $dbServer = "127.0.0.1";
- $dbName = "notebook";
```
+## Start
+`docker-compose up -d` to start
-- Now the site install is complete. You can now open the site by going to your webserver url +/OpenNote
-####SQLite
-- Download and extract OpenNote into a folder on your php web-server called "OpenNote"
-- Create a SQLite database file and execute the SQL DDL from `Service/model/sql` and run `notebook.sqlite.sql`.
-- Change the database connection settings inside of `Service/Config.php` to match your db settings.
-- These are stored in the following lines of code in `/OpenNote/Config.php`:
-- Also make sure you have php5-sqlite driver installed and have group write access to SQLite database file, or you cannot register or login and you can't see any useful error messages.
-
-Uncomment the following lines in the dbConfig function:
-
-`return self::sqliteConfig()`
-
-Comment the following lines in the dbConfig function:
-
-`//return self::mysqlConfig();`
-
-```php
- $dbName = "..//OpenNote.sqlite";
-```
-- Now the site install is complete. You can now open the site by going to your webserver url +/OpenNote
-[Download]: https://github.com/FoxUSA/OpenNote/releases
+## Uninstall
+If you ever want to shutdown OpenNote run `docker-compose down` in the same folder as `docker-compose.yml`. This will shut down the containers associated with OpenNote.
diff --git a/docs/Upgrade.md b/docs/Upgrade.md
index bcf82ac..a04bcf9 100644
--- a/docs/Upgrade.md
+++ b/docs/Upgrade.md
@@ -1,10 +1,27 @@
# How to upgrade
-//TODO
+## Upgrading from 17.xx to 18.xx
+There are major changes in this release. Make sure your data is backed up.
+Launch new instance of OpenNote via the [install instructions](./Install.md). Then simply change your replication url to the new replication url and your notes will sync across.
-If you have an issue with the html use https://domchristie.github.io/turndown/ to convert
+In 18.xx the editor is mark down. If you have an issue with the HTML use https://domchristie.github.io/turndown/ to convert the text into markdown.
-##Upgrading from 14.xx(Locomotive) to 15.07.01
+
+The `upgrade` command included in [OpenNote-CLI](https://github.com/FoxUSA/OpenNote-CLI) version 18.03 will allow you to migrate all your files to the Minio instance launched by compose. It will also change all the links and pre-sign them for you.
+
+Sample command
+```
+node index.js upgrade --jsonPath ../uploads.json \
+ --legacyServiceUrl https://example \
+ --s3Url http://127.0.0.1:9000 \
+ --bucket opennote \
+ --accessKey tests \
+ --secretKey testssdfasdf
+```
+
+Only thing you will need is to dump the uploads table from the mysql legacy service and provide the path to it via the `--jsonPath` option.
+
+## Upgrading from 14.xx(Locomotive) to 15.07.01
All you need to do is merge your existing deployment with the release folder while keeping your config files (`openNote\openNote.config.js` and `\Service\Config.php`).
Make sure to backup your old folder and database.
@@ -12,7 +29,7 @@ There have been major changes in this release.
You will need to follow the CouchDB instructions in the Install documentation.
-##Docker(14.07.01 to 14.07.02)
+## Docker(14.07.01 to 14.07.02)
Find the container id of your running container by doing a `docker ps` or `docker ps -l` if the OpenNote conatiner was the last one you stopped.
You should see output like this
```
@@ -61,16 +78,16 @@ or if port 80 is in use
All done
-##Manual installs
+## Manual installs
-##Upgrading from 14.07(Locomotive) to 14.07.01(Steam Locomotive) or 14.07.01(Steam Locomotive) to 14.07.02 (Diesel Locomotive).
+## Upgrading from 14.07(Locomotive) to 14.07.01(Steam Locomotive) or 14.07.01(Steam Locomotive) to 14.07.02 (Diesel Locomotive).
All you need to do is merge your existing deployment with the release folder while keeping your config files (`openNote\openNote.config.js` and `\Service\Config.php`).
-###MySQL(Recomended)
+### MySQL(Recomended)
- Make sure you make a copy of you database and the OpenNote directory
- Run `Service/model/sql/updateScripts/` scripts to roll the database up to current specs.
- You will copy need to copy the upload directory contents into the new upload direcory in `Service/upload`.
- You will also need to put int you database information in the new config `Service/Config.php`
-###SQLite
+### SQLite
Same as the MySQL. You may need to slightly modify the sql upload script to be compatible with SQLite. I have included as much as I can in scripts with the postfix of .sqlite.sql. SQLite does not fully support the ALTER statement.
diff --git a/docs/screenShots/EditNote.png b/docs/images/EditNote.png
similarity index 100%
rename from docs/screenShots/EditNote.png
rename to docs/images/EditNote.png
diff --git a/docs/screenShots/OpenNote.png b/docs/images/OpenNote.png
similarity index 100%
rename from docs/screenShots/OpenNote.png
rename to docs/images/OpenNote.png
diff --git a/docs/screenShots/OpenNoteHome.png b/docs/images/OpenNoteHome.png
similarity index 100%
rename from docs/screenShots/OpenNoteHome.png
rename to docs/images/OpenNoteHome.png
diff --git a/docs/screenShots/ViewNote.png b/docs/images/ViewNote.png
similarity index 100%
rename from docs/screenShots/ViewNote.png
rename to docs/images/ViewNote.png
diff --git a/docs/screenShots/another view.png b/docs/images/another view.png
similarity index 100%
rename from docs/screenShots/another view.png
rename to docs/images/another view.png
diff --git a/docs/screenShots/dark1.png b/docs/images/dark1.png
similarity index 100%
rename from docs/screenShots/dark1.png
rename to docs/images/dark1.png
diff --git a/docs/screenShots/dark2.png b/docs/images/dark2.png
similarity index 100%
rename from docs/screenShots/dark2.png
rename to docs/images/dark2.png
diff --git a/docs/screenShots/fullScreen.png b/docs/images/fullScreen.png
similarity index 100%
rename from docs/screenShots/fullScreen.png
rename to docs/images/fullScreen.png
diff --git a/docs/screenShots/plants.png b/docs/images/plants.png
similarity index 100%
rename from docs/screenShots/plants.png
rename to docs/images/plants.png
diff --git a/docs/screenShots/seedsEdit.png b/docs/images/seedsEdit.png
similarity index 100%
rename from docs/screenShots/seedsEdit.png
rename to docs/images/seedsEdit.png
diff --git a/docs/screenShots/seedsView.png b/docs/images/seedsView.png
similarity index 100%
rename from docs/screenShots/seedsView.png
rename to docs/images/seedsView.png
diff --git a/docs/screenShots/topLevel.png b/docs/images/topLevel.png
similarity index 100%
rename from docs/screenShots/topLevel.png
rename to docs/images/topLevel.png
diff --git a/docs/screenShots/login.png b/docs/screenShots/login.png
deleted file mode 100644
index 0a3e90649cb1920c68d7e7b81fc9b3ed7a19aad0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 11345
zcmd6tWl&wgv)~g5t`~O??(TZA;O=%I!QDMb;Nluwg1cOTyF0<%U4px_mJNX<=b$K!bR$yR>OgH6(bUGn8Bv4iW$?tI
z*a&J9I_0HGXl;f_w%EcH0Km^G&AHeESLyRb>)#jm2LtEVxjfa5%YH;7!w`7Nnp|;W
zrBWAs%vQs02J(WNYb{8K2fF^w=
zBq|u*c27W7#yPU4pC@v1Cey}sa$H(15eI2{WI;A@a=jE6wZDL7`AU%2Puc5K8O4-P
znm3||s8APL95hTo+~3(O(Oi*$e8~hhcUMH0By93O35fAkT7UX>BxQM3lsf9>r5={G
zjK2z%QZF_=kAqh|ijVwbfIu^?6L_je&T{WP{NADi<-Mh<3vuljm6Tc!K8!ir?tK9_
zx$f67l++yDp9TqmG$OeOp3ugjF
zodC;8?ceW))xTN**d1`Txc$SqSjIasUz*7|X+^zefDzw+DZBi=`}D1~6*k*0x~DvV
zJbXXunr5vBNv=WmOq@&Hu34uYlOOU02;706g&yk5pRZ=;Gb%@Dk4w29rY<+QhjVdq
zS%`F}c{bV9rFyodTGE|O+M($PYpjT*;`;oy?9qE>M)j_w10{qqF3Z(NnL$Zoob8h-
zSN*E;2Zl`_Tba&M!y1zZbbiD`~T
z3GD0h9|Q>XRo|~ZQe(r8Ql(o5HcR2G@CIaoP0V%i=U_L`nAoFyzTIM^dqd&I@n>RW
z$`~#~_;dT9>L=K(IFlZ9Y|WuXrE7j7*#`{odcV*%^KnWoE!tZx=&J8H@P8Kw@1pTS
zOqf%RBx6QrnC_2zsvvhjYNyMnL;0+c0!eMH6&@cdshhLF57MY@H-c1?y)FQM;Ud5?J!
z5~LFrdN#<6B73MZqyq>ryy-QBEp8{BYn+EE`#b5<)*fGP3^VG|^!jjYud?vCuJGlX
z1`H?dZc-I~cy+}rptm5Ok=9IFYKv{pB2eNmb|ZVAnNr3cgNeTjjSOs`Ei+MsUC+>$
zpu3aBtFy-*DB1K`SCuD0Wzvmm0ACGW@W;pKJLo3(gA-Y>wl!s*^#7n5t|Wh--;R$x
z>RfP*(!x7Uza`p3MPr$U3kMhHC|3>biL$qA1Oqw=UtrPPRPf?l`-?-px^s8;rW#~~
z$&yZ*8d2o-2bK{i*@f6U3VR@Iq7cb6q8ZClo%-C%itK5WA5?C2)a{L~H;
zf#WUVUZE?0j{!xzIBaYZ>G*45$TI!(x>SVU?>*yKjcJ9;BaPyjz2kUsgDDC@K5v+I
zH`>U-o%Pu-qnWMnva{SI`Z2X=d!WZFLSn>s8`J&!-mA|>-k?1_vns5(OO+}1*@tn=
zi7LdM^AXkI?udnVo^`%9&YuiH%MMYIbAT`>_Ey@56)qQoq*lu`=v`+UFK2{rF-IXE$|eOR
z&ACB+A$gz*#&pW?T5>Q6524)FoXPZlA)lsj*OTLvcVvVVSW;?wyEoKvVdJ2e9$yc_
zCpoHR{Yd0^wvEY_JVJBEG9XBp4gJt^(WmwEZ(QjK50W!unQXp%4MCZ{j)K!8bZaep
zlYCAUN?3oR=SbZ7E6o<~u=A`;He}Q>ai?f&tl$5VPWK)`!iP^VdbT&>+=}6S
zPT1J^NZ6kD7jo7YRZXUV*)>kMaGZ}Pd90v*r`D%_Pm6STRyCBNx?Ct&?h06HKIO__5N4QR2lO9-QnW6GW&+bFz84~0@bxjuw)Qbj9vFzVt*YqO+Fh`EP+4g6ffkY=l_V#ilU3VoeDhZ
z7JQlTulPnk*6aQ>)mOtv6eD=J;h-Jl=3%BTA{pR~P$H7F&Y7Qo_<-Ked(P+Oa;WJT
za7tx+W|?BEqd@UBo=YR^7c(7Ee;T*N~z6UEI(@^O(ryc}QWk0F*)FhatU!X#fy_%l|6GngrW-!Oah*SdSEEje{-xXTxtQI=U4qA4z@p)A
zxSbeCM>Ww8DzuLspdz7c4K;N0cUDdE#rf6~vJ(upJJ^*EO>!d!ut2Qmr@H(v
z+^ZSD`n~{U(FPfF>p3U~cc31`#^o}RlCp|E{>POLXp#)SYUzi7{0DU-4HoNY0S*unI!>&
z7bcq0&MaF+#e0pM>3d$w7!Yk?zNA0!4rc^=aCp$6=HUR!iP5d~Gt^HZAoOW9vQesz
zgUy7UZ?5D{a4Mdy5Zd4)wu4|ot(0{{R)e`?B}PI4QC-^4@#SSXMh(@!A3lXk1|g*m
z?xYw{P!tv8%1l5@gyIYqV@ajf2A^gCcwGhi=-)tVL|8s7HxxXI&DaZy1Pdn-9Nh;sgLgB`p6)wa7oa
zEYw6eT2${A6BfaI>H>*xCW}5BUv#K3
zT1&U)u{os#CHNn>ZCZz>$6WKC-^}CWS#YjW06r(7K=F6ijL7o~zx6hSRb9hvu|CAf
zrnK>roSn#Y(HX2hBQh&d@jOk|DDaHL6UkcWK36&iYjY3BMz^U=my@nWXX2=(ej;ma
zb2cpi}lW%siT|cc*M73>C35JOg3^}|qk`&(}A!@d{n3n^ppOp~E?6mX<^D!-5
zo>ohmS3ADS_nwsLD-8AdI;QaXQ!?5+l!?WJO|$iG0`OrL>Nbf(?OF?!mcKW2sIPVP
z623g5RUh##PKpxFC|jXpCHEoTS2Rxx%@LrArHl&8}sJ*R90
zt!7=E_m<5e(Y~)If)$`Dt_w)d_
zFL3+b=Fm*u(=S2;k8O?T+bQh;jTO(}LL@GZU1tn-tAAGvVf8so+4(dG9dCgwCpZ_(P-n7P-sWlYTstebnBd`8WavvG
zauDKfrQZ8u&&yyvgHezwVkpsHLpL2bW3ZAFNxf^KLrjV#vuT^^?Qw8EXI5h-F@ua&
zw%FYR?AQ)IUSo~`fhYk-0l?D_{AQaYDJH(l`iJaU4>w;%iJs64`>Dws$H~pi4zY0E
zg1UI3t{TabL0t%v-X*jHq}_m6mj)bLVf|+#kB1jE=EhnhOLAoiX*z
zNSjj%&mKuV<)Cecb)jnA%_wHlm~@d+GRA~TK(X!&4H!>~QxI2S%8r{3?`TumB)=+-
zb}(!^u4JJ{48;hAx-0(`lN55#HfD7(ca}II;_(PtCZK$a(
zst)Z-#kI8P*EC-rO18!KV8a#pOudUZ_J;SW>_*4|YQnpJ9paI%p^%ct`SCzxABE8j
zk31K)`1TV9G*fpdOYc92l81Te&^Y%3QR2GM6TDoDgY>4XVgkzc-l1xJeMAN>(p~J_
z5z%5(Snr`Ylm3yio_vKd=LOL=_*m
z8)Lv1r?;q_FsJam^73iC>frtP)BYguy-T7I)s>C*_cD=3>o6aGGKu{ku{b_%T(;>-
zySyLT8@I{9>|f!Pr_K++AAFZXN4g17Ly}Zu{)iWF*eJwqX*P_9IRf#4EO$12?%v~D
zK9#72BAC;Tt!HbS2RxjJ1{tqku{Z9`&o)Gid?L0xlI*lzmysf~!g;cY;r+KIxCi|^
zS|HZ*sK*K;{n&kevV@|>#^4M4hIM72D}pil`-D^^!NsR-0ZruJVH&g6NSe(%TPr39
z{l5aYu*v^0xpMOVc2GBKSGm8r`B6zpspoBVWu-R{h%$1r+@PYbA4$k#hxck^;L#44
zMd5N)D2`G`pwg|tF*Gy;MS;!ctBiQ`gY~2K2~}3r4d#QFO8e7o2zcxwsTI<|Tomka
z)~q{MJwN|R8_YT?6pvX6##(R^XyRiol4avwK5TvwTz_9WM~&1o-?&I*R#sR0FaSEv
zHxFG`QN?!FGW)F12r5k7?}YNpe^4Zl3;aJCTK>0?)&0WhL%WDwg2{3n4#3Y0Vbb>7)8#}E
zdEo4i_vtT2W{EuA3F8Kx9BBweM|`CyC9$a~ab&K9VjAuFbLL!4kq0kg(D9>HZ^|@k
zWui1pfW&SY**^>wC}X-UH=^MIlYKV1>1s(ReceFLgX?X%GMQJ$lQi&&d~1S^Q=!e$
z<8UDhpglcbZJ|C%n|@aDYEWf;|84y9GsiYHD$a^j&UNEl9-#S?*H$WtEo*LD|M^l#
zv;ueKj($Saj~Nd5r&rj@;gR;W1ra)|Ok^c(hVIm!MGuA(e&Hb&F*nGCib#ck-+T?i
zYlAeyH45ae!65khW&h%cg{NA`C}ZH%?qH{=Z^b+C!s2P9U_MIowUK`g>!;bR^y0zz
z{zedK73k#wl)uiJ<=qdEJUv+K$NcSY-WC)7HxZ>?dPZZDH>Ha5RGYJr@|#r+>)Eo8
z&2Vz1bjbEb*gjl{Ny?=u51CC(jxNj7gideyNOy{hP&)%UF56Fq{54
zq{vU}0n3x9s7F>QM)-iHpoHZOvGTk-7EiUc1j%wmu1d
z_&xQD^yf$yhegTf`ahOqUtib`T|r}X9p6C1F*lO#j*E00`~%q1eZUFV$x2d_;gUsm}}TJZR|(H0><{S;v~qQRNp*)%=6R
zm5-{qJo@OXZ0&Mne)p!*SANtX*2e8K>-6GNn}nbrgR^!ZkUoD}($f{v(&wxmXeWif
zx~Xoi>Yt>0H?<@tYJmnuwBix!3nB}ZbZ$|W5fM}Cx3j6l=OfkMw3oVxbuZ$3Xq?E}
ze!#q-Ev97Jda>{TKRuYt-=l_HZ677F9v>C*#xQKkJi1a5R$|)Wt(Otk3lW4AouPE&
z^(fKe#GHYlR|$Hw=hnNQiWCwmYr6<~_Rj~jFTgo`gXh}8xlR3C13Bsl?ZZtl70Ebd
zaOw4v0FfArudjFN{_m44)|}{L!wQ2yszeoi^j*^TR1_(Wq*mc&(p^;Gn2^ChUS6So
zzS1D*Y7$f{?xFv+sJ}6nhx>weg&qc-k9=080r0vWqtY~@Zkzg;n1-7=+
z#~-2#v$VICGB0*e6ZD-r);*Y<7Pg9xOk{9t#{I>C!bObqZA3GNsI>VW(e506!3mm9S;
zBKW%Z1@v%Kmp+I-BC?;#EOUy7cTAIHdm*vDhuslM$NM5ksQ$a)`b4ZS
zviYBu_YBPw(89(ykB+RqMpdS9$5Z@Jb{X+u376yPohJwj&Fl!Q+_TsD>E1wU-z;6H
zY^oG|*NmARc{||IF^-TX!|kscGXVzk1KGfX?MHdD0A
ziBOi@P`Zss5eB*ri5He*-?hk0C`sKtAfxbgs+Js6eQHA1WcPe9*`~+ndE9I3qOhi$Erf%LIikBdL%x
z3~5#aF@H@*N2Hbkn;L^k=Ejdu&@oTW$i;jLpN2no01;p?H^oQzFL|6w@y#J788Gp
zYH80cc03>(@!O(QtnU`?qe^>Q$*Oys+pN=Qa)5Q!u{tF#U
zC3)rOK?JLyCi1Ox;|m4(ryZqln0Q?mW^+Tc<@hsfnLkPEl8T{U<0
zU1q(tklzzhHZ^uLY|Wu*lXo1|LqM{oKmL>6+qq5L=h_6eP#-H`O3BV5c&&`oilIEo
zz2e|6v%5zwc16~EcUR+`8C%!f14sHZ^(Xg-mo&YT<%;D6ca1n@eJ3I?p3G6L=4yAf
zsVajF{QQ=oeZ$n#ADMMy-3RM)o8-OwvwYMP!_(uie)529K|1?9HZQByQ4UEj%N0la
zV$xfo#g9sKdkR;^+&Lk+o~*BvLp?rxeX2RuN*mW5p}HAEvV`VthO9y7Atmw!XPzJk&pp2|~QIy?vY-;N*+4
zH2FI+H+}Ci!~X&)Khgg&VNsyGMz#sWh8B0Yzd(0k;$Wx{AiK*$-Molcr2Jn+~^Hk
z)?)pp3GvnMimGJJ9#~?WR4IsqJN<@7?i7cV@@g+F)rGY+oo%0D?)qZD5dtX9#*-l^
zHAe9Y>nqdIy3qC%+D`Z)P{w6@@&hh10;v8~_`t5&@hgOcgFCx#f1py#9FdyGeq#lK
zq=4HWF+Ts{j+-{Pf5TpUV6TZjxcXW}jYJs(nKKbrw^H$+zQ)9_n(;*aA
zDU!N}STlek(eh&}=xMaAuQ=d6l9_cj^w{bWIM?!jBHr1FfhZ;z<>gn4-uAY5gY@I7{$49%T`$w`_-U=lS&Hu>pxKOu-@s$FjGb
zl{8m}HGSf`%soH6HM{xZwKtmRp^1jz~xPk
z&l?X?>J41^&W-)hLu2VYj!(C?5Gf$_r6+kdX=U#_SvW0?widT7{6f~`xE-QRNrBmB
zXv7o{{2z)z{7x}O6^f=yE^mf^EcZ&l3yz(q(}
zGxdyADa^mDDhf>0r_cX)8B~gWCLK+@&AxC`SG}d9EKqDg{5?kHOG#lbVRXDSbKi}D
zQHMe35bBYYY%ta|((r0wYo^P6KeG7#Q8llR=Nrf7aHDyObY3r3=WNPN@RFofam=w9IQI93&dL~z^&?Nvt@qHt*9
ziFCo%9PQnKTmFtLdGEOoGDU1OF*kQglM%j^O&sERq6_VnYTMpAeo#MaBsw6D-%2=k
zaJ^UU5*@$+83&}oFoxlrbV*?DzEwV_W5wiczN8bzugQp%tW5MwEyRtEa
z7_!t;(^u$3CZ&K2>3y*AhJF&r+o@P(=2s%+okcj-*XR7VfBM-x>yZ$(k`aGOXo^fZ
zObyjEN3}XX(F)a+1g%n^j#EyTPGDTN*ri<-Sj=`nxsUhYTNB7iO;Pnsjo8C|RWPv=
z;bNY~R-SHyybLM-dJ&<_ovO{HH^e0plF3=J;W@n@eV!nmBBO=P?a8-jW@@?~q%bhi
z3G+mP9n2`nl(@No_saZ*^tX@F`>AS`RbvPhuBWFTJYv$9)>fY#80kcuYjR&!DXhZR
zE-}$LzQftuuZ40yl8w-J6bS0+=B-ldEhCtVeNa
z74C83o_IGCtwk>Lkfak+O#Bpft886je{Y|b6>sbgxe+22HY{vv$2EaOV{uAO#~_~w
z5V-gko}tY-i}FHh?OS*bS;b|;rM_iHzPLscF`tEOA2V`Gyf>=O6ol5+4^fPC_b|L)r!5)V=o>cHat5RW<4<(%8mLZFR}Z)G8A7V};8+2q^xNg;xxUX&%x_F!
zNe;ajz`s-Fo`7B>L|D(kc<*1s>y4&?v2{J_+9L{|`oG2NAEt8#29B*KRt&u;=hv)G
zu+32jB+^}HP9`_;
zuxt&WljZwDP=y0qS;E4}2Ve`+K0f&FDi#jEsB=s3VPuWwg$A>8VQRh^R_erOx!W=Y
zLHPR7|_1Kht0&9}B$qt%LxLDg+&4*Sy$u!ESc3OSzMfKQL)JX9it!CoS%hKO5XQq|R&e-?j
z?4Bz}r0R|!OJnbR|3$QC6#-pUVxg%Wv7g^9NI?ztAb=$iTM;9s5&DvJr-NccWS`^G
zSh4k+AcQsD-H_s}U+H^EKQ1h$g@1nZ09gpcL1-nZ$c(_K)EG&&@jhFYZeJ
eTMYT$f3c8uT)^g!{CgVk2U$r)V5PWm;Qs=0AbX1d
diff --git a/index.html b/index.html
index a425934..ad776dc 100644
--- a/index.html
+++ b/index.html
@@ -1,6 +1,5 @@
-
-
+
diff --git a/openNote/controllers/folderController.js b/openNote/controllers/folderController.js
index 71dd085..d8a6685 100644
--- a/openNote/controllers/folderController.js
+++ b/openNote/controllers/folderController.js
@@ -94,7 +94,7 @@ openNote.controller("folderController", ["$scope",
$scope.loadCurrentFolder = function() {
//Load the folder
if (!$routeParams.id) {
- $scope.currentFolder = { //FIXME config special root
+ $scope.currentFolder = { //FIXME multiple DBs
_id: null,
name: "Home"
};
@@ -143,6 +143,7 @@ openNote.controller("folderController", ["$scope",
$scope.$apply();
}).catch(function(error) {
throw error;
+ console.error(error);
//FIXME conflict resolution
});
},
@@ -190,14 +191,19 @@ openNote.controller("folderController", ["$scope",
var createFolder = function(folder) {
folder.type = "folder";
storageService.post(folder).then(function(response) {
- if (!response.ok)
- throw "//FIXME";
+ if (!response.ok){
+ alertify.error("There was an error creating the folder");
+ console.error(response);
+ throw response;
+ }
$rootScope.$emit("reloadListView", {});
$location.url("/folder/" + response.id);
$scope.$apply();
}).catch(function(error) {
- console.log(error); //FIXME
+ alertify.error("There was an error creating the folder");
+ console.error(error);
+ throw error;
});
};
diff --git a/openNote/controllers/noteController.js b/openNote/controllers/noteController.js
index 46723ec..d2d2448 100644
--- a/openNote/controllers/noteController.js
+++ b/openNote/controllers/noteController.js
@@ -134,8 +134,12 @@ openNote.controller("noteController", ["$scope",
* Callback after successful save to reload note
*/
var saveCallback = function(response) {
- if (!response.ok)
- throw "//FIXME"; //FIXME
+ if (!response.ok){
+ alertify.error("There was an error saving the note");
+ console.error(response);
+ throw response;
+ }
+
detachWindowUnload();
//Tags
diff --git a/openNote/controllers/searchController.js b/openNote/controllers/searchController.js
index cf829b1..45e528f 100644
--- a/openNote/controllers/searchController.js
+++ b/openNote/controllers/searchController.js
@@ -19,25 +19,27 @@ openNote.controller("searchController", ["$scope",
$scope.searchString = $routeParams.id; //Default
+ // Handle search button
$scope.search = function() {
- $location.url("/search/" + $scope.searchString);
+ if(!$scope.searchString || !$scope.searchString.length)
+ return alertify.error("A query must be specified");
+ $location.url("/search/" + encodeURIComponent($scope.searchString));
};
+ //Load results from URI parameter
$scope.loadResults = function() {
- if (!$routeParams.id)
- return;
-
+ var searchRegex = new RegExp($routeParams.id,"i");
alertify.log("Search started");
$scope.results = [];
storageService.allDocs().then(function(result) {
result.rows.filter(storageService.folderFilter).forEach(function(folder) { // search folders
- if (folder.doc.name.match($routeParams.id)) //search folder name
+ if (folder.doc.name.match(searchRegex)) //search folder name
return $scope.results.push(folder);
});
result.rows.filter(storageService.noteFilter).forEach(function(note) { //Search notes
- if (note.doc.title.match($routeParams.id) || note.doc.note.match($routeParams.id)) //search note name and title
+ if (note.doc.title.match(searchRegex) || note.doc.note.match($routeParams.id)) //search note name and title
return $scope.results.push(note);
});
$scope.$apply();
@@ -46,7 +48,8 @@ openNote.controller("searchController", ["$scope",
};
- //Load results
- $timeout($scope.loadResults);
+ //Load results if set
+ if ($routeParams.id)
+ $timeout($scope.loadResults);
}
]);
diff --git a/openNote/controllers/tagListController.js b/openNote/controllers/tagListController.js
index 2203a00..0ca606d 100644
--- a/openNote/controllers/tagListController.js
+++ b/openNote/controllers/tagListController.js
@@ -27,8 +27,11 @@ openNote.controller("tagListController", [
$scope.tags.push(tag);
$scope.$apply();
- }).catch(function() {
- //TODO
+ }).catch(function(error) {
+ if(error.status ==404)
+ return;//Ignore
+ alertify.error("There was an error.");
+ console.error(error);
});
};
diff --git a/openNote/directives/folderContentsDirective.js b/openNote/directives/folderContentsDirective.js
index 1d514a8..8545890 100644
--- a/openNote/directives/folderContentsDirective.js
+++ b/openNote/directives/folderContentsDirective.js
@@ -17,13 +17,11 @@ openNote.directive("folderContentsDirective", [
* fade out all folders
*/
$scope.fadeOut = function(callback) {
- $(".note").fadeTo(config.fadeSpeedShort(), 0, function() {
- $scope.$apply(function() {
- callback();
- });
- });
+ var selector = $(".note, .folder");
+ if(!selector.length)//If its a blank folder just run the callback
+ return callback();
- $(".folder").fadeTo(config.fadeSpeedShort(), 0, function() {
+ selector.fadeTo(config.fadeSpeedShort(), 0, function() {
$scope.$apply(function() {
callback();
});
@@ -34,7 +32,7 @@ openNote.directive("folderContentsDirective", [
* Load a folder
* @param folder- the folder to load
*/
- $scope.loadFolder = function(folder) { //TODO DRY
+ $scope.loadFolder = function(folder) {
$scope.fadeOut(function() {
$location.url("/folder/" + folder.doc._id);
});
@@ -44,7 +42,7 @@ openNote.directive("folderContentsDirective", [
* Load a note
* @param note - load a note
*/
- $scope.loadNote = function(note) { //TODO DRY
+ $scope.loadNote = function(note) {
$scope.fadeOut(function() {
$location.url("/note/" + note.id);
});
diff --git a/package.json b/package.json
index b4dcf48..40f8718 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,6 @@
"grunt-contrib-connect": "^1.0.2",
"grunt-contrib-jshint": "^1.0.0",
"grunt-contrib-less": "^0.11.1",
- "grunt-contrib-watch": "^0.6.1",
"grunt-manifest": "^0.4.0",
"grunt-shell": "^0.7.0",
"script-loader": "^0.7.2",
@@ -40,7 +39,8 @@
"webpack-dev-server": "^2.9.5"
},
"scripts": {
- "test": "testcafe chrome ./test/e2e/test.js -e -c 3",
+ "test": "testcafe chrome ./test/e2e/test.js --skip-js-errors -c 3",
+ "testSingle": "testcafe chrome ./test/e2e/test.js --skip-js-errors",
"dev": "webpack-dev-server --open --hot --config ./build/webpack.dev.config.js",
"build": "webpack --progress --hide-modules --config ./build/webpack.prod.config.js"
}
diff --git a/test/e2e/test.js b/test/e2e/test.js
index faaec66..9701662 100644
--- a/test/e2e/test.js
+++ b/test/e2e/test.js
@@ -1,191 +1,88 @@
// jshint ignore: start
-
-import { Selector, ClientFunction } from "testcafe"; // first import testcafe selectors
-
-const WAIT_TIME = 500; // Time to wait after some actions to give angular time to re render
-
-fixture`Getting Started`
+import { ClientFunction} from "testcafe"; // first import testcafe selectors
+fixture `OpenNote`
.page `http://127.0.0.1:8080/`
.afterEach(async testController => {//Clean up local storage and local db
let clean = ClientFunction(() => {
localStorage.clear();
return PouchDB("openNote").destroy()
- });
+ });
- await clean();
+ await clean();
});
-/**
- * Create a folder. Expects to be in a folder partial.
- * @param {[type]} testController [description]
- * @param {[type]} name - name folder
- * @return {testController} - testController object
- */
-let createFolder = (testController, name) => {
- return testController.click("#newFolder")
- .typeText("#alertify-text", name)
- .click("#alertify-ok");
-}
-
-
-/**
- * Create a note. Expects to be in a sub folder in a folder partial.
- * @param {[type]} testController [description]
- * @param {[type]} title [description]
- * @param {[type]} note [description]
- * @return {testController} - testController object
- */
-let createNote = (testController, title, note) => {
- let typeString = note.split("")
-
- typeString.forEach((char, index)=>{
- if(char != " ")
- return;
- typeString[index]="space";
- });
- typeString = typeString.join(" ");
-
- return testController.click("#newNote")
- .typeText("#noteName", title,{replace:true})
- .click(".CodeMirror-scroll")
- .pressKey(typeString)
- .click("#save")
-}
/**
- * Edits a note. Expects to be on a note partial
- * @param {[type]} testController [description]
- * @param {[type]} title [description]
- * @param {[type]} note [description]
+ * List of helper functions
*/
-let editNote = async (testController, title, note) => {
- const CLEAR_STRING = "ctrl+a backspace"
- let typeString = note.split("")
-
- typeString.forEach((char, index)=>{
- if(char != " ")
- return;
- typeString[index]="space";
- });
- typeString = typeString.join(" ");
-
- await testController.click("#edit")
- .typeText("#noteName", title,{replace:true})
- .click(".CodeMirror-scroll")
- .pressKey(CLEAR_STRING)
- .pressKey(typeString)
- .click("#save")
-}
-
-test("Create Folder", async testController => {
- //Arrange
-
- //Act
- let folderName="TestFolder"
- await createFolder(testController, folderName).wait(WAIT_TIME)
-
- //Asert
- let result = await Selector("#currentFolder").innerText;//#Stupid should really just be sync
- await testController.expect(result.trim()).eql(folderName);
-});
-
-test("Create note", async testController => {
- //Arrange
-
- //Act
- let title="TestNote";
- let tag = "#Something"
- let note = `Now is the time for all good men to come to the aid of their country. ${tag}`;
-
- await createFolder(testController, "NoteTestFolder")
- .wait(WAIT_TIME)
-
- await createNote(testController, title, note)
-
- //Asert
- let titleActual = await Selector("#noteName").value;
- let noteActual = await Selector("#note").innerText;//#Stupid should really just be sync
- let tagActual = await Selector("#sideBar ul li:first-child ").innerText;
- await testController.expect(titleActual).eql(title);
- await testController.expect(noteActual.trim()).eql(note);
- await testController.expect(tagActual).eql(tag.toLowerCase());
-
-});
-
-test("Edit note", async testController => {
- //Arrange
-
- //Act
- let title="TestNote";
- let tag = "#Something"
- let note = `Now is the time for all good men to come to the aid of their country. ${tag}`;
-
- await createFolder(testController, "NoteTestFolder")
- .wait(WAIT_TIME)
-
- await createNote(testController, title, note)
-
- title="TestNote2";
- tag = "#SomethingElse"
- note = `YO ${tag}`;
-
- await editNote(testController, title, note)
-
- //Asert
- let titleActual = await Selector("#noteName").value;
- let noteActual = await Selector("#note").innerText;//#Stupid should really just be sync
- let tagActual = await Selector("#sideBar ul li:first-child ").innerText;
- await testController.expect(titleActual).eql(title);
- await testController.expect(noteActual.trim()).eql(note);
- await testController.expect(tagActual).eql(tag.toLowerCase());
-});
-
-test("Delete note", async testController => {
- //Arrange
-
- //Act
- let folderName = "NoteTestFolder";
- await createFolder(testController, folderName)
- .wait(WAIT_TIME);
-
- await createNote(testController, "TestNote", "Now is the time for all good men to come to the aid of their country. #something");
-
- await testController.click("#edit")
- .click("#removeNote")
- .click("#alertify-ok");
-
- //Asert
- await testController.expect(Selector("#sideBar ul li:first-child ").innerText).eql("No tags found. Add a # to a note to add a tag.");
- let result = await Selector("#currentFolder").innerText;//Make sure we are back to parent folder
- await testController.expect(result.trim()).eql(folderName);
+const helper = {
+ /**
+ * Create a folder. Expects to be in a folder partial.
+ * @param {[type]} testController [description]
+ * @param {[type]} name - name folder
+ * @return {testController} - testController object
+ */
+ createFolder: (testController, name) => {
+ return testController.click("#newFolder")
+ .typeText("#alertify-text", name)
+ .click("#alertify-ok");
+ },
+
+
+ /**
+ * Create a note. Expects to be in a sub folder in a folder partial.
+ * @param {[type]} testController [description]
+ * @param {[type]} title [description]
+ * @param {[type]} note [description]
+ * @return {testController} - testController object
+ */
+ createNote: (testController, title, note) => {
+ let typeString = note.split("")
+
+ typeString.forEach((char, index)=>{
+ if(char != " ")
+ return;
+ typeString[index]="space";
+ });
+ typeString = typeString.join(" ");
+
+ return testController.click("#newNote")
+ .typeText("#noteName", title,{replace:true})
+ .click(".CodeMirror-scroll")
+ .pressKey(typeString)
+ .click("#save")
+ },
+
+ /**
+ * Edits a note. Expects to be on a note partial
+ * @param {[type]} testController [description]
+ * @param {[type]} title [description]
+ * @param {[type]} note [description]
+ */
+ editNote: async (testController, title, note) => {
+ const CLEAR_STRING = "ctrl+a backspace"
+ let typeString = note.split("")
+
+ typeString.forEach((char, index)=>{
+ if(char != " ")
+ return;
+ typeString[index]="space";
+ });
+ typeString = typeString.join(" ");
+
+ await testController.click("#edit")
+ .typeText("#noteName", title,{replace:true})
+ .click(".CodeMirror-scroll")
+ .pressKey(CLEAR_STRING)
+ .pressKey(typeString)
+ .click("#save")
+ }
+ }
+
+let path = __dirname+"/usecases/";
+require("fs").readdirSync(path).forEach(function(file) {
+ let testInfo = require(path + file)(helper);
+ test(testInfo.name, testInfo.test);//There has to be a better way to do this. If this function is not here atleast onces tests will not load from other files. If it is, tests can be defined in imports.
});
-test("Delete folder tree", async testController => {
- //Create first level
- let firstLevelTag="#firstLevel"
- await createFolder(testController, "NoteTestFolder")
- .wait(WAIT_TIME)
- await createNote(testController, "TestNote", `Quick. ${firstLevelTag}`).wait(WAIT_TIME);
- await testController.expect(await Selector("#sideBar ul li:first-child ").innerText).eql(firstLevelTag.toLowerCase());
-
- //Create second level
- await testController.click("#goToParentFolder");
- await createFolder(testController, "SubFolder")
- .wait(WAIT_TIME)
- await createNote(testController, "Sub Note", "Bla #foo").wait(WAIT_TIME);
- await testController.expect(Selector("#sideBar ul").childElementCount).eql(2);//We should have two tags
-
- //Delete it
- await testController.click("#home")
- .click(".folderPartial div.folder")
- .click("#currentFolder")
- .click("#delete")
- .click("#alertify-ok")
- .wait(WAIT_TIME);
-
-
- await testController.expect(Selector("#sideBar ul li:first-child").innerText).eql("No tags found. Add a # to a note to add a tag."); //Make sure no tags
- let result = await Selector("#currentFolder").innerText
- await testController.expect(result.trim()).eql("Home");;//Make sure we are back to parent folder
- await testController.expect(Selector(".folderPartial div.folder").length).eql(0);//Make sure there are no folders anymore
-});
+//Remember you can do a .debug() to hault execution to debug
diff --git a/test/e2e/usecases/folder.create.test.js b/test/e2e/usecases/folder.create.test.js
new file mode 100644
index 0000000..72fe3a9
--- /dev/null
+++ b/test/e2e/usecases/folder.create.test.js
@@ -0,0 +1,20 @@
+// jshint ignore: start
+import { Selector} from "testcafe"; // first import testcafe selectors
+const WAIT_TIME = 1250; // Time to wait after some actions to give angular time to re render
+
+module.exports = (helper)=>{
+ return {
+ name: "Create Folder",
+ test: async testController => {
+ //Arrange
+
+ //Act
+ let folderName="TestFolder";
+ await helper.createFolder(testController, folderName).wait(WAIT_TIME);
+
+ //Asert
+ let result = await Selector("#currentFolder").innerText;//#Stupid should really just be sync
+ await testController.expect(result.trim()).eql(folderName);
+ }
+ };
+};
diff --git a/test/e2e/usecases/folder.delete.test.js b/test/e2e/usecases/folder.delete.test.js
new file mode 100644
index 0000000..41d7b3e
--- /dev/null
+++ b/test/e2e/usecases/folder.delete.test.js
@@ -0,0 +1,46 @@
+// jshint ignore: start
+import { Selector, ClientFunction } from "testcafe"; // first import testcafe selectors
+const WAIT_TIME = 1250; // Time to wait after some actions to give angular time to re render
+
+module.exports = (helper)=>{
+ return {
+ name: "Delete folder and make sure other folders are fine",
+ test: async testController => {
+ //Create first folder
+ let firstLevelTag="#firstLevel"
+ await helper.createFolder(testController, "NoteTestFolder")
+ .wait(WAIT_TIME)
+ await helper.createNote(testController, "TestNote", `Quick. ${firstLevelTag}`).wait(WAIT_TIME);
+ await testController.expect(await Selector("#sideBar ul li:first-child ").innerText).eql(firstLevelTag.toLowerCase());
+
+ //Create second folder
+ let secondFolderTitle="ZZZZ";//Folders are displayed alphabetically
+ let secondNoteTitle ="Sub Note";
+ let secondNoteTag = "#foo";
+ await testController.click("#home")
+ await helper.createFolder(testController, secondFolderTitle)
+ .wait(WAIT_TIME)
+ await helper.createNote(testController, secondNoteTitle, `Bla ${secondNoteTag}`).wait(WAIT_TIME);
+ await testController.expect(Selector("#sideBar ul").childElementCount).eql(2);//We should have two tags
+
+ //Delete it
+ await testController.click("#home")
+ .click(".folderPartial div.folder:first-child")
+ .wait(WAIT_TIME)
+ .click("#currentFolder")
+ .click("#delete")
+ .click("#alertify-ok")
+ .wait(WAIT_TIME);
+
+
+ //Assert Tags
+ await testController.expect(Selector("#sideBar ul li:first-child").innerText).eql(secondNoteTag); //Make sure no tags
+ await testController.expect(Selector("#sideBar ul").count).eql(1);//We should have one tags
+
+ //Assert folders
+ await testController.wait(WAIT_TIME).expect(Selector(".folderPartial div.folder").count).eql(1);
+ let result = await Selector(".folderPartial div.folder h4").innerText
+ await testController.expect(result.trim()).eql(secondFolderTitle);//Make sure we are back to parent folder
+ }
+ };
+};
diff --git a/test/e2e/usecases/folder.deleteTree.test.js b/test/e2e/usecases/folder.deleteTree.test.js
new file mode 100644
index 0000000..71a0b93
--- /dev/null
+++ b/test/e2e/usecases/folder.deleteTree.test.js
@@ -0,0 +1,40 @@
+// jshint ignore: start
+import { Selector, ClientFunction } from "testcafe"; // first import testcafe selectors
+const WAIT_TIME = 1250; // Time to wait after some actions to give angular time to re render
+
+module.exports = (helper)=>{
+
+ return {
+ name: "Delete folder tree",
+ test: async testController => {
+ //Create first level
+ let firstLevelTag="#firstLevel"
+ await helper.createFolder(testController, "NoteTestFolder")
+ .wait(WAIT_TIME)
+ await helper.createNote(testController, "TestNote", `Quick. ${firstLevelTag}`).wait(WAIT_TIME);
+ await testController.expect(await Selector("#sideBar ul li:first-child ").innerText).eql(firstLevelTag.toLowerCase());
+
+ //Create second level
+ await testController.click("#goToParentFolder");
+ await helper.createFolder(testController, "SubFolder")
+ .wait(WAIT_TIME)
+ await helper.createNote(testController, "Sub Note", "Bla #foo").wait(WAIT_TIME);
+ await testController.expect(Selector("#sideBar ul").childElementCount).eql(2);//We should have two tags
+
+ //Delete it
+ await testController.click("#home")
+ .click(".folderPartial div.folder")
+ .wait(WAIT_TIME)
+ .click("#currentFolder")
+ .click("#delete")
+ .click("#alertify-ok")
+ .wait(WAIT_TIME);
+
+
+ await testController.expect(Selector("#sideBar ul li:first-child").innerText).eql("No tags found. Add a # to a note to add a tag."); //Make sure no tags
+ let result = await Selector("#currentFolder").innerText
+ await testController.expect(result.trim()).eql("Home");//Make sure we are back to parent folder
+ await testController.expect(Selector(".folderPartial div.folder").count).eql(0);//Make sure there are no folders anymore
+ }
+ };
+};
diff --git a/test/e2e/usecases/note.create.test.js b/test/e2e/usecases/note.create.test.js
new file mode 100644
index 0000000..faa20e0
--- /dev/null
+++ b/test/e2e/usecases/note.create.test.js
@@ -0,0 +1,29 @@
+// jshint ignore: start
+import { Selector} from "testcafe"; // first import testcafe selectors
+const WAIT_TIME = 1250; // Time to wait after some actions to give angular time to re render
+module.exports = (helper)=>{
+ return {
+ name:"Create note",
+ test: async testController => {
+ //Arrange
+
+ //Act
+ let title="TestNote";
+ let tag = "#Something"
+ let note = `Now is the time for all good men to come to the aid of their country. ${tag}`;
+
+ await helper.createFolder(testController, "NoteTestFolder")
+ .wait(WAIT_TIME)
+
+ await helper.createNote(testController, title, note)
+
+ //Asert
+ let titleActual = await Selector("#noteName").value;
+ let noteActual = await Selector("#note").innerText;//#Stupid should really just be sync
+ let tagActual = await Selector("#sideBar ul li:first-child ").innerText;
+ await testController.expect(titleActual).eql(title);
+ await testController.expect(noteActual.trim()).eql(note);
+ await testController.expect(tagActual).eql(tag.toLowerCase());
+ }
+ };
+};
diff --git a/test/e2e/usecases/note.delete.test.js b/test/e2e/usecases/note.delete.test.js
new file mode 100644
index 0000000..b632171
--- /dev/null
+++ b/test/e2e/usecases/note.delete.test.js
@@ -0,0 +1,28 @@
+// jshint ignore: start
+import { Selector, ClientFunction } from "testcafe"; // first import testcafe selectors
+const WAIT_TIME = 1250; // Time to wait after some actions to give angular time to re render
+
+module.exports = (helper)=>{
+ return {
+ name: "Delete note",
+ test: async testController => {
+ //Arrange
+
+ //Act
+ let folderName = "NoteTestFolder";
+ await helper.createFolder(testController, folderName)
+ .wait(WAIT_TIME);
+
+ await helper.createNote(testController, "TestNote", "Now is the time for all good men to come to the aid of their country. #something");
+
+ await testController.click("#edit")
+ .click("#removeNote")
+ .click("#alertify-ok");
+
+ //Asert
+ await testController.expect(Selector("#sideBar ul li:first-child ").innerText).eql("No tags found. Add a # to a note to add a tag.");
+ let result = await Selector("#currentFolder").innerText;//Make sure we are back to parent folder
+ await testController.expect(result.trim()).eql(folderName);
+ }
+ };
+};
diff --git a/test/e2e/usecases/note.edit.test.js b/test/e2e/usecases/note.edit.test.js
new file mode 100644
index 0000000..4ccfc21
--- /dev/null
+++ b/test/e2e/usecases/note.edit.test.js
@@ -0,0 +1,36 @@
+// jshint ignore: start
+import { Selector, ClientFunction } from "testcafe"; // first import testcafe selectors
+const WAIT_TIME = 1250; // Time to wait after some actions to give angular time to re render
+
+module.exports = (helper)=>{
+ return {
+ name: "Edit note",
+ test: async testController => {
+ //Arrange
+
+ //Act
+ let title="TestNote";
+ let tag = "#Something"
+ let note = `Now is the time for all good men to come to the aid of their country. ${tag}`;
+
+ await helper.createFolder(testController, "NoteTestFolder")
+ .wait(WAIT_TIME)
+
+ await helper.createNote(testController, title, note)
+
+ title="TestNote2";
+ tag = "#SomethingElse"
+ note = `YO ${tag}`;
+
+ await helper.editNote(testController, title, note)
+
+ //Asert
+ let titleActual = await Selector("#noteName").value;
+ let noteActual = await Selector("#note").innerText;//#Stupid should really just be sync
+ let tagActual = await Selector("#sideBar ul li:first-child ").innerText;
+ await testController.expect(titleActual).eql(title);
+ await testController.expect(noteActual.trim()).eql(note);
+ await testController.expect(tagActual).eql(tag.toLowerCase());
+ }
+ };
+};
diff --git a/test/karma.conf.js b/test/karma.conf.js
deleted file mode 100644
index 292714e..0000000
--- a/test/karma.conf.js
+++ /dev/null
@@ -1,30 +0,0 @@
-module.exports = function(config){//TODO move this stuff into another project
- config.set({
- basePath : "../",
- files : [
- "node_modules/es5-shim/es5-shim.min.js",
- "node_modules/angular/angular.js",
- "node_modules/angular-mocks/angular-mocks.js",
- "node_modules/angular-route/angular-route.js",
- "node_modules/angular-resource/angular-resource.js",
- "node_modules/angular-sanitize/angular-sanitize.js",
- "node_modules/angular-animate/angular-animate.js",
- "node_modules/pouchdb/dist/pouchdb.min.js",
- "node_modules/jquery/jquery.js",
- "openNote/openNote.js",
- "openNote/**/*.js",
- "OpenNote.Test/**/*.js"
- ],
- autoWatch : false,
- frameworks: ["jasmine"],
- browsers : ["Firefox"],
- plugins : [
- "karma-phantomjs-launcher",
- "karma-jasmine"
- ],
- junitReporter : {
- outputFile: "test_out/unit.xml",
- suite: "unit"
- }
- });
-};
diff --git a/test/unit/folder.js b/test/unit/folder.js
deleted file mode 100644
index 3fc1205..0000000
--- a/test/unit/folder.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var createFolder = function(id,parentFolderID, name){
- return {
- "_id": id,
- "parentFolderID": parentFolderID,
- "name": name
- };
-};
-
-//TODO storageService save folder twice
-
-describe("folderController", function() {
- var $scope;
- var createController;
- var $rootScope;
-
- //load openNote module
- beforeEach(module("openNote"));
-
- /**
- * Setup the folder controller
- */
- beforeEach(inject(function($controller, $rootScope){
- $scope = $rootScope.$new();
- this.$rootScope=$rootScope;
-
- $rootScope.buttons=[];
-
- /**
- * Factory to create mock controller
- */
- createController = function(scope, rootScope, location, routeParams, storageService, config, timeout){
- return $controller("folderController",
- {$scope:scope},
- {$rootScope:rootScope},
- {$location:location},
- {$routeParams: routeParams},
- {storageService: storageService},
- {config:config},
- {$timeout:timeout}
- );
- };
- }));
-
- it("should not show folder edit buttons if current folder is home", inject(function($location, config, $timeout) {//inject location and config
- createController($scope, $rootScope, $location, [], null, config, $timeout);
- $scope.currentFolder = createFolder(null,null,null);
-
- expect($scope.folderEditMode).toEqual(false);
- $scope.activateFolderEditMode();//simulate title click
- expect($scope.folderEditMode).toEqual(false);
-
- }));
-
- it("should show folder edit buttons if current folder is not home", inject(function($location, config, $timeout) {//inject location and config
- createController($scope, $rootScope, $location, [], null, config, $timeout);
- $scope.currentFolder = createFolder(123,null,"Not Home");
-
- expect($scope.folderEditMode).toEqual(false);
- $scope.activateFolderEditMode();//simulate title click
- expect($scope.folderEditMode).toEqual(true);
- }));
-});
From 89b0145584e362623539aa9910fb5b9046eba2bd Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sat, 24 Feb 2018 23:16:00 -0700
Subject: [PATCH 15/17] Updated documentation and build cleanup
---
.travis.yml | 5 -----
Gruntfile.js | 4 ++--
README.md | 2 +-
docs/Build.md | 2 +-
docs/History.md | 13 +++++++++----
docs/HowToUse.md | 4 ++--
package.json | 2 +-
7 files changed, 16 insertions(+), 16 deletions(-)
delete mode 100644 .travis.yml
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 967a59c..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
- - node
-before_script:
- - npm install -g grunt-cli
diff --git a/Gruntfile.js b/Gruntfile.js
index 75242a1..a6db081 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -104,9 +104,9 @@ module.exports = function(grunt) {
shell: {
clean: {
- command: ["rm -rf dist",
+ command: ["rm -rf dist webpack_files",
"cd openNote/style/invert/",
- "rm -rf dark light"
+ "rm -rf dark light",
].join("&&")
},
test: {
diff --git a/README.md b/README.md
index 9a77f45..779ab8b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# OpenNote [](https://travis-ci.org/FoxUSA/OpenNote)
+# OpenNote
![][responsive]
OpenNote is a progressive web application(PWA)/HTML5 offline app that was built to be a open source(MIT License), web based text editor/note taking software.
diff --git a/docs/Build.md b/docs/Build.md
index cf2a84f..1ca874b 100644
--- a/docs/Build.md
+++ b/docs/Build.md
@@ -29,7 +29,7 @@ You can see a full list of commands by running `grunt --help`.
Below are the most important commands
- `grunt default` or `grunt` to have webpack in development mode
- `grunt ci` run linting and tests
-- `grunt deploy` Package up the project
+- `grunt deploy` Package up the project into the `dist` folder. Creates a zip with the version number that can be uploaded to Github.
To develop tests
diff --git a/docs/History.md b/docs/History.md
index 93b69c0..402a61b 100644
--- a/docs/History.md
+++ b/docs/History.md
@@ -3,12 +3,17 @@
Back in 2013 OneNote was started. Back then Microsoft OneNote did not have a full featured web interface. I used that at the time and had many notebooks. I wanted a way of taking those notes with me on my phone. I had limited data and wanted an application that would sync all my notes, let me modify them, and sync them back. I tried a bunch of applications and there were none that fulfilled my offline and tree structure requirements.
## Open note
-OpenNote has a text only design. No icons or symbols other than ascii non alphabetical characters. The application just so happened to end up this way. It has a very clean feel to it and does not distract you. I would like to keep this going forward
-### Generation Alpha
+OpenNote has a text only design. No icons or symbols other than ascii non alphabetical characters. The application just so happened to end up this way. It has a very clean feel to it and does not distract you. I would like to keep this going forward.
+
+**Why emphasis on text?** Text is a really old medium for storing information. All sorts of style and support for it. Computers store text really efficiently in comparison to blob data like images.
+
+
+### OpenNote Generations
+#### Generation Alpha
The first version of OpenNote was a PHP fat application. Views were prepared by PHP and sent to the browser via a full load or AJAX.
-### Generation Beta
+#### Generation Beta
Second major revision was the switch to the then booming Angular 1 framework and use HTML5 application manifest and CouchDB to provided offline access and syncing.
-### Current Generation
+#### Current Generation
The most recent efforts have been to add modern features. Tags, markdown, and a CLI.
diff --git a/docs/HowToUse.md b/docs/HowToUse.md
index 0409429..db400e9 100644
--- a/docs/HowToUse.md
+++ b/docs/HowToUse.md
@@ -8,7 +8,7 @@
^ ^
| |
| |PouchDB sync
- |Pre-signed urls |
+ |Pre-signed urls (De-coupled) |
| |
v v
+----+-------------------------+ +----------------------------+----------+
@@ -23,7 +23,7 @@ Component | Purpose
--------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
OpenNote | A PWA(Offline compatible) web application that allows you edit and access notes.
CouchDB | Couch DB is a database that stores your notes. When this is setup, you do not need to worry if your phone gets lost. When fully replicated, your notes will be safely stored in CouchDB. CouchDB also allows multiple browsers to sync. So you can have your notes on all your devices.
-Minio | Minio is a blob storage server that implements the AWS S3 API. This allows you to upload your images and non text files for use with OpenNote/
+Minio | Minio is a blob storage server that implements the AWS S3 API. This allows you to upload your images and non text files for use with OpenNote.
[OpenNote-CLI](https://github.com/FoxUSA/OpenNote-CLI) | OpenNote CLI syncs the database to disk. This allows you to use other editors like Atom to create and edit notes.
## General
diff --git a/package.json b/package.json
index 40f8718..20bc139 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "OpenNote",
- "version": "18.03.00-Alpha",
+ "version": "18.03.00",
"description": "",
"main": "Gruntfile.js",
"author": "Jacob Liscom",
From 04ffce6a79767bf6a97b6cae846af01f56715f13 Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sun, 25 Feb 2018 13:33:34 -0700
Subject: [PATCH 16/17] Fixed display, refactor tag controller, fixed tag css
---
docs/Build.md | 6 ++--
docs/HowToUse.md | 18 ------------
docs/Install.md | 28 +++++++++++++++++--
index.html | 4 +--
openNote/controllers/noteController.js | 9 +-----
.../settings/databaseController.js | 2 +-
openNote/controllers/tagController.js | 4 ++-
.../directives/folderContentsDirective.js | 2 +-
openNote/openNote.config.js | 2 +-
openNote/openNote.js | 11 +++++---
openNote/partials/tagListPartial.html | 4 +--
openNote/partials/tagPartial.html | 12 +-------
openNote/style/invert/style.less | 7 +++--
13 files changed, 50 insertions(+), 59 deletions(-)
diff --git a/docs/Build.md b/docs/Build.md
index 1ca874b..adad8bf 100644
--- a/docs/Build.md
+++ b/docs/Build.md
@@ -4,14 +4,12 @@
- Grunt `npm install -g grunt-cli`
## Build
-Clone [this project](https://github.com/FoxUSA/OpenNote) an the [SharedServices Project](https://github.com/FoxUSA/OpenNoteService-PHP)
-
-My project folder structure is setup as follows
+Clone the projects and set them up in the structure below
```
Some working folder
├─ OpenNote
├─ OpenNote-SharedServices
-├─ OpenNote-Docer
+├─ OpenNote-Docker
└─ OpenNote-CLI
```
diff --git a/docs/HowToUse.md b/docs/HowToUse.md
index db400e9..1ed9deb 100644
--- a/docs/HowToUse.md
+++ b/docs/HowToUse.md
@@ -46,24 +46,6 @@ Once you click on a note you'll will be presented with it in a read only view.
![][seedsedit] This will bring you to the editor. Once you are all done editing, click "Save" to store the note.
-## Syncing
-By default OpenNote is storing info in your browser. Until you setup syncing, you are at risk of lousing your notes. To setup syncing. From the home page click `Settings`, then click database. On the right hand side of the panel you will see a Replication url field. This expect a url to your couchDB database in the form of `$protocol://$user:$password@$serverurl:$port/$database`.
-
-For example if your server information is as follows:
-
-Item | Value
---- | ---
-protocol | http
-user | admin
-password | password
-serverurl | 127.0.0.1
-port | 6984
-database | opennote
-
-then your replication url would be `http://admin:password@127.0.0.1:6984/opennote`
-
-You will see an alert if replication is working.
-
[plants]: ./images/plants.png
[seedsedit]: ./images/seedsEdit.png
[seedsview]: ./images/seedsView.png
diff --git a/docs/Install.md b/docs/Install.md
index 4d8d1bf..967fc14 100644
--- a/docs/Install.md
+++ b/docs/Install.md
@@ -28,11 +28,35 @@ services:
command: server /data
```
-## Start
-`docker-compose up -d` to start
+## Setup
+- [ ] `docker-compose up -d` to start
+- CouchDB
+ - [ ] Go to `http://$serverurl:5984/_utils/#_config/nonode@nohost/cors` and enable CORS for your domain.
+ - [ ] Go to `http://$serverurl:5984/_utils/#_config/nonode@nohost` and set `require_valid_user` to true. If you are unable to get to the login screen after setting that, you can access it via `http://$serverurl:5984/_utils/#login`
+ - [ ] Setup SSL [via this guide](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=48203146) //TODO
+- Minio
+ - [ ] Setup SSL //TODO https://docs.minio.io/docs/how-to-secure-access-to-minio-server-with-tls
+ - [ ] Create OpenNote bucket
+## Syncing
+By default OpenNote is storing info in your browser. Until you setup syncing, you are at risk of lousing your notes. To setup syncing. From the home page click `Settings`, then click database. On the right hand side of the panel you will see a Replication url field. This expect a url to your couchDB database in the form of `$protocol://$user:$password@$serverurl:$port/$database`.
+
+For example if your server information is as follows:
+
+Item | Value
+--- | ---
+protocol | http
+user | admin
+password | password
+serverurl | 127.0.0.1
+port | 5984
+database | opennote
+
+then your replication url would be `http://admin:password@127.0.0.1:6984/opennote`
+
+You will see an alert if replication is working.
## Uninstall
If you ever want to shutdown OpenNote run `docker-compose down` in the same folder as `docker-compose.yml`. This will shut down the containers associated with OpenNote.
diff --git a/index.html b/index.html
index ad776dc..301dedf 100644
--- a/index.html
+++ b/index.html
@@ -18,8 +18,8 @@
-
-
+
+
© 2018 Jacob Liscom - Version {{version}}
diff --git a/openNote/controllers/noteController.js b/openNote/controllers/noteController.js
index d2d2448..aa3799f 100644
--- a/openNote/controllers/noteController.js
+++ b/openNote/controllers/noteController.js
@@ -111,13 +111,6 @@ openNote.controller("noteController", ["$scope",
lineNumbers: true,
indentUnit: 4
});
-
- // var resize = function() {
- // $(".CodeMirror").css({"height": ($(window).height()*0.75 )+ "px"});
- // };
- // window.onresize = resize;
- // resize();
-
});
};
@@ -139,7 +132,7 @@ openNote.controller("noteController", ["$scope",
console.error(response);
throw response;
}
-
+
detachWindowUnload();
//Tags
diff --git a/openNote/controllers/settings/databaseController.js b/openNote/controllers/settings/databaseController.js
index c7edeef..41afe4b 100644
--- a/openNote/controllers/settings/databaseController.js
+++ b/openNote/controllers/settings/databaseController.js
@@ -24,7 +24,7 @@ openNote.controller("databaseController", ["$scope",
* Save replication settings
*/
$scope.save = function() {
- storageService.setRemoteURL($scope.url);
+ storageService.setRemoteURL($scope.url);//TODO validate this with a regex or something
$rootScope.$on("replicationComplete", function() {
$rootScope.$emit("reloadListView", {});
});
diff --git a/openNote/controllers/tagController.js b/openNote/controllers/tagController.js
index bc85efa..d498698 100644
--- a/openNote/controllers/tagController.js
+++ b/openNote/controllers/tagController.js
@@ -34,7 +34,9 @@ openNote.controller("tagController", ["$scope",
var tags = map.tags[$scope.tag];
tags.forEach(function(tag) {
storageService.get(tag).then(function(note) {
- $scope.notes.push(note);
+ $scope.notes.push({
+ doc:note
+ });
$scope.$apply();
});
});
diff --git a/openNote/directives/folderContentsDirective.js b/openNote/directives/folderContentsDirective.js
index 8545890..026c5ff 100644
--- a/openNote/directives/folderContentsDirective.js
+++ b/openNote/directives/folderContentsDirective.js
@@ -44,7 +44,7 @@ openNote.directive("folderContentsDirective", [
*/
$scope.loadNote = function(note) {
$scope.fadeOut(function() {
- $location.url("/note/" + note.id);
+ $location.url("/note/" + note.doc._id);
});
};
diff --git a/openNote/openNote.config.js b/openNote/openNote.config.js
index af24fec..096dda2 100644
--- a/openNote/openNote.config.js
+++ b/openNote/openNote.config.js
@@ -8,7 +8,7 @@ openNote.value("config", {
* Get current version
*/
getVersion: function(){
- return "17.02.01";
+ return "18.03.00";
},
/**
diff --git a/openNote/openNote.js b/openNote/openNote.js
index cfd9753..3250e52 100644
--- a/openNote/openNote.js
+++ b/openNote/openNote.js
@@ -41,18 +41,20 @@ openNote.run([
"config",
"tagService",
"$http",
+ "$timeout",
function($rootScope,
$location,
config,
tagService,
- $http) {
+ $http,
+ $timeout) {
$rootScope.version = config.getVersion();
tagService.bindHandlers();
$rootScope.$on("$routeChangeStart", function() {
//Initial entry after if logged in
- if (!$rootScope.showMenu && !$rootScope.showSideBar) //make sure we only fade in/run once
+ if (!$rootScope.showUI) //make sure we only fade in/run once
$rootScope.$emit("init");
});
@@ -60,8 +62,9 @@ openNote.run([
* Initialize app and start fade in
*/
$rootScope.$on("init", function() {
- $rootScope.showMenu = true;
- $rootScope.showSideBar = true;
+ $timeout(function(){
+ $rootScope.showUI = true;
+ });//Wait for everything to make sure fade in is not skipped
//Check for updates
$http.get(config.getUpdateURL()).then(
diff --git a/openNote/partials/tagListPartial.html b/openNote/partials/tagListPartial.html
index 857adbd..966f75d 100644
--- a/openNote/partials/tagListPartial.html
+++ b/openNote/partials/tagListPartial.html
@@ -1,7 +1,5 @@
diff --git a/openNote/style/invert/style.less b/openNote/style/invert/style.less
index f8d8c4e..9fe4212 100644
--- a/openNote/style/invert/style.less
+++ b/openNote/style/invert/style.less
@@ -288,14 +288,15 @@ img {
// Note partial
.notePartial{
.CodeMirror{
- border-radius:0 0 4px 4px;/*round the corners*/
- size: 75vh;
+ border-radius:4px;/*round the corners*/
+ height: 75vh;
}
}
// Folder partial
-.folderPartial{
+.folderPartial,
+.tagPartial{
#folderTitleBar{
padding: 0px 0px 15px 0px;
overflow: hidden;
From a0fbd94c16b70df3aacd0bd7780256a5e8e07433 Mon Sep 17 00:00:00 2001
From: FoxUSA
Date: Sun, 11 Mar 2018 11:57:14 -0700
Subject: [PATCH 17/17] Finalize docs
---
docs/Install.md | 66 +++++++++++++++++++++++++++++++++++--------------
1 file changed, 47 insertions(+), 19 deletions(-)
diff --git a/docs/Install.md b/docs/Install.md
index 967fc14..ece65bf 100644
--- a/docs/Install.md
+++ b/docs/Install.md
@@ -1,14 +1,25 @@
# How To Install
+
Put the following text in a `docker-compose.yml`. Make sure to set all the items marked `#TODO`. Also make sure this file is in a secure place. Your credentials are stored in it.
+
```
version: "2"
services:
opennote:
- image: foxusa/opennote
- ports:
- - "8080:80"
+ image: foxusa/opennote
+ volumes:
+ - ":/root/certs:ro"#TODO set this
+ ports:
+ - "80:80"
+ - "443:443"
+ - "6984:6984" #CouchDB Proxy
+ links:
+ - "couchdb:couchdb"
couchdb:
image: couchdb
+ volumes:
+ - ":/opt/couchdb/data" #TODO set this
+ - ":/root/certs:ro" #TODO set this
ports:
- "5984:5984"
- "6984:6984"
@@ -19,44 +30,61 @@ services:
minio:
image: minio/minio
volumes:
- - "/tmp/data:/data" #TODO set this
+ - ":/data" #TODO set this
+ - ":/root/.minio/certs:ro" #TODO set this
ports:
- "9000:9000"
environment:
MINIO_ACCESS_KEY: tests #TODO set this
MINIO_SECRET_KEY: testssdfasdf #TODO set this
command: server /data
-
```
+
## Setup
- [ ] `docker-compose up -d` to start
-- CouchDB
- - [ ] Go to `http://$serverurl:5984/_utils/#_config/nonode@nohost/cors` and enable CORS for your domain.
- - [ ] Go to `http://$serverurl:5984/_utils/#_config/nonode@nohost` and set `require_valid_user` to true. If you are unable to get to the login screen after setting that, you can access it via `http://$serverurl:5984/_utils/#login`
- - [ ] Setup SSL [via this guide](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=48203146) //TODO
+ > If you need to get into a container to configure something you can do so `docker-compose exec $container /bin/sh` IE `docker-compose exec couchdb /bin/sh`.
+### SSL
+Create a folder with a SSL `private.key` and `public.crt` this gets mounted by nginx and minio to encrypt connections.
+the `public.crt` file should have your servers cert and the whole cert chain appended to it.
-- Minio
- - [ ] Setup SSL //TODO https://docs.minio.io/docs/how-to-secure-access-to-minio-server-with-tls
- - [ ] Create OpenNote bucket
+### OpenNote
+- [ ] (Optional) Configure SSL:
+Run `docker-compose exec opennote nano /etc/nginx/conf.d/default.conf` and use [this config](https://github.com/FoxUSA/OpenNote-Docker/blob/master/samples/nginx/default.conf) as a template.
+- [ ] Run `docker-compose exec opennote nano /etc/nginx/nginx.conf` and add this line at the end of the http block
+`client_max_body_size 100M;`
+
+### CouchDB
+- [ ] Go to `http://$serverurl:5984/_utils/#_config/nonode@nohost/cors` and enable CORS for your domain.
+- [ ] Go to `http://$serverurl:5984/_utils/#_config/nonode@nohost` and set `require_valid_user` to true. If you are unable to get to the login screen after setting that, you can access it via `http://$serverurl:5984/_utils/#login`
+
+### Minio
+- [ ] Create OpenNote bucket
+
+>finally run `docker-compose restart to use the updated configurations`.
## Syncing
+
By default OpenNote is storing info in your browser. Until you setup syncing, you are at risk of lousing your notes. To setup syncing. From the home page click `Settings`, then click database. On the right hand side of the panel you will see a Replication url field. This expect a url to your couchDB database in the form of `$protocol://$user:$password@$serverurl:$port/$database`.
For example if your server information is as follows:
-Item | Value
---- | ---
-protocol | http
-user | admin
-password | password
+Item | Value
+--------- | ---------
+protocol | http
+user | admin
+password | password
serverurl | 127.0.0.1
-port | 5984
-database | opennote
+port | 5984
+database | opennote
then your replication url would be `http://admin:password@127.0.0.1:6984/opennote`
You will see an alert if replication is working.
## Uninstall
+
If you ever want to shutdown OpenNote run `docker-compose down` in the same folder as `docker-compose.yml`. This will shut down the containers associated with OpenNote.
+
+## SSL
+You can use lets encrypt to get a free valid SSL cert. See https://letsencrypt.org/ and their tool [Cert Bot Tool](https://certbot.eff.org/)