diff --git a/extensions/fablabchemnitz_imagetracerjs.inx b/extensions/fablabchemnitz_imagetracerjs.inx
new file mode 100644
index 00000000..4fcb1526
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs.inx
@@ -0,0 +1,65 @@
+
+
+ Imagetracer.js
+ fablabchemnitz.de.imagetracerjs
+
+
+
+
+ false
+ 1.0
+ 1.0
+ 8
+ true
+
+
+
+
+
+
+
+
+ 16
+ 0
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+ false
+
+ 1
+ false
+ false
+
+
+
+ 0
+ 20.0
+
+
+
+
+
+
+
+
+
+
+ image
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extensions/fablabchemnitz_imagetracerjs/fablabchemnitz_imagetracerjs.py b/extensions/fablabchemnitz_imagetracerjs/fablabchemnitz_imagetracerjs.py
new file mode 100644
index 00000000..6f42ac83
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/fablabchemnitz_imagetracerjs.py
@@ -0,0 +1,160 @@
+#!/usr/bin/env python3
+
+import sys
+import inkex
+import os
+import base64
+import urllib.request as urllib
+from PIL import Image
+from io import BytesIO
+from lxml import etree
+
+"""
+Extension for InkScape 1.X
+Features
+ - will vectorize your beautiful image into a more beautiful SVG trace with separated infills(break apart into single surfaces like a puzzle)
+
+Author: Mario Voigt / FabLab Chemnitz
+Mail: mario.voigt@stadtfabrikanten.org
+Date: 18.08.2020
+Last patch: 18.08.2020
+License: GNU GPL v3
+
+Used version of imagetracerjs: https://github.com/jankovicsandras/imagetracerjs/commit/4d0f429efbb936db1a43db80815007a2cb113b34
+"""
+
+class Imagetracerjs (inkex.Effect):
+
+ def checkImagePath(self, node):
+ xlink = node.get('xlink:href')
+ if xlink and xlink[:5] == 'data:':
+ # No need, data alread embedded
+ return
+
+ url = urllib.urlparse(xlink)
+ href = urllib.url2pathname(url.path)
+
+ # Primary location always the filename itself.
+ path = self.absolute_href(href or '')
+
+ # Backup directory where we can find the image
+ if not os.path.isfile(path):
+ path = node.get('sodipodi:absref', path)
+
+ if not os.path.isfile(path):
+ inkex.errormsg('File not found "{}". Unable to embed image.').format(path)
+ return
+
+ if (os.path.isfile(path)):
+ return path
+
+ def __init__(self):
+ inkex.Effect.__init__(self)
+ self.arg_parser.add_argument("--tabs")
+ self.arg_parser.add_argument("--keeporiginal", type=inkex.Boolean, default=False, help="Keep original image on canvas")
+ self.arg_parser.add_argument("--ltres", type=float, default=1.0, help="Error treshold straight lines")
+ self.arg_parser.add_argument("--qtres", type=float, default=1.0, help="Error treshold quadratic splines")
+ self.arg_parser.add_argument("--pathomit", type=int, default=8, help="Noise reduction - discard edge node paths shorter than")
+ self.arg_parser.add_argument("--rightangleenhance", type=inkex.Boolean, default=True, help="Enhance right angle corners")
+ self.arg_parser.add_argument("--colorsampling", default="2",help="Color sampling")
+ self.arg_parser.add_argument("--numberofcolors", type=int, default=16, help="Number of colors to use on palette")
+ self.arg_parser.add_argument("--mincolorratio", type=int, default=0, help="Color randomization ratio")
+ self.arg_parser.add_argument("--colorquantcycles", type=int, default=3, help="Color quantization will be repeated this many times")
+ self.arg_parser.add_argument("--layering", default="0",help="Layering")
+ self.arg_parser.add_argument("--strokewidth", type=float, default=1.0, help="SVG stroke-width")
+ self.arg_parser.add_argument("--linefilter", type=inkex.Boolean, default=False, help="Noise reduction line filter")
+ #self.arg_parser.add_argument("--scale", type=float, default=1.0, help="Coordinate scale factor")
+ self.arg_parser.add_argument("--roundcoords", type=int, default=1, help="Decimal places for rounding")
+ self.arg_parser.add_argument("--viewbox", type=inkex.Boolean, default=False, help="Enable or disable SVG viewBox")
+ self.arg_parser.add_argument("--desc", type=inkex.Boolean, default=False, help="SVG descriptions")
+ self.arg_parser.add_argument("--blurradius", type=int, default=0, help="Selective Gaussian blur preprocessing")
+ self.arg_parser.add_argument("--blurdelta", type=float, default=20.0, help="RGBA delta treshold for selective Gaussian blur preprocessing")
+
+ def effect(self):
+
+ # internal overwrite for scale:
+ self.options.scale = 1.0
+
+ if (self.options.ids):
+ for node in self.svg.selected.values():
+ if node.tag == inkex.addNS('image', 'svg'):
+ self.path = self.checkImagePath(node) # This also ensures the file exists
+ if self.path is None: # check if image is embedded or linked
+ image_string = node.get('{http://www.w3.org/1999/xlink}href')
+ # find comma position
+ i = 0
+ while i < 40:
+ if image_string[i] == ',':
+ break
+ i = i + 1
+ image = Image.open(BytesIO(base64.b64decode(image_string[i + 1:len(image_string)])))
+ else:
+ image = Image.open(self.path)
+
+ # Write the embedded or linked image to temporary directory
+ exportfile = "imagetracerjs.png"
+ image.save(exportfile, "png")
+
+ nodeclipath = os.path.join("imagetracerjs-master", "nodecli", "nodecli.js")
+
+ ## Build up imagetracerjs command according to your settings from extension GUI
+ command = "node " # "node.exe" or "node" on Windows or just "node" on Linux
+ if os.name=="nt": # your OS is Windows. We handle path separator as "\\" instead of unix-like "/"
+ command += str(nodeclipath).replace("\\", "\\\\")
+ else:
+ command += str(nodeclipath)
+ command += " " + exportfile
+ command += " ltres " + str(self.options.ltres)
+ command += " qtres " + str(self.options.qtres)
+ command += " pathomit " + str(self.options.pathomit)
+ command += " rightangleenhance " + str(self.options.rightangleenhance).lower()
+ command += " colorsampling " + str(self.options.colorsampling)
+ command += " numberofcolors " + str(self.options.numberofcolors)
+ command += " mincolorratio " + str(self.options.mincolorratio)
+ command += " numberofcolors " + str(self.options.numberofcolors)
+ command += " colorquantcycles " + str(self.options.colorquantcycles)
+ command += " layering " + str(self.options.layering)
+ command += " strokewidth " + str(self.options.strokewidth)
+ command += " linefilter " + str(self.options.linefilter).lower()
+ command += " scale " + str(self.options.scale)
+ command += " roundcoords " + str(self.options.roundcoords)
+ command += " viewbox " + str(self.options.viewbox).lower()
+ command += " desc " + str(self.options.desc).lower()
+ command += " blurradius " + str(self.options.blurradius)
+ command += " blurdelta " + str(self.options.blurdelta)
+
+ #inkex.utils.debug(command)
+
+ # Create the vector traced SVG file
+ with os.popen(command, "r") as tracerprocess:
+ result = tracerprocess.read()
+ #inkex.utils.debug(result)
+
+ # proceed if traced SVG file was successfully created
+ if os.path.exists(exportfile + ".svg"):
+ # Delete the temporary png file again because we do not need it anymore
+ if os.path.exists(exportfile):
+ os.remove(exportfile)
+
+ # new parse the SVG file and insert it as new group into the current document tree
+ doc = etree.parse(exportfile + ".svg").getroot()
+ newGroup = self.document.getroot().add(inkex.Group())
+ newGroup.attrib['transform'] = "matrix(" + \
+ str(float(node.get('width')) / float(doc.get('width'))) + \
+ ", 0, 0 , " + \
+ str(float(node.get('height')) / float(doc.get('height'))) + \
+ "," + node.get('x') + \
+ "," + node.get('y') + ")"
+ newGroup.append(doc)
+
+ # Delet the temporary svg file
+ if os.path.exists(exportfile + ".svg"):
+ os.remove(exportfile + ".svg")
+
+ #remove the old image or not
+ if self.options.keeporiginal is not True:
+ node.getparent().remove(node)
+ else:
+ inkex.utils.debug("No image found for tracing. Please select an image first.")
+
+Imagetracerjs().run()
\ No newline at end of file
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.eslintrc.json b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.eslintrc.json
new file mode 100644
index 00000000..87f6bce6
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.eslintrc.json
@@ -0,0 +1,24 @@
+{
+ "env": {
+ "browser": true
+ },
+ "extends": "eslint:recommended",
+ "rules": {
+ "indent": [
+ 2,
+ "tab"
+ ],
+ "linebreak-style": [
+ 2,
+ "windows"
+ ],
+ "quotes": [
+ 2,
+ "single"
+ ],
+ "semi": [
+ 2,
+ "always"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.project b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.project
new file mode 100644
index 00000000..4a32755f
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.project
@@ -0,0 +1,17 @@
+
+
+ imagetracerjs
+
+
+
+
+
+ org.eclipse.wst.jsdt.core.javascriptValidator
+
+
+
+
+
+ org.eclipse.wst.jsdt.core.jsNature
+
+
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.settings/.jsdtscope b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.settings/.jsdtscope
new file mode 100644
index 00000000..c19fafc7
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.settings/.jsdtscope
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.settings/org.eclipse.wst.jsdt.ui.superType.container b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 00000000..49c8cd4f
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.JRE_CONTAINER
\ No newline at end of file
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.settings/org.eclipse.wst.jsdt.ui.superType.name b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 00000000..11006e2a
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Global
\ No newline at end of file
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/LICENSE b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/LICENSE
new file mode 100644
index 00000000..a84c3956
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/LICENSE
@@ -0,0 +1,25 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to
+
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/README.md b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/README.md
new file mode 100644
index 00000000..6e9d6c9d
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/README.md
@@ -0,0 +1,306 @@
+# imagetracerjs
+![alt Bitmap to Svg](docimages/s1.png)
+
+Simple raster image tracer and vectorizer written in JavaScript.
+
+---
+
+## Table of contents
+- [Getting started](#getting-started)
+- [News](#news)
+- [API](#api)
+- [Options](#options)
+- [Examples](#examples)
+- [Process overview](#process-overview)
+- [License](#license)
+
+---
+
+## Getting started
+
+### Using in the Browser
+Include the script:
+```javascript
+
+```
+Then:
+```javascript
+// Loading an image, tracing with the 'posterized2' option preset, and appending the SVG to an element with id="svgcontainer"
+ImageTracer.imageToSVG(
+
+ 'panda.png', /* input filename / URL */
+
+ function(svgstr){ ImageTracer.appendSVGString( svgstr, 'svgcontainer' ); }, /* callback function to run on SVG string result */
+
+ 'posterized2' /* Option preset */
+
+);
+```
+
+### Using with Node.js
+
+Node.js Command line interface example:
+
+```
+imagetracerjs/nodecli>node nodecli ../panda.png outfilename panda.svg scale 10
+```
+
+Expected result:
+
+```
+imagetracerjs/nodecli/panda.svg was saved!
+```
+
+---
+
+## News
+
+### 1.2.6
+ - FIXED: hole shape parent search (Issues #31 #39)
+ - FIXED: Handle (absolute) paths in CLI correctly Issue #42
+
+### 1.2.5
+ - RGBA ImageData check in colorquantization(), solving Issue #24 and #18
+
+### 1.2.4
+ - ```options.layering``` : default 0 = sequential, new method ; 1 = parallel, old method. (Enhancement Issue #17)
+ - case insensitive option preset names
+ - README.md reorganizing
+
+[Version history](https://github.com/jankovicsandras/imagetracerjs/blob/master/version_history.md)
+
+---
+
+## API
+|Function name|Arguments|Returns|Run type|
+|-------------|---------|-------|--------|
+|```imageToSVG```|```image_url /*string*/ , callback /*function*/ , options /*optional object or preset name*/```|Nothing, ```callback(svgstring)``` will be executed|Asynchronous, Browser only|
+|```imagedataToSVG```|```imagedata /*object*/ , options /*optional object or preset name*/```|```svgstring /*string*/```|Synchronous, Browser & Node.js|
+|```imageToTracedata```|```image_url /*string*/ , callback /*function*/ , options /*optional object or preset name*/```|Nothing, ```callback(tracedata)``` will be executed|Asynchronous, Browser only|
+|```imagedataToTracedata```|```imagedata /*object*/ , options /*optional object or preset name*/```|```tracedata /*object*/```|Synchronous, Browser & Node.js|
+
+```imagedata``` is standard [ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData) here, ```canvas``` is [canvas](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas) .
+
+### Helper Functions (Browser only)
+|Function name|Arguments|Returns|Run type|
+|-------------|---------|-------|--------|
+|```appendSVGString```|```svgstring /*string*/, parentid /*string*/```|Nothing, an SVG will be appended to the container DOM element with id=parentid.|Synchronous, Browser only|
+|```loadImage```|```url /*string*/, callback /*function*/```|Nothing, loading an image from a URL, then executing ```callback(canvas)```|Asynchronous, Browser only|
+|```getImgdata```|```canvas /*object*/```|```imagedata /*object*/```|Synchronous, Browser only|
+
+```imagedata``` is standard [ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData) here, ```canvas``` is [canvas](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas) .
+There are more functions for advanced users, read the source if you are interested. :)
+
+"Browser only" means that Node.js doesn't have built-in canvas and DOM support as of 2018, so loading an image to an ImageData object needs an external library.
+
+---
+
+## Options
+You can use an option preset name (string) or an [options object](https://github.com/jankovicsandras/imagetracerjs/blob/master/options.md) to control the tracing and rendering process.
+
+![Option presets gallery](docimages/option_presets_small.png)
+
+These strings can be passed instead of the options object:
+```'default'```
+```'posterized1'```
+```'posterized2'```
+```'posterized3'```
+```'curvy'```
+```'sharp'```
+```'detailed'```
+```'smoothed'```
+```'grayscale'```
+```'fixedpalette'```
+```'randomsampling1'```
+```'randomsampling2'```
+```'artistic1'```
+```'artistic2'```
+```'artistic3'```
+```'artistic4'```
+
+[Read more about options.](https://github.com/jankovicsandras/imagetracerjs/blob/master/options.md)
+
+---
+
+## Examples
+
+### Using in the Browser
+Include the script:
+```javascript
+
+```
+Then
+```javascript
+// Loading smiley.png, tracing and calling alert callback on the SVG string result
+ImageTracer.imageToSVG( 'smiley.png', alert );
+
+
+// Almost the same with options, and the ImageTracer.appendSVGString callback will append the SVG
+ImageTracer.imageToSVG( 'smiley.png', ImageTracer.appendSVGString, { ltres:0.1, qtres:1, scale:10, strokewidth:5 } );
+
+
+// This uses the 'posterized2' option preset and appends the SVG to an element with id="svgcontainer"
+ImageTracer.imageToSVG(
+ 'panda.png',
+ function(svgstr){ ImageTracer.appendSVGString( svgstr, 'svgcontainer' ); },
+ 'posterized2'
+);
+
+
+// The helper function loadImage() loads an image to a canvas, then executing callback:
+// appending the canvas to a div here.
+ImageTracer.loadImage(
+ 'panda.png',
+ function(canvas){ (document.getElementById('canvascontainer')).appendChild(canvas); }
+);
+
+
+// ImageData can be traced to an SVG string synchronously.
+ImageTracer.loadImage(
+ 'smiley.png',
+ function(canvas){
+
+ // Getting ImageData from canvas with the helper function getImgdata().
+ var imgd = ImageTracer.getImgdata( canvas );
+
+ // Synchronous tracing to SVG string
+ var svgstr = ImageTracer.imagedataToSVG( imgd, { scale:5 } );
+
+ // Appending SVG
+ ImageTracer.appendSVGString( svgstr, 'svgcontainer' );
+
+ }
+);
+
+
+// This will load an image, trace it when loaded, and execute callback on the tracedata:
+// stringifying and alerting it here.
+ImageTracer.imageToTracedata(
+ 'smiley.png',
+ function(tracedata){ alert( JSON.stringify( tracedata ) ); },
+ { ltres:0.1, qtres:1, scale:10 }
+);
+
+
+// imagedataToTracedata() is very similar to the previous functions. This returns tracedata synchronously.
+ImageTracer.loadImage(
+ 'smiley.png',
+ function(canvas){
+
+ // Getting ImageData from canvas with the helper function getImgdata().
+ var imgd = ImageTracer.getImgdata(canvas);
+
+ // Synchronous tracing to tracedata
+ var tracedata = ImageTracer.imagedataToTracedata( imgd, { ltres:1, qtres:0.01, scale:10 } );
+
+ alert( JSON.stringify( tracedata ) );
+ }
+);
+```
+
+### Using with Node.js CLI
+
+Node.js Command line interface example:
+
+```
+imagetracerjs/nodecli>node nodecli ../panda.png outfilename panda.svg scale 10
+```
+
+Expected result:
+
+```
+imagetracerjs/nodecli/panda.svg was saved!
+```
+
+CLI parameter names are supported both with and without trailing dash: ```-scale 10``` and ```scale 10``` are both correct.
+Almost all options are supported, except ```pal``` and ```layercontainerid```.
+
+### Simple Node.js converting example
+
+```javascript
+"use strict";
+
+var fs = require('fs');
+
+var ImageTracer = require( __dirname + '/../imagetracer_v1.2.6' );
+
+// This example uses https://github.com/arian/pngjs
+// , but other libraries can be used to load an image file to an ImageData object.
+var PNGReader = require( __dirname + '/PNGReader' );
+
+// Input and output filepaths / URLs
+var infilepath = __dirname + '/' + 'panda.png';
+var outfilepath = __dirname + '/' + 'panda.svg';
+
+
+fs.readFile(
+
+ infilepath,
+
+ function( err, bytes ){ // fs.readFile callback
+ if(err){ console.log(err); throw err; }
+
+ var reader = new PNGReader(bytes);
+
+ reader.parse( function( err, png ){ // PNGReader callback
+ if(err){ console.log(err); throw err; }
+
+ // creating an ImageData object
+ var myImageData = { width:png.width, height:png.height, data:png.pixels };
+
+ // tracing to SVG string
+ var options = { scale: 5 }; // options object; option preset string can be used also
+
+ var svgstring = ImageTracer.imagedataToSVG( myImageData, options );
+
+ // writing to file
+ fs.writeFile(
+ outfilepath,
+ svgstring,
+ function(err){ if(err){ console.log(err); throw err; } console.log( outfilepath + ' was saved!' ); }
+ );
+
+ });// End of reader.parse()
+
+ }// End of readFile callback()
+
+);// End of fs.readFile()
+```
+
+### Tracedata processing / Simplify.js example
+It's possible to process the traced geometry and color data before SVG rendering. This example [simplify_interop.html](https://github.com/jankovicsandras/imagetracerjs/blob/master/simplify_interop.html) shows polyline simplification. You need to download simplify.js from https://github.com/mourner/simplify-js .
+
+---
+
+## Process overview
+See [Process overview and Ideas for improvement](https://github.com/jankovicsandras/imagetracerjs/blob/master/process_overview.md)
+
+---
+
+## License
+### The Unlicense / PUBLIC DOMAIN
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to [http://unlicense.org](http://unlicense.org)
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/bower.json b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/bower.json
new file mode 100644
index 00000000..5fcf697f
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/bower.json
@@ -0,0 +1,34 @@
+{
+ "name": "imagetracerjs",
+ "description": "raster image tracer and vectorizer, bitmap to SVG converter",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jankovicsandras/imagetracerjs.git"
+ },
+ "main": "imagetracer_v1.2.6.js",
+ "keywords": [
+ "image",
+ "tracer",
+ "tracing",
+ "vector",
+ "raster",
+ "vectorize",
+ "vectorizing",
+ "convert",
+ "conversion",
+ "converting",
+ "bitmap",
+ "svg",
+ "bmp",
+ "png",
+ "jpg",
+ "jpeg",
+ "gif"
+ ],
+ "authors": [ "András Jankovics" ],
+ "license": "Unlicense",
+ "bugs": {
+ "url": "https://github.com/jankovicsandras/imagetracerjs/issues"
+ },
+ "homepage": "https://github.com/jankovicsandras/imagetracerjs#readme"
+}
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/cover_problem.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/cover_problem.png
new file mode 100644
index 00000000..f457b688
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/cover_problem.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/option_presets.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/option_presets.png
new file mode 100644
index 00000000..49be0a9d
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/option_presets.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/option_presets_small.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/option_presets_small.png
new file mode 100644
index 00000000..dc21ab62
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/option_presets_small.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s1.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s1.png
new file mode 100644
index 00000000..469e2acd
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s1.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s10.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s10.png
new file mode 100644
index 00000000..358cb023
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s10.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s11.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s11.png
new file mode 100644
index 00000000..3af8e7c2
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s11.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s12.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s12.png
new file mode 100644
index 00000000..e0c8f699
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s12.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s13.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s13.png
new file mode 100644
index 00000000..64eb1f6a
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s13.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s14.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s14.png
new file mode 100644
index 00000000..4a61d942
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s14.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s15.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s15.png
new file mode 100644
index 00000000..33d7506e
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s15.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s2.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s2.png
new file mode 100644
index 00000000..ddde649f
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s2.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s3.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s3.png
new file mode 100644
index 00000000..2045a109
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s3.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s4.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s4.png
new file mode 100644
index 00000000..c517488e
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s4.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s7.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s7.png
new file mode 100644
index 00000000..6aaf04d7
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s7.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s8.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s8.png
new file mode 100644
index 00000000..1e024247
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s8.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s9.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s9.png
new file mode 100644
index 00000000..17285597
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/s9.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/transparency_problem.png b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/transparency_problem.png
new file mode 100644
index 00000000..754593ed
Binary files /dev/null and b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/docimages/transparency_problem.png differ
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/imagetracer_examples.html b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/imagetracer_examples.html
new file mode 100644
index 00000000..32d6ce7e
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/imagetracer_examples.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/imagetracer_options_gallery.html b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/imagetracer_options_gallery.html
new file mode 100644
index 00000000..1866d658
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/imagetracer_options_gallery.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+ imagetracer.js options gallery
+
+
+
+
+
+
+
+
+
+
Original
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/imagetracer_test_automation.html b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/imagetracer_test_automation.html
new file mode 100644
index 00000000..ff17b688
--- /dev/null
+++ b/extensions/fablabchemnitz_imagetracerjs/imagetracerjs-master/imagetracer_test_automation.html
@@ -0,0 +1,334 @@
+
+
+
+
+ imagetracer.js test automation
+
+
+
+
+
+
+
+
+