From 52888d5ae1604a4bd802b6746d052d83bdedcb32 Mon Sep 17 00:00:00 2001 From: toshan-luktuke Date: Fri, 26 Aug 2022 21:20:50 +0530 Subject: [PATCH] Change location of files --- blockDocs/Blocks/Blur.html | 16 + blockDocs/search.js | 46 --- {Blocks => docs/Blocks}/Blur.py | 6 + {Blocks => docs/Blocks}/Camera.py | 6 + {Blocks => docs/Blocks}/ColorFilter.py | 6 + {Blocks => docs/Blocks}/ContourDetector.py | 6 + {Blocks => docs/Blocks}/Cropper.py | 6 + {Blocks => docs/Blocks}/Dilation.py | 6 + {Blocks => docs/Blocks}/EdgeDetector.py | 6 + {Blocks => docs/Blocks}/Erosion.py | 6 + {Blocks => docs/Blocks}/FaceDetector.py | 6 + {Blocks => docs/Blocks}/IMU.py | 8 +- {Blocks => docs/Blocks}/ImageRead.py | 6 + {Blocks => docs/Blocks}/MotorDriver.py | 6 + {Blocks => docs/Blocks}/ObjectDetector.py | 6 + {Blocks => docs/Blocks}/Odometer.py | 6 + {Blocks => docs/Blocks}/PID.py | 6 + {Blocks => docs/Blocks}/ROSCamera.py | 6 + {Blocks => docs/Blocks}/Screen.py | 6 + {Blocks => docs/Blocks}/Teleoperator.py | 6 + {Blocks => docs/Blocks}/Threshold.py | 6 + {Blocks => docs/Blocks}/VideoStreamer.py | 6 + {Blocks => docs/Blocks}/__init__.py | 0 {Blocks => docs/Blocks}/module.html.jinja2 | 2 +- {Blocks => docs/Blocks}/utils/__init__.py | 0 .../Blocks}/utils/models/__init__.py | 0 .../haarcascade_frontalface_default.xml | 0 .../utils/models/yolov3/yolov3-tiny.cfg | 0 .../utils/models/yolov3/yolov3-tiny.weights | Bin .../Blocks}/utils/models/yolov3/yolov3.txt | 0 docs/_pages/documentation.md | 3 + {blockDocs => docs/blockDocs}/Blocks.html | 90 ++-- docs/blockDocs/Blocks/Blur.html | 390 ++++++++++++++++++ .../blockDocs}/Blocks/Camera.html | 102 +++-- .../blockDocs}/Blocks/ColorFilter.html | 98 +++-- .../blockDocs}/Blocks/ContourDetector.html | 150 ++++--- .../blockDocs}/Blocks/Cropper.html | 94 +++-- .../blockDocs}/Blocks/Dilation.html | 102 +++-- .../blockDocs}/Blocks/EdgeDetector.html | 98 +++-- .../blockDocs}/Blocks/Erosion.html | 102 +++-- .../blockDocs}/Blocks/FaceDetector.html | 148 ++++--- {blockDocs => docs/blockDocs}/Blocks/IMU.html | 96 +++-- .../blockDocs}/Blocks/ImageRead.html | 72 ++-- .../blockDocs}/Blocks/MotorDriver.html | 128 +++--- .../blockDocs}/Blocks/Odometer.html | 78 ++-- {blockDocs => docs/blockDocs}/Blocks/PID.html | 152 ++++--- .../blockDocs}/Blocks/ROSCamera.html | 86 ++-- .../blockDocs}/Blocks/Screen.html | 78 ++-- .../blockDocs}/Blocks/Teleoperator.html | 130 +++--- .../blockDocs}/Blocks/Threshold.html | 102 +++-- .../blockDocs}/Blocks/VideoStreamer.html | 90 ++-- .../blockDocs}/Blocks/utils.html | 0 .../blockDocs}/Blocks/utils/models.html | 0 docs/blockDocs/assets/blur-usage.png | Bin 0 -> 80689 bytes docs/blockDocs/assets/bulr-usage.png | Bin 0 -> 18897 bytes docs/blockDocs/assets/lenna-blur.png | Bin 0 -> 71425 bytes docs/blockDocs/assets/lenna.png | Bin 0 -> 102441 bytes {blockDocs => docs/blockDocs}/index.html | 0 docs/blockDocs/search.js | 46 +++ .../blocks/basic/code/code-widget.tsx | 2 +- 60 files changed, 1733 insertions(+), 890 deletions(-) delete mode 100644 blockDocs/search.js rename {Blocks => docs/Blocks}/Blur.py (94%) rename {Blocks => docs/Blocks}/Camera.py (92%) rename {Blocks => docs/Blocks}/ColorFilter.py (93%) rename {Blocks => docs/Blocks}/ContourDetector.py (94%) rename {Blocks => docs/Blocks}/Cropper.py (92%) rename {Blocks => docs/Blocks}/Dilation.py (93%) rename {Blocks => docs/Blocks}/EdgeDetector.py (90%) rename {Blocks => docs/Blocks}/Erosion.py (92%) rename {Blocks => docs/Blocks}/FaceDetector.py (90%) rename {Blocks => docs/Blocks}/IMU.py (90%) rename {Blocks => docs/Blocks}/ImageRead.py (89%) rename {Blocks => docs/Blocks}/MotorDriver.py (93%) rename {Blocks => docs/Blocks}/ObjectDetector.py (96%) rename {Blocks => docs/Blocks}/Odometer.py (92%) rename {Blocks => docs/Blocks}/PID.py (91%) rename {Blocks => docs/Blocks}/ROSCamera.py (93%) rename {Blocks => docs/Blocks}/Screen.py (88%) rename {Blocks => docs/Blocks}/Teleoperator.py (88%) rename {Blocks => docs/Blocks}/Threshold.py (91%) rename {Blocks => docs/Blocks}/VideoStreamer.py (91%) rename {Blocks => docs/Blocks}/__init__.py (100%) rename {Blocks => docs/Blocks}/module.html.jinja2 (99%) rename {Blocks => docs/Blocks}/utils/__init__.py (100%) rename {Blocks => docs/Blocks}/utils/models/__init__.py (100%) rename {Blocks => docs/Blocks}/utils/models/haar_cascade/haarcascade_frontalface_default.xml (100%) rename {Blocks => docs/Blocks}/utils/models/yolov3/yolov3-tiny.cfg (100%) rename {Blocks => docs/Blocks}/utils/models/yolov3/yolov3-tiny.weights (100%) rename {Blocks => docs/Blocks}/utils/models/yolov3/yolov3.txt (100%) rename {blockDocs => docs/blockDocs}/Blocks.html (89%) create mode 100644 docs/blockDocs/Blocks/Blur.html rename {blockDocs => docs/blockDocs}/Blocks/Camera.html (94%) rename {blockDocs => docs/blockDocs}/Blocks/ColorFilter.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/ContourDetector.html (94%) rename {blockDocs => docs/blockDocs}/Blocks/Cropper.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/Dilation.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/EdgeDetector.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/Erosion.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/FaceDetector.html (94%) rename {blockDocs => docs/blockDocs}/Blocks/IMU.html (96%) rename {blockDocs => docs/blockDocs}/Blocks/ImageRead.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/MotorDriver.html (94%) rename {blockDocs => docs/blockDocs}/Blocks/Odometer.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/PID.html (94%) rename {blockDocs => docs/blockDocs}/Blocks/ROSCamera.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/Screen.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/Teleoperator.html (94%) rename {blockDocs => docs/blockDocs}/Blocks/Threshold.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/VideoStreamer.html (95%) rename {blockDocs => docs/blockDocs}/Blocks/utils.html (100%) rename {blockDocs => docs/blockDocs}/Blocks/utils/models.html (100%) create mode 100644 docs/blockDocs/assets/blur-usage.png create mode 100644 docs/blockDocs/assets/bulr-usage.png create mode 100644 docs/blockDocs/assets/lenna-blur.png create mode 100644 docs/blockDocs/assets/lenna.png rename {blockDocs => docs/blockDocs}/index.html (100%) create mode 100644 docs/blockDocs/search.js diff --git a/blockDocs/Blocks/Blur.html b/blockDocs/Blocks/Blur.html index 55d399f7..826a3c56 100644 --- a/blockDocs/Blocks/Blur.html +++ b/blockDocs/Blocks/Blur.html @@ -168,6 +168,22 @@

Block Description

Outputs the blurred image through the share_image() function

+ +
+

Example Usage

+ +

Output

+ + + + + + + + + +
NormalAfter Median Blur
+
diff --git a/blockDocs/search.js b/blockDocs/search.js deleted file mode 100644 index 356dbad1..00000000 --- a/blockDocs/search.js +++ /dev/null @@ -1,46 +0,0 @@ -window.pdocSearch = (function(){ -/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o\n\n

\n\n

Visual Circuit

\n\n

\"Contributors\"\n\"Forks\"\n\"Stargazers\"\n\"Issues\"\n\"License\"

\n\n

Visual Circuit is an open source tool to develop robotic applications. It aims to make developing applications for ROS and Gazebo simple and user friendly by its intuitive block-based interface. Users have the ablity to drag and drop blocks to develop their logic. Users are also able to build completely custom blocks as well as edit code in the existing blocks, this makes Visual Circuit a robust and powerful tool to develop even complicated applications.

\n\n

For more information visit our site VisualCircuit

\n\n

Setup

\n\n

Front-end

\n\n

For more specific instructions check the frontend readme

\n\n
    \n
  1. Clone the repository https://github.com/JdeRobot/VisualCircuit.git
  2. \n
  3. Change directory to frontend
  4. \n
  5. Run npm install
  6. \n
  7. Run npm start
  8. \n
  9. Open http://localhost:3000/ in browser.
  10. \n
\n\n

Back-end

\n\n

For more specific instructions check the backend readme

\n\n
    \n
  1. Clone the repository https://github.com/JdeRobot/VisualCircuit.git
  2. \n
  3. Change directory to backend
  4. \n
  5. Create a Python3 virtual environment using venv. \nFor eg. python -m venv .venv
  6. \n
  7. After activating the virtual environment, install the dependencies by running\npip install -r requirements.txt
  8. \n
  9. Add .env file to the backend folder. And add the variables as defined in .env.template
  10. \n
  11. Create the static files to serve during execution by python manage.py collectstatic
  12. \n
  13. Start the server by running python manage.py runserver 8000
  14. \n
\n\n\n\n

Contributing

\n\n

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. For more info on how to design a block, refer to this link

\n\n

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!

\n\n
    \n
  1. Fork the Project
  2. \n
  3. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  4. \n
  5. Commit your Changes (git commit -m 'Add some AmazingFeature')
  6. \n
  7. Push to the Branch (git push origin feature/AmazingFeature)
  8. \n
  9. Open a Pull Request
  10. \n
\n\n

\n

\n"}, "Blocks.Blur": {"fullname": "Blocks.Blur", "modulename": "Blocks.Blur", "type": "module", "doc": "

\n"}, "Blocks.Blur.main": {"fullname": "Blocks.Blur.main", "modulename": "Blocks.Blur", "qualname": "main", "type": "function", "doc": "

Blurs an Object

\n\n

The object to be blurred is read through the inputs.\nWe have multiple available blurs including Gaussian, Averaging and Median Blur. \nWe can change these blurs by changing the name given in the parameter block

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire.

\n\n

Outputs the blurred image through the share_image() function

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Camera": {"fullname": "Blocks.Camera", "modulename": "Blocks.Camera", "type": "module", "doc": "

\n"}, "Blocks.Camera.main": {"fullname": "Blocks.Camera.main", "modulename": "Blocks.Camera", "qualname": "main", "type": "function", "doc": "

Opens your Camera using OpenCV

\n\n

The Camera block opens your webcam using OpenCV and begins capturing the video feed.\nThis video feed is then propagated forward through the share_image() function

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.ColorFilter": {"fullname": "Blocks.ColorFilter", "modulename": "Blocks.ColorFilter", "type": "module", "doc": "

\n"}, "Blocks.ColorFilter.main": {"fullname": "Blocks.ColorFilter.main", "modulename": "Blocks.ColorFilter", "qualname": "main", "type": "function", "doc": "

Filters Colour according to given parameters

\n\n

The image to be filtered is read through the inputs.\nWe can give a Filter between any HSV range by changing the range of the parameters LowerRGB and UpperRGB.

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire .

\n\n

Here the image is tranformed from BGR to HSV and then the filter is applied through the cv2.inRange()\nfunction. Finally the filtered image is overlayed on the orignal by the means of the\ncv2.bitwise_and() function. This filtered image is then shared through the share_image() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.ContourDetector": {"fullname": "Blocks.ContourDetector", "modulename": "Blocks.ContourDetector", "type": "module", "doc": "

\n"}, "Blocks.ContourDetector.main": {"fullname": "Blocks.ContourDetector.main", "modulename": "Blocks.ContourDetector", "qualname": "main", "type": "function", "doc": "

Detects Contours in an Image

\n\n

The image in which contours are to be detected is read through the inputs.\nFirst the image is converted from BGR to Grayscale, the thresholding values are 60, 255.\nThe function used is cv2.threshold().\nOnce it is thersholded, the contours are detected in the image using cv2.findContours()

\n\n

The program then detects the biggest contour present in the image and finds the co-ordinates of its center\nusing the cv2.moments() function.

\n\n

This co-ords of the center alongwith the contour characteristics are part of the output array.\nTHis array is shared through share_array()

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire.

\n\n

Further reading

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Cropper": {"fullname": "Blocks.Cropper", "modulename": "Blocks.Cropper", "type": "module", "doc": "

\n"}, "Blocks.Cropper.main": {"fullname": "Blocks.Cropper.main", "modulename": "Blocks.Cropper", "qualname": "main", "type": "function", "doc": "

Crops an Image

\n\n

The image which is to be cropped is read through the inputs using the inputs.read_image() function.\nThe parameters ask for x, y, w, h

\n\n
x: x co-ordinate of where the crop should start\n\ny: y co-ordinate of where the crop should start\n\nw: width of the crop\n\nh: height of the crop\n\n
\n\n

Image is cropped by simple list slicing.

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire.\nOutput is shared via share_image()

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Dilation": {"fullname": "Blocks.Dilation", "modulename": "Blocks.Dilation", "type": "module", "doc": "

\n"}, "Blocks.Dilation.main": {"fullname": "Blocks.Dilation.main", "modulename": "Blocks.Dilation", "qualname": "main", "type": "function", "doc": "

Dilates an Image

\n\n

You can specify the kernel dimensions and number of iterations in the parameters.

\n\n

We first convert the colour of the image from BGR to GRAY then we apply dilation on it \nusing the cv2.dilate() function.

\n\n

Finaly we convert from GRAY back to BGR and output the image through the share_image() function.

\n\n

Further reading

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.EdgeDetector": {"fullname": "Blocks.EdgeDetector", "modulename": "Blocks.EdgeDetector", "type": "module", "doc": "

\n"}, "Blocks.EdgeDetector.main": {"fullname": "Blocks.EdgeDetector.main", "modulename": "Blocks.EdgeDetector", "qualname": "main", "type": "function", "doc": "

Detects Edges in an Image

\n\n

It takes in two parameters Lower and Upper. These parameters are used as the limits in Canny Edge \nDetection. First we convert the input BGR image to GRAY. Next we apply Canny Edge Detection via the \ncv2.Canny() function. The resulting image is then converted back to BGR.

\n\n

This image is then shared to the wire via the share_image() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Erosion": {"fullname": "Blocks.Erosion", "modulename": "Blocks.Erosion", "type": "module", "doc": "

\n"}, "Blocks.Erosion.main": {"fullname": "Blocks.Erosion.main", "modulename": "Blocks.Erosion", "qualname": "main", "type": "function", "doc": "

Erodes an Image

\n\n

You can specify the kernel dimensions and number of iterations in the parameters.

\n\n

We first convert the colour of the image from BGR to GRAY then we apply erosion on it \nusing the cv2.erode() function.

\n\n

Finaly we convert from GRAY back to BGR and output the image through the share_image() function.

\n\n

Further reading

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.FaceDetector": {"fullname": "Blocks.FaceDetector", "modulename": "Blocks.FaceDetector", "type": "module", "doc": "

\n"}, "Blocks.FaceDetector.main": {"fullname": "Blocks.FaceDetector.main", "modulename": "Blocks.FaceDetector", "qualname": "main", "type": "function", "doc": "

Detects Faces in the Image

\n\n

This block applies a Harr Cascade based model on the input image. \nIt takes as an input the parameter BoxOrImage. This parameter has two possible values:\nBoxOrImage: image / box

\n\n

If image is given: The output is the image passed in with a bounding box around the area where \na face is detected. Image is shared through the share_image() function.

\n\n

Else if box is given, the output is the co-ordinates of the bounding box in the form of an array. It \nis chared through the share_array() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.IMU": {"fullname": "Blocks.IMU", "modulename": "Blocks.IMU", "type": "module", "doc": "

\n"}, "Blocks.IMU.callback": {"fullname": "Blocks.IMU.callback", "modulename": "Blocks.IMU", "qualname": "callback", "type": "function", "doc": "

The callback function is required by the Subscriber to the ROSTopic. This callback function reads the orientation list from the IMU\nIt then converts the quaternion angles to euler ones. This gives us the roll, pitch and yaw of the body.\nWe convert these radian values to degrees to get the orientation of the body.

\n\n

Aside from these values the IMU also gives us the angular velocity of the body.

\n\n

All of these values are stored in the global data variable of the block.

\n", "signature": "(msg)", "funcdef": "def"}, "Blocks.IMU.main": {"fullname": "Blocks.IMU.main", "modulename": "Blocks.IMU", "qualname": "main", "type": "function", "doc": "

Reads IMU sensor data

\n\n

This is a specialized block used to read IMU sensor data.

\n\n

It reads the ROSTopic name from the ROSTopic parameter. Default is mavros/imu/data.

\n\n

This data is sent to the callback function which converts the orientation list obtained into roll, pitch and yaw for the\nrobot that the IMU is present on. Alongwith orientation, it also gives the angular velocity of the robot.\nThis data is shared in the form of an array using the share_array() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.ImageRead": {"fullname": "Blocks.ImageRead", "modulename": "Blocks.ImageRead", "type": "module", "doc": "

\n"}, "Blocks.ImageRead.main": {"fullname": "Blocks.ImageRead.main", "modulename": "Blocks.ImageRead", "qualname": "main", "type": "function", "doc": "

Reads an Image from a Specified Path

\n\n

This box reads an image from a given file path. The path to be specified is written in the parameter\nImagePath.

\n\n

It is read through the cv2.imread() function and shared through the share_image() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.MotorDriver": {"fullname": "Blocks.MotorDriver", "modulename": "Blocks.MotorDriver", "type": "module", "doc": "

\n"}, "Blocks.MotorDriver.callback": {"fullname": "Blocks.MotorDriver.callback", "modulename": "Blocks.MotorDriver", "qualname": "callback", "type": "function", "doc": "

\n", "signature": "(inp)", "funcdef": "def"}, "Blocks.MotorDriver.main": {"fullname": "Blocks.MotorDriver.main", "modulename": "Blocks.MotorDriver", "qualname": "main", "type": "function", "doc": "

Publishes Twist Command to drive Motors

\n\n

It publishes to the ROSTopic name from the ROSTopic parameter. Default is /robot/cmd_vel.

\n\n

It reads an array as an input by the read_array() function.

\n\n

This is assumed to be of the format [ linear_velocity, angular_velocity ].

\n\n

This data is then converted into a Twist() message with the linear.x = linear_velocity and angular.z = angular_velocity

\n\n

The data is then published continuously

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Odometer": {"fullname": "Blocks.Odometer", "modulename": "Blocks.Odometer", "type": "module", "doc": "

\n"}, "Blocks.Odometer.callback": {"fullname": "Blocks.Odometer.callback", "modulename": "Blocks.Odometer", "qualname": "callback", "type": "function", "doc": "

\n", "signature": "(msg)", "funcdef": "def"}, "Blocks.Odometer.main": {"fullname": "Blocks.Odometer.main", "modulename": "Blocks.Odometer", "qualname": "main", "type": "function", "doc": "

Reads Data from An Odometer

\n\n

It reads the ROSTopic name from the ROSTopic parameter.\nIt then initializes a Subscriber to subscribe to that ROSTopic, once the data is obtained through the callback\nfunction, it is formatted into an array with the format: [ x, y, yaw ]

\n\n

This data is then shared to the wire using the share_array() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.PID": {"fullname": "Blocks.PID", "modulename": "Blocks.PID", "type": "module", "doc": "

\n"}, "Blocks.PID.main": {"fullname": "Blocks.PID.main", "modulename": "Blocks.PID", "qualname": "main", "type": "function", "doc": "

Applies PID for a Given Error Value

\n\n

The error is read as an input from the inputs wire.

\n\n

The Kp, Ki, and Kd parameters are read from the parameters of the same name.\nOnce there it applies the PID technique to the error variable in order to minimize it.

\n\n

The resulting values are shared through the share_array() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.ROSCamera": {"fullname": "Blocks.ROSCamera", "modulename": "Blocks.ROSCamera", "type": "module", "doc": "

\n"}, "Blocks.ROSCamera.callback": {"fullname": "Blocks.ROSCamera.callback", "modulename": "Blocks.ROSCamera", "qualname": "callback", "type": "function", "doc": "

\n", "signature": "(msg)", "funcdef": "def"}, "Blocks.ROSCamera.main": {"fullname": "Blocks.ROSCamera.main", "modulename": "Blocks.ROSCamera", "qualname": "main", "type": "function", "doc": "

Gets Image from a ROSCamera

\n\n

The camera topic is read from the ROSTopic parameter, by default it is /robot/camera

\n\n

The image message is converted to OpenCV compatible format via the imgmsg_to_cv2() function.

\n\n

This is then shared ahead using the share_image() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Screen": {"fullname": "Blocks.Screen", "modulename": "Blocks.Screen", "type": "module", "doc": "

\n"}, "Blocks.Screen.main": {"fullname": "Blocks.Screen.main", "modulename": "Blocks.Screen", "qualname": "main", "type": "function", "doc": "

Displays the given Image

\n\n

Takes an image as an input and displays it on the user's screen.\nThe cv2.imshow() function is used in order to display the image.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Teleoperator": {"fullname": "Blocks.Teleoperator", "modulename": "Blocks.Teleoperator", "type": "module", "doc": "

\n"}, "Blocks.Teleoperator.main": {"fullname": "Blocks.Teleoperator.main", "modulename": "Blocks.Teleoperator", "qualname": "main", "type": "function", "doc": "

Used to Imitate the Movements of the Operator

\n\n

It takes in an array as input, depending on the array variables, it will output another array\ncontaining the velocity it deems appropriate.\nThe linear_velocity can be given via the Linear parameter.

\n\n

The output data is a list of the format: [ linear_velocity, angular_velocity ]

\n\n

This is then shared to the output wire using the share_array() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Threshold": {"fullname": "Blocks.Threshold", "modulename": "Blocks.Threshold", "type": "module", "doc": "

\n"}, "Blocks.Threshold.main": {"fullname": "Blocks.Threshold.main", "modulename": "Blocks.Threshold", "qualname": "main", "type": "function", "doc": "

Thresholds an Image

\n\n

THis block reads the parameters LowerThreshold and UpperThreshold.

\n\n

Based on these values it converts the input image form BGR into GRAY and applies the cv2.threshold() function on it.

\n\n

The image is then converted back into BGR and shared to the output wire using the\nshare_image() function.

\n\n

Further reading

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.VideoStreamer": {"fullname": "Blocks.VideoStreamer", "modulename": "Blocks.VideoStreamer", "type": "module", "doc": "

\n"}, "Blocks.VideoStreamer.main": {"fullname": "Blocks.VideoStreamer.main", "modulename": "Blocks.VideoStreamer", "qualname": "main", "type": "function", "doc": "

Streams Video from File

\n\n

The filepath of your video is given in the PathToFile parameter.\nNote: that this file path is relative to the modules folder of the final built application.

\n\n

Capturing begins using the cv2.VideoCapture() function. \nThe video is then read frame by frame and each frame is shared to the output wire using the\nshare_image() function.

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.utils": {"fullname": "Blocks.utils", "modulename": "Blocks.utils", "type": "module", "doc": "

\n"}, "Blocks.utils.models": {"fullname": "Blocks.utils.models", "modulename": "Blocks.utils.models", "type": "module", "doc": "

\n"}}, "docInfo": {"Blocks": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 484}, "Blocks.Blur": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Blur.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 90}, "Blocks.Camera": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Camera.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 72}, "Blocks.ColorFilter": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.ColorFilter.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 139}, "Blocks.ContourDetector": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.ContourDetector.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 168}, "Blocks.Cropper": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Cropper.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 131}, "Blocks.Dilation": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Dilation.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 87}, "Blocks.EdgeDetector": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.EdgeDetector.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 90}, "Blocks.Erosion": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Erosion.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 87}, "Blocks.FaceDetector": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.FaceDetector.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 119}, "Blocks.IMU": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.IMU.callback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 3, "bases": 0, "doc": 93}, "Blocks.IMU.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 99}, "Blocks.ImageRead": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.ImageRead.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 59}, "Blocks.MotorDriver": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.MotorDriver.callback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 3, "bases": 0, "doc": 3}, "Blocks.MotorDriver.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 100}, "Blocks.Odometer": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Odometer.callback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 3, "bases": 0, "doc": 3}, "Blocks.Odometer.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 74}, "Blocks.PID": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.PID.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 75}, "Blocks.ROSCamera": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.ROSCamera.callback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 3, "bases": 0, "doc": 3}, "Blocks.ROSCamera.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 64}, "Blocks.Screen": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Screen.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 38}, "Blocks.Teleoperator": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Teleoperator.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 86}, "Blocks.Threshold": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Threshold.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 84}, "Blocks.VideoStreamer": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.VideoStreamer.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 80}, "Blocks.utils": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.utils.models": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}}, "length": 45, "save": true}, "index": {"qualname": {"root": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.MotorDriver.callback": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}}, "df": 4}}}}}}}}}}, "fullname": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur": {"tf": 1}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver": {"tf": 1}, "Blocks.MotorDriver.callback": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}, "Blocks.utils": {"tf": 1}, "Blocks.utils.models": {"tf": 1}}, "df": 45}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Blur": {"tf": 1}, "Blocks.Blur.main": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.MotorDriver": {"tf": 1}, "Blocks.MotorDriver.callback": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}}, "df": 3}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.utils.models": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.Camera": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.MotorDriver.callback": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}}, "df": 4}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ColorFilter": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}}, "df": 2}}}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ContourDetector": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Cropper": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Dilation": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}}, "df": 2}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.EdgeDetector": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}}, "df": 2}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Erosion": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.FaceDetector": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {"Blocks.IMU": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 3}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ImageRead": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Odometer": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 3}}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.PID": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.ROSCamera": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 3}}}}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Screen": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Teleoperator": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 2}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Threshold": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 2}}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.VideoStreamer": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.utils": {"tf": 1}, "Blocks.utils.models": {"tf": 1}}, "df": 2}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"docs": {}, "df": 0}}, "signature": {"root": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.callback": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.callback": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.callback": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1.4142135623730951}, "Blocks.Screen.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 23, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {"Blocks.MotorDriver.callback": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}}}}}, "s": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}}, "df": 3}}}}}, "bases": {"root": {"docs": {}, "df": 0}}, "doc": {"root": {"0": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}, "2": {"5": {"5": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"0": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "8": {"0": {"0": {"0": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"Blocks": {"tf": 12.806248474865697}, "Blocks.Blur": {"tf": 1.7320508075688772}, "Blocks.Blur.main": {"tf": 3.7416573867739413}, "Blocks.Camera": {"tf": 1.7320508075688772}, "Blocks.Camera.main": {"tf": 3.4641016151377544}, "Blocks.ColorFilter": {"tf": 1.7320508075688772}, "Blocks.ColorFilter.main": {"tf": 5.0990195135927845}, "Blocks.ContourDetector": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 6}, "Blocks.Cropper": {"tf": 1.7320508075688772}, "Blocks.Cropper.main": {"tf": 5.477225575051661}, "Blocks.Dilation": {"tf": 1.7320508075688772}, "Blocks.Dilation.main": {"tf": 5.385164807134504}, "Blocks.EdgeDetector": {"tf": 1.7320508075688772}, "Blocks.EdgeDetector.main": {"tf": 4.898979485566356}, "Blocks.Erosion": {"tf": 1.7320508075688772}, "Blocks.Erosion.main": {"tf": 5.385164807134504}, "Blocks.FaceDetector": {"tf": 1.7320508075688772}, "Blocks.FaceDetector.main": {"tf": 5}, "Blocks.IMU": {"tf": 1.7320508075688772}, "Blocks.IMU.callback": {"tf": 3}, "Blocks.IMU.main": {"tf": 4.242640687119285}, "Blocks.ImageRead": {"tf": 1.7320508075688772}, "Blocks.ImageRead.main": {"tf": 4}, "Blocks.MotorDriver": {"tf": 1.7320508075688772}, "Blocks.MotorDriver.callback": {"tf": 1.7320508075688772}, "Blocks.MotorDriver.main": {"tf": 5.477225575051661}, "Blocks.Odometer": {"tf": 1.7320508075688772}, "Blocks.Odometer.callback": {"tf": 1.7320508075688772}, "Blocks.Odometer.main": {"tf": 4}, "Blocks.PID": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 4}, "Blocks.ROSCamera": {"tf": 1.7320508075688772}, "Blocks.ROSCamera.callback": {"tf": 1.7320508075688772}, "Blocks.ROSCamera.main": {"tf": 4.47213595499958}, "Blocks.Screen": {"tf": 1.7320508075688772}, "Blocks.Screen.main": {"tf": 2.8284271247461903}, "Blocks.Teleoperator": {"tf": 1.7320508075688772}, "Blocks.Teleoperator.main": {"tf": 4.358898943540674}, "Blocks.Threshold": {"tf": 1.7320508075688772}, "Blocks.Threshold.main": {"tf": 5.5677643628300215}, "Blocks.VideoStreamer": {"tf": 1.7320508075688772}, "Blocks.VideoStreamer.main": {"tf": 4.47213595499958}, "Blocks.utils": {"tf": 1.7320508075688772}, "Blocks.utils.models": {"tf": 1.7320508075688772}}, "df": 45, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1.7320508075688772}}, "df": 2, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {"Blocks.Cropper.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "v": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}, "l": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 2}, "Blocks.Teleoperator.main": {"tf": 2}}, "df": 4}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 2, "s": {"docs": {"Blocks": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 5}}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "o": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 3, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}}}}, "/": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 3}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}}, "df": 6}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.7320508075688772}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 5}}, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 3}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.Blur.main": {"tf": 1}}, "df": 2, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 2.23606797749979}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"Blocks.Cropper.main": {"tf": 2}}, "df": 1, "s": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 9, "n": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1.7320508075688772}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Camera.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 3}}}}}}}, "v": {"2": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1.7320508075688772}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 10}, "docs": {}, "df": 0}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur.main": {"tf": 2}, "Blocks.Camera.main": {"tf": 2}, "Blocks.ColorFilter.main": {"tf": 2.8284271247461903}, "Blocks.ContourDetector.main": {"tf": 2.8284271247461903}, "Blocks.Cropper.main": {"tf": 2.6457513110645907}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 2.6457513110645907}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 2.23606797749979}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 2}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 2}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 2}}, "df": 19, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1.7320508075688772}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}}, "df": 20, "s": {"docs": {"Blocks": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}}}}}}}, "n": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 2.23606797749979}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1.7320508075688772}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.7320508075688772}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 17, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {"Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}}, "df": 4}}, "f": {"docs": {}, "df": 0, "o": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 7, "s": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1}}, "df": 5}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Odometer.main": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {"Blocks": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}}, "df": 2}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 2.23606797749979}, "Blocks.ContourDetector.main": {"tf": 2.23606797749979}, "Blocks.Cropper.main": {"tf": 2.23606797749979}, "Blocks.Dilation.main": {"tf": 2}, "Blocks.EdgeDetector.main": {"tf": 2.23606797749979}, "Blocks.Erosion.main": {"tf": 2}, "Blocks.FaceDetector.main": {"tf": 2.6457513110645907}, "Blocks.ImageRead.main": {"tf": 1.7320508075688772}, "Blocks.ROSCamera.main": {"tf": 1.7320508075688772}, "Blocks.Screen.main": {"tf": 1.7320508075688772}, "Blocks.Threshold.main": {"tf": 2}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 14, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.ImageRead.main": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.7320508075688772}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ImageRead.main": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"Blocks.Screen.main": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {"Blocks": {"tf": 2.6457513110645907}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.7320508075688772}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 10, "n": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.Blur.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 16, "d": {"docs": {"Blocks": {"tf": 2.6457513110645907}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1.7320508075688772}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 16}, "y": {"docs": {"Blocks": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}}, "df": 2}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1.7320508075688772}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 4}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}, "s": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}}, "df": 3}}}, "y": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 3}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 2}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.PID.main": {"tf": 1.4142135623730951}}, "df": 5, "a": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.7320508075688772}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 2}}, "df": 7}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 3}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}, "s": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 7, "k": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 2.23606797749979}}, "df": 1, "s": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}}, "df": 1}, "c": {"docs": {}, "df": 0, "v": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1.7320508075688772}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 8, "s": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {"Blocks": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}}, "df": 9, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "g": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 2}, "Blocks.Cropper.main": {"tf": 2.23606797749979}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 2.23606797749979}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 14}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Odometer.main": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"Blocks.Screen.main": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 2}, "y": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.IMU.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "t": {"docs": {"Blocks.IMU.main": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ImageRead.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "y": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.IMU.main": {"tf": 1}}, "df": 1}}}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "t": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 2}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Odometer.main": {"tf": 1}}, "df": 1, "r": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 2}}}}}}}}}, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "#": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 17, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 13}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Screen.main": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "o": {"docs": {"Blocks": {"tf": 3.872983346207417}, "Blocks.Blur.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1.7320508075688772}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 2}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1.7320508075688772}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1.4142135623730951}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 19, "o": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 4.242640687119285}, "Blocks.Blur.main": {"tf": 3}, "Blocks.Camera.main": {"tf": 2.449489742783178}, "Blocks.ColorFilter.main": {"tf": 3.872983346207417}, "Blocks.ContourDetector.main": {"tf": 4.242640687119285}, "Blocks.Cropper.main": {"tf": 3.3166247903554}, "Blocks.Dilation.main": {"tf": 2.6457513110645907}, "Blocks.EdgeDetector.main": {"tf": 2.449489742783178}, "Blocks.Erosion.main": {"tf": 2.6457513110645907}, "Blocks.FaceDetector.main": {"tf": 3.4641016151377544}, "Blocks.IMU.callback": {"tf": 3.872983346207417}, "Blocks.IMU.main": {"tf": 3.1622776601683795}, "Blocks.ImageRead.main": {"tf": 2}, "Blocks.MotorDriver.main": {"tf": 2.449489742783178}, "Blocks.Odometer.main": {"tf": 2.6457513110645907}, "Blocks.PID.main": {"tf": 3}, "Blocks.ROSCamera.main": {"tf": 2.23606797749979}, "Blocks.Screen.main": {"tf": 2}, "Blocks.Teleoperator.main": {"tf": 3.1622776601683795}, "Blocks.Threshold.main": {"tf": 2.449489742783178}, "Blocks.VideoStreamer.main": {"tf": 2.8284271247461903}}, "df": 21, "i": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1.7320508075688772}, "Blocks.Threshold.main": {"tf": 1}}, "df": 4}}, "n": {"docs": {"Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 13}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.7320508075688772}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 15}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 9}, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.Blur.main": {"tf": 1.7320508075688772}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ColorFilter.main": {"tf": 2}, "Blocks.ContourDetector.main": {"tf": 1.7320508075688772}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 11}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"Blocks.Threshold.main": {"tf": 1}}, "df": 1}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 4}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.MotorDriver.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 8}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.Screen.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.Screen.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Dilation.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.Dilation.main": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Dilation.main": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 2}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 5}}}}, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.IMU.main": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 5}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 10, "m": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 4}}}, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}}, "df": 6}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 2}}, "df": 1, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.IMU.main": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 2}}, "df": 1}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 2.449489742783178}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 4, "k": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Camera.main": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Odometer.main": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "m": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 12}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1.7320508075688772}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}, "y": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 4}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1.4142135623730951}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 20}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 4}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 2.23606797749979}}, "df": 1}, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}}, "df": 2, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 8}, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}}, "df": 2, "s": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 12}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "b": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Threshold.main": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "b": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "y": {"docs": {"Blocks": {"tf": 2}, "Blocks.Blur.main": {"tf": 1.7320508075688772}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ColorFilter.main": {"tf": 2}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.7320508075688772}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 10}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 7, "s": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.Blur.main": {"tf": 1.7320508075688772}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 3}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 5, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "t": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 8, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Camera.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}}, "df": 6}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "x": {"docs": {"Blocks.FaceDetector.main": {"tf": 2}, "Blocks.ImageRead.main": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.FaceDetector.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.IMU.callback": {"tf": 1.7320508075688772}}, "df": 1}}}}, "h": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.Blur.main": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}, "s": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "w": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, ":": {"3": {"0": {"0": {"0": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "b": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Threshold.main": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.MotorDriver.main": {"tf": 1.7320508075688772}, "Blocks.Teleoperator.main": {"tf": 1.7320508075688772}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.Cropper.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 4}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.7320508075688772}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.7320508075688772}, "Blocks.IMU.callback": {"tf": 1}}, "df": 6, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"Blocks.Camera.main": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 4}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 11}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.ImageRead.main": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}, "v": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5, "d": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}}}}, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Erosion.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.Erosion.main": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Erosion.main": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.PID.main": {"tf": 1.7320508075688772}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"3": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 2}}}, "d": {"docs": {"Blocks.PID.main": {"tf": 1.4142135623730951}}, "df": 1}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}, "s": {"docs": {}, "df": 0, "h": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.MotorDriver.main": {"tf": 1.4142135623730951}}, "df": 1}, "d": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Camera.main": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 9, "s": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}}, "df": 7}}}}}}}, "t": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.ImageRead.main": {"tf": 1.7320508075688772}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}}}}}}, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "m": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {"Blocks.Cropper.main": {"tf": 1.7320508075688772}, "Blocks.Odometer.main": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "u": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 3, "r": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "w": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 3}}}, "x": {"docs": {"Blocks.Cropper.main": {"tf": 1.7320508075688772}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 3}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}, "i": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}, "d": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}}}}}}, "z": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; - - // mirrored in build-search-index.js (part 1) - // Also split on html tags. this is a cheap heuristic, but good enough. - elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); - - let searchIndex; - if (docs._isPrebuiltIndex) { - console.info("using precompiled search index"); - searchIndex = elasticlunr.Index.load(docs); - } else { - console.time("building search index"); - // mirrored in build-search-index.js (part 2) - searchIndex = elasticlunr(function () { - this.pipeline.remove(elasticlunr.stemmer); - this.pipeline.remove(elasticlunr.stopWordFilter); - this.addField("qualname"); - this.addField("fullname"); - this.addField("annotation"); - this.addField("default_value"); - this.addField("signature"); - this.addField("bases"); - this.addField("doc"); - this.setRef("fullname"); - }); - for (let doc of docs) { - searchIndex.addDoc(doc); - } - console.timeEnd("building search index"); - } - - return (term) => searchIndex.search(term, { - fields: { - qualname: {boost: 4}, - fullname: {boost: 2}, - annotation: {boost: 2}, - default_value: {boost: 2}, - signature: {boost: 2}, - bases: {boost: 2}, - doc: {boost: 1}, - }, - expand: true - }); -})(); \ No newline at end of file diff --git a/Blocks/Blur.py b/docs/Blocks/Blur.py similarity index 94% rename from Blocks/Blur.py rename to docs/Blocks/Blur.py index 43070b9c..14c577b7 100644 --- a/Blocks/Blur.py +++ b/docs/Blocks/Blur.py @@ -12,6 +12,12 @@ def main(inputs, outputs, parameters, synchronise): It is enabled by default but can be disabled by passing in 0 through the enable wire. Outputs the blurred image through the `share_image()` function + + **Inputs**: BGR Image + + **Outputs**: BGR Image + + **Parameters**: BlurType """ # Blur Type blur_type : str = parameters.read_string("BlurType") diff --git a/Blocks/Camera.py b/docs/Blocks/Camera.py similarity index 92% rename from Blocks/Camera.py rename to docs/Blocks/Camera.py index 0e0c713b..e4237f2f 100644 --- a/Blocks/Camera.py +++ b/docs/Blocks/Camera.py @@ -9,6 +9,12 @@ def main(inputs, outputs, parameters, synchronise): `while` loop is the part of the program that is executed continuously. It is enabled by default but can be disabled by passing in 0 through the enable wire. + + **Inputs**: None + + **Outputs**: BGR Image + + **Parameters**: None ''' cap = cv2.VideoCapture(0) auto_enable = False diff --git a/Blocks/ColorFilter.py b/docs/Blocks/ColorFilter.py similarity index 93% rename from Blocks/ColorFilter.py rename to docs/Blocks/ColorFilter.py index 05a2846e..8ce81f92 100644 --- a/Blocks/ColorFilter.py +++ b/docs/Blocks/ColorFilter.py @@ -13,6 +13,12 @@ def main(inputs, outputs, parameters, synchronise): Here the image is tranformed from `BGR` to `HSV` and then the filter is applied through the `cv2.inRange()` function. Finally the filtered image is overlayed on the orignal by the means of the `cv2.bitwise_and()` function. This filtered image is then shared through the `share_image()` function. + + **Inputs**: BGR Image + + **Outputs**: BGR Image + + **Parameters**: LowerHSV, UpperHSV ''' lower_rgb = np.array([int(x.strip()) for x in parameters.read_string('LowerRGB').split(',')]) upper_rgb = np.array([int(x.strip()) for x in parameters.read_string('UpperRGB').split(',')]) diff --git a/Blocks/ContourDetector.py b/docs/Blocks/ContourDetector.py similarity index 94% rename from Blocks/ContourDetector.py rename to docs/Blocks/ContourDetector.py index f8fb1d14..27f446ff 100644 --- a/Blocks/ContourDetector.py +++ b/docs/Blocks/ContourDetector.py @@ -19,6 +19,12 @@ def main(inputs, outputs, parameters, synchronise): It is enabled by default but can be disabled by passing in 0 through the enable wire. [Further reading](https://docs.opencv.org/4.x/d4/d73/tutorial_py_contours_begin.html) + + **Inputs**: BGR Image + + **Outputs**: Array [x, y, width, height, angle of rotation], BGR Image + + **Parameters**: None ''' auto_enable = False try: diff --git a/Blocks/Cropper.py b/docs/Blocks/Cropper.py similarity index 92% rename from Blocks/Cropper.py rename to docs/Blocks/Cropper.py index 00eed4b7..dc73ed5e 100644 --- a/Blocks/Cropper.py +++ b/docs/Blocks/Cropper.py @@ -16,6 +16,12 @@ def main(inputs, outputs, parameters, synchronise): `while` loop is the part of the program that is executed continuously. It is enabled by default but can be disabled by passing in 0 through the enable wire. Output is shared via `share_image()` + + **Inputs**: BGR Image + + **Outputs**: Resized BGR Image + + **Parameters**: x, y, width, height ''' x, y, w, h = np.array([int(x.strip()) for x in parameters.read_string("xywh").split(",")]) diff --git a/Blocks/Dilation.py b/docs/Blocks/Dilation.py similarity index 93% rename from Blocks/Dilation.py rename to docs/Blocks/Dilation.py index 1522d5e1..59057951 100644 --- a/Blocks/Dilation.py +++ b/docs/Blocks/Dilation.py @@ -11,6 +11,12 @@ def main(inputs, outputs, parameters, synchronise): Finaly we convert from `GRAY` back to `BGR` and output the image through the `share_image()` function. [Further reading](https://docs.opencv.org/4.x/d9/d61/tutorial_py_morphological_ops.html) + + **Inputs**: BGR Image + + **Outputs**: BGR Image + + **Parameters**: Kernel, Iterations ''' kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) kernel = np.ones(kernel, np.uint8) diff --git a/Blocks/EdgeDetector.py b/docs/Blocks/EdgeDetector.py similarity index 90% rename from Blocks/EdgeDetector.py rename to docs/Blocks/EdgeDetector.py index f20744dc..1844d03f 100644 --- a/Blocks/EdgeDetector.py +++ b/docs/Blocks/EdgeDetector.py @@ -9,6 +9,12 @@ def main(inputs, outputs, parameters, synchronise): `cv2.Canny()` function. The resulting image is then converted back to `BGR`. This image is then shared to the wire via the `share_image()` function. + + **Inputs**: BGR Image + + **Outputs**: BGR Image + + **Parameters**: Lower, Upper (Threshold values) ''' lower = int(parameters.read_string("Lower")) upper = int(parameters.read_string("Upper")) diff --git a/Blocks/Erosion.py b/docs/Blocks/Erosion.py similarity index 92% rename from Blocks/Erosion.py rename to docs/Blocks/Erosion.py index 97e19d88..3d6196b7 100644 --- a/Blocks/Erosion.py +++ b/docs/Blocks/Erosion.py @@ -11,6 +11,12 @@ def main(inputs, outputs, parameters, synchronise): Finaly we convert from `GRAY` back to `BGR` and output the image through the `share_image()` function. [Further reading]([Further reading](https://docs.opencv.org/4.x/d9/d61/tutorial_py_morphological_ops.html)) + + **Inputs**: BGR Image + + **Outputs**: BGR Image + + **Parameters**: Kernel, Iterations ''' kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) kernel = np.ones(kernel, np.uint8) diff --git a/Blocks/FaceDetector.py b/docs/Blocks/FaceDetector.py similarity index 90% rename from Blocks/FaceDetector.py rename to docs/Blocks/FaceDetector.py index 2fac7fab..9e1242b6 100644 --- a/Blocks/FaceDetector.py +++ b/docs/Blocks/FaceDetector.py @@ -11,6 +11,12 @@ def main(inputs, outputs, parameters, synchronise): a face is detected. Image is shared through the `share_image()` function.\n Else if `box` is given, the output is the co-ordinates of the bounding box in the form of an array. It is chared through the `share_array()` function. + + **Inputs**: BGR Image + + **Outputs**: BGR Image with Bounding Boxes + + **Parameters**: BoxOrImage ('box' for Bounding Boxes, 'image' for Image with Detections) ''' choice = parameters.read_string("BoxOrImage") diff --git a/Blocks/IMU.py b/docs/Blocks/IMU.py similarity index 90% rename from Blocks/IMU.py rename to docs/Blocks/IMU.py index 3bd36e3c..de9ffd43 100644 --- a/Blocks/IMU.py +++ b/docs/Blocks/IMU.py @@ -13,7 +13,7 @@ def callback(msg): We convert these radian values to degrees to get the orientation of the body. Aside from these values the IMU also gives us the angular velocity of the body.\n - All of these values are stored in the global data variable of the block. + All of these values are stored in the global `data` variable of the block. ''' global data # Get the orientation list from the IMU sensor @@ -40,6 +40,12 @@ def main(inputs, outputs, parameters, synchronise): This data is sent to the callback function which converts the orientation list obtained into roll, pitch and yaw for the robot that the IMU is present on. Alongwith orientation, it also gives the angular velocity of the robot. This data is shared in the form of an array using the `share_array()` function. + + **Inputs**: None + + **Outputs**: Array [Roll, Pitch , Yaw, Angular Velocity in X, Angular Velocity in Y, Angular Velocity in Z] + + **Parameters**: ROSTopic ''' global data auto_enable = False diff --git a/Blocks/ImageRead.py b/docs/Blocks/ImageRead.py similarity index 89% rename from Blocks/ImageRead.py rename to docs/Blocks/ImageRead.py index 9573bb36..a7878219 100644 --- a/Blocks/ImageRead.py +++ b/docs/Blocks/ImageRead.py @@ -7,6 +7,12 @@ def main(inputs, outputs, parameters, synchronise): This box reads an image from a given file path. The path to be specified is written in the parameter `ImagePath`.\n It is read through the `cv2.imread()` function and shared through the `share_image()` function. + + **Inputs**: None + + **Outputs**: BGR Image + + **Parameters**: ImagePath ''' path = parameters.read_string("ImagePath") image = cv2.imread(path) diff --git a/Blocks/MotorDriver.py b/docs/Blocks/MotorDriver.py similarity index 93% rename from Blocks/MotorDriver.py rename to docs/Blocks/MotorDriver.py index 4ec766e8..0b2890e2 100644 --- a/Blocks/MotorDriver.py +++ b/docs/Blocks/MotorDriver.py @@ -18,6 +18,12 @@ def main(inputs, outputs, parameters, synchronise): This data is then converted into a Twist() message with the `linear.x = linear_velocity` and `angular.z = angular_velocity` The data is then published continuously + + **Inputs**: `cmd_vel` (Linear Velocity, Angular Velocity) + + **Outputs**: None + + **Parameters**: ROSTopic ''' rospy.init_node("motordriverVC", anonymous=True) diff --git a/Blocks/ObjectDetector.py b/docs/Blocks/ObjectDetector.py similarity index 96% rename from Blocks/ObjectDetector.py rename to docs/Blocks/ObjectDetector.py index cd8f70eb..38cccbc7 100644 --- a/Blocks/ObjectDetector.py +++ b/docs/Blocks/ObjectDetector.py @@ -54,6 +54,12 @@ def main(inputs, outputs, parameters, synchronise): tag to it, a bounding box is also drawn over it. This image is then shared to the output wire using the `share_image()` function. + + **Inputs**: BGR Image + + **Outputs**: BGR Image with Bounding Boxes + + **Parameters**: None ''' auto_enable = True try: diff --git a/Blocks/Odometer.py b/docs/Blocks/Odometer.py similarity index 92% rename from Blocks/Odometer.py rename to docs/Blocks/Odometer.py index 8dd3622b..df6fb181 100644 --- a/Blocks/Odometer.py +++ b/docs/Blocks/Odometer.py @@ -17,6 +17,12 @@ def main(inputs, outputs, parameters, synchronise): It then initializes a Subscriber to subscribe to that ROSTopic, once the data is obtained through the callback function, it is formatted into an array with the format: `[ x, y, yaw ]`\n This data is then shared to the wire using the `share_array()` function. + + **Inputs**: None + + **Outputs**: Array [X, Y, Yaw] + + **Parameters**: ROSTopic ''' rospy.init_node("odometerVC", anonymous=True) rostopic_name = parameters.read_string("ROSTopic") diff --git a/Blocks/PID.py b/docs/Blocks/PID.py similarity index 91% rename from Blocks/PID.py rename to docs/Blocks/PID.py index 50190ee6..10b2a80c 100644 --- a/Blocks/PID.py +++ b/docs/Blocks/PID.py @@ -10,6 +10,12 @@ def main(inputs, outputs, parameters, synchronise): Once there it applies the PID technique to the error variable in order to minimize it. The resulting values are shared through the `share_array()` function. + + **Inputs**: Error + + **Outputs**: `cmd_vel` (Linear Velocity, Angular Velocity) + + **Parameters**: Kp, Ki, Kd ''' auto_enable = True try: diff --git a/Blocks/ROSCamera.py b/docs/Blocks/ROSCamera.py similarity index 93% rename from Blocks/ROSCamera.py rename to docs/Blocks/ROSCamera.py index 2475e07b..666dc7f0 100644 --- a/Blocks/ROSCamera.py +++ b/docs/Blocks/ROSCamera.py @@ -18,6 +18,12 @@ def main(inputs, outputs, parameters, synchronise): The image message is converted to OpenCV compatible format via the `imgmsg_to_cv2()` function. This is then shared ahead using the `share_image()` function. + + **Inputs**: None + + **Outputs**: BGR Image + + **Parameters**: ROSTopic ''' auto_enable = False try: diff --git a/Blocks/Screen.py b/docs/Blocks/Screen.py similarity index 88% rename from Blocks/Screen.py rename to docs/Blocks/Screen.py index f434e1a9..19183b88 100644 --- a/Blocks/Screen.py +++ b/docs/Blocks/Screen.py @@ -6,6 +6,12 @@ def main(inputs, outputs, parameters, synchronise): Takes an image as an input and displays it on the user's screen. The `cv2.imshow()` function is used in order to display the image. + + **Inputs**: BGR Image + + **Outputs**: None + + **Parameters**: None ''' auto_enable = False try: diff --git a/Blocks/Teleoperator.py b/docs/Blocks/Teleoperator.py similarity index 88% rename from Blocks/Teleoperator.py rename to docs/Blocks/Teleoperator.py index 8dc4dd80..11dcdaeb 100644 --- a/Blocks/Teleoperator.py +++ b/docs/Blocks/Teleoperator.py @@ -9,6 +9,12 @@ def main(inputs, outputs, parameters, synchronise): The output data is a list of the format: `[ linear_velocity, angular_velocity ]`\n This is then shared to the output wire using the `share_array()` function. + + **Inputs**: Bounding Box (x, y, width, height) + + **Outputs**: `cmd_vel` (linear velocity, angular velocity) + + **Parameters**: Linear(Linear Velocity) ''' auto_enable = True try: diff --git a/Blocks/Threshold.py b/docs/Blocks/Threshold.py similarity index 91% rename from Blocks/Threshold.py rename to docs/Blocks/Threshold.py index 72dc27ed..e7029b5e 100644 --- a/Blocks/Threshold.py +++ b/docs/Blocks/Threshold.py @@ -11,6 +11,12 @@ def main(inputs, outputs, parameters, synchronise): `share_image()` function. [Further reading](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) + + **Inputs**: BGR Image + + **Outputs**: BGR Image + + **Parameters**: LowerThreshold, UpperThreshold ''' lower = parameters.read_number("LowerThreshold") upper = parameters.read_number("UpperThreshold") diff --git a/Blocks/VideoStreamer.py b/docs/Blocks/VideoStreamer.py similarity index 91% rename from Blocks/VideoStreamer.py rename to docs/Blocks/VideoStreamer.py index 969274fa..e5da5f31 100644 --- a/Blocks/VideoStreamer.py +++ b/docs/Blocks/VideoStreamer.py @@ -10,6 +10,12 @@ def main(inputs, outputs, parameters, synchronise): Capturing begins using the `cv2.VideoCapture()` function. The video is then read frame by frame and each frame is shared to the output wire using the `share_image()` function. + + **Inputs**: None + + **Outputs**: BGR Image + + **Parameters**: PathToFile ''' filepath = parameters.read_string("PathToFile") auto_enable = False diff --git a/Blocks/__init__.py b/docs/Blocks/__init__.py similarity index 100% rename from Blocks/__init__.py rename to docs/Blocks/__init__.py diff --git a/Blocks/module.html.jinja2 b/docs/Blocks/module.html.jinja2 similarity index 99% rename from Blocks/module.html.jinja2 rename to docs/Blocks/module.html.jinja2 index 7651c0d5..365f0f98 100644 --- a/Blocks/module.html.jinja2 +++ b/docs/Blocks/module.html.jinja2 @@ -25,7 +25,7 @@ } %} -{% set parent = 'docCode' %} +{% set parent = 'Blocks' %} {% block body %} {% set currentblock = module.modulename.split(".")[-1].replace("%20", "") %} diff --git a/Blocks/utils/__init__.py b/docs/Blocks/utils/__init__.py similarity index 100% rename from Blocks/utils/__init__.py rename to docs/Blocks/utils/__init__.py diff --git a/Blocks/utils/models/__init__.py b/docs/Blocks/utils/models/__init__.py similarity index 100% rename from Blocks/utils/models/__init__.py rename to docs/Blocks/utils/models/__init__.py diff --git a/Blocks/utils/models/haar_cascade/haarcascade_frontalface_default.xml b/docs/Blocks/utils/models/haar_cascade/haarcascade_frontalface_default.xml similarity index 100% rename from Blocks/utils/models/haar_cascade/haarcascade_frontalface_default.xml rename to docs/Blocks/utils/models/haar_cascade/haarcascade_frontalface_default.xml diff --git a/Blocks/utils/models/yolov3/yolov3-tiny.cfg b/docs/Blocks/utils/models/yolov3/yolov3-tiny.cfg similarity index 100% rename from Blocks/utils/models/yolov3/yolov3-tiny.cfg rename to docs/Blocks/utils/models/yolov3/yolov3-tiny.cfg diff --git a/Blocks/utils/models/yolov3/yolov3-tiny.weights b/docs/Blocks/utils/models/yolov3/yolov3-tiny.weights similarity index 100% rename from Blocks/utils/models/yolov3/yolov3-tiny.weights rename to docs/Blocks/utils/models/yolov3/yolov3-tiny.weights diff --git a/Blocks/utils/models/yolov3/yolov3.txt b/docs/Blocks/utils/models/yolov3/yolov3.txt similarity index 100% rename from Blocks/utils/models/yolov3/yolov3.txt rename to docs/Blocks/utils/models/yolov3/yolov3.txt diff --git a/docs/_pages/documentation.md b/docs/_pages/documentation.md index d6ec1ad2..27ff9e77 100644 --- a/docs/_pages/documentation.md +++ b/docs/_pages/documentation.md @@ -13,6 +13,9 @@ sidebar: ## Project +### New Documentation +To access the new documentation, visit this link. [Visual Circuit 3.x Block Documentation](/blockDocs/index.html) + ### Definition Version: 1.0. diff --git a/blockDocs/Blocks.html b/docs/blockDocs/Blocks.html similarity index 89% rename from blockDocs/Blocks.html rename to docs/blockDocs/Blocks.html index 5271d91e..3c48ebd4 100644 --- a/blockDocs/Blocks.html +++ b/docs/blockDocs/Blocks.html @@ -25,10 +25,12 @@

Contents

@@ -71,71 +73,59 @@

Submodules

Blocks

-
+

Jekyll Local Installation

-

+

Prerequisites

-

Visual Circuit

+

Installing Ruby on Ubuntu

-

Contributors -Forks -Stargazers -Issues -License

+

First of all, we need to install all the dependencies typing:

-

Visual Circuit is an open source tool to develop robotic applications. It aims to make developing applications for ROS and Gazebo simple and user friendly by its intuitive block-based interface. Users have the ablity to drag and drop blocks to develop their logic. Users are also able to build completely custom blocks as well as edit code in the existing blocks, this makes Visual Circuit a robust and powerful tool to develop even complicated applications.

+
sudo apt-get install ruby-full build-essential zlib1g-dev
+
-

For more information visit our site VisualCircuit

+

After that, we need to set up a gem installation directory for your user account. The following commands will add environment variables to your ~/.bashrc file to configure the gem installation path. Run them now:

-

Setup

+
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
+echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
+echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
+source ~/.bashrc
+
-

Front-end

+

Finally, we install Jekyll:

-

For more specific instructions check the frontend readme

+
gem install jekyll bundler
+
-
    -
  1. Clone the repository https://github.com/JdeRobot/VisualCircuit.git
  2. -
  3. Change directory to frontend
  4. -
  5. Run npm install
  6. -
  7. Run npm start
  8. -
  9. Open http://localhost:3000/ in browser.
  10. -
+

Notice that we don't use the root user :-)

-

Back-end

+

Installing Ruby and Jekyll on Mac OS X

-

For more specific instructions check the backend readme

+

Follow the Jekyll page installation guide.

-
    -
  1. Clone the repository https://github.com/JdeRobot/VisualCircuit.git
  2. -
  3. Change directory to backend
  4. -
  5. Create a Python3 virtual environment using venv. -For eg. python -m venv .venv
  6. -
  7. After activating the virtual environment, install the dependencies by running -pip install -r requirements.txt
  8. -
  9. Add .env file to the backend folder. And add the variables as defined in .env.template
  10. -
  11. Create the static files to serve during execution by python manage.py collectstatic
  12. -
  13. Start the server by running python manage.py runserver 8000
  14. -
+

Running Jekyll Serve

- +

By default, the Jekyll server is launched with the following command (which is the one indicated on your website).

-

Contributing

+
bundle exec jekyll serve
+
-

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. For more info on how to design a block, refer to this link

+

If in the process of building the server there is a dependency problem, for example, there is a missing library to install, it is necessary to delete the Gemfile.lock file so that it is rebuilt with the installed dependency. This list of dependencies is found in the Gemfile file (in Python it would be equivalent to the requirements.txt file) and the version of each of the installed gems (packages) is specified. Having a list of dependencies is important for future updates as well as knowing the libraries needed to run the server. Once the Gemfile.lock file is deleted, the command shown above is launched again and the dependency errors should end.

-

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". -Don't forget to give the project a star! Thanks again!

+

Notes for exercise cards.

-
    -
  1. Fork the Project
  2. -
  3. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  4. -
  5. Commit your Changes (git commit -m 'Add some AmazingFeature')
  6. -
  7. Push to the Branch (git push origin feature/AmazingFeature)
  8. -
  9. Open a Pull Request
  10. -
+
    +
  • Teaser Images size: multiple of 600x400px
  • +
+ +

FAQ

+ +
    +
  • Error building Jekyll server:
  • +
-

-

+
jekyll build --incremental --verbose
+
diff --git a/docs/blockDocs/Blocks/Blur.html b/docs/blockDocs/Blocks/Blur.html new file mode 100644 index 00000000..7978bd08 --- /dev/null +++ b/docs/blockDocs/Blocks/Blur.html @@ -0,0 +1,390 @@ + + + + + + + Blocks.Blur API documentation + + + + + + + + + + + + +
+
+

+Blocks.Blur

+ + + + + + +
 1import cv2
+ 2import numpy as np
+ 3
+ 4def main(inputs, outputs, parameters, synchronise):
+ 5    """
+ 6    ## Blurs an Object\n
+ 7    The object to be blurred is read through the inputs.
+ 8    We have multiple available blurs including Gaussian, Averaging and Median Blur. 
+ 9    We can change these blurs by changing the name given in the parameter block
+10
+11    `while` loop is the part of the program that is executed continuously.
+12    It is enabled by default but can be disabled by passing in 0 through the enable wire.
+13
+14    Outputs the blurred image through the `share_image()` function
+15
+16    **Inputs**: BGR Image
+17
+18    **Outputs**: BGR Image
+19
+20    **Parameters**: BlurType
+21    """
+22    # Blur Type
+23    blur_type : str = parameters.read_string("BlurType") 
+24    """Type of blur, reads from a parameter"""
+25    # Kernel Size
+26    kernel = tuple([int(x.strip()) for x in parameters.read_string("Kernel").split(',')])
+27    auto_enable = False
+28    try:
+29        enable = inputs.read_number("Enable")
+30    except Exception:
+31        auto_enable = True
+32
+33    while(auto_enable or inputs.read_number('Enable')):
+34        frame = inputs.read_image("Img")
+35        if frame is None:
+36            continue
+37
+38        if blur_type == 'Gaussian':
+39            blurred_img = cv2.GaussianBlur(frame, kernel, 0)
+40                        
+41        elif blur_type == 'Averaging':
+42            blurred_img = cv2.blur(frame, kernel)
+43                        
+44        elif blur_type == 'Median':
+45            blurred_img = cv2.medianBlur(frame, kernel[0])
+46
+47        outputs.share_image('Out', blurred_img)
+48        synchronise()
+
+ + +
+
+ +
+ + def + main(inputs, outputs, parameters, synchronise) + + + +
+ +
 5def main(inputs, outputs, parameters, synchronise):
+ 6    """
+ 7    ## Blurs an Object\n
+ 8    The object to be blurred is read through the inputs.
+ 9    We have multiple available blurs including Gaussian, Averaging and Median Blur. 
+10    We can change these blurs by changing the name given in the parameter block
+11
+12    `while` loop is the part of the program that is executed continuously.
+13    It is enabled by default but can be disabled by passing in 0 through the enable wire.
+14
+15    Outputs the blurred image through the `share_image()` function
+16
+17    **Inputs**: BGR Image
+18
+19    **Outputs**: BGR Image
+20
+21    **Parameters**: BlurType
+22    """
+23    # Blur Type
+24    blur_type : str = parameters.read_string("BlurType") 
+25    """Type of blur, reads from a parameter"""
+26    # Kernel Size
+27    kernel = tuple([int(x.strip()) for x in parameters.read_string("Kernel").split(',')])
+28    auto_enable = False
+29    try:
+30        enable = inputs.read_number("Enable")
+31    except Exception:
+32        auto_enable = True
+33
+34    while(auto_enable or inputs.read_number('Enable')):
+35        frame = inputs.read_image("Img")
+36        if frame is None:
+37            continue
+38
+39        if blur_type == 'Gaussian':
+40            blurred_img = cv2.GaussianBlur(frame, kernel, 0)
+41                        
+42        elif blur_type == 'Averaging':
+43            blurred_img = cv2.blur(frame, kernel)
+44                        
+45        elif blur_type == 'Median':
+46            blurred_img = cv2.medianBlur(frame, kernel[0])
+47
+48        outputs.share_image('Out', blurred_img)
+49        synchronise()
+
+ + +

Block Description

+

Blurs an Object

+ +

The object to be blurred is read through the inputs. +We have multiple available blurs including Gaussian, Averaging and Median Blur. +We can change these blurs by changing the name given in the parameter block

+ +

while loop is the part of the program that is executed continuously. +It is enabled by default but can be disabled by passing in 0 through the enable wire.

+ +

Outputs the blurred image through the share_image() function

+ +

Inputs: BGR Image

+ +

Outputs: BGR Image

+ +

Parameters: BlurType

+
+ +
+

Example Usage

+ +

Output

+ + + + + + + + + +
NormalAfter Median Blur
+
+ + + +
+
+ + + + \ No newline at end of file diff --git a/blockDocs/Blocks/Camera.html b/docs/blockDocs/Blocks/Camera.html similarity index 94% rename from blockDocs/Blocks/Camera.html rename to docs/blockDocs/Blocks/Camera.html index 282aec34..b3644ced 100644 --- a/blockDocs/Blocks/Camera.html +++ b/docs/blockDocs/Blocks/Camera.html @@ -68,27 +68,33 @@

9 10 `while` loop is the part of the program that is executed continuously. 11 It is enabled by default but can be disabled by passing in 0 through the enable wire. -12 ''' -13 cap = cv2.VideoCapture(0) -14 auto_enable = False -15 try: -16 enable = inputs.read_number('Enable') -17 except Exception: -18 auto_enable = True -19 try: -20 while cap.isOpened() and (auto_enable or inputs.read_number('Enable')): -21 ret, frame = cap.read() -22 if not ret: -23 continue -24 -25 outputs.share_image("Img", frame) -26 synchronise() -27 except Exception as e: -28 print('Error:', e) -29 pass -30 finally: -31 print("Exiting") -32 cap.release() +12 +13 **Inputs**: None +14 +15 **Outputs**: BGR Image +16 +17 **Parameters**: None +18 ''' +19 cap = cv2.VideoCapture(0) +20 auto_enable = False +21 try: +22 enable = inputs.read_number('Enable') +23 except Exception: +24 auto_enable = True +25 try: +26 while cap.isOpened() and (auto_enable or inputs.read_number('Enable')): +27 ret, frame = cap.read() +28 if not ret: +29 continue +30 +31 outputs.share_image("Img", frame) +32 synchronise() +33 except Exception as e: +34 print('Error:', e) +35 pass +36 finally: +37 print("Exiting") +38 cap.release()

@@ -112,27 +118,33 @@

10 11 `while` loop is the part of the program that is executed continuously. 12 It is enabled by default but can be disabled by passing in 0 through the enable wire. -13 ''' -14 cap = cv2.VideoCapture(0) -15 auto_enable = False -16 try: -17 enable = inputs.read_number('Enable') -18 except Exception: -19 auto_enable = True -20 try: -21 while cap.isOpened() and (auto_enable or inputs.read_number('Enable')): -22 ret, frame = cap.read() -23 if not ret: -24 continue -25 -26 outputs.share_image("Img", frame) -27 synchronise() -28 except Exception as e: -29 print('Error:', e) -30 pass -31 finally: -32 print("Exiting") -33 cap.release() +13 +14 **Inputs**: None +15 +16 **Outputs**: BGR Image +17 +18 **Parameters**: None +19 ''' +20 cap = cv2.VideoCapture(0) +21 auto_enable = False +22 try: +23 enable = inputs.read_number('Enable') +24 except Exception: +25 auto_enable = True +26 try: +27 while cap.isOpened() and (auto_enable or inputs.read_number('Enable')): +28 ret, frame = cap.read() +29 if not ret: +30 continue +31 +32 outputs.share_image("Img", frame) +33 synchronise() +34 except Exception as e: +35 print('Error:', e) +36 pass +37 finally: +38 print("Exiting") +39 cap.release() @@ -144,6 +156,12 @@

Block Description

while loop is the part of the program that is executed continuously. It is enabled by default but can be disabled by passing in 0 through the enable wire.

+ +

Inputs: None

+ +

Outputs: BGR Image

+ +

Parameters: None

diff --git a/blockDocs/Blocks/ColorFilter.html b/docs/blockDocs/Blocks/ColorFilter.html similarity index 95% rename from blockDocs/Blocks/ColorFilter.html rename to docs/blockDocs/Blocks/ColorFilter.html index 81b59fe4..49c2ca67 100644 --- a/blockDocs/Blocks/ColorFilter.html +++ b/docs/blockDocs/Blocks/ColorFilter.html @@ -72,27 +72,33 @@

13 Here the image is tranformed from `BGR` to `HSV` and then the filter is applied through the `cv2.inRange()` 14 function. Finally the filtered image is overlayed on the orignal by the means of the 15 `cv2.bitwise_and()` function. This filtered image is then shared through the `share_image()` function. -16 ''' -17 lower_rgb = np.array([int(x.strip()) for x in parameters.read_string('LowerRGB').split(',')]) -18 upper_rgb = np.array([int(x.strip()) for x in parameters.read_string('UpperRGB').split(',')]) -19 -20 auto_enable = False -21 try: -22 enable = inputs.read_number('Enable') -23 except Exception: -24 auto_enable = True +16 +17 **Inputs**: BGR Image +18 +19 **Outputs**: BGR Image +20 +21 **Parameters**: LowerHSV, UpperHSV +22 ''' +23 lower_rgb = np.array([int(x.strip()) for x in parameters.read_string('LowerRGB').split(',')]) +24 upper_rgb = np.array([int(x.strip()) for x in parameters.read_string('UpperRGB').split(',')]) 25 -26 while (auto_enable or inputs.read_number('Enable')): -27 frame = inputs.read_image('Img') -28 if frame is None: -29 continue -30 -31 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) -32 mask = cv2.inRange(hsv, lower_rgb, upper_rgb) -33 filtered = cv2.bitwise_and(frame, frame, mask= mask) -34 -35 outputs.share_image('Out', filtered) -36 synchronise() +26 auto_enable = False +27 try: +28 enable = inputs.read_number('Enable') +29 except Exception: +30 auto_enable = True +31 +32 while (auto_enable or inputs.read_number('Enable')): +33 frame = inputs.read_image('Img') +34 if frame is None: +35 continue +36 +37 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) +38 mask = cv2.inRange(hsv, lower_rgb, upper_rgb) +39 filtered = cv2.bitwise_and(frame, frame, mask= mask) +40 +41 outputs.share_image('Out', filtered) +42 synchronise() @@ -120,27 +126,33 @@

14 Here the image is tranformed from `BGR` to `HSV` and then the filter is applied through the `cv2.inRange()` 15 function. Finally the filtered image is overlayed on the orignal by the means of the 16 `cv2.bitwise_and()` function. This filtered image is then shared through the `share_image()` function. -17 ''' -18 lower_rgb = np.array([int(x.strip()) for x in parameters.read_string('LowerRGB').split(',')]) -19 upper_rgb = np.array([int(x.strip()) for x in parameters.read_string('UpperRGB').split(',')]) -20 -21 auto_enable = False -22 try: -23 enable = inputs.read_number('Enable') -24 except Exception: -25 auto_enable = True +17 +18 **Inputs**: BGR Image +19 +20 **Outputs**: BGR Image +21 +22 **Parameters**: LowerHSV, UpperHSV +23 ''' +24 lower_rgb = np.array([int(x.strip()) for x in parameters.read_string('LowerRGB').split(',')]) +25 upper_rgb = np.array([int(x.strip()) for x in parameters.read_string('UpperRGB').split(',')]) 26 -27 while (auto_enable or inputs.read_number('Enable')): -28 frame = inputs.read_image('Img') -29 if frame is None: -30 continue -31 -32 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) -33 mask = cv2.inRange(hsv, lower_rgb, upper_rgb) -34 filtered = cv2.bitwise_and(frame, frame, mask= mask) -35 -36 outputs.share_image('Out', filtered) -37 synchronise() +27 auto_enable = False +28 try: +29 enable = inputs.read_number('Enable') +30 except Exception: +31 auto_enable = True +32 +33 while (auto_enable or inputs.read_number('Enable')): +34 frame = inputs.read_image('Img') +35 if frame is None: +36 continue +37 +38 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) +39 mask = cv2.inRange(hsv, lower_rgb, upper_rgb) +40 filtered = cv2.bitwise_and(frame, frame, mask= mask) +41 +42 outputs.share_image('Out', filtered) +43 synchronise() @@ -156,6 +168,12 @@

Block Description

Here the image is tranformed from BGR to HSV and then the filter is applied through the cv2.inRange() function. Finally the filtered image is overlayed on the orignal by the means of the cv2.bitwise_and() function. This filtered image is then shared through the share_image() function.

+ +

Inputs: BGR Image

+ +

Outputs: BGR Image

+ +

Parameters: LowerHSV, UpperHSV

diff --git a/blockDocs/Blocks/ContourDetector.html b/docs/blockDocs/Blocks/ContourDetector.html similarity index 94% rename from blockDocs/Blocks/ContourDetector.html rename to docs/blockDocs/Blocks/ContourDetector.html index f785a6b3..ffabcfdd 100644 --- a/blockDocs/Blocks/ContourDetector.html +++ b/docs/blockDocs/Blocks/ContourDetector.html @@ -78,40 +78,46 @@

19 It is enabled by default but can be disabled by passing in 0 through the enable wire. 20 21 [Further reading](https://docs.opencv.org/4.x/d4/d73/tutorial_py_contours_begin.html) -22 ''' -23 auto_enable = False -24 try: -25 enable = inputs.read_number("Enable") -26 except Exception: -27 auto_enable = True -28 -29 while(auto_enable or inputs.read_number('Enable')): -30 img = inputs.read_image("Img") -31 if img is None: -32 continue -33 -34 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) -35 ret, thresh = cv2.threshold(img_gray, 60, 255, cv2.THRESH_BINARY) -36 contours, hierarchy = cv2.findContours(thresh, 1, 2) -37 -38 # Find the biggest contour (if detected) -39 if len(contours) > 0: -40 cont = max(contours, key=cv2.contourArea) -41 rect = cv2.minAreaRect(cont) # Get the minimum area bounding rectangle for the contour -42 # ( center (x,y), (width, height), angle of rotation ) +22 +23 **Inputs**: BGR Image +24 +25 **Outputs**: Array [x, y, width, height, angle of rotation], BGR Image +26 +27 **Parameters**: None +28 ''' +29 auto_enable = False +30 try: +31 enable = inputs.read_number("Enable") +32 except Exception: +33 auto_enable = True +34 +35 while(auto_enable or inputs.read_number('Enable')): +36 img = inputs.read_image("Img") +37 if img is None: +38 continue +39 +40 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) +41 ret, thresh = cv2.threshold(img_gray, 60, 255, cv2.THRESH_BINARY) +42 contours, hierarchy = cv2.findContours(thresh, 1, 2) 43 -44 # Get the moments of the image -45 M = cv2.moments(cont) -46 if M['m00'] != 0: -47 # Get the coords of the center of the moments -48 cx = int(M['m10']/M['m00']) -49 cy = int(M['m01']/M['m00']) -50 -51 data = [cx, cy, rect[1][0], rect[1][1], rect[2]] -52 # Send the data to the wire in the form of an array -53 outputs.share_array('Out', data) -54 -55 synchronise() +44 # Find the biggest contour (if detected) +45 if len(contours) > 0: +46 cont = max(contours, key=cv2.contourArea) +47 rect = cv2.minAreaRect(cont) # Get the minimum area bounding rectangle for the contour +48 # ( center (x,y), (width, height), angle of rotation ) +49 +50 # Get the moments of the image +51 M = cv2.moments(cont) +52 if M['m00'] != 0: +53 # Get the coords of the center of the moments +54 cx = int(M['m10']/M['m00']) +55 cy = int(M['m01']/M['m00']) +56 +57 data = [cx, cy, rect[1][0], rect[1][1], rect[2]] +58 # Send the data to the wire in the form of an array +59 outputs.share_array('Out', data) +60 +61 synchronise() @@ -145,40 +151,46 @@

20 It is enabled by default but can be disabled by passing in 0 through the enable wire. 21 22 [Further reading](https://docs.opencv.org/4.x/d4/d73/tutorial_py_contours_begin.html) -23 ''' -24 auto_enable = False -25 try: -26 enable = inputs.read_number("Enable") -27 except Exception: -28 auto_enable = True -29 -30 while(auto_enable or inputs.read_number('Enable')): -31 img = inputs.read_image("Img") -32 if img is None: -33 continue -34 -35 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) -36 ret, thresh = cv2.threshold(img_gray, 60, 255, cv2.THRESH_BINARY) -37 contours, hierarchy = cv2.findContours(thresh, 1, 2) -38 -39 # Find the biggest contour (if detected) -40 if len(contours) > 0: -41 cont = max(contours, key=cv2.contourArea) -42 rect = cv2.minAreaRect(cont) # Get the minimum area bounding rectangle for the contour -43 # ( center (x,y), (width, height), angle of rotation ) +23 +24 **Inputs**: BGR Image +25 +26 **Outputs**: Array [x, y, width, height, angle of rotation], BGR Image +27 +28 **Parameters**: None +29 ''' +30 auto_enable = False +31 try: +32 enable = inputs.read_number("Enable") +33 except Exception: +34 auto_enable = True +35 +36 while(auto_enable or inputs.read_number('Enable')): +37 img = inputs.read_image("Img") +38 if img is None: +39 continue +40 +41 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) +42 ret, thresh = cv2.threshold(img_gray, 60, 255, cv2.THRESH_BINARY) +43 contours, hierarchy = cv2.findContours(thresh, 1, 2) 44 -45 # Get the moments of the image -46 M = cv2.moments(cont) -47 if M['m00'] != 0: -48 # Get the coords of the center of the moments -49 cx = int(M['m10']/M['m00']) -50 cy = int(M['m01']/M['m00']) -51 -52 data = [cx, cy, rect[1][0], rect[1][1], rect[2]] -53 # Send the data to the wire in the form of an array -54 outputs.share_array('Out', data) -55 -56 synchronise() +45 # Find the biggest contour (if detected) +46 if len(contours) > 0: +47 cont = max(contours, key=cv2.contourArea) +48 rect = cv2.minAreaRect(cont) # Get the minimum area bounding rectangle for the contour +49 # ( center (x,y), (width, height), angle of rotation ) +50 +51 # Get the moments of the image +52 M = cv2.moments(cont) +53 if M['m00'] != 0: +54 # Get the coords of the center of the moments +55 cx = int(M['m10']/M['m00']) +56 cy = int(M['m01']/M['m00']) +57 +58 data = [cx, cy, rect[1][0], rect[1][1], rect[2]] +59 # Send the data to the wire in the form of an array +60 outputs.share_array('Out', data) +61 +62 synchronise() @@ -200,6 +212,12 @@

Block Description

It is enabled by default but can be disabled by passing in 0 through the enable wire.

Further reading

+ +

Inputs: BGR Image

+ +

Outputs: Array [x, y, width, height, angle of rotation], BGR Image

+ +

Parameters: None

diff --git a/blockDocs/Blocks/Cropper.html b/docs/blockDocs/Blocks/Cropper.html similarity index 95% rename from blockDocs/Blocks/Cropper.html rename to docs/blockDocs/Blocks/Cropper.html index 14542092..dea8061d 100644 --- a/blockDocs/Blocks/Cropper.html +++ b/docs/blockDocs/Blocks/Cropper.html @@ -75,25 +75,31 @@

16 `while` loop is the part of the program that is executed continuously. 17 It is enabled by default but can be disabled by passing in 0 through the enable wire. 18 Output is shared via `share_image()` -19 ''' -20 x, y, w, h = np.array([int(x.strip()) for x in parameters.read_string("xywh").split(",")]) -21 -22 auto_enable = False -23 try: -24 enable = inputs.read_number("Enable") -25 except Exception: -26 auto_enable = True -27 -28 while(auto_enable or inputs.read_number('Enable')): -29 frame = inputs.read_image("Img") -30 if frame is None: -31 continue -32 -33 -34 cropped_img = frame[y:y+h, x:x+w, :] -35 outputs.share_image('Out', cropped_img) -36 -37 synchronise() +19 +20 **Inputs**: BGR Image +21 +22 **Outputs**: Resized BGR Image +23 +24 **Parameters**: x, y, width, height +25 ''' +26 x, y, w, h = np.array([int(x.strip()) for x in parameters.read_string("xywh").split(",")]) +27 +28 auto_enable = False +29 try: +30 enable = inputs.read_number("Enable") +31 except Exception: +32 auto_enable = True +33 +34 while(auto_enable or inputs.read_number('Enable')): +35 frame = inputs.read_image("Img") +36 if frame is None: +37 continue +38 +39 +40 cropped_img = frame[y:y+h, x:x+w, :] +41 outputs.share_image('Out', cropped_img) +42 +43 synchronise() @@ -124,25 +130,31 @@

17 `while` loop is the part of the program that is executed continuously. 18 It is enabled by default but can be disabled by passing in 0 through the enable wire. 19 Output is shared via `share_image()` -20 ''' -21 x, y, w, h = np.array([int(x.strip()) for x in parameters.read_string("xywh").split(",")]) -22 -23 auto_enable = False -24 try: -25 enable = inputs.read_number("Enable") -26 except Exception: -27 auto_enable = True -28 -29 while(auto_enable or inputs.read_number('Enable')): -30 frame = inputs.read_image("Img") -31 if frame is None: -32 continue -33 -34 -35 cropped_img = frame[y:y+h, x:x+w, :] -36 outputs.share_image('Out', cropped_img) -37 -38 synchronise() +20 +21 **Inputs**: BGR Image +22 +23 **Outputs**: Resized BGR Image +24 +25 **Parameters**: x, y, width, height +26 ''' +27 x, y, w, h = np.array([int(x.strip()) for x in parameters.read_string("xywh").split(",")]) +28 +29 auto_enable = False +30 try: +31 enable = inputs.read_number("Enable") +32 except Exception: +33 auto_enable = True +34 +35 while(auto_enable or inputs.read_number('Enable')): +36 frame = inputs.read_image("Img") +37 if frame is None: +38 continue +39 +40 +41 cropped_img = frame[y:y+h, x:x+w, :] +42 outputs.share_image('Out', cropped_img) +43 +44 synchronise() @@ -167,6 +179,12 @@

Block Description

while loop is the part of the program that is executed continuously. It is enabled by default but can be disabled by passing in 0 through the enable wire. Output is shared via share_image()

+ +

Inputs: BGR Image

+ +

Outputs: Resized BGR Image

+ +

Parameters: x, y, width, height

diff --git a/blockDocs/Blocks/Dilation.html b/docs/blockDocs/Blocks/Dilation.html similarity index 95% rename from blockDocs/Blocks/Dilation.html rename to docs/blockDocs/Blocks/Dilation.html index 1950a8a0..d62cf383 100644 --- a/blockDocs/Blocks/Dilation.html +++ b/docs/blockDocs/Blocks/Dilation.html @@ -70,28 +70,34 @@

11 Finaly we convert from `GRAY` back to `BGR` and output the image through the `share_image()` function. 12 13 [Further reading](https://docs.opencv.org/4.x/d9/d61/tutorial_py_morphological_ops.html) -14 ''' -15 kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) -16 kernel = np.ones(kernel, np.uint8) -17 iters = int(parameters.read_string("Iterations")) -18 auto_enable = False -19 try: -20 enable = inputs.read_number("Enable") -21 except Exception: -22 auto_enable = True -23 -24 while(auto_enable or inputs.read_number('Enable')): -25 frame = inputs.read_image("Img") -26 if frame is None: -27 continue -28 -29 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) -30 dilated = cv2.dilate(frame, kernel, iterations = iters) -31 dilated = cv2.cvtColor(dilated, cv2.COLOR_GRAY2BGR) -32 -33 outputs.share_image('Out', dilated) +14 +15 **Inputs**: BGR Image +16 +17 **Outputs**: BGR Image +18 +19 **Parameters**: Kernel, Iterations +20 ''' +21 kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) +22 kernel = np.ones(kernel, np.uint8) +23 iters = int(parameters.read_string("Iterations")) +24 auto_enable = False +25 try: +26 enable = inputs.read_number("Enable") +27 except Exception: +28 auto_enable = True +29 +30 while(auto_enable or inputs.read_number('Enable')): +31 frame = inputs.read_image("Img") +32 if frame is None: +33 continue 34 -35 synchronise() +35 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) +36 dilated = cv2.dilate(frame, kernel, iterations = iters) +37 dilated = cv2.cvtColor(dilated, cv2.COLOR_GRAY2BGR) +38 +39 outputs.share_image('Out', dilated) +40 +41 synchronise() @@ -117,28 +123,34 @@

12 Finaly we convert from `GRAY` back to `BGR` and output the image through the `share_image()` function. 13 14 [Further reading](https://docs.opencv.org/4.x/d9/d61/tutorial_py_morphological_ops.html) -15 ''' -16 kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) -17 kernel = np.ones(kernel, np.uint8) -18 iters = int(parameters.read_string("Iterations")) -19 auto_enable = False -20 try: -21 enable = inputs.read_number("Enable") -22 except Exception: -23 auto_enable = True -24 -25 while(auto_enable or inputs.read_number('Enable')): -26 frame = inputs.read_image("Img") -27 if frame is None: -28 continue -29 -30 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) -31 dilated = cv2.dilate(frame, kernel, iterations = iters) -32 dilated = cv2.cvtColor(dilated, cv2.COLOR_GRAY2BGR) -33 -34 outputs.share_image('Out', dilated) +15 +16 **Inputs**: BGR Image +17 +18 **Outputs**: BGR Image +19 +20 **Parameters**: Kernel, Iterations +21 ''' +22 kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) +23 kernel = np.ones(kernel, np.uint8) +24 iters = int(parameters.read_string("Iterations")) +25 auto_enable = False +26 try: +27 enable = inputs.read_number("Enable") +28 except Exception: +29 auto_enable = True +30 +31 while(auto_enable or inputs.read_number('Enable')): +32 frame = inputs.read_image("Img") +33 if frame is None: +34 continue 35 -36 synchronise() +36 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) +37 dilated = cv2.dilate(frame, kernel, iterations = iters) +38 dilated = cv2.cvtColor(dilated, cv2.COLOR_GRAY2BGR) +39 +40 outputs.share_image('Out', dilated) +41 +42 synchronise() @@ -153,6 +165,12 @@

Block Description

Finaly we convert from GRAY back to BGR and output the image through the share_image() function.

Further reading

+ +

Inputs: BGR Image

+ +

Outputs: BGR Image

+ +

Parameters: Kernel, Iterations

diff --git a/blockDocs/Blocks/EdgeDetector.html b/docs/blockDocs/Blocks/EdgeDetector.html similarity index 95% rename from blockDocs/Blocks/EdgeDetector.html rename to docs/blockDocs/Blocks/EdgeDetector.html index b395725d..22a3d00d 100644 --- a/blockDocs/Blocks/EdgeDetector.html +++ b/docs/blockDocs/Blocks/EdgeDetector.html @@ -68,28 +68,34 @@

9 `cv2.Canny()` function. The resulting image is then converted back to `BGR`. 10 11 This image is then shared to the wire via the `share_image()` function. -12 ''' -13 lower = int(parameters.read_string("Lower")) -14 upper = int(parameters.read_string("Upper")) -15 -16 auto_enable = False -17 try: -18 enable = inputs.read_number("Enable") -19 except Exception: -20 auto_enable = True +12 +13 **Inputs**: BGR Image +14 +15 **Outputs**: BGR Image +16 +17 **Parameters**: Lower, Upper (Threshold values) +18 ''' +19 lower = int(parameters.read_string("Lower")) +20 upper = int(parameters.read_string("Upper")) 21 -22 while(auto_enable or inputs.read_number('Enable')): -23 frame = inputs.read_image("Img") -24 if frame is None: -25 continue -26 -27 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) -28 edge_img = cv2.Canny(frame, lower, upper) -29 edge_img = cv2.cvtColor(edge_img, cv2.COLOR_GRAY2BGR) -30 -31 outputs.share_image('Out', edge_img) +22 auto_enable = False +23 try: +24 enable = inputs.read_number("Enable") +25 except Exception: +26 auto_enable = True +27 +28 while(auto_enable or inputs.read_number('Enable')): +29 frame = inputs.read_image("Img") +30 if frame is None: +31 continue 32 -33 synchronise() +33 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) +34 edge_img = cv2.Canny(frame, lower, upper) +35 edge_img = cv2.cvtColor(edge_img, cv2.COLOR_GRAY2BGR) +36 +37 outputs.share_image('Out', edge_img) +38 +39 synchronise() @@ -113,28 +119,34 @@

10 `cv2.Canny()` function. The resulting image is then converted back to `BGR`. 11 12 This image is then shared to the wire via the `share_image()` function. -13 ''' -14 lower = int(parameters.read_string("Lower")) -15 upper = int(parameters.read_string("Upper")) -16 -17 auto_enable = False -18 try: -19 enable = inputs.read_number("Enable") -20 except Exception: -21 auto_enable = True +13 +14 **Inputs**: BGR Image +15 +16 **Outputs**: BGR Image +17 +18 **Parameters**: Lower, Upper (Threshold values) +19 ''' +20 lower = int(parameters.read_string("Lower")) +21 upper = int(parameters.read_string("Upper")) 22 -23 while(auto_enable or inputs.read_number('Enable')): -24 frame = inputs.read_image("Img") -25 if frame is None: -26 continue -27 -28 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) -29 edge_img = cv2.Canny(frame, lower, upper) -30 edge_img = cv2.cvtColor(edge_img, cv2.COLOR_GRAY2BGR) -31 -32 outputs.share_image('Out', edge_img) +23 auto_enable = False +24 try: +25 enable = inputs.read_number("Enable") +26 except Exception: +27 auto_enable = True +28 +29 while(auto_enable or inputs.read_number('Enable')): +30 frame = inputs.read_image("Img") +31 if frame is None: +32 continue 33 -34 synchronise() +34 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) +35 edge_img = cv2.Canny(frame, lower, upper) +36 edge_img = cv2.cvtColor(edge_img, cv2.COLOR_GRAY2BGR) +37 +38 outputs.share_image('Out', edge_img) +39 +40 synchronise() @@ -146,6 +158,12 @@

Block Description

cv2.Canny() function. The resulting image is then converted back to BGR.

This image is then shared to the wire via the share_image() function.

+ +

Inputs: BGR Image

+ +

Outputs: BGR Image

+ +

Parameters: Lower, Upper (Threshold values)

diff --git a/blockDocs/Blocks/Erosion.html b/docs/blockDocs/Blocks/Erosion.html similarity index 95% rename from blockDocs/Blocks/Erosion.html rename to docs/blockDocs/Blocks/Erosion.html index 57b97d19..45e27ba5 100644 --- a/blockDocs/Blocks/Erosion.html +++ b/docs/blockDocs/Blocks/Erosion.html @@ -70,28 +70,34 @@

11 Finaly we convert from `GRAY` back to `BGR` and output the image through the `share_image()` function. 12 13 [Further reading]([Further reading](https://docs.opencv.org/4.x/d9/d61/tutorial_py_morphological_ops.html)) -14 ''' -15 kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) -16 kernel = np.ones(kernel, np.uint8) -17 iters = int(parameters.read_string("Iterations")) -18 auto_enable = False -19 try: -20 enable = inputs.read_number("Enable") -21 except Exception: -22 auto_enable = True -23 -24 while(auto_enable or inputs.read_number('Enable')): -25 frame = inputs.read_image("Img") -26 if frame is None: -27 continue -28 -29 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) -30 dilated = cv2.erode(frame, kernel, iterations = iters) -31 dilated = cv2.cvtColor(dilated, cv2.COLOR_GRAY2BGR) -32 -33 outputs.share_image('Out', dilated) +14 +15 **Inputs**: BGR Image +16 +17 **Outputs**: BGR Image +18 +19 **Parameters**: Kernel, Iterations +20 ''' +21 kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) +22 kernel = np.ones(kernel, np.uint8) +23 iters = int(parameters.read_string("Iterations")) +24 auto_enable = False +25 try: +26 enable = inputs.read_number("Enable") +27 except Exception: +28 auto_enable = True +29 +30 while(auto_enable or inputs.read_number('Enable')): +31 frame = inputs.read_image("Img") +32 if frame is None: +33 continue 34 -35 synchronise() +35 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) +36 dilated = cv2.erode(frame, kernel, iterations = iters) +37 dilated = cv2.cvtColor(dilated, cv2.COLOR_GRAY2BGR) +38 +39 outputs.share_image('Out', dilated) +40 +41 synchronise() @@ -117,28 +123,34 @@

12 Finaly we convert from `GRAY` back to `BGR` and output the image through the `share_image()` function. 13 14 [Further reading]([Further reading](https://docs.opencv.org/4.x/d9/d61/tutorial_py_morphological_ops.html)) -15 ''' -16 kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) -17 kernel = np.ones(kernel, np.uint8) -18 iters = int(parameters.read_string("Iterations")) -19 auto_enable = False -20 try: -21 enable = inputs.read_number("Enable") -22 except Exception: -23 auto_enable = True -24 -25 while(auto_enable or inputs.read_number('Enable')): -26 frame = inputs.read_image("Img") -27 if frame is None: -28 continue -29 -30 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) -31 dilated = cv2.erode(frame, kernel, iterations = iters) -32 dilated = cv2.cvtColor(dilated, cv2.COLOR_GRAY2BGR) -33 -34 outputs.share_image('Out', dilated) +15 +16 **Inputs**: BGR Image +17 +18 **Outputs**: BGR Image +19 +20 **Parameters**: Kernel, Iterations +21 ''' +22 kernel = np.array([int(x.strip()) for x in parameters.read_string("Kernel").split(",")]) +23 kernel = np.ones(kernel, np.uint8) +24 iters = int(parameters.read_string("Iterations")) +25 auto_enable = False +26 try: +27 enable = inputs.read_number("Enable") +28 except Exception: +29 auto_enable = True +30 +31 while(auto_enable or inputs.read_number('Enable')): +32 frame = inputs.read_image("Img") +33 if frame is None: +34 continue 35 -36 synchronise() +36 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) +37 dilated = cv2.erode(frame, kernel, iterations = iters) +38 dilated = cv2.cvtColor(dilated, cv2.COLOR_GRAY2BGR) +39 +40 outputs.share_image('Out', dilated) +41 +42 synchronise() @@ -153,6 +165,12 @@

Block Description

Finaly we convert from GRAY back to BGR and output the image through the share_image() function.

Further reading

+ +

Inputs: BGR Image

+ +

Outputs: BGR Image

+ +

Parameters: Kernel, Iterations

diff --git a/blockDocs/Blocks/FaceDetector.html b/docs/blockDocs/Blocks/FaceDetector.html similarity index 94% rename from blockDocs/Blocks/FaceDetector.html rename to docs/blockDocs/Blocks/FaceDetector.html index a69ebbb0..98001f47 100644 --- a/blockDocs/Blocks/FaceDetector.html +++ b/docs/blockDocs/Blocks/FaceDetector.html @@ -70,40 +70,46 @@

11 a face is detected. Image is shared through the `share_image()` function.\n 12 Else if `box` is given, the output is the co-ordinates of the bounding box in the form of an array. It 13 is chared through the `share_array()` function. -14 ''' -15 choice = parameters.read_string("BoxOrImage") -16 -17 auto_enable = False -18 try: -19 enable = inputs.read_number("Enable") -20 except Exception: -21 auto_enable = True -22 -23 classifier = cv2.CascadeClassifier('utils/models/haar_cascade/haarcascade_frontalface_default.xml') -24 -25 while(auto_enable or inputs.read_number('Enable')): -26 img = inputs.read_image("Img") -27 if img is None: -28 continue -29 bboxes = classifier.detectMultiScale(img) -30 -31 if choice == 'image': -32 for box in bboxes: -33 x, y, x1, y1 = box -34 x1, y1 = x+x1, y+y1 -35 cv2.rectangle(img, (x, y), (x1, y1), (0,255,0), 2) -36 outputs.share_image('Out', img) -37 else: -38 to_write = [320, 240, 0, 0] -39 for box in bboxes: -40 to_write = [box[0], box[1], box[2], box[3]] -41 break -42 outputs.share_array("Out", to_write) -43 -44 synchronise() -45 -46 -47 +14 +15 **Inputs**: BGR Image +16 +17 **Outputs**: BGR Image with Bounding Boxes +18 +19 **Parameters**: BoxOrImage ('box' for Bounding Boxes, 'image' for Image with Detections) +20 ''' +21 choice = parameters.read_string("BoxOrImage") +22 +23 auto_enable = False +24 try: +25 enable = inputs.read_number("Enable") +26 except Exception: +27 auto_enable = True +28 +29 classifier = cv2.CascadeClassifier('utils/models/haar_cascade/haarcascade_frontalface_default.xml') +30 +31 while(auto_enable or inputs.read_number('Enable')): +32 img = inputs.read_image("Img") +33 if img is None: +34 continue +35 bboxes = classifier.detectMultiScale(img) +36 +37 if choice == 'image': +38 for box in bboxes: +39 x, y, x1, y1 = box +40 x1, y1 = x+x1, y+y1 +41 cv2.rectangle(img, (x, y), (x1, y1), (0,255,0), 2) +42 outputs.share_image('Out', img) +43 else: +44 to_write = [320, 240, 0, 0] +45 for box in bboxes: +46 to_write = [box[0], box[1], box[2], box[3]] +47 break +48 outputs.share_array("Out", to_write) +49 +50 synchronise() +51 +52 +53 @@ -129,37 +135,43 @@

12 a face is detected. Image is shared through the `share_image()` function.\n 13 Else if `box` is given, the output is the co-ordinates of the bounding box in the form of an array. It 14 is chared through the `share_array()` function. -15 ''' -16 choice = parameters.read_string("BoxOrImage") -17 -18 auto_enable = False -19 try: -20 enable = inputs.read_number("Enable") -21 except Exception: -22 auto_enable = True -23 -24 classifier = cv2.CascadeClassifier('utils/models/haar_cascade/haarcascade_frontalface_default.xml') -25 -26 while(auto_enable or inputs.read_number('Enable')): -27 img = inputs.read_image("Img") -28 if img is None: -29 continue -30 bboxes = classifier.detectMultiScale(img) -31 -32 if choice == 'image': -33 for box in bboxes: -34 x, y, x1, y1 = box -35 x1, y1 = x+x1, y+y1 -36 cv2.rectangle(img, (x, y), (x1, y1), (0,255,0), 2) -37 outputs.share_image('Out', img) -38 else: -39 to_write = [320, 240, 0, 0] -40 for box in bboxes: -41 to_write = [box[0], box[1], box[2], box[3]] -42 break -43 outputs.share_array("Out", to_write) -44 -45 synchronise() +15 +16 **Inputs**: BGR Image +17 +18 **Outputs**: BGR Image with Bounding Boxes +19 +20 **Parameters**: BoxOrImage ('box' for Bounding Boxes, 'image' for Image with Detections) +21 ''' +22 choice = parameters.read_string("BoxOrImage") +23 +24 auto_enable = False +25 try: +26 enable = inputs.read_number("Enable") +27 except Exception: +28 auto_enable = True +29 +30 classifier = cv2.CascadeClassifier('utils/models/haar_cascade/haarcascade_frontalface_default.xml') +31 +32 while(auto_enable or inputs.read_number('Enable')): +33 img = inputs.read_image("Img") +34 if img is None: +35 continue +36 bboxes = classifier.detectMultiScale(img) +37 +38 if choice == 'image': +39 for box in bboxes: +40 x, y, x1, y1 = box +41 x1, y1 = x+x1, y+y1 +42 cv2.rectangle(img, (x, y), (x1, y1), (0,255,0), 2) +43 outputs.share_image('Out', img) +44 else: +45 to_write = [320, 240, 0, 0] +46 for box in bboxes: +47 to_write = [box[0], box[1], box[2], box[3]] +48 break +49 outputs.share_array("Out", to_write) +50 +51 synchronise() @@ -175,6 +187,12 @@

Block Description

Else if box is given, the output is the co-ordinates of the bounding box in the form of an array. It is chared through the share_array() function.

+ +

Inputs: BGR Image

+ +

Outputs: BGR Image with Bounding Boxes

+ +

Parameters: BoxOrImage ('box' for Bounding Boxes, 'image' for Image with Detections)

diff --git a/blockDocs/Blocks/IMU.html b/docs/blockDocs/Blocks/IMU.html similarity index 96% rename from blockDocs/Blocks/IMU.html rename to docs/blockDocs/Blocks/IMU.html index f9c5c635..b29c90be 100644 --- a/blockDocs/Blocks/IMU.html +++ b/docs/blockDocs/Blocks/IMU.html @@ -75,7 +75,7 @@

13 We convert these radian values to degrees to get the orientation of the body. 14 15 Aside from these values the IMU also gives us the angular velocity of the body.\n -16 All of these values are stored in the global data variable of the block. +16 All of these values are stored in the global `data` variable of the block. 17 ''' 18 global data 19 # Get the orientation list from the IMU sensor @@ -102,24 +102,30 @@

40 This data is sent to the callback function which converts the orientation list obtained into roll, pitch and yaw for the 41 robot that the IMU is present on. Alongwith orientation, it also gives the angular velocity of the robot. 42 This data is shared in the form of an array using the `share_array()` function. -43 ''' -44 global data -45 auto_enable = False -46 try: -47 enable = inputs.read_number('Enable') -48 except Exception: -49 auto_enable = True -50 -51 rospy.init_node('imu_vc') -52 rostopic_name = parameters.read_string("ROSTopic") -53 rospy.Subscriber(rostopic_name, Imu, callback) -54 -55 while ((auto_enable or inputs.read_number('Enable')) and not rospy.is_shutdown()): -56 if not data: -57 continue -58 -59 outputs.share_array("Out", data) -60 synchronise() +43 +44 **Inputs**: None +45 +46 **Outputs**: Array [Roll, Pitch , Yaw, Angular Velocity in X, Angular Velocity in Y, Angular Velocity in Z] +47 +48 **Parameters**: ROSTopic +49 ''' +50 global data +51 auto_enable = False +52 try: +53 enable = inputs.read_number('Enable') +54 except Exception: +55 auto_enable = True +56 +57 rospy.init_node('imu_vc') +58 rostopic_name = parameters.read_string("ROSTopic") +59 rospy.Subscriber(rostopic_name, Imu, callback) +60 +61 while ((auto_enable or inputs.read_number('Enable')) and not rospy.is_shutdown()): +62 if not data: +63 continue +64 +65 outputs.share_array("Out", data) +66 synchronise() @@ -142,7 +148,7 @@

14 We convert these radian values to degrees to get the orientation of the body. 15 16 Aside from these values the IMU also gives us the angular velocity of the body.\n -17 All of these values are stored in the global data variable of the block. +17 All of these values are stored in the global `data` variable of the block. 18 ''' 19 global data 20 # Get the orientation list from the IMU sensor @@ -168,7 +174,7 @@

Aside from these values the IMU also gives us the angular velocity of the body.

-

All of these values are stored in the global data variable of the block.

+

All of these values are stored in the global data variable of the block.

@@ -194,24 +200,30 @@

41 This data is sent to the callback function which converts the orientation list obtained into roll, pitch and yaw for the 42 robot that the IMU is present on. Alongwith orientation, it also gives the angular velocity of the robot. 43 This data is shared in the form of an array using the `share_array()` function. -44 ''' -45 global data -46 auto_enable = False -47 try: -48 enable = inputs.read_number('Enable') -49 except Exception: -50 auto_enable = True -51 -52 rospy.init_node('imu_vc') -53 rostopic_name = parameters.read_string("ROSTopic") -54 rospy.Subscriber(rostopic_name, Imu, callback) -55 -56 while ((auto_enable or inputs.read_number('Enable')) and not rospy.is_shutdown()): -57 if not data: -58 continue -59 -60 outputs.share_array("Out", data) -61 synchronise() +44 +45 **Inputs**: None +46 +47 **Outputs**: Array [Roll, Pitch , Yaw, Angular Velocity in X, Angular Velocity in Y, Angular Velocity in Z] +48 +49 **Parameters**: ROSTopic +50 ''' +51 global data +52 auto_enable = False +53 try: +54 enable = inputs.read_number('Enable') +55 except Exception: +56 auto_enable = True +57 +58 rospy.init_node('imu_vc') +59 rostopic_name = parameters.read_string("ROSTopic") +60 rospy.Subscriber(rostopic_name, Imu, callback) +61 +62 while ((auto_enable or inputs.read_number('Enable')) and not rospy.is_shutdown()): +63 if not data: +64 continue +65 +66 outputs.share_array("Out", data) +67 synchronise() @@ -225,6 +237,12 @@

Block Description

This data is sent to the callback function which converts the orientation list obtained into roll, pitch and yaw for the robot that the IMU is present on. Alongwith orientation, it also gives the angular velocity of the robot. This data is shared in the form of an array using the share_array() function.

+ +

Inputs: None

+ +

Outputs: Array [Roll, Pitch , Yaw, Angular Velocity in X, Angular Velocity in Y, Angular Velocity in Z]

+ +

Parameters: ROSTopic

diff --git a/blockDocs/Blocks/ImageRead.html b/docs/blockDocs/Blocks/ImageRead.html similarity index 95% rename from blockDocs/Blocks/ImageRead.html rename to docs/blockDocs/Blocks/ImageRead.html index 9b186724..99b47c66 100644 --- a/blockDocs/Blocks/ImageRead.html +++ b/docs/blockDocs/Blocks/ImageRead.html @@ -66,21 +66,27 @@

7 This box reads an image from a given file path. The path to be specified is written in the parameter 8 `ImagePath`.\n 9 It is read through the `cv2.imread()` function and shared through the `share_image()` function. -10 ''' -11 path = parameters.read_string("ImagePath") -12 image = cv2.imread(path) -13 auto_enable = False -14 try: -15 enable = inputs.read_number("Enable") -16 except Exception: -17 auto_enable = True -18 -19 while(auto_enable or inputs.read_number('Enable')): -20 outputs.share_image('Out', image) -21 synchronise() -22 -23 -24 +10 +11 **Inputs**: None +12 +13 **Outputs**: BGR Image +14 +15 **Parameters**: ImagePath +16 ''' +17 path = parameters.read_string("ImagePath") +18 image = cv2.imread(path) +19 auto_enable = False +20 try: +21 enable = inputs.read_number("Enable") +22 except Exception: +23 auto_enable = True +24 +25 while(auto_enable or inputs.read_number('Enable')): +26 outputs.share_image('Out', image) +27 synchronise() +28 +29 +30 @@ -102,18 +108,24 @@

8 This box reads an image from a given file path. The path to be specified is written in the parameter 9 `ImagePath`.\n 10 It is read through the `cv2.imread()` function and shared through the `share_image()` function. -11 ''' -12 path = parameters.read_string("ImagePath") -13 image = cv2.imread(path) -14 auto_enable = False -15 try: -16 enable = inputs.read_number("Enable") -17 except Exception: -18 auto_enable = True -19 -20 while(auto_enable or inputs.read_number('Enable')): -21 outputs.share_image('Out', image) -22 synchronise() +11 +12 **Inputs**: None +13 +14 **Outputs**: BGR Image +15 +16 **Parameters**: ImagePath +17 ''' +18 path = parameters.read_string("ImagePath") +19 image = cv2.imread(path) +20 auto_enable = False +21 try: +22 enable = inputs.read_number("Enable") +23 except Exception: +24 auto_enable = True +25 +26 while(auto_enable or inputs.read_number('Enable')): +27 outputs.share_image('Out', image) +28 synchronise() @@ -124,6 +136,12 @@

Block Description

ImagePath.

It is read through the cv2.imread() function and shared through the share_image() function.

+ +

Inputs: None

+ +

Outputs: BGR Image

+ +

Parameters: ImagePath

diff --git a/blockDocs/Blocks/MotorDriver.html b/docs/blockDocs/Blocks/MotorDriver.html similarity index 94% rename from blockDocs/Blocks/MotorDriver.html rename to docs/blockDocs/Blocks/MotorDriver.html index f18fbf47..edceedeb 100644 --- a/blockDocs/Blocks/MotorDriver.html +++ b/docs/blockDocs/Blocks/MotorDriver.html @@ -80,36 +80,42 @@

18 This data is then converted into a Twist() message with the `linear.x = linear_velocity` and `angular.z = angular_velocity` 19 20 The data is then published continuously -21 ''' -22 rospy.init_node("motordriverVC", anonymous=True) +21 +22 **Inputs**: `cmd_vel` (Linear Velocity, Angular Velocity) 23 -24 rostopic_name = parameters.read_string("ROSTopic") -25 # Create a Publisher that publishes to the given ROSTopic -26 publisher = rospy.Publisher(rostopic_name, Twist, queue_size=10) -27 -28 auto_enable = True -29 try: -30 enable = inputs.read_number("Enable") -31 except Exception: -32 auto_enable = True -33 -34 # Create a Twist message -35 data = Twist() -36 -37 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): -38 msg = inputs.read_array("Inp") -39 -40 if msg is None: -41 continue +24 **Outputs**: None +25 +26 **Parameters**: ROSTopic +27 ''' +28 rospy.init_node("motordriverVC", anonymous=True) +29 +30 rostopic_name = parameters.read_string("ROSTopic") +31 # Create a Publisher that publishes to the given ROSTopic +32 publisher = rospy.Publisher(rostopic_name, Twist, queue_size=10) +33 +34 auto_enable = True +35 try: +36 enable = inputs.read_number("Enable") +37 except Exception: +38 auto_enable = True +39 +40 # Create a Twist message +41 data = Twist() 42 -43 linear_velocity = float(msg[0]) -44 angular_velocity = float(msg[1]) +43 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): +44 msg = inputs.read_array("Inp") 45 -46 data.linear.x = linear_velocity -47 data.angular.z = angular_velocity -48 publisher.publish(data) -49 -50 synchronise() +46 if msg is None: +47 continue +48 +49 linear_velocity = float(msg[0]) +50 angular_velocity = float(msg[1]) +51 +52 data.linear.x = linear_velocity +53 data.angular.z = angular_velocity +54 publisher.publish(data) +55 +56 synchronise() @@ -153,36 +159,42 @@

19 This data is then converted into a Twist() message with the `linear.x = linear_velocity` and `angular.z = angular_velocity` 20 21 The data is then published continuously -22 ''' -23 rospy.init_node("motordriverVC", anonymous=True) +22 +23 **Inputs**: `cmd_vel` (Linear Velocity, Angular Velocity) 24 -25 rostopic_name = parameters.read_string("ROSTopic") -26 # Create a Publisher that publishes to the given ROSTopic -27 publisher = rospy.Publisher(rostopic_name, Twist, queue_size=10) -28 -29 auto_enable = True -30 try: -31 enable = inputs.read_number("Enable") -32 except Exception: -33 auto_enable = True -34 -35 # Create a Twist message -36 data = Twist() -37 -38 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): -39 msg = inputs.read_array("Inp") -40 -41 if msg is None: -42 continue +25 **Outputs**: None +26 +27 **Parameters**: ROSTopic +28 ''' +29 rospy.init_node("motordriverVC", anonymous=True) +30 +31 rostopic_name = parameters.read_string("ROSTopic") +32 # Create a Publisher that publishes to the given ROSTopic +33 publisher = rospy.Publisher(rostopic_name, Twist, queue_size=10) +34 +35 auto_enable = True +36 try: +37 enable = inputs.read_number("Enable") +38 except Exception: +39 auto_enable = True +40 +41 # Create a Twist message +42 data = Twist() 43 -44 linear_velocity = float(msg[0]) -45 angular_velocity = float(msg[1]) +44 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): +45 msg = inputs.read_array("Inp") 46 -47 data.linear.x = linear_velocity -48 data.angular.z = angular_velocity -49 publisher.publish(data) -50 -51 synchronise() +47 if msg is None: +48 continue +49 +50 linear_velocity = float(msg[0]) +51 angular_velocity = float(msg[1]) +52 +53 data.linear.x = linear_velocity +54 data.angular.z = angular_velocity +55 publisher.publish(data) +56 +57 synchronise() @@ -197,7 +209,13 @@

Block Description

This data is then converted into a Twist() message with the linear.x = linear_velocity and angular.z = angular_velocity

-

The data is then published continuously

+

The data is then published continuously

+ +

Inputs: cmd_vel (Linear Velocity, Angular Velocity)

+ +

Outputs: None

+ +

Parameters: ROSTopic

diff --git a/blockDocs/Blocks/Odometer.html b/docs/blockDocs/Blocks/Odometer.html similarity index 95% rename from blockDocs/Blocks/Odometer.html rename to docs/blockDocs/Blocks/Odometer.html index 8548d447..41c8416e 100644 --- a/blockDocs/Blocks/Odometer.html +++ b/docs/blockDocs/Blocks/Odometer.html @@ -79,23 +79,29 @@

17 It then initializes a Subscriber to subscribe to that ROSTopic, once the data is obtained through the callback 18 function, it is formatted into an array with the format: `[ x, y, yaw ]`\n 19 This data is then shared to the wire using the `share_array()` function. -20 ''' -21 rospy.init_node("odometerVC", anonymous=True) -22 rostopic_name = parameters.read_string("ROSTopic") -23 odometer_subscriber = rospy.Subscriber(rostopic_name, Pose, callback) +20 +21 **Inputs**: None +22 +23 **Outputs**: Array [X, Y, Yaw] 24 -25 auto_enable = False -26 try: -27 enable = inputs.read_number("Enable") -28 except Exception: -29 auto_enable = True +25 **Parameters**: ROSTopic +26 ''' +27 rospy.init_node("odometerVC", anonymous=True) +28 rostopic_name = parameters.read_string("ROSTopic") +29 odometer_subscriber = rospy.Subscriber(rostopic_name, Pose, callback) 30 -31 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): -32 data = [x, y, yaw] -33 -34 outputs.share_array("Out", data) -35 -36 synchronise() +31 auto_enable = False +32 try: +33 enable = inputs.read_number("Enable") +34 except Exception: +35 auto_enable = True +36 +37 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): +38 data = [x, y, yaw] +39 +40 outputs.share_array("Out", data) +41 +42 synchronise() @@ -140,23 +146,29 @@

18 It then initializes a Subscriber to subscribe to that ROSTopic, once the data is obtained through the callback 19 function, it is formatted into an array with the format: `[ x, y, yaw ]`\n 20 This data is then shared to the wire using the `share_array()` function. -21 ''' -22 rospy.init_node("odometerVC", anonymous=True) -23 rostopic_name = parameters.read_string("ROSTopic") -24 odometer_subscriber = rospy.Subscriber(rostopic_name, Pose, callback) +21 +22 **Inputs**: None +23 +24 **Outputs**: Array [X, Y, Yaw] 25 -26 auto_enable = False -27 try: -28 enable = inputs.read_number("Enable") -29 except Exception: -30 auto_enable = True +26 **Parameters**: ROSTopic +27 ''' +28 rospy.init_node("odometerVC", anonymous=True) +29 rostopic_name = parameters.read_string("ROSTopic") +30 odometer_subscriber = rospy.Subscriber(rostopic_name, Pose, callback) 31 -32 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): -33 data = [x, y, yaw] -34 -35 outputs.share_array("Out", data) -36 -37 synchronise() +32 auto_enable = False +33 try: +34 enable = inputs.read_number("Enable") +35 except Exception: +36 auto_enable = True +37 +38 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): +39 data = [x, y, yaw] +40 +41 outputs.share_array("Out", data) +42 +43 synchronise() @@ -168,6 +180,12 @@

Block Description

function, it is formatted into an array with the format: [ x, y, yaw ]

This data is then shared to the wire using the share_array() function.

+ +

Inputs: None

+ +

Outputs: Array [X, Y, Yaw]

+ +

Parameters: ROSTopic

diff --git a/blockDocs/Blocks/PID.html b/docs/blockDocs/Blocks/PID.html similarity index 94% rename from blockDocs/Blocks/PID.html rename to docs/blockDocs/Blocks/PID.html index 210f6cd0..35e91e9b 100644 --- a/blockDocs/Blocks/PID.html +++ b/docs/blockDocs/Blocks/PID.html @@ -69,40 +69,46 @@

10 Once there it applies the PID technique to the error variable in order to minimize it. 11 12 The resulting values are shared through the `share_array()` function. -13 ''' -14 auto_enable = True -15 try: -16 enable = inputs.read_number("Enable") -17 except Exception: -18 auto_enable = True -19 -20 kp = parameters.read_number("Kp") -21 ki = parameters.read_number("Ki") -22 kd = parameters.read_number("Kd") -23 -24 previousError, I = 0, 0 -25 # Problem this should be inside the while loop -26 msg = inputs.read_number("Inp") -27 -28 while(auto_enable or inputs.read_number('Enable')): -29 if msg is None: -30 continue -31 -32 error = float(msg) -33 sleep(0.01) -34 -35 P = error -36 I = I + error -37 D = error - previousError -38 PIDvalue = (kp*P) + (ki*I) + (kd*D) -39 previousError = error +13 +14 **Inputs**: Error +15 +16 **Outputs**: `cmd_vel` (Linear Velocity, Angular Velocity) +17 +18 **Parameters**: Kp, Ki, Kd +19 ''' +20 auto_enable = True +21 try: +22 enable = inputs.read_number("Enable") +23 except Exception: +24 auto_enable = True +25 +26 kp = parameters.read_number("Kp") +27 ki = parameters.read_number("Ki") +28 kd = parameters.read_number("Kd") +29 +30 previousError, I = 0, 0 +31 # Problem this should be inside the while loop +32 msg = inputs.read_number("Inp") +33 +34 while(auto_enable or inputs.read_number('Enable')): +35 if msg is None: +36 continue +37 +38 error = float(msg) +39 sleep(0.01) 40 -41 linear_velocity = 5.0 -42 angular_velocity = -PIDvalue -43 -44 data = [linear_velocity, angular_velocity] -45 outputs.share_array("Out", data) -46 synchronise() +41 P = error +42 I = I + error +43 D = error - previousError +44 PIDvalue = (kp*P) + (ki*I) + (kd*D) +45 previousError = error +46 +47 linear_velocity = 5.0 +48 angular_velocity = -PIDvalue +49 +50 data = [linear_velocity, angular_velocity] +51 outputs.share_array("Out", data) +52 synchronise() @@ -126,40 +132,46 @@

11 Once there it applies the PID technique to the error variable in order to minimize it. 12 13 The resulting values are shared through the `share_array()` function. -14 ''' -15 auto_enable = True -16 try: -17 enable = inputs.read_number("Enable") -18 except Exception: -19 auto_enable = True -20 -21 kp = parameters.read_number("Kp") -22 ki = parameters.read_number("Ki") -23 kd = parameters.read_number("Kd") -24 -25 previousError, I = 0, 0 -26 # Problem this should be inside the while loop -27 msg = inputs.read_number("Inp") -28 -29 while(auto_enable or inputs.read_number('Enable')): -30 if msg is None: -31 continue -32 -33 error = float(msg) -34 sleep(0.01) -35 -36 P = error -37 I = I + error -38 D = error - previousError -39 PIDvalue = (kp*P) + (ki*I) + (kd*D) -40 previousError = error +14 +15 **Inputs**: Error +16 +17 **Outputs**: `cmd_vel` (Linear Velocity, Angular Velocity) +18 +19 **Parameters**: Kp, Ki, Kd +20 ''' +21 auto_enable = True +22 try: +23 enable = inputs.read_number("Enable") +24 except Exception: +25 auto_enable = True +26 +27 kp = parameters.read_number("Kp") +28 ki = parameters.read_number("Ki") +29 kd = parameters.read_number("Kd") +30 +31 previousError, I = 0, 0 +32 # Problem this should be inside the while loop +33 msg = inputs.read_number("Inp") +34 +35 while(auto_enable or inputs.read_number('Enable')): +36 if msg is None: +37 continue +38 +39 error = float(msg) +40 sleep(0.01) 41 -42 linear_velocity = 5.0 -43 angular_velocity = -PIDvalue -44 -45 data = [linear_velocity, angular_velocity] -46 outputs.share_array("Out", data) -47 synchronise() +42 P = error +43 I = I + error +44 D = error - previousError +45 PIDvalue = (kp*P) + (ki*I) + (kd*D) +46 previousError = error +47 +48 linear_velocity = 5.0 +49 angular_velocity = -PIDvalue +50 +51 data = [linear_velocity, angular_velocity] +52 outputs.share_array("Out", data) +53 synchronise() @@ -171,7 +183,13 @@

Block Description

The Kp, Ki, and Kd parameters are read from the parameters of the same name. Once there it applies the PID technique to the error variable in order to minimize it.

-

The resulting values are shared through the share_array() function.

+

The resulting values are shared through the share_array() function.

+ +

Inputs: Error

+ +

Outputs: cmd_vel (Linear Velocity, Angular Velocity)

+ +

Parameters: Kp, Ki, Kd

diff --git a/blockDocs/Blocks/ROSCamera.html b/docs/blockDocs/Blocks/ROSCamera.html similarity index 95% rename from blockDocs/Blocks/ROSCamera.html rename to docs/blockDocs/Blocks/ROSCamera.html index af92fcef..3b89bf6d 100644 --- a/blockDocs/Blocks/ROSCamera.html +++ b/docs/blockDocs/Blocks/ROSCamera.html @@ -80,23 +80,29 @@

18 The image message is converted to OpenCV compatible format via the `imgmsg_to_cv2()` function. 19 20 This is then shared ahead using the `share_image()` function. -21 ''' -22 auto_enable = False -23 try: -24 enable = inputs.read_number("Enable") -25 except Exception: -26 auto_enable = True -27 -28 rospy.init_node("camera_ros", anonymous=True) -29 subscriber_name = parameters.read_string("ROSTopic") -30 camera_subscriber = rospy.Subscriber(subscriber_name, Image, callback) -31 -32 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): -33 if img is None: -34 continue -35 -36 outputs.share_image("Out", img) -37 synchronise() +21 +22 **Inputs**: None +23 +24 **Outputs**: BGR Image +25 +26 **Parameters**: ROSTopic +27 ''' +28 auto_enable = False +29 try: +30 enable = inputs.read_number("Enable") +31 except Exception: +32 auto_enable = True +33 +34 rospy.init_node("camera_ros", anonymous=True) +35 subscriber_name = parameters.read_string("ROSTopic") +36 camera_subscriber = rospy.Subscriber(subscriber_name, Image, callback) +37 +38 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): +39 if img is None: +40 continue +41 +42 outputs.share_image("Out", img) +43 synchronise() @@ -140,23 +146,29 @@

19 The image message is converted to OpenCV compatible format via the `imgmsg_to_cv2()` function. 20 21 This is then shared ahead using the `share_image()` function. -22 ''' -23 auto_enable = False -24 try: -25 enable = inputs.read_number("Enable") -26 except Exception: -27 auto_enable = True -28 -29 rospy.init_node("camera_ros", anonymous=True) -30 subscriber_name = parameters.read_string("ROSTopic") -31 camera_subscriber = rospy.Subscriber(subscriber_name, Image, callback) -32 -33 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): -34 if img is None: -35 continue -36 -37 outputs.share_image("Out", img) -38 synchronise() +22 +23 **Inputs**: None +24 +25 **Outputs**: BGR Image +26 +27 **Parameters**: ROSTopic +28 ''' +29 auto_enable = False +30 try: +31 enable = inputs.read_number("Enable") +32 except Exception: +33 auto_enable = True +34 +35 rospy.init_node("camera_ros", anonymous=True) +36 subscriber_name = parameters.read_string("ROSTopic") +37 camera_subscriber = rospy.Subscriber(subscriber_name, Image, callback) +38 +39 while(auto_enable or inputs.read_number('Enable') and not rospy.is_shutdown()): +40 if img is None: +41 continue +42 +43 outputs.share_image("Out", img) +44 synchronise() @@ -168,6 +180,12 @@

Block Description

The image message is converted to OpenCV compatible format via the imgmsg_to_cv2() function.

This is then shared ahead using the share_image() function.

+ +

Inputs: None

+ +

Outputs: BGR Image

+ +

Parameters: ROSTopic

diff --git a/blockDocs/Blocks/Screen.html b/docs/blockDocs/Blocks/Screen.html similarity index 95% rename from blockDocs/Blocks/Screen.html rename to docs/blockDocs/Blocks/Screen.html index 4c954559..69e4946d 100644 --- a/blockDocs/Blocks/Screen.html +++ b/docs/blockDocs/Blocks/Screen.html @@ -65,21 +65,27 @@

6 7 Takes an image as an input and displays it on the user's screen. 8 The `cv2.imshow()` function is used in order to display the image. - 9 ''' -10 auto_enable = False -11 try: -12 enable = inputs.read_number('Enable') -13 except Exception: -14 auto_enable = True -15 while (auto_enable or inputs.read_number('Enable')): -16 img = inputs.read_image("Img") -17 if img is None: -18 continue -19 -20 cv2.imshow("frame", img) -21 cv2.waitKey(10) -22 -23 synchronise() + 9 +10 **Inputs**: BGR Image +11 +12 **Outputs**: None +13 +14 **Parameters**: None +15 ''' +16 auto_enable = False +17 try: +18 enable = inputs.read_number('Enable') +19 except Exception: +20 auto_enable = True +21 while (auto_enable or inputs.read_number('Enable')): +22 img = inputs.read_image("Img") +23 if img is None: +24 continue +25 +26 cv2.imshow("frame", img) +27 cv2.waitKey(10) +28 +29 synchronise() @@ -101,21 +107,27 @@

7 8 Takes an image as an input and displays it on the user's screen. 9 The `cv2.imshow()` function is used in order to display the image. -10 ''' -11 auto_enable = False -12 try: -13 enable = inputs.read_number('Enable') -14 except Exception: -15 auto_enable = True -16 while (auto_enable or inputs.read_number('Enable')): -17 img = inputs.read_image("Img") -18 if img is None: -19 continue -20 -21 cv2.imshow("frame", img) -22 cv2.waitKey(10) -23 -24 synchronise() +10 +11 **Inputs**: BGR Image +12 +13 **Outputs**: None +14 +15 **Parameters**: None +16 ''' +17 auto_enable = False +18 try: +19 enable = inputs.read_number('Enable') +20 except Exception: +21 auto_enable = True +22 while (auto_enable or inputs.read_number('Enable')): +23 img = inputs.read_image("Img") +24 if img is None: +25 continue +26 +27 cv2.imshow("frame", img) +28 cv2.waitKey(10) +29 +30 synchronise() @@ -124,6 +136,12 @@

Block Description

Takes an image as an input and displays it on the user's screen. The cv2.imshow() function is used in order to display the image.

+ +

Inputs: BGR Image

+ +

Outputs: None

+ +

Parameters: None

diff --git a/blockDocs/Blocks/Teleoperator.html b/docs/blockDocs/Blocks/Teleoperator.html similarity index 94% rename from blockDocs/Blocks/Teleoperator.html rename to docs/blockDocs/Blocks/Teleoperator.html index c09db452..c483935d 100644 --- a/blockDocs/Blocks/Teleoperator.html +++ b/docs/blockDocs/Blocks/Teleoperator.html @@ -68,34 +68,40 @@

9 10 The output data is a list of the format: `[ linear_velocity, angular_velocity ]`\n 11 This is then shared to the output wire using the `share_array()` function. -12 ''' -13 auto_enable = True -14 try: -15 enable = inputs.read_number("Enable") -16 except Exception: -17 auto_enable = True -18 -19 linear_velocity = parameters.read_number("Linear") -20 -21 while(auto_enable or inputs.read_number('Enable')): -22 msg = inputs.read_array("Inp") -23 -24 # (x, y, width, height) -25 x, y = float(msg[0]), float(msg[1]) -26 x1, y1 = x+float(msg[2]), y+float(msg[3]) -27 -28 # Teleoperator Control Logic -29 cx = (x+x1)/2.0 -30 -31 if cx < 320: -32 angular_velocity = -0.5 -33 else: -34 angular_velocity = 0.5 -35 -36 data = [linear_velocity, angular_velocity] -37 outputs.share_array("Out", data) -38 -39 synchronise() +12 +13 **Inputs**: Bounding Box (x, y, width, height) +14 +15 **Outputs**: `cmd_vel` (linear velocity, angular velocity) +16 +17 **Parameters**: Linear(Linear Velocity) +18 ''' +19 auto_enable = True +20 try: +21 enable = inputs.read_number("Enable") +22 except Exception: +23 auto_enable = True +24 +25 linear_velocity = parameters.read_number("Linear") +26 +27 while(auto_enable or inputs.read_number('Enable')): +28 msg = inputs.read_array("Inp") +29 +30 # (x, y, width, height) +31 x, y = float(msg[0]), float(msg[1]) +32 x1, y1 = x+float(msg[2]), y+float(msg[3]) +33 +34 # Teleoperator Control Logic +35 cx = (x+x1)/2.0 +36 +37 if cx < 320: +38 angular_velocity = -0.5 +39 else: +40 angular_velocity = 0.5 +41 +42 data = [linear_velocity, angular_velocity] +43 outputs.share_array("Out", data) +44 +45 synchronise() @@ -120,34 +126,40 @@

10 11 The output data is a list of the format: `[ linear_velocity, angular_velocity ]`\n 12 This is then shared to the output wire using the `share_array()` function. -13 ''' -14 auto_enable = True -15 try: -16 enable = inputs.read_number("Enable") -17 except Exception: -18 auto_enable = True -19 -20 linear_velocity = parameters.read_number("Linear") -21 -22 while(auto_enable or inputs.read_number('Enable')): -23 msg = inputs.read_array("Inp") -24 -25 # (x, y, width, height) -26 x, y = float(msg[0]), float(msg[1]) -27 x1, y1 = x+float(msg[2]), y+float(msg[3]) -28 -29 # Teleoperator Control Logic -30 cx = (x+x1)/2.0 -31 -32 if cx < 320: -33 angular_velocity = -0.5 -34 else: -35 angular_velocity = 0.5 -36 -37 data = [linear_velocity, angular_velocity] -38 outputs.share_array("Out", data) -39 -40 synchronise() +13 +14 **Inputs**: Bounding Box (x, y, width, height) +15 +16 **Outputs**: `cmd_vel` (linear velocity, angular velocity) +17 +18 **Parameters**: Linear(Linear Velocity) +19 ''' +20 auto_enable = True +21 try: +22 enable = inputs.read_number("Enable") +23 except Exception: +24 auto_enable = True +25 +26 linear_velocity = parameters.read_number("Linear") +27 +28 while(auto_enable or inputs.read_number('Enable')): +29 msg = inputs.read_array("Inp") +30 +31 # (x, y, width, height) +32 x, y = float(msg[0]), float(msg[1]) +33 x1, y1 = x+float(msg[2]), y+float(msg[3]) +34 +35 # Teleoperator Control Logic +36 cx = (x+x1)/2.0 +37 +38 if cx < 320: +39 angular_velocity = -0.5 +40 else: +41 angular_velocity = 0.5 +42 +43 data = [linear_velocity, angular_velocity] +44 outputs.share_array("Out", data) +45 +46 synchronise() @@ -161,6 +173,12 @@

Block Description

The output data is a list of the format: [ linear_velocity, angular_velocity ]

This is then shared to the output wire using the share_array() function.

+ +

Inputs: Bounding Box (x, y, width, height)

+ +

Outputs: cmd_vel (linear velocity, angular velocity)

+ +

Parameters: Linear(Linear Velocity)

diff --git a/blockDocs/Blocks/Threshold.html b/docs/blockDocs/Blocks/Threshold.html similarity index 95% rename from blockDocs/Blocks/Threshold.html rename to docs/blockDocs/Blocks/Threshold.html index cffa5061..b019978a 100644 --- a/blockDocs/Blocks/Threshold.html +++ b/docs/blockDocs/Blocks/Threshold.html @@ -70,28 +70,34 @@

11 `share_image()` function. 12 13 [Further reading](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) -14 ''' -15 lower = parameters.read_number("LowerThreshold") -16 upper = parameters.read_number("UpperThreshold") -17 -18 auto_enable = False -19 try: -20 enable = inputs.read_number("Enable") -21 except Exception: -22 auto_enable = True -23 -24 while(auto_enable or inputs.read_number('Enable')): -25 frame = inputs.read_image("Img") -26 if frame is None: -27 continue -28 -29 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) -30 (T, thresh) = cv2.threshold(frame, lower, upper, cv2.THRESH_BINARY) -31 output = cv2.cvtColor(thresh, cv2.COLOR_GRAY2BGR) -32 -33 outputs.share_image('Out', output) +14 +15 **Inputs**: BGR Image +16 +17 **Outputs**: BGR Image +18 +19 **Parameters**: LowerThreshold, UpperThreshold +20 ''' +21 lower = parameters.read_number("LowerThreshold") +22 upper = parameters.read_number("UpperThreshold") +23 +24 auto_enable = False +25 try: +26 enable = inputs.read_number("Enable") +27 except Exception: +28 auto_enable = True +29 +30 while(auto_enable or inputs.read_number('Enable')): +31 frame = inputs.read_image("Img") +32 if frame is None: +33 continue 34 -35 synchronise() +35 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) +36 (T, thresh) = cv2.threshold(frame, lower, upper, cv2.THRESH_BINARY) +37 output = cv2.cvtColor(thresh, cv2.COLOR_GRAY2BGR) +38 +39 outputs.share_image('Out', output) +40 +41 synchronise() @@ -117,28 +123,34 @@

12 `share_image()` function. 13 14 [Further reading](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) -15 ''' -16 lower = parameters.read_number("LowerThreshold") -17 upper = parameters.read_number("UpperThreshold") -18 -19 auto_enable = False -20 try: -21 enable = inputs.read_number("Enable") -22 except Exception: -23 auto_enable = True -24 -25 while(auto_enable or inputs.read_number('Enable')): -26 frame = inputs.read_image("Img") -27 if frame is None: -28 continue -29 -30 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) -31 (T, thresh) = cv2.threshold(frame, lower, upper, cv2.THRESH_BINARY) -32 output = cv2.cvtColor(thresh, cv2.COLOR_GRAY2BGR) -33 -34 outputs.share_image('Out', output) +15 +16 **Inputs**: BGR Image +17 +18 **Outputs**: BGR Image +19 +20 **Parameters**: LowerThreshold, UpperThreshold +21 ''' +22 lower = parameters.read_number("LowerThreshold") +23 upper = parameters.read_number("UpperThreshold") +24 +25 auto_enable = False +26 try: +27 enable = inputs.read_number("Enable") +28 except Exception: +29 auto_enable = True +30 +31 while(auto_enable or inputs.read_number('Enable')): +32 frame = inputs.read_image("Img") +33 if frame is None: +34 continue 35 -36 synchronise() +36 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) +37 (T, thresh) = cv2.threshold(frame, lower, upper, cv2.THRESH_BINARY) +38 output = cv2.cvtColor(thresh, cv2.COLOR_GRAY2BGR) +39 +40 outputs.share_image('Out', output) +41 +42 synchronise() @@ -153,6 +165,12 @@

Block Description

share_image() function.

Further reading

+ +

Inputs: BGR Image

+ +

Outputs: BGR Image

+ +

Parameters: LowerThreshold, UpperThreshold

diff --git a/blockDocs/Blocks/VideoStreamer.html b/docs/blockDocs/Blocks/VideoStreamer.html similarity index 95% rename from blockDocs/Blocks/VideoStreamer.html rename to docs/blockDocs/Blocks/VideoStreamer.html index ff48bf25..49d7791c 100644 --- a/blockDocs/Blocks/VideoStreamer.html +++ b/docs/blockDocs/Blocks/VideoStreamer.html @@ -69,24 +69,30 @@

10 Capturing begins using the `cv2.VideoCapture()` function. 11 The video is then read frame by frame and each frame is shared to the output wire using the 12 `share_image()` function. -13 ''' -14 filepath = parameters.read_string("PathToFile") -15 auto_enable = False -16 try: -17 enable = inputs.read_number("Enable") -18 except Exception: -19 auto_enable = True -20 -21 cap = cv2.VideoCapture(filepath) -22 -23 while(auto_enable or inputs.read_number('Enable') and cap.isOpened()): -24 ret, frame = cap.read() -25 if ret: -26 outputs.share_image('Out', frame) -27 else: -28 cap.set(cv2.CAP_PROP_POS_FRAMES, 0) -29 -30 synchronise() +13 +14 **Inputs**: None +15 +16 **Outputs**: BGR Image +17 +18 **Parameters**: PathToFile +19 ''' +20 filepath = parameters.read_string("PathToFile") +21 auto_enable = False +22 try: +23 enable = inputs.read_number("Enable") +24 except Exception: +25 auto_enable = True +26 +27 cap = cv2.VideoCapture(filepath) +28 +29 while(auto_enable or inputs.read_number('Enable') and cap.isOpened()): +30 ret, frame = cap.read() +31 if ret: +32 outputs.share_image('Out', frame) +33 else: +34 cap.set(cv2.CAP_PROP_POS_FRAMES, 0) +35 +36 synchronise() @@ -111,24 +117,30 @@

11 Capturing begins using the `cv2.VideoCapture()` function. 12 The video is then read frame by frame and each frame is shared to the output wire using the 13 `share_image()` function. -14 ''' -15 filepath = parameters.read_string("PathToFile") -16 auto_enable = False -17 try: -18 enable = inputs.read_number("Enable") -19 except Exception: -20 auto_enable = True -21 -22 cap = cv2.VideoCapture(filepath) -23 -24 while(auto_enable or inputs.read_number('Enable') and cap.isOpened()): -25 ret, frame = cap.read() -26 if ret: -27 outputs.share_image('Out', frame) -28 else: -29 cap.set(cv2.CAP_PROP_POS_FRAMES, 0) -30 -31 synchronise() +14 +15 **Inputs**: None +16 +17 **Outputs**: BGR Image +18 +19 **Parameters**: PathToFile +20 ''' +21 filepath = parameters.read_string("PathToFile") +22 auto_enable = False +23 try: +24 enable = inputs.read_number("Enable") +25 except Exception: +26 auto_enable = True +27 +28 cap = cv2.VideoCapture(filepath) +29 +30 while(auto_enable or inputs.read_number('Enable') and cap.isOpened()): +31 ret, frame = cap.read() +32 if ret: +33 outputs.share_image('Out', frame) +34 else: +35 cap.set(cv2.CAP_PROP_POS_FRAMES, 0) +36 +37 synchronise() @@ -141,6 +153,12 @@

Block Description

Capturing begins using the cv2.VideoCapture() function. The video is then read frame by frame and each frame is shared to the output wire using the share_image() function.

+ +

Inputs: None

+ +

Outputs: BGR Image

+ +

Parameters: PathToFile

diff --git a/blockDocs/Blocks/utils.html b/docs/blockDocs/Blocks/utils.html similarity index 100% rename from blockDocs/Blocks/utils.html rename to docs/blockDocs/Blocks/utils.html diff --git a/blockDocs/Blocks/utils/models.html b/docs/blockDocs/Blocks/utils/models.html similarity index 100% rename from blockDocs/Blocks/utils/models.html rename to docs/blockDocs/Blocks/utils/models.html diff --git a/docs/blockDocs/assets/blur-usage.png b/docs/blockDocs/assets/blur-usage.png new file mode 100644 index 0000000000000000000000000000000000000000..c72cde151b7cee8b5e4451c4b814844244e2d14b GIT binary patch literal 80689 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

gE!DTn1JIg12H#Xud8Xq%T{%h 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

J9tgxpUu^6SBZ;=7?* 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 literal 0 HcmV?d00001 diff --git a/docs/blockDocs/assets/bulr-usage.png b/docs/blockDocs/assets/bulr-usage.png new file mode 100644 index 0000000000000000000000000000000000000000..46716aef8602aff640bd8aee00e4c26be7012ac2 GIT binary patch literal 18897 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

l!e*R9&-ECIZvpG}(2{T&2%RQ5 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

+^gVQ`s$(%t` z>po%52}xr%^#qe70&01?Rvaswo-a9ZCLqky>1o#9&g;o7-*q+|HETi?>1UVpxpSK6 zq+C#}5tddCoI702OU=YTIw`TDJqwPU71P?MN1R;0ua$@eNPc#)`2$cD&rCCw+!&7F zssh#)IGLvKV!3`5F3vbC-<#CbGdp{U{W$OHcjwQeicS2<8uayN*QH5XZV^8rH4#VX z9NrnxB?Q&T)jo2SB41t&-0u@QjBI;jE|-)v4tCiPES?ks5>s~elnz%QV0n4=-0iu$J}~N*w(|@J;jjLC-{5bawVbqqe7j?DxxsY~6>r9343@f)T@Iyj zTP9T-eo|6bG~o_C?a;FbxfxcbGzpf_T?$kS;``v0p=Mshi8&Q~vm~t-bSGB7*EROp zE>oW0Z8;4cH}7_wA)4l)3rRgTv|quvlyih zLeu1yhLRa1Pf&X}AgBBm6=bx;pYloYCX+;F#i#X4C37hMUbL%HQDj}h0z1EEdGiT% z;?{)OM|r`^01!EvI7?0dsTppwM=4_S;VXX$LFT2!9~?VD+8OWJ1I+vibJ#1G6s*8j zV0_aZ{sUL`{XFk5K) zti-A2-#I?XaG1Jr#=-8-A60nS_;``Se{hvZb zGsKrmpUUgl+gXlg_Pfr09`Wd0-%L#c5bNM2GX{JBW=-78QrI~9tt#7^#Zt9iW#-uj z6)sPVTN5$V81wil_O}IIJrX=oiVNBiaqNj~$AP!^@bjCIcf+BMoSFbb0)gZbE(A-t zq5(flm7Sw?7IAgDVjho`at4j6#qkcK#q1KWI&jXCC+7`r(GfN+&AOrWrHxs%RJap? z9H(;xYmF8Y8uJhpjmTl3*+<-%Sioc#J8&-4c?z`&(V);+-5|m28c7KiX9Wa)3iV7q zQf6>pJS>;^&635kqw5@-GY79S^QA;Tj%XYwnHU<%IP8KBq-~0DhYd!tZ zm*zjQRW5k>82!}Ika;tt96swaskp|b&mL<%R4-mQso$B+i@cZr{FBipx@ z1!K;Y1xa@ghU(gtLkM(>mO}y^4!L%3K*eS)6dC3$U4;}pgN|%(wv1_D(OOqEXy8OiqN96H8Uh08z~JQxD@lT0(iB@cRSOk2qC2)tVkA&gLjcNr5s)X%0D$ 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 Hu0mjfrKa0C literal 0 HcmV?d00001 diff --git a/docs/blockDocs/assets/lenna.png b/docs/blockDocs/assets/lenna.png new file mode 100644 index 0000000000000000000000000000000000000000..1945ce0713e64b4b665ee0c2324c7284284ea40b GIT binary patch literal 102441 zcmV(=K-s^EP)ZgXgFbngSdJ^%n907*naRCt{1 zyvw#E*>R@#nc3d%an8wG6>bH9V2e_dQfqayNolo2w#FK1+%KbnUP2=c^aOf@UWFhPIOK1RI`7YN7&+d)!Xg7-U={ zIxv|;zoxH&svup_rIX=UIFU+zHra1C?rs-8``|PF_T|p)D`8-q-VIEhg+}wlt|7<3 zn;@;BTc8Huq;y=8m^({?UU!y&Wfg2V`NT+I%|sU?FOEL#v=Aa8W+P6DwL~tHAg}>r zNyHLdkTCS5$Q0V#m`g{~(CLUKnFbn!7|8@r#2Rh}!@)o#X(UMfMhhV&+4PFVCoYqS zoeZJbjt*l=Cr*M9*cn6viHV33yK4`Ld5>e#6>&u4rLS~gMx)y|9^M`&)a zD3OWJoz^-z>)hHDh6Uk* zk~b4k#m&&y7i61cSI9)PldPERBrDRKoEJ2LDTd`n(CZx1h*e--5L@x3BQuc{a%sp6 z(g&`|)Bp5_<#*r1u1|=b(7vEDaCh!Me#x)?`A7WtPd;JHNneapSJvw!!>~m$0pAAJ z1s%z}xh8kOcdl|LvSB&#)-i$1gxr^Br}v3&rf{w z557fvGWhf-FZrGS@qhlJ;>p{9GvCIa`5RbNK;+ARfBX=9S}r+^Vs>;$>qQId*43xm(S>}YnAfm z`J21>#ch4-$(MiU+sBpP{L(j{{o+8G$8}Tc=6vb(FMa5Es{c=~KtOt3>Nkh_4}Sk! ze>twFM4dg7$MfI(+~Wu1?O*uC{rLCdsQ$rBS-Y~fdZ_`Z?97-*Ch2#GC^|2QCzz2q zGJrNwg77nW5@ITh4QUG2&{WiGIi?soE;u{k;ICif5#WlRC$c2+P%$Vi;F%KVL1v%< z>`8>9*+`wJJEkBKfT7!fb%At56(TXK>LUA&rXm+dIv|}iX#1IH3nGF{L4l4Ek?0IW zLANAvvNh0-=7ewv(58?R%Y>+4$#7&iN+Jkpf`>o`G)4S@V8yJeY#8VnQj$c`1k0VA z2CK4VpqeZ>Nft5!RdB$zM5yz`C)|UmVh9-%MiM!pb<`aI_ds?BQ6xZ<`aP;-2qp|1c9iOeJ=z!yXUomtnm36?=-Bj&_Z@C@Jq^~${x z6D1)9lYz8`XTDkZ>5j1zDkL2lqZWDwxe4?2VA%$;u3$mtsQlW5{-pElJB_P%lGnc! zI3>P-r?94D+kmEoYDH-?G$!O^sIuvb#Uz$MI%qhadaTE&;4>vN5KmMC8xvpacqUn| znPE!@bw2sYule}1GvEKK*IxwQ-0wgeaU3(CV9Tzg1lcNeNLHyP9dRYnY1Y6L)kG!1 z2Uw!+csLn5=?&OXb6PlT1KScVAkPJhj$S5;g9pqYZdM|WA27WZvUVgux{wOt1D8hA zTJ+$ED4?VyWa2|WcEl7FaCamsZp0EJkx1MG!x5ik17<^gkOnCRTJSkNNI)0JSwWV) z6$B?qH)bXsMaLkgl0f8O9Rb%uEFBpe>`8_*PaQdRayp9yvYiQQ1@paXZ68i#Wm**o z8IX>;APC|+n=Y6^MqU3_|FliJ6lDLO>cwAl6YiN|QIpKtz!-NtF5_39d*a zsjZTLDyqTuvkiOq4qY3f?I_HKO0wRpJpa8LzVVNqaQoS7rb;EtEx?kY4T(S#!UQ6b zQE>TWiBCYR5JXmz6Km)cL>xhAE%6aZOEitJ2ANf`o5EFNjldV@laJ2)+yCX){D|Ok zRKNz1G7H-6PP7I#5gO7aAV@T1*44RweS*pU#?y4g(<3$NZ> z1Qo5{CxJ1E3_OiC{8%VE;!!BK8@S`qh}{us2ugIpwxoAsjNta1umnpBmitF|)hn2~ zq9KGRp&b+yN1M~I>JJi_S@&3soCV*q);dT-js@+hRpHR8jOnvVr^yl%2VF^hY!5^;LPVgx+lXJy>95jWKm<1q$?tYa+rxrRC1TZ1AIvkBiu*{ zx+s~6rl8`aHe?PulPwylO7DW6jJY`<{^B+N?z{uLOs9Df1Hqr!I zL&$=Et+JK`SSoF4mGK(52`-JCLPllh3@4=EpT;D{AbKtII6=%r&J(djn~|!-x)7%o zzgdc07(p~G2rY>|>?ngp1l6RoqZ-6a2&x$mDM+^u+Pug1jg*FrEEsJKO~H_A{X~&y z5S1}A1ZHL4oPo@M1eHY1G2dX@$+Z?IGY}FxUqB{ervjb<7EV{edi61wVdiyBn_?O$ ziAupUb)&#z&@)*~u(g32sU5VD-HUK{^-p2zPs~2%1$1=e|`~oDhGD91m=-ts=tuw2u`FRo@5rxlhcZJMY@sF z$*6vdn1nZ`Lp)H>(Ttpe$$~b+uPRZ826+W?Wyob ztelJrKue1KQV0yzT8L>4Bq|YT77U$m_dEm8?oz+6#L!VDEf-D%xv8Q8ia+6twZvhTs= z!SPWPQ>GB9_^jSl%&@DDnqg|73ucC@LThMCMEA$#ho~Yd z#9RH@l#F2f{FeFo8TK8S6C&#O%fj;F8SnnVJACCIJgsl?fQu6&$R3Q{k6t#J5m*C_ zofIcqL2nHyCR2@|gD56~tPQ35be4{-N?#j&Rrd4XCqKO7Pyh8TKVlqhQ2qb0<|#mU zQ3E*zvicq*5fzXNXe)d!1|g^|h%JaU!l=fc9cID|awa+qGKi1^T0rcBIPYjC_G+(F znNbnO0ROg$@ ztw$weshc0Ou)jtktt1M>$Y^9hE*<&}+6<;6IY1`f7HkRn92L;5Sh}Q+qoSl4X^N?0 zYGhdT6VphYm_jIouC$AznW!nLOUVjM^k6RQyyVEzf~sISU=C~?WRO{XUb3oDCM^ct zl%shq!swicIeSa+o0o^1$|BybqvAJ&c03V_oE_CCqjrca>#LL1zk|{1BzE0 z5+SwLdc!cVPM!o+ttzM;0%FYS^Li0u86ESiJ~thilayq>9Be;(jbF~-dliO*ps{7) z<{QuX_8&fDebJfc$&N8nnO@0DQ<2$<1BirFWa+dHsX|zgHwBwT1sB0vqo>nNSWURb zSuJQM*k29afBzN#>MvgN0h3yW+YxpXWqc8M$wp#GYsE^XR^QeX*3*$iR#H0BlrTWN zD&*X2fkm-oGaEjuViJLdAi5y^hWPpm@|`Q#E_OmlOlFZ$l>@+ zBTiPqB?fW=RYDS98*W1QM)w^;aGwN8cvU!w#D>;|P5~EO4Y&1R7pH~5NLIvi4aYy)87jGId1(`dU#uOosK1?O)F^&LLa(7||K_eoVeZjA8$kxeR@TB^b z=|!5V;Zc<=(};G0b`4VrYlq|_%uKkxE<}P=CO#^nO2=9w8{||XjOk7zQ57PSkU&Qf zTRMVZCG3RWTqDhpvy)!LS_?;JGBWXP!!KJUI4F{WDBUf3!NYEZ22O+M$Z}M5vEjIaIv ziPVC7e!$I$LVA8^uR{yc3x%YziX9n=C&;p33OyaesvtCj(-qnq^Stq+AHL>){p+1y z0K$r57`>8AH8)?7E26C`PR^pyVO#Y-LGQg7 zym29*h>9+-bl4m^_#8#j;t(6!mGmH@s{Wg^{8K7iL;$W);L8JP?5P{7JK=AsGP-aR&TaWroP9hbNK*DRyNJG<^ zx0CZv?`iKoL0Th4Yu%>6y0U!zIp6rlcYOZC*PK6`uz;j7)e&8Q$-WDOBR5KV!=B1(=R=Obe}Fa@1~=D<`+ zx^N*qsu#!rc4Qn3tMVpm4ZCZe<8E_5|qlq)HNa}7K!=<4?iHM(U6hGaRkn#8@9nyhvt<0uD+ z2O(b1O~4$_Noe7}(1FlUoV2L^4<$pVyDl6=0su?`q>A$Z@6^Kg~bFlVZYt^!Joe5 z-~7V(jO(|;ZYOy_33|~!w8JTJ1YY535wB)kvTREkmEn&Yk;-8UGek;&)>&e#`I#6H z;e<3KC#eg9W4U8b5NAxHj&rW2S8PE=AsZ=cHPweO?e4@@{fbIr zBas0rfl4Pi(R6`zg{u_}!$u$%DzT)%9+@%P_4mKV^S}QDzYL%(YQ9eb zAxx#LG`*llE=AhdzN6ikT0*{vRsX45QSC87TlJBi z2Xvif=~)`-iD_wM9#&O6K%&?4))5~}6D*BBCo}BmA&tK6#8OpL^%0tPHnOfE!a&|s zrObv8L$43Eb(5_v zx_Jui1k#J-;e=kn%{MQ6>yO^y?kArz#$;*L2kK=IQ7~E#144>onG~lF>zwE!Wgis9 z7v*w3^P_+95r6v0g^#IgKM58Vf=P)@N(YqW0w_=3s(3OFhs5EjR42{q2IwL7Hqh&8 zma9G#R&4>|JEcen66J7dUg^1xr^u2htpa>$G*{YngHabg2AB$Ybw&0DGl|t`=N-F@ zH(pQ2$cWOd^09}gEFxWjte!0s-MzA&2{elQAfza7-w3&_%F}bK{O^ua6Ocm{}`BA3}WW2 z``SQbqU|-ZM9C6|S5s`MV8|=>xa0o)3;RbeiT$TU{*2U5aXmwW<>?E){tw^doB#Fi zBKx<=yRVR!YeEvuy^_JqL)LMEBu|OGDMEr;(t0u;c0Txvd;aW`#)n+fxu!7@HXvxU zw}LJh2LqMtZwFps-OPX}_1<-$dO8Bf(25^S0Bz#pMm7xH~gnpk6A#J{Ml4%kWqA`(X-PX)uJ*g=^S8wN{N8@XI)`-L_G z^GZO`7JOGc0N-l?&+Q${!nPqVK zc<277ub7)7GtdbVO0dAPa`n|0eDj}vjnm&dao&?XCUaH`lJ58%Kokd%L32Zo_GM9_ z_r`vn{OHeL^RM53;G^<7QH}6|(OG~6WhF{}sUuRt*!~67Os;@S1(7M*8Y+&s90Flw zwxg^eE=U9>UZS+OA_=q_R?QMs^{;Om|CadK-7-WH5vbDU06-j6oh6nbMFAQV;X?PW4U!dD&@tSlPUc13|;Kq^%v@ zobZXpQIITHctW;`Hb+D7Oe_^Hoj55eLVB6aBkMj{M6sV!YwU{ZyO1c>x}4tRt|bk% zMz+Auc39751>s>rb^-MpR1TeSR4Ei6g)S_Rc!9~}^7FyzJ13Uqt7N+=*y&QtZA+eg z6TbdmP3}MZ7~f!Kqb-SGh?OJ*UcFriYYNsIi@?L(g&%(ZmOuN+Yd)lWn|j#oq0>$;^cUJ8&T1aclw$dq8^j>@QRZpva4odzr{d6C z972?|1xxUKA|Gz>w;R*J=VaPJnlPZ3m>vhQlRkao*-s1El9(lL#Nn9nMH%jOZbu&~3DyI#Rt#*G(_WeE zUM7OZq|d0pv0l37OmrJ`>e_^lG7u!p+W|x9m$K6Bt(WIP%At`y%U3y*xwn!>0_?J5 zIg1TE*t~Qw{4JZ6l-WTb8w`Z>j=0n{ia}=5V$x$2x><2@6Sg1@6-7iotYoTldIch{f5bAjzzcKxQ;pJN^ zd7;pZgfl)LJpAwz=EF;5+>v=HD?=EuT+`oq!MFd5ukh~gJ>h&G>**3ML4|ylZ{5N)L$(douC&7LU9*^!0B&6%@xuP-NqgD zbM+ncVv@R+L@*sTCoi)^-A8XE3a#jN%_D#h8auQ)!rUC+oHm1FR20>6I>>6UEOkSM zVN>a@Fr~6`3N|MmRrzciw9OGp%lx8 zv&8KPm`Bi~kfU_Ya55${%8n)4iuB7wtXdZLnlg}_B(rqoF-kk6*!cZ#?%6-QCFgdS z8@{++EKj)k`cr=EkKX0_8;v=G-GsS0jxzV)G7kMV0`0-LzwnbEe#-yxlLtOU4nM8e zSQ~~GU_J!6NiZpOvck=YGG!mFPgT5quPSD8WEDG@CXl6rK<)!}C+0@Z@&M+olY?U> zOd&3q*9b^vQP&zm5YUpeMrf~+eyaI0ya7VaQMn@ha1ANCD9x&m3aMk7B+(O@z#Qye zeZeASBh#^=6Kt^>Nl9p`#n$dg^HwJ1v6nqg5>utwA!DS$s2(ak-ZH2}m9FHnl3IO{^^VL^XSIXPgS97^RzA&`6VCxljUQRB z>55drRT!Gg?zNo8B=@MEjfw7q8BqkuzSmSq7J-!r;?;)OtagQ2OkzDz91*hYx&=A1NjdbAhm6H0&VbgTSlOV>qqcFO+p4 zm~ZuXO^T8|Opci=+Oqz`@okd(PHs`=+{lA0S&o3(%QdeM6R>_P$_g0m3&Kty_#(`! zK+fRrDJ>^*5qy>MRB8~-DzMHD*G1*WayU5L&?_zR9Kn_qi5(e*%tgv1U0JUB7fk4* zDurhr@U94!pxpFHqOQf3Qq=yQfKPNOjYl4~a^kn82pxx%frO$n$di*#o{+cq$haWU zh=(0jWv-|4T+U#M;Ohy0_XYYNy^HyUSf5mXdcH7x;tyy1?m~R}65Dsy+j~+Q5sF~t z+L%SByCkg}J_qVTG_WRRjFi%sm`7KVs-PR1!A!%F8fI+`(O{0s-#*J9ncc{( zh%Y@0Jh5U_*Xm!DIEL%(2#z8~l0-7lz52zVmHWhxDTFCNVnVTZHD3XZ+NL7qApNSZ z3yRV9P}0i?K~%tDAg)O3L@4{u&+NbTIoH=$pq;!Hh)y)YmTT6pJ?ESM018RYh$}T^Ro}`_}=>)zeWydS>pX;ch?SZSu|mB6-V<01Xa^(8s?Cn4;_z= zo1-~NSJb5JkOIsdE?dEX5ryBS90(?YoED&$+k%cuu|Vb%k?ruiuF5{knVY+nN&o;L07*naRBswJ)|4w6kgE~%G z=e+Zu?R@*6yy6#sdPnpI=~yQHWXNUbM?ZMQcYkuvr$@N80<1MbM`ATfeFWK~uoacK znMaRTiQNy{=1t&{fgCJfVyFhXEQonoePY6JVjJX4GRrNJC!tTrQNj~hwfE~24y2F-OhaQ6vq3uGdBXlxbxyxse z%~4&e&uj+U1uU7mfH)TUsL`Wp#4OH9RE~-6SxF%hQ>zSqQgd)B#ncg305++bgkXC2RlWRhbi^#ojK60FY} z@rU0b|M(v;KEGxE`Nv#-^a=6dC(O@Yv$1hHb-D%+WK(1h^uS{NYFZ(kFeQh>Wq-uURq?#Gyr?ORI)*lQc(t>9@EO<7 zR;-OOZ}mnth0_zRo({hC$M16g(>p%>=>>bSVyl9m`N{Vm_}&L+KEY9}q4}kXmyw7c0ijwVC8Kg}I?B0VB-VndN{nOd-%6{K z%@0`K(1#*#A{yIQzQ*>>bMnPnvczKe?E`){u~U!(maESCj=?p=8T_=OwiLWsg0UAV z5&Oox-^ivci_$qGap82+x%$Iz@$3)2!})LTx%|yXY=8Aj?tk_XS2}1*t6^3J8#^-V znsFIm{IVBwY-aeFL|d^1aw>ZV--Gm|&nT1gRf+zh)p~@r zqnEORe(5kEt=PQOFPK`|!CX%#8#VbKkWx&kgjLlWJ34BeVl}|(K8nfC^6-|?e-L^Y zyQdSgkr|wSd`o|CMOP`=!mPZ--LNMwc>dep;9LK6V}JD_ErW*h!7q0H_YWTU=uMa; z@g~^Hh1{`PH}FP2s1o$f&nBNvdqAQ`l2)xe(`B9o5bQ)w3DX)WWx*pXvYM_QC7w@sqe zBm_)S1M|eS)dos#gmuPxBGTBN-eBK;hq(>>GFWfQ@o|~ecS)XEu1~<3d6k zMrnk~ICMdn7&a67W1vx6XH3PUtaPFY!|`|oW3|OYjHrsIdYBuc_`^sv2hkd$N%*m? z*8b;Xxcc><@wa>8DGg|GjY&h5`1xc&ZXe)-Ft zfA<&ne1yT9{>%=^D389b{uRoN^4Q^R9Q)U>a01{$ys39_P%w{UK{+b}SS$R$D7go+ z1)Lv<{la!X$vek)ps(1{ibP4RO?jw^fZFS0eM1wg4B$j^K1Sw?dXCSE`{9|PUC4(< zE|aloQQ$dg4++!=&-6sEI_Z<#52kZ^3D(VOPeZM}M%tXv7KRk5ALoHuwZqwyDT?fa zWk&fLNxYTl>(cNgix$7z%U9?yubvXiHQZb=n=$u|`#Wb_S8l$((DZ@_=+#nL_~C)I zL7o=0H#B!*Z)~s2x)sZU-Cpo@7La)w=uLw$P;*$ywxx3?`{|g5SHgFqugnd4Z(N^* z<&S@x%isShAOFkux&JrsbGn=vS1U$s6f~RS{Tdl(WL)qGstuEf z^Xt{-RT3uRd)Wa!Xoub>0wb&9oIkkd>bGBVbM+Ki%8hko16Z$F z-+RV4|L7Zh^xcHphN;c0#oTn(E0HmA(;dmB6=JqvbRjq zp=&w*m)ekr2z(!KFU*TFUJK*p&gHhs?Dac>oUY13)Sw;vs)*G1e#lw~&6?Vty`$4f zQ9Og_oi>w+V*;8rA2wT=yxS;4H%eD)`Q!TPID=+{?FPnL18kt)cxfha=@ z4a5vu2UjWeY1T$gea10&R4nB#mE7iSVg_6i>rToQTzgsCt` z=fD1x)3@HimX(wj+E+U+ryvp7C=3W~N9%(M~h_&G}nXNHr?J9;U-VVR# ztX_eApm&q@?#h$@_C0pH=U3nVl+S_BUei?r<=1qZ1{O2&O7V#mEMcg5`y;Z8TR5C6bM9_;9yFN4nHOh9iRB&z=hA8-L&wCk z_7n+v?MX^`W@UnG5Pcy7`X2b~6`)dE@FCF55fLmB%Q$8=y=EaRa%)gM8%l_+Eh>s&U z8^MO${|*1!|MY#n%V5Q*Nzp_P*}L{dTi&W;)vfJZC|h-Pe2pX+?1zkA){UKp(T`5{ zP2lMwaFeJ_#5dR`atVA7_WQxh`{bjaJNsP}Y(SA5l^wOT98wSqTx&}{;utpcKt}D$ zq6#_kV1bGms%`MBSkAiI|2I=_7OPoyp65N^8us4*aHbl%s;lQ_vpI-ri;_$#rY4$_ z;@EKPOb8GMK@izSlB)>GO#lbTZGZs2vJoW6RR+XJkVK9R!v;brk`T$3DTUU+StQln ztnQl5^#A`J*6`)xTc?^06uKIyt~&Lfz4rQs_kCW(SNvEF3qYj0XxcplsrU`K{D265p4K`;TA+a z5}I;I^rK~Wt!PcgoT(;eUy38wXml`|1gr)-XaGgfq(~8>H<+z9Lbfb6aaQNd%-fzL z#GAa)Ih2A(H4B$`{7}ie!u7wnfc+(q(7MM>4|(`Me3ifVKR#t4Hn%~bKA%AP8*yPf zG_G}j+H9^uz#zs2ZM~iy*#PtedIHxhJYxK))O604%cPDv&FG?(QOVC1t}ZH%->n>g zZXGDW=v1VHs_o)MT4|KCdDvRdr%7x_IHjg*bx1HV&CS)VF9g__KW&(t4R)ME=L`}k z9>_`v4%Na^g-*ppyz591NA*g{+6DLZwCG8VAL_*);_A{aPOxa!xp%&`F5eC79N}6)> zyEQ-Cwc@uuzUv9SAbF2lZEfeK&c1b}H+ZFY&x;!=f}2es?R)DZT(w{0)mdNV%okV` zTwZbO-kSBl_jw+E{1wjs&wtM9a%cFx%e}S#y%KH&@Xp&I2nGW#rLgo7T@06@<_j}u zZy%}A;TMn)385{n8(qyjoQ>t($EPFouKfcc2{af$x z102VQ?Xp`3=O{N2iq_+qGBZ<|F`Z_I(qY!D(XJ0%`_U1IcqR(xWX2!v@tpLKN5f|? zizW8ViNi(a!}k;C7YQZcNH_0yLW@B&YIyVV)tqyiG1%vYx2edCJA52E1DCIN| zy@!j69(R;uZ%IEz&5EB)d0(Y{4Anz0GL{5q@+p@Y@ZbWeE_iWNwZ^^%8*;d!ZTAxG zts0H*?`9JQ`(RVl`qGwf{*z}&=s7)$xCK}_%Km^7aH|T_jPsEY0-+OJ&4g`l!|<^X zyFjVRFbFO{J|FFN-)vxGLu(Rg-dEy-C8kv~?;Kp0lI-pXZ- z9a7BiC?QgvT94H-8+=(nBDr>~V&wHNzRBwLiueAf-$vehMm+W`L5S1*oa*d5t5~Rz zF)b;@9RKF*7pep*3namhLOt?EAn$D@fCPeOgY6OwgIFq(GG$R}u{lDmK+RNdRx+O& zkF(mIRK!>--0bpDT&bvQiYI4NYE$9+hAXi-gR03D38sO)QI&`|LT^W;d^qC2`!3)8 zN8jha{W}l&KAtV1m4~?Zw;S@Va>+BU zD4ew=gPkO!qZ$-63FVNPE@z&O%F_!|YzH8&g;G4Oxd2>4a*Oj;;dap!YBfU!118y_ zsA9e>%m1(|TrLW(RLYSMyMipu`LGyfK^!m(G8LOrmI`CGaecO1uU5}QpcKUoYh$pe z38G`pM5or+yJG!fw%gB7=J2j~(siMG>jk2#%+ldkjt~>oXQsoy zwS~J2R*;AFK)>;(=5f)qq6FjLpxk5<)RNJXfM~a$n7LJ^%!41j&1=8>v!vH<^K>_J zadBXGy)Y(ap9?!2iz*8R6=f+(o~wa-8&Nzg312)*8}S#{R7|n6shzWBz3&1pn4Tll zWO)>7j*fXwEK?#K7Un~xOc|Ywu_>X^;1nZxi767;#W$B0oD?4ZuIOtA&6X0D|sa`w1O<)bN)!l=Z~a^#3W$pjJPFxgve@KB6b zuMVU$Yl$z38a!1TF&hEb%4LI)x&Uk6V5*q8(b#&%%r8nj-f;X*;Qjw=M=uVQ zL>`s72(<*dl_^UAg4j1YEd>ppKq5^U9R@n7)XB`2S}Ph?td4ByTy_h!M${*&3gNVe zoXB&s-YEnKJ<;1|EC{kx=muj-icrQGR%?9Cru+~qa(pm4S`kHppef_LhdPmVMggy^ zh{q?q@MEvwe&tmjfB2aByB~1*_kRBPNeO0;25Rein}RB>pH z;FVZ2B?+m6-g(?y*t`zA-+RpUMaB2Za^8qr9{eCpw~ArDcZrfJZrjs~usqB7tsR!U zM-E@$Z|chJ`TirvNBFRWdKo+Ut7k4>nz!*b}K^H{>~{u7m?|j z>KhG91eS>$HaM}tS5+(NmYSdj7*6Sqx2%Ui*PCVNjdxz)_5NjMm-zMz9pCvc{vn4c zlY_De9`%reActa@#b99|NekwsG%)>A0@@jXSIcOtfIixkvJ?aRx@MoL_IcEjDPv;3 z%H&>1E^#D<(5=t_Q9z`l`o;FMYE~dE^4wo201{1{QH>+xYAZcc#zjxnxg8tZ=}GHP z<51W?8u@>Jd&hTZ>`aV`auX&q;F|RLW?!d3!t$&PYP4>kz6HmDibsh}eG>?5?reFw zyWql5NqqX~n1AWd-Q(nr|LDf6X`wC|-AybPg^TmbhX*WZ;c_9|Q}jdkTz}`B@lI47 zVzb~j*`#Ud%$ZzDfMSU>QWT#GrFRI0g-Tp|{I$cKHA~XfY(6q?`&Nk_QZd_2-_`^L z`w;tpOM+JcS1EmOHj+~5fN~=n6W78$Jn9pRw#3@f5CtcZGA~>_o~_zGD2q2@Rtz@H zV&f^}j3lLYfmI)=*%&4Cf_H(X8AoNBshf^D1rmk9D|v9pG{KVS*FBMn9%lS{pu_<$ z9Xc1h_Lc#t5c-H>FGE`*D=sJSYosQmYs0EOB6&}qCTjI09jJbwKRYF^2l|)@owJuk zJy5kL@2+rZ!)6dZ{;&NRp8c~w=KcTq>zwo(^cZ3vaAR&7NOP?F$s7VpbBN?%>AD3| zjc5%hH);^88bp<#c0+k*HlgA&by~RI%}ke$D4u#}g^!E%VAA0S%wLyN>*EUO0Vh3G zn#rcN0lwV0t9B#q$xO5Z-)_o*j+57q+ltB73vZsC@cCbOjk|XvE|iZB9@%txY0AtOBTvsO z7vE{qBQKN>tvIY*n_OX9N~h-jrLz)6)EFVvIVc`UR)UrSH92Ha+@IFxZyA3M+&7e+ zKLB;coed@~pJt@@RBy_OvSf%6*Fg|Nocm}}%)TmqKap0}Ks!|%F034N5wch+k1t9p zmChx^If{6Er|h0(_7|n$0foUq86whk&D&SWGq7H<8iZw+k+nmY*&6sUky+>lPw6@k zZ`9{Gk+n1#owu+>Unu)b85bJ}1XHbq&461D)UYO;^yr+)0)FsKBDaDlXqqX$!#N`b z| z3i+5hJ|gy62ugL8IU4TH7sqmdDZsH7v<9jR_ChRb7>=SgT~sxmXz=DvptIpnml;Rp z*)HSGGi7r0t{|(yfV)8ui3X!uOmvU)HjELgW*Vs8rsma_>9sLZoH(j@n223B;CE91P7 zS$KmJKKFC?cME7 zShq!bdt2KTuZS*9ZD1~iW$@_Rp(z4d-CqpJt$nowm{M_5!npu@#ruHUu54dZu>IRC z$iYf0C*T9*wI?oxt_n9d4 zjNnDkj&GEJHGtu*St?MI1~#)!QBiGiA`N%J7vK# z^lmhmJwn77sfTtb?XU(S9V>eJH#Uq8jOpf;;k)Rfxi|T z6+hPlv;>_Q)G5Vz;*{;H@)cG#k|!l%vD-~MXS<-@phi(G2*g06YIXnO&`xZURw_Qx z7X5~xN5OkX$%%`7V3KSm-zbzQ_!x0Gmg^B&2i9wI8O%k9s{xk8l!c&{9@-6_ZUE^z z>b#(_r}vIDPk3h~NAHy?J#Gjvn}JrfusZ5mvZ&y+B6Ls;MNm738xP<+s;@`~>03`3 z4<32&fYrzDvOZf8dcoJ3G>_zQk9Gt2U_Q9i#^LISaUri({_WqyT`TUs;MS46Hf(n&p5zod2#1UgMpTQ@zQ&M#ym`#9fszs>3qzVdI(YdoGhIwPd?sAH-^SEE#-6VWE)@!<J^ zp!&{|bLK!@33xTnlp5QzO6JD4uK>v*$-H$m?gV|aRd@%3xBT(hqetGNj#Zz36KjVB zU8ptK-kVyeiuD`4vo~(3W*PBL5g#dDaao?{Qs=C6UBr9g{DZ_n98n5OGzOpqL*$J) z6E+>4WXf3CXBaxO=;WoESFk$zJ`p2GF66P`wrg9`PP4fHdMks1FSss{_L(j!b=%=o zm@a1gk;PH#oT+oB4#&j7;b)6!_I+Ua_PdO`H5?tY{xdJJIqL|UhPT^~EXAA^H5@^m zh`y&RYDoLyP|3Cm%6m!}m={yk*RtSGP8nR`oxkw~#`m7^!TDlj3wB7?dd^&+ZdJ1XPwZWIJEYtQx15dSK`Y2Y{d!n_KG@HA~u3|0^KGcbuvePwW?UB z$pqBZBkm^#-w_9^I(#o^*HPyg zT)^d~vhi4aw^WLJl+A-Q+(#VnK0_aQ{Pi7Q{+%6<2n-CkQ$a6MTZ)?r+O7j_g{Et} zI$L=iV`cvy<3KySq4EL45UvQfJ34W!`pS!Mo^t<%f#c4!q>f5n?3ozOHXrqPy9?#R z4=aZcfm0z29=|cC0nJvyg^625tL^1lg`34tW==e{SvthofL3#dcxe&1wq}r=u~lX? z-sRd8)-7jY>yT(tB2vXK7LQwINASTyK(Jv>txezO#ncfRsKr~@3WgEL#W;!82Yd`h z9E%;h#W8wCN+Gzyue+kPk8h%E=b)Ow}1YV z+~5oQefTFmMN#1paqR;$iZr5t*Y6$j4I!H zGsKM5c?L42SU6~=G9f%eI6uI?IQH4GEVE6tv)W;boy`xbGtxoR45$-C3$-SsTEeZb znV>U13VFBZ_kZ`AKW3qlm^o*@ct&9%;^?qvSusbs-E<2h8Kp2FtXuJUpy1%S*jd_u z#}f%5vh6zVef)$M-#FsrwzXk`lJ=Els+`^HiN`-A8GCe5dHO_|adf?TsB~=mYz303 z&%9uXp5CLHC>l)pEzxMwV%&?GitU+dW>Nca2pI_(jyyb^s3#V=<&#O2QcyZIwLha0 zs-jUTNsRI<#yCL~olSAl6?^+ha;A!p8x}QNQ!I*fMh|wQQoTdA5v`fS9Pz#*uM)Ki zb2h{u4S(T66XSZJ91@FbI>=rbdQWr~Zn$XE0*X*wA?8fcKt9aGZot>sWJbQy`N}jG zrVE%N+msi=4c1n@*bhzcD%!8@gD*b?DU- z7K!LMp$a8NSe-(i>4O;8Chc(JLfKVIZY5ZWpFrw?vh;`-h9bQ7OFzlQf3@cO|LC8w z{L%MG?=OV2CZX!gS+*K0Wi3W!D+NDi7=l5JDS%~3O9euuR&%y^pK+S(P*K}-a^M=_ z$-~6$bQe2O^n;-VeO+M$dy+R@^#v#9*4` z!vUmZRxk9H6(ai4!TaC?&p1}Xy?`Vesa6-v#oGn^!AQ7zv(TJoH1};pVtEF&Pe^X) zvuZ!8SIeNACs0$f*U3D);W8ta1$}uSizDJ-5^7g*D=0PC5?**7_z@bNN}csisX8ki zwPgsT1;eV_BGjodHES@zZMW?hAMTOS=ulxWwntiuIiLr@k*H#81b>}ahJhhEN+)=Q zTq?Q3dhO5{sG7|^Pz1K-$T!}(nJf`k z1+A6^C#y)PzU4=ND+`s5Gz;5d;B)`(=Xv!PKE)sY-G9t`|NU>lxiKg8o*Lvhd;83? z07CYjAk}WuYEwZMgi=iPQseMEZ$nTMG`D56Fp=qbR4zICUA?2hL7?i*6HCGjnkqoepen*^sTR2<_lqtsE4g?-jQK z-Gl5Gn&*S+GYqu&qS`VR3=g0>m{w11y&&pMQKE*|#@W)DT8P!*#9%UJU;#f(Na+9* z!+PhDNhu_B?dhgW_J)nqE|6TtNFB{;pwG~ zv{O}rI{LN4701-sQdWz>Sp!1ud~>WPe1^G3bJHKMalU2NsWoa{*PyYj_`p?$U||_9 z32BB-GSh6mCaxpS8Q1yN*JgHqaL(?~bNaI%=hlzhqV5W1+A(*hgz=iVSyA={nXW9R z8Ba+{j0?J2;bfvNo|K?o%t)`WzJ=D2&RH5$p|eLUXVW)klbKNkFAM4-%e2s^k+<$g zhX3qe<>ajAPyXxwn-PzESP8u_2gg>cA@(tLDGj4hZ{mz^ZY3x9V4g}+D}5UxAvSN@ z!j1!u$BZ0(%d;AKR=yBoLVZLxV$)NfO)1md>A_(usnD4m%vs;HEQzoD=2QNVJ=!Lh z4kZ%Wk-6bIx6F<1K{`k6ZSq)MHR7^3tG89q>QOb!pL2HG zDIQ7!1g!?RDFUo*W1?gfXZDaSBwy%7D6{R1d>2iL5}f()qM|J5Y$Z?imDso%;;fV8X#rO71VruwQU?_#4;8wwcJTgeMw`X23e;w6SNfn$Ix@}|? zGRv&sB7N`ahS0(;B6(bJtIoJ8i?Y;0?}Sa20L$B z(6oTIJi2<5g<+&@rzTG3uvlc57H*tvR&LrYlBrzac*exh2cGS^(r*J{%FuaybEH)w z$YM7sf^?nrkWO(iAQZm$&1-(^(a31El=%hQpJ=c78|L%W?!&;+(0yw{n|l@x?KbS% z?{VWkuRw=#^6G|NyQ_ZJrUxw#e42({W6UVnIj?mo;g7DJKOhv~2Xi`DPF%{kzC%M# z>;nWxRx^*JqNJ*%JTqS>_CJ`Z+hf*$_8sp2KYkuR`ulS(db>XJEYKO&g zirWgJ^?V=s#SLgw@f=t%u)BF5?VuVH-QhW==gm)?@#_7^dTm1WTq}pk%Hq|jxkqR_ zZpG1>RXcd$mf$*}u8dt$Rgp2nt{Ma=7G$)naz776L3OR zXSz6VsVmtmuyz1jl&?cu36PARgObSAtGSl^h#>(Mh=KLZP-+q}FfAR(HesXP(U^v3n z3702ix}+Qu433)C_<9MOEnHtx4-@kgkzv5Ewk^%c^rEaH%e*1D9kM zw;n!15%QeSY@b&;ER-@K5^zq?ZeShXC`u;ueh>`cdz3}v6GE6(N>yYir4of$YpNz1olyF8^ zRp>U5_P9=|*@KLfu(34Ubs+8bxT6D0I3<>uN;CwL!?j*=SidDaM)8bp*}IXxuSAAgy6{{i86MJW)!@eTUvf_m>oLfYeG;@z+B`K@mq zn45=Axgj|_Vv{kKCV7s#u8OhY5Wp!jcg`P_+_L z0<|*HGNjbp-@Y_`olQ1HTMU&1%V@yZ^O_s{Z0(6SWUkbb2&uwpBrKJ%isVw-`zYeO z2uFcBPxzFmT_8`H*a_kVKPIYHbc}S-asTIDLZ4o8@nj9#N?v#9A=AZbzB!zkTsza< zu@oc*VoGSYqRtC>?N~`di?R2^5a~Ka=ZVAK;e1CQ?17R_(HxB_>6GOY}pk!B_I+5Btef;xJNRMU<2Ksr#yh55=8hJkprq3e6|=E+Es0p0KM zU8I&3F)UOWKoeC0I%oV4C^-_usK?WxLR|>!h#+)>>2gaFQ-@S=B~wK#?AOmA9WTAQ zrTm9q;yb_kZ7#{21kXaHN^g#GlkgY>IVeSJiU<|wJ2VQ&f<{3**C0W@J&ZRNoj@it zQFtFXTK(%-;Y;T64<^PcY=*$$Iy26JyI*{h z`ww~|7u5b0;;DnnD;O`BOCYQVWH?6Gp8W6$^~nx~75)7qLKGy=HYDlR=%Vy7v4mrE z+2Q+Q!?0nb(A#uT6`2=mtt{2TL*sEz$t!%mM!L1FDclU*3f;}Xh{_SFGsF%l8R^Z~ z`QS%x@!*TE@V#IA8kz@mF%i6XuBGbQQzcHH`!l6hYFdm`AlR*2YkQ_@8()~TE;mWm zgy(|F{ZD_4cmCF2<+UGwK<5+r;seG%U8u5R^YMH1>or~`%3t|BfAZ}eU*Xp%tZ~#I zl7AHf7GZ6#9z!#fR%SwNiWSpkg0{|2$p{CQwqo$S!fk%!XCCnKy^bzq@?6Mj>x=ct zihdi>!K_eH8??zuyO(ln&RdUHfSj@&DoniVyds?=-uB2W)FUX1QmUcdX_*lg9@yNc z&KUevEIo)^Eq6o{#U<)trjD7Jg{4h3>*OeVVYwzJ3)75}vp_@mhCkK|vLGM|wJY_fX!MoS&ii2h0`u&l-J?5n^ zyw1xXU*YZ^lj54NR^+fJ=gK@n+0W+KmIeLb2|0JjgZuO^pAzzfF3Biq63}$Og+kgb zcsW2AsQVoiM;Z%W3{#MIS1e;D7l+^WgrTD=6MZLSR@8Y$P;%{%ygDK<^K$=`5J47Y(=Sc!91VtPj@#_beu5C2Wim8j;B zKp2U9_KTn6-~8KujZb{xCBpca>u-IR^Y;r&{{rFeeb%QN`c**sGkT}o{)<0C=7`j8 zH3O~}IvQ`4o5&GMa!n+1vju@+BySK$9RZK^`&N1i1H!9+_LNs%+pt*yMOlhailf^G z*2fOFQtHZL$;iQ`yVdsD!gKphD>d!41dF|?oOguD(ldQYHgtI;^hF8PA>L7IK_w&3 zLMl89h^JOtkZKUqB1$6*SC9BY{a|X1t{IEy9bp20WN$-yXToF$z6BX3w7pfaG@oc( zN)h9?gsez(r0DP@(h^wxc*os$Zle!BK>H2-@t(uuL^uW~j!;dZGA0A2uKEhqc0j|{ zQL>@R#S7U-d>)CtxesPh=!9`Maq+~lz16WEED1NACw9&w+aCY;!0tjh`|Ru7|Li?F z4~0lP4b(>&eRxiifqI?L%^J3ma{h$$-ZSLRZH7A?UJH3YQ$vR=iu4un7!OpkS)BF> z>1LL?qN^6%u{_<8MPR+552h+|X`;q~GzEO#5mr5AUgPE~q*rq8@NR|>$xA{gEe=aS z0yRdYL|**G&v55|`={)`@;;^XwnUf3Vw=?_#1>52!b#d&KYQEDxY9BgTYh=wBkuB! z%D|R?k* zq3Z*~QADE2*JM(vx@L(o`8D3yIyYaD4VBIpv*2h8qpS|L!H{L*$OZgeHO@s;C}zJY z>Tz0-8lYR*jaSsBTG^TL%mtcDd*Q{>2WU%^o*oyTWFVIW0T0Pwm=SxEf#MD zQRxI(7J@slT$%pDuTSZRfe=mfU^~r-%NZrH6v16z;f9VhdIEdg;2?u86Y8TmJyZ#? zr%nk%BDjIm2Pb^ym%qdxeC2;(x=P4>-)_eMn+}&oi+H;U9$ByzKv7bK;se#sOk@sZ zrdIZi2oKgT@t6P0zs%?U;#+in$J5{W7UQ!(|D*44>sGWwT}JBYs2Q{~ig_FY+uJ># z_`>UaK$ z*_sQ^bQ^7~YDmK&QkE5r3v@j-2P=m{N6Eg$ zpS777mX%(|xphPE<}ZAL^MCuZjDPQ+vb?=vofZq`3_V%{PBPB5eQJlz0Vb2km6}O& zY3KyyfZ-+HdFMy@EC2al;!~fyOM3D?KluN?%YHuN{^vi*_Do<&lv2o5ao*f9dUb%% z!hc_!MRrE-&ZP?~hirksugGc)qs9u%6k%0_^d6C!W?#BE-AX<#)} zN}fsCFcaN&Mc20#3P$6`ncB-znyO8AB^x6()sGIIqe5{A8DE_x_j*jZ7N8p<`645I ztD9YHzoA(Ca;J7vm8QW{j|9ur6SZ&&bwcR_d0UZPB4WAe9w81;tL;zd#GDCIA$Yv2 z_Gk2htEI&zJ6z4g(4l>^DN)f}kjdk22ez+l;rfc27u0*^?~m}RAZzO(J8y?pR)Nb8 z59}|M<2R0&61cwO?8H-YLF>p!AWa!+A-llIY0u`aBR$^n>>}fCMLJQgFALMoQ8%Z& z{JDFaz0^@9Aa?^g7xE9zEp5pUaJHcrC0*^&)s}EK63T(HFO(u^7+`aYm`8GV2Fpm@ z9K-dsnNs2vb$d*G^o(3Q&PDncUm$jdMz7IuCg zkD1FKOjH7QA9VCZA$G(S=(vzHG>}eV%AP)YP6kI83)4=RSrKk4{gBu_p4nd|I#xXR z`TLx#R^(|!PLC)Tdo#E$LRlRBYdv~6Q1?naJH?&Yjh`+-rwQ3^2)B>Wvark!xjZMu zfhapzt?a=$RP;~YqxL=S&M{pOH1DZyFl$r4rtUA1p%RCV#cj#sLAF2W#rD=FS7qn|8>T{|4(pNSA^3D)i{`qy+?M6 zFM?kVmK`xpj7#O>>zNBOuRnO5pZS|#;tT)AXIS|?=U@9S&%TrB-ux`LKYm8%M#^M& z6{_Shk(NyCJBq++Ga$XKy;LkPwYIL&wLwWBV5r%-X;HN8_1&*4I0hl$2t zWZbR^5QF78xGBtC=*g5MHNyaC7~X#INBCux8RPpTu5VTs;HZh$&Fc6+F_tA7ApTgRd3R( zNt&MLUC%p2#5bOK$f+``s;j$tU{|vVk+ewDY(lUAuOtYN48wqafLHdyFbu;x{{l}7 zExho?h7H7B*%AN%AOJ~3K~&q4O$nf7kP^uz+s$UPdQx?F%{k{8zw=EI@lIYmak9&+ zN@Qi#Ip@oG<9&wvzV0v_Pe(!11XY{6CUHYy2jSsc2RwXpMs2eOkM??xHWNGSjtj(s zLVV)fI#*`k~|kzA*UlP>W9kbSgJ0v4Ab)na8E5 z;$$aS0h`=q46*?WN9$%n(S*FE#1ovaSeWdMl%i+ z+Y-x|%otg9PztD) zQyj!jAKVlXSCd*zd#hsM=v#-Z%-<#d@BcGZ+>omYh5)@#Py|TsI>NGNc`oqPuku^} z*>CdJciyIoS6qMim~K_b_LTX%$4nLLkq^{A$_CyHJUakE^Rbvv~=`UgMHP}yuCyE=C8vC-$$m9dx6vwtp<>! zn?x8tVEhli$+!OYTkPy5HfJAmbO<$zohZ%=@UkokE9y_Gw>)$x!g!U@pCmtJPunhu*9)B8VLBHq8`4UHETx%{Z6LG>^W*}&C2kC|pW)7Z?9Dlt4s*R?d*hL2 zM0I~mwO$e@HB82owxzU7WD)T52`P^-uP!OmnqnqUlz40-xN$}4BjNKWY|lF6VkabA?3p#;i4kZ13h^a z$Z1CWwQn=}ov*QfT9GcEa`oYo)YX*K;P;Lh?R%W`N;S_(d-tf2q!e{%XJn8yR}P#E z4t|{pWa*(#y!`ZxVQr6YsN*m$3B#0A2QKQT8_Gh|CL4we;gp(pIN|=+cNk9#luQae zk~7uBE76>y{p{^(zJM|M|0+qZwPcm?s>#O6?KI|#d%QA;cES*qYt*8VopSGUXt7ns zJ2Uvm6wpeUg4=>C8Zcsuj&I$tKrBTWC?9+- z4A?-SbOoA19tc6kS#6SYr0;;*(zSxj9J`OE&@KsmgB!QlF5nD|OeBpeiV?a^3)X28 z)_$WCt~L_d#JV+1_jMSQNTg+Awak*}zk0~d39!*Hj&c=A+ei$K>SRWt zXZ7)t*}X$%_s5h_=$|gJk4EI#oYZdND&R^`UE>PuSbG@bZiqWO@QY7qmkImU3DvBE z)ry#EXxI1yR3)@tlBJ=%xWP_V1iz2DI73bZJDNl8k+WASAiom&)t2hv2~`bo+v-Cu z*OaP3tkZJUTO<}Ftid>P>JV$mu0f0;ZWF?SNQ3RS2xDZvhac}z!b=Pdgqrr?4a|Gr zr25(sE-h$3KBw&qwzJ4+M*U!qx+>6bi9s}UrKmN`h|&to(8rO~Ze#PHCrRME*HOO9 zgzc8I53lfe%m7s9HLO7g9X)Bt_DQ&*+*BZ;p~f-AaD?Nn?;LS(P+Agi%qikFmQhG%PU1Bu91A~cQC^c=RjC}f}wx1#D$pkP}L~=p4qS@rR zDA@tc88FRMk?p=F`wvFMRfo){aCJj0`a!#g6BbV{ z31@-5x9>0-70T5OWjsYrk4V>Bat;`3Fg+=IT;G%L&dDo-IeS5#jYwzD2`f*1I>Jpe zc~eNK!bkyA!Bq56SCpMYN)Du(YtoCC#Li=PCx~%04|b96n(n+q z{DfRJAXfdC(m)EhTBFe7LKA>W<&|}lx5(fdXT79Uo|ppW8rbvn?|cjUXMaR{cu4%s zZ^KuQspN)m_BmZH*r?#wet*t*Z$u@-KqO{jM2BP|s>8)%jINyYg$v}Ypd@KDpU-Hq zXuWXra?SZiTRhdUvc84z-R50|;r7eJI?D~3P8CIu@yxND-rM2$&XlGSQrA<$0BCM% zOg$_qdX+I|0el=%fAxrq(+O)qW3R>NWs$R5rG7PB=?Cn(cNnLN5!0%Tr-U*HsKNCa zGm$~mD%jE?Ly8Z^VM-c)+(9}c%2do&UF4<+c9zL6_4K=|fZ30bGdU*8rod!CKt#2! zsKZ^mi~-$x6@H36YNeyX=^xNVo%3(kAW92DfNuz-5QT4o~taNvEF43alO0uSj-=*52JMhj4{^1OJea7n5 z0$hX3HB4u?=?HH##Fjo~y%~nTV^acTuLC;o2DkhW^_UZ}-(s4v#&)HwLToHj3yYT< zt`^rAJoYuFVOWu&39p%71(ldVxd{yoo)MPG&WzLdj@aKH29 z@m@`nA{4J&73jzTB&kVKQdZ@95N=iJ1t@1LoUw3VDK}9!FC#;mIAjeH)#;4)`n|=d z_90`CvFJ2t+iM;p!tR%LVKO539f-%~9yc8!ixsB!R3_m@kXD(#)Bo={wcv!x7VNkp z1yPI5EHMM}$g;g!bM-Vc{>CZCZ_P;SPD||A(OjKYm|A<$x+@Z_hTv!d0%GX?Pz33w_B?Jz>o zqiBY?W*Jyx7NKFn-LLI&dQww2nGy;)X4UN0PD@SnoRn+_y>kNG5Z;pp#!OMCJPAoU z;>jpv%G^p<0ho^TUxq>m2D&o%@d|8$T7X0~Xdzquz|q{gY;>rCQ+GPWsoQpV12B9) zsQ^*0=37paph}Y12oeRRL(oK@VHFi67@*V+s!Z9a1&F2~RmN37Uo;p+DiVeIpjI<( z*CA7b)EVCtrZdC-p5gRFa5<`AU{qn9A$5?QW+tqkU6EtLxh>9FVkLxr!}8iuKicEy zZbjM#WMT-LmhH1O(o8Ui4L8p=AXD}p>>(}^H-c#_T{B|&^G~!yUh55Fc6V_5j^qvL z*$upShTYuge{;G=Qwe5!rd-N(qDouLenaU!a(M-nhwK%5;~Vl7_|TKuKzw{gZX;&4 zhj<5lhX^EU(jsEEt>)ZULZ~L>HY&q~j9K@T>ouiB^0L5oJ&>Rw2Se(%~5Sbls-G9yeiL);j@J7ql4#MjXFbQ?u0=2V75rxD5w861V7 z?937Ij=Z=bonNb4A{TNjP{72jLWA{&kH7aR%0f{om_CDM=;+Ge|5Hhr;TB#S*{~*% z+5O6h(}xr0Gc_&8esC6egSTby(pe2RmErP{p?@6m8!#Rz7E{#YPzGjDCFQjX;`NP} zHe2Wm*$del{Ej1U1KH@vo0K#uDHqaY7?{{XDn(J=DMPlpy^n!X6!T6V;+t}dh=y;7 zQeK7~p2fa^@<>Qk#srOpYC@*71yaC_1|U)qWF*KoW4xh^3~8AulR?&+^&s2H2>MnR zg6l|b6GZTnntt07tA_EU$F`AntJi;Dd#aMTzBXj$9F9HR7NptIZH3EC#q^C4r~4!F zxk`6F#89TZ9&==b1)-c3TCx|`4}T!dxt6$w;QDGk&#C# zhf5ox7)q}cHd8x{A0gd};-=)@QF(}|f}8cQn-#)n4p(bLwv;l$ZWg4`4pxM;X;nPD zSkhopN+2P(#=PNsx(ynFBw_u4V8zW{oW~qI<0}qzedHoe0HnOLjpV*og5N z!WS0kCB*^uD%eF&9$6?>$NH6!^z2dF!LcNY>yshk*w6zi7s{sS1geOJ)t9W(PHV{4 zqX0EsS28l>J*)M2(gf5zb|h=iJc>X{nr9$c|BS{B>twX6(B`uk=#?N{O_kSp3)?C8 z_leJY*sN)agH1>03#+q)SWB=5)AnquhWUXZt~1gIhMu#}I&$&seQSq}p%8M1$r^>5gL=LsXQb66ASW4P9j2%^%NS+pW^q_AB(Z8I8nO{e$w=`~ zHb`;U(vxFW^4Cz|k^~yT6+cWyb-UlsJfNQ_1k;8^4HS**_LsRPEcE4C-r;dEMM_%2~ zUu-C84D$)5wh(&6)TC99>;_~yBW|{on+wF%n6^_OQ4q*mWWEbsf+~~GB9usawI$k` zP+hFp5h zH3)^Q96i;1O3_-oF}KoDO`+XnN)|G`iO~>^QwwS44W6$=gr@evQZys@Y zw;?aK&?#ynb{RLTS@(sPzqq1lCLAA#24Px@xJ0thoh``Gs88^?W^=isy$bl|vTIep*r49+NV$?TOnhp@)`?LGH}<%He?n7d2!#}iZUzQHelaT0?`62iipr@m==5C_c_Inu z9VY9~mceBr;DrKK$eW}9STZ(gP<)Ayd{#EC5k=`qfgC7lu**lZyfX~F zo~1bb;s}auunN%e!vSQ_$*J5Yk!#2)Q9{NVB|-%Zp{Rl(J0TlSju8{G+LlrxW(~fG zHyJ~q8d-=vWv$K%BL!Ct>D4xY2Q#f``$C(9+6y@u#^0=wENpKg7oQ}mFCB5`?i9(1 zScLv2kRtfwhQ(&ZtDnANgyZ1N2~;(4o5(KHZlPRnsf@?iExm!&(@T6cW3pE>o?3ET z(!COzgN!-er@e&!{EF~mi&+NTj)(D_yxwTY$MrR)Y{}yZ@m%oRbIkFCTr7FDq@1sa zSh}vl%_{0WuLR~igi3mY*(mamJ|h>eaJj>06)EJ^28^MkLa~_;3~6ygShe(PFbBsR z{N@QeCy<{$X8meO8SP?5hnUGe)$WL9TolQ;4fHY4wTT$CLNTUbj0%~J*n!DnAnRb? zTBl2M>kzBYgz-Z6$!D}zEpB&0{l=W`$x~i^|2d-vCrl3JNZU~#?DF&f_c0f2aYO2X z#-KoHHTPhkeo_tEm5iaHVvJ{e*Kqey!_J{vjZ!Qmrx_l;8d4M-s(Ce*q*gy-(x*7u z+vS?MotTg%B54p$-}ZoLTXXBB(LZVg<1MK!8mBc<#2u}QJgZ(v2~1;=qKXb50**@M zIif=tgCfkV37AyKZpa?bN=+`#QwH0_unst1)m&9h)4%a)XQY8!PS+T zYom~JA_+th;ww$;Y!1e-eEzGFcT&?mUV(FnGxV=EIBzk|FrGn5!q`FM3TzXp^BnyC zF-M0LtXqgm-Rd`)=FxlZ@_Q;09N zG*dYI@;$~!g>-$v=4A_hLcPC>9nX-)VkJ?+lGq3OWHqfQ7icO>F8XWhRNiGQI2j() z+x&x}`12ZUX(-6Z60XnLet3>=rZo5GbT3}A_{jzPUw)H%e@yCI{PciO;HQ85!El$E z*Pet#KfKm!67BHB`GFQ~sid_k+3i$l_I)o&vNOYufk5k1&GVZG2u!AYc&0%Ax5 zBvp(~t+KJ$n87Eq&5)Fae2aPKb|OSkmeXw5MXfVtr{Ig0k~v#!m-H>!h^p;EQIYB} zdd^)z8jJA;yXYwt+?x&FB*>0Z*O+m^_8l^Im=Z}7hu^JmHk0Qbv+D4+aJ4M7TWA+> z`fEGvRtXa#eGl}RAS0@KBd(ucuspZyHHCU=7#}y}n^vc_PD^w%c5J(z?nPug8!??( z(zvF-3FONK)FY;I1JZ%Fq^(6R&S>uLkkUT!`T}XDpYub&a zge~KD_L-hm7~j%;az(TTw|{~i&oCa0?Z|CMj)}g@q)=cqMY67!T+!zu30N^|1QpS~ zT&#wU4uL6PuvRbzE$eb({i9C_$uK?{vH9eT?aRRaH{ZhNE$h!;ktP#%|L!qQe*TOP ze(;itYB+XU-I!r^87b6^aj&692BF5{neBT{-)UFROG9=-nxSu%7R(&XMnf)(HTrN& zbh2rzst9Z!2aCL=Y$Dm{tkfMC+xZyPye*X zcCh#qPQG)%(VdE$R|&IPBl8&{SgPZS<;6AYm1Q=vGzU}aF?5$J{A{e)`bCG#=iIzp zv%X2}?~j=5H$)Ngc1yhKXzCIE;l2{ER{>jRY&9bF4dJT79PQGN4p|z<%5`i)B0Rh1 zm0d&XsoPiV9`8{d9WvdC)Kiayj<`t}v%)nMc?)^9!A}fj+K{dmFq@DA7#CpdiPvCU zPoD3QpPo^6G9lN5rz@J%InA3pjCU>R@i|?#$nG(|6x_i+#uwstO~2~M19dJIhcgW> z50PL_ASH@ZQdhPPoJs)6`tX^ol}a&!DF&R?R%l|`{QM<1&(_Qy>=9or$eYaQzGLyx zM=U>FGQD@o$=|wzKb-O7|N8%7LCY?aVVdcO6+(|?Ok~T58c#)J&27+D4cvKm!v2B7 zmyXow4QG7DR6?;)4cbvXrji(R$10grs~lj#6``0!NyE@kR83W^_Olw-E=URge|LgU zg_KlDl51@ya}(m@uV!>2edgN%9Y!%Zsa;QI3oXP2HJ zhTt;g)2GaLD`vYD2UVgx+cMelG(Pj}rsne6=0m&bOhy$ByX@{zzqM)We^LabY-j6j|H$wofBhV z)wBBfQ%3tcuvycsR;)gI!TGZd>!*c-M@JmpJ7oIhQ&!h&-v7UUiRwuL4$rOgTqhMB z%BAiQ9O{o5;V~RhbMK7_qfsICi4+Aa*v2Ccy`4n?%_XUsRR)8)qhS{*xdt-DM@UvB zVYdQkn-tyc4ar1xj>n*DH?-*hctD50^+550Stn!%%#I;L>wQQGbu3q)b_h(cHqdkvwg={pTHfIghym`67B*%PK zC{qK`6Q5krcEY%7un!K2iw)+cXZ51z=RaPuHB-jN9v9byXRlc1%vqb6?RnmOFk<^T z9Di${{ppy)Q=$3C4|w^@3x51(mo$xKzNg7W)$WLtEiV=uuB!>|`GUI1>>bQ;SqSbO zKL7lRr=Kpk`0xdP`|o{~o&AQ*ML=W?Zp6+vrZmSj;qf!t1=xc(s804(+-`bOEJStQ zP^eUQ=#4JEjSM}H(S>$0h{ENDvWy{OYha)Z`&}a-GWhG91Cv?*VTYWeA!UO!MY%#|URBG7^$&r zai&0}*>|ta_+rTgT+st#y&f`|cw7dvN#u!o07-^CR?)U>(Opxmx2q##HkK4Urf%SB zh25DD*K5k2L2e8=Zb@6O)U;89eQ`}a9di&Oy{%}MJ=PbxP&3+fEZV@!=WBK+HPhNL z+lSHx4YG8GlrvrIIe*%+Gq3Pd#h|;AFf+&E7m?B42zN9^Hfv-$VtXF>#dj}gPj>k7 zSEo!&CSJfgPnpKdHWXf7^!&@exM1|T63yZnd$>F-mU2IqSA zzH=8@ozuSmjFM~Iox4=~VCxOgkou^=U$2wB(o{-;C;A$M(rHy5~=6uNHjt=O1(NvzD?~v-j?t(YWHy!(EQQb(h&YGy3Hv zfAZh`E4El>R0A7+Gwv9ld7ML z-q2D+IY3D$Mk}sThDAC<-h|xloWW#ACMrEo2F6(tZ2DrU8M2m_0wxG~Y%rUsC(l7n zLMj4{p>g1giakxS6caI}R!v$?-~>s9lD+nPBwUH497)A$4A_7P1w%fI$OA{t3I|n& zN>aRpKrRX6Jf%|;p@|?p*itCtLP#jKoQk|KNSnax-Y2hns(pp5<`M{(j<8&k`~)u< zc`%|rYq>ge*u4!>d-_FYd=FNk=j^i$yL&UnjWF2*$%zy-swrE;wu{`HCw6v6R5|Kj zx66brq_Yc}0qLDr3uL-Sy4v#mX=MJJclgR)##}FX{%MFJ0 zv!3fP;b7BKnDFYkqZQ%gP9&~{O&RfOlX>+o7X0<$B}Z>f370>ko(o|S*=#plJZri5 z)1TsK_~b8vam~k@B|rZDXZ)Ri|JU)yh4{-)XwO>g&LQ^8ck#Q8I?~%rv4PMD#Z(#^ zY6OYH^e$U9MNQI3c)HNXJO2b+mtLrJ%yQmb5^SH54+7~Q-@(DLTe9Vhqyx`eK zH-sm`_>Bth40UhVy?4yf?|zy3{ur4HfBN743E%s{3r36-XE;d32B;p;@v8&{LrYJO zXOD(^U!QY$q~`AsEvZk)*y2WmCb=j+(7{X}+Nw1|48^HPG)sY0V@gsq zK*$thG?i5>)&G_i;)ZaYDcu$Js|Rq_@!3nwrEXfN#+GW|(sf&&eA+VI z-(hNCaxfwXrCo_AhxF#ErRxlPb4Zm6#(iZ7L0Dg{n79$+-4T?i3+=e&vrjbI`R$!R zS|>jIxZ~_)WPIZ3w_D;maQNl{t4|CamdV=>xOll?YPPJ+oGTgAn{%Fi?{i-K;+l-G zrQ_slZ?gC0V}AL6e2+K?rCKh?1IDfcB7qAwY&V5d?r`+m?=Zd>x%`VKbip$F+Bb0r zHPxio&)N&cR?6kXBDP>8lCx1xWEeb-epmsB9y@_yysn~pDG^&$x}-0HGZj)+}*&_y~cLmoAk{x^BxW~zFzs>mmgwdTTXTN;HAN`Z}am=WQ z12g5e&C&g@qh>PHWIcs;`0n<08}8npP}k4}_0?sQshS$`x)_(F7f}&_q(86mdZQUj zPNF+VuY&%J0V^bH5ToLdRLZa^7>>WWRepcr#!G1k3-JbP3ud8$=^`q&DZQHeOh}ZV zV_KIJVz%Jsudif->f8#$ir+E}Ts+vIcA@Pptee+wqrNgYqxKLtQu$cg_PVARE4xBU zA=m0>GFeEKC3~af>ZD;J+W^atpD?-mj-mp~6g$u4g{MS|^p^f+ORx_6bivitSaq2K zeOHieL=GG;K5iLJC+yhFWN%6pdqO|J-zvlU)sk*oIM}U`VrZQw#5ni@GtN|ub}M!6 zcLrB^KK@C^rgFUXz*DXRpIuung5~Y6)s*dq%jaY6|HeBwTl48;$>w`6DS63@zv_6| zuQ>Rvn$1T~c=_EkHWaQ{P*d~9zx6IXD?b18zae9ppndlx-JscM8L>;iV`=!#zx^J+ z_4jvpcqj1b|M@BP!F}ex_lSDWDpRM05DhsArF7(?yE+h3R@HqJ&9hhUtPZzCtoB6( zY!Q+OB#nAB#*#vyYDQpt)}MdCi@*FSFW-O0^5d3O6dF@uM?y8T5CvCNOpo@N-QDMn z-+IXS-iYS3Vte_VfA(MgGtMqEBP$oPw}WE%npxcNz^=Ux%k;o|$#8Gn4 zua6*O!88RYS!1d&*kwFhd zrrj%ie({`FPq$ouv?a2p`SBGQ&)(Nhx&C-TWX9-iuph12d3eg`v|_P*Mtfe!XNAay z{!10+L#-;@P;i}bg~9Xt-}x>6!GH1)^OK+Q@?WfR?|zfrw?dIZdT)=rUq9yH!JN^3k2!I?|9|~!{_wwlpU*A}o(hQ6)X4BE&%@!f z!%{)he$?)oDI788-Wz)~!(5;wqX|Z1wVi1J*F$mSUdY~Sf130*PcG})tw1TN+LGaC zEustaoD$XwNrnX2a$8;($mjun-Q$T20fMS;#Hza&hVj19n6B(qZ-TQ>)T(21!i1V+ zH4&vaU6_&v4JNvTETU?YTiA;rumLuSk<0pZLx#rS(-0+LM0*6#x6mfTSe*#PW{NGy zwrF(p150@f*Pp!7l$Nq3n+e87sHU)bfis0tJ0{0tb|3E1e|CvEb*!Hx8rO0CB9J@7 z?8q~kWvbec`T(`17teCBBDBImV=0v&I65)vhF^F16d3J|RAbs3V()nN>6WuR;_f3) zZ8|89>vN0W9kZ|_e*XA|zHE8*{&Uu}1Om!>wDhbv;1QKf;cy?@-C!;){_73n`%|tz zf5n4$-{!-YKV?f#M3^=;{@sSF4}OBDAv0x8#UK3RZ}IQ`d&jK*tE~Qz@V|0f?MI*&U`_bZz z=EU1X5i{i5=`=m3j2Y+(8nk&^VrGgf1HwoTCPr^PF_6V-($?!9uc<)P4_8tlw;+8+ z8jEy=U<=*~eJtcsC^>>uswPR5PNs%oRc4r2Sv4V+Avs3G;D$=Oj4gSiZ>W6FvGJBF zXRK4DgK_}W(`0X9M>dm7h8T!52g{*ZA6sm(*s*@}XFqJ|u9nm?S2QyQF-uDANGNEXb}3iG83Yv83Yx z`}~9d__z6u--Yvk{yvXC6CVD(U*qt-2H9TFZ(3sSiMG-qh)K6fV128HLW%|&FvF-k z=i3w^qf2jlt4PY2mafzW;OnxBueL$n3E@^s8=_E%UdIsPlsU&Yb1<&uLR) zemG-f4E631cabtuC(f=S+fC2TT!$rUgft{c5DV#I%V@{rYaz5jaRxCFe1owadp=US z%txOkKKkL7$6OI8JbL&hObu6`zT_%g(bElYa=~JF^n2gH?<;ib>H8n?`T8SzGN-(W z{mMN)|CfKo>3ff8zLELhhkwl_Er)i3tSpg=`|R_N{_|hwy|-JQ|1ZB}oe%iZfAH(< zo^GLybZsVd4#Z&xT2~GlP9?TbLLN#dLk>|hGX{l{-g3HhE@%iGWf1BhkOnh=F~2%^u0q}1Zg3G` zF;+;6K(e~QmyoD!A!kd<9*>HvEe0d{hBP@-tVS{0LHk*7Na@fn(kO3}#H}$uUn<5y z?m#gP8^QKyDy&nsXG$4~AeB-3MHfjyw=#BcKS)!<8;Sh6?=`4%Iy!Cl7}lQeu(_3`q?ML8b@?7$&R-8-Dkz0U7X%AM7Vv zfMCOhVZ#DpNu)RoB1Ka}OPm~frhB@kyDO(#b@P`_*n2NOtbMEJp@Bw+s=D8I_StLw zW4mr(2~C?wHdAqoSu6 zmN*ks%P0l?phQ}5#Q^{5%RKz>9{=lq^{+XgWRfM%KHqhq8LH&N=_C zL$;{6e0|1f05J(c9HtHU8JNmw;<-`M-y%9fCJm;wPITWz`DW$wf9-&(XUJ`XKnKf>v`5u@%*IL;b@w7k;LqyS-re%9szn`jEbX%}ZMpwa<}%9d=N2 z@MO-jJ4<#hjF_d4Sl6U3s)eSmXipm=hJLT$qeaX7(VB4^xU}oI@M2=%BCQ0z@yF60VqQ-N;F#|Rzsk!nSud#psE{kv9;VDZxgiE}@jeqzB z+I#y{Y+^q*;QQbHYaC-Xm~g@Ywy}&aobdPm(W}h5C*1k-1BzE)Vdv*BQC}4LuAyIc zgy{8wbG5errj8h+wzf)-O+Xu5{mK{E+H-`n1<@Ls#S*u@eUVL) z#s*>|NU0>HMF^{e>5}#+)E-Qr@XD*%{2>nq6_g6s4&ZP~CR(SN@W4a7|jPPvKTRdoP(*Z-^ z>fTl2a>4y?-^}ecmKi(j{qhYCzj>2-YlqF>zRbIS@GSx*pZfJL^UXi`6C5)>^QG5# z<)tC!&TVe}aLM>nH@NtB-oUaXb%~HXeJV&TiZ=S3rxT-cS7_o_NCvy^VeGMWt^B1# z?Ngw~xDnPwOugdahj;iF|IJ^qe?Reazw&v^-6Q1mkPBaUoBbawsmCMYyrl(}ZH3S= zm{{-;k7(SvtuR|-%9m;$-Mhy>{k=cqBO(*LN(J-81m~Ry=Q4i93Id4&RZ}Sm<|ru` z;<*0mh~ZEO$q<9Vn;t(b@I{U=aYg}@D0+EVFh09nOwyh|dZkH{(}LEZe$yC)WWk&K zJ3AGRC2?x8vpG!A1w@39h1427B%1q|OaZneMKB>@qhN!oR@#XtbU}O2`$!T|-;z@U z>^baDa$4eG(STc1kgPV+I}0v!s6Qch!me^+RM%@T4-u2g6YV-ds~?6w|Bs&_rI3cZm<>a-baZQni%VSTFL6efW^$ zJBP@qt&5F6*Dn^Q}*_R)mZRSn-?Y+D|9i^MIjkOIj|V7%~28* z(X>86((XV^p@-2r6^0l~GP%Ps8tuUo-Gvg$RK{Hw;DleV%V7s5D6TI_a zBB^xH3vQSQ7{V&i#e^6Ojn2k+h{oxNkO^=nSyGl9rU>8*Es-E%x?XR<6txC8s2f+M zqS}jYT7%p0BoAh#p}F+h&tTS?`{9O0i#nEq9V@{Pg6X0221T$t(WvM36tzdpK$IL1=D@PSOI`3&a zhZRdL29uzyDkinz=t;+79a)NFfv2Bsa{ORHjX@}xe>7)nXNsK|9^Agmk|mLzmc*Mc zzs_K5$WxwBP~)&n_r?$cC-)EO2@I(jQnR}IlsSQfWitf!dBT7xv)A_c@jw1Ie3DP` z=G#;5|M}PH&MIF2@+a8(+yxvxp@Cj3DXT{?NkNfd)LJ#r;Z5c(rVXT`&}eiQ2x!rZ zwVDuM=n0L+pO0IMtS4OZ+c;X>XSX=L-4M(nlb5GF`0ibpb=Go z*_3h&y~)ULj=GHJy^s0ebxxFr=_B|^TIS!tqU9P(kT%c{EPdB!^=qxOa_31Itu#X3 z-=e-Hg29#+X$;9jz>%WQA}0MPQ!u2{gd15*BTza*a@tC30{Dn63amCok&MA+^}A0N zsRX=5V#Iqx2%dVH=pI)5@PGP%tv9bQc$gcFO& z>XSUzqFL=uJI)>I7mYe@ibQOooF36&k|9_FP80E5;gFDsMb2e8KX@iNj7dtIHind} z{=(Ahd|L}4S;}4roe+|yZrP~uWyTr^31b{d3T*1I6`1HSHY>D)c0sFi&t*Alf~BF~ zRhN2c1sQlGMwMPALB!$6N7u)Oh{$P{@9p8eAn=a(ceG>eYWbi_CXuqBIbq&$|1tg)E!4h-S` zlNBk{Y+RgBogVSz!6`qub<7SkIue0`OFJ8kF3p&Sj+Ty^l0cx>`vp5HIR4%~3Coy@ z?a?I;mXEMYB^0LYvco2uTq993VL^F$OgK&Ka+yn)F5{n_^7?DL94|XeQ*rexpJ(Ic zF*GN{=!g=KvLvKldDa-Ts>~GFn91(8N7fy-taSgi4)Gt0Ac%=N8io=mZG|0HNa5%c z#Ia*?ZOSX3Ea(m$C*OR+-fzE%Z7Yr*9`NkeGhWylGQ2n=Em}e_FsN~R5X><@{J-Ae zU;WdE+@)Z^K-U!_jz~#?M5U8}rBC0ks8LO0n6`l0R$YcgnlFifsS`luN?#d)IunWE2qtU$-R9S`5 zKdm)Cb?~(9xyS)Rnmg$FK<^zAouXYB`jya6y?!y)ki2%0<0`}_O|Z5K$NHdkUs`7* zPg-f4M!ufwy!0m1;s086TrJUzL2hyXQ?b$(Zu)STRY z1V@eyrfjl7SFKnqPbu*T22aIP0wcyboUWyAYUXGA)EK&F`?CQht*TaxR|AbMFFj$UKo>fB2NM{RecD89(~{pK$FruHnS+@H=M&|A5!N_zC(T zgeY_-aPt0B9=vy(KmO-O+@YXSRj`hJc@;7ANY-BJU1sxeD72*f@;=8n_220~ag4BR zUm7tQT0(2+dZ8>WgR#NZ25izONT(t*OjMs~Ql2&y2^aLn5;fK#R*k$azpqRw8Vg~J z28Kz(p#^uT3=hR_+LOKP+v;Z4GI zsA9xwgu4;Jc&FAC9KP`Qi_krQ^z;tTNG8q?a zzc`_&JrV=bM5+>ucX|Vbb9am?Si}p_E6F8!L=@{trG4Itt1b+(63gJlV!gqMmZzBf z;u3V+EMh*4R+K=u=YsR|gD0NU$DHh|{yQlh^crtwMMIE!afHHYW_+KZQx4F$q+dv< zYKCMC$t3Mq%P5XTizre&9}#paH*1R%i_{KU)r{h;e#cJJwbG=-*b>)8I&>^GE|CV7 zPJ~#O8V}LyIN)8t1LDDxNHV}Q2{-bXatP&`?)Ed*`zzHJ_Uf=7?QO6%2=uYz_;5`( zkIc48uDv*9$92Tmv&iPx<-qdbaKW8-9@E@gu*D`lI#M37`l4&=CuqL^a@4eNoY=}p(Ik~5lhoU-umS|u5a}WZ=bTYyT|U^dt7{_ z;M(h+y$eE77=o0@Yy(>r8iC(N+`0whROl{(t7>coao!O6j$jS(Q~{k!(*YX=>Mpld zqtz?b=^AsMH5oM8Atd~)X1HCm+4W56=@5SKZ$G5ifs%^D+eZWpHuSh;7>-IL7*6QW z%0|hPkinmi;^&b-`ADi1%x9&g9>??DFLK`e>M1a6yfS1uP{%|_f-8i2T;d0o5Tbfd zO~CeGQV-7J`l!X6xq+A@>b-L*kLh|otY}JfN}kkv<(ggQuARZSsB!HsgDciP-y6?6 z&@DhL45_n3aT-=LFsiP{BO*u_w1W<-4qW3vEY_&ASHt_Y0aGf2H-hbT0G7z}QB$G@ z(<&pQAFti<*l~%C2{(0MEHOD;vWgxV!8(H}G@qjk84?c;*FfQ{x*L+gm06@4R8Lpi z{Po0Dj^FNKdrZ84#=XBdWPQ?ux2$?g?;V??Kr9^d{B7vYnB|bWKBm$!f?VF{&Jxpz*c1Z#)L$o%k>!z4NrdZjQZ*> zmp*j^!O_rUae-BWFYfY*-+X~f8-Yu+$j(N>4J%S< zu%k*xs?=kt3tPR-HZog(I#a&2d9FPn1o^g<80@RZ`Z5SXivH+TU$em#D^8 z!Bqy5*PI(yW5xsOje@cjN+JU~dLobR95KA=Sv;H*q@`~~W93W7$#GI|VmQmevq|uS0ynO5Ke@IHtI$*rt>*fH zagiX2l#)(!2Ba^vG1*11L3unERV2A>Q?pgg9DED1#1&=xg@Pt_}CD8VR_o)B(Qfyp^)}$Nt8hBBJ(qirf4RPcWC($Eei_d za?Rnrd#q{60~r=IsRq|EW=easq)!b4#x(R4mj+ni-tiqC{P;dsKl3R*z4axo^EzX8 zSrO@ghMpxbV90O&hi~!f%N38l{fw)>^ctW3k6&RlJK^leG2ENdc0%w4Qq`DIrSi$H zBP?4|n|WCkx+1mOX~MFn1}>V!o()WVNk~!i|6`Ad9WE(^?h2E0a0INw)g`Gekx7Lc z)VNWJ8|zW&GsE`y{t=Wt>qjfXs$npj;D#eYIpWTHi7wx4`d^=i`)gK;-gin!Yg&qV zPMK>hNz5Fdq7)HNP098v1sfZd!bUn#0(?BFsEa_qinM2eu-2>pdbl zzOon1OX(EVbfOrCiZ*lHgo)Z>OK3) z@4n4vUUW3yyU(>x@A2Ay@+Py@J;r9u$Sq>ovZtuyKuPTH;AS8Us`W9Km}0 zY>2IUc=U+P!(%Sn#Mr3#9dGeYCCKEJAUSPH&X3g-z7WEEH z5k_dIc#maqcZJ8ZdVEGTE^s4HC$Pu}FVEY@GhdcT17(6^zQ=kr$+FEsM(0-QlwaWv zPstR|g%`#QrX@iVb{(mP1=VH=Mo1H1=bv2uXot9IgWjqoG8oaW6LaG`s#q~S zsm{M=^7tlEls#!}kQ1T$*~_@YBj^*!XK_&vahNDDoPKj3`H$9^jUnxmj&@m64WTGY zR=op>w5L5Jxcu4-nwG^u57ik@){gt{F4(vdU|RDnI|3 zlKcPLEyl0E$ZP-L70mJ}aRHlCC{7Fyk34NLVAE)Ic6YMEq)JKKQp;bg9pFY4HZC#W zdBC_AhLZtO8`98|N{=lp6khXoq9b`NGsY;9j018szBr4q36~0FI>c|+OlBh{!!veP z!h>w!If@Im+2YCj&v@~RYc_UTn60ENw5C&LB?kEA6dFURM{*{?TlilqFrAue1Ce$KaZxb(wX0nEq{E)BiMb!w$ACD^>o49cIK2n+_wOT<9m4%HioVBs zPgxm;qk{Db#06}`HZYox$;BmX=@L9_P)`TY=4LyRR7>+q+j^t>C zF;fg>{`rIfo=D*F{1J&rPfx>|$#lxgufNGgG2@H_p5D97?5!)P%GD7v!1AkK`UHRX z=eKzHXAhCrf8<_PmVIE0kfq2hgAna_+=}gCZI3YR*!wIQta8<)DyHyST9ZgBm`Dce3T#nOY)+Z%4j8Ts zBMf6ak;I&aB@OfahQmk4q%PsdCF2`YQvR$uG@?PV$&^bia|*|E-1Vb-_GePF&IN(l=F)*D$TJJ;xf^%6MZjqVu&$8P|6_% zj|6qgXm_Lr@}_)~C65A>CTWQeq8xcH`jKoTcz*DhfO8r=D-I;6%^_s7W2&@L$+ZdZ zQDwGBF1M82?d>$6$bt#_;Uz0b?@3mzKv67x;gKB1R^Vaaaz%1UQI@#qaE(H+)(gH5 zY9w@`g(_`OnUl4QUNCHy3l9GLKB=m-7AYC9B~lg?RYkp_6zh{e`vB9fi5D+pT%@## zaMEGdYX&3Fg&Sksd`-J-ux`Q>cxkWTg`(%p>lLHJ#3LG(SboBi$F!Q}7}hkbi9|LS zqmYQomjozKwZ2&1-z+H?~=P zV;@s&aP@cI#Q9_8O(z?~Y6PPJwlWOXb1qbe)We9k9#?s!?~zi7(h*aH!&4?VA2Dq$ z^;8jKn;h1bn6knY70DJ@(Ze8xw)o(U_STWWrhLyQON|}@IJpFV7LPR|xh8aV4cWVY& z0%k&FIQCRStCxmV&!_e3IZfU`VK7!x!V-y?Gz}p%5Ejs`Bh4z%H$j8I5VD^j`}a_U zH(RW9b;?vn%5fAa5JQ6t5i9M-2ha3|Bo@S~%X<-VXFV>e%{?}e)EUgI&_JI)kfbFM z)Dj<@65C#Zl;kvB466s%gevE8s?IS@J)R0X9)PLoM_ws}1jYnHwgAbZC8VUGAJO2P z#VUwKRe>dN{KG(u1%2r-IcAfxz=*}B#6S|mS>X7u=d9oPfWhk*7;KjqBeVp%bzo=L zGw4^yXauRk6vEN*8Ap!~Su9(A{NqF3U7sOTT;Kw2zNwe=G+jrAW`}@~vzqil9VZr9F zzrxU-;T8ciDX|kp63x&frDb&jX%X?2#SSXcszI8B?K@%z<&+3eXO$iEhTH_`6R#=pImTZ4XPL<r4!0IdBJ(BIWMJw z(qm$72xp~RLR*GJ7ksT9Jkyv0@p)|L$FL@5Oae{_>V&KPWJC6_ycjhz9m_Vi}J z&_OYo(S^u-)p74fYrc8&kXslEc6j;IZ_|@#=*c~{%Iot@hPco32kD$IA!Z(K|LNK!wTvWh6BB| ze5o%`Iz^;S#H66kl4Ntww}GIyoEl+u|5sa=mXuO?7}mJygz3(Z5r$0+qf8XEz>0>| z_fJ^PFgRL4N5md#S$#CW80*RhTM|_T9p6gl?@wq=CWLRd1<yBq{J#F7ENL?4|J=J zxK5<(W0jZ`Xi4hc(HmLtM(Ka?=Q8f|=!e!IHMl0yJBu4yq!m(hxT+)dIS2-gbMuAd z9y5dK9SkEzdhHPtiwgzj{38k3ELf@PfzT84&;SP8iB9b$q*_~JivDA-RV+N#>YG-a z!%EOJ-k~E!K@L`mD3u1^_G)J#DFRxYzolXDVnu&v&hb~jL%ZsUy<@mjF`kVzvT(A^ z@v=ZFn6DBKez4|yGzhy`8s;3(x)+(VX3UfUHEUKpoZqF|6cQyRiM^M%d3fvIa~bcF zjsX)usHreGjyYleY|Rea7)n~!BrLbS^**nE<_&JVF=E@TdGOs+roZww+t)gHv>=X# zx<`mr1%2i4lbRx(uxd)&?uaBk?Slj2NrzdsOl8Sv9+j>syza|op@LqkIi*P)bONQu z^I_HbPw8@2hzjF#j_Y&Tn2uCg4zU{p>TyXuwM@=xYG8>F>F9{aM#1T$W47P8 zKp%R9$drN=F>iE{0x+DHCMz}3(h@Sv@^SuLqRE1>iyK?ab_ZbBm?mJ8#}93;mWza# ztvlHxN)${1RUw#O)jYc_4rI*O=;(xxx|TTub}sEOXU>wGK!vcy9$g-d62k3!j~FxKjn96H?$(?Y3wrvj!3c~P zu_iKS!H5Y1MkJtqX~yQyUC`SG;qH&#XK>|=D_djke(fp67vEs=$th<45V4M~OZ0Qp zg5@1_iP6xqdws@mvm&*Dc<&i;6{uD#cALmpDr7Py`hsK~)+KTBCRH~<2BQZkWS?D`VP-C#^v$($3+|y!rgx@GAhK?~%5=e9ypreJ8!1`!~lm)}> zu{tu)$c6Kb?tGJT6Gxd}&^r2lWSLckD7tb=FS8y0O~-L+~M zwt5Nl(IQbHqm&zAl}<1^?wJ@cL9O^+I?a)2z>adxCZcjO9F~GKtVsnq{3kEkMp04i z5{rmy^ur7tzE9fToOKxq!AX9r21`*2VjRI5OcRjW<8t19vVtx14H|{M$`DQJArzD* zQI*=z61)XbWYxw%eRar#Q%f5iFa69G)s+i0fA|rr!`D13McNq?#S*|%I zaPji1n98xBXTX?hHfDz_+~*?#mI0m%Tw=h83qO06(z_rg`XYUs-;vPRFRGY*il9td% z1un!}V$e7LblYO;k{BWq){G8M8Lcfvb`kgp(Q7%VHTeZ+3w2w21;YqH*XMLNL#p!k z*hic(AGhV0sODy)(8u!%D+K2~3`&Zkq!2*~1Ko$u!^;QtaQCn>?EsBh9rHJb^&S^H$b2|)reMK#tMg|d@C;~ag^7&a#zB<)?ZSFSLa zIkw*vX2Us~cOG!T-eGuUz{BnePe(PI4!1m=KFaOS4lxL5ju1R}CVp&5BD!ersw_&OZ#8J*_iebyq_rA^1|MP9y z?>}XIvZ6a(BI{0dkU1$_205hF3bwQwPY{D@V^hGi9TIz$0UCWkZ4&5PQtB~8jC2rM z6(7@+jDm2apa*$lNV^uE(CdzqhsHplrRV6h2M6V-V1{9u$47=bv<1}F?F+R7B?1ug zcqtT_Cv7t_e&Mwl(`kXr&#*W{F{qT6ONFYmvMNf9(j}4%36wB52~s3EU2m*__@w3m z3x1HnJf{cD`bh8ol|Tec zw3sT(V#Hxwhl{!jV=U4KmCZQ)ft1rwGsk(xVvz29llyqSHs_i<(SJU3B+;yWuiU!U z_6Ess@PyZTQQ8J7ET#hAC8PjT3*MS+BhqkLmkP|OuIcip(Q?74@Np_Jjz=d2hur!<|6lh1@Q@8QS-fHJPZo@4 zHAU%}%qm73L#n+grp(17UcU!=RbZGtBB@2p5Yt7d`uuPv)#?`KK|=Kk_`Ez#07Il5p4& z7ncC_yRu*y&3N z6qm3`dF^Cy25f1FMyEL{jez&jD%Ik3?+#IQl41=`6lm$F=#q}PUVbW9Gj1jT^lB>pjhP6Yqa@&OK*n=avr;1`HUyK4N*aVolGG2|KUtQf_)W z0ygg}9flDb=RS)}1spS=%wT|Jiz$~bUW5I+L}0alL_y8sV9rCHvZm)NzjA}?GvP=7 z`!jC*XJ25ly&^naA={gn*;GHzRZl8v+~!7>>H`boS3^ z);)JVJm%oR85I>)`K~3RT?Z!QSH6G? zhF}H6sd~i(q$m(k?7=v-2gNokbi80BD1vJuDksipzF6o5>(Ez?SbWm|KA;6W!Fak9 zvz7Ne!hMhkw#2syu{{zJ$$}IfA0xdLBsom4+(cgE^bm;$=SVi-QiM<stj1cTj+9-%v<9g?wlYW;v7Lr6Vb#lLt>$|sE4buUBI2lGppQfB zhNCJBM}K;gYHQ5p*S9%%e~!sR%*7XmjLWAy`zPPz>0#vd+;f0XRy8idaA%6?1N-mY z!clOA>-ZBmIeJFTgfq?%9D7{C(-U?*=~>TgZ^Y`!f<&OBCDHSU6~nl}?(90Jn~{S% zPZ+Vm5l`tbyuEvoU;4$XJo(o@Vf*iWiiKIB~3R#a({RCuB6x4|Y+&&QwJ*PfeRhv-ID|osnT+YWKzOpmmILh0CT@Fz zsn?wR;lG8iJ!W$@!}>%&U(rX;+3jPtKYNj_s}ri#ijB|ga$#gSI1bDowVV?9@cYkL z-*0*Qmsf0l@)9noZ_>tq)CSunrDAOSSVxjX;}4sTunL^Kf0sL7zsvo18f0UHFDtgM zZm_#mvQ;IP+mBhCCH8L>EP;-cvD=8pBkPvV8LFXYjNz0-zhy{AG4F96i>46-G~U7H zKh3$Hv&J&LFk(;{`XuxcsVmEHXfZipBLxdi8>U3Sq^zh)sE(CLvJsQWz+VB9kdVOY z^X!r#h$52?eXhx3e9eP(Im#g-r8YLCSQ2B8>oq4xL`DAmbmmGQfXb+|w$N*n%43>_ zXd$$M+*KlzOIfeybhg)0azSHx&U5B1NQ1Ql#PlRvK-H7PW4%u2EiGl`a7l2zBb1J! z0Pi%{#Y7Z&vPK0kol3~0kCzs8rD2~_a^gqAG0;t<<|TswDkPl zUwN5pgT&phpYp;#`elmsGx|1RFHSMjF{$vFXU7z-#O#bIFVE=RF?avTS8;#!jLoZ4 zjt&lqCu)9;mFHW3eaMaWh);jv3OB#`045dP9In2$%d$Qp4IQ$INNZ^BpAn`bWID!F z5fePNb1)cSoWwvd)ZI;br72R%y$<5EmDZf|(xoDsNiQD6V`wo>r>KxqON<4VBI$f`lN{ma zB&KGFEeJo*z7mSI0O&Fwp9Pn4BUuF$LlbHeW38_!H_+3;B z)<#mYcoPw4Xo5p_wqSgL>RL%{&q&Q03a2FTq{5vpdF#T8>n~ZxTTs3>Cm}Il^76k-2)u6Nbm% zf6U9j_BuQ7Ut^!U{Qpe7S*)hlb*A_1;hX;HOm*s1ol|oa=RuMwQ`BtPZrN_z-Dq_K z2?D!=T%?htZ<5?J0tC4T5Hx}W$wd+%a3evw;WoNs2ae-emL;_%$`VOQoJ6u%B#SlI znWumHzCGn)?Nibf3nX!dzrJs;wby#z=QY$=Que384%>{6=NJZ@qvK02o@49VHyC{7 zIr=M8+K*?L;R1R%Lib0s!4s55E%hkRt>XMHZ~XH=ru%mX^p*xy=pR+Saq~${M5^UC6$DrF&eoS_=L6+M32@eUy3DODTq__ zyd%XP>4{}lUU-_t zPdAizKZF~Hn5II_<|JjYN)cnjN3XQJ|E(>0pXk^-u)M`CI~Y3P@zrabIkSe_Ib`w0 zby5;dVZ}0W0eZb5$sb@b)Knb*cqc1R3R07&xFjMS_t|FQ_GzB~^{?>mpZZG5_!%zl7e|!>p`v_A?g<_dY_68mJqn2e_1o(-s31=N9PL;^lw#haCT; zqeO9Mf6lJllJR+NC5Zu8ZjJ5RZ=Omq>Qyrh;IU^bWR`d%eZ zmt5+Cky`;GVc{>wYuc{pc^%Q{MF|3pS7^=U@PT$IEy4oktD?0G}e zPUnPB`_^Gd6{(nIZhNWvIbK@?uao8D=294W--e32=GCG6*?Jw zN_dq$eClVWn%zt$Ny;fYl`z&|XP)Q;?dQCs-3mAiZL63#ML#B#>PRwYl@$XyA0bM{ zn%1p=ZR5!f#*$P^d?;G|3Wd@UzXHW95NenPMWv;3hPeb$1{B6XPziSgeqW5J7k=wA zoVu!5d-6UHzkQeJE3~%|HMXbdrm%U~)*ros_aud5kSt+K#|!&QkU(8v2ZxqVquIgX?coEz~^! zwa+v9!6LWsy-Uj>HjltPk)OY?!BZDY?)}9*uKtr>#Z2x)8(~;MSrBbSilULNmU_(Q z`@Hhs{TX{dX-Qb_W%t5~SM3B5Bwp;2(-%(j)GuA*@cm8RdigDOffo4FAKm6R=Yh-5 zEEA3uW;(}o9TWv=rqITtN-GbUHt4=MNoYLtdq=$duU_K^FYmD{9DQnfEMr)I=`>s4 zzsEhM2ry3o4lRx;KC4qgmW&$$jyQGLsv?BMd?xveB}PW}`8Nt#he>{&<v@By?olzmIlFC|Jk$?#8yEDp%1zLY;NLLw$7mK}_Q;+P0lNtFv8QplAtU{sms z7m28}>@7nn!;=%SNtgWzQO>Q{DN+8YEIvqx@ciV(Q&x-a&Ok8<+tK|nZiixoj_LN1^w3fajfImbkY4)q*#X)p^0W0U;%NhByS z#9|bB76}2;eNR|WbXZP*(QxgvH8yNB{@z25Zw3aB6(k)oJxB71w_cmGc%>xn&sd^i znl2luI- zf1LhWq`T3fmKI5|z*jv?S-`kOk1SJv$dCW$uQPpZ%7~henR9@o<1C<5Y=;z^cPMqK^eSuURc5cm5(;$vncX7sSMl(d}4f<^dM z<|RYh&QV1`#YANUTWbl}O4Mv}RG;|PbY4G&ylf~~W60{-kitZK5QKiwGon<9fX@g@ zol|?Fk#{dSR6HS_OCFvSsX)+$7z1+ao|F}dql#IeW+V?CAw`oqQfYC)5?TjIJc=QL z_X?j9+KGF^N2#Qlmz1w*bwX7NR~o7DopfQY9!}gffla*f(Wy1iW1>l$PX9`L#jb9h%JSo!c^kN+I;(% zy&Fdy9yrG3RrKRm3BE#w64k~-EQHdY5~A_^n-ZXIWVr@xniNfnWVket~Cc z_|m7BI7h|N!(-;tmT8ypJ`z%dxfiCXQs}yet_$>_A`T*VzxgIN{`3KchV{BZpVaQK zPrJ8ESyZe)c9v^rdo1L?**2qlRo>k}iKd_&Rd^EKTSBr_wxW)TW@CU|D{%9Z>V0B} zl{^huCnP+E63g0SeFh7q*vDeR7%&y6XmWaMq>LVm!BgRqh9L96m~!+O8Wo%jTr}W3 z$$80zl#(f-Bhe6?5m1y@xK0sVeuFwsY$G9BLNc^T;gZIO2rdvb%$;NIBJ+8~8}-wQ zS2~UJ5{G4o;u%ulP_lcw0Oq!*LldW2q#Lt}Az1<0rUFzHQ*0qBcGZDO4r44Kd1+sY zjNZ$AJ8hycphBdy@=|vSbaNs#GqCR|`i3+}w6m7GIJWi!8;5f~{Da%{&$oQ>AAEsu z=Ky#89;R3F;N~$OzrW3mn~IkY=lObHapm+SRv#bo?stC7F_H62S2?`#5Jis_MkG9T zIKbcUDA$KnqlS>j0s=9TMhf8Y);^b>eToG}Y_W~Tnt@Jm!IU# zZ{6bZZ+w!lz0Ki=3AJLWdVTEbkfamAJLpC3{F}c;|9Hk@UpmXf2UE`9C@7e*$($t$ zM*YOq7teD2l|9z3Hmtge!<*Y&`P$#Xo;eNOE=|%r`T2Dwf3ZgQ;XWIm>~Z|jF~xZe zs-`=L6xO4(MK?97C`gro+LDUMZ0m^aZ{1_<`3?M=0k@u5PeVe{(Y<}d5t@bHZfK70 zGg>kXA4D7-bA&eLGnz1FxkNFt_@jhtJ-P<7RC3@w{ia|ZEytTv5m({U#(-|6Z7n1}OBU=ZN~E|Ef2j!) zot?Z?(s`?~MjSdmN#1#kfX{i4C%`Y)N&D*qU6PotvMeb_75&AZdGRRa*V1!OVFD;i zEERDYNqtS4$qq(*~NDYC3QY84d*$-($I42J0GH1W*LXxPdEyCXijs6fTLRJp|%sMk(|6X zH#~qYs$o7F6QGBp8^J&kB#BN5t^#FP?(KyZH4*%4VGu(fD z6HSi`fA^R8%x`^>{_F@7Bg&0&5ASg86N?i1Ej zMO5XP-5KK_MAn~OVD%Fly#B5CVHil03RvQW|LV*1`-(7$a2T=Z{8>aanpSR9cp?Tv z(HJ6z?%1J2!1Q{|wiNYwiPcKTbXMg-kx0noHrwKecuGn}r)mnLi4KyfD0`rrC_}-l z_tnYB;3;c|lMz;FQifO>lyd}aWv7?ZuT)ey!(5THm84kfi6Qf1HPAV3 zTtjY?Mq+GLklt8fKndjbgv4utrkF_us3rk(O35zIYC*^sk{hQ&!d5UT0w4VNfcwBU znsZB!bG2vLcy5U&udLErT%$j`P4(mzW@i*{{;Pk-AO4S97#_#+9x{uqxyUsh|H@Mw zJ$y)DOv^DXGls0PI$EXdTcU#Qz9Q*@{g00+hlz$GIOo&zk3@; zVnm-w{_ip0PMiqe@I;<{a)nPnHRRqmcKF19@nuF~7gcN2q9G0%R9O;}$LkrJzxOTF zclSAWW`uU0V&>_sH>lX7Y%1KO%jcgt$Nr_unA1JhKD$b<+#)$mQFL^B zn{?M_4Eqstx}ozeix({I{Z=wA7JK*1dSy|9(nc_F7)Uvlz0~jt-_Q6UG&jJeDG)`0}vG)V1<005Ppo2HG^sj zIgrx~rAyi6X-%}kOVKHU6IXf)o)oR@&3z<9g$oJiGZYssQRAH#3y{*33!2fOq}Nwe zgMzY(mAh!ZnRD?oPtvSt#zy3wGIM%1r8pj~N*!vXEgqxvg^C!WJ? z@4#S(YHJg9G{#mHJ|wCPa>a^xI{B1c2ZrbiY;VBYzxQeOHxp_9h)d^ME<9CY${Ct_ z%-=X>a`QGvuixf_@iB80=N3y24?G=YNQ1^w0WBc~JdU{oHS_crDtb!=UFZlipDSZc z#|(*F?l6=HW7>0iVZ{2zklGZaP~!aO2Nk&aGyV^@1TUNeo>^vlbY9 z9xX_#8Tizv&T&>dK7QEo*gw5Q`{7MeRYR{q*L_l<3B{OO|JOI@{>5D`{@g0oR@kz^ zl=6_IkU>By(KI#Yg5gY|IljHmxP!xYr*zAXbC*xC{q94_x2PJ2^&e&HxN)67g-6mCRzp(e@F&p+;a2CoinDnTCQEDA25| zmaLo^V2mTQ4z0k}mZA`pUo_d#K)}VhDLTUVxL3NmUrRrzIdo zyc2|>N`V+8={2Q53<__Rd@rvtrJ=W|=&d9MBZcW}Y*k@xBI%r~kaBLr$&06al=PkC z=z_!>2PI)4>Zl{0Hu$YBw*Zi$JXU2gsMMiiDG@44Osh(1h!$h=8bK@2V{{CHTOUNy zSaf-Qs3h1ViZfWFAaul;W_~yEiGO&J3tRBarB(EiW&56{>nV0_+~L+oN0jfwJZQR| zB?=BXWn)P3Qo*S=zmxnxHnPnm^8jyeysSbIZlm`ilj>HtrIs?A=3zymd?hTec zd!8a45+@Fp7r@k{x`v+Pqks8zcK*eCJa%z~qF-Qb!e~QL7sQ~TGU!6?WV9W1rJ!eM zmizQ=pc^e;C-}l&2qU=SwnWI1kb%8F62SgYjyIKzL z0Lgi(e#OGlkbAfHaYpCkOYX)F$;eYgS{w#NuP7NURp{iz@Y-m~fj9&-Eiq>HkId0! zFqSmN$Pzq6VIQP+BKe9Id{(ra8240$DkrT-S~{{24MFGBEC*UeAz5~YYC*BEYUnK~ z%%Y(zk@i=Kg$^Zy{@|j(#7+f z<_vqghityL&0F8xXPd+Vn)Me}m~)S9jwt9;(*q`Ky>*8Viy!d#Z-0fbKVfpT$Lilb z%lyyoGXaj7kq##qEJs`WJo~v%@nG{~9(?D079L;2REp-(GDi)iYPkBIq&lS!$pR6HuL4lF0~fR4apgC3uLy3gjXjsI(NzIj zhGeKf8d~DvF?yDSWjYXeZE|9rQCdL=1Qm#FN8!aDqcZ$TjT$%{qZVorTJO)$6M^n6 zFG8ngOv*|$mHrr;XOyzR74cPxLM7qQI3H0#gE8nzIG&~wPeFkqWXeiHaZDs(=~J?> zQaqBhX%h9kjC5x_z?L8~X3o(IG!E&-h~w28qIwS+y3CR0o9M?li7 zw4zOk=oBG(Qqm08d#qeg^jAvEAjl zunB3ZGo4wmG7SKR&daGGZE7pPBV|!R+)~<{Z0Qm~pFo0;lg1j@|JVi*A zp=~Pszz_<9=~*UWz^#|Zy!Y}h<8i^(TMEqMeDasR%9USvj?LRUY_Sg{`dAju3>h$F z?aDRQfAuoUSBLEXV28t-yNm`)Og|WNkku;{B{iqm`0^!|S>~{h)IG$ zhkcSkhGmUKk4lQFpiG9MXsEQfO>`5l)OZ#*P7&KVLyHL&F`fj!bcA5h{fbZo(nJxDj!^_mp;0Lk zLx~PkQX5bPl6PWS-fvM|OKK64TUnr$U@X+YlI8}ErBt`3d*eX&^F@hh-oZw z=CWV^1j?7NOPaJFa7a5xaDuZyG2fXI@Mx-hl<7w`qCm6y^nhki3EwjWsyd--gHA0; zDSRL+q#$ZbOe(jFLYfxweh}{{26Q5%fC?JXJsV7vm4L~2F&C9k^`hA3P@07`!|C%S z^`fQffhzKfO@bEkpJm9CqCxA3)|!w~#-p6v@hqfKEvw%!C5<(75!#ca@)L}i0De@{ z5HTe0x|zk2~8YJ2W*UFn$=SvSi0RsdRNY3pTB}``n018 z-FdDJBC*%;#_b>Q?rZnxj#}!nmm`h^ek0mXLuncg+#!W3*t`CaYOuh$e}9p~dmr)c zt8d8vlP~=V!zTCW{$|4Zl`E7>HBUVKJnkScbq~0G{4v|Vvx&LA$FKaypJw*)9rkw) znf>^PLsH%^oh%V_R%(JF@aeCvGkY+n4Grg>JB!kRFkB?|D$FU(pa0i?%B>HNc!3(- zOH|g#FiIr~9C$;l14hXSPiLX8QJsTPg$|a4MU@IOYtc<94^x8BdQ72EWz6?(FN&0L z3r!(bmJ|tPgDNJHs;fa6Lvo%p9*c`aWxrWv30of1%?YJORRww`>nG(D))}HID70YC zE3IKB;37zQEs$~T`$A#qm=jz;%{!Wbrdci7-5w+9Q!zL0>ZGxvL9w)6VXKnlIy8Z* zuQA5qV}S|+x{6+-3Qz20pC;J#+~s*lxN_&NEW&8HY8JshlvwE5)x96k@0Ml2^&fT&Iv=*vP6$+hR@Bb4xVbupvw|{`4q*u z3sjY(=-$Ci470=YgjpoDV?KWPfFHfROH0Z6>RHCy2Sif7z{_A~b^RiTclKzO7pQbY zeR;&%gLV+d_RYDt! zDe~0@z#6pZnB^@qNfM`w=!^nU)GQ|9Llh!eGUE4CqTO^|zV~S(b=C%4mn~^g7^W*5 zP_IB)OWsI|((NT}Kzk8m8z*wdV2H|MbR`ZRYo$`1ym%o&IC7*TPn-%!TOJ`90=Ed+ zFko>cV%q|>7*=&8Xc0H7gzWMP8O5qDTX<0z7jx-kTHnp|8{uDc^iqHW&5w+q3;BGWQp`v5_&u%p(qymEG$mh zJCN!oVssG^kC z&M2u^x}%5|W(L*I_Y&{GNj_jQiev&hl*B@TX@uSH6q-)thfXxGDM}1jZm>uxfQ48n zVrgI|yIE?`#*yZd-js?8R3^xQJd8oK6UkcAAfj9n5cp!j%mUfRwIr6; zz-^NICP&)^s(B#H9Sa*HX0HnzNFcQZ-6Jo8W^u*P9~esO=(;39m^~vA$&P(J+X``pR#ISkbSCaQ7(~MPwc$Vx|Ju&C4}hbP$smkM3WdibS*e1 z2aC1h-bR=>Dav9><(TZGl`vD4B_(L5C&n6`pCECc7g$mbD2W8Ti|C{#9^f)LFeeL2wLZSgPf3s z106+qC04v3pRM=MIY!Hx!5Jur5<{(RKt(M=gNSq*$kf!J(aK78k zeSwKO;3t3eDuGDHjGOPiiRz6o+A`W0aq#|T){z)A64&cknkeHPiLrF+m) zU|0bbb>i?yv-!>z>&u?c{RdBFzuC!ep>TGUp9?J{5Gsu|rK~FbnecGI!{C zi#B=UoJG$#Cl8~KsOg+EcZ8WIIk^%f=WsqpKKei?Ey*X?ok7=1uu0L#q^|Nr-w~6n zkwRhdWmY%^X^}(HOoF^#ll;_($RK3SiRgRh1iI)jD-EfG!D63^zWjRv^rb#WEDMyZ ztPNxj=@Ut5inV3T@}l76lWYo2DZ~S%g1m_2ErU_G2n2-=a!`bzNj}l}fR7QcGqFB7 zlnQt+M)2gI85S&_Dd>+R;@gm&t~!El<#&o2m1Oabwxqfy_9`eFiB&U6;_cMWtP@Ur zPJxmjc0}T!A>}`J6gfCTk?D9%BM22;46K z@xaimuG4H>Asx>ND$u!z+b!wTlgwZGGME49XYr>V@ZsNnhX>!d!KIh3(Nzt%J~-z5 zZ$8U|&5wEid+)N$I%}Lpq1gM;F3Bd!LCxajmE5o-h74#Zv3dRNkf=lQf>r~kKEKGE zzz!`V6fJ>SYe`Fe{Otqo|IH1qK40+ne(ObslzBuW-s;Dw*f>>k{LU_;^CNmsTtKUu zYGZ}XyZ89||L}bjP!VVl3YkZVH*JyxxzWggL%UAyLs2sSR8gUmmh6gXh)LtE5qH0r zDyF(5?WGHtxg*CC%JkVgl2t?>2yI84i#Ia0(vqn*f=U?YVd_W+bC^4+YNZj)?pO|9 zTtEf+y-A8x7<>g$Cpw>)?+0cC#;9E7L^jQkEHH?)c&5j5;hMCH(rC_%hG+@`ia0q* zI8Q86FUg1cW_(=@9VTW9cA3er`ifc7%AQAq@DN%u%)Bdxz3kW49kVoVaQ8vRdSJiTgi zk1AFUkH(E-u6k11PyXyEV5tCF;m0d!ITaE+8*@~1(gnsujE^WMEnD*DQ9inSO;540 z2n$2nj}_@oA3OLY=GT6m@C(l{e75Dr*Z+ub|L=dsows(l`uV4L;&YeTyS~fHuRhM! z)=l1h<2@1$YoEJ>>QyK#=f3cB3>Frtw57M!u*@=3rbw4BwT9dv`bTvfEG_nfyF5jY zMf#K&o?(Gvw8rVj`#k>TWnTHyecu1$8@%}ClIJdt2-(8Y5_s%a*3c8fJXG|byGpa# zK))nZ9e@45{3Y9TRA>eS8YFeMz!RpDJMZQQx!6X6wWPV1wl77LpUb4tSW;dy=;IdE zIpLdj5oS)D)ke&lCmjEjE4VpU%Z-YlJGWMZh!)wmcSfG55-gG z8=iS`ne*op0nZT2%EkuEkDcS{`5vb~dx=1w?|x>lxaWYnC9Yeiv{qOc;p3>#u6B)ODBO(bW*%Ty+`q{*1%B6?J# z`X$M?kOC zarsb;cv^ZWPOUW*rC{TeG1wyCt5THeloEJZ9oQ4fo%ZrL+I$DqLRE;yqHWe->ilwg zNoWWm2`eRex(E%1l~qf#T%aqN-s>p1Kruc@wnNZ06n#|LLzNb7OO&=!g~{(lmWpL& zQhxDbM2{4yiuk!F9z^2wgz+SG4ip_q9@QWpo>l>^bbbg#eQlJmHC2$MCPrYX3MD^? zarvtW(q{i#4_UMiSpUaQ5DU+PZ@$6a8+#OU4_#u3MJ_Pl>Zh0a_}!blcW1)U?g5kq zz0m?AhMc~Wccim<^A_@Y0To)71m$qahGF$^urzAzqOA>1D;QOahdvfpST|wUcN}RzDhCb z^TF%a`NMzyLkzt~+pI!snp_D2isUlTUMJ!G&$H^mXi}kwb9s1F8%SMCY{mP9aw29p zp22)djDgfSqLUahawSheqh>Cz`jx2oqp<&(2fUV4gcL*WU>s>YhQqmx?JJ8OG=y2g zM@>|UpmX*`9>2#Bao%x+VjsnnM2SSZNM%pBBsc0rOQ2(ZFh_@uy0$14DQc6~DVixV z%vqphv|Nc5tp#fog%wf#qfq9MU^bJm8zm_}=|omW5T9pu8z`0XYC&=vwNe?eZX`{K zNDM$yG($`8w56yul{V-kP6R~~TTv=WssdA^$_lEAq^+2Wk-?+NpSdzJ+0^D|@P5Ui zC9EaNO&NN~AR;0PJ5Pt_r(u#FMMKK>3X&!yjZu*b z>90M`^u34Zvo*)JH?ciW@7#d#@9Zd7VEe)B%%zUI=C zXL#}#76>=4bN!pgyt#Fs3!mL!>%o{gk+*+z$QVz7VwIXFt~Iz#M^)7xSO@mB?@CP3pH$uc`3$7N>+v>E|S^=zasLuciyl9n4R90b^)T64TAGMo#2G|9l%Pn$}@}4qFDoRO38MM)8RY-_p zN&=Co1*hinSGE%kZjDfFP}fuJ(H%zJLv%dg<{ep*uU%N-!Qb4&-RW4pdX~8xOCDO1&pDH&rj>rM-V8X%8 zh-b(%pRGBkw;5koj2U81UEuYF65h$-Q8}4l2ln#q4UG)&{1+KwDWRO z*ClDzp$?DbP)?Gw5mig_o-R1%+OT&gvXk3Oh1jDMo^rwBlUz@1e((lM(9T z(@R#Nt+auvjo2u=<`AUfH3LoWl%?ofY$0T6m5sF+i3!6Nn987vM%FAT=4+NGhD_Sb zvYDimq!j<`9?uLTW?7;X)gVGYqW3+94vWVU(2rIMxpm2b7D^>BA^VncSyd8LB7X*x zBf3N^t@8fM&@kfEXFtWcm!6?1$GDwa6mCx1IfmQYOm0l*QHW9l%kZVM#3JB6KA?B5 z$I(Xz?6b?_iyKUCZE?hm-kA}-wTAZYj7}v6=Z74>w#Cx56)G$R4Xd2aOWhd}ha)h= zPz3nWfA%;VU$(sSN4K~&ag2U(9equ6>)nsJe|rl@pun>ZDB>1=#Bf3lIDnTtf zyVN;i64JMd31y=Q7J?_HR)ZYCe#htWXhREzyw zmF7g(N@r6WR69m7%lkfQ;gSoai6?r{vj`#LlwvXoe1sTa^K258yPMF0E_6O>q($6k z&a9hbhZYkfWuq8TW~B*~6fCa|sBFUMfKmxt10mw04D(cm6h)s`R3Q;cx%#A(q$Q2n zQmZt?Jh2Gibs>QXCgBv~oNMM#OqLdRGdl1j13Q+_KwglY(hLoJp%R-bP zW41lWKP)IwZzWkaW+QChV!BAElI+`d1EENd;+Z9}OvWrF6>6pAL~t#!TSe}b6Tw7u zFr*?t-djXvi4>$XfoQ2&VC~{6E0@>k4d)zw@GA4YIlWS2mny2JV!R{5>;uM_2Z>Xc zPhn3Dncm){pk(*%4gnalO3{>Ty|zh0GdbR2w0MQt=04r*kp6{JjNcs7TwG=8Z`V+C zc*bnA!+Az5Q1KDRY|>Iy6Mp>thiv_5%pEL0`Im{8eq$Z)H6LxBcp5~FZ(#F^Cue_1dlQ`Br7p#+M=RC zPZczfJUKTa_ga&P>Sx%i*Rtp>A$f_GLRZA(CAUx`92ITk4sJD8TWR}oXyx#x!8V%N zz9nu>P?aLK$0Yy%Q}rgXmS^{U-{%bf;f`;tv8%efdTz4Wq*@eP)HyTj&X+_-Rv}f(H%)dJJOAcA3|tICh*|XC67?_AcutD zGYcFV!8OX67HF{T3|Jnoxbn1RC7uvkhR>9QJ35=x2&2s!SM<;e$qli!CUd6T_Jj0b zv^0m5Ay@HW4Z-C+I01r=f6i%!K(YxFI*5jpJSIh=XgNzY@zlGeR>WDOyRd+<31Xr7 zDrKoJpVdiFqKeOjTpGGAT`(SuMD%KIPwoGBwNvBO|H(jEmO!V-9NzoEE4;e?8d7~c5%zs~(%e8{J_?^B>w zmx9OwOHIW~Z(c)63zs(WvA~s)qK@2s`&0haKl~ZD@@T08(Ao;B#A}y{{0TZLO6v3H z7oc}g<-cGmtw9S3=M6}}477E|8lCJV225vFe~8P>D_@os=KeMV(Zb1y4Yj-x<` zHs6dfOmK`wHLfbLRfUO#Ld@$PXs34fWOMqGBvN5>hqjhOw5JE09z3BrS?WtU0%uxW z9kFT7*$EtfcEX6nWroN`qE8LiHo>lzG(=7~Vw0z-wuF0s@eXct%mpse)6(@V^;Si{ z*Woq{+w5?1|1pCL8wAzYaN${p96^^4cgKo-&R8+y8Lo5V`Dggb*Cs6AJLDjDzz#B6 zcShvK_##hjc}%;c+I09WhrP1H(SGEg{lo8ZlO@_Iqs`qOm*u>Ite~3K6c~mW?3Ty2 z0ow#phZ5ohrFY1(rKBC&sj%2aZ+5XdN*T#MFZHgfctKR6X9S!TY+X=q6soIiJKCk= z_|}jWQ&tSwduaIVCvzS>Iirm$`lAK?y?w%2PrG-5?+v~#)nO7K^`ht@24@X-KUuMd zrO=q-JZAP7)W?|+WTMxP0ftywBJ(Gw7~2t=h){^CFR4sV|_bu&&VPcJoE_RI98%fAK0EDNWnwrC32=li~Ifht}v8 zj47zg5*gN*!efj4qyi>4W8yVKQBQq=jUgwAHMo9>JzQmXvd0X;6{;pjJh&-Ec^-LlD$fA_z5i4VSWhaY{mBH%crBXWo5{?@<8zxrQ(%qJXj zfhi*lJrzR|FHrF1uW!+Rv`@F~k;7w(olO?ujDP!2zt1CtF%>S8_3HiWQI+U`qBN9+ zrNPjbuw#U(EHOQ}y3pvFUNB__s*?I1k%SXRZL}E;m}K>}G)4(DH0SSnn^8=U#bI$Hhh30yaTRKm8B{vlTabFNwIfB#XtTypPy$a~sqr>j zxNHf&(85$5)AYqpns!hmp*M+WJi!CT;-uG5Td#bx4T5+>jE2H!7N*6j%rOh8eGw@( zOMIEY>mErS5sk@*swgm~)N$Ib`8;%u$i50O;3ScVIMLRtlw5W`tPfrr374UKEUcAv z>+0M@OTti5;Bbt0tTysk)%D|ChIXTtHW-7Jw0fv5*0f5zCn46l`$_Fcjn4ksi=K#W zfz*z2yT-SB$jI{Hr+c&r&&11^v0?xI8He))r!4r*-~L@Ve84Av{vMl8J%xOBh5!Rb zgs>od(i6T~Gymj(?bk08-tQO;M{Ke|!xE2%?tJyelq-{Gc=(S#;cb=_cy?ZThSj}W z9KP2u!}HwrG1s?7Or|yUbinw<9okzTa&q$yEgtv64X*$8SNO|6_^15UcRppv2#YX$ zY6Cki=s$YInsovXWkKN`cC&_)72bP|Q1l)ol6--;9mytKzZU!osnM~Fgn}kwu}&>r zRy01}M(u?&E`n7U-uRL}MyL~ms}s^{gq+TyTT#*x%Y+ODOnuAv^{d#|Ucf$o8NVHo zZms~zN?!>vGw8T#001BWNkl^fI%~cV zeWVpDi(3tSjCc!n(J`=w5e0VQnC{jJ)OG4Y@Po|H8No&+;cbFw6TQ`lc9VtQK~!|@ zEl5hllxyd7o>zmbSTZ|9iV;arRt`V1m{JAj0+|+56SFCls}pN5L6E4nob^5}HnDCf z7L##~pjumH;ET^k&4fXsp~tFE4ub%FK!U#?;*IAQ+RCK8|S7;HM&UQ1lv8 z(`!^viYikwlAsManIWwcIWWDBoYpIUCAl=lh#HT@dF-%;qQDOe$_+=cy9v`B`so(z zZeiYh9`_qBGQ2Tmzvf`v zDH&rmi9AK!r-Rj3(I%llC2$6Vu`Y+zCSugj87Gt__}Ws~Y{5)xi#LD6V< zAxRINFY@-u-v0GvLM1Q(wVb<=c#BgdUDxY@>gSA;O znpFYftR6D!wMN=jiX-PAH2IQL*Q8QgUyO5<1AV5YaCFu&k_j6x-k^DM%9N4jqqstA zrI_-iufELASGM`!kH5zp^^>no7Jz4Y?}*{k17g!sY&o2FEFMJ`w3HzbddG9$c!l|& zpHk6LisSbKXHPsYu}it@`0(vp)C~CL*DiAH@;0eAY+Rc%eR+Zu3vT_{2e7Q! zeQJ{{f9DP2PR}3xSKpyyz?cdx=xA7{{yRK@fK$T={mKyggx?)tL!>tzF{PGorh?>x zDmAQNjm4Iwj-4j&bzKKuZ}b$v4!!Om3B-7nZyB$?JF%pcNL`PyPRVZTFeYJ(gsm%z z%iE-{T!Y6g?)D=jc1SN;QtG{$q79;;tmExJV1VwZrGv1D zl(i0^E{~v=$c(_*amU4{w1qYXVVj!EPY+ZaAo^WVn`e$-_o}5tAOD=U;&AkI0^Yi8 zB(}shkL0L>z&fMTSJb8=P4%-#jQFJedd?<2CyjjS12m{5!t0o+ zC#pxvBFm2wQH6C11Baj=C<%#%Gz++~gGTVCWcOE|=V-p<&PQ_!JQFPOPK#l{bHDd8 zOcvby^MAwf@mU6?13gPT10p@kJ13<3J%caRj5lk>&unmX^A20X3-}YuA9L&7Vgok!b=)-~Bqz8*0mBlxIKppikirUc zdI}jtFjdf&-d;74imZa^3{qJ_*YNgRCv*q}DGLy?37#XWZkM0fygT zm#= zfs&p;i{kGM@wlaL8q&ZKf@rdrBvRL6`d%~s5rvk!fHMI?)S#ZAA~!2Wo0(E1c0H+S zk-mez)A;c=Ax)RjO-1@x1!851zJ$7j(GWMNHM(z5V@3mHSn7*aIW^a|o$4E-8cAbJ z>gjNnPw%a`OP`e}i2}(mgO-j)A{AgdeG5&}c2`(u-e}3^d=^Q4N5AT^Au=9&Mx%nF zZ!sp}Ou+hV6b>5wkVK8d>uJl7h|wvyWFUD1#v&X+&= z>8r{#OIoT;zYU2_L}gA0hZ*QL?X+ZCs+wI zbTp@Pd@0yv;P~MoJ1<@1mEXII zOTcJg zp+Ie?j<>$)S)$23mI{}#?LG=FXH{A;Oh%T;&=C8m#;I~lvIQ|3eT_v$(#9oR5zp(B zy|Y@Ig~R0E%Q&Y*yEP=MqpC{@CjpxheFMwJ6H`Q-#g$2!8T+{y+IS`8jfofuI>KWz zL0)LYgXrN-rqHMds}rHivk#&j>}&Wb8)3Dow?F^*w0baQBVu0Bi2_}4>fX(xrVXBC zEhMXdxu(Rppn_gkt93*R@$?H*I{Jy?MFvak43l5F#^~vb?0@(X!)^{m#o{P3U`$QP z$>M;MlT(gA*k^+F)tOsD$BK$g1fi;@U=r0<&73nD;NX4pmJ=5`N&AWCC5koI$~gt|K^4duu`Jlg2;f z@=ghQQ=435XdFoCa)eFNpq)0y8uZ#G@tAoS``rxB!ym<*#+R+!o$ zvV`^&$`X6yMYy^P?F_qGVaf_g9#%cf67-S6Cmuas@(GK)kR&y_Qla8LZDg+yY$>$e zTBWayaB=?0=w~sXDF`>HExxQUHesFSQwHYYV-(=OV6HUyp#Tk#c}>CDv7F?}5uM^Q0Ho+VGv_l-L5} z6v5Q-(;`+cQhn^cu;WDxtE|WLkQE2!{H4; zk|mj3GARk$fuDf}zj~_ike#nS$KHD%A$Rui7b@D;5L$I)z0apyuU}z16*Q_8rl2GZ z5{p&CXgVRCX`_!j4U`)d9QVjYSpH(k#J|KNx0fBREP#*{mTr~lqB^X-5BBkn(d zno-Wy&P$my@nOlqC?jzQdgR8WrB`8u@oe=(0f(L z&?2G0c&p=`D!Q{XX8R4raDdy=JkPh@Ii^7qwDp?;LdfNviM1;~G?seT((Vg` zr%KENMf^%~fG!26haJYK|FbFs;@*rZV#lJ`7Gij60$U3bO+15uEv zHKa<70x4((9LeToDqnoEMj``!1Zy>>UDqX`RM0BgS{srjUxq2ET+FNoMz1`fQ3Zn$ zm70OgV`jty^W11g7U~sV@jkl5Z+{AVV|HFGS(X*A|Lw11 z|8$Gr_#I(5obt}SimxGDxl!Vt-z8Q{9{lts_y5VysD~4p+bvK1hrhzT!$iH_M+6~)A{7K5_W~Nfgf_B+ryQtH|tS63zXbrx!NTK7DbO9*@ z(?pUh^&K@ermS)0QaRJ1A%&LN?E{)wV7OgUj7y9kV5DuvM}A%<|~=8Gbn6;-wm27u>#c#?6z(xe`YkF*;mcSuBYP z&FX1S0>e?nU$VGlSfMDl&+noK+Q%KSjkGP4z;saP$VUm$Ax0IlNsPM1Tcr=8KoZTg zv`*-w0#YQ8aXO_1v0yFH=&yI8624>$3>t+IqS6Y+7I>Sm&Z~CT4-i)=&?KVn1~di0 zqK4wN+0PiKXtA}qA6@cwgywsa(`MWk4&E{=$qU?hI#iM8b;)>~#bCxIrdHV4IH%EO zDPTrM;|44mwqv}?mJ%3Z7L7W+K^>|gq~qyteU0J9l-qytGYW+2;x-q4=|xr{(jP}G zo@?$hC+|My{<|Nu$p&TK=>{7k`qMz0DgJUiX7v0n%MVw?7}&VDg-bK~JMh_G-r~hy zdx_Vd{#!H_9=!7|TmD%V-+ss&zqQ2+Z#>W8!vii|7pk2R-2&hky9jOhywH zj}2Sjyg~h|&+_g6@_)mz$s}`;3jz-wbqr9;hr`fikXarn^^kd1gtb#sxw{=lcNiI6@T~S*+^$1>q(O^F#v3Eb(?Aa_=PiqQpsY&# z_K3Qg>j9ReM7C3;lFCD?=>>SFQ4ld(sw5YDCrilM%Cb|SS0oaW>P4}fKPo-yIPa6e zx=2+f7-WRl>vtSK$orYT^lJyXB!hgR4M=Rp5|cegL-C@1#$*)ZAgKW0^HDP|l8_IX zK8iWLLjRvOD(uF9LC#W17M%3CR3pc<+x%}Qy~U+8NVJ;E5j9Ptmk~n4Q!jmqi(k6T zop1jTIhbP^vHij`c<(rVe8!TNF(cAu!|HIxoFxSX!%G{q%Rqms`uB@m;*cXSmU2?D z8kKYpBjvy|-PvHgyT$R(jyZnkfEWLhS6S_?xN|t8`SvYZmOOLjX&$}Jm6HQ5CP&)& z3hv59LU_WHAAN{CSh19n@zpJE{HJg5mw)tE+}oS8lUq-7uPG}c!!l8Ij({-8_gzBk zi2GV7C~*W5&~=HJBEdNlmS!GlXO8-!Vt#$o=oc#~B57QWOFRQ1|z5J;xLcsir}|Gkf>CL^kPz$^dY4L-Ylm+$_sw;3^} z%wkua`ZcYy?Uc`20-lm}SZ)BC6Rq;ntI5+DOPD2WEx55~H5WPyp^ungvEEYlQTyDi zZvQs+q|Ra2HW-&7?cgY;Q+A3Lj%G|QTHMA6zt}|P2{&6|H)`14Kukg5YPfcpFsw0y zS`okt8?ZBkB4BPlr2Ww?mXn_4L>Sd0q6C(U1wZ)Ld(43MFBZ1g4j2oQWF2kTj(`IUQt!vD%*)P++g{*cgdczwX`$ zG5^=ZfJ*`{sf^5^V3%_$1aP_s8c7NuN}z}d=RCG>7+;af0$iyFDANZC-Q$vV*c38$ zp(QQiv?EV<{D#MBQEQ%AET43{__}dG)U@5eK`O3V+feu zD(B-9;xhSev?V1;r~3q#Ssm?AJoO?M-+Y!^-~SP}-+Dkr0TfJLxWd_D$>RPa%px+_ zs0c)+uUz5EtIs0z%xUOIcm|BFjDQv<;Hh9@DMqmB8Xg_qV>z4SCMAAzht)x#Z(9y; z&UoQXXz#@{`?Pq zgkwyFC+63TJX)>LDzhqosH>bVB6+mpK)<9m6U|{ZBb`RX35$8;h{!S|Rw)r$A;!aIEOW6H6?kr+qqq@9)&z659JtmW;SM|?=1oBz~ZsEOkpi4~THia<}t z8G(vKIjnGtNbR9J)_=DGObk@y@eof;f*a|Vo+2VSAlKML@Y*?GjYUdBD%I{|h?FL2 z3o!v(pe}VU*fOKR0wl#SycOm3#1O?2olzNF%66hc3oLDAv4y^Ny4$53#+;3}A_z5@ zLSr$|t~@JimxN$UkD*0aVWoxCVdD~{{rtt#jV@#mWleBOhI*<+S>j|j&- z$5-L$H(z1?@je%xcP#f?PJgmw^v#~>g$ezlWo|Da_Z}gyUSjwkyvav@{B7np8(#j# zC9ePKHZz;}=l}h8d3ZlEL}lcl1ysfPpq*&&xv0y~Woo8C;}Qd4y`>1+Mv-P(K1C23 zl4h5-maf%3ZeT1S=r-)Sh%pv#I@+qjtrCWYw)E7|L#a5T7>(8tYIhv^&rU)elx zF0pvraLAG|p6R6x?*5Z|BpekL0bzV$hm)V(r(%S^H$t`&J6A4o{MH@Zg_`HT^ktsB ze~XQmFL38aA3*sYH(q*;-GiEgYp`*7m$OgqF)mxK>`ZvFpBNmLl)q9U%^BT0d%XI_ zMV|eY5$5?#zVko6%ey~^F+&n9CPU>W|EbPvhH#K>2WnU>`slb zE4m!wvmkP|7a4Ap`rT=IN-ru^iVia}^axgjG%7XCt<$7$69pF{-dLg+Fp;7x5FZGu zf+kveTH+w$tfxFV#@k3wh4058f!KG1#hi98&|IC6t~$!t(M3bkw|w%+0gu;fN1l>2 z3M=N&b#ghUUPBIzUhl%^njKq0g=a~Fw_{8mHWQ-N(KbS*mo_#KeL)zYVL@ii&p`?i zgd| z#G)<*TVRcj`QkHjiFz(<>QptAu?|UDiitWF^eSD~bSbEtgIy(ut!gixe#nt}Y>_q) zdoW$VgpSk|q~7C7Fg~d=K03|VM5~s>G#DR|qZRSdJ}l;WRPn5EJp0Y75F&ejbD!ZQ zO(Z_LJwq^zpBqz73eH$!GeTG~rrfa1m~%+Wb8KOEONJLK=HH9l`S?>_{CB>NEn)QZ zgx$N_Jo?20VjFqxtG~o>SYwYrPJCKJSt1*NF8t8wSet}H9vdgfRVS)TQ{&N3{O z*K07$3CtdLY+fzsqa(SV!dQG|aUGawC?>kJ=WxPdVhmi_bM_kf_ zx0)Mz(^Im-&F0`7t{W0pjjB`p2>bF5aWLVFyHSzxcuw08b!G>3nrac zb0I?EEKw36YCHudk-W>ZdQt^YN_0{}?1_>{K?pGtVM4GkMMDUwo0j6q{DFz1zBVjS37Cqxx@u2Idvy17#wcv_aMJiWtH;fE!$jhLkR zKnao9m)Jgk)Nzfc1{F=0x=dGtb{G=wod7LM0=K!#8!vtnKPVVnpV0ij3(ndZTQ6LpH4W9qfX#=O z>EHLXUx!JZXpaj@_BeYSdGCXU;_QU$B5dB+q@0~l_h;0vJkNVS{eVCDpYGE$pvc+A zWKhA-Wx5~{&xz4Y(ooP78RQqC&!6jR*5r%K(C_Q-l^VqYS7^LkGw+$tU^-S?OAH-F z(=!;=BqvCx-~!eXdQ>f+M1yqj7zsq9axh~e5;}}CxKNU&7Viz+D$y?k*esRUoKlQy z{Dm>aR!LeyIuK-2I67_k#ZOMM^jo=F#S`^EN;Fx96PV3(Mym4A=}J#kmaH(i%3{X_ zVXwzi61$Xb!HyNs2aBmooKxx}uASr#OmLXO5R=7tgX{G0#R%RSoQ;}ub zYjmV07xfrX%FU!N&F3Us5_RaW@8% ziMY-~p-;H+S}SE8c)O+_1WzJ$kXpeW3J3dev-j@aX5aP))t3rK5PdU^Sm( zu}qn8%!1;^gs|5VYvF}&zQ&`E@3Z@@H<3sC42Ba1zjJ|V=z09(4+t+_=i0NI-2H!U zalA5I|HcN3d0;PAY{dds)=Yop8jG~#fB$c8GGo9X4=cHrBM&awTZd;&k7{tCO6-;y zm@4u=F?lpCGv~F^K3wc+37eMHiLlDQj#h|GWW4J!!H}F)@S*e=Q)%o02Iot4apINC z6*InxJM(D1V z=&=;6GfOnBAkob%+9(x?`QXVc;kL>9T7u;ow$rdAS9s_b2+)QGjLNpe3878ILcg8H zX!Vsb+Cm(Ry1R`}8dM|}+e2>*!6>*#Hnx(q+Z@rPXsyo@l2~m%4j|6vYA-z;DzH}2 z28`afSd3HpMk~M|#Go&0R2U5koEzk;DS-i-G-1rRm=E0-BxAbeIc(O?*BatQ$J4sYo$(Tr-J~&~zeF69K4hv_f zEz}q;?d-5Ro^kT0f1x>?ls~^UJ=*{+D!0=k7xS-Cqi9Q@#0h8Iyxa_bl!cZG)`?Mta5yq+E)QD&lUx3&<6+I`gDJWDgqOXfH1ksnz zNg}%SA+(yY643*gtwUY(gcuPVsq|WNEjG)+)LVxnY|?Ajq(EFt$HXhYXAKq=lqc&k z5^-yXiD)~A>s3T;@@!;v)YNT6Ndj$xO;kWdjlOUxCM0CBsk6A$YihJJV1q`Vi9OHg zH{@){97tpPh=~!220L1FK5)9f&tf^pY60Y~KYojovqS#zKYEYv{?Pk;&RimX38(?DI(dke+s_NObTS+u)_jIL&TM&x*!#RI7}&|k>#WJ7d)cJW6u3^Iy5T> zH=v*Zs(fXa2p$D9Dulv&Y}8NCmjy{`daN3~k_rdL`531hgO`#;jK)|*>ou##c@>WL zRxbxn_An;hY4M0r`&mFE*{uY9Rz!%&(TmL}DTFLy7Ee~0C^TXRwN`3buixA3ozo<- z9zv(%XG*yNSw$n(YB`BDqFi>8+|m>@eL4kw6=TBm?dJz?&B;mLS5k%%BIsA%S=&t?dTy&r$f{{DSjIiTHJQEcrn+`7Q_%a@qk z*dgpCOes8??&3|)<(-Pd4^KIAk+YfS;l04m|FmUySm#eey@PRW=g+f2d3A)AP6b7? z^2^piM*7qSy1q0F>qhva!U{(fc<63?Xeuy3Ud2t!I5It>;| z1{+cDpK&Sx&#?_A54x#Onz7l7?o^_x8Aa(;WMGV5JRx6@h>#?zv%^MhSc)o=##^Eo zT;-`IgPfPC5Gwhek< zOe|EBxKSXXL!R_X*jJXL4^DZ+f|`=PkF0Q%`Q2Y%(>;mN#L&%DIM)(TawOYft-j0# zODqav*H8@&cDJCP2Mh@}7Tny?&wE_u!8%QT_S!gwOT?s}hv*Zml-m<5NI`Jwu5s29 zL(|&g1z`0WB{Y!M)S1RN7-QD*Op@g9 zLkgIrhnb*G1l#KfY}b;?ppJNx%VaW-xBeQtb>}N&Ro#Nf*+RoTiwa8b@P1vYvCgB2 zBfD?MI>~2sK7~$y&j2LL) z@uN07CX{1g&MuDlsq_aB_KUTq{_Lyz#9!9`e^OWxTjWcT~NG z)ZP*hYSz(khKOOcFO0DasW>L&UY$fZg>4GtFj5UW%*bOST6hIui+C4BgI3w7U-TPj{VxtjED{4TsRwD(CAx6PE zM&q}}(gK$RV}v$YQcR@KVUwX6Tl`QIjPy?HoD-O&O}56G ztYC>avDqM*R3DlGCI(Dczq&$90f~KfOLUmCM7w{=$)`^~KX@*WmR(le>E5TOd5*Ar zC~Qt0&Q-WcseD~0n5n}iRX&g$Cgere36>HYHLEZ>hgL6JB90cr63ddnzztY3;O@z_TQYKLNFZ~m-#5I;d3&- zSrxfK_52gl!W>}#9%>H?o%RIMI%+mWp!Plp1NQ zdgc@xJw7<57YoYK2v=5!OAH!A8CF_b91T(w*e;Rw8|-wb3j2WaWL-zH9dV@vD5+0` z1l_75b^4PCj)wXi6wt{ip2K6VQUcsl<~@Av-BiiGVBo2O5EFjKAmZ_(5_3Tai-a9o zI5e1n*G$$n5?mt2KywxerDsrNU9jXX4qp-zG|6I(Rt+R0Nc312aLE#qXl70RlgFqp zoys3YWt%l10luCMUxHQ28{(wxoK8+NS}H|YlA_O{w-U{@rtoWW)1z` zJ|~|ZaQFQ)KKi)f&Iirs2d~w~I^X8xtp>o-qcC^xl?Yy(tk|dw)nG)%k*Q%O-2IH?itBO=3#mT+uX zRDiW8l%&_!$B9SwC7WC{L z3hpp4#50+BM$;BI9x~pZvau3|g)kTnaNZ(AhbcN_W=J7nHbz*mk`2aHsB50rr+6*ZDWjx&#^P`Jxuo#Zb=uQl)_EM1#$g&=2v?Qz3o0;Vr9 zrYBl;Heekh4WLSL=T%7|y(NgD53p(?3ldLnKhN*}!SA!&`;hrxAMo;j{S_YE)8N+= zW^8stdJKUj6$4iE*sA8FJw@`)q}!8abv&bQT6|S-{nuW{*$+uYAQCxz_m~Ucc!rJ5 z3*7vlZ^HN5IA}Nk%BG0tvy}$2U!#nlj z|L#NGoDG6Jn|oOAdjG@o{2s-@D3ds*FHeV^3B_3-OL;0^zl{1dmV!Vcp=gTTcSum1 z5_>b!be$y)k)v8_$Lo}^}8p$@p{iAG94BROo&fr;ub{IYn~`I4PEK+ zWTsgNPD96Vm||A;wKZ(K9B~*a(~2A&)wwH|L8Z_ z{qVbd?Z5pVk%r6F!0GWoO~ZnLWDMiYhSLL4cr?@ueP0IIjKO(1T&vMLWU*93zOrj)?)K<3g{$h19BH08(BnL$v0yqOxBWipFlk;=N<2h<#=_d7h6o_gZZDR%4# z%SecsIGp0@3a^9_8j})S`(QCD3ok|`M#+(_#wwAA#UgH2QMAKKX>#97;0Z!FAI~k5 zjY?|)q7mb0R-Va5#p8<~-+7vQe?H*{|JygYa%IX3zxo_*?f3cWKm1encwF9Do*In@Y^{hV zzRdbElbepiw}(=oyC;Xx0cY@xGjE>gJ7geJ$$Sh);_tXRV3&Jvd5Sjoj@5+Zh;|_nhMoNVVw3#NLfacl_Sq9tP|S|%^K?y z&Gx6(c;T~K?4P{AyKkNHy?^sI?|=6;%iR?YO;swRp)6WLIf@!XBvVt%$UYe2VDMc+ zHG|345K1PKu%XCUPnj`3F7)>;FQ3f4;WLEo;N4Jl7^Ys;Xi-1BA8DW@XIEP|-xgsnS9LxIXAN(pev0~pVM=+O~UQXu- zMS~$NGb&`(whilzrE;38t}wMGR|b=mj98;Cc=IcN%2)oI z*O{$d;`YN`ZvN6u(jxJbyY~?YcH&$;WmY>*_fI9Yyp@|mqqz9O4*A2tfR~Z{NrYKu zm@F{8O*TxWSzcA!EcI7c+456!YfcFJOWNvP4L zSZPGyp8JSTsUYRV#jPugnbqitAvQ*=LDrFy45Vfg#Zynsc>W95x&HDE+`Q(bU9mir zObktf!b+-b*;`f^*00t~H!94yV)?Lx3B;rcZJ-*1&4zYA!__(6F+B5&7dbzN_Grn; zBBPzdG$X3Hlz&=VP#LWjg zf%iGX0NXo`o##gA#>)O}XeC!Y=dzf$Pvl-&%L^d(E%77}7m0M-vw!c1AAkKmKmF-~ zWvL=(I5tt7!?1O^0b}qAzPfx@4&EPr;TNeUV64Y16K84X3QdhD?S(Be5D`wt<{0XU z!AwTjkwuL%DJM)&l7F7Fd<>T0H^|%PXg)vZ_E)~axBu}SB5UMTMN`lD(trFEKlrmZ zd9(<{-5B}mk;(FxV zi_dW5*%#S<<_gWVIrYsc@BZ^|FuV@BRcwW`ux)Mzvyp5jmDk4j0Zl`oqAg3|0~z(Wc8rwC60yBXK4i z6ZMOfYPJ;jGRE=LWSX^x^(M16by%xW+LMFAnnV@2agXq zSR5d_-pEk?Y{*P2gLRpzv8?u57+KOPkdG2(0xo41hXZkD=}$U7{>zt{Hv|3Qijx-X z)Xnj7kw*!42iA!-Cr0DS}Gpt&C*Ax0d#2cL_4w2Y( zq&9NyV#Cf;BTQAW?foErI!a!GLL4DVCfg}#!ZHw+J^jN|?tSMyzW=ok`0-B{oZuM) zb1YLd>uBazEUwZJq1rV3Kf7x%iH|Lb@f|LI@dEiF?C;%Wj>8g}tvmKlBFi$Nyt<<~+4HnzNOH#Ew#4Ge zJ6n~Xt!jiYS)q#DO8O#ADlU5%uR9v0Sf3coxF&ij2elF~l1&<7LHE^$R3-Ef&`C_C z3X#wf$mgnYHlJe zN;WX6MPR6vMp=Wh4poc7L|cI*$0A7-aZzGedFTd0h_sz&Xd|(W=wU$VNWbb??e`1^ z9p^7poV!tBCQ_mkdsGrPe5T<3lz^Q~OvIE3r;&DV!L4uK;a~mJ2fTS870o)9O&m3f z2E}AuQ;i^>WN4sD@GlPEky=uZE8OOs*;AKTfBqsH7uVQ)cEmarGc1m(w9=YT_Hcub zQeGhTBiE!GK zhx8VEu&KHB+2>d>l)YD^J?Uw7ws08cH#eD`-$dbAu;hpT`!|V|;@Mw+g%^JH=h3@0 z$FChT9Cz&g`CYhXSi5l%8pCXRjnfbAGP=5rwNu=d#ipA5H{YT)n_wW_^W6Hs-sIWe z{1_M6p%XPAp%;Y@rJIYxnZR5&p=TPGfUMO;LT1Z%r=K{sJ2DQ#Xj_o5s#F>+is3k* zCx(9T3~h@}o}4p7&SmyxFe6z*bRj|vxLB+#S;8xoPh?vL394uujYZWCTRT)GyTe>( zl8K;$q&)e7)UAY9nS#*dDw$e#%Rtq4eCCBQf9H?B#P9#Zf1k@Q-lRve?FFD$>|;8R ztiiXQu1|DFiTE%Qjxu^$mxYkQYG6?G*f!2S&JrNd@p8 z6*DSjDt|=YKO!wW)_9cCbTn-J!VR`Qw!wHjaQpkW*e|`Cq^FvqeNa5bb0}(jw;~DSn$n@9+&>H+nA`F_86?zKh ziUzNVy^zSNZ8=OKN8-?w#M6eg;3`5TyFoV^;l>qqQd7+us&PfNF`}A} zaibAcU1O>S)kkzrOlre?O|vn{tm}-cERlp&5#!`%kc}KVRauNJl(HiG$|(?bkLX^% z!#iJogRlMLTin`h*}`#g>X=?ORHnwQYwE3v(a7Q&OFeTUed{AO{>&~kc~Cl`>IP?O za(UCJJxhNqJF>LVV-5!fA`y!UiL4DN8d+9mxsJ2RaxK>d@m?ZmQ^=%cVzjl*OP_m@ zyKmiM_sx!1zx4oBCWGSO78^yxF@8$(%!@DKG5q|CQy#ss%Y|2Vxb*Ct_rLxc3CG^O zM+~=RoV~#gFaOrd-2cvd+&?_Pr#aU@f0KiIZ*ljlcgR$1UE1LEFAq8VrTd)Uxrn>z zu-0Hlo_ceQK`jZ@j1T^YzhwJARXqP&U*a2I{wkxdXg>9~Ut#;3msuQs$cUy4djxcE zds7r0Vr-QZSXs}6Cr2rl?==-=i|oKOiG1XlU9%kA&78RvwUz@FwZrN1a14pu2n~yn zIMf+!8>WCU7Hmbb3KI+EJ9_8~r=$XOM%zTLEmTG(cOgSSK2}IxeHKxdii7z1f+{h? zx}^JN^w}o$#Pf-(md$_gCH~)YWB&S&zs>7aN(H>qBqL1Llrz=}JT_#7G8H)_Fv2bCRK{3gkZKgl8O%h!HysnI8<;kk zsqL^%6IF}$u!d&+LW8QsysDK$xlGVnmgOo+9%0s`kT`vG%p3pTWB$!wEVxHv3&Yhb z4dVtG@Eio(NK>7Mu~yhh>bI3q@X%vt?xTYjx_}-#oHN+Dh0b7{q|ul<(>@GzS)!9e zSv4qUQMN*5BMp3|&{ZHt*;FKafr$n|Mg&b7YIc746Eq)l{MDb_A~KR zp)6!Qw{E>n-yNam6&KH6V`1~*va`Ty`Hhwr_^`-gW~ zXOo@JT<3%DzRHI`-e<&|6-zqXa{e=yIC^8BNi$`-F{fD{G3+j(sjya4ed-xL{PQ<> z`+xZkfABy4A^Ue;;qBL7<;Dk>c>ecZ;)nm_E`mOk&F6p;!EIR>s8U{1CY1`0r6%pB z@`9lV$r25MrvsQx6zj1IB_|VC#srf`-ppGx2c#<;?bt5o%NyEc-|0 zeo~aA-4!`NJX&$^-YKvCMb8IhHW=~rj$>=n2&5_})Vc(*PR15F%ZgzDr7eB~>am7L zXE$Dss94E}Hak?K#e$!-P<&&=?6=q>kr9C+2M9sl20BOirHRc66_pqXji|D7a;W5S z<0;#p-{Ia*KOpCI7RRR?aKap0|O_Y_m@Lpy%BOcX;&HL#w2I$p8Q#07*na zR4(7xVtM-*k1G>S!<2Oc=gvH%c z<~ti~T|dXcn-3W-wrG2vYBV9|73R`9)eN5d#h3WnH^0uoUwwz){` zp84I6Gh>4Tj!0)EA&Q~XMOt+xrk0ZN%v2089zoy6BG8jinCiSDJnk8f9UCs=t{WcS z3A7|u_XpOVs^ms)16C!>W@czJ$A^*8ykbLXIpbQUhI;8yS$_V8AZAgkWgwx2DWVbm zp{5v2K?J`;L`4O5ARB}33MkeVnQ0dn64$ZE{>U8m}0dmFBthzXq8aOlC$)7 zezl@~e9Yrp3m%op?Nt<8Q^{0UN?|P+pKx=>c%-Ow#(PWVzBFzYiWm$#W+m{MV>NEk9c3TrUy#93;((gt)aX(|e`A?7nLg2C3Aq~Xzz zmt1|}9MAsdOWfvwJx=koR4ArY%&A#tL^Y8&#~L#xH0Uf^$DV%u7*TU@dmp=AFp^kTD6Cs*G9A+zJ9a z*G3_nM59jmnbPMVA!$wV`o3=Xo6GI-Gmh9r3Op_Ni|7)Y%L)yaUxOLiRu@uj6G zq-UK9hf#mURhtZHj zi6Ya9Y=zxJ44BwqRFq+l(r6tqR$d?iKyc{Bi8@ASF#{VgwZb$Kl5^%%pVX1*B(ZtT zV%EnbS7dahr;}jGC{nl(@P{jw_YT>;CrQ6M)a*Q0W2`~-ipE)NrEz1$`rI&?*VxI3 z95tzO#8seDh176%@E-o?E{n%U46A{#?9oF)RgP+H%5-NNw>HJCO++11R=sH=wW@p; zE!eaSCf86EE0EPFQyjxpBKIepzWxq}4-R?j)t_?j&g&mdz|fr1aYD-p3swmFu3eq7 zh2e-}Zr$1CkREVc`OHlw=SB!&T9@sa;?fJ-7$R@~@EzX&_B-7C8#h^J#^L@$x`!+5 zrb6!~_V4X7y>gMNZD@}dC}ZW9ev;8g720WT{`wl@3+MROAOD2335iYK|Iz#0{Nl5C z#E&N0)|H^?7!YGsN1`P$5E#%UX;9Z^D#sPMJdFN9iy>1P&upAnYZ6-oRN0w|b0=d{ zpgqkThQ!8J%|!>g@5yzAstQ`p1#lkaWf+1fs(DwVLO|sp8R5|jr!psUpP(z*;0ls5 zB;N}^H7HmCZH88yE7_`YB_R3aV!K3TvGp1Qxv$xp)co!r{Tf@(Ugw0q%m#9qg$P#HsG z71h|Hs)SaV*-SCLKEqC&NuLM47#p&Tev6pqnKkFs8IvK)ho^nJzmzx?6PxV+As+A=kr zY|rUeiT#45&=>|H9+=WF+gKy-DyG$hO=e`oW;5HIv&Nhr&*?i$+M{Exy>z+AxB~7# zOi=Ax3y#}E#@E;6P2C;QA083Y!2GETRI@e4=Qg=;spsx@9`W$*Tl~r&eTndIS6u)2 z26LtioECj$QB07^D?p}>s;Cyv3^lPmTR&uaA_NNTMHq9^&YAe~;+A|$NgNzf@uq0X}Jj7IB>E^Cumi`B;{*@s#y^n|9) zG^UrsT|26YWwcRYYJ)Ds?2KU9NkU7=$wS|>`rwd@enO&Yz)fFck6W0P`G?symfz!idZoGU2gQ8=_>T%%Y-X70>{CN}#^Hjyg zOY39;5B}mdZSHZ?5qodmXL;|C)J3|*l4{nl{@H6()f$gD;#>dg4~gj^+b>?itIWpJ z^8%FbNCdj2FEdJ!maDUevCL^TjudnG4k{Xi#NF?Cz_V4t7?n;;Hk6d}1cm^ME|MzE z_L^cAqm+cU23N_OHps)GjKh#5?X?2g%0#j+W?rQvt@JFbJ`}?;nS5rK86rBC{VWB0 zfFe7Ydgds*)|_2o@JIq}igGXo_#6cM(<)y4Eh z+9G(o;xLa&1~@)~$s+Uyl9sPKCqZ81Ahc+mHO>gL1p_LHX<1o~$zDQB`b-WPTPfU@ z!>m;@e6ghjRN^!jL_;LUmf^Hx@AiTR-}8)6tj~nJ(+(LkcW5X6%6Su+*Pvr!b>vwd zMPf>rN>hzB&bbox^#pblIpmbxA3dVoTR|*kVy!Wi!_*cv9b@YTMPx~&?_@HR&jg-Y zNkDx*YiAWv8I<-I0=R*!6_5Yq+tgcgwqDqvKA-7|W>G)UtzU<)N5h zHD^X*$C)uGF}^S&;Q7eoC&zOgOEalReZpqZVagI6LTjl;j;ZlD29gm)k-YIMQCg&4 zguD67*I)dDI+F~dHPjicWU!z;GDyg|e1xoxU>f@@sXQ4$END$i2D(f%LibVy=O{9& z{Dk3>a)2ZeSqhIzhDt>~{|BGuGCM4bEm%B$nFRwC8Dlklfnqu5P{v>cAqFW)Um6Q; zB1M574YE6qNd_=FiKv;Ju*r*iz-Czqv;)LIx5`8_rrDk_zcy$7;(7FJD&I$zl3x6F z0b-WjX9^6Dj(GIGr$aH>iA)=at3=S5s#4fm(M&aV1YI9Ee$;cijN;+bnR@ClSqUXB z{Y3Ojc+u zEPSmkY77VOcqZptj`kmO|IJ5?7$Fo-kHS(jMV~|--QO!qbpgqFdV0#BrV-eTFB;DI zjR_V9#Y6x4oA0ynu`w@PcosT^qha^WhxB?$?Z>n$&)TImuKvy?>UqV%t%tM+ONN}N zCu7z>c9oEpEI)Y6+h6|y6|ln^qr*HxMB%U ze`kf*C#5VERc6GUx8&gQeMg(XM1{fNNQ~>mDE8z~4sZ_S6OZmYOyx;7lY5UPp}Hu} zkTc?229qP&0d*x2U**Ok0Yd;U-ZDZGC@~q8ji``0!egmRX}$_pB$ zt&G&sf?*Gdyi%NhW`i&O7e7ZPvMLqAiarE2U z8%p+x$~uTrYKJ5S+Ysf&<28g7hy^sOLdK3qOt)stE^IMs?V z3`w#l4i_wL@3TBe%r-33sm0WmyhyAmMH8V?icuqyINwM5ArX8=wMdMZQg~O<Dt`kdzK8qNBgs;M!RXg`e>M)p}oLyC#id%F9_?EkbU_L^o>;hdD)cBW`X z3aulx4k#tRzlB$T(d(hyiu*gDYOK_wL-~^&kC!Qx-sCG@r0+PjRD$ zVbv2`MaYnbi0{GL27kO@Xj@i~_OK(k@bPmfEVsGK3Qw#&2PZ2&ytRk8Hyk4>#ybM- z!za#YoK7Hj=+fhzFKfHrL*+EiR2VDV zPU&eyOQcnT+%g;=v3%#4lRFugWbdU;!zT;7Ta zr7IL#@P=Jr`+{cUvgM6iJp+LX@zqUnOmL;36sC%>JY?juDwdP=>O5|3O#f&fnSVO= z?wlaekd9`(DtD*C(6A~)ijEf4!0>Qjl_cF~wy{RFR*^I;7AtAOrwxmD_CSyE3&U*v zJTJZU5=)TV)f(RT^H<@KWsMD5I>tnFFF3jGxZ^CmO6-tbDJgS-pO0mIP@H!)2~Gxd zZ#j2<%xr2fN|Y0hjIA`4Q8KhbFdE8etSb#l-mHlVU;F ziP$=ovQfnDp)mdhcbAfqBwroTK9agvXmL(l1Bk1ei0~S{QkTUOsHLP9TaT;*f;xkui-gWcMN*Q%7(x`1mx_d-i9V9f zQhAI_Zzr~5{_G~B>*uiBYcQIDuE@HRpMyT5f(!GT7>R9*|6rfPI~{EYx`}8Vi5*l% z(d0~}6HO&-*_dJBVL)M$f=XegieTjH50#U>clwzRP<=oqD&&y5-D8>T|0+un){@$lii(_&weklwm46GO!Q<08*p>{3Nc$#uo_IOT?Pq0>(VS%`L;?eCnQ4v@B8p+-T*c13VPmIZGOr;fY z5iD5b2Fn)dYer3hVM&MwS!_r2k!%gw%IA@r4YHMfFQa4%nB>M%F&3100%M2-S(b;4 z?lQ`hiD%AoAhVZSg>u8@Ea4yunV7ngTb?C3it?bTl%Z8z{LCeudf@^`Ea?DCWPRdD zeGn~jr6H9>hNL8nB^XJ9P4X(sXsqv1T83?vlM*|k1u8p~zEerdV?t)KrI=iwV`p=i ztf9vZG>&8&vNmO?BI=Wz0x>L!M+>@JD^4B^=sIClCPgXjU8xT%r*Ju;W1{UKWQ{&a zC>5w04XPqj6SPBFp>22V@UsU`>d*xE+a2L_03(Y>lM^J7yfjUPK@;%Mf;OqVEhRcw zB`XSoaxG^P1wlqumaG-=)Z-5q9MhJByownO3zoF_vK-B&-!lv(dNd;@eCA7^!{vQ; z@4U~!qsN7JlFQ$MHO4GiAW@G!OO_}yW13<{ZArtx!Qn0szW)FR3@v~A1uRy&tcZ-COgW{$ z6f~fWRTLeT#0bp<%hl^O41qO=kXZO-UEpnH!BWvHSnR5Y^cv1P}X6)Hl=h8%Jk8-a?N?B(-;gnbY#F=PSH z79(oT3jEn#4+&N|(^94kgJm?Y_}H&Ji^9;Nsjy6%jQ5IA8H_QQoXcQJKDRDGjwu_- z;fM)iA!f-bNF>Q$R9SY(R!Kye_t3W3m>6x;=y^k~N8)fmq>#!rC@aGnSxN>}_T+BB zKRo92?uxjdOAvS>F9UiIX9iC4L6TNJa%Cf$~@N-}MBzCmqyZ`5FJohUv(=G-a4S@lPM6^t7OdFXJdZv&!d}?qbl0jKO z^(EqI%PW8IEc53T-}$G1#&^E_Ee2qRO>Q!xB65N%b4ZEvie-o(UGW)h(xQlrNvxw; z-_~r5GnIv`GBHF{POOfF?>61m=s{z3LNyxIW=x~xaP?6r&1WezLKv3iw$_}*q!VPU zu9d_JMo-uWzMFA zkfZdDYJlf{{wX&8r-}m-4GmS}NWLeVnUuKNkUB57w3g~gCCSYjFc>9%ePtEeXQEal zYX~7?l)PwiPN?W{DN$Ll+ZEbD(oyuQc|puFph4B7tT9oh`3wW$sHOjKNq3~MBSTUe z*J_fBn51wf<7!1c%5=+27scj zWW_$cGUoK)nBBYY5DpGmzp=@sm!3tL5!w%g&f_*LCqF%5_stKf|Gk=e^CH#7HPVAq zuH5`Q&pq9+``&xp_@v_2Yxf!BI3==yeZtM0P!UP=WJY8LG>L#CGe=XCSsNQ%N@S}^ z83DGAEZyK4NK`swO+p!s8p(buD`Wy`B;-Togla6RjYJPxm%N9e%!#cM+HuZB8ziYV zDj*N2Ph_X0Pb!VSiV0lNKZYRXYb)^Ds5B~DDPv72dfj6G%|JeLM93kK7lGu$1uw zAP>#Xr`Os2;X@uB9ARh}p*eZ~F{4I84NnlUaqc{iKUh-HuqvOm#>g6Cq)4ZU9X25* z9EOf1j}|?rKUvXiZgS=4o`XfEeS8Yjit6f!&Ah>n{*S+a=Oy z)cIMCcb7~j$IQ$j>AMfe{eZ@^{j?CI58gYK@(j^Zif#qQXhvivRYp~o7?td(tPG{P zl>pHvR^!H&ri$pUC65}YU6B!%QqVb2nqyLgdP&Qf*c*3B=S6y>I})3%m9PQs^rQUlI-+lLP{pvEd8Dmgaat(pjoeZ z{!2Ib#y`8y3`MOxQ9FV*C>4p$p8yP0|L{D13sP z3?U5k3lVmcGpVxVktKDCSZPuSsM^qV0qPn(3O{@B#ISi59q*4F7ZLn7{>uEbs3~kR_W3U z$qoGB4{vcoV9p3nW#A z_Bmk87P0f>VaejrE~9f7IKFqErXJJRdxU6s=k?c6$0x*v=IdYn8c&UK+lS84!^cGc&&QjVGKbVokA9?r#N>`M1p6uF!^!^|F{0-Lr*>`ES z8+2tEj3p?A4jwaPTxIYHVm2ZK(26w3PE;#o&7#gE2#{39=7`b=QqUxHGN>GIHj6Mh zm)}564{??^*!P739E;mc&tD}@G?C$V@DSfCPgL@RBafBNVkX#y&|R{ zx2F}nRj`@vxJ6Z(yzpcNcBIkHesu6`*)Js$Ei3xACw7rAPdFUPX|$91T7_XK0|T1{ zQy6m=m~94=71{QfWF)gBMxx0Ds%r2?ak#hQlm#o6jB!+@+>{@qMgRkmjOLWYgfRwK z(othr9xYfNw5;e$f=!@fkd^d~MLp^Wcv`?w5qnR-%fsRf`z*P}MJCL}($htj4^KIL z)Ki^b((f76c4G7C8@xE*;_%CdcpsTx-Nqd~qHY}Dee0OS3FEIHaCnq(8x5BZ-=O%R8TS>g3@N~Qu zA%rusTx&r!O8QD|iP>Yad*UK67?ieh8)rm(jY8=xJ!1y?%$1jS*k;VgMr@G;l9jl? z10*fIqm!6nd{Saxv|2Gd9>}|aL?t^yZP7Xq67+py;xyhVTo)NaX1UV%r6)C+X6mS&c!y;XuZRj_ zaZC_3M*qwnPgIho3;_hO9fn98QsEB<$*Hqv(>e(uiAlcsOd{DJ2TT{GycY05)*6gP z2Sf6iTsMr3p&=C`kLa~yIcl+dEvYOnHkdNos*7$@GW*&ik6#38Y8*8uERdYGj4?G0 zQ#vUom{8Fp9xAKG93LEVgHLe8A=f|oG~>;hq+3qz-)C}doyENcj6I8oD}rvg@TnU- zfB7ZaM;-P0hz2-0kYjX>5$?#6sY!>C2jAJ{@brYA{_D5#%ZJp(QPI(pNlbvrrlOu1 z=Eh)+K^3A`F2j#yJ8(>5jH4M>R5Ob;GBn9b1i8j$QD%flb{eG(s#d6`+_2h9+>}+I zjQ9Xuf;^y;N2#F5((@WV>H+buN}cBauF)W2-Yfe7A1?xR=!^?x+YoH zOH1T~2tJ&(IHPdJlYPQJJ|HYt;!w&+-}VqZi9k?M0^R@r_TH?=vg}OHd)ByzGsKh;Io3c{6^&x2_zB6YPsd4pz(a=rI$Fp-7q{~zhE5_invO3xn9VG3SWsX@AAQphF%UD8jEK{ zalo9$c076S8F&8VgfnjN?$7_8vp;^55?eM84ZGcz{?#*5Dm?k|$Grc;pL6-yBfk9K zeVcn{Ut+x6($H~*r~vwzq!mR5Jds6baVRb+y!W#W1HX^)Y>=Eik7hxk_mGk%hblu+ zksK2j&m$`oodvBky_OO%Yb^p-U&}*pA?jM8YZ>3i1j>VUg78t7+d89ztQi#fx^Y6; zf+>ldv;;5~(E+MdOW9h!5)>uK_c)g*YlwIqQzAfhF{Q2+DpXoz5iKhvpt=&ILE(GH zcmA8#IqICWie;E|pt0NOoc4NG1IK;E9KrJS|58!#WT{1!K`ztuRSr zTF30Pt@0e{n@SQ(0)@pSg^iM>kkxhHrcnb>EW|{k_B1mQ)84#sh(pz_o4{cW4L4cx z)i>{u?3VivA9Kklw(dYri>k+JRfRc=7b|$jiV1VCrKe*-$Bu~^ha8;Fc=Vf(u{hQb z9&q}PZ}Wr=zkcVZ-1|5GgnR$>H(4CrWWTz^beZmz8P9(AoX_7|6ZVGJ{^g%=INae| z|Mp+;@;AROliRH#Ako#J2>ZlXM=26eISI-{p}{aevbb5s+k)>Ms!=2-VfHGFq!@T~ zDG8^`R~=d#TJND4nQCf{)>`ZZM>v z_}U-8!ppaM=^1t6akAyyyZ>`oE$CcT?Kn6tt?) zSdBK0(pbhxasKNIRzH2h`n~6b=Yt$NEe{TH#+}fs9bu~}lSsLCV`1E9_Pfluljv$= z4ZE#kcL@cLdqr$TbR)@HC1j?cUPO}9XsJ5XgtCd@V)y?Yu83+Zqu5_f47;g@8w&TB ztwJ@9_OPvX2BH|wN|Uljmw?W7q^n+Z)N(UgO;L3`okrB$(%@;29Xt~ujl^0xZr)nr z9X$NaLoS#Q4&*v#+}0x3BWrU*OM^k-mIl2tTrjb|f6g&ISBz|!xbuwznr!*>>4$VI zIsYiKeB&-}@-n~sN`_Y_5Uq(^rJfXaWww2|2F~Y^F3^5AP62WGLvWA>w_gA8pWM9Mq zPU$3z@tlOQ%~?vwQkOeMQGy{YbbX9ON&U4Nl^Pjp1n7t|GBN{M4Jacc%7TVL zbM%#)?7ngv+!e!Q*ge{VckDJEqYb{5L4`8~+c#uWQ950S#*#9%T$G4zQ%iQQ3@u=+ z623AD2)^H0!iNLx4NG&kL3ty6bskV9llBAQa$wrXG&Olc8Ukb1?1KfPuv(_)yG>&E zG^39cvzf&hEi;ixvCE1OBNF5z#~`JQZY)!n*j;_$;3a;q;Y!GIR69q>Qa6_jCCK#4 zsOu+sL5)HD7UP79o@@=-R41)c&`GXeT|CNXEP>(iio86gP?)yE3x_FN?}%rQo)Y9s zS+{wrmWz=NFH#_1h?8)d{q2VMFmk!t(qTBlpvi35utKtXT%%aM{RmCNMB(_H`|MLIv z^ztdU@ldsihjk)bGe_}c1|k_tSE+{vhix*ggU-paT8w}-QCp18Jbkp|F^W5fj>f=I zm#|KuwI%0_t`S_6N;)P`Ie=5BKciDHc4c~MDlrnQtNqf#fgnyoiPu3&ObV%Z)u zMae_5n21uoP6lLhnu9{w{G!CoD6o=CuZu(JEYhPYO;V*IW2&m~wG3QTDzqm($6vd} z=KfPIH*op!9<%gVzXzwpgT`Ch&SFQ6@sY-AinnMdyT2T(2dI_Fu*(5w5~i_uldxIf zj;Ji!6jA598LIEWG@uPSMsg0s)rRTuNL&ZVhB79`V%P^6I<~z*Tg%mDVDni<9V%vL z9@jRcQV3HaI8ELaNE+9JH4RzG;ywq(c)4cx_zUF9wKLW=uH^td2I81#mmc3}#$r)M zlX9$wMC{?BwlqeOwODB@BcLq`iY_QEV-J-kY!eAjx9p}KcgvFuxVphh^^nPiNE&CM z*a2c4qezNQmo6v1}ZNi}rDopXn_WxOcQmv1_f|Zi zpkgA23?-nlMaAlBRVoFc1Z%>Ircb5F`h36`kM-d3>{!uYnO6(AZKW_(mDIF&=5$=L zp=VZqSC+oJ`&U>j9fpW_vP4E243UVU;ryegWR`dqeD(FW2 zPyZvw9Mf{dmZv=Uvk$70ppZ?&W_8JpSC4R)aCP|{iz5;0@?NIALmdp+Dsy%9(6ty2 z(acaB9#|Hw6LoblNRsFXI`QbymiHMsrf0FR9L$`g>1svJh(a7KX{y$cwL+IdF`6<& zv0!k5S5bGb#4IJDL(qgM>8~mliXCMq7(nR}jE9&-v2L}LjZ-EIAXC=?rFxMl^pMFu ziaBmh=qS2B;|fY^vbom$iD|C*gd)BsN@H`z-@U=J3(xsG8?@5|4ZFt?jx}EG2#20x z2AY{cw=Kr+Ff)%1mi?inG?FH3Jv4oT@nCz8?g1T$!Lixw373l275Y}u-aEi7T9k3J z>5U_Cy(Zq@Fl(q?vLY76u-~&^3r_gr;Hf$-l({An42i;6X~>oMz+fEAk2|0+)wQZ9mzB6JIq4TM zg7N5BYROW|A~e<&)Y@Q;C7FObws6i1iOePYI-W3f2(9Q29Pvu_at9Q4h);{fpe{0@ z3p9v}<-Q&_N#JZLBvuUE`_4D{{HLFy>|@^eN8je^vxn>+%sF}M9^YL33*P_p|I8AH z8N#zD3PHO|=h|ZuR=M6N{z(&@$^32TO}n z2GeEIAhbh@kr?5p?@U}_`O@8%<*{bbQOW*{_MSY|$X_GQRw`v6gHh-p=}fs(sE}cp zD6W@->WbL-Wh7-MN+ptUFeR+k6kC8GhgBt@fvPgl#ftYy)-u6X3X?S@6mhFgp#s$6 z)K#*oR_~gktq8i6uradS1Em#eN;Jna?9CJ4obDA5Gmkd%xs%H5b`r8Otw!`>Ld2d5 z-C5M7*dAKvu+A|%3>+*Su4r7NaZUzGem0{$45)oV8IA7^s`V(-pyCyIKQMi^W%%8| z)kWgjv&hx+#C9dGx$7Z2n6{DOb3qd4FSX438L23SBJfEjQ&L9Rgl&7k5cd*n)20Im&cRF@ATR8K${X}-2=G1U}XO7;k86PI}jXCF?k<0gdJa`Py$ECWbMSa4f%MX%{mvuzI?Z2ceUGHiwAS8mDB!8I$zcIVa*! z4W}@_KX^SbO1oX}5%HTSTEd65v1Ao#y=B`qh!C!zLbBEsuJC< zQaBnI>#ft^xwu%@WrgR%cYn!OzVgSEp-@!A)yE_KndSTc`k$eOhpeBDeD=;q*n>Ig z{0=)lLy8*t(oIZ6G)?_GMGcYbHd3Pr$Q_`W-%ujYC-gXgc4Td^I`jO&n!kB2 zuk_`U8ONRCmKPuxU1Zch2>DZts6GS*lPx9*(ZOk1Zs!ce8BCVIXXUK8ftdzXf&^Kb z0yPsMYfG_$Qc+BRcYP1!l3NcGbTE(#H+9ohda3(g( zLm?M(mWQH_fwQ;nGV5C?wG}ZQH%?^hC^6&qiS$~-xQe88VH`613-L1z&jNu!LDN3o zad70=z0tAtj@Q03WBJXSm|0~1EWu@>JuvvzqlgeEV%QKax9lJ9dGvAO@qKuVVnlI> zMIBql35I7Gi=+R8hHly7x|VS_P>hjW^&wLlhi@Nn!^>vK%HJ=5v z6mFq;iJrT(9HB8GK^(!0SjRM$X3?WeLAO#&6;qeAsdiklzM-fr=#EKbH_18InlUOu z-_kDxWqNS`k{tsMU2Te_eDydEY02z)a&bvU(IBJx?ehUkjRv_ZB#WTdQ+?~h0dpdW zJ%KBBC<><>;`zP#!f)Syn@690PQF^ReD#Fgl_MP#LbGJ^bR@10u#M;JTcj5npNF#&X7RQz8Ge$XXZ5~703-JgKJ@bx#zFm4Lrkh7su^;o|g{_ z4OuuvCsEU4mso|ZjF1E%AQbYoz@%6)uLYs_ttXozC1Z+0ml%zjg6zR^L4`m`fgB^` zKvIH!m8{6l%Hlmsz^EJ;v0o7TzFKOANRAUFS68wSB`+gK@o=e!RmIG8xMNYWhfBl6 z;cG|S_@h%o74cf<@H3B}S=`*=4jNo%aSO{rD`qoj>*GzJi-sMVrv&a_1b+9o5j~r8 z<9j#gZ!|d9(5Q&@1=scHM#~#E4dnfn_;kzTPe(reMdaC(8A&W?Xq+a`V7D*q0qz(Y z=kV4NOJa(V5)(ORrUD^}J%?>-$&Dt5z_1_}7Ju9}WRIy&HzD^`fSLp-b_1;bczDu*V1o(N<-p1@Flj;tAK-jF5(SFAbX08QrL zV1~Vdfr?99Dc1#nhG}2m7>a8i-zMQkz36>(t2`oC*Dyn42ih`v*(A<3M9*=+f zgj6I)$!b#rZ>}e{N^TTCkxM3Q3+4WvP^+VWCg2$;bVTmHs#w0=y4dmL7h8VwHzN>$D2C#>kDJq5w3G4AQM?0ILW`^z4E&FvO1|{!r zq-RyVN4Gtu^|0O%Cx}DAFD+puy8~aF5)E+YdrO+bIeuZ8-<+{Ho8y{>DQH5Hgzi$r zqNiCHx&x28A)y=D6u`;=g-ppFr8P!JidGoyC^`|XBJCCJfsp4@$+UPjj9gRZhgb}O zHCrYmiNI2r80*AP)&H944;v-|VCx%R0ts`aV8D?OU7W)5ge|8WQF7#(z3~{H^Oz6* z@@K3+yw7sha_f&?$9 zXX($f6Y8E&!C@oFnAVjHDbO@xTBH;z>``T;=q%*QIFYoWWG$R+RzkW^>dhqwPh-(z z7IpiWQA3af+G(f zW-&hm1L-QWONEXeapw<+p?c;9hdkkm6&sf8Mg5(I8?=C8{oxZn+3tAq*}L5N=BxBC z-DJ8tVe2pWs~`OZflEAwfok!M3=tffv0`C;eWf!BOTcbmd8#L2lr&aP;M4X19Ab+dY2a#1+~BMPW>#_<{~XBfBRP$`@3E95VL6(;W7A*P^ftVMmORb^+HJhJCI(UyYp^ z*j~E>R6`lpJ8bLmM>CqvgArvx61g%uYm9NYR^%g!EW01+sw)yy-NkJEdZ&Vk2J02W zpc%(PqYC2?xL^zQA1fny>1p8iHV~=8&^5jhQ-4Q}s7IT`a241vF`+s8`VAH}jmKiy z5@}C+-njKjHAUL7IGa-_j0Dd9=v67b9vXC9a{tGV_~=J}$LSy5WPZHh>bFmUYcmI3 zi(*Mzm9IdD$5q#`%n1#ywYb}c!yDqG?ix*}0_)X||Mf?E{x6`V+Ygb-1pbz_JmGKuY{v(`&}RLpYl1GmQ13p zz2>#QwIX5b8ok3a>kZw^aQ6h}Mxkur;v(?Nw>SKR%mtR$aeVu(=hl(qpfflpek{fb znW~K3AVn!z9jHmwa_RSc;VQp%7Fu4|-jF9k|nqAH0V0Yul8i35>E9cMikvqLx=Qry3RivpgWkexN#`e^Fouf<@n779UXf{Iy9jV zY@YAfa)qbi;`t?azV~G`Bf~G(Bqws8hj0Ieqt}kP@tr$tAC5f!&ky1CIg!GMOr{j3 z-p;Z1oSMRjBXD*KNAt+ZQ6O9fK6*OxpWfc{KfS%;hiH0Q{@KBTfBt&Mmrgy$OGoF$ z-d-byvlt~%xruVS2`MJ7(W63}YK`Em*yd&Apk_g>a27h5gce(ASKok<)q-k_P$)`c z(u7U&|EtEJ$0+e$1xb}vhLjadfuhB&IR{ZEs8Bs9m1NedQmULNQF0J6KZ@aTi4tZa z6osiM%(YL8C#S;lwHw$oPa1Y4RhX2PxW1gl)vK|xf(V7|9L{TeqjB2NAGRzH9E;A- z>O|v`;B7^Wq2gxE=KXWt`Qe(M{KtV0e-U4(UFKL04isiiWsl(Sc*gPVCG*oISi^1{ z8McA_cF*uQGCh;PPq%P5FS&S1DRPKnyVzNXnPEGzy}v_KaIL|#*Z!UL#@jKn-Ry8% zhaD3s8_dEo?IJ^n%(cf@MaWJ{O{>U762MEA9Zrb_)glU89bPE?bjieQ&;?xYQDb6r zzGd}%Pfb&ok`aYCY6@24a2Q4cFcLZREn?y>#im2Sd1ib$&}PrbgkD>0nPK~mm+vJ$ zxc?~z!{x;VcVEBB#{>pO4$l`X|K$gr_49&^&umSW{S|0mmI$-fA_k%reW9jOh$rXK4Bs zlLK}tmgphK3v@&+(4>@_`1`pnOfL$a}a3d34ZR&#FT8fj&u^J6#rm6r$Y(SBVPyIwGRM&z7mU%Aoy5uXw_9e%9nHxM z;}p|=VA$;0Y$uU$)r(@56kTs=y~Fg42x+yJ2UJN6Q(*hsfrO#I?a1f3>PY#*a0SKr z#{)P=caTxGp-YfQQ4^QC$1yozjm6G;f;DKdwUqWQQ4yn5{Wm1&5T{U1!DyJz6{;V3 z@Y~G!{SDVvjACbM_^OCEa~$$Y;n0~Sc!3j!PC;yp3Uif%l7`3 zhwMlw)|(A?Uwf5b|Mo)yg-_o8HLw5R8;t+knjML0+Oz!TA*=US-2SI8^9TRx`~3KS z{~^2WhU@2)D9Q?rbUHx9)!FI;K!TVx4Vok1WgIt;3b$sCcJAp9486+Lvp-ck@{a5? zHb>YEGG(;loJ?>ph!T|w%GQb^MJY2u8bAO54=YJTK~(#+OcL{St>egGyqFmo*_#!k z$VOHIg@{t2QbmcZMf;CdVw6;bE+Hq1skj%Se*qzRH%m|oLr zOQ#E7Wzd$aGW)B<>b>U-=a=l)6QBP4l8-)80uydCek}CI3Oxh8NsOwnTWOkOPj}Q{ zmMz&Srg3C@amnr?5H27EMI_+pnB8jW7c)#RdGcsW3A(r(t}!C;1J^0mThE^21O6 z{a+E>$k+bl+ZYTJV3|?V+yLrQBeMfCni+1e8XD)?`!AUZcIZCxb#~RR>2^RgkJriV-^na;W(VMTRUzBtSZ37$plm8&Eo< zl{`4fk&-hhiA+rL7V2x)*US34g0h+$U%QLZhJ7rA3?VDBR-`CXOYJn)Ij|Ce+*(iD zdYZYyHW}YQztCh`c=*AZPv741!Oun>JrSy;?~Q03Pg@o@9Gw-#dU_IZK)bN`rH9@z z>_=AXk{;GxS>AOV-)@*6IJ$X@v5KsbX|c89MUxRw*@&7?1z;@b zV5HRa!n>LhAtuUHD9VxgMy&A2=rVz-fbuSh$qv;UJm%WXWT`-Ee}(lzvRDZQDW#yI zMoE+}N=rmm$r(aIPclv_X%bq6L=KRYLXSeks9_Lu+G&&nm9hZ6C6lMA23N{XSnAGe z8bF{6&dr5w6W5DS`qcUE@ey`b_2g1H! zoMMJ%cGz-wr{`edXo?|g!x#H~tf+ux-UFpk0^~M@Xa;`ytB3sV^N~Qnoyp!$ zCYp-Kged9Sx+af|h##lLbM?t3Zr(6whPX5*O5-4ThFWL_5RUHM$oc)xdHJocaLf^f z!t)1Llu2>)$`SWC;sK9Yvqz01_x{PNJmVoxe*PKj=Ua|m?&udS@BiPwB0eAM1}0P1 z5|r6sI6`qiX3oG7nIjTMo#Jp|xOtd4ohuG{gVjmQg|rMjjIr`VA!bJk$N>{F#umB3 zjHWD%l#E!kvU2kTB`#koqGLi&2|Wf%sxXq)l*XZQz{H47*EzcdZK~yiHkha&c~o1S z;Lw!DQ(PfeQUvcrMS!RYa8@FmYm!eX22{jEIY3OpjZ#EJ%5;6(C2~pi(1{6>iV{9j zN+u^+KQU#xv!27VCDUiS8kQ+NsBgqtvY4vZw2HQO_(njD)?{4Cm|T;Ol!&oaQTUXY z=ftdqqZW?)!n{=Z5@bB?~WM0-u?ylBQm`;W@h+w5BNu24l}B&!R{r=QFTSjj_pvc*?~rb;^z zE+f}oK}t%4!Zz}&>$2kL?39T3)Gu$}VsUcFwJn50V>(59!*TvMPiSu(^5s8ylO={L zu6Xq9DREag<$x3BJmQ@5zk5t`OY@aC-{Rx=TOR!A1D-y3$kFX1MrLf;Gp9$maxpk; zDOL89IYM)K*K+cT=SEjp9xGZaR^!IWluYT2%@dADQL*NW7s)zEkzA_VTFIzh3*qR-~6TN8kB;&E50y0r0p>iPQOrD|u*Vzza zAr(i{cAUIvP#CPE0Zu1Z?8pW0weL0j-Pqj&PTG~#HUw1izY2=(HvVZJmR zd+3aMv2sya({+ySs6#J%V&mBE6ERPW4+hGZ$%7_j=|{T*%kre7Kb&Jbi*cS1U<#2i zM)sFmrtQRj)J(z=)s3Y*KrM>13XN%M*CbZ8)IO__HVNB#mIn=9i@B}V1)~awXM*hL zX(FTLiJJ-q0b_|7awMlfiiuPbi_Y@KH*WE@Z{NUG{7Qo){7~wOT;bZjzEE*|_87Fu zbhJGC^<&yQOBy-~u()%`v|ZP&TE?O=GmAPERrKoeA-CRmx%zhQ`0THKODu^Uic^*t zG}Acp`0qa8=BrC?a!MjH+}|=rxck;?y!rj_K}{nX*#RpW0t+&yIPT00hq=(t3d{@^ zfsRX&X{2!#5GIS`u{WSHK_^NGzqiygEfg@1b&|c9wqnAn3MnCInQ=1Z zM6wWy65IV!iUdm5VF^hd07mO7Oeqpp;tIJ~lyfpk#mnSU)uoNLXd@JpRvHyEHWsuF zHR@T_q}fn&7{(W`T^tCCa3E=_amq60CksZVOpzNt$y)N(*Y03w2)iOlRIMW@%@j4$ zDE@O=gG(8g6K={VBO`rZ5+;M!krJTIky%q%9vN;dp=o3#Rv(AB*5hyW=)NbE!aiiC zq(B+$X@@^*(1#w2p(&b!!H15tx}JEI={ik}nV3bySVF-!j(*{Y#gHlu!8LxQBf(4(Y?!NsH-#_+ z^lnRWSxU`Hj_erFAO{QwgY^DB!5;Lc2Caf5d)?LEjA@q z7i%<@M?d@kf7t92(4G!BlZh!X`CIYuOV#h>N8t%XI0Sh|TtSQ@o%b-??lP}-m z>;Kgs%T$d_L!l?JM01RxR|;1w7}3U=WHH*+C~GV6!d@1~B};NBR=)8`TPgRfD7h5{ zVnlh_k?Ax+(^7C~Z&5L#!z37&LA)9f;y-&&iAvN2Rt}t2NlH^4D0ZT3lXMyiiC|XZ zzp0&glBnw>;8OF{YvH1-+_Ex>yv}T}0!ODT_U2JUyDCPQ#MRkk|TLCSF7Lc25^ z=)!4}nEQftph6&wlE+d|lKQjHY=+F{az~j0zHRZ#R-B(p#J7g!X~W{iA?-nnS#(0X zrA$nb{eI7QHL!ZRW1qxFRSM`#rqH6ef#;<+8kTeQ#e=8n4-uCp#35_D8pNTyNW5*1 zssJ39(r`>q=kW(05~h*+KYo{+ub=RPfAmKjv1E?r4lSp(8&yG} zd&zHT9XO+LT4A!45E5&or?U=a4Mo~S6dJ7sJ3@&ffqGL)jIj(=L~|$VZKV~(T1?8q zO78cRq~+@$6UAD=$TVPrtQ1n>I*(meKC&`U%8803XK|$t)JbKgxJC|!l43tklBA=o z7W;5Dp<}KZFfC=9%2Eyo`L&WVxdbVTOBD*nEWwO9$>1d>QB-6tpDQZnXLIhpcAK`e zvKq0PwBIqUcMt-FLW-G~3V8}NjbY(4-bQg2bI^E2+bG((V}8@o9ai{zm>7#;nj*?7 zQi|+Xd!DWK>{k;dCcG0T0i)%Iww7+$vRL$VGmmX04m)b`3fgZc)|XdYU97lzJ~7mb zq*ArQ?;bgh-srf|c;@~KQ%&I^uWvpnHzO1K^}sakrKT@pW*UK*_e|RfoRuLNG9X~5 zP^uBfsv_Swl`P<}oo632!DEU*@0Y5te@=Bfhw16Slm41 zrLVutIIY>SqoHMFPau#>z!c4fE4Z0>_7@LW4{P4~=YL2hQB-EX-mzti#q! z)6DL)bQtyowx4a7-Rt=L(~tP%?GM0gc=PqIazbHo*rE;;{-%RNjdJot&dQ1Vc9t@* z80nv}qG8KgQ(8GZC>ciRAn-vBGSEOfk->ObQrm6B#zFdLBLN`A7*UF+f||r?&rFC7 zL@}sQ?B!Gzi@BJR+=j?OC|Xc+fk|rb*7#bvKv70+SY5Num7^F(ZngZGWJsopJ(Z|Y zau!cbJqanMLXro0x?US4D3eS#Bjl2V4K1M4brLOT?RfRx%e-{>RlGYPB~L28mWL5y zAngKi5+km*jWkx_mBwjkjiGH6Mj0VX7LwhFme{mmH?bchQ;KZHiOcgnyL})GiN-g0 z(@RdDvE=Nr)?*uuH5uR5o;fR0&V&%z??yKFw`?9IQkAVm0*XR|razjqyglcrbMzV( pUT!>@?f=8aKYaYd$N#S%|1VBTER35>U>pDd002ovPDHLkV1n&<^Evo;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oJekyll Local Installation

\n\n

Prerequisites

\n\n

Installing Ruby on Ubuntu

\n\n

First of all, we need to install all the dependencies typing:

\n\n
sudo apt-get install ruby-full build-essential zlib1g-dev\n
\n\n

After that, we need to set up a gem installation directory for your user account. The following commands will add environment variables to your ~/.bashrc file to configure the gem installation path. Run them now:

\n\n
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc\necho 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc\necho 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc\nsource ~/.bashrc\n
\n\n

Finally, we install Jekyll:

\n\n
gem install jekyll bundler\n
\n\n

Notice that we don't use the root user :-)

\n\n

Installing Ruby and Jekyll on Mac OS X

\n\n

Follow the Jekyll page installation guide.

\n\n

Running Jekyll Serve

\n\n

By default, the Jekyll server is launched with the following command (which is the one indicated on your website).

\n\n
bundle exec jekyll serve\n
\n\n

If in the process of building the server there is a dependency problem, for example, there is a missing library to install, it is necessary to delete the Gemfile.lock file so that it is rebuilt with the installed dependency. This list of dependencies is found in the Gemfile file (in Python it would be equivalent to the requirements.txt file) and the version of each of the installed gems (packages) is specified. Having a list of dependencies is important for future updates as well as knowing the libraries needed to run the server. Once the Gemfile.lock file is deleted, the command shown above is launched again and the dependency errors should end.

\n\n

Notes for exercise cards.

\n\n
    \n
  • Teaser Images size: multiple of 600x400px
  • \n
\n\n

FAQ

\n\n
    \n
  • Error building Jekyll server:
  • \n
\n\n
jekyll build --incremental --verbose\n
\n"}, "Blocks.Blur": {"fullname": "Blocks.Blur", "modulename": "Blocks.Blur", "type": "module", "doc": "

\n"}, "Blocks.Blur.main": {"fullname": "Blocks.Blur.main", "modulename": "Blocks.Blur", "qualname": "main", "type": "function", "doc": "

Blurs an Object

\n\n

The object to be blurred is read through the inputs.\nWe have multiple available blurs including Gaussian, Averaging and Median Blur. \nWe can change these blurs by changing the name given in the parameter block

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire.

\n\n

Outputs the blurred image through the share_image() function

\n\n

Inputs: BGR Image

\n\n

Outputs: BGR Image

\n\n

Parameters: BlurType

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Camera": {"fullname": "Blocks.Camera", "modulename": "Blocks.Camera", "type": "module", "doc": "

\n"}, "Blocks.Camera.main": {"fullname": "Blocks.Camera.main", "modulename": "Blocks.Camera", "qualname": "main", "type": "function", "doc": "

Opens your Camera using OpenCV

\n\n

The Camera block opens your webcam using OpenCV and begins capturing the video feed.\nThis video feed is then propagated forward through the share_image() function

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire.

\n\n

Inputs: None

\n\n

Outputs: BGR Image

\n\n

Parameters: None

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.ColorFilter": {"fullname": "Blocks.ColorFilter", "modulename": "Blocks.ColorFilter", "type": "module", "doc": "

\n"}, "Blocks.ColorFilter.main": {"fullname": "Blocks.ColorFilter.main", "modulename": "Blocks.ColorFilter", "qualname": "main", "type": "function", "doc": "

Filters Colour according to given parameters

\n\n

The image to be filtered is read through the inputs.\nWe can give a Filter between any HSV range by changing the range of the parameters LowerRGB and UpperRGB.

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire .

\n\n

Here the image is tranformed from BGR to HSV and then the filter is applied through the cv2.inRange()\nfunction. Finally the filtered image is overlayed on the orignal by the means of the\ncv2.bitwise_and() function. This filtered image is then shared through the share_image() function.

\n\n

Inputs: BGR Image

\n\n

Outputs: BGR Image

\n\n

Parameters: LowerHSV, UpperHSV

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.ContourDetector": {"fullname": "Blocks.ContourDetector", "modulename": "Blocks.ContourDetector", "type": "module", "doc": "

\n"}, "Blocks.ContourDetector.main": {"fullname": "Blocks.ContourDetector.main", "modulename": "Blocks.ContourDetector", "qualname": "main", "type": "function", "doc": "

Detects Contours in an Image

\n\n

The image in which contours are to be detected is read through the inputs.\nFirst the image is converted from BGR to Grayscale, the thresholding values are 60, 255.\nThe function used is cv2.threshold().\nOnce it is thersholded, the contours are detected in the image using cv2.findContours()

\n\n

The program then detects the biggest contour present in the image and finds the co-ordinates of its center\nusing the cv2.moments() function.

\n\n

This co-ords of the center alongwith the contour characteristics are part of the output array.\nTHis array is shared through share_array()

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire.

\n\n

Further reading

\n\n

Inputs: BGR Image

\n\n

Outputs: Array [x, y, width, height, angle of rotation], BGR Image

\n\n

Parameters: None

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Cropper": {"fullname": "Blocks.Cropper", "modulename": "Blocks.Cropper", "type": "module", "doc": "

\n"}, "Blocks.Cropper.main": {"fullname": "Blocks.Cropper.main", "modulename": "Blocks.Cropper", "qualname": "main", "type": "function", "doc": "

Crops an Image

\n\n

The image which is to be cropped is read through the inputs using the inputs.read_image() function.\nThe parameters ask for x, y, w, h

\n\n
x: x co-ordinate of where the crop should start\n\ny: y co-ordinate of where the crop should start\n\nw: width of the crop\n\nh: height of the crop\n\n
\n\n

Image is cropped by simple list slicing.

\n\n

while loop is the part of the program that is executed continuously.\nIt is enabled by default but can be disabled by passing in 0 through the enable wire.\nOutput is shared via share_image()

\n\n

Inputs: BGR Image

\n\n

Outputs: Resized BGR Image

\n\n

Parameters: x, y, width, height

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Dilation": {"fullname": "Blocks.Dilation", "modulename": "Blocks.Dilation", "type": "module", "doc": "

\n"}, "Blocks.Dilation.main": {"fullname": "Blocks.Dilation.main", "modulename": "Blocks.Dilation", "qualname": "main", "type": "function", "doc": "

Dilates an Image

\n\n

You can specify the kernel dimensions and number of iterations in the parameters.

\n\n

We first convert the colour of the image from BGR to GRAY then we apply dilation on it \nusing the cv2.dilate() function.

\n\n

Finaly we convert from GRAY back to BGR and output the image through the share_image() function.

\n\n

Further reading

\n\n

Inputs: BGR Image

\n\n

Outputs: BGR Image

\n\n

Parameters: Kernel, Iterations

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.EdgeDetector": {"fullname": "Blocks.EdgeDetector", "modulename": "Blocks.EdgeDetector", "type": "module", "doc": "

\n"}, "Blocks.EdgeDetector.main": {"fullname": "Blocks.EdgeDetector.main", "modulename": "Blocks.EdgeDetector", "qualname": "main", "type": "function", "doc": "

Detects Edges in an Image

\n\n

It takes in two parameters Lower and Upper. These parameters are used as the limits in Canny Edge \nDetection. First we convert the input BGR image to GRAY. Next we apply Canny Edge Detection via the \ncv2.Canny() function. The resulting image is then converted back to BGR.

\n\n

This image is then shared to the wire via the share_image() function.

\n\n

Inputs: BGR Image

\n\n

Outputs: BGR Image

\n\n

Parameters: Lower, Upper (Threshold values)

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Erosion": {"fullname": "Blocks.Erosion", "modulename": "Blocks.Erosion", "type": "module", "doc": "

\n"}, "Blocks.Erosion.main": {"fullname": "Blocks.Erosion.main", "modulename": "Blocks.Erosion", "qualname": "main", "type": "function", "doc": "

Erodes an Image

\n\n

You can specify the kernel dimensions and number of iterations in the parameters.

\n\n

We first convert the colour of the image from BGR to GRAY then we apply erosion on it \nusing the cv2.erode() function.

\n\n

Finaly we convert from GRAY back to BGR and output the image through the share_image() function.

\n\n

Further reading

\n\n

Inputs: BGR Image

\n\n

Outputs: BGR Image

\n\n

Parameters: Kernel, Iterations

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.FaceDetector": {"fullname": "Blocks.FaceDetector", "modulename": "Blocks.FaceDetector", "type": "module", "doc": "

\n"}, "Blocks.FaceDetector.main": {"fullname": "Blocks.FaceDetector.main", "modulename": "Blocks.FaceDetector", "qualname": "main", "type": "function", "doc": "

Detects Faces in the Image

\n\n

This block applies a Harr Cascade based model on the input image. \nIt takes as an input the parameter BoxOrImage. This parameter has two possible values:\nBoxOrImage: image / box

\n\n

If image is given: The output is the image passed in with a bounding box around the area where \na face is detected. Image is shared through the share_image() function.

\n\n

Else if box is given, the output is the co-ordinates of the bounding box in the form of an array. It \nis chared through the share_array() function.

\n\n

Inputs: BGR Image

\n\n

Outputs: BGR Image with Bounding Boxes

\n\n

Parameters: BoxOrImage ('box' for Bounding Boxes, 'image' for Image with Detections)

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.IMU": {"fullname": "Blocks.IMU", "modulename": "Blocks.IMU", "type": "module", "doc": "

\n"}, "Blocks.IMU.callback": {"fullname": "Blocks.IMU.callback", "modulename": "Blocks.IMU", "qualname": "callback", "type": "function", "doc": "

The callback function is required by the Subscriber to the ROSTopic. This callback function reads the orientation list from the IMU\nIt then converts the quaternion angles to euler ones. This gives us the roll, pitch and yaw of the body.\nWe convert these radian values to degrees to get the orientation of the body.

\n\n

Aside from these values the IMU also gives us the angular velocity of the body.

\n\n

All of these values are stored in the global data variable of the block.

\n", "signature": "(msg)", "funcdef": "def"}, "Blocks.IMU.main": {"fullname": "Blocks.IMU.main", "modulename": "Blocks.IMU", "qualname": "main", "type": "function", "doc": "

Reads IMU sensor data

\n\n

This is a specialized block used to read IMU sensor data.

\n\n

It reads the ROSTopic name from the ROSTopic parameter. Default is mavros/imu/data.

\n\n

This data is sent to the callback function which converts the orientation list obtained into roll, pitch and yaw for the\nrobot that the IMU is present on. Alongwith orientation, it also gives the angular velocity of the robot.\nThis data is shared in the form of an array using the share_array() function.

\n\n

Inputs: None

\n\n

Outputs: Array [Roll, Pitch , Yaw, Angular Velocity in X, Angular Velocity in Y, Angular Velocity in Z]

\n\n

Parameters: ROSTopic

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.ImageRead": {"fullname": "Blocks.ImageRead", "modulename": "Blocks.ImageRead", "type": "module", "doc": "

\n"}, "Blocks.ImageRead.main": {"fullname": "Blocks.ImageRead.main", "modulename": "Blocks.ImageRead", "qualname": "main", "type": "function", "doc": "

Reads an Image from a Specified Path

\n\n

This box reads an image from a given file path. The path to be specified is written in the parameter\nImagePath.

\n\n

It is read through the cv2.imread() function and shared through the share_image() function.

\n\n

Inputs: None

\n\n

Outputs: BGR Image

\n\n

Parameters: ImagePath

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.MotorDriver": {"fullname": "Blocks.MotorDriver", "modulename": "Blocks.MotorDriver", "type": "module", "doc": "

\n"}, "Blocks.MotorDriver.callback": {"fullname": "Blocks.MotorDriver.callback", "modulename": "Blocks.MotorDriver", "qualname": "callback", "type": "function", "doc": "

\n", "signature": "(inp)", "funcdef": "def"}, "Blocks.MotorDriver.main": {"fullname": "Blocks.MotorDriver.main", "modulename": "Blocks.MotorDriver", "qualname": "main", "type": "function", "doc": "

Publishes Twist Command to drive Motors

\n\n

It publishes to the ROSTopic name from the ROSTopic parameter. Default is /robot/cmd_vel.

\n\n

It reads an array as an input by the read_array() function.

\n\n

This is assumed to be of the format [ linear_velocity, angular_velocity ].

\n\n

This data is then converted into a Twist() message with the linear.x = linear_velocity and angular.z = angular_velocity

\n\n

The data is then published continuously

\n\n

Inputs: cmd_vel (Linear Velocity, Angular Velocity)

\n\n

Outputs: None

\n\n

Parameters: ROSTopic

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Odometer": {"fullname": "Blocks.Odometer", "modulename": "Blocks.Odometer", "type": "module", "doc": "

\n"}, "Blocks.Odometer.callback": {"fullname": "Blocks.Odometer.callback", "modulename": "Blocks.Odometer", "qualname": "callback", "type": "function", "doc": "

\n", "signature": "(msg)", "funcdef": "def"}, "Blocks.Odometer.main": {"fullname": "Blocks.Odometer.main", "modulename": "Blocks.Odometer", "qualname": "main", "type": "function", "doc": "

Reads Data from An Odometer

\n\n

It reads the ROSTopic name from the ROSTopic parameter.\nIt then initializes a Subscriber to subscribe to that ROSTopic, once the data is obtained through the callback\nfunction, it is formatted into an array with the format: [ x, y, yaw ]

\n\n

This data is then shared to the wire using the share_array() function.

\n\n

Inputs: None

\n\n

Outputs: Array [X, Y, Yaw]

\n\n

Parameters: ROSTopic

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.PID": {"fullname": "Blocks.PID", "modulename": "Blocks.PID", "type": "module", "doc": "

\n"}, "Blocks.PID.main": {"fullname": "Blocks.PID.main", "modulename": "Blocks.PID", "qualname": "main", "type": "function", "doc": "

Applies PID for a Given Error Value

\n\n

The error is read as an input from the inputs wire.

\n\n

The Kp, Ki, and Kd parameters are read from the parameters of the same name.\nOnce there it applies the PID technique to the error variable in order to minimize it.

\n\n

The resulting values are shared through the share_array() function.

\n\n

Inputs: Error

\n\n

Outputs: cmd_vel (Linear Velocity, Angular Velocity)

\n\n

Parameters: Kp, Ki, Kd

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.ROSCamera": {"fullname": "Blocks.ROSCamera", "modulename": "Blocks.ROSCamera", "type": "module", "doc": "

\n"}, "Blocks.ROSCamera.callback": {"fullname": "Blocks.ROSCamera.callback", "modulename": "Blocks.ROSCamera", "qualname": "callback", "type": "function", "doc": "

\n", "signature": "(msg)", "funcdef": "def"}, "Blocks.ROSCamera.main": {"fullname": "Blocks.ROSCamera.main", "modulename": "Blocks.ROSCamera", "qualname": "main", "type": "function", "doc": "

Gets Image from a ROSCamera

\n\n

The camera topic is read from the ROSTopic parameter, by default it is /robot/camera

\n\n

The image message is converted to OpenCV compatible format via the imgmsg_to_cv2() function.

\n\n

This is then shared ahead using the share_image() function.

\n\n

Inputs: None

\n\n

Outputs: BGR Image

\n\n

Parameters: ROSTopic

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Screen": {"fullname": "Blocks.Screen", "modulename": "Blocks.Screen", "type": "module", "doc": "

\n"}, "Blocks.Screen.main": {"fullname": "Blocks.Screen.main", "modulename": "Blocks.Screen", "qualname": "main", "type": "function", "doc": "

Displays the given Image

\n\n

Takes an image as an input and displays it on the user's screen.\nThe cv2.imshow() function is used in order to display the image.

\n\n

Inputs: BGR Image

\n\n

Outputs: None

\n\n

Parameters: None

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Teleoperator": {"fullname": "Blocks.Teleoperator", "modulename": "Blocks.Teleoperator", "type": "module", "doc": "

\n"}, "Blocks.Teleoperator.main": {"fullname": "Blocks.Teleoperator.main", "modulename": "Blocks.Teleoperator", "qualname": "main", "type": "function", "doc": "

Used to Imitate the Movements of the Operator

\n\n

It takes in an array as input, depending on the array variables, it will output another array\ncontaining the velocity it deems appropriate.\nThe linear_velocity can be given via the Linear parameter.

\n\n

The output data is a list of the format: [ linear_velocity, angular_velocity ]

\n\n

This is then shared to the output wire using the share_array() function.

\n\n

Inputs: Bounding Box (x, y, width, height)

\n\n

Outputs: cmd_vel (linear velocity, angular velocity)

\n\n

Parameters: Linear(Linear Velocity)

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.Threshold": {"fullname": "Blocks.Threshold", "modulename": "Blocks.Threshold", "type": "module", "doc": "

\n"}, "Blocks.Threshold.main": {"fullname": "Blocks.Threshold.main", "modulename": "Blocks.Threshold", "qualname": "main", "type": "function", "doc": "

Thresholds an Image

\n\n

THis block reads the parameters LowerThreshold and UpperThreshold.

\n\n

Based on these values it converts the input image form BGR into GRAY and applies the cv2.threshold() function on it.

\n\n

The image is then converted back into BGR and shared to the output wire using the\nshare_image() function.

\n\n

Further reading

\n\n

Inputs: BGR Image

\n\n

Outputs: BGR Image

\n\n

Parameters: LowerThreshold, UpperThreshold

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.VideoStreamer": {"fullname": "Blocks.VideoStreamer", "modulename": "Blocks.VideoStreamer", "type": "module", "doc": "

\n"}, "Blocks.VideoStreamer.main": {"fullname": "Blocks.VideoStreamer.main", "modulename": "Blocks.VideoStreamer", "qualname": "main", "type": "function", "doc": "

Streams Video from File

\n\n

The filepath of your video is given in the PathToFile parameter.\nNote: that this file path is relative to the modules folder of the final built application.

\n\n

Capturing begins using the cv2.VideoCapture() function. \nThe video is then read frame by frame and each frame is shared to the output wire using the\nshare_image() function.

\n\n

Inputs: None

\n\n

Outputs: BGR Image

\n\n

Parameters: PathToFile

\n", "signature": "(inputs, outputs, parameters, synchronise)", "funcdef": "def"}, "Blocks.utils": {"fullname": "Blocks.utils", "modulename": "Blocks.utils", "type": "module", "doc": "

\n"}, "Blocks.utils.models": {"fullname": "Blocks.utils.models", "modulename": "Blocks.utils.models", "type": "module", "doc": "

\n"}}, "docInfo": {"Blocks": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 426}, "Blocks.Blur": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Blur.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 110}, "Blocks.Camera": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Camera.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 91}, "Blocks.ColorFilter": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.ColorFilter.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 160}, "Blocks.ContourDetector": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.ContourDetector.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 196}, "Blocks.Cropper": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Cropper.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 155}, "Blocks.Dilation": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Dilation.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 108}, "Blocks.EdgeDetector": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.EdgeDetector.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 114}, "Blocks.Erosion": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Erosion.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 108}, "Blocks.FaceDetector": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.FaceDetector.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 152}, "Blocks.IMU": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.IMU.callback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 3, "bases": 0, "doc": 95}, "Blocks.IMU.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 132}, "Blocks.ImageRead": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.ImageRead.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 78}, "Blocks.MotorDriver": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.MotorDriver.callback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 3, "bases": 0, "doc": 3}, "Blocks.MotorDriver.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 127}, "Blocks.Odometer": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Odometer.callback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 3, "bases": 0, "doc": 3}, "Blocks.Odometer.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 95}, "Blocks.PID": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.PID.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 103}, "Blocks.ROSCamera": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.ROSCamera.callback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 3, "bases": 0, "doc": 3}, "Blocks.ROSCamera.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 83}, "Blocks.Screen": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Screen.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 57}, "Blocks.Teleoperator": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Teleoperator.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 121}, "Blocks.Threshold": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.Threshold.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 105}, "Blocks.VideoStreamer": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.VideoStreamer.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 6, "bases": 0, "doc": 99}, "Blocks.utils": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "Blocks.utils.models": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}}, "length": 45, "save": true}, "index": {"qualname": {"root": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.MotorDriver.callback": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}}, "df": 4}}}}}}}}}}, "fullname": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur": {"tf": 1}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver": {"tf": 1}, "Blocks.MotorDriver.callback": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}, "Blocks.utils": {"tf": 1}, "Blocks.utils.models": {"tf": 1}}, "df": 45}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Blur": {"tf": 1}, "Blocks.Blur.main": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.MotorDriver": {"tf": 1}, "Blocks.MotorDriver.callback": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}}, "df": 3}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.utils.models": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.Camera": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.MotorDriver.callback": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}}, "df": 4}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ColorFilter": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}}, "df": 2}}}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ContourDetector": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Cropper": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Dilation": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}}, "df": 2}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.EdgeDetector": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}}, "df": 2}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Erosion": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.FaceDetector": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {"Blocks.IMU": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 3}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ImageRead": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Odometer": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 3}}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.PID": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.ROSCamera": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 3}}}}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Screen": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Teleoperator": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 2}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Threshold": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 2}}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.VideoStreamer": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.utils": {"tf": 1}, "Blocks.utils.models": {"tf": 1}}, "df": 2}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"docs": {}, "df": 0}}, "signature": {"root": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.callback": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.callback": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.callback": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1.4142135623730951}, "Blocks.Screen.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 23, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {"Blocks.MotorDriver.callback": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}}}}}, "s": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.Odometer.callback": {"tf": 1}, "Blocks.ROSCamera.callback": {"tf": 1}}, "df": 3}}}}}, "bases": {"root": {"docs": {}, "df": 0}}, "doc": {"root": {"0": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}, "2": {"5": {"5": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"9": {"docs": {"Blocks": {"tf": 2.449489742783178}}, "df": 1}, "docs": {}, "df": 0}, "6": {"0": {"0": {"docs": {}, "df": 0, "x": {"4": {"0": {"0": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "x": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"Blocks": {"tf": 11.661903789690601}, "Blocks.Blur": {"tf": 1.7320508075688772}, "Blocks.Blur.main": {"tf": 5.0990195135927845}, "Blocks.Camera": {"tf": 1.7320508075688772}, "Blocks.Camera.main": {"tf": 4.898979485566356}, "Blocks.ColorFilter": {"tf": 1.7320508075688772}, "Blocks.ColorFilter.main": {"tf": 6.164414002968976}, "Blocks.ContourDetector": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 6.928203230275509}, "Blocks.Cropper": {"tf": 1.7320508075688772}, "Blocks.Cropper.main": {"tf": 6.48074069840786}, "Blocks.Dilation": {"tf": 1.7320508075688772}, "Blocks.Dilation.main": {"tf": 6.4031242374328485}, "Blocks.EdgeDetector": {"tf": 1.7320508075688772}, "Blocks.EdgeDetector.main": {"tf": 6.082762530298219}, "Blocks.Erosion": {"tf": 1.7320508075688772}, "Blocks.Erosion.main": {"tf": 6.4031242374328485}, "Blocks.FaceDetector": {"tf": 1.7320508075688772}, "Blocks.FaceDetector.main": {"tf": 6.164414002968976}, "Blocks.IMU": {"tf": 1.7320508075688772}, "Blocks.IMU.callback": {"tf": 3.3166247903554}, "Blocks.IMU.main": {"tf": 5.477225575051661}, "Blocks.ImageRead": {"tf": 1.7320508075688772}, "Blocks.ImageRead.main": {"tf": 5.291502622129181}, "Blocks.MotorDriver": {"tf": 1.7320508075688772}, "Blocks.MotorDriver.callback": {"tf": 1.7320508075688772}, "Blocks.MotorDriver.main": {"tf": 6.782329983125268}, "Blocks.Odometer": {"tf": 1.7320508075688772}, "Blocks.Odometer.callback": {"tf": 1.7320508075688772}, "Blocks.Odometer.main": {"tf": 5.291502622129181}, "Blocks.PID": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 5.5677643628300215}, "Blocks.ROSCamera": {"tf": 1.7320508075688772}, "Blocks.ROSCamera.callback": {"tf": 1.7320508075688772}, "Blocks.ROSCamera.main": {"tf": 5.656854249492381}, "Blocks.Screen": {"tf": 1.7320508075688772}, "Blocks.Screen.main": {"tf": 4.47213595499958}, "Blocks.Teleoperator": {"tf": 1.7320508075688772}, "Blocks.Teleoperator.main": {"tf": 6}, "Blocks.Threshold": {"tf": 1.7320508075688772}, "Blocks.Threshold.main": {"tf": 6.557438524302}, "Blocks.VideoStreamer": {"tf": 1.7320508075688772}, "Blocks.VideoStreamer.main": {"tf": 5.656854249492381}, "Blocks.utils": {"tf": 1.7320508075688772}, "Blocks.utils.models": {"tf": 1.7320508075688772}}, "df": 45, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 3.1622776601683795}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "k": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "b": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Threshold.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 5}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.MotorDriver.main": {"tf": 2}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 2.449489742783178}}, "df": 3}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 2.23606797749979}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1.7320508075688772}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.7320508075688772}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 2}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 17, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 2.449489742783178}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 2}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 7, "s": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.7320508075688772}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {"Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}}, "df": 4}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Odometer.main": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {"Blocks": {"tf": 3.3166247903554}, "Blocks.Blur.main": {"tf": 2}, "Blocks.Camera.main": {"tf": 2}, "Blocks.ColorFilter.main": {"tf": 2.8284271247461903}, "Blocks.ContourDetector.main": {"tf": 2.8284271247461903}, "Blocks.Cropper.main": {"tf": 2.6457513110645907}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 2.6457513110645907}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 2.23606797749979}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 2}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 2}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 2}}, "df": 19}, "f": {"docs": {"Blocks": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}}, "df": 2}, "t": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1.7320508075688772}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}}, "df": 20, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 2}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ColorFilter.main": {"tf": 2.6457513110645907}, "Blocks.ContourDetector.main": {"tf": 2.6457513110645907}, "Blocks.Cropper.main": {"tf": 2.6457513110645907}, "Blocks.Dilation.main": {"tf": 2.449489742783178}, "Blocks.EdgeDetector.main": {"tf": 2.6457513110645907}, "Blocks.Erosion.main": {"tf": 2.449489742783178}, "Blocks.FaceDetector.main": {"tf": 3.3166247903554}, "Blocks.ImageRead.main": {"tf": 2}, "Blocks.ROSCamera.main": {"tf": 2}, "Blocks.Screen.main": {"tf": 2}, "Blocks.Threshold.main": {"tf": 2.449489742783178}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 14, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.ImageRead.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "u": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.7320508075688772}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ImageRead.main": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"Blocks.Screen.main": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Camera.main": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1.7320508075688772}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 9, "s": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1.7320508075688772}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1.7320508075688772}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}}, "t": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1.4142135623730951}}, "df": 2}}}, "d": {"docs": {"Blocks.PID.main": {"tf": 1.4142135623730951}}, "df": 1}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.MotorDriver.main": {"tf": 1.4142135623730951}}, "df": 1}, "d": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 2}}, "df": 1}}, "n": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1.7320508075688772}, "Blocks.MotorDriver.main": {"tf": 1.7320508075688772}, "Blocks.Odometer.main": {"tf": 2}, "Blocks.ROSCamera.main": {"tf": 1.4142135623730951}}, "df": 5}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1.4142135623730951}}, "df": 2}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.IMU.main": {"tf": 1.4142135623730951}}, "df": 1, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 10, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 4}}}, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}}, "df": 6}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}}, "df": 9, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 4}}}, "f": {"docs": {"Blocks": {"tf": 2.6457513110645907}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 2.23606797749979}, "Blocks.Cropper.main": {"tf": 2.23606797749979}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 2.23606797749979}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 15}, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1.7320508075688772}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 8, "s": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 19}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}}, "df": 1}, "c": {"docs": {}, "df": 0, "v": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Odometer.main": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "b": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Threshold.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "r": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.Screen.main": {"tf": 1}}, "df": 2}, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 11}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 5}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 2.23606797749979}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 3, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}}, "df": 2}}, "y": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1.4142135623730951}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 20}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 4}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 2}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 5, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Camera.main": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Odometer.main": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "q": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 12}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "a": {"docs": {"Blocks": {"tf": 2}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.7320508075688772}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 10, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1}}, "df": 2}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}, "s": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}}, "df": 3}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 3}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 15, "d": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1.7320508075688772}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 16}, "y": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 2}, "Blocks.MotorDriver.main": {"tf": 2}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1.4142135623730951}}, "df": 5}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 7, "k": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ContourDetector.main": {"tf": 2}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.PID.main": {"tf": 1.4142135623730951}}, "df": 4, "a": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.ContourDetector.main": {"tf": 2}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.7320508075688772}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 2}}, "df": 7}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {"Blocks": {"tf": 2}, "Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.7320508075688772}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.7320508075688772}, "Blocks.IMU.callback": {"tf": 1}}, "df": 7, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"Blocks.Camera.main": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1.7320508075688772}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 4}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 11}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 3}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"Blocks": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}}, "df": 4}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.ImageRead.main": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 9}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "o": {"docs": {"Blocks": {"tf": 3}, "Blocks.Blur.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1.7320508075688772}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 2}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1.7320508075688772}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1.4142135623730951}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1.4142135623730951}}, "df": 19, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 4.58257569495584}, "Blocks.Blur.main": {"tf": 3}, "Blocks.Camera.main": {"tf": 2.449489742783178}, "Blocks.ColorFilter.main": {"tf": 3.872983346207417}, "Blocks.ContourDetector.main": {"tf": 4.242640687119285}, "Blocks.Cropper.main": {"tf": 3.3166247903554}, "Blocks.Dilation.main": {"tf": 2.6457513110645907}, "Blocks.EdgeDetector.main": {"tf": 2.449489742783178}, "Blocks.Erosion.main": {"tf": 2.6457513110645907}, "Blocks.FaceDetector.main": {"tf": 3.4641016151377544}, "Blocks.IMU.callback": {"tf": 3.872983346207417}, "Blocks.IMU.main": {"tf": 3.1622776601683795}, "Blocks.ImageRead.main": {"tf": 2}, "Blocks.MotorDriver.main": {"tf": 2.449489742783178}, "Blocks.Odometer.main": {"tf": 2.6457513110645907}, "Blocks.PID.main": {"tf": 3}, "Blocks.ROSCamera.main": {"tf": 2.23606797749979}, "Blocks.Screen.main": {"tf": 2}, "Blocks.Teleoperator.main": {"tf": 3.1622776601683795}, "Blocks.Threshold.main": {"tf": 2.449489742783178}, "Blocks.VideoStreamer.main": {"tf": 2.8284271247461903}}, "df": 21, "m": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1}}, "df": 2}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1.7320508075688772}, "Blocks.Threshold.main": {"tf": 1}}, "df": 4}}, "n": {"docs": {"Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 13}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 9}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1.7320508075688772}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 15}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"Blocks.Blur.main": {"tf": 1.7320508075688772}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ColorFilter.main": {"tf": 2}, "Blocks.ContourDetector.main": {"tf": 1.7320508075688772}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 11}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"Blocks.Threshold.main": {"tf": 1}}, "df": 1}}}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 4}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.MotorDriver.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}, "y": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 9}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.Screen.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.Screen.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Dilation.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.Dilation.main": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Dilation.main": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 2}, "Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.7320508075688772}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 5}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"Blocks.Screen.main": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Odometer.main": {"tf": 1}}, "df": 1, "r": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {"Blocks": {"tf": 2}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.IMU.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "t": {"docs": {"Blocks.IMU.main": {"tf": 1}}, "df": 1}}}, "o": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1.4142135623730951}}, "df": 2}}}, "y": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.IMU.main": {"tf": 1}}, "df": 1}}}}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 17, "d": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 13}}}}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Screen.main": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}}, "df": 2, "s": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}, "m": {"docs": {"Blocks": {"tf": 2}}, "df": 1, "s": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "t": {"docs": {"Blocks": {"tf": 2.449489742783178}}, "df": 1}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 8}, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.Threshold.main": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "r": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {"Blocks": {"tf": 2.23606797749979}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 2}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 4}}}, "y": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur.main": {"tf": 1.7320508075688772}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ColorFilter.main": {"tf": 2}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.7320508075688772}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 10}, "e": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 9, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Camera.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.Blur.main": {"tf": 1.7320508075688772}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 6}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.7320508075688772}, "Blocks.ContourDetector.main": {"tf": 1.7320508075688772}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.Dilation.main": {"tf": 2}, "Blocks.EdgeDetector.main": {"tf": 2}, "Blocks.Erosion.main": {"tf": 2}, "Blocks.FaceDetector.main": {"tf": 1.4142135623730951}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 2}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 14}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "x": {"docs": {"Blocks.FaceDetector.main": {"tf": 2.23606797749979}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 3, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.FaceDetector.main": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.FaceDetector.main": {"tf": 2}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.IMU.callback": {"tf": 1.7320508075688772}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5, "d": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {"Blocks": {"tf": 1.7320508075688772}}, "df": 1}}}, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}}, "df": 5}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"Blocks": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"Blocks": {"tf": 1}, "Blocks.PID.main": {"tf": 2}}, "df": 2, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Erosion.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.Erosion.main": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Erosion.main": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}, "z": {"docs": {"Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"1": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}, "docs": {}, "df": 0}}}}, "y": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 2}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 5, "o": {"docs": {}, "df": 0, "u": {"docs": {"Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 2, "r": {"docs": {"Blocks": {"tf": 1.7320508075688772}, "Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "w": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1.4142135623730951}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}}, "df": 3}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.FaceDetector.main": {"tf": 1}}, "df": 3, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"Blocks": {"tf": 1.4142135623730951}, "Blocks.MotorDriver.main": {"tf": 1}}, "df": 2, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ROSCamera.main": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}}, "df": 6}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.7320508075688772}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}, "Blocks.IMU.callback": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 5}}, "s": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 3}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}}, "df": 3}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"Blocks.Blur.main": {"tf": 1.4142135623730951}, "Blocks.Camera.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 8, "n": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.EdgeDetector.main": {"tf": 1.7320508075688772}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Camera.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"Blocks.IMU.callback": {"tf": 1.4142135623730951}, "Blocks.IMU.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1}}, "df": 3}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks.Blur.main": {"tf": 1}, "Blocks.ColorFilter.main": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}}}}, "v": {"2": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.4142135623730951}, "Blocks.ContourDetector.main": {"tf": 1.7320508075688772}, "Blocks.Dilation.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.Erosion.main": {"tf": 1}, "Blocks.ImageRead.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Screen.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}, "Blocks.VideoStreamer.main": {"tf": 1}}, "df": 10}, "docs": {}, "df": 0}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.ContourDetector.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"Blocks.Cropper.main": {"tf": 2}}, "df": 1, "s": {"docs": {"Blocks.Cropper.main": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "d": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 3}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.PID.main": {"tf": 1}}, "df": 2, "s": {"docs": {"Blocks": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1}, "Blocks.FaceDetector.main": {"tf": 1}, "Blocks.IMU.callback": {"tf": 1.7320508075688772}, "Blocks.PID.main": {"tf": 1}, "Blocks.Threshold.main": {"tf": 1}}, "df": 6}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"Blocks.MotorDriver.main": {"tf": 1.4142135623730951}, "Blocks.PID.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 3, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"Blocks.IMU.callback": {"tf": 1}, "Blocks.IMU.main": {"tf": 2}, "Blocks.MotorDriver.main": {"tf": 2.449489742783178}, "Blocks.PID.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 2.6457513110645907}}, "df": 5}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {"Blocks.Camera.main": {"tf": 1.4142135623730951}, "Blocks.VideoStreamer.main": {"tf": 1.7320508075688772}}, "df": 2, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {"Blocks.Cropper.main": {"tf": 1}, "Blocks.EdgeDetector.main": {"tf": 1.4142135623730951}, "Blocks.ROSCamera.main": {"tf": 1}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 4}}}, "h": {"docs": {"Blocks.Cropper.main": {"tf": 1.4142135623730951}}, "df": 1, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"Blocks": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "$": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}, "s": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"Blocks.ColorFilter.main": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 3}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"Blocks": {"tf": 2}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.IMU.callback": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {"Blocks": {"tf": 1}}, "df": 1}, "v": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"Blocks.IMU.main": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.PID.main": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"Blocks": {"tf": 1}, "Blocks.Blur.main": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"Blocks.Blur.main": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ColorFilter.main": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}, "Blocks.ROSCamera.main": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.ContourDetector.main": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.FaceDetector.main": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.VideoStreamer.main": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.MotorDriver.main": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"Blocks.Teleoperator.main": {"tf": 1}}, "df": 1}}}}}}}}}, "x": {"docs": {"Blocks": {"tf": 1}, "Blocks.ContourDetector.main": {"tf": 1}, "Blocks.Cropper.main": {"tf": 2}, "Blocks.IMU.main": {"tf": 1}, "Blocks.MotorDriver.main": {"tf": 1}, "Blocks.Odometer.main": {"tf": 1.4142135623730951}, "Blocks.Teleoperator.main": {"tf": 1}}, "df": 7}, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"Blocks": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"Blocks.Dilation.main": {"tf": 1.4142135623730951}, "Blocks.Erosion.main": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "p": {"docs": {"Blocks.PID.main": {"tf": 1.4142135623730951}}, "df": 1}, "i": {"docs": {"Blocks.PID.main": {"tf": 1.4142135623730951}}, "df": 1}, "d": {"docs": {"Blocks.PID.main": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + + // mirrored in build-search-index.js (part 1) + // Also split on html tags. this is a cheap heuristic, but good enough. + elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); + + let searchIndex; + if (docs._isPrebuiltIndex) { + console.info("using precompiled search index"); + searchIndex = elasticlunr.Index.load(docs); + } else { + console.time("building search index"); + // mirrored in build-search-index.js (part 2) + searchIndex = elasticlunr(function () { + this.pipeline.remove(elasticlunr.stemmer); + this.pipeline.remove(elasticlunr.stopWordFilter); + this.addField("qualname"); + this.addField("fullname"); + this.addField("annotation"); + this.addField("default_value"); + this.addField("signature"); + this.addField("bases"); + this.addField("doc"); + this.setRef("fullname"); + }); + for (let doc of docs) { + searchIndex.addDoc(doc); + } + console.timeEnd("building search index"); + } + + return (term) => searchIndex.search(term, { + fields: { + qualname: {boost: 4}, + fullname: {boost: 2}, + annotation: {boost: 2}, + default_value: {boost: 2}, + signature: {boost: 2}, + bases: {boost: 2}, + doc: {boost: 1}, + }, + expand: true + }); +})(); \ No newline at end of file diff --git a/frontend/src/components/blocks/basic/code/code-widget.tsx b/frontend/src/components/blocks/basic/code/code-widget.tsx index 9382950b..340d4e86 100644 --- a/frontend/src/components/blocks/basic/code/code-widget.tsx +++ b/frontend/src/components/blocks/basic/code/code-widget.tsx @@ -201,7 +201,7 @@ export class CodeBlockWidget extends React.Component = (event) => { const element = event.target as HTMLDivElement; - this.props.node.setSize(element.clientWidth, element.clientHeight); + this.props.node.setSize(Math.max(element.clientWidth, 300), Math.max(element.clientHeight, 300)); }