Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/grunt-legacy-log-utils/README.md b/node_modules/grunt-legacy-log-utils/README.md
new file mode 100644
index 0000000..aa10daf
--- /dev/null
+++ b/node_modules/grunt-legacy-log-utils/README.md
@@ -0,0 +1,6 @@
+# grunt-legacy-log-utils
+> Static methods for the Grunt 0.4.x logger.
+
+[![Build Status: Linux](https://travis-ci.org/gruntjs/grunt-legacy-log-utils.svg?branch=master)](https://travis-ci.org/gruntjs/grunt-legacy-log-utils)
+[![Build Status: Windows](https://ci.appveyor.com/api/projects/status/a6s4cy3fcbl33hnp?svg=true)](https://ci.appveyor.com/project/gruntjs/grunt-legacy-log-utils)
+[![Built with Grunt](https://cdn.gruntjs.com/builtwith.png)](http://gruntjs.com/)
diff --git a/node_modules/grunt-legacy-log-utils/index.js b/node_modules/grunt-legacy-log-utils/index.js
new file mode 100644
index 0000000..2b72907
--- /dev/null
+++ b/node_modules/grunt-legacy-log-utils/index.js
@@ -0,0 +1,115 @@
+/*
+ * grunt
+ * http://gruntjs.com/
+ *
+ * Copyright (c) 2016 "Cowboy" Ben Alman
+ * Licensed under the MIT license.
+ * https://github.com/gruntjs/grunt/blob/master/LICENSE-MIT
+ */
+
+'use strict';
+
+var chalk = require('chalk');
+var _ = require('lodash');
+
+// Pretty-format a word list.
+exports.wordlist = function(arr, options) {
+  options = _.defaults(options || {}, {
+    separator: ', ',
+    color: 'cyan'
+  });
+  return arr.map(function(item) {
+    return options.color ? chalk[options.color](item) : item;
+  }).join(options.separator);
+};
+
+// Return a string, uncolored (suitable for testing .length, etc).
+exports.uncolor = function(str) {
+  return str.replace(/\x1B\[\d+m/g, '');
+};
+
+// Word-wrap text to a given width, permitting ANSI color codes.
+exports.wraptext = function(width, text) {
+  // notes to self:
+  // grab 1st character or ansi code from string
+  // if ansi code, add to array and save for later, strip from front of string
+  // if character, add to array and increment counter, strip from front of string
+  // if width + 1 is reached and current character isn't space:
+  //  slice off everything after last space in array and prepend it to string
+  //  etc
+
+  // This result array will be joined on \n.
+  var result = [];
+  var matches, color, tmp;
+  var captured = [];
+  var charlen = 0;
+
+  while (matches = text.match(/(?:(\x1B\[\d+m)|\n|(.))([\s\S]*)/)) {
+    // Updated text to be everything not matched.
+    text = matches[3];
+
+    // Matched a color code?
+    if (matches[1]) {
+      // Save last captured color code for later use.
+      color = matches[1];
+      // Capture color code.
+      captured.push(matches[1]);
+      continue;
+
+    // Matched a non-newline character?
+    } else if (matches[2]) {
+      // If this is the first character and a previous color code was set, push
+      // that onto the captured array first.
+      if (charlen === 0 && color) { captured.push(color); }
+      // Push the matched character.
+      captured.push(matches[2]);
+      // Increment the current charlen.
+      charlen++;
+      // If not yet at the width limit or a space was matched, continue.
+      if (charlen <= width || matches[2] === ' ') { continue; }
+      // The current charlen exceeds the width and a space wasn't matched.
+      // "Roll everything back" until the last space character.
+      tmp = captured.lastIndexOf(' ');
+      text = captured.slice(tmp === -1 ? tmp : tmp + 1).join('') + text;
+      captured = captured.slice(0, tmp);
+    }
+
+    // The limit has been reached. Push captured string onto result array.
+    result.push(captured.join(''));
+
+    // Reset captured array and charlen.
+    captured = [];
+    charlen = 0;
+  }
+
+  result.push(captured.join(''));
+  return result.join('\n');
+};
+
+// Format output into columns, wrapping words as-necessary.
+exports.table = function(widths, texts) {
+  var rows = [];
+  widths.forEach(function(width, i) {
+    var lines = this.wraptext(width, texts[i]).split('\n');
+    lines.forEach(function(line, j) {
+      var row = rows[j];
+      if (!row) { row = rows[j] = []; }
+      row[i] = line;
+    });
+  }, this);
+
+  var lines = [];
+  rows.forEach(function(row) {
+    var txt = '';
+    var column;
+    for (var i = 0; i < row.length; i++) {
+      column = row[i] || '';
+      txt += column;
+      var diff = widths[i] - this.uncolor(column).length;
+      if (diff > 0) { txt += _.repeat(' ', diff); }
+    }
+    lines.push(txt);
+  }, this);
+
+  return lines.join('\n');
+};
diff --git a/node_modules/grunt-legacy-log-utils/package.json b/node_modules/grunt-legacy-log-utils/package.json
new file mode 100644
index 0000000..5d7705e
--- /dev/null
+++ b/node_modules/grunt-legacy-log-utils/package.json
@@ -0,0 +1,68 @@
+{
+  "_from": "grunt-legacy-log-utils@~2.1.0",
+  "_id": "grunt-legacy-log-utils@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==",
+  "_location": "/grunt-legacy-log-utils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "grunt-legacy-log-utils@~2.1.0",
+    "name": "grunt-legacy-log-utils",
+    "escapedName": "grunt-legacy-log-utils",
+    "rawSpec": "~2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "~2.1.0"
+  },
+  "_requiredBy": [
+    "/grunt-legacy-log"
+  ],
+  "_resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz",
+  "_shasum": "49a8c7dc74051476dcc116c32faf9db8646856ef",
+  "_spec": "grunt-legacy-log-utils@~2.1.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\grunt-legacy-log",
+  "author": {
+    "name": "\"Cowboy\" Ben Alman",
+    "url": "http://benalman.com/"
+  },
+  "bugs": {
+    "url": "http://github.com/gruntjs/grunt-legacy-log-utils/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "chalk": "~4.1.0",
+    "lodash": "~4.17.19"
+  },
+  "deprecated": false,
+  "description": "Static methods for the Grunt 0.4.x logger.",
+  "devDependencies": {
+    "grunt": "~1.2.1",
+    "grunt-cli": "~1.3.2",
+    "grunt-contrib-jshint": "~2.1.0",
+    "grunt-contrib-nodeunit": "~2.1.0",
+    "grunt-contrib-watch": "~1.1.0"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "http://gruntjs.com/",
+  "keywords": [
+    "grunt",
+    "legacy"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "grunt-legacy-log-utils",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/gruntjs/grunt-legacy-log-utils.git"
+  },
+  "scripts": {
+    "test": "grunt test"
+  },
+  "version": "2.1.0"
+}