ocr design update
This commit is contained in:
		
							
								
								
									
										23
									
								
								express-server/node_modules/axios/package.json
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								express-server/node_modules/axios/package.json
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,28 +1,33 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "_from": "axios",
 | 
					  "_from": "axios@^0.18.0",
 | 
				
			||||||
  "_id": "axios@0.18.0",
 | 
					  "_id": "axios@0.18.0",
 | 
				
			||||||
  "_inBundle": false,
 | 
					  "_inBundle": false,
 | 
				
			||||||
  "_integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
 | 
					  "_integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
 | 
				
			||||||
  "_location": "/axios",
 | 
					  "_location": "/axios",
 | 
				
			||||||
  "_phantomChildren": {},
 | 
					  "_phantomChildren": {},
 | 
				
			||||||
  "_requested": {
 | 
					  "_requested": {
 | 
				
			||||||
    "type": "tag",
 | 
					    "type": "range",
 | 
				
			||||||
    "registry": true,
 | 
					    "registry": true,
 | 
				
			||||||
    "raw": "axios",
 | 
					    "raw": "axios@^0.18.0",
 | 
				
			||||||
    "name": "axios",
 | 
					    "name": "axios",
 | 
				
			||||||
    "escapedName": "axios",
 | 
					    "escapedName": "axios",
 | 
				
			||||||
    "rawSpec": "",
 | 
					    "rawSpec": "^0.18.0",
 | 
				
			||||||
    "saveSpec": null,
 | 
					    "saveSpec": null,
 | 
				
			||||||
    "fetchSpec": "latest"
 | 
					    "fetchSpec": "^0.18.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "_requiredBy": [
 | 
					  "_requiredBy": [
 | 
				
			||||||
    "#USER",
 | 
					    "#USER",
 | 
				
			||||||
    "/"
 | 
					    "/",
 | 
				
			||||||
 | 
					    "/gcp-metadata",
 | 
				
			||||||
 | 
					    "/google-auth-library",
 | 
				
			||||||
 | 
					    "/google-auto-auth/gcp-metadata",
 | 
				
			||||||
 | 
					    "/google-auto-auth/google-auth-library",
 | 
				
			||||||
 | 
					    "/gtoken"
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "_resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
 | 
					  "_resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
 | 
				
			||||||
  "_shasum": "32d53e4851efdc0a11993b6cd000789d70c05102",
 | 
					  "_shasum": "32d53e4851efdc0a11993b6cd000789d70c05102",
 | 
				
			||||||
  "_spec": "axios",
 | 
					  "_spec": "axios@^0.18.0",
 | 
				
			||||||
  "_where": "D:\\Desktop\\smartshopperNodeReworkFirebase",
 | 
					  "_where": "D:\\5CHITM\\Diplomarbeit\\repos\\SmartShopper\\express-server",
 | 
				
			||||||
  "author": {
 | 
					  "author": {
 | 
				
			||||||
    "name": "Matt Zabriskie"
 | 
					    "name": "Matt Zabriskie"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										34
									
								
								express-server/node_modules/follow-redirects/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								express-server/node_modules/follow-redirects/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -96,42 +96,26 @@ var followRedirects = require('follow-redirects').wrap({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Such custom protocols only need an implementation of the `request` method.
 | 
					Such custom protocols only need an implementation of the `request` method.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Browserify Usage
 | 
					## Browser Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Due to the way `XMLHttpRequest` works, the `browserify` versions of `http` and `https` already follow redirects.
 | 
					Due to the way the browser works,
 | 
				
			||||||
 If you are *only* targeting the browser, then this library has little value for you. If you want to write cross
 | 
					the `http` and `https` browser equivalents perform redirects by default.
 | 
				
			||||||
 platform code for node and the browser, `follow-redirects` provides a great solution for making the native node
 | 
					 | 
				
			||||||
 modules behave the same as they do in browserified builds in the browser. To avoid bundling unnecessary code
 | 
					 | 
				
			||||||
 you should tell browserify to swap out `follow-redirects` with the standard modules when bundling.
 | 
					 | 
				
			||||||
 To make this easier, you need to change how you require the modules:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					By requiring `follow-redirects` this way:
 | 
				
			||||||
```javascript
 | 
					```javascript
 | 
				
			||||||
var http = require('follow-redirects/http');
 | 
					var http = require('follow-redirects/http');
 | 
				
			||||||
var https = require('follow-redirects/https');
 | 
					var https = require('follow-redirects/https');
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					you can easily tell webpack and friends to replace
 | 
				
			||||||
 | 
					`follow-redirect` by the built-in versions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can then replace `follow-redirects` in your browserify configuration like so:
 | 
					```json
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
```javascript
 | 
					 | 
				
			||||||
"browser": {
 | 
					 | 
				
			||||||
  "follow-redirects/http"  : "http",
 | 
					  "follow-redirects/http"  : "http",
 | 
				
			||||||
  "follow-redirects/https" : "https"
 | 
					  "follow-redirects/https" : "https"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The `browserify-http` module has not kept pace with node development, and no long behaves identically to the native
 | 
					 | 
				
			||||||
 module when running in the browser. If you are experiencing problems, you may want to check out
 | 
					 | 
				
			||||||
 [browserify-http-2](https://www.npmjs.com/package/http-browserify-2). It is more actively maintained and
 | 
					 | 
				
			||||||
 attempts to address a few of the shortcomings of `browserify-http`. In that case, your browserify config should
 | 
					 | 
				
			||||||
 look something like this:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```javascript
 | 
					 | 
				
			||||||
"browser": {
 | 
					 | 
				
			||||||
  "follow-redirects/http"  : "browserify-http-2/http",
 | 
					 | 
				
			||||||
  "follow-redirects/https" : "browserify-http-2/https"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Contributing
 | 
					## Contributing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Pull Requests are always welcome. Please [file an issue](https://github.com/follow-redirects/follow-redirects/issues)
 | 
					Pull Requests are always welcome. Please [file an issue](https://github.com/follow-redirects/follow-redirects/issues)
 | 
				
			||||||
@@ -152,4 +136,4 @@ Pull Requests are always welcome. Please [file an issue](https://github.com/foll
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## License
 | 
					## License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[https://github.com/follow-redirects/follow-redirects/blob/master/LICENSE](MIT License)
 | 
					[MIT License](https://github.com/follow-redirects/follow-redirects/blob/master/LICENSE)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										125
									
								
								express-server/node_modules/follow-redirects/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										125
									
								
								express-server/node_modules/follow-redirects/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,5 @@
 | 
				
			|||||||
var url = require("url");
 | 
					var url = require("url");
 | 
				
			||||||
 | 
					var URL = url.URL;
 | 
				
			||||||
var http = require("http");
 | 
					var http = require("http");
 | 
				
			||||||
var https = require("https");
 | 
					var https = require("https");
 | 
				
			||||||
var assert = require("assert");
 | 
					var assert = require("assert");
 | 
				
			||||||
@@ -23,6 +24,8 @@ function RedirectableRequest(options, responseCallback) {
 | 
				
			|||||||
  Writable.call(this);
 | 
					  Writable.call(this);
 | 
				
			||||||
  options.headers = options.headers || {};
 | 
					  options.headers = options.headers || {};
 | 
				
			||||||
  this._options = options;
 | 
					  this._options = options;
 | 
				
			||||||
 | 
					  this._ended = false;
 | 
				
			||||||
 | 
					  this._ending = false;
 | 
				
			||||||
  this._redirectCount = 0;
 | 
					  this._redirectCount = 0;
 | 
				
			||||||
  this._redirects = [];
 | 
					  this._redirects = [];
 | 
				
			||||||
  this._requestBodyLength = 0;
 | 
					  this._requestBodyLength = 0;
 | 
				
			||||||
@@ -69,6 +72,11 @@ RedirectableRequest.prototype = Object.create(Writable.prototype);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Writes buffered data to the current native request
 | 
					// Writes buffered data to the current native request
 | 
				
			||||||
RedirectableRequest.prototype.write = function (data, encoding, callback) {
 | 
					RedirectableRequest.prototype.write = function (data, encoding, callback) {
 | 
				
			||||||
 | 
					  // Writing is not allowed if end has been called
 | 
				
			||||||
 | 
					  if (this._ending) {
 | 
				
			||||||
 | 
					    throw new Error("write after end");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Validate input and shift parameters if necessary
 | 
					  // Validate input and shift parameters if necessary
 | 
				
			||||||
  if (!(typeof data === "string" || typeof data === "object" && ("length" in data))) {
 | 
					  if (!(typeof data === "string" || typeof data === "object" && ("length" in data))) {
 | 
				
			||||||
    throw new Error("data should be a string, Buffer or Uint8Array");
 | 
					    throw new Error("data should be a string, Buffer or Uint8Array");
 | 
				
			||||||
@@ -111,11 +119,20 @@ RedirectableRequest.prototype.end = function (data, encoding, callback) {
 | 
				
			|||||||
    encoding = null;
 | 
					    encoding = null;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Write data and end
 | 
					  // Write data if needed and end
 | 
				
			||||||
  var currentRequest = this._currentRequest;
 | 
					  if (!data) {
 | 
				
			||||||
  this.write(data || "", encoding, function () {
 | 
					    this._ended = this._ending = true;
 | 
				
			||||||
    currentRequest.end(null, null, callback);
 | 
					    this._currentRequest.end(null, null, callback);
 | 
				
			||||||
  });
 | 
					  }
 | 
				
			||||||
 | 
					  else {
 | 
				
			||||||
 | 
					    var self = this;
 | 
				
			||||||
 | 
					    var currentRequest = this._currentRequest;
 | 
				
			||||||
 | 
					    this.write(data, encoding, function () {
 | 
				
			||||||
 | 
					      self._ended = true;
 | 
				
			||||||
 | 
					      currentRequest.end(null, null, callback);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    this._ending = true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Sets a header value on the current native request
 | 
					// Sets a header value on the current native request
 | 
				
			||||||
@@ -183,14 +200,29 @@ RedirectableRequest.prototype._performRequest = function () {
 | 
				
			|||||||
  if (this._isRedirect) {
 | 
					  if (this._isRedirect) {
 | 
				
			||||||
    // Write the request entity and end.
 | 
					    // Write the request entity and end.
 | 
				
			||||||
    var i = 0;
 | 
					    var i = 0;
 | 
				
			||||||
 | 
					    var self = this;
 | 
				
			||||||
    var buffers = this._requestBodyBuffers;
 | 
					    var buffers = this._requestBodyBuffers;
 | 
				
			||||||
    (function writeNext() {
 | 
					    (function writeNext(error) {
 | 
				
			||||||
      if (i < buffers.length) {
 | 
					      // Only write if this request has not been redirected yet
 | 
				
			||||||
        var buffer = buffers[i++];
 | 
					      /* istanbul ignore else */
 | 
				
			||||||
        request.write(buffer.data, buffer.encoding, writeNext);
 | 
					      if (request === self._currentRequest) {
 | 
				
			||||||
      }
 | 
					        // Report any write errors
 | 
				
			||||||
      else {
 | 
					        /* istanbul ignore if */
 | 
				
			||||||
        request.end();
 | 
					        if (error) {
 | 
				
			||||||
 | 
					          self.emit("error", error);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // Write the next buffer if there are still left
 | 
				
			||||||
 | 
					        else if (i < buffers.length) {
 | 
				
			||||||
 | 
					          var buffer = buffers[i++];
 | 
				
			||||||
 | 
					          /* istanbul ignore else */
 | 
				
			||||||
 | 
					          if (!request.finished) {
 | 
				
			||||||
 | 
					            request.write(buffer.data, buffer.encoding, writeNext);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // End the request if `end` has been called on us
 | 
				
			||||||
 | 
					        else if (self._ended) {
 | 
				
			||||||
 | 
					          request.end();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }());
 | 
					    }());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -216,6 +248,11 @@ RedirectableRequest.prototype._processResponse = function (response) {
 | 
				
			|||||||
  var location = response.headers.location;
 | 
					  var location = response.headers.location;
 | 
				
			||||||
  if (location && this._options.followRedirects !== false &&
 | 
					  if (location && this._options.followRedirects !== false &&
 | 
				
			||||||
      response.statusCode >= 300 && response.statusCode < 400) {
 | 
					      response.statusCode >= 300 && response.statusCode < 400) {
 | 
				
			||||||
 | 
					    // Abort the current request
 | 
				
			||||||
 | 
					    this._currentRequest.removeAllListeners();
 | 
				
			||||||
 | 
					    this._currentRequest.on("error", noop);
 | 
				
			||||||
 | 
					    this._currentRequest.abort();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // RFC7231§6.4: A client SHOULD detect and intervene
 | 
					    // RFC7231§6.4: A client SHOULD detect and intervene
 | 
				
			||||||
    // in cyclical redirections (i.e., "infinite" redirection loops).
 | 
					    // in cyclical redirections (i.e., "infinite" redirection loops).
 | 
				
			||||||
    if (++this._redirectCount > this._options.maxRedirects) {
 | 
					    if (++this._redirectCount > this._options.maxRedirects) {
 | 
				
			||||||
@@ -289,27 +326,46 @@ function wrap(protocols) {
 | 
				
			|||||||
    var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);
 | 
					    var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Executes a request, following redirects
 | 
					    // Executes a request, following redirects
 | 
				
			||||||
    wrappedProtocol.request = function (options, callback) {
 | 
					    wrappedProtocol.request = function (input, options, callback) {
 | 
				
			||||||
      if (typeof options === "string") {
 | 
					      // Parse parameters
 | 
				
			||||||
        options = url.parse(options);
 | 
					      if (typeof input === "string") {
 | 
				
			||||||
        options.maxRedirects = exports.maxRedirects;
 | 
					        var urlStr = input;
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					          input = urlToOptions(new URL(urlStr));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch (err) {
 | 
				
			||||||
 | 
					          /* istanbul ignore next */
 | 
				
			||||||
 | 
					          input = url.parse(urlStr);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else if (URL && (input instanceof URL)) {
 | 
				
			||||||
 | 
					        input = urlToOptions(input);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else {
 | 
					      else {
 | 
				
			||||||
        options = Object.assign({
 | 
					        callback = options;
 | 
				
			||||||
          protocol: protocol,
 | 
					        options = input;
 | 
				
			||||||
          maxRedirects: exports.maxRedirects,
 | 
					        input = { protocol: protocol };
 | 
				
			||||||
          maxBodyLength: exports.maxBodyLength,
 | 
					 | 
				
			||||||
        }, options);
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      if (typeof options === "function") {
 | 
				
			||||||
 | 
					        callback = options;
 | 
				
			||||||
 | 
					        options = null;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // Set defaults
 | 
				
			||||||
 | 
					      options = Object.assign({
 | 
				
			||||||
 | 
					        maxRedirects: exports.maxRedirects,
 | 
				
			||||||
 | 
					        maxBodyLength: exports.maxBodyLength,
 | 
				
			||||||
 | 
					      }, input, options);
 | 
				
			||||||
      options.nativeProtocols = nativeProtocols;
 | 
					      options.nativeProtocols = nativeProtocols;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      assert.equal(options.protocol, protocol, "protocol mismatch");
 | 
					      assert.equal(options.protocol, protocol, "protocol mismatch");
 | 
				
			||||||
      debug("options", options);
 | 
					      debug("options", options);
 | 
				
			||||||
      return new RedirectableRequest(options, callback);
 | 
					      return new RedirectableRequest(options, callback);
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Executes a GET request, following redirects
 | 
					    // Executes a GET request, following redirects
 | 
				
			||||||
    wrappedProtocol.get = function (options, callback) {
 | 
					    wrappedProtocol.get = function (input, options, callback) {
 | 
				
			||||||
      var request = wrappedProtocol.request(options, callback);
 | 
					      var request = wrappedProtocol.request(input, options, callback);
 | 
				
			||||||
      request.end();
 | 
					      request.end();
 | 
				
			||||||
      return request;
 | 
					      return request;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@@ -317,6 +373,29 @@ function wrap(protocols) {
 | 
				
			|||||||
  return exports;
 | 
					  return exports;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* istanbul ignore next */
 | 
				
			||||||
 | 
					function noop() { /* empty */ }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// from https://github.com/nodejs/node/blob/master/lib/internal/url.js
 | 
				
			||||||
 | 
					function urlToOptions(urlObject) {
 | 
				
			||||||
 | 
					  var options = {
 | 
				
			||||||
 | 
					    protocol: urlObject.protocol,
 | 
				
			||||||
 | 
					    hostname: urlObject.hostname.startsWith("[") ?
 | 
				
			||||||
 | 
					      /* istanbul ignore next */
 | 
				
			||||||
 | 
					      urlObject.hostname.slice(1, -1) :
 | 
				
			||||||
 | 
					      urlObject.hostname,
 | 
				
			||||||
 | 
					    hash: urlObject.hash,
 | 
				
			||||||
 | 
					    search: urlObject.search,
 | 
				
			||||||
 | 
					    pathname: urlObject.pathname,
 | 
				
			||||||
 | 
					    path: urlObject.pathname + urlObject.search,
 | 
				
			||||||
 | 
					    href: urlObject.href,
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  if (urlObject.port !== "") {
 | 
				
			||||||
 | 
					    options.port = Number(urlObject.port);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return options;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Exports
 | 
					// Exports
 | 
				
			||||||
module.exports = wrap({ http: http, https: https });
 | 
					module.exports = wrap({ http: http, https: https });
 | 
				
			||||||
module.exports.wrap = wrap;
 | 
					module.exports.wrap = wrap;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								express-server/node_modules/follow-redirects/package.json
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								express-server/node_modules/follow-redirects/package.json
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,8 +1,8 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "_from": "follow-redirects@^1.3.0",
 | 
					  "_from": "follow-redirects@^1.3.0",
 | 
				
			||||||
  "_id": "follow-redirects@1.5.10",
 | 
					  "_id": "follow-redirects@1.6.1",
 | 
				
			||||||
  "_inBundle": false,
 | 
					  "_inBundle": false,
 | 
				
			||||||
  "_integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
 | 
					  "_integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==",
 | 
				
			||||||
  "_location": "/follow-redirects",
 | 
					  "_location": "/follow-redirects",
 | 
				
			||||||
  "_phantomChildren": {
 | 
					  "_phantomChildren": {
 | 
				
			||||||
    "ms": "2.0.0"
 | 
					    "ms": "2.0.0"
 | 
				
			||||||
@@ -20,10 +20,10 @@
 | 
				
			|||||||
  "_requiredBy": [
 | 
					  "_requiredBy": [
 | 
				
			||||||
    "/axios"
 | 
					    "/axios"
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "_resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
 | 
					  "_resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz",
 | 
				
			||||||
  "_shasum": "7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a",
 | 
					  "_shasum": "514973c44b5757368bad8bddfe52f81f015c94cb",
 | 
				
			||||||
  "_spec": "follow-redirects@^1.3.0",
 | 
					  "_spec": "follow-redirects@^1.3.0",
 | 
				
			||||||
  "_where": "D:\\Desktop\\smartshopperNodeReworkFirebase\\node_modules\\axios",
 | 
					  "_where": "D:\\5CHITM\\Diplomarbeit\\repos\\SmartShopper\\express-server\\node_modules\\axios",
 | 
				
			||||||
  "author": {
 | 
					  "author": {
 | 
				
			||||||
    "name": "Ruben Verborgh",
 | 
					    "name": "Ruben Verborgh",
 | 
				
			||||||
    "email": "ruben@verborgh.org",
 | 
					    "email": "ruben@verborgh.org",
 | 
				
			||||||
@@ -61,10 +61,7 @@
 | 
				
			|||||||
    "node": ">=4.0"
 | 
					    "node": ">=4.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "files": [
 | 
					  "files": [
 | 
				
			||||||
    "index.js",
 | 
					    "*.js"
 | 
				
			||||||
    "create.js",
 | 
					 | 
				
			||||||
    "http.js",
 | 
					 | 
				
			||||||
    "https.js"
 | 
					 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "homepage": "https://github.com/follow-redirects/follow-redirects",
 | 
					  "homepage": "https://github.com/follow-redirects/follow-redirects",
 | 
				
			||||||
  "keywords": [
 | 
					  "keywords": [
 | 
				
			||||||
@@ -94,5 +91,5 @@
 | 
				
			|||||||
    "mocha": "nyc mocha",
 | 
					    "mocha": "nyc mocha",
 | 
				
			||||||
    "test": "npm run lint && npm run mocha"
 | 
					    "test": "npm run lint && npm run mocha"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "version": "1.5.10"
 | 
					  "version": "1.6.1"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								express-server/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								express-server/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -660,7 +660,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "axios": {
 | 
					    "axios": {
 | 
				
			||||||
      "version": "0.18.0",
 | 
					      "version": "0.18.0",
 | 
				
			||||||
      "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
 | 
				
			||||||
      "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
 | 
					      "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "follow-redirects": "^1.3.0",
 | 
					        "follow-redirects": "^1.3.0",
 | 
				
			||||||
@@ -1271,9 +1271,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "follow-redirects": {
 | 
					    "follow-redirects": {
 | 
				
			||||||
      "version": "1.5.10",
 | 
					      "version": "1.6.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
 | 
					      "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "debug": "=3.1.0"
 | 
					        "debug": "=3.1.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1603
									
								
								express-server/public/ocrscan/axios.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1603
									
								
								express-server/public/ocrscan/axios.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,14 +1,24 @@
 | 
				
			|||||||
 | 
					var id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(document).ready(function() {
 | 
					$(document).ready(function() {
 | 
				
			||||||
        //initialize all modals           
 | 
					        //initialize all modals           
 | 
				
			||||||
        $('.modal').modal();
 | 
					        $('.modal').modal();
 | 
				
			||||||
        $('.materialboxed').materialbox();
 | 
					        $('.materialboxed').materialbox();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($(window).width() > 600) {
 | 
				
			||||||
 | 
					            //large     
 | 
				
			||||||
 | 
					            $(".col").css("height", "100%");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            //small    
 | 
				
			||||||
 | 
					            $(".col").css("height", "50%");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        $("#modal1").modal("open");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $(".btnanalyze").click(function() {
 | 
					    $(".btnanalyze").click(function() {
 | 
				
			||||||
        analyzeUploaded();
 | 
					        analyzeUploaded();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
//AJAX
 | 
					//AJAX
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -24,15 +34,17 @@ var config = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  firebase.initializeApp(config);
 | 
					  firebase.initializeApp(config);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function movePurchases() {
 | 
					  getAllShoppinglists();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function movePurchases(text) {
 | 
				
			||||||
    firebase.auth().onAuthStateChanged(function(user){if(user){firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idtoken) {
 | 
					    firebase.auth().onAuthStateChanged(function(user){if(user){firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idtoken) {
 | 
				
			||||||
        $.ajax({
 | 
					        $.ajax({
 | 
				
			||||||
            type: "POST",
 | 
					            type: "POST",
 | 
				
			||||||
            url: "/dones",
 | 
					            url: "/dones",
 | 
				
			||||||
            data:{
 | 
					            data:{
 | 
				
			||||||
                idtoken: idtoken,
 | 
					                idtoken: idtoken,
 | 
				
			||||||
                sl_id: "BplQ5lFU",
 | 
					                sl_id: id,
 | 
				
			||||||
                billcontent: "fsfs"
 | 
					                billcontent: text
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            success(result){
 | 
					            success(result){
 | 
				
			||||||
              console.log(result);
 | 
					              console.log(result);
 | 
				
			||||||
@@ -45,7 +57,8 @@ function movePurchases() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(".test").click(function() {
 | 
					$(".test").click(function() {
 | 
				
			||||||
    movePurchases();
 | 
					    //movePurchases();
 | 
				
			||||||
 | 
					    getAllShoppinglists();
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function analyzeUploaded() {
 | 
					function analyzeUploaded() {
 | 
				
			||||||
@@ -60,7 +73,7 @@ function analyzeUploaded() {
 | 
				
			|||||||
        loading = false;
 | 
					        loading = false;
 | 
				
			||||||
        $(".output").text(result.text);
 | 
					        $(".output").text(result.text);
 | 
				
			||||||
        $('#modal1').modal("open");
 | 
					        $('#modal1').modal("open");
 | 
				
			||||||
        movePurchases();
 | 
					        movePurchases(result.text);
 | 
				
			||||||
        $(".determinate").css("width", "0%");
 | 
					        $(".determinate").css("width", "0%");
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -74,6 +87,36 @@ function updateProgress(percent) {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getAllShoppinglists() {
 | 
				
			||||||
 | 
					    firebase.auth().onAuthStateChanged(function(user){if(user){firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idtoken) {
 | 
				
			||||||
 | 
					        $.ajax({
 | 
				
			||||||
 | 
					            type: "GET",
 | 
				
			||||||
 | 
					            url: "/myshoppinglists",
 | 
				
			||||||
 | 
					            data:{
 | 
				
			||||||
 | 
					                idtoken: idtoken,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            success(data){
 | 
				
			||||||
 | 
					                for(let item of data) {
 | 
				
			||||||
 | 
					                    $(".output").append("<a id='" + item.sl_id +"' class='collection-item'>" + item.name + "</a>")
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            error(err){
 | 
				
			||||||
 | 
					                console.error("Error: " + err);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }).catch((error) => console.error("Get id token client error: ", error));}else{console.log("Check Auth error", user)}});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(document).on("click", ".collection-item", function() {
 | 
				
			||||||
 | 
					    id = $(this).closest("a").attr("id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $(".active").removeClass("active");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $(this).addClass("active");
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var loading = false;
 | 
					var loading = false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,36 +1,35 @@
 | 
				
			|||||||
html, body {
 | 
					 | 
				
			||||||
    height: 100%;
 | 
					 | 
				
			||||||
    margin: 0;
 | 
					 | 
				
			||||||
    background-color: #90caf9;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#video {
 | 
					 | 
				
			||||||
    width: 100%;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#canvas {
 | 
					 | 
				
			||||||
    width: 100%;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.cont {
 | 
					 | 
				
			||||||
    margin-top: 3%;
 | 
					 | 
				
			||||||
    height: 100%;
 | 
					 | 
				
			||||||
    border-radius: 30px;
 | 
					 | 
				
			||||||
    background-color: rgb(44, 44, 44);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.opt1 {
 | 
					.opt1 {
 | 
				
			||||||
    background-color: rgb(44, 44, 44);
 | 
					    background-color: #ff5722 ;
 | 
				
			||||||
    height: 100%;
 | 
					    height: 100%;
 | 
				
			||||||
    border-radius: 30px;
 | 
					    max-height: 100%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.opt2 {
 | 
					.opt2 {
 | 
				
			||||||
    background-color: rgb(44, 44, 44);
 | 
					    background-color: #03a9f4;
 | 
				
			||||||
    height: 100%;
 | 
					    height: 100%;
 | 
				
			||||||
    border-radius: 30px;
 | 
					    max-height: 100%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.blah {
 | 
					.row {
 | 
				
			||||||
    
 | 
					    height: 100%;
 | 
				
			||||||
 | 
					    max-height: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					html, body {
 | 
				
			||||||
 | 
					    height: 100%;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    max-height: 100%;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ico {
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    font-size: 50vmin;
 | 
				
			||||||
 | 
					    -ms-transform: translateY(50%);
 | 
				
			||||||
 | 
					    transform: translateY(50%);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.collection .collection-item.active {
 | 
				
			||||||
 | 
					    /* background-color: #00c853; */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -441,7 +441,7 @@ router.post("/dones", async function(req, res, next) {
 | 
				
			|||||||
      console.log("So andere sachen: ", req.body.name, req.body.description);
 | 
					      console.log("So andere sachen: ", req.body.name, req.body.description);
 | 
				
			||||||
      try {
 | 
					      try {
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        res.status(200).send("Done");
 | 
					        res.status(200).send(await postgres.moveDoneItems(uid, req.body.sl_id, req.body.billcontent));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
      catch(err) {
 | 
					      catch(err) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,16 +3,25 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<head>
 | 
					<head>
 | 
				
			||||||
    <meta charset="UTF-8">
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
				
			||||||
    <title>Scan Purchases automatically</title>
 | 
					    <meta http-equiv="X-UA-Compatible" content="ie=edge">
 | 
				
			||||||
 | 
					    <title>Document</title>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <script src="https://www.gstatic.com/firebasejs/5.7.0/firebase.js"></script>
 | 
					    <script src="https://www.gstatic.com/firebasejs/5.7.0/firebase.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 | 
				
			||||||
 | 
					    <script src="/ocrscan/axios.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <script src='https://cdn.jsdelivr.net/gh/naptha/tesseract.js@v1.0.14/dist/tesseract.min.js'></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!--Import Google Icon Font-->
 | 
					    <!--Import Google Icon Font-->
 | 
				
			||||||
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
 | 
					    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
 | 
					
 | 
				
			||||||
    <script src='https://cdn.jsdelivr.net/gh/naptha/tesseract.js@v1.0.14/dist/tesseract.min.js'></script>
 | 
					    <!--Let browser know website is optimized for mobile-->
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Compiled and minified CSS -->
 | 
					    <!-- Compiled and minified CSS -->
 | 
				
			||||||
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
 | 
					    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
 | 
				
			||||||
@@ -20,74 +29,39 @@
 | 
				
			|||||||
    <!-- Compiled and minified JavaScript -->
 | 
					    <!-- Compiled and minified JavaScript -->
 | 
				
			||||||
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
 | 
					    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <link rel="stylesheet" href="/ocrscan/style.css">
 | 
					    <link rel="stylesheet" href="ocrscan/style.css">
 | 
				
			||||||
 | 
					 | 
				
			||||||
</head>
 | 
					</head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<body>
 | 
					<body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <div class="row">
 | 
				
			||||||
 | 
					        <div class="col s12 m6 l6 opt1 waves-effect waves-dark" >
 | 
				
			||||||
 | 
					            <center><i class="material-icons ico" >file_upload</i></center>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div class="cont row container z-depth-4">
 | 
					        <div class="col s12 m6 l6 opt2 waves-effect waves-dark">
 | 
				
			||||||
    <button data-target="modal-upload" class="btn modal-trigger">Upload Image</button>
 | 
					            
 | 
				
			||||||
    <button data-target="modal-upload" class="btn modal-trigger">Make Image</button>
 | 
					            <center><i class="material-icons ico">camera</i></center>
 | 
				
			||||||
    
 | 
					        </div>
 | 
				
			||||||
    <button class="test">Tessst</button>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <div class="progress grey lighten-1">
 | 
					 | 
				
			||||||
        <div class="determinate green accent-4" style="width: 0%"></div>
 | 
					 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <ul class="collection with-header">
 | 
					  <!-- Modal Structure -->
 | 
				
			||||||
        <li class="collection-header"><h4>Choose List</h4></li>
 | 
					  <div id="modal1" class="modal">
 | 
				
			||||||
        <li class="collection-item"><div>Test<a class="secondary-content"><i class="material-icons">send</i></a></div></li>
 | 
					 | 
				
			||||||
      </ul>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <!-- Modal Upload -->
 | 
					 | 
				
			||||||
  <div id="modal-upload" class="modal">
 | 
					 | 
				
			||||||
    <div class="modal-content">
 | 
					    <div class="modal-content">
 | 
				
			||||||
      <h4>Choose Image</h4>
 | 
					      <h4>Choose Shoppinglist</h4>
 | 
				
			||||||
      
 | 
					      <div class="collection output">
 | 
				
			||||||
      
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      <div class="file-field input-field">
 | 
					 | 
				
			||||||
        <div class="btn">
 | 
					 | 
				
			||||||
          <span>File</span>
 | 
					 | 
				
			||||||
          <input type='file' onchange="readURL(this);" />
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
        <div class="file-path-wrapper">
 | 
					 | 
				
			||||||
          <input class="file-path validate" type="text" placeholder="Upload one or more files">
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    <img class="materialboxed" id="blah" src="#" alt="your image" />
 | 
					                
 | 
				
			||||||
 | 
					 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <div class="modal-footer">
 | 
					    <div class="modal-footer">
 | 
				
			||||||
        <a class="modal-close waves-effect waves-red btn-flat">Cancel</a>
 | 
					            <a href="/dash" class="modal-close waves-effect waves-red btn-flat">Return to Dashboard</a>
 | 
				
			||||||
      <a class="modal-close waves-effect waves-green btn-flat btnanalyze">Continue</a>
 | 
					      <a href="#!" class="modal-close waves-effect waves-green btn-flat">Continue</a>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <script src="/ocrscan/cam.js"></script>
 | 
				
			||||||
 | 
					  <script src="/ocrscan/ocrscan.js"></script>
 | 
				
			||||||
  <!-- Modal Upload -->
 | 
					  <script src="/ocrscan/fileuploads.js"></script>
 | 
				
			||||||
<div id="modal1" class="modal">
 | 
					 | 
				
			||||||
    <div class="modal-content">
 | 
					 | 
				
			||||||
        <h4>Result</h4>
 | 
					 | 
				
			||||||
        <p class="output"></p>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    <div class="modal-footer">
 | 
					 | 
				
			||||||
        <a class="modal-close waves-effect waves-green btn-flat">Ok</a>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
          
 | 
					 | 
				
			||||||
    <script src="/ocrscan/cam.js"></script>
 | 
					 | 
				
			||||||
    <script src="/ocrscan/ocrscan.js"></script>
 | 
					 | 
				
			||||||
    <script src="/ocrscan/fileuploads.js"></script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</body>
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user