From 4d622c52919bccc75d4d62677e68871bf188a431 Mon Sep 17 00:00:00 2001 From: Mario Voigt Date: Fri, 23 Jul 2021 02:36:56 +0200 Subject: [PATCH] . --- .github/FUNDING.yml | 12 + .gitignore | 13 + LICENSE | 674 + README.md | 70 + .../000_about_fablabchemnitz.svg | 110 + extensions/fablabchemnitz/000_validate.sh | 63 + .../about_upgrade_mightyscape.inx | 43 + .../about_upgrade_mightyscape.py | 160 + .../affine_spirals/affine_spirals.inx | 23 + .../affine_spirals/affine_spirals.py | 96 + .../ai_compatible_eps_output.inx | 14 + .../ai_compatible_eps_output.py | 1183 + .../animate_order/animate_order.inx | 64 + .../animate_order/animate_order.py | 108 + .../animate_order/vivus-0.4.6/.eslintrc.json | 37 + .../vivus-0.4.6/.github/ISSUE_TEMPLATE.md | 16 + .../animate_order/vivus-0.4.6/.gitignore | 6 + .../animate_order/vivus-0.4.6/.npmignore | 5 + .../animate_order/vivus-0.4.6/.travis.yml | 8 + .../animate_order/vivus-0.4.6/CONTRIBUTING.md | 7 + .../animate_order/vivus-0.4.6/LICENSE | 20 + .../vivus-0.4.6/assets/delayed.png | Bin 0 -> 4362 bytes .../vivus-0.4.6/assets/oneByOne.png | Bin 0 -> 3913 bytes .../vivus-0.4.6/assets/script_custom.png | Bin 0 -> 4640 bytes .../vivus-0.4.6/assets/script_default.png | Bin 0 -> 3979 bytes .../animate_order/vivus-0.4.6/assets/sync.png | Bin 0 -> 3842 bytes .../vivus-0.4.6/assets/timelines.svg | 95 + .../animate_order/vivus-0.4.6/bower.json | 16 + .../animate_order/vivus-0.4.6/dist/vivus.js | 1222 + .../vivus-0.4.6/dist/vivus.min.js | 1 + .../animate_order/vivus-0.4.6/hacks.md | 30 + .../animate_order/vivus-0.4.6/index.html | 517 + .../vivus-0.4.6/package-lock.json | 4325 + .../animate_order/vivus-0.4.6/package.json | 35 + .../animate_order/vivus-0.4.6/readme.md | 352 + .../animate_order/vivus-0.4.6/src/_build.js | 36 + .../vivus-0.4.6/src/pathformer.js | 276 + .../animate_order/vivus-0.4.6/src/vivus.js | 917 + .../vivus-0.4.6/test/karma.conf.js | 75 + .../vivus-0.4.6/test/manual/hi-there.svg | 30 + .../vivus-0.4.6/test/manual/index.html | 425 + .../vivus-0.4.6/test/manual/obturateur.svg | 17 + .../vivus-0.4.6/test/manual/polaroid.svg | 62 + .../vivus-0.4.6/test/manual/synth.svg | 158 + .../vivus-0.4.6/test/unit.setup.js | 14 + .../vivus-0.4.6/test/unit/pathformer.spec.js | 322 + .../vivus-0.4.6/test/unit/vivus.spec.js | 669 + .../another_perspective.inx | 16 + .../another_perspective.py | 312 + .../apollonian_gasket/apollon.py | 194 + .../apollonian_gasket/apollonian_gasket.inx | 34 + .../apollonian_gasket/apollonian_gasket.py | 101 + .../apolloniangasket_func.py | 112 + .../apply_transformations.inx | 16 + .../apply_transformations.py | 206 + .../archimedes_spiral/archimedes_spiral.inx | 55 + .../archimedes_spiral/archimedes_spiral.py | 89 + .../barrel_distorsion/barrel_distorsion.inx | 17 + .../barrel_distorsion/barrel_distorsion.py | 100 + .../batch_task/BaseExtension.py | 195 + .../fablabchemnitz/batch_task/batch_task.inx | 177 + .../fablabchemnitz/batch_task/batch_task.py | 152 + .../bezier_envelope/bezier_envelope.inx | 16 + .../bezier_envelope/bezier_envelope.py | 399 + extensions/fablabchemnitz/blobs/blobs.inx | 32 + extensions/fablabchemnitz/blobs/blobs.py | 169 + .../blueprint_maker/blueprint_maker.inx | 29 + .../blueprint_maker/blueprint_maker.py | 117 + .../circular_ground_from_template.inx | 54 + .../circular_ground_from_template.py | 434 + .../bobbinlace/ground_from_template.inx | 60 + .../bobbinlace/ground_from_template.py | 172 + .../fablabchemnitz/bobbinlace/polar_grid.inx | 71 + .../fablabchemnitz/bobbinlace/polar_grid.py | 184 + .../bobbinlace/regular_grid.inx | 60 + .../fablabchemnitz/bobbinlace/regular_grid.py | 107 + .../bobbinlace/templates/1x1_1.png | Bin 0 -> 2844 bytes .../bobbinlace/templates/1x1_1.txt | 2 + .../bobbinlace/templates/2x1_2.png | Bin 0 -> 4403 bytes .../bobbinlace/templates/2x1_2.txt | 3 + .../bobbinlace/templates/2x2_2.png | Bin 0 -> 6823 bytes .../bobbinlace/templates/2x2_2.txt | 3 + .../bobbinlace/templates/2x2_5.png | Bin 0 -> 5887 bytes .../bobbinlace/templates/2x2_5.txt | 3 + .../bobbinlace/templates/2x4_1.png | Bin 0 -> 11067 bytes .../bobbinlace/templates/2x4_1.txt | 3 + .../bobbinlace/templates/2x4_10.png | Bin 0 -> 9301 bytes .../bobbinlace/templates/2x4_10.txt | 3 + .../bobbinlace/templates/2x4_11.png | Bin 0 -> 10517 bytes .../bobbinlace/templates/2x4_11.txt | 3 + .../bobbinlace/templates/2x4_4.png | Bin 0 -> 11896 bytes .../bobbinlace/templates/2x4_4.txt | 3 + .../bobbinlace/templates/2x4_7.png | Bin 0 -> 9584 bytes .../bobbinlace/templates/2x4_7.txt | 3 + .../bobbinlace/templates/2x4_8.png | Bin 0 -> 9568 bytes .../bobbinlace/templates/2x4_8.txt | 3 + .../bobbinlace/templates/3x3_1.png | Bin 0 -> 15240 bytes .../bobbinlace/templates/3x3_1.txt | 4 + .../bobbinlace/templates/3x3_3.png | Bin 0 -> 8992 bytes .../bobbinlace/templates/3x3_3.txt | 3 + .../bobbinlace/templates/4x4_10.png | Bin 0 -> 20278 bytes .../bobbinlace/templates/4x4_10.txt | 5 + .../bobbinlace/templates/4x4_100.png | Bin 0 -> 15619 bytes .../bobbinlace/templates/4x4_100.txt | 5 + .../bobbinlace/templates/4x4_101.png | Bin 0 -> 16410 bytes .../bobbinlace/templates/4x4_101.txt | 5 + .../bobbinlace/templates/4x4_102.png | Bin 0 -> 16575 bytes .../bobbinlace/templates/4x4_102.txt | 5 + .../bobbinlace/templates/4x4_103.png | Bin 0 -> 15937 bytes .../bobbinlace/templates/4x4_103.txt | 5 + .../bobbinlace/templates/4x4_104.png | Bin 0 -> 15410 bytes .../bobbinlace/templates/4x4_104.txt | 5 + .../bobbinlace/templates/4x4_105.png | Bin 0 -> 15799 bytes .../bobbinlace/templates/4x4_105.txt | 5 + .../bobbinlace/templates/4x4_106.png | Bin 0 -> 15761 bytes .../bobbinlace/templates/4x4_106.txt | 5 + .../bobbinlace/templates/4x4_107.png | Bin 0 -> 15504 bytes .../bobbinlace/templates/4x4_107.txt | 5 + .../bobbinlace/templates/4x4_108.png | Bin 0 -> 13966 bytes .../bobbinlace/templates/4x4_108.txt | 5 + .../bobbinlace/templates/4x4_109.png | Bin 0 -> 15416 bytes .../bobbinlace/templates/4x4_109.txt | 5 + .../bobbinlace/templates/4x4_11.png | Bin 0 -> 20986 bytes .../bobbinlace/templates/4x4_11.txt | 5 + .../bobbinlace/templates/4x4_110.png | Bin 0 -> 16747 bytes .../bobbinlace/templates/4x4_110.txt | 5 + .../bobbinlace/templates/4x4_111.png | Bin 0 -> 15757 bytes .../bobbinlace/templates/4x4_111.txt | 5 + .../bobbinlace/templates/4x4_112.png | Bin 0 -> 14814 bytes .../bobbinlace/templates/4x4_112.txt | 5 + .../bobbinlace/templates/4x4_113.png | Bin 0 -> 14752 bytes .../bobbinlace/templates/4x4_113.txt | 5 + .../bobbinlace/templates/4x4_114.png | Bin 0 -> 15544 bytes .../bobbinlace/templates/4x4_114.txt | 5 + .../bobbinlace/templates/4x4_115.png | Bin 0 -> 16139 bytes .../bobbinlace/templates/4x4_115.txt | 5 + .../bobbinlace/templates/4x4_116.png | Bin 0 -> 14809 bytes .../bobbinlace/templates/4x4_116.txt | 5 + .../bobbinlace/templates/4x4_117.png | Bin 0 -> 14277 bytes .../bobbinlace/templates/4x4_117.txt | 5 + .../bobbinlace/templates/4x4_118.png | Bin 0 -> 14581 bytes .../bobbinlace/templates/4x4_118.txt | 5 + .../bobbinlace/templates/4x4_119.png | Bin 0 -> 14871 bytes .../bobbinlace/templates/4x4_119.txt | 5 + .../bobbinlace/templates/4x4_12.png | Bin 0 -> 15772 bytes .../bobbinlace/templates/4x4_12.txt | 5 + .../bobbinlace/templates/4x4_120.png | Bin 0 -> 15297 bytes .../bobbinlace/templates/4x4_120.txt | 5 + .../bobbinlace/templates/4x4_121.png | Bin 0 -> 14794 bytes .../bobbinlace/templates/4x4_121.txt | 5 + .../bobbinlace/templates/4x4_122.png | Bin 0 -> 12941 bytes .../bobbinlace/templates/4x4_122.txt | 4 + .../bobbinlace/templates/4x4_124.png | Bin 0 -> 12946 bytes .../bobbinlace/templates/4x4_124.txt | 5 + .../bobbinlace/templates/4x4_126.png | Bin 0 -> 13897 bytes .../bobbinlace/templates/4x4_126.txt | 5 + .../bobbinlace/templates/4x4_127.png | Bin 0 -> 14514 bytes .../bobbinlace/templates/4x4_127.txt | 5 + .../bobbinlace/templates/4x4_128.png | Bin 0 -> 15756 bytes .../bobbinlace/templates/4x4_128.txt | 5 + .../bobbinlace/templates/4x4_129.png | Bin 0 -> 14503 bytes .../bobbinlace/templates/4x4_129.txt | 5 + .../bobbinlace/templates/4x4_13.png | Bin 0 -> 18199 bytes .../bobbinlace/templates/4x4_13.txt | 5 + .../bobbinlace/templates/4x4_130.png | Bin 0 -> 14369 bytes .../bobbinlace/templates/4x4_130.txt | 5 + .../bobbinlace/templates/4x4_131.png | Bin 0 -> 13836 bytes .../bobbinlace/templates/4x4_131.txt | 5 + .../bobbinlace/templates/4x4_132.png | Bin 0 -> 16431 bytes .../bobbinlace/templates/4x4_132.txt | 5 + .../bobbinlace/templates/4x4_133.png | Bin 0 -> 13831 bytes .../bobbinlace/templates/4x4_133.txt | 5 + .../bobbinlace/templates/4x4_134.png | Bin 0 -> 14064 bytes .../bobbinlace/templates/4x4_134.txt | 5 + .../bobbinlace/templates/4x4_135.png | Bin 0 -> 12554 bytes .../bobbinlace/templates/4x4_135.txt | 4 + .../bobbinlace/templates/4x4_136.png | Bin 0 -> 14580 bytes .../bobbinlace/templates/4x4_136.txt | 5 + .../bobbinlace/templates/4x4_137.png | Bin 0 -> 15457 bytes .../bobbinlace/templates/4x4_137.txt | 5 + .../bobbinlace/templates/4x4_138.png | Bin 0 -> 16846 bytes .../bobbinlace/templates/4x4_138.txt | 5 + .../bobbinlace/templates/4x4_139.png | Bin 0 -> 16673 bytes .../bobbinlace/templates/4x4_139.txt | 5 + .../bobbinlace/templates/4x4_14.png | Bin 0 -> 16426 bytes .../bobbinlace/templates/4x4_14.txt | 5 + .../bobbinlace/templates/4x4_140.png | Bin 0 -> 14472 bytes .../bobbinlace/templates/4x4_140.txt | 5 + .../bobbinlace/templates/4x4_142.png | Bin 0 -> 15267 bytes .../bobbinlace/templates/4x4_142.txt | 5 + .../bobbinlace/templates/4x4_143.png | Bin 0 -> 16770 bytes .../bobbinlace/templates/4x4_143.txt | 5 + .../bobbinlace/templates/4x4_144.png | Bin 0 -> 16171 bytes .../bobbinlace/templates/4x4_144.txt | 5 + .../bobbinlace/templates/4x4_145.png | Bin 0 -> 15606 bytes .../bobbinlace/templates/4x4_145.txt | 5 + .../bobbinlace/templates/4x4_146.png | Bin 0 -> 15532 bytes .../bobbinlace/templates/4x4_146.txt | 5 + .../bobbinlace/templates/4x4_147.png | Bin 0 -> 16020 bytes .../bobbinlace/templates/4x4_147.txt | 5 + .../bobbinlace/templates/4x4_148.png | Bin 0 -> 16959 bytes .../bobbinlace/templates/4x4_148.txt | 5 + .../bobbinlace/templates/4x4_149.png | Bin 0 -> 15912 bytes .../bobbinlace/templates/4x4_149.txt | 5 + .../bobbinlace/templates/4x4_15.png | Bin 0 -> 18801 bytes .../bobbinlace/templates/4x4_15.txt | 5 + .../bobbinlace/templates/4x4_150.png | Bin 0 -> 18130 bytes .../bobbinlace/templates/4x4_150.txt | 5 + .../bobbinlace/templates/4x4_151.png | Bin 0 -> 17920 bytes .../bobbinlace/templates/4x4_151.txt | 5 + .../bobbinlace/templates/4x4_152.png | Bin 0 -> 16376 bytes .../bobbinlace/templates/4x4_152.txt | 5 + .../bobbinlace/templates/4x4_153.png | Bin 0 -> 17543 bytes .../bobbinlace/templates/4x4_153.txt | 5 + .../bobbinlace/templates/4x4_154.png | Bin 0 -> 17478 bytes .../bobbinlace/templates/4x4_154.txt | 5 + .../bobbinlace/templates/4x4_155.png | Bin 0 -> 15337 bytes .../bobbinlace/templates/4x4_155.txt | 5 + .../bobbinlace/templates/4x4_156.png | Bin 0 -> 16750 bytes .../bobbinlace/templates/4x4_156.txt | 5 + .../bobbinlace/templates/4x4_157.png | Bin 0 -> 15775 bytes .../bobbinlace/templates/4x4_157.txt | 5 + .../bobbinlace/templates/4x4_158.png | Bin 0 -> 14842 bytes .../bobbinlace/templates/4x4_158.txt | 5 + .../bobbinlace/templates/4x4_159.png | Bin 0 -> 16996 bytes .../bobbinlace/templates/4x4_159.txt | 5 + .../bobbinlace/templates/4x4_161.png | Bin 0 -> 17156 bytes .../bobbinlace/templates/4x4_161.txt | 5 + .../bobbinlace/templates/4x4_162.png | Bin 0 -> 17458 bytes .../bobbinlace/templates/4x4_162.txt | 5 + .../bobbinlace/templates/4x4_163.png | Bin 0 -> 15601 bytes .../bobbinlace/templates/4x4_163.txt | 5 + .../bobbinlace/templates/4x4_164.png | Bin 0 -> 16977 bytes .../bobbinlace/templates/4x4_164.txt | 5 + .../bobbinlace/templates/4x4_165.png | Bin 0 -> 15759 bytes .../bobbinlace/templates/4x4_165.txt | 5 + .../bobbinlace/templates/4x4_166.png | Bin 0 -> 16315 bytes .../bobbinlace/templates/4x4_166.txt | 5 + .../bobbinlace/templates/4x4_167.png | Bin 0 -> 16115 bytes .../bobbinlace/templates/4x4_167.txt | 5 + .../bobbinlace/templates/4x4_168.png | Bin 0 -> 16570 bytes .../bobbinlace/templates/4x4_168.txt | 5 + .../bobbinlace/templates/4x4_169.png | Bin 0 -> 17784 bytes .../bobbinlace/templates/4x4_169.txt | 5 + .../bobbinlace/templates/4x4_17.png | Bin 0 -> 20304 bytes .../bobbinlace/templates/4x4_17.txt | 5 + .../bobbinlace/templates/4x4_170.png | Bin 0 -> 18050 bytes .../bobbinlace/templates/4x4_170.txt | 5 + .../bobbinlace/templates/4x4_171.png | Bin 0 -> 17490 bytes .../bobbinlace/templates/4x4_171.txt | 5 + .../bobbinlace/templates/4x4_172.png | Bin 0 -> 16209 bytes .../bobbinlace/templates/4x4_172.txt | 5 + .../bobbinlace/templates/4x4_173.png | Bin 0 -> 16807 bytes .../bobbinlace/templates/4x4_173.txt | 5 + .../bobbinlace/templates/4x4_174.png | Bin 0 -> 15516 bytes .../bobbinlace/templates/4x4_174.txt | 5 + .../bobbinlace/templates/4x4_175.png | Bin 0 -> 15877 bytes .../bobbinlace/templates/4x4_175.txt | 5 + .../bobbinlace/templates/4x4_176.png | Bin 0 -> 16920 bytes .../bobbinlace/templates/4x4_176.txt | 5 + .../bobbinlace/templates/4x4_177.png | Bin 0 -> 16155 bytes .../bobbinlace/templates/4x4_177.txt | 5 + .../bobbinlace/templates/4x4_178.png | Bin 0 -> 16885 bytes .../bobbinlace/templates/4x4_178.txt | 5 + .../bobbinlace/templates/4x4_179.png | Bin 0 -> 16753 bytes .../bobbinlace/templates/4x4_179.txt | 5 + .../bobbinlace/templates/4x4_18.png | Bin 0 -> 19779 bytes .../bobbinlace/templates/4x4_18.txt | 5 + .../bobbinlace/templates/4x4_180.png | Bin 0 -> 16902 bytes .../bobbinlace/templates/4x4_180.txt | 5 + .../bobbinlace/templates/4x4_181.png | Bin 0 -> 17083 bytes .../bobbinlace/templates/4x4_181.txt | 5 + .../bobbinlace/templates/4x4_182.png | Bin 0 -> 17458 bytes .../bobbinlace/templates/4x4_182.txt | 5 + .../bobbinlace/templates/4x4_183.png | Bin 0 -> 17401 bytes .../bobbinlace/templates/4x4_183.txt | 5 + .../bobbinlace/templates/4x4_184.png | Bin 0 -> 17798 bytes .../bobbinlace/templates/4x4_184.txt | 5 + .../bobbinlace/templates/4x4_185.png | Bin 0 -> 17107 bytes .../bobbinlace/templates/4x4_185.txt | 5 + .../bobbinlace/templates/4x4_186.png | Bin 0 -> 16229 bytes .../bobbinlace/templates/4x4_186.txt | 5 + .../bobbinlace/templates/4x4_187.png | Bin 0 -> 16068 bytes .../bobbinlace/templates/4x4_187.txt | 5 + .../bobbinlace/templates/4x4_188.png | Bin 0 -> 18071 bytes .../bobbinlace/templates/4x4_188.txt | 5 + .../bobbinlace/templates/4x4_189.png | Bin 0 -> 17846 bytes .../bobbinlace/templates/4x4_189.txt | 5 + .../bobbinlace/templates/4x4_19.png | Bin 0 -> 21239 bytes .../bobbinlace/templates/4x4_19.txt | 5 + .../bobbinlace/templates/4x4_190.png | Bin 0 -> 17013 bytes .../bobbinlace/templates/4x4_190.txt | 5 + .../bobbinlace/templates/4x4_191.png | Bin 0 -> 17900 bytes .../bobbinlace/templates/4x4_191.txt | 5 + .../bobbinlace/templates/4x4_192.png | Bin 0 -> 18403 bytes .../bobbinlace/templates/4x4_192.txt | 5 + .../bobbinlace/templates/4x4_193.png | Bin 0 -> 19353 bytes .../bobbinlace/templates/4x4_193.txt | 5 + .../bobbinlace/templates/4x4_194.png | Bin 0 -> 19095 bytes .../bobbinlace/templates/4x4_194.txt | 5 + .../bobbinlace/templates/4x4_195.png | Bin 0 -> 18337 bytes .../bobbinlace/templates/4x4_195.txt | 5 + .../bobbinlace/templates/4x4_196.png | Bin 0 -> 18401 bytes .../bobbinlace/templates/4x4_196.txt | 5 + .../bobbinlace/templates/4x4_197.png | Bin 0 -> 17513 bytes .../bobbinlace/templates/4x4_197.txt | 5 + .../bobbinlace/templates/4x4_198.png | Bin 0 -> 19153 bytes .../bobbinlace/templates/4x4_198.txt | 5 + .../bobbinlace/templates/4x4_199.png | Bin 0 -> 17368 bytes .../bobbinlace/templates/4x4_199.txt | 5 + .../bobbinlace/templates/4x4_2.png | Bin 0 -> 18285 bytes .../bobbinlace/templates/4x4_2.txt | 5 + .../bobbinlace/templates/4x4_20.png | Bin 0 -> 20647 bytes .../bobbinlace/templates/4x4_20.txt | 5 + .../bobbinlace/templates/4x4_200.png | Bin 0 -> 18664 bytes .../bobbinlace/templates/4x4_200.txt | 5 + .../bobbinlace/templates/4x4_201.png | Bin 0 -> 18601 bytes .../bobbinlace/templates/4x4_201.txt | 5 + .../bobbinlace/templates/4x4_202.png | Bin 0 -> 18209 bytes .../bobbinlace/templates/4x4_202.txt | 5 + .../bobbinlace/templates/4x4_203.png | Bin 0 -> 17951 bytes .../bobbinlace/templates/4x4_203.txt | 5 + .../bobbinlace/templates/4x4_204.png | Bin 0 -> 16655 bytes .../bobbinlace/templates/4x4_204.txt | 5 + .../bobbinlace/templates/4x4_205.png | Bin 0 -> 17413 bytes .../bobbinlace/templates/4x4_205.txt | 5 + .../bobbinlace/templates/4x4_206.png | Bin 0 -> 18080 bytes .../bobbinlace/templates/4x4_206.txt | 5 + .../bobbinlace/templates/4x4_207.png | Bin 0 -> 18840 bytes .../bobbinlace/templates/4x4_207.txt | 5 + .../bobbinlace/templates/4x4_208.png | Bin 0 -> 16825 bytes .../bobbinlace/templates/4x4_208.txt | 5 + .../bobbinlace/templates/4x4_209.png | Bin 0 -> 16754 bytes .../bobbinlace/templates/4x4_209.txt | 5 + .../bobbinlace/templates/4x4_21.png | Bin 0 -> 20848 bytes .../bobbinlace/templates/4x4_21.txt | 5 + .../bobbinlace/templates/4x4_210.png | Bin 0 -> 18545 bytes .../bobbinlace/templates/4x4_210.txt | 5 + .../bobbinlace/templates/4x4_211.png | Bin 0 -> 17861 bytes .../bobbinlace/templates/4x4_211.txt | 5 + .../bobbinlace/templates/4x4_212.png | Bin 0 -> 17052 bytes .../bobbinlace/templates/4x4_212.txt | 5 + .../bobbinlace/templates/4x4_213.png | Bin 0 -> 15264 bytes .../bobbinlace/templates/4x4_213.txt | 5 + .../bobbinlace/templates/4x4_214.png | Bin 0 -> 18059 bytes .../bobbinlace/templates/4x4_214.txt | 5 + .../bobbinlace/templates/4x4_215.png | Bin 0 -> 12175 bytes .../bobbinlace/templates/4x4_215.txt | 5 + .../bobbinlace/templates/4x4_217.png | Bin 0 -> 14819 bytes .../bobbinlace/templates/4x4_217.txt | 5 + .../bobbinlace/templates/4x4_219.png | Bin 0 -> 14825 bytes .../bobbinlace/templates/4x4_219.txt | 5 + .../bobbinlace/templates/4x4_22.png | Bin 0 -> 20486 bytes .../bobbinlace/templates/4x4_22.txt | 5 + .../bobbinlace/templates/4x4_220.png | Bin 0 -> 16068 bytes .../bobbinlace/templates/4x4_220.txt | 5 + .../bobbinlace/templates/4x4_221.png | Bin 0 -> 12705 bytes .../bobbinlace/templates/4x4_221.txt | 5 + .../bobbinlace/templates/4x4_23.png | Bin 0 -> 20139 bytes .../bobbinlace/templates/4x4_23.txt | 5 + .../bobbinlace/templates/4x4_24.png | Bin 0 -> 18876 bytes .../bobbinlace/templates/4x4_24.txt | 5 + .../bobbinlace/templates/4x4_25.png | Bin 0 -> 20822 bytes .../bobbinlace/templates/4x4_25.txt | 5 + .../bobbinlace/templates/4x4_26.png | Bin 0 -> 20509 bytes .../bobbinlace/templates/4x4_26.txt | 5 + .../bobbinlace/templates/4x4_27.png | Bin 0 -> 20539 bytes .../bobbinlace/templates/4x4_27.txt | 5 + .../bobbinlace/templates/4x4_28.png | Bin 0 -> 19794 bytes .../bobbinlace/templates/4x4_28.txt | 5 + .../bobbinlace/templates/4x4_29.png | Bin 0 -> 18992 bytes .../bobbinlace/templates/4x4_29.txt | 5 + .../bobbinlace/templates/4x4_30.png | Bin 0 -> 20670 bytes .../bobbinlace/templates/4x4_30.txt | 5 + .../bobbinlace/templates/4x4_31.png | Bin 0 -> 19940 bytes .../bobbinlace/templates/4x4_31.txt | 5 + .../bobbinlace/templates/4x4_32.png | Bin 0 -> 20720 bytes .../bobbinlace/templates/4x4_32.txt | 5 + .../bobbinlace/templates/4x4_33.png | Bin 0 -> 18592 bytes .../bobbinlace/templates/4x4_33.txt | 5 + .../bobbinlace/templates/4x4_34.png | Bin 0 -> 19628 bytes .../bobbinlace/templates/4x4_34.txt | 5 + .../bobbinlace/templates/4x4_35.png | Bin 0 -> 20799 bytes .../bobbinlace/templates/4x4_35.txt | 5 + .../bobbinlace/templates/4x4_37.png | Bin 0 -> 17370 bytes .../bobbinlace/templates/4x4_37.txt | 5 + .../bobbinlace/templates/4x4_38.png | Bin 0 -> 18746 bytes .../bobbinlace/templates/4x4_38.txt | 5 + .../bobbinlace/templates/4x4_39.png | Bin 0 -> 18400 bytes .../bobbinlace/templates/4x4_39.txt | 5 + .../bobbinlace/templates/4x4_4.png | Bin 0 -> 19335 bytes .../bobbinlace/templates/4x4_4.txt | 5 + .../bobbinlace/templates/4x4_40.png | Bin 0 -> 18060 bytes .../bobbinlace/templates/4x4_40.txt | 5 + .../bobbinlace/templates/4x4_41.png | Bin 0 -> 21684 bytes .../bobbinlace/templates/4x4_41.txt | 5 + .../bobbinlace/templates/4x4_42.png | Bin 0 -> 21347 bytes .../bobbinlace/templates/4x4_42.txt | 5 + .../bobbinlace/templates/4x4_43.png | Bin 0 -> 16044 bytes .../bobbinlace/templates/4x4_43.txt | 5 + .../bobbinlace/templates/4x4_44.png | Bin 0 -> 17935 bytes .../bobbinlace/templates/4x4_44.txt | 5 + .../bobbinlace/templates/4x4_45.png | Bin 0 -> 20633 bytes .../bobbinlace/templates/4x4_45.txt | 5 + .../bobbinlace/templates/4x4_46.png | Bin 0 -> 17769 bytes .../bobbinlace/templates/4x4_46.txt | 5 + .../bobbinlace/templates/4x4_47.png | Bin 0 -> 16969 bytes .../bobbinlace/templates/4x4_47.txt | 5 + .../bobbinlace/templates/4x4_48.png | Bin 0 -> 16105 bytes .../bobbinlace/templates/4x4_48.txt | 5 + .../bobbinlace/templates/4x4_49.png | Bin 0 -> 18697 bytes .../bobbinlace/templates/4x4_49.txt | 5 + .../bobbinlace/templates/4x4_5.png | Bin 0 -> 18451 bytes .../bobbinlace/templates/4x4_5.txt | 5 + .../bobbinlace/templates/4x4_50.png | Bin 0 -> 17173 bytes .../bobbinlace/templates/4x4_50.txt | 5 + .../bobbinlace/templates/4x4_51.png | Bin 0 -> 16846 bytes .../bobbinlace/templates/4x4_51.txt | 5 + .../bobbinlace/templates/4x4_52.png | Bin 0 -> 16428 bytes .../bobbinlace/templates/4x4_52.txt | 5 + .../bobbinlace/templates/4x4_53.png | Bin 0 -> 18552 bytes .../bobbinlace/templates/4x4_53.txt | 5 + .../bobbinlace/templates/4x4_54.png | Bin 0 -> 18024 bytes .../bobbinlace/templates/4x4_54.txt | 5 + .../bobbinlace/templates/4x4_55.png | Bin 0 -> 19398 bytes .../bobbinlace/templates/4x4_55.txt | 5 + .../bobbinlace/templates/4x4_56.png | Bin 0 -> 18821 bytes .../bobbinlace/templates/4x4_56.txt | 5 + .../bobbinlace/templates/4x4_57.png | Bin 0 -> 19058 bytes .../bobbinlace/templates/4x4_57.txt | 5 + .../bobbinlace/templates/4x4_58.png | Bin 0 -> 18750 bytes .../bobbinlace/templates/4x4_58.txt | 5 + .../bobbinlace/templates/4x4_59.png | Bin 0 -> 17818 bytes .../bobbinlace/templates/4x4_59.txt | 5 + .../bobbinlace/templates/4x4_6.png | Bin 0 -> 19406 bytes .../bobbinlace/templates/4x4_6.txt | 5 + .../bobbinlace/templates/4x4_60.png | Bin 0 -> 16549 bytes .../bobbinlace/templates/4x4_60.txt | 5 + .../bobbinlace/templates/4x4_61.png | Bin 0 -> 18459 bytes .../bobbinlace/templates/4x4_61.txt | 5 + .../bobbinlace/templates/4x4_63.png | Bin 0 -> 18268 bytes .../bobbinlace/templates/4x4_63.txt | 5 + .../bobbinlace/templates/4x4_64.png | Bin 0 -> 17439 bytes .../bobbinlace/templates/4x4_64.txt | 5 + .../bobbinlace/templates/4x4_65.png | Bin 0 -> 16589 bytes .../bobbinlace/templates/4x4_65.txt | 5 + .../bobbinlace/templates/4x4_66.png | Bin 0 -> 19348 bytes .../bobbinlace/templates/4x4_66.txt | 5 + .../bobbinlace/templates/4x4_67.png | Bin 0 -> 18854 bytes .../bobbinlace/templates/4x4_67.txt | 5 + .../bobbinlace/templates/4x4_68.png | Bin 0 -> 18179 bytes .../bobbinlace/templates/4x4_68.txt | 5 + .../bobbinlace/templates/4x4_7.png | Bin 0 -> 20330 bytes .../bobbinlace/templates/4x4_7.txt | 5 + .../bobbinlace/templates/4x4_70.png | Bin 0 -> 17340 bytes .../bobbinlace/templates/4x4_70.txt | 5 + .../bobbinlace/templates/4x4_71.png | Bin 0 -> 17349 bytes .../bobbinlace/templates/4x4_71.txt | 5 + .../bobbinlace/templates/4x4_72.png | Bin 0 -> 17482 bytes .../bobbinlace/templates/4x4_72.txt | 5 + .../bobbinlace/templates/4x4_73.png | Bin 0 -> 17127 bytes .../bobbinlace/templates/4x4_73.txt | 5 + .../bobbinlace/templates/4x4_74.png | Bin 0 -> 17447 bytes .../bobbinlace/templates/4x4_74.txt | 5 + .../bobbinlace/templates/4x4_75.png | Bin 0 -> 17617 bytes .../bobbinlace/templates/4x4_75.txt | 5 + .../bobbinlace/templates/4x4_76.png | Bin 0 -> 17046 bytes .../bobbinlace/templates/4x4_76.txt | 5 + .../bobbinlace/templates/4x4_77.png | Bin 0 -> 18090 bytes .../bobbinlace/templates/4x4_77.txt | 5 + .../bobbinlace/templates/4x4_78.png | Bin 0 -> 18687 bytes .../bobbinlace/templates/4x4_78.txt | 5 + .../bobbinlace/templates/4x4_79.png | Bin 0 -> 18221 bytes .../bobbinlace/templates/4x4_79.txt | 5 + .../bobbinlace/templates/4x4_8.png | Bin 0 -> 19614 bytes .../bobbinlace/templates/4x4_8.txt | 5 + .../bobbinlace/templates/4x4_80.png | Bin 0 -> 18069 bytes .../bobbinlace/templates/4x4_80.txt | 5 + .../bobbinlace/templates/4x4_81.png | Bin 0 -> 17651 bytes .../bobbinlace/templates/4x4_81.txt | 5 + .../bobbinlace/templates/4x4_82.png | Bin 0 -> 18850 bytes .../bobbinlace/templates/4x4_82.txt | 5 + .../bobbinlace/templates/4x4_83.png | Bin 0 -> 18926 bytes .../bobbinlace/templates/4x4_83.txt | 5 + .../bobbinlace/templates/4x4_84.png | Bin 0 -> 18581 bytes .../bobbinlace/templates/4x4_84.txt | 5 + .../bobbinlace/templates/4x4_85.png | Bin 0 -> 17297 bytes .../bobbinlace/templates/4x4_85.txt | 5 + .../bobbinlace/templates/4x4_86.png | Bin 0 -> 19309 bytes .../bobbinlace/templates/4x4_86.txt | 5 + .../bobbinlace/templates/4x4_87.png | Bin 0 -> 17493 bytes .../bobbinlace/templates/4x4_87.txt | 5 + .../bobbinlace/templates/4x4_88.png | Bin 0 -> 20060 bytes .../bobbinlace/templates/4x4_88.txt | 5 + .../bobbinlace/templates/4x4_9.png | Bin 0 -> 20672 bytes .../bobbinlace/templates/4x4_9.txt | 5 + .../bobbinlace/templates/4x4_90.png | Bin 0 -> 17574 bytes .../bobbinlace/templates/4x4_90.txt | 5 + .../bobbinlace/templates/4x4_91.png | Bin 0 -> 20323 bytes .../bobbinlace/templates/4x4_91.txt | 5 + .../bobbinlace/templates/4x4_92.png | Bin 0 -> 19966 bytes .../bobbinlace/templates/4x4_92.txt | 5 + .../bobbinlace/templates/4x4_93.png | Bin 0 -> 18012 bytes .../bobbinlace/templates/4x4_93.txt | 5 + .../bobbinlace/templates/4x4_94.png | Bin 0 -> 20292 bytes .../bobbinlace/templates/4x4_94.txt | 5 + .../bobbinlace/templates/4x4_95.png | Bin 0 -> 16335 bytes .../bobbinlace/templates/4x4_95.txt | 5 + .../bobbinlace/templates/4x4_96.png | Bin 0 -> 14623 bytes .../bobbinlace/templates/4x4_96.txt | 5 + .../bobbinlace/templates/4x4_98.png | Bin 0 -> 10835 bytes .../bobbinlace/templates/4x4_98.txt | 3 + .../bobbinlace/templates/4x4_99.png | Bin 0 -> 15708 bytes .../bobbinlace/templates/4x4_99.txt | 5 + .../bobbinlace/templates/basic.png | Bin 0 -> 4314 bytes .../bobbinlace/templates/basic.txt | 3 + .../bobbinlace/templates/bias.png | Bin 0 -> 17883 bytes .../bobbinlace/templates/bias.txt | 5 + .../bobbinlace/templates/devonshire.png | Bin 0 -> 14039 bytes .../bobbinlace/templates/devonshire.txt | 5 + .../bobbinlace/templates/kat.png | Bin 0 -> 12866 bytes .../bobbinlace/templates/kat.txt | 5 + .../bobbinlace/templates/pinwheel.png | Bin 0 -> 16764 bytes .../bobbinlace/templates/pinwheel.txt | 5 + .../bobbinlace/templates/rose.png | Bin 0 -> 17335 bytes .../bobbinlace/templates/rose.txt | 5 + .../bobbinlace/templates/rose_var1.png | Bin 0 -> 18183 bytes .../bobbinlace/templates/rose_var1.txt | 5 + .../bobbinlace/templates/rose_var2.png | Bin 0 -> 18880 bytes .../bobbinlace/templates/rose_var2.txt | 5 + .../boukamp_code/bouwkamp_code.inx | 28 + .../boukamp_code/bouwkamp_code.py | 163 + .../bounding_box/bounding_box.inx | 21 + .../bounding_box/bounding_box.py | 50 + .../box_maker_conical/box_maker_conical.inx | 34 + .../box_maker_conical/box_maker_conical.py | 353 + .../box_maker_elliptical_box.inx | 39 + .../box_maker_elliptical_box.py | 278 + .../inkscape_helper/BezierCurve.py | 92 + .../inkscape_helper/Coordinate.py | 104 + .../inkscape_helper/Effect.py | 36 + .../inkscape_helper/Ellipse.py | 157 + .../inkscape_helper/EllipticArc.py | 125 + .../inkscape_helper/Line.py | 25 + .../inkscape_helper/Matrix.py | 49 + .../inkscape_helper/PathSegment.py | 29 + .../inkscape_helper/SVG.py | 93 + .../inkscape_helper/__init__.py | 0 .../box_maker_elliptical_cone/.gitignore | 1 + .../box_maker_elliptical_cone.inx | 37 + .../box_maker_elliptical_cone.py | 703 + .../box_maker_generic_generator/.gitignore | 1 + .../box_maker_generic_generator.inx | 72 + .../box_maker_generic_generator.py | 3056 + .../inkscape_path.py | 171 + .../box_maker_lasercut_box.inx | 89 + .../box_maker_lasercut_box.py | 470 + .../box_maker_living_hinge.inx | 51 + .../box_maker_living_hinge.py | 511 + .../box_maker_mehr_boxes.inx | 74 + .../box_maker_mehr_boxes.py | 188 + .../box_maker_mehr_boxes/mehr_plate.py | 92 + .../box_maker_path_to_flex/.gitignore | 1 + .../box_maker_path_to_flex.inx | 33 + .../box_maker_path_to_flex.py | 1354 + .../boxes.py/AgricolaInsert-thumb.jpg | Bin 0 -> 10624 bytes .../boxes.py/AllEdges-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/AngledBox-thumb.jpg | Bin 0 -> 33140 bytes .../boxes.py/AngledCutJig-thumb.jpg | Bin 0 -> 16904 bytes .../fablabchemnitz/boxes.py/Arcade-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/Atreus21-thumb.jpg | Bin 0 -> 17286 bytes .../boxes.py/BasedBox-thumb.jpg | Bin 0 -> 6791 bytes .../boxes.py/BayonetBox-thumb.jpg | Bin 0 -> 7057 bytes .../fablabchemnitz/boxes.py/BinTray-thumb.jpg | Bin 0 -> 31440 bytes .../boxes.py/BottleStack-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/BurnTest-thumb.jpg | Bin 0 -> 22431 bytes .../boxes.py/CardBox-detail-thumb.jpg | Bin 0 -> 7070 bytes .../fablabchemnitz/boxes.py/CardBox-thumb.jpg | Bin 0 -> 24222 bytes .../fablabchemnitz/boxes.py/Castle-thumb.jpg | Bin 0 -> 14944 bytes .../boxes.py/ClosedBox-thumb.jpg | Bin 0 -> 25428 bytes .../boxes.py/CoffeeCapsuleHolder-thumb.jpg | Bin 0 -> 7020 bytes .../boxes.py/ConcaveKnob-thumb.jpg | Bin 0 -> 16904 bytes .../fablabchemnitz/boxes.py/Console-thumb.jpg | Bin 0 -> 7497 bytes .../Console2-backwall-detail-thumb.jpg | Bin 0 -> 17428 bytes .../boxes.py/Console2-panel-detail-thumb.jpg | Bin 0 -> 15976 bytes .../boxes.py/Console2-thumb.jpg | Bin 0 -> 16531 bytes .../boxes.py/DinRailBox-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/DiscRack-thumb.jpg | Bin 0 -> 10568 bytes .../fablabchemnitz/boxes.py/Display-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/DisplayCase-thumb.jpg | Bin 0 -> 4232 bytes .../boxes.py/DisplayShelf-thumb.jpg | Bin 0 -> 34509 bytes .../boxes.py/DividerTray-thumb.jpg | Bin 0 -> 11782 bytes .../boxes.py/DoubleFlexDoorBox-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/DrillBox-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/DrillStand-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/ElectronicsBox-thumb.jpg | Bin 0 -> 5149 bytes .../boxes.py/EuroRackSkiff-thumb.jpg | Bin 0 -> 11566 bytes .../fablabchemnitz/boxes.py/FanHole-thumb.jpg | Bin 0 -> 16904 bytes .../fablabchemnitz/boxes.py/FlexBox-thumb.jpg | Bin 0 -> 28787 bytes .../boxes.py/FlexBox2-thumb.jpg | Bin 0 -> 26574 bytes .../boxes.py/FlexBox3-thumb.jpg | Bin 0 -> 27467 bytes .../boxes.py/FlexBox4-thumb.jpg | Bin 0 -> 26835 bytes .../boxes.py/FlexBox5-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/FlexTest-thumb.jpg | Bin 0 -> 8828 bytes .../boxes.py/FlexTest2-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/Folder-2-thumb.jpg | Bin 0 -> 22941 bytes .../fablabchemnitz/boxes.py/Folder-thumb.jpg | Bin 0 -> 22650 bytes .../fablabchemnitz/boxes.py/GearBox-thumb.jpg | Bin 0 -> 16904 bytes .../fablabchemnitz/boxes.py/Gears-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/HeartBox-thumb.jpg | Bin 0 -> 6778 bytes .../boxes.py/HexHoles-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/HingeBox-thumb.jpg | Bin 0 -> 29442 bytes .../fablabchemnitz/boxes.py/Hook-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/IntegratedHingeBox-thumb.jpg | Bin 0 -> 26401 bytes .../fablabchemnitz/boxes.py/Keypad-thumb.jpg | Bin 0 -> 18066 bytes .../fablabchemnitz/boxes.py/LBeam-thumb.jpg | Bin 0 -> 6163 bytes .../boxes.py/LaserClamp-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/LaserHoldfast-thumb.jpg | Bin 0 -> 5507 bytes .../boxes.py/MagazinFile-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/MakitaPowerSupply-thumb.jpg | Bin 0 -> 38622 bytes .../boxes.py/March36539-box-thumb.jpg | Bin 0 -> 25913 bytes .../boxes.py/NemaMount-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/NemaPattern-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/NotesHolder-thumb.jpg | Bin 0 -> 5465 bytes .../fablabchemnitz/boxes.py/OpenBox-thumb.jpg | Bin 0 -> 24196 bytes .../boxes.py/OrganPipe-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/OttoBody-thumb.jpg | Bin 0 -> 16862 bytes .../boxes.py/OttoLegs-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/OttoSoles-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/PaintStorage-thumb.jpg | Bin 0 -> 8055 bytes .../boxes.py/PaperBox-thumb.jpg | Bin 0 -> 5748 bytes .../boxes.py/PhoneHolder-thumb.jpg | Bin 0 -> 6179 bytes .../boxes.py/Planetary-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/Planetary2-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/Platonic-thumb.jpg | Bin 0 -> 27413 bytes .../boxes.py/PoleHook-thumb.jpg | Bin 0 -> 16904 bytes .../fablabchemnitz/boxes.py/Pulley-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/Rack10Box-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/Rack19Box-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/Rack19HalfWidth-thumb.jpg | Bin 0 -> 16904 bytes .../fablabchemnitz/boxes.py/RackBox-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/RectangularWall-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/RegularBox-thumb.jpg | Bin 0 -> 32545 bytes .../boxes.py/RobotArm-thumb.jpg | Bin 0 -> 28559 bytes .../fablabchemnitz/boxes.py/Rotary-thumb.jpg | Bin 0 -> 8280 bytes .../boxes.py/RoundedBox-thumb.jpg | Bin 0 -> 23647 bytes .../boxes.py/RoyalGame-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/SBCMicroRack-thumb.jpg | Bin 0 -> 22493 bytes .../boxes.py/ShutterBox-thumb.jpg | Bin 0 -> 22000 bytes .../boxes.py/SideDoorHousing-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/Silverware-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/SlatwallCaliper-thumb.jpg | Bin 0 -> 37614 bytes .../boxes.py/SlatwallChiselHolder-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/SlatwallConsole-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/SlatwallDrillBox-thumb.jpg | Bin 0 -> 28277 bytes .../boxes.py/SlatwallEdges-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/SlatwallPinRow-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/SlatwallPlaneHolder-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/SlatwallPliersHolder-thumb.jpg | Bin 0 -> 37001 bytes .../boxes.py/SlatwallSlottedHolder-thumb.jpg | Bin 0 -> 29642 bytes .../boxes.py/SlatwallStairs-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/SlatwallTypeTray-thumb.jpg | Bin 0 -> 23463 bytes .../boxes.py/SlatwallWrenchHolder-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/SpicesRack-thumb.jpg | Bin 0 -> 30199 bytes .../fablabchemnitz/boxes.py/Stachel-thumb.jpg | Bin 0 -> 18846 bytes .../boxes.py/StorageRack-2-thumb.jpg | Bin 0 -> 17716 bytes .../boxes.py/StorageRack-3-thumb.jpg | Bin 0 -> 15991 bytes .../boxes.py/StorageRack-thumb.jpg | Bin 0 -> 21066 bytes .../boxes.py/StorageShelf-thumb.jpg | Bin 0 -> 9341 bytes .../boxes.py/TrafficLight-thumb.jpg | Bin 0 -> 31942 bytes .../boxes.py/TrayInsert-2-thumb.jpg | Bin 0 -> 24573 bytes .../boxes.py/TrayInsert-thumb.jpg | Bin 0 -> 27032 bytes .../boxes.py/TrayLayout-thumb.jpg | Bin 0 -> 17502 bytes .../boxes.py/TrayLayout2-thumb.jpg | Bin 0 -> 17517 bytes .../boxes.py/TriangleLamp-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/TwoPiece-thumb.jpg | Bin 0 -> 21598 bytes .../boxes.py/TypeTray-thumb.jpg | Bin 0 -> 30376 bytes .../fablabchemnitz/boxes.py/UBox-thumb.jpg | Bin 0 -> 28343 bytes .../boxes.py/UnevenHeightBox-thumb.jpg | Bin 0 -> 23257 bytes .../boxes.py/UniversalBox-thumb.jpg | Bin 0 -> 12485 bytes .../boxes.py/WaivyKnob-thumb.jpg | Bin 0 -> 16904 bytes .../boxes.py/WineRack-thumb.jpg | Bin 0 -> 10790 bytes extensions/fablabchemnitz/boxes.py/boxes.exe | Bin 0 -> 8815081 bytes .../boxes.py/boxes.py.AgricolaInsert.inx | 43 + .../boxes.py/boxes.py.AllEdges.inx | 95 + .../boxes.py/boxes.py.AngledBox.inx | 62 + .../boxes.py/boxes.py.AngledCutJig.inx | 48 + .../boxes.py/boxes.py.Arcade.inx | 48 + .../boxes.py/boxes.py.Atreus21.inx | 38 + .../boxes.py/boxes.py.BasedBox.inx | 49 + .../boxes.py/boxes.py.BayonetBox.inx | 36 + .../boxes.py/boxes.py.BinTray.inx | 50 + .../boxes.py/boxes.py.BottleStack.inx | 36 + .../boxes.py/boxes.py.BurnTest.inx | 48 + .../boxes.py/boxes.py.CardBox.inx | 49 + .../boxes.py/boxes.py.Castle.inx | 43 + .../boxes.py/boxes.py.ClosedBox.inx | 49 + .../boxes.py/boxes.py.CoffeeCapsuleHolder.inx | 35 + .../boxes.py/boxes.py.ConcaveKnob.inx | 39 + .../boxes.py/boxes.py.Console.inx | 57 + .../boxes.py/boxes.py.Console2.inx | 66 + .../boxes.py/boxes.py.DinRailBox.inx | 50 + .../boxes.py/boxes.py.DiscRack.inx | 52 + .../boxes.py/boxes.py.Display.inx | 36 + .../boxes.py/boxes.py.DisplayCase.inx | 50 + .../boxes.py/boxes.py.DisplayShelf.inx | 52 + .../boxes.py/boxes.py.DividerTray.inx | 60 + .../boxes.py/boxes.py.DoubleFlexDoorBox.inx | 57 + .../boxes.py/boxes.py.DrillBox.inx | 43 + .../boxes.py/boxes.py.DrillStand.inx | 55 + .../boxes.py/boxes.py.ElectronicsBox.inx | 55 + .../boxes.py/boxes.py.EuroRackSkiff.inx | 47 + .../boxes.py/boxes.py.FanHole.inx | 42 + .../boxes.py/boxes.py.FlexBox.inx | 57 + .../boxes.py/boxes.py.FlexBox2.inx | 57 + .../boxes.py/boxes.py.FlexBox3.inx | 58 + .../boxes.py/boxes.py.FlexBox4.inx | 57 + .../boxes.py/boxes.py.FlexBox5.inx | 57 + .../boxes.py/boxes.py.FlexTest.inx | 40 + .../boxes.py/boxes.py.FlexTest2.inx | 35 + .../boxes.py/boxes.py.Folder.inx | 49 + .../boxes.py/boxes.py.GearBox.inx | 50 + .../boxes.py/boxes.py.Gears.inx | 41 + .../boxes.py/boxes.py.HeartBox.inx | 58 + .../boxes.py/boxes.py.HexHoles.inx | 41 + .../boxes.py/boxes.py.HingeBox.inx | 63 + .../fablabchemnitz/boxes.py/boxes.py.Hook.inx | 50 + .../boxes.py/boxes.py.IntegratedHingeBox.inx | 55 + .../boxes.py/boxes.py.Keypad.inx | 54 + .../boxes.py/boxes.py.LBeam.inx | 49 + .../boxes.py/boxes.py.LaserClamp.inx | 48 + .../boxes.py/boxes.py.LaserHoldfast.inx | 36 + .../boxes.py/boxes.py.MagazinFile.inx | 50 + .../boxes.py/boxes.py.MakitaPowerSupply.inx | 47 + .../boxes.py/boxes.py.NemaMount.inx | 56 + .../boxes.py/boxes.py.NemaPattern.inx | 57 + .../boxes.py/boxes.py.NotesHolder.inx | 61 + .../boxes.py/boxes.py.OpenBox.inx | 49 + .../boxes.py/boxes.py.OrganPipe.inx | 72 + .../boxes.py/boxes.py.OttoBody.inx | 48 + .../boxes.py/boxes.py.OttoLegs.inx | 48 + .../boxes.py/boxes.py.OttoSoles.inx | 37 + .../boxes.py/boxes.py.PaintStorage.inx | 58 + .../boxes.py/boxes.py.PaperBox.inx | 42 + .../boxes.py/boxes.py.PhoneHolder.inx | 52 + .../boxes.py/boxes.py.Planetary.inx | 38 + .../boxes.py/boxes.py.Planetary2.inx | 68 + .../boxes.py/boxes.py.Platonic.inx | 54 + .../boxes.py/boxes.py.PoleHook.inx | 50 + .../boxes.py/boxes.py.Pulley.inx | 53 + .../boxes.py/boxes.py.Rack10Box.inx | 67 + .../boxes.py/boxes.py.Rack19Box.inx | 67 + .../boxes.py/boxes.py.Rack19HalfWidth.inx | 36 + .../boxes.py/boxes.py.RackBox.inx | 54 + .../boxes.py/boxes.py.RectangularWall.inx | 275 + .../boxes.py/boxes.py.RegularBox.inx | 59 + .../boxes.py/boxes.py.RobotArm.inx | 120 + .../boxes.py/boxes.py.Rotary.inx | 51 + .../boxes.py/boxes.py.RoundedBox.inx | 72 + .../boxes.py/boxes.py.RoyalGame.inx | 46 + .../boxes.py/boxes.py.SBCMicroRack.inx | 65 + .../boxes.py/boxes.py.ShutterBox.inx | 59 + .../boxes.py/boxes.py.SideDoorHousing.inx | 61 + .../boxes.py/boxes.py.Silverware.inx | 38 + .../boxes.py/boxes.py.SlatwallCaliper.inx | 60 + .../boxes.py.SlatwallChiselHolder.inx | 68 + .../boxes.py/boxes.py.SlatwallConsole.inx | 62 + .../boxes.py/boxes.py.SlatwallDrillBox.inx | 61 + .../boxes.py/boxes.py.SlatwallEdges.inx | 58 + .../boxes.py/boxes.py.SlatwallPinRow.inx | 65 + .../boxes.py/boxes.py.SlatwallPlaneHolder.inx | 61 + .../boxes.py.SlatwallPliersHolder.inx | 50 + .../boxes.py.SlatwallSlottedHolder.inx | 69 + .../boxes.py/boxes.py.SlatwallStairs.inx | 61 + .../boxes.py/boxes.py.SlatwallTypeTray.inx | 76 + .../boxes.py.SlatwallWrenchHolder.inx | 65 + .../boxes.py/boxes.py.SpicesRack.inx | 52 + .../boxes.py/boxes.py.Stachel.inx | 35 + .../boxes.py/boxes.py.StorageRack.inx | 67 + .../boxes.py/boxes.py.StorageShelf.inx | 132 + .../boxes.py/boxes.py.TrafficLight.inx | 50 + .../boxes.py/boxes.py.TrayInsert.inx | 36 + .../boxes.py/boxes.py.TriangleLamp.inx | 51 + .../boxes.py/boxes.py.TwoPiece.inx | 51 + .../boxes.py/boxes.py.TypeTray.inx | 133 + .../fablabchemnitz/boxes.py/boxes.py.UBox.inx | 135 + .../boxes.py/boxes.py.UnevenHeightBox.inx | 76 + .../boxes.py/boxes.py.UniversalBox.inx | 145 + .../boxes.py/boxes.py.WaivyKnob.inx | 38 + .../boxes.py/boxes.py.WineRack.inx | 54 + .../fablabchemnitz/boxes.py/boxes_proxy.py | 77 + .../boxmaker_tabbed/box_maker_tabbed.inx | 88 + .../boxmaker_tabbed/box_maker_tabbed.py | 638 + .../boxmaker_tabbed/schroffmaker.inx | 48 + .../buxtronix_living_hinges.inx | 68 + .../buxtronix_living_hinges.py | 450 + .../buxtronix_living_hinges/images/about.png | Bin 0 -> 73693 bytes .../images/cross-lattice.png | Bin 0 -> 1878 bytes .../images/diamond-lattice.png | Bin 0 -> 3805 bytes .../images/diamond-lattice.svg | 143 + .../images/straight-lattice.png | Bin 0 -> 852 bytes .../images/wavy-lattice.png | Bin 0 -> 2166 bytes .../can_generator/can_generator.inx | 29 + .../can_generator/can_generator.py | 371 + .../card_layout_guides/card_layout_guides.inx | 29 + .../card_layout_guides/card_layout_guides.py | 480 + .../hatches_grains.inx | 81 + .../hatches_grains.py | 144 + .../locale/fr/LC_MESSAGES/hatches_grains.mo | Bin 0 -> 2279 bytes .../locale/fr/hatches_grains.po | 128 + .../locale/hatches_grains.pot | 110 + .../chain_paths/chain_paths.inx | 29 + .../fablabchemnitz/chain_paths/chain_paths.py | 281 + .../checkerboard/checkerboard.inx | 37 + .../checkerboard/checkerboard.py | 93 + .../chip_scratches/chip_scratches.inx | 50 + .../chip_scratches/chip_scratches.py | 733 + .../circle_tangents/circle_tangents.inx | 26 + .../circle_tangents/circle_tangents.py | 230 + .../cleanup_styles/cleanup_styles.inx | 69 + .../cleanup_styles/cleanup_styles.py | 187 + .../clones_in_perspective.inx | 18 + .../clones_in_perspective.py | 63 + .../close_paths/close_paths.inx | 16 + .../fablabchemnitz/close_paths/close_paths.py | 43 + .../fablabchemnitz/collar/.gitattributes | 2 + extensions/fablabchemnitz/collar/collar.inx | 48 + extensions/fablabchemnitz/collar/collar.py | 753 + .../fablabchemnitz/color_harmony/.gitignore | 1 + .../color_harmony/color_harmony.inx | 87 + .../color_harmony/color_harmony.py | 318 + .../color_harmony/color_harmony/__init__.py | 1 + .../color_harmony/color_harmony/colorplus.py | 260 + .../color_harmony/color_harmony/export.py | 139 + .../color_harmony/color_harmony/harmonies.py | 104 + .../color_harmony/matching/__init__.py | 1 + .../color_harmony/matching/matching.py | 117 + .../color_harmony/matching/svg.py | 96 + .../color_harmony/matching/svg_widget.py | 135 + .../color_harmony/matching/transform.py | 241 + .../color_harmony/open_palette.py | 17 + .../color_harmony/palette/palette.py | 352 + .../color_harmony/color_harmony/shades.py | 125 + .../color_harmony/storage/__init__.py | 1 + .../color_harmony/storage/cluster.py | 180 + .../color_harmony/storage/css.py | 83 + .../color_harmony/storage/gimp.py | 188 + .../color_harmony/storage/image.py | 201 + .../color_harmony/storage/kpl.py | 178 + .../color_harmony/storage/scribus.py | 76 + .../color_harmony/storage/storage.py | 62 + .../color_harmony/storage/xml.py | 179 + .../color_harmony/color_harmony/utils.py | 49 + .../colorize_path_lengths.inx | 28 + .../colorize_path_lengths.py | 138 + .../contour_scanner_and_trimmer.inx | 185 + .../contour_scanner_and_trimmer.py | 1290 + .../poly_point_isect.py | 1306 + .../convert_to_polylines.inx | 16 + .../convert_to_polylines.py | 49 + .../convert_vertical_horizontal_to_line.inx | 16 + .../convert_vertical_horizontal_to_line.py | 64 + .../convex_hull/convex_hull.inx | 16 + .../fablabchemnitz/convex_hull/convex_hull.py | 124 + .../create_hexmap/create_hexmap.inx | 63 + .../create_hexmap/create_hexmap.py | 420 + .../create_links/create_links.inx | 99 + .../create_links/create_links.py | 316 + .../cutcraft/cutcraft/README.md | 57 + .../cutcraft/cutcraft/__init__.py | 17 + .../cutcraft/cutcraft/core/__init__.py | 27 + .../cutcraft/cutcraft/core/circle.py | 131 + .../cutcraft/cutcraft/core/fingerjoint.py | 40 + .../cutcraft/cutcraft/core/line.py | 82 + .../cutcraft/cutcraft/core/neopixel.py | 65 + .../cutcraft/cutcraft/core/part.py | 91 + .../cutcraft/cutcraft/core/point.py | 64 + .../cutcraft/cutcraft/core/rectangle.py | 60 + .../cutcraft/cutcraft/core/trace.py | 149 + .../cutcraft/cutcraft/platforms/__init__.py | 22 + .../cutcraft/cutcraft/platforms/circular.py | 39 + .../cutcraft/cutcraft/platforms/platform.py | 24 + .../cutcraft/platforms/rollerframe.py | 378 + .../cutcraft/cutcraft/shapes/__init__.py | 25 + .../cutcraft/cutcraft/shapes/box.py | 161 + .../cutcraft/cutcraft/shapes/cone.py | 34 + .../cutcraft/cutcraft/shapes/cylinder.py | 47 + .../cutcraft/cutcraft/shapes/rollerbot.py | 64 + .../cutcraft/cutcraft/shapes/shape.py | 27 + .../cutcraft/cutcraft/shapes/sphere.py | 25 + .../cutcraft/cutcraft/supports/__init__.py | 21 + .../cutcraft/cutcraft/supports/pier.py | 84 + .../cutcraft/cutcraft/supports/support.py | 25 + .../fablabchemnitz/cutcraft/cutcraft/util.py | 40 + .../fablabchemnitz/cutcraft/cutcraftbox.inx | 32 + .../fablabchemnitz/cutcraft/cutcraftbox.py | 27 + .../cutcraft/cutcraftcylinder.inx | 36 + .../cutcraft/cutcraftcylinder.py | 40 + .../cutcraft/cutcraftrollerbot.inx | 30 + .../cutcraft/cutcraftrollerbot.py | 37 + .../fablabchemnitz/cutcraft/cutcraftshape.py | 119 + .../cutting_optimizer/.gitignore | 1 + .../fablabchemnitz/cutting_optimizer/CutOptim | Bin 0 -> 392696 bytes .../cutting_optimizer/CutOptim.exe | Bin 0 -> 317440 bytes .../cutting_optimizer/cutting_optimizer.inx | 47 + .../cutting_optimizer/cutting_optimizer.py | 101 + .../delaunay_triangulation.inx | 56 + .../delaunay_triangulation.py | 197 + .../delete_above/delete_above.inx | 16 + .../delete_above/delete_above.py | 123 + .../destructive_clip/destructive_clip.inx | 17 + .../destructive_clip/destructive_clip.py | 220 + .../dimensioning/dimensioning.inx | 59 + .../dimensioning/dimensioning.py | 283 + .../dots_to_path_points.inx | 37 + .../dots_to_path_points.py | 75 + .../draw_directions/draw_directions.inx | 16 + .../draw_directions/draw_directions.py | 33 + .../fablabchemnitz/dxf2papercraft/.gitignore | 2 + .../dxf2papercraft/dxf2papercraft.inx | 81 + .../dxf2papercraft/dxf2papercraft.py | 148 + .../dxf2papercraft/cyggcc_s-1.dll | Bin 0 -> 80910 bytes .../dxf2papercraft/cygstdc++-6.dll | Bin 0 -> 798734 bytes .../dxf2papercraft/dxf2papercraft/cygwin1.dll | Bin 0 -> 2824675 bytes .../dxf2papercraft/dxf2papercraft | Bin 0 -> 3002370 bytes .../dxf2papercraft/dxf2papercraft.exe | Bin 0 -> 1808471 bytes .../dxf2papercraft/kabeja/INSTALL | 26 + .../dxf2papercraft/kabeja/README | 148 + .../dxf2papercraft/kabeja/conf/parser.xml | 92 + .../dxf2papercraft/kabeja/conf/process.xml | 180 + .../dxf2papercraft/kabeja/conf/ui.xml | 18 + .../dxf2papercraft/kabeja/doc/userguide.pdf | 1000 + .../dxf2papercraft/kabeja/font.xml | 27 + .../dxf2papercraft/kabeja/kabeja.exe | Bin 0 -> 442368 bytes .../dxf2papercraft/kabeja/kabeja.sh | 7 + .../dxf2papercraft/kabeja/launcher.jar | Bin 0 -> 2602 bytes .../kabeja/legal/LICENSE.ant-contib | 47 + .../dxf2papercraft/kabeja/legal/LICENSE.batik | 201 + .../kabeja/legal/LICENSE.js.txt | 584 + .../kabeja/legal/LICENSE.miethxml-toolkit.txt | 202 + .../kabeja/legal/LICENSE.pdf-transcoder.txt | 201 + .../dxf2papercraft/kabeja/legal/LICENSE.txt | 202 + .../dxf2papercraft/kabeja/lib/batik-all.jar | Bin 0 -> 2996626 bytes .../dxf2papercraft/kabeja/lib/js.jar | Bin 0 -> 708951 bytes .../dxf2papercraft/kabeja/lib/kabeja-0.4.jar | Bin 0 -> 339366 bytes .../kabeja/lib/kabeja-svg-0.4.jar | Bin 0 -> 202283 bytes .../dxf2papercraft/kabeja/lib/kabeja-xslt.jar | Bin 0 -> 2712 bytes .../kabeja/lib/miethxml-toolkit.jar | Bin 0 -> 334892 bytes .../dxf2papercraft/kabeja/lib/miethxml-ui.jar | Bin 0 -> 62512 bytes .../dxf2papercraft/kabeja/lib/nothing | 0 .../kabeja/lib/pdf-transcoder.jar | Bin 0 -> 541815 bytes .../kabeja/lib/xml-apis-ext.jar | Bin 0 -> 85686 bytes .../dxf2papercraft/kabeja/lib/xml-apis.jar | Bin 0 -> 194354 bytes .../kabeja/samples/dxf/draft1.dxf | 255532 +++++++++++++++ .../kabeja/samples/dxf/draft2.dxf | 118370 +++++++ .../kabeja/samples/dxf/draft3.dxf | 137444 ++++++++ .../kabeja/samples/dxf/draft4.dxf | 77318 +++++ .../kabeja/samples/dxf/hatch_1.dxf | 1816 + .../kabeja/samples/dxf/hatch_16.dxf | 4930 + .../dxf_dwg_importer/dxf_dwg_importer.inx | 197 + .../dxf_dwg_importer/dxf_dwg_importer.py | 448 + .../dxf_dwg_importer/kabeja/INSTALL | 26 + .../dxf_dwg_importer/kabeja/README | 148 + .../dxf_dwg_importer/kabeja/conf/parser.xml | 92 + .../dxf_dwg_importer/kabeja/conf/process.xml | 180 + .../dxf_dwg_importer/kabeja/conf/ui.xml | 18 + .../dxf_dwg_importer/kabeja/doc/userguide.pdf | 1000 + .../dxf_dwg_importer/kabeja/font.xml | 27 + .../dxf_dwg_importer/kabeja/kabeja.exe | Bin 0 -> 442368 bytes .../dxf_dwg_importer/kabeja/kabeja.sh | 7 + .../dxf_dwg_importer/kabeja/launcher.jar | Bin 0 -> 2602 bytes .../kabeja/legal/LICENSE.ant-contib | 47 + .../kabeja/legal/LICENSE.batik | 201 + .../kabeja/legal/LICENSE.js.txt | 584 + .../kabeja/legal/LICENSE.miethxml-toolkit.txt | 202 + .../kabeja/legal/LICENSE.pdf-transcoder.txt | 201 + .../dxf_dwg_importer/kabeja/legal/LICENSE.txt | 202 + .../dxf_dwg_importer/kabeja/lib/batik-all.jar | Bin 0 -> 2996626 bytes .../dxf_dwg_importer/kabeja/lib/js.jar | Bin 0 -> 708951 bytes .../kabeja/lib/kabeja-0.4.jar | Bin 0 -> 339366 bytes .../kabeja/lib/kabeja-svg-0.4.jar | Bin 0 -> 202283 bytes .../kabeja/lib/kabeja-xslt.jar | Bin 0 -> 2712 bytes .../kabeja/lib/miethxml-toolkit.jar | Bin 0 -> 334892 bytes .../kabeja/lib/miethxml-ui.jar | Bin 0 -> 62512 bytes .../dxf_dwg_importer/kabeja/lib/nothing | 0 .../kabeja/lib/pdf-transcoder.jar | Bin 0 -> 541815 bytes .../kabeja/lib/xml-apis-ext.jar | Bin 0 -> 85686 bytes .../dxf_dwg_importer/kabeja/lib/xml-apis.jar | Bin 0 -> 194354 bytes .../kabeja/samples/dxf/draft1.dxf | 255532 +++++++++++++++ .../kabeja/samples/dxf/draft2.dxf | 118370 +++++++ .../kabeja/samples/dxf/draft3.dxf | 137444 ++++++++ .../kabeja/samples/dxf/draft4.dxf | 77318 +++++ .../kabeja/samples/dxf/hatch_1.dxf | 1816 + .../kabeja/samples/dxf/hatch_16.dxf | 4930 + .../fablabchemnitz/dxf_dwg_importer/node.exe | Bin 0 -> 26103960 bytes .../node_modules/dxf/.eslintrc.json | 39 + .../node_modules/dxf/.travis.yml | 6 + .../dxf_dwg_importer/node_modules/dxf/LICENSE | 21 + .../node_modules/dxf/README.md | 126 + .../node_modules/dxf/RELEASE.md | 41 + .../node_modules/dxf/dist/dxf.js | 21602 ++ .../node_modules/dxf/examples/dxf.html | 36 + .../node_modules/dxf/examples/example.es5.js | 29 + .../node_modules/dxf/examples/example.es6.js | 29 + .../node_modules/dxf/lib/Helper.js | 106 + .../node_modules/dxf/lib/applyTransforms.js | 54 + .../node_modules/dxf/lib/cli.js | 28 + .../node_modules/dxf/lib/config.js | 10 + .../node_modules/dxf/lib/constants.js | 14 + .../node_modules/dxf/lib/denormalise.js | 160 + .../node_modules/dxf/lib/entityToPolyline.js | 205 + .../node_modules/dxf/lib/getRGBForEntity.js | 35 + .../dxf/lib/groupEntitiesByLayer.js | 21 + .../node_modules/dxf/lib/handlers/blocks.js | 70 + .../node_modules/dxf/lib/handlers/entities.js | 91 + .../dxf/lib/handlers/entity/arc.js | 67 + .../dxf/lib/handlers/entity/circle.js | 53 + .../dxf/lib/handlers/entity/common.js | 64 + .../dxf/lib/handlers/entity/ellipse.js | 73 + .../dxf/lib/handlers/entity/insert.js | 97 + .../dxf/lib/handlers/entity/line.js | 67 + .../dxf/lib/handlers/entity/lwpolyline.js | 64 + .../dxf/lib/handlers/entity/mtext.js | 92 + .../dxf/lib/handlers/entity/point.js | 53 + .../dxf/lib/handlers/entity/polyline.js | 48 + .../dxf/lib/handlers/entity/solid.js | 90 + .../dxf/lib/handlers/entity/spline.js | 99 + .../dxf/lib/handlers/entity/threeDFace.js | 86 + .../dxf/lib/handlers/entity/vertex.js | 45 + .../node_modules/dxf/lib/handlers/header.js | 82 + .../node_modules/dxf/lib/handlers/tables.js | 162 + .../node_modules/dxf/lib/index.js | 71 + .../node_modules/dxf/lib/parseString.js | 133 + .../node_modules/dxf/lib/toPolylines.js | 63 + .../node_modules/dxf/lib/toSVG.js | 401 + .../node_modules/dxf/lib/util/bSpline.js | 104 + .../node_modules/dxf/lib/util/colors.js | 8 + .../dxf/lib/util/createArcForLWPolyline.js | 85 + .../node_modules/dxf/lib/util/insertKnot.js | 79 + .../node_modules/dxf/lib/util/logger.js | 33 + .../dxf/lib/util/rgbToColorAttribute.js | 20 + .../node_modules/dxf/lib/util/rotate.js | 21 + .../dxf/lib/util/toPiecewiseBezier.js | 90 + .../util/transformBoundingBoxAndElement.js | 118 + .../dxf/node_modules/commander/CHANGELOG.md | 419 + .../dxf/node_modules/commander/LICENSE | 22 + .../dxf/node_modules/commander/Readme.md | 428 + .../dxf/node_modules/commander/index.js | 1224 + .../dxf/node_modules/commander/package.json | 70 + .../node_modules/commander/typings/index.d.ts | 310 + .../dxf/node_modules/lodash/LICENSE | 47 + .../dxf/node_modules/lodash/README.md | 39 + .../dxf/node_modules/lodash/_DataView.js | 7 + .../dxf/node_modules/lodash/_Hash.js | 32 + .../dxf/node_modules/lodash/_LazyWrapper.js | 28 + .../dxf/node_modules/lodash/_ListCache.js | 32 + .../dxf/node_modules/lodash/_LodashWrapper.js | 22 + .../dxf/node_modules/lodash/_Map.js | 7 + .../dxf/node_modules/lodash/_MapCache.js | 32 + .../dxf/node_modules/lodash/_Promise.js | 7 + .../dxf/node_modules/lodash/_Set.js | 7 + .../dxf/node_modules/lodash/_SetCache.js | 27 + .../dxf/node_modules/lodash/_Stack.js | 27 + .../dxf/node_modules/lodash/_Symbol.js | 6 + .../dxf/node_modules/lodash/_Uint8Array.js | 6 + .../dxf/node_modules/lodash/_WeakMap.js | 7 + .../dxf/node_modules/lodash/_apply.js | 21 + .../node_modules/lodash/_arrayAggregator.js | 22 + .../dxf/node_modules/lodash/_arrayEach.js | 22 + .../node_modules/lodash/_arrayEachRight.js | 21 + .../dxf/node_modules/lodash/_arrayEvery.js | 23 + .../dxf/node_modules/lodash/_arrayFilter.js | 25 + .../dxf/node_modules/lodash/_arrayIncludes.js | 17 + .../node_modules/lodash/_arrayIncludesWith.js | 22 + .../dxf/node_modules/lodash/_arrayLikeKeys.js | 49 + .../dxf/node_modules/lodash/_arrayMap.js | 21 + .../dxf/node_modules/lodash/_arrayPush.js | 20 + .../dxf/node_modules/lodash/_arrayReduce.js | 26 + .../node_modules/lodash/_arrayReduceRight.js | 24 + .../dxf/node_modules/lodash/_arraySample.js | 15 + .../node_modules/lodash/_arraySampleSize.js | 17 + .../dxf/node_modules/lodash/_arrayShuffle.js | 15 + .../dxf/node_modules/lodash/_arraySome.js | 23 + .../dxf/node_modules/lodash/_asciiSize.js | 12 + .../dxf/node_modules/lodash/_asciiToArray.js | 12 + .../dxf/node_modules/lodash/_asciiWords.js | 15 + .../node_modules/lodash/_assignMergeValue.js | 20 + .../dxf/node_modules/lodash/_assignValue.js | 28 + .../dxf/node_modules/lodash/_assocIndexOf.js | 21 + .../node_modules/lodash/_baseAggregator.js | 21 + .../dxf/node_modules/lodash/_baseAssign.js | 17 + .../dxf/node_modules/lodash/_baseAssignIn.js | 17 + .../node_modules/lodash/_baseAssignValue.js | 25 + .../dxf/node_modules/lodash/_baseAt.js | 23 + .../dxf/node_modules/lodash/_baseClamp.js | 22 + .../dxf/node_modules/lodash/_baseClone.js | 166 + .../dxf/node_modules/lodash/_baseConforms.js | 18 + .../node_modules/lodash/_baseConformsTo.js | 27 + .../dxf/node_modules/lodash/_baseCreate.js | 30 + .../dxf/node_modules/lodash/_baseDelay.js | 21 + .../node_modules/lodash/_baseDifference.js | 67 + .../dxf/node_modules/lodash/_baseEach.js | 14 + .../dxf/node_modules/lodash/_baseEachRight.js | 14 + .../dxf/node_modules/lodash/_baseEvery.js | 21 + .../dxf/node_modules/lodash/_baseExtremum.js | 32 + .../dxf/node_modules/lodash/_baseFill.js | 32 + .../dxf/node_modules/lodash/_baseFilter.js | 21 + .../dxf/node_modules/lodash/_baseFindIndex.js | 24 + .../dxf/node_modules/lodash/_baseFindKey.js | 23 + .../dxf/node_modules/lodash/_baseFlatten.js | 38 + .../dxf/node_modules/lodash/_baseFor.js | 16 + .../dxf/node_modules/lodash/_baseForOwn.js | 16 + .../node_modules/lodash/_baseForOwnRight.js | 16 + .../dxf/node_modules/lodash/_baseForRight.js | 15 + .../dxf/node_modules/lodash/_baseFunctions.js | 19 + .../dxf/node_modules/lodash/_baseGet.js | 24 + .../node_modules/lodash/_baseGetAllKeys.js | 20 + .../dxf/node_modules/lodash/_baseGetTag.js | 28 + .../dxf/node_modules/lodash/_baseGt.js | 14 + .../dxf/node_modules/lodash/_baseHas.js | 19 + .../dxf/node_modules/lodash/_baseHasIn.js | 13 + .../dxf/node_modules/lodash/_baseInRange.js | 18 + .../dxf/node_modules/lodash/_baseIndexOf.js | 20 + .../node_modules/lodash/_baseIndexOfWith.js | 23 + .../node_modules/lodash/_baseIntersection.js | 74 + .../dxf/node_modules/lodash/_baseInverter.js | 21 + .../dxf/node_modules/lodash/_baseInvoke.js | 24 + .../node_modules/lodash/_baseIsArguments.js | 18 + .../node_modules/lodash/_baseIsArrayBuffer.js | 17 + .../dxf/node_modules/lodash/_baseIsDate.js | 18 + .../dxf/node_modules/lodash/_baseIsEqual.js | 28 + .../node_modules/lodash/_baseIsEqualDeep.js | 83 + .../dxf/node_modules/lodash/_baseIsMap.js | 18 + .../dxf/node_modules/lodash/_baseIsMatch.js | 62 + .../dxf/node_modules/lodash/_baseIsNaN.js | 12 + .../dxf/node_modules/lodash/_baseIsNative.js | 47 + .../dxf/node_modules/lodash/_baseIsRegExp.js | 18 + .../dxf/node_modules/lodash/_baseIsSet.js | 18 + .../node_modules/lodash/_baseIsTypedArray.js | 60 + .../dxf/node_modules/lodash/_baseIteratee.js | 31 + .../dxf/node_modules/lodash/_baseKeys.js | 30 + .../dxf/node_modules/lodash/_baseKeysIn.js | 33 + .../dxf/node_modules/lodash/_baseLodash.js | 10 + .../dxf/node_modules/lodash/_baseLt.js | 14 + .../dxf/node_modules/lodash/_baseMap.js | 22 + .../dxf/node_modules/lodash/_baseMatches.js | 22 + .../lodash/_baseMatchesProperty.js | 33 + .../dxf/node_modules/lodash/_baseMean.js | 20 + .../dxf/node_modules/lodash/_baseMerge.js | 42 + .../dxf/node_modules/lodash/_baseMergeDeep.js | 94 + .../dxf/node_modules/lodash/_baseNth.js | 20 + .../dxf/node_modules/lodash/_baseOrderBy.js | 49 + .../dxf/node_modules/lodash/_basePick.js | 19 + .../dxf/node_modules/lodash/_basePickBy.js | 30 + .../dxf/node_modules/lodash/_baseProperty.js | 14 + .../node_modules/lodash/_basePropertyDeep.js | 16 + .../node_modules/lodash/_basePropertyOf.js | 14 + .../dxf/node_modules/lodash/_basePullAll.js | 51 + .../dxf/node_modules/lodash/_basePullAt.js | 37 + .../dxf/node_modules/lodash/_baseRandom.js | 18 + .../dxf/node_modules/lodash/_baseRange.js | 28 + .../dxf/node_modules/lodash/_baseReduce.js | 23 + .../dxf/node_modules/lodash/_baseRepeat.js | 35 + .../dxf/node_modules/lodash/_baseRest.js | 17 + .../dxf/node_modules/lodash/_baseSample.js | 15 + .../node_modules/lodash/_baseSampleSize.js | 18 + .../dxf/node_modules/lodash/_baseSet.js | 51 + .../dxf/node_modules/lodash/_baseSetData.js | 17 + .../node_modules/lodash/_baseSetToString.js | 22 + .../dxf/node_modules/lodash/_baseShuffle.js | 15 + .../dxf/node_modules/lodash/_baseSlice.js | 31 + .../dxf/node_modules/lodash/_baseSome.js | 22 + .../dxf/node_modules/lodash/_baseSortBy.js | 21 + .../node_modules/lodash/_baseSortedIndex.js | 42 + .../node_modules/lodash/_baseSortedIndexBy.js | 67 + .../node_modules/lodash/_baseSortedUniq.js | 30 + .../dxf/node_modules/lodash/_baseSum.js | 24 + .../dxf/node_modules/lodash/_baseTimes.js | 20 + .../dxf/node_modules/lodash/_baseToNumber.js | 24 + .../dxf/node_modules/lodash/_baseToPairs.js | 18 + .../dxf/node_modules/lodash/_baseToString.js | 37 + .../dxf/node_modules/lodash/_baseUnary.js | 14 + .../dxf/node_modules/lodash/_baseUniq.js | 72 + .../dxf/node_modules/lodash/_baseUnset.js | 20 + .../dxf/node_modules/lodash/_baseUpdate.js | 18 + .../dxf/node_modules/lodash/_baseValues.js | 19 + .../dxf/node_modules/lodash/_baseWhile.js | 26 + .../node_modules/lodash/_baseWrapperValue.js | 25 + .../dxf/node_modules/lodash/_baseXor.js | 36 + .../dxf/node_modules/lodash/_baseZipObject.js | 23 + .../dxf/node_modules/lodash/_cacheHas.js | 13 + .../lodash/_castArrayLikeObject.js | 14 + .../dxf/node_modules/lodash/_castFunction.js | 14 + .../dxf/node_modules/lodash/_castPath.js | 21 + .../dxf/node_modules/lodash/_castRest.js | 14 + .../dxf/node_modules/lodash/_castSlice.js | 18 + .../dxf/node_modules/lodash/_charsEndIndex.js | 19 + .../node_modules/lodash/_charsStartIndex.js | 20 + .../node_modules/lodash/_cloneArrayBuffer.js | 16 + .../dxf/node_modules/lodash/_cloneBuffer.js | 35 + .../dxf/node_modules/lodash/_cloneDataView.js | 16 + .../dxf/node_modules/lodash/_cloneRegExp.js | 17 + .../dxf/node_modules/lodash/_cloneSymbol.js | 18 + .../node_modules/lodash/_cloneTypedArray.js | 16 + .../node_modules/lodash/_compareAscending.js | 41 + .../node_modules/lodash/_compareMultiple.js | 44 + .../dxf/node_modules/lodash/_composeArgs.js | 39 + .../node_modules/lodash/_composeArgsRight.js | 41 + .../dxf/node_modules/lodash/_copyArray.js | 20 + .../dxf/node_modules/lodash/_copyObject.js | 40 + .../dxf/node_modules/lodash/_copySymbols.js | 16 + .../dxf/node_modules/lodash/_copySymbolsIn.js | 16 + .../dxf/node_modules/lodash/_coreJsData.js | 6 + .../dxf/node_modules/lodash/_countHolders.js | 21 + .../node_modules/lodash/_createAggregator.js | 23 + .../node_modules/lodash/_createAssigner.js | 37 + .../node_modules/lodash/_createBaseEach.js | 32 + .../dxf/node_modules/lodash/_createBaseFor.js | 25 + .../dxf/node_modules/lodash/_createBind.js | 28 + .../node_modules/lodash/_createCaseFirst.js | 33 + .../node_modules/lodash/_createCompounder.js | 24 + .../dxf/node_modules/lodash/_createCtor.js | 37 + .../dxf/node_modules/lodash/_createCurry.js | 46 + .../dxf/node_modules/lodash/_createFind.js | 25 + .../dxf/node_modules/lodash/_createFlow.js | 78 + .../dxf/node_modules/lodash/_createHybrid.js | 92 + .../node_modules/lodash/_createInverter.js | 17 + .../lodash/_createMathOperation.js | 38 + .../dxf/node_modules/lodash/_createOver.js | 27 + .../dxf/node_modules/lodash/_createPadding.js | 33 + .../dxf/node_modules/lodash/_createPartial.js | 43 + .../dxf/node_modules/lodash/_createRange.js | 30 + .../dxf/node_modules/lodash/_createRecurry.js | 56 + .../lodash/_createRelationalOperation.js | 20 + .../dxf/node_modules/lodash/_createRound.js | 35 + .../dxf/node_modules/lodash/_createSet.js | 19 + .../dxf/node_modules/lodash/_createToPairs.js | 30 + .../dxf/node_modules/lodash/_createWrap.js | 106 + .../lodash/_customDefaultsAssignIn.js | 29 + .../lodash/_customDefaultsMerge.js | 28 + .../node_modules/lodash/_customOmitClone.js | 16 + .../dxf/node_modules/lodash/_deburrLetter.js | 71 + .../node_modules/lodash/_defineProperty.js | 11 + .../dxf/node_modules/lodash/_equalArrays.js | 84 + .../dxf/node_modules/lodash/_equalByTag.js | 112 + .../dxf/node_modules/lodash/_equalObjects.js | 90 + .../node_modules/lodash/_escapeHtmlChar.js | 21 + .../node_modules/lodash/_escapeStringChar.js | 22 + .../dxf/node_modules/lodash/_flatRest.js | 16 + .../dxf/node_modules/lodash/_freeGlobal.js | 4 + .../dxf/node_modules/lodash/_getAllKeys.js | 16 + .../dxf/node_modules/lodash/_getAllKeysIn.js | 17 + .../dxf/node_modules/lodash/_getData.js | 15 + .../dxf/node_modules/lodash/_getFuncName.js | 31 + .../dxf/node_modules/lodash/_getHolder.js | 13 + .../dxf/node_modules/lodash/_getMapData.js | 18 + .../dxf/node_modules/lodash/_getMatchData.js | 24 + .../dxf/node_modules/lodash/_getNative.js | 17 + .../dxf/node_modules/lodash/_getPrototype.js | 6 + .../dxf/node_modules/lodash/_getRawTag.js | 46 + .../dxf/node_modules/lodash/_getSymbols.js | 30 + .../dxf/node_modules/lodash/_getSymbolsIn.js | 25 + .../dxf/node_modules/lodash/_getTag.js | 58 + .../dxf/node_modules/lodash/_getValue.js | 13 + .../dxf/node_modules/lodash/_getView.js | 33 + .../node_modules/lodash/_getWrapDetails.js | 17 + .../dxf/node_modules/lodash/_hasPath.js | 39 + .../dxf/node_modules/lodash/_hasUnicode.js | 26 + .../node_modules/lodash/_hasUnicodeWord.js | 15 + .../dxf/node_modules/lodash/_hashClear.js | 15 + .../dxf/node_modules/lodash/_hashDelete.js | 17 + .../dxf/node_modules/lodash/_hashGet.js | 30 + .../dxf/node_modules/lodash/_hashHas.js | 23 + .../dxf/node_modules/lodash/_hashSet.js | 23 + .../node_modules/lodash/_initCloneArray.js | 26 + .../node_modules/lodash/_initCloneByTag.js | 77 + .../node_modules/lodash/_initCloneObject.js | 18 + .../node_modules/lodash/_insertWrapDetails.js | 23 + .../dxf/node_modules/lodash/_isFlattenable.js | 20 + .../dxf/node_modules/lodash/_isIndex.js | 25 + .../node_modules/lodash/_isIterateeCall.js | 30 + .../dxf/node_modules/lodash/_isKey.js | 29 + .../dxf/node_modules/lodash/_isKeyable.js | 15 + .../dxf/node_modules/lodash/_isLaziable.js | 28 + .../dxf/node_modules/lodash/_isMaskable.js | 14 + .../dxf/node_modules/lodash/_isMasked.js | 20 + .../dxf/node_modules/lodash/_isPrototype.js | 18 + .../lodash/_isStrictComparable.js | 15 + .../node_modules/lodash/_iteratorToArray.js | 18 + .../dxf/node_modules/lodash/_lazyClone.js | 23 + .../dxf/node_modules/lodash/_lazyReverse.js | 23 + .../dxf/node_modules/lodash/_lazyValue.js | 69 + .../node_modules/lodash/_listCacheClear.js | 13 + .../node_modules/lodash/_listCacheDelete.js | 35 + .../dxf/node_modules/lodash/_listCacheGet.js | 19 + .../dxf/node_modules/lodash/_listCacheHas.js | 16 + .../dxf/node_modules/lodash/_listCacheSet.js | 26 + .../dxf/node_modules/lodash/_mapCacheClear.js | 21 + .../node_modules/lodash/_mapCacheDelete.js | 18 + .../dxf/node_modules/lodash/_mapCacheGet.js | 16 + .../dxf/node_modules/lodash/_mapCacheHas.js | 16 + .../dxf/node_modules/lodash/_mapCacheSet.js | 22 + .../dxf/node_modules/lodash/_mapToArray.js | 18 + .../lodash/_matchesStrictComparable.js | 20 + .../dxf/node_modules/lodash/_memoizeCapped.js | 26 + .../dxf/node_modules/lodash/_mergeData.js | 90 + .../dxf/node_modules/lodash/_metaMap.js | 6 + .../dxf/node_modules/lodash/_nativeCreate.js | 6 + .../dxf/node_modules/lodash/_nativeKeys.js | 6 + .../dxf/node_modules/lodash/_nativeKeysIn.js | 20 + .../dxf/node_modules/lodash/_nodeUtil.js | 30 + .../node_modules/lodash/_objectToString.js | 22 + .../dxf/node_modules/lodash/_overArg.js | 15 + .../dxf/node_modules/lodash/_overRest.js | 36 + .../dxf/node_modules/lodash/_parent.js | 16 + .../dxf/node_modules/lodash/_reEscape.js | 4 + .../dxf/node_modules/lodash/_reEvaluate.js | 4 + .../dxf/node_modules/lodash/_reInterpolate.js | 4 + .../dxf/node_modules/lodash/_realNames.js | 4 + .../dxf/node_modules/lodash/_reorder.js | 29 + .../node_modules/lodash/_replaceHolders.js | 29 + .../dxf/node_modules/lodash/_root.js | 9 + .../dxf/node_modules/lodash/_safeGet.js | 21 + .../dxf/node_modules/lodash/_setCacheAdd.js | 19 + .../dxf/node_modules/lodash/_setCacheHas.js | 14 + .../dxf/node_modules/lodash/_setData.js | 20 + .../dxf/node_modules/lodash/_setToArray.js | 18 + .../dxf/node_modules/lodash/_setToPairs.js | 18 + .../dxf/node_modules/lodash/_setToString.js | 14 + .../node_modules/lodash/_setWrapToString.js | 21 + .../dxf/node_modules/lodash/_shortOut.js | 37 + .../dxf/node_modules/lodash/_shuffleSelf.js | 28 + .../dxf/node_modules/lodash/_stackClear.js | 15 + .../dxf/node_modules/lodash/_stackDelete.js | 18 + .../dxf/node_modules/lodash/_stackGet.js | 14 + .../dxf/node_modules/lodash/_stackHas.js | 14 + .../dxf/node_modules/lodash/_stackSet.js | 34 + .../dxf/node_modules/lodash/_strictIndexOf.js | 23 + .../node_modules/lodash/_strictLastIndexOf.js | 21 + .../dxf/node_modules/lodash/_stringSize.js | 18 + .../dxf/node_modules/lodash/_stringToArray.js | 18 + .../dxf/node_modules/lodash/_stringToPath.js | 27 + .../dxf/node_modules/lodash/_toKey.js | 21 + .../dxf/node_modules/lodash/_toSource.js | 26 + .../node_modules/lodash/_unescapeHtmlChar.js | 21 + .../dxf/node_modules/lodash/_unicodeSize.js | 44 + .../node_modules/lodash/_unicodeToArray.js | 40 + .../dxf/node_modules/lodash/_unicodeWords.js | 69 + .../node_modules/lodash/_updateWrapDetails.js | 46 + .../dxf/node_modules/lodash/_wrapperClone.js | 23 + .../dxf/node_modules/lodash/add.js | 22 + .../dxf/node_modules/lodash/after.js | 42 + .../dxf/node_modules/lodash/array.js | 67 + .../dxf/node_modules/lodash/ary.js | 29 + .../dxf/node_modules/lodash/assign.js | 58 + .../dxf/node_modules/lodash/assignIn.js | 40 + .../dxf/node_modules/lodash/assignInWith.js | 38 + .../dxf/node_modules/lodash/assignWith.js | 37 + .../dxf/node_modules/lodash/at.js | 23 + .../dxf/node_modules/lodash/attempt.js | 35 + .../dxf/node_modules/lodash/before.js | 40 + .../dxf/node_modules/lodash/bind.js | 57 + .../dxf/node_modules/lodash/bindAll.js | 41 + .../dxf/node_modules/lodash/bindKey.js | 68 + .../dxf/node_modules/lodash/camelCase.js | 29 + .../dxf/node_modules/lodash/capitalize.js | 23 + .../dxf/node_modules/lodash/castArray.js | 44 + .../dxf/node_modules/lodash/ceil.js | 26 + .../dxf/node_modules/lodash/chain.js | 38 + .../dxf/node_modules/lodash/chunk.js | 50 + .../dxf/node_modules/lodash/clamp.js | 39 + .../dxf/node_modules/lodash/clone.js | 36 + .../dxf/node_modules/lodash/cloneDeep.js | 29 + .../dxf/node_modules/lodash/cloneDeepWith.js | 40 + .../dxf/node_modules/lodash/cloneWith.js | 42 + .../dxf/node_modules/lodash/collection.js | 30 + .../dxf/node_modules/lodash/commit.js | 33 + .../dxf/node_modules/lodash/compact.js | 31 + .../dxf/node_modules/lodash/concat.js | 43 + .../dxf/node_modules/lodash/cond.js | 60 + .../dxf/node_modules/lodash/conforms.js | 35 + .../dxf/node_modules/lodash/conformsTo.js | 32 + .../dxf/node_modules/lodash/constant.js | 26 + .../dxf/node_modules/lodash/core.js | 3877 + .../dxf/node_modules/lodash/core.min.js | 30 + .../dxf/node_modules/lodash/countBy.js | 40 + .../dxf/node_modules/lodash/create.js | 43 + .../dxf/node_modules/lodash/curry.js | 57 + .../dxf/node_modules/lodash/curryRight.js | 54 + .../dxf/node_modules/lodash/date.js | 3 + .../dxf/node_modules/lodash/debounce.js | 191 + .../dxf/node_modules/lodash/deburr.js | 45 + .../dxf/node_modules/lodash/defaultTo.js | 25 + .../dxf/node_modules/lodash/defaults.js | 64 + .../dxf/node_modules/lodash/defaultsDeep.js | 30 + .../dxf/node_modules/lodash/defer.js | 26 + .../dxf/node_modules/lodash/delay.js | 28 + .../dxf/node_modules/lodash/difference.js | 33 + .../dxf/node_modules/lodash/differenceBy.js | 44 + .../dxf/node_modules/lodash/differenceWith.js | 40 + .../dxf/node_modules/lodash/divide.js | 22 + .../dxf/node_modules/lodash/drop.js | 38 + .../dxf/node_modules/lodash/dropRight.js | 39 + .../dxf/node_modules/lodash/dropRightWhile.js | 45 + .../dxf/node_modules/lodash/dropWhile.js | 45 + .../dxf/node_modules/lodash/each.js | 1 + .../dxf/node_modules/lodash/eachRight.js | 1 + .../dxf/node_modules/lodash/endsWith.js | 43 + .../dxf/node_modules/lodash/entries.js | 1 + .../dxf/node_modules/lodash/entriesIn.js | 1 + .../dxf/node_modules/lodash/eq.js | 37 + .../dxf/node_modules/lodash/escape.js | 43 + .../dxf/node_modules/lodash/escapeRegExp.js | 32 + .../dxf/node_modules/lodash/every.js | 56 + .../dxf/node_modules/lodash/extend.js | 1 + .../dxf/node_modules/lodash/extendWith.js | 1 + .../dxf/node_modules/lodash/fill.js | 45 + .../dxf/node_modules/lodash/filter.js | 52 + .../dxf/node_modules/lodash/find.js | 42 + .../dxf/node_modules/lodash/findIndex.js | 55 + .../dxf/node_modules/lodash/findKey.js | 44 + .../dxf/node_modules/lodash/findLast.js | 25 + .../dxf/node_modules/lodash/findLastIndex.js | 59 + .../dxf/node_modules/lodash/findLastKey.js | 44 + .../dxf/node_modules/lodash/first.js | 1 + .../dxf/node_modules/lodash/flatMap.js | 29 + .../dxf/node_modules/lodash/flatMapDeep.js | 31 + .../dxf/node_modules/lodash/flatMapDepth.js | 31 + .../dxf/node_modules/lodash/flatten.js | 22 + .../dxf/node_modules/lodash/flattenDeep.js | 25 + .../dxf/node_modules/lodash/flattenDepth.js | 33 + .../dxf/node_modules/lodash/flip.js | 28 + .../dxf/node_modules/lodash/floor.js | 26 + .../dxf/node_modules/lodash/flow.js | 27 + .../dxf/node_modules/lodash/flowRight.js | 26 + .../dxf/node_modules/lodash/forEach.js | 41 + .../dxf/node_modules/lodash/forEachRight.js | 31 + .../dxf/node_modules/lodash/forIn.js | 39 + .../dxf/node_modules/lodash/forInRight.js | 37 + .../dxf/node_modules/lodash/forOwn.js | 36 + .../dxf/node_modules/lodash/forOwnRight.js | 34 + .../dxf/node_modules/lodash/fp.js | 2 + .../dxf/node_modules/lodash/fp/F.js | 1 + .../dxf/node_modules/lodash/fp/T.js | 1 + .../dxf/node_modules/lodash/fp/__.js | 1 + .../node_modules/lodash/fp/_baseConvert.js | 569 + .../node_modules/lodash/fp/_convertBrowser.js | 18 + .../node_modules/lodash/fp/_falseOptions.js | 7 + .../dxf/node_modules/lodash/fp/_mapping.js | 358 + .../dxf/node_modules/lodash/fp/_util.js | 16 + .../dxf/node_modules/lodash/fp/add.js | 5 + .../dxf/node_modules/lodash/fp/after.js | 5 + .../dxf/node_modules/lodash/fp/all.js | 1 + .../dxf/node_modules/lodash/fp/allPass.js | 1 + .../dxf/node_modules/lodash/fp/always.js | 1 + .../dxf/node_modules/lodash/fp/any.js | 1 + .../dxf/node_modules/lodash/fp/anyPass.js | 1 + .../dxf/node_modules/lodash/fp/apply.js | 1 + .../dxf/node_modules/lodash/fp/array.js | 2 + .../dxf/node_modules/lodash/fp/ary.js | 5 + .../dxf/node_modules/lodash/fp/assign.js | 5 + .../dxf/node_modules/lodash/fp/assignAll.js | 5 + .../node_modules/lodash/fp/assignAllWith.js | 5 + .../dxf/node_modules/lodash/fp/assignIn.js | 5 + .../dxf/node_modules/lodash/fp/assignInAll.js | 5 + .../node_modules/lodash/fp/assignInAllWith.js | 5 + .../node_modules/lodash/fp/assignInWith.js | 5 + .../dxf/node_modules/lodash/fp/assignWith.js | 5 + .../dxf/node_modules/lodash/fp/assoc.js | 1 + .../dxf/node_modules/lodash/fp/assocPath.js | 1 + .../dxf/node_modules/lodash/fp/at.js | 5 + .../dxf/node_modules/lodash/fp/attempt.js | 5 + .../dxf/node_modules/lodash/fp/before.js | 5 + .../dxf/node_modules/lodash/fp/bind.js | 5 + .../dxf/node_modules/lodash/fp/bindAll.js | 5 + .../dxf/node_modules/lodash/fp/bindKey.js | 5 + .../dxf/node_modules/lodash/fp/camelCase.js | 5 + .../dxf/node_modules/lodash/fp/capitalize.js | 5 + .../dxf/node_modules/lodash/fp/castArray.js | 5 + .../dxf/node_modules/lodash/fp/ceil.js | 5 + .../dxf/node_modules/lodash/fp/chain.js | 5 + .../dxf/node_modules/lodash/fp/chunk.js | 5 + .../dxf/node_modules/lodash/fp/clamp.js | 5 + .../dxf/node_modules/lodash/fp/clone.js | 5 + .../dxf/node_modules/lodash/fp/cloneDeep.js | 5 + .../node_modules/lodash/fp/cloneDeepWith.js | 5 + .../dxf/node_modules/lodash/fp/cloneWith.js | 5 + .../dxf/node_modules/lodash/fp/collection.js | 2 + .../dxf/node_modules/lodash/fp/commit.js | 5 + .../dxf/node_modules/lodash/fp/compact.js | 5 + .../dxf/node_modules/lodash/fp/complement.js | 1 + .../dxf/node_modules/lodash/fp/compose.js | 1 + .../dxf/node_modules/lodash/fp/concat.js | 5 + .../dxf/node_modules/lodash/fp/cond.js | 5 + .../dxf/node_modules/lodash/fp/conforms.js | 1 + .../dxf/node_modules/lodash/fp/conformsTo.js | 5 + .../dxf/node_modules/lodash/fp/constant.js | 5 + .../dxf/node_modules/lodash/fp/contains.js | 1 + .../dxf/node_modules/lodash/fp/convert.js | 18 + .../dxf/node_modules/lodash/fp/countBy.js | 5 + .../dxf/node_modules/lodash/fp/create.js | 5 + .../dxf/node_modules/lodash/fp/curry.js | 5 + .../dxf/node_modules/lodash/fp/curryN.js | 5 + .../dxf/node_modules/lodash/fp/curryRight.js | 5 + .../dxf/node_modules/lodash/fp/curryRightN.js | 5 + .../dxf/node_modules/lodash/fp/date.js | 2 + .../dxf/node_modules/lodash/fp/debounce.js | 5 + .../dxf/node_modules/lodash/fp/deburr.js | 5 + .../dxf/node_modules/lodash/fp/defaultTo.js | 5 + .../dxf/node_modules/lodash/fp/defaults.js | 5 + .../dxf/node_modules/lodash/fp/defaultsAll.js | 5 + .../node_modules/lodash/fp/defaultsDeep.js | 5 + .../node_modules/lodash/fp/defaultsDeepAll.js | 5 + .../dxf/node_modules/lodash/fp/defer.js | 5 + .../dxf/node_modules/lodash/fp/delay.js | 5 + .../dxf/node_modules/lodash/fp/difference.js | 5 + .../node_modules/lodash/fp/differenceBy.js | 5 + .../node_modules/lodash/fp/differenceWith.js | 5 + .../dxf/node_modules/lodash/fp/dissoc.js | 1 + .../dxf/node_modules/lodash/fp/dissocPath.js | 1 + .../dxf/node_modules/lodash/fp/divide.js | 5 + .../dxf/node_modules/lodash/fp/drop.js | 5 + .../dxf/node_modules/lodash/fp/dropLast.js | 1 + .../node_modules/lodash/fp/dropLastWhile.js | 1 + .../dxf/node_modules/lodash/fp/dropRight.js | 5 + .../node_modules/lodash/fp/dropRightWhile.js | 5 + .../dxf/node_modules/lodash/fp/dropWhile.js | 5 + .../dxf/node_modules/lodash/fp/each.js | 1 + .../dxf/node_modules/lodash/fp/eachRight.js | 1 + .../dxf/node_modules/lodash/fp/endsWith.js | 5 + .../dxf/node_modules/lodash/fp/entries.js | 1 + .../dxf/node_modules/lodash/fp/entriesIn.js | 1 + .../dxf/node_modules/lodash/fp/eq.js | 5 + .../dxf/node_modules/lodash/fp/equals.js | 1 + .../dxf/node_modules/lodash/fp/escape.js | 5 + .../node_modules/lodash/fp/escapeRegExp.js | 5 + .../dxf/node_modules/lodash/fp/every.js | 5 + .../dxf/node_modules/lodash/fp/extend.js | 1 + .../dxf/node_modules/lodash/fp/extendAll.js | 1 + .../node_modules/lodash/fp/extendAllWith.js | 1 + .../dxf/node_modules/lodash/fp/extendWith.js | 1 + .../dxf/node_modules/lodash/fp/fill.js | 5 + .../dxf/node_modules/lodash/fp/filter.js | 5 + .../dxf/node_modules/lodash/fp/find.js | 5 + .../dxf/node_modules/lodash/fp/findFrom.js | 5 + .../dxf/node_modules/lodash/fp/findIndex.js | 5 + .../node_modules/lodash/fp/findIndexFrom.js | 5 + .../dxf/node_modules/lodash/fp/findKey.js | 5 + .../dxf/node_modules/lodash/fp/findLast.js | 5 + .../node_modules/lodash/fp/findLastFrom.js | 5 + .../node_modules/lodash/fp/findLastIndex.js | 5 + .../lodash/fp/findLastIndexFrom.js | 5 + .../dxf/node_modules/lodash/fp/findLastKey.js | 5 + .../dxf/node_modules/lodash/fp/first.js | 1 + .../dxf/node_modules/lodash/fp/flatMap.js | 5 + .../dxf/node_modules/lodash/fp/flatMapDeep.js | 5 + .../node_modules/lodash/fp/flatMapDepth.js | 5 + .../dxf/node_modules/lodash/fp/flatten.js | 5 + .../dxf/node_modules/lodash/fp/flattenDeep.js | 5 + .../node_modules/lodash/fp/flattenDepth.js | 5 + .../dxf/node_modules/lodash/fp/flip.js | 5 + .../dxf/node_modules/lodash/fp/floor.js | 5 + .../dxf/node_modules/lodash/fp/flow.js | 5 + .../dxf/node_modules/lodash/fp/flowRight.js | 5 + .../dxf/node_modules/lodash/fp/forEach.js | 5 + .../node_modules/lodash/fp/forEachRight.js | 5 + .../dxf/node_modules/lodash/fp/forIn.js | 5 + .../dxf/node_modules/lodash/fp/forInRight.js | 5 + .../dxf/node_modules/lodash/fp/forOwn.js | 5 + .../dxf/node_modules/lodash/fp/forOwnRight.js | 5 + .../dxf/node_modules/lodash/fp/fromPairs.js | 5 + .../dxf/node_modules/lodash/fp/function.js | 2 + .../dxf/node_modules/lodash/fp/functions.js | 5 + .../dxf/node_modules/lodash/fp/functionsIn.js | 5 + .../dxf/node_modules/lodash/fp/get.js | 5 + .../dxf/node_modules/lodash/fp/getOr.js | 5 + .../dxf/node_modules/lodash/fp/groupBy.js | 5 + .../dxf/node_modules/lodash/fp/gt.js | 5 + .../dxf/node_modules/lodash/fp/gte.js | 5 + .../dxf/node_modules/lodash/fp/has.js | 5 + .../dxf/node_modules/lodash/fp/hasIn.js | 5 + .../dxf/node_modules/lodash/fp/head.js | 5 + .../dxf/node_modules/lodash/fp/identical.js | 1 + .../dxf/node_modules/lodash/fp/identity.js | 5 + .../dxf/node_modules/lodash/fp/inRange.js | 5 + .../dxf/node_modules/lodash/fp/includes.js | 5 + .../node_modules/lodash/fp/includesFrom.js | 5 + .../dxf/node_modules/lodash/fp/indexBy.js | 1 + .../dxf/node_modules/lodash/fp/indexOf.js | 5 + .../dxf/node_modules/lodash/fp/indexOfFrom.js | 5 + .../dxf/node_modules/lodash/fp/init.js | 1 + .../dxf/node_modules/lodash/fp/initial.js | 5 + .../node_modules/lodash/fp/intersection.js | 5 + .../node_modules/lodash/fp/intersectionBy.js | 5 + .../lodash/fp/intersectionWith.js | 5 + .../dxf/node_modules/lodash/fp/invert.js | 5 + .../dxf/node_modules/lodash/fp/invertBy.js | 5 + .../dxf/node_modules/lodash/fp/invertObj.js | 1 + .../dxf/node_modules/lodash/fp/invoke.js | 5 + .../dxf/node_modules/lodash/fp/invokeArgs.js | 5 + .../node_modules/lodash/fp/invokeArgsMap.js | 5 + .../dxf/node_modules/lodash/fp/invokeMap.js | 5 + .../dxf/node_modules/lodash/fp/isArguments.js | 5 + .../dxf/node_modules/lodash/fp/isArray.js | 5 + .../node_modules/lodash/fp/isArrayBuffer.js | 5 + .../dxf/node_modules/lodash/fp/isArrayLike.js | 5 + .../lodash/fp/isArrayLikeObject.js | 5 + .../dxf/node_modules/lodash/fp/isBoolean.js | 5 + .../dxf/node_modules/lodash/fp/isBuffer.js | 5 + .../dxf/node_modules/lodash/fp/isDate.js | 5 + .../dxf/node_modules/lodash/fp/isElement.js | 5 + .../dxf/node_modules/lodash/fp/isEmpty.js | 5 + .../dxf/node_modules/lodash/fp/isEqual.js | 5 + .../dxf/node_modules/lodash/fp/isEqualWith.js | 5 + .../dxf/node_modules/lodash/fp/isError.js | 5 + .../dxf/node_modules/lodash/fp/isFinite.js | 5 + .../dxf/node_modules/lodash/fp/isFunction.js | 5 + .../dxf/node_modules/lodash/fp/isInteger.js | 5 + .../dxf/node_modules/lodash/fp/isLength.js | 5 + .../dxf/node_modules/lodash/fp/isMap.js | 5 + .../dxf/node_modules/lodash/fp/isMatch.js | 5 + .../dxf/node_modules/lodash/fp/isMatchWith.js | 5 + .../dxf/node_modules/lodash/fp/isNaN.js | 5 + .../dxf/node_modules/lodash/fp/isNative.js | 5 + .../dxf/node_modules/lodash/fp/isNil.js | 5 + .../dxf/node_modules/lodash/fp/isNull.js | 5 + .../dxf/node_modules/lodash/fp/isNumber.js | 5 + .../dxf/node_modules/lodash/fp/isObject.js | 5 + .../node_modules/lodash/fp/isObjectLike.js | 5 + .../node_modules/lodash/fp/isPlainObject.js | 5 + .../dxf/node_modules/lodash/fp/isRegExp.js | 5 + .../node_modules/lodash/fp/isSafeInteger.js | 5 + .../dxf/node_modules/lodash/fp/isSet.js | 5 + .../dxf/node_modules/lodash/fp/isString.js | 5 + .../dxf/node_modules/lodash/fp/isSymbol.js | 5 + .../node_modules/lodash/fp/isTypedArray.js | 5 + .../dxf/node_modules/lodash/fp/isUndefined.js | 5 + .../dxf/node_modules/lodash/fp/isWeakMap.js | 5 + .../dxf/node_modules/lodash/fp/isWeakSet.js | 5 + .../dxf/node_modules/lodash/fp/iteratee.js | 5 + .../dxf/node_modules/lodash/fp/join.js | 5 + .../dxf/node_modules/lodash/fp/juxt.js | 1 + .../dxf/node_modules/lodash/fp/kebabCase.js | 5 + .../dxf/node_modules/lodash/fp/keyBy.js | 5 + .../dxf/node_modules/lodash/fp/keys.js | 5 + .../dxf/node_modules/lodash/fp/keysIn.js | 5 + .../dxf/node_modules/lodash/fp/lang.js | 2 + .../dxf/node_modules/lodash/fp/last.js | 5 + .../dxf/node_modules/lodash/fp/lastIndexOf.js | 5 + .../node_modules/lodash/fp/lastIndexOfFrom.js | 5 + .../dxf/node_modules/lodash/fp/lowerCase.js | 5 + .../dxf/node_modules/lodash/fp/lowerFirst.js | 5 + .../dxf/node_modules/lodash/fp/lt.js | 5 + .../dxf/node_modules/lodash/fp/lte.js | 5 + .../dxf/node_modules/lodash/fp/map.js | 5 + .../dxf/node_modules/lodash/fp/mapKeys.js | 5 + .../dxf/node_modules/lodash/fp/mapValues.js | 5 + .../dxf/node_modules/lodash/fp/matches.js | 1 + .../node_modules/lodash/fp/matchesProperty.js | 5 + .../dxf/node_modules/lodash/fp/math.js | 2 + .../dxf/node_modules/lodash/fp/max.js | 5 + .../dxf/node_modules/lodash/fp/maxBy.js | 5 + .../dxf/node_modules/lodash/fp/mean.js | 5 + .../dxf/node_modules/lodash/fp/meanBy.js | 5 + .../dxf/node_modules/lodash/fp/memoize.js | 5 + .../dxf/node_modules/lodash/fp/merge.js | 5 + .../dxf/node_modules/lodash/fp/mergeAll.js | 5 + .../node_modules/lodash/fp/mergeAllWith.js | 5 + .../dxf/node_modules/lodash/fp/mergeWith.js | 5 + .../dxf/node_modules/lodash/fp/method.js | 5 + .../dxf/node_modules/lodash/fp/methodOf.js | 5 + .../dxf/node_modules/lodash/fp/min.js | 5 + .../dxf/node_modules/lodash/fp/minBy.js | 5 + .../dxf/node_modules/lodash/fp/mixin.js | 5 + .../dxf/node_modules/lodash/fp/multiply.js | 5 + .../dxf/node_modules/lodash/fp/nAry.js | 1 + .../dxf/node_modules/lodash/fp/negate.js | 5 + .../dxf/node_modules/lodash/fp/next.js | 5 + .../dxf/node_modules/lodash/fp/noop.js | 5 + .../dxf/node_modules/lodash/fp/now.js | 5 + .../dxf/node_modules/lodash/fp/nth.js | 5 + .../dxf/node_modules/lodash/fp/nthArg.js | 5 + .../dxf/node_modules/lodash/fp/number.js | 2 + .../dxf/node_modules/lodash/fp/object.js | 2 + .../dxf/node_modules/lodash/fp/omit.js | 5 + .../dxf/node_modules/lodash/fp/omitAll.js | 1 + .../dxf/node_modules/lodash/fp/omitBy.js | 5 + .../dxf/node_modules/lodash/fp/once.js | 5 + .../dxf/node_modules/lodash/fp/orderBy.js | 5 + .../dxf/node_modules/lodash/fp/over.js | 5 + .../dxf/node_modules/lodash/fp/overArgs.js | 5 + .../dxf/node_modules/lodash/fp/overEvery.js | 5 + .../dxf/node_modules/lodash/fp/overSome.js | 5 + .../dxf/node_modules/lodash/fp/pad.js | 5 + .../dxf/node_modules/lodash/fp/padChars.js | 5 + .../dxf/node_modules/lodash/fp/padCharsEnd.js | 5 + .../node_modules/lodash/fp/padCharsStart.js | 5 + .../dxf/node_modules/lodash/fp/padEnd.js | 5 + .../dxf/node_modules/lodash/fp/padStart.js | 5 + .../dxf/node_modules/lodash/fp/parseInt.js | 5 + .../dxf/node_modules/lodash/fp/partial.js | 5 + .../node_modules/lodash/fp/partialRight.js | 5 + .../dxf/node_modules/lodash/fp/partition.js | 5 + .../dxf/node_modules/lodash/fp/path.js | 1 + .../dxf/node_modules/lodash/fp/pathEq.js | 1 + .../dxf/node_modules/lodash/fp/pathOr.js | 1 + .../dxf/node_modules/lodash/fp/paths.js | 1 + .../dxf/node_modules/lodash/fp/pick.js | 5 + .../dxf/node_modules/lodash/fp/pickAll.js | 1 + .../dxf/node_modules/lodash/fp/pickBy.js | 5 + .../dxf/node_modules/lodash/fp/pipe.js | 1 + .../dxf/node_modules/lodash/fp/placeholder.js | 6 + .../dxf/node_modules/lodash/fp/plant.js | 5 + .../dxf/node_modules/lodash/fp/pluck.js | 1 + .../dxf/node_modules/lodash/fp/prop.js | 1 + .../dxf/node_modules/lodash/fp/propEq.js | 1 + .../dxf/node_modules/lodash/fp/propOr.js | 1 + .../dxf/node_modules/lodash/fp/property.js | 1 + .../dxf/node_modules/lodash/fp/propertyOf.js | 5 + .../dxf/node_modules/lodash/fp/props.js | 1 + .../dxf/node_modules/lodash/fp/pull.js | 5 + .../dxf/node_modules/lodash/fp/pullAll.js | 5 + .../dxf/node_modules/lodash/fp/pullAllBy.js | 5 + .../dxf/node_modules/lodash/fp/pullAllWith.js | 5 + .../dxf/node_modules/lodash/fp/pullAt.js | 5 + .../dxf/node_modules/lodash/fp/random.js | 5 + .../dxf/node_modules/lodash/fp/range.js | 5 + .../dxf/node_modules/lodash/fp/rangeRight.js | 5 + .../dxf/node_modules/lodash/fp/rangeStep.js | 5 + .../node_modules/lodash/fp/rangeStepRight.js | 5 + .../dxf/node_modules/lodash/fp/rearg.js | 5 + .../dxf/node_modules/lodash/fp/reduce.js | 5 + .../dxf/node_modules/lodash/fp/reduceRight.js | 5 + .../dxf/node_modules/lodash/fp/reject.js | 5 + .../dxf/node_modules/lodash/fp/remove.js | 5 + .../dxf/node_modules/lodash/fp/repeat.js | 5 + .../dxf/node_modules/lodash/fp/replace.js | 5 + .../dxf/node_modules/lodash/fp/rest.js | 5 + .../dxf/node_modules/lodash/fp/restFrom.js | 5 + .../dxf/node_modules/lodash/fp/result.js | 5 + .../dxf/node_modules/lodash/fp/reverse.js | 5 + .../dxf/node_modules/lodash/fp/round.js | 5 + .../dxf/node_modules/lodash/fp/sample.js | 5 + .../dxf/node_modules/lodash/fp/sampleSize.js | 5 + .../dxf/node_modules/lodash/fp/seq.js | 2 + .../dxf/node_modules/lodash/fp/set.js | 5 + .../dxf/node_modules/lodash/fp/setWith.js | 5 + .../dxf/node_modules/lodash/fp/shuffle.js | 5 + .../dxf/node_modules/lodash/fp/size.js | 5 + .../dxf/node_modules/lodash/fp/slice.js | 5 + .../dxf/node_modules/lodash/fp/snakeCase.js | 5 + .../dxf/node_modules/lodash/fp/some.js | 5 + .../dxf/node_modules/lodash/fp/sortBy.js | 5 + .../dxf/node_modules/lodash/fp/sortedIndex.js | 5 + .../node_modules/lodash/fp/sortedIndexBy.js | 5 + .../node_modules/lodash/fp/sortedIndexOf.js | 5 + .../node_modules/lodash/fp/sortedLastIndex.js | 5 + .../lodash/fp/sortedLastIndexBy.js | 5 + .../lodash/fp/sortedLastIndexOf.js | 5 + .../dxf/node_modules/lodash/fp/sortedUniq.js | 5 + .../node_modules/lodash/fp/sortedUniqBy.js | 5 + .../dxf/node_modules/lodash/fp/split.js | 5 + .../dxf/node_modules/lodash/fp/spread.js | 5 + .../dxf/node_modules/lodash/fp/spreadFrom.js | 5 + .../dxf/node_modules/lodash/fp/startCase.js | 5 + .../dxf/node_modules/lodash/fp/startsWith.js | 5 + .../dxf/node_modules/lodash/fp/string.js | 2 + .../dxf/node_modules/lodash/fp/stubArray.js | 5 + .../dxf/node_modules/lodash/fp/stubFalse.js | 5 + .../dxf/node_modules/lodash/fp/stubObject.js | 5 + .../dxf/node_modules/lodash/fp/stubString.js | 5 + .../dxf/node_modules/lodash/fp/stubTrue.js | 5 + .../dxf/node_modules/lodash/fp/subtract.js | 5 + .../dxf/node_modules/lodash/fp/sum.js | 5 + .../dxf/node_modules/lodash/fp/sumBy.js | 5 + .../lodash/fp/symmetricDifference.js | 1 + .../lodash/fp/symmetricDifferenceBy.js | 1 + .../lodash/fp/symmetricDifferenceWith.js | 1 + .../dxf/node_modules/lodash/fp/tail.js | 5 + .../dxf/node_modules/lodash/fp/take.js | 5 + .../dxf/node_modules/lodash/fp/takeLast.js | 1 + .../node_modules/lodash/fp/takeLastWhile.js | 1 + .../dxf/node_modules/lodash/fp/takeRight.js | 5 + .../node_modules/lodash/fp/takeRightWhile.js | 5 + .../dxf/node_modules/lodash/fp/takeWhile.js | 5 + .../dxf/node_modules/lodash/fp/tap.js | 5 + .../dxf/node_modules/lodash/fp/template.js | 5 + .../lodash/fp/templateSettings.js | 5 + .../dxf/node_modules/lodash/fp/throttle.js | 5 + .../dxf/node_modules/lodash/fp/thru.js | 5 + .../dxf/node_modules/lodash/fp/times.js | 5 + .../dxf/node_modules/lodash/fp/toArray.js | 5 + .../dxf/node_modules/lodash/fp/toFinite.js | 5 + .../dxf/node_modules/lodash/fp/toInteger.js | 5 + .../dxf/node_modules/lodash/fp/toIterator.js | 5 + .../dxf/node_modules/lodash/fp/toJSON.js | 5 + .../dxf/node_modules/lodash/fp/toLength.js | 5 + .../dxf/node_modules/lodash/fp/toLower.js | 5 + .../dxf/node_modules/lodash/fp/toNumber.js | 5 + .../dxf/node_modules/lodash/fp/toPairs.js | 5 + .../dxf/node_modules/lodash/fp/toPairsIn.js | 5 + .../dxf/node_modules/lodash/fp/toPath.js | 5 + .../node_modules/lodash/fp/toPlainObject.js | 5 + .../node_modules/lodash/fp/toSafeInteger.js | 5 + .../dxf/node_modules/lodash/fp/toString.js | 5 + .../dxf/node_modules/lodash/fp/toUpper.js | 5 + .../dxf/node_modules/lodash/fp/transform.js | 5 + .../dxf/node_modules/lodash/fp/trim.js | 5 + .../dxf/node_modules/lodash/fp/trimChars.js | 5 + .../node_modules/lodash/fp/trimCharsEnd.js | 5 + .../node_modules/lodash/fp/trimCharsStart.js | 5 + .../dxf/node_modules/lodash/fp/trimEnd.js | 5 + .../dxf/node_modules/lodash/fp/trimStart.js | 5 + .../dxf/node_modules/lodash/fp/truncate.js | 5 + .../dxf/node_modules/lodash/fp/unapply.js | 1 + .../dxf/node_modules/lodash/fp/unary.js | 5 + .../dxf/node_modules/lodash/fp/unescape.js | 5 + .../dxf/node_modules/lodash/fp/union.js | 5 + .../dxf/node_modules/lodash/fp/unionBy.js | 5 + .../dxf/node_modules/lodash/fp/unionWith.js | 5 + .../dxf/node_modules/lodash/fp/uniq.js | 5 + .../dxf/node_modules/lodash/fp/uniqBy.js | 5 + .../dxf/node_modules/lodash/fp/uniqWith.js | 5 + .../dxf/node_modules/lodash/fp/uniqueId.js | 5 + .../dxf/node_modules/lodash/fp/unnest.js | 1 + .../dxf/node_modules/lodash/fp/unset.js | 5 + .../dxf/node_modules/lodash/fp/unzip.js | 5 + .../dxf/node_modules/lodash/fp/unzipWith.js | 5 + .../dxf/node_modules/lodash/fp/update.js | 5 + .../dxf/node_modules/lodash/fp/updateWith.js | 5 + .../dxf/node_modules/lodash/fp/upperCase.js | 5 + .../dxf/node_modules/lodash/fp/upperFirst.js | 5 + .../dxf/node_modules/lodash/fp/useWith.js | 1 + .../dxf/node_modules/lodash/fp/util.js | 2 + .../dxf/node_modules/lodash/fp/value.js | 5 + .../dxf/node_modules/lodash/fp/valueOf.js | 5 + .../dxf/node_modules/lodash/fp/values.js | 5 + .../dxf/node_modules/lodash/fp/valuesIn.js | 5 + .../dxf/node_modules/lodash/fp/where.js | 1 + .../dxf/node_modules/lodash/fp/whereEq.js | 1 + .../dxf/node_modules/lodash/fp/without.js | 5 + .../dxf/node_modules/lodash/fp/words.js | 5 + .../dxf/node_modules/lodash/fp/wrap.js | 5 + .../dxf/node_modules/lodash/fp/wrapperAt.js | 5 + .../node_modules/lodash/fp/wrapperChain.js | 5 + .../node_modules/lodash/fp/wrapperLodash.js | 5 + .../node_modules/lodash/fp/wrapperReverse.js | 5 + .../node_modules/lodash/fp/wrapperValue.js | 5 + .../dxf/node_modules/lodash/fp/xor.js | 5 + .../dxf/node_modules/lodash/fp/xorBy.js | 5 + .../dxf/node_modules/lodash/fp/xorWith.js | 5 + .../dxf/node_modules/lodash/fp/zip.js | 5 + .../dxf/node_modules/lodash/fp/zipAll.js | 5 + .../dxf/node_modules/lodash/fp/zipObj.js | 1 + .../dxf/node_modules/lodash/fp/zipObject.js | 5 + .../node_modules/lodash/fp/zipObjectDeep.js | 5 + .../dxf/node_modules/lodash/fp/zipWith.js | 5 + .../dxf/node_modules/lodash/fromPairs.js | 28 + .../dxf/node_modules/lodash/function.js | 25 + .../dxf/node_modules/lodash/functions.js | 31 + .../dxf/node_modules/lodash/functionsIn.js | 31 + .../dxf/node_modules/lodash/get.js | 33 + .../dxf/node_modules/lodash/groupBy.js | 41 + .../dxf/node_modules/lodash/gt.js | 29 + .../dxf/node_modules/lodash/gte.js | 30 + .../dxf/node_modules/lodash/has.js | 35 + .../dxf/node_modules/lodash/hasIn.js | 34 + .../dxf/node_modules/lodash/head.js | 23 + .../dxf/node_modules/lodash/identity.js | 21 + .../dxf/node_modules/lodash/inRange.js | 55 + .../dxf/node_modules/lodash/includes.js | 53 + .../dxf/node_modules/lodash/index.js | 1 + .../dxf/node_modules/lodash/indexOf.js | 42 + .../dxf/node_modules/lodash/initial.js | 22 + .../dxf/node_modules/lodash/intersection.js | 30 + .../dxf/node_modules/lodash/intersectionBy.js | 45 + .../node_modules/lodash/intersectionWith.js | 41 + .../dxf/node_modules/lodash/invert.js | 42 + .../dxf/node_modules/lodash/invertBy.js | 56 + .../dxf/node_modules/lodash/invoke.js | 24 + .../dxf/node_modules/lodash/invokeMap.js | 41 + .../dxf/node_modules/lodash/isArguments.js | 36 + .../dxf/node_modules/lodash/isArray.js | 26 + .../dxf/node_modules/lodash/isArrayBuffer.js | 27 + .../dxf/node_modules/lodash/isArrayLike.js | 33 + .../node_modules/lodash/isArrayLikeObject.js | 33 + .../dxf/node_modules/lodash/isBoolean.js | 29 + .../dxf/node_modules/lodash/isBuffer.js | 38 + .../dxf/node_modules/lodash/isDate.js | 27 + .../dxf/node_modules/lodash/isElement.js | 25 + .../dxf/node_modules/lodash/isEmpty.js | 77 + .../dxf/node_modules/lodash/isEqual.js | 35 + .../dxf/node_modules/lodash/isEqualWith.js | 41 + .../dxf/node_modules/lodash/isError.js | 36 + .../dxf/node_modules/lodash/isFinite.js | 36 + .../dxf/node_modules/lodash/isFunction.js | 37 + .../dxf/node_modules/lodash/isInteger.js | 33 + .../dxf/node_modules/lodash/isLength.js | 35 + .../dxf/node_modules/lodash/isMap.js | 27 + .../dxf/node_modules/lodash/isMatch.js | 36 + .../dxf/node_modules/lodash/isMatchWith.js | 41 + .../dxf/node_modules/lodash/isNaN.js | 38 + .../dxf/node_modules/lodash/isNative.js | 40 + .../dxf/node_modules/lodash/isNil.js | 25 + .../dxf/node_modules/lodash/isNull.js | 22 + .../dxf/node_modules/lodash/isNumber.js | 38 + .../dxf/node_modules/lodash/isObject.js | 31 + .../dxf/node_modules/lodash/isObjectLike.js | 29 + .../dxf/node_modules/lodash/isPlainObject.js | 62 + .../dxf/node_modules/lodash/isRegExp.js | 27 + .../dxf/node_modules/lodash/isSafeInteger.js | 37 + .../dxf/node_modules/lodash/isSet.js | 27 + .../dxf/node_modules/lodash/isString.js | 30 + .../dxf/node_modules/lodash/isSymbol.js | 29 + .../dxf/node_modules/lodash/isTypedArray.js | 27 + .../dxf/node_modules/lodash/isUndefined.js | 22 + .../dxf/node_modules/lodash/isWeakMap.js | 28 + .../dxf/node_modules/lodash/isWeakSet.js | 28 + .../dxf/node_modules/lodash/iteratee.js | 53 + .../dxf/node_modules/lodash/join.js | 26 + .../dxf/node_modules/lodash/kebabCase.js | 28 + .../dxf/node_modules/lodash/keyBy.js | 36 + .../dxf/node_modules/lodash/keys.js | 37 + .../dxf/node_modules/lodash/keysIn.js | 32 + .../dxf/node_modules/lodash/lang.js | 58 + .../dxf/node_modules/lodash/last.js | 20 + .../dxf/node_modules/lodash/lastIndexOf.js | 46 + .../dxf/node_modules/lodash/lodash.js | 17161 + .../dxf/node_modules/lodash/lodash.min.js | 139 + .../dxf/node_modules/lodash/lowerCase.js | 27 + .../dxf/node_modules/lodash/lowerFirst.js | 22 + .../dxf/node_modules/lodash/lt.js | 29 + .../dxf/node_modules/lodash/lte.js | 30 + .../dxf/node_modules/lodash/map.js | 53 + .../dxf/node_modules/lodash/mapKeys.js | 36 + .../dxf/node_modules/lodash/mapValues.js | 43 + .../dxf/node_modules/lodash/matches.js | 46 + .../node_modules/lodash/matchesProperty.js | 44 + .../dxf/node_modules/lodash/math.js | 17 + .../dxf/node_modules/lodash/max.js | 29 + .../dxf/node_modules/lodash/maxBy.js | 34 + .../dxf/node_modules/lodash/mean.js | 22 + .../dxf/node_modules/lodash/meanBy.js | 31 + .../dxf/node_modules/lodash/memoize.js | 73 + .../dxf/node_modules/lodash/merge.js | 39 + .../dxf/node_modules/lodash/mergeWith.js | 39 + .../dxf/node_modules/lodash/method.js | 34 + .../dxf/node_modules/lodash/methodOf.js | 33 + .../dxf/node_modules/lodash/min.js | 29 + .../dxf/node_modules/lodash/minBy.js | 34 + .../dxf/node_modules/lodash/mixin.js | 74 + .../dxf/node_modules/lodash/multiply.js | 22 + .../dxf/node_modules/lodash/negate.js | 40 + .../dxf/node_modules/lodash/next.js | 35 + .../dxf/node_modules/lodash/noop.js | 17 + .../dxf/node_modules/lodash/now.js | 23 + .../dxf/node_modules/lodash/nth.js | 29 + .../dxf/node_modules/lodash/nthArg.js | 32 + .../dxf/node_modules/lodash/number.js | 5 + .../dxf/node_modules/lodash/object.js | 49 + .../dxf/node_modules/lodash/omit.js | 57 + .../dxf/node_modules/lodash/omitBy.js | 29 + .../dxf/node_modules/lodash/once.js | 25 + .../dxf/node_modules/lodash/orderBy.js | 47 + .../dxf/node_modules/lodash/over.js | 24 + .../dxf/node_modules/lodash/overArgs.js | 61 + .../dxf/node_modules/lodash/overEvery.js | 34 + .../dxf/node_modules/lodash/overSome.js | 37 + .../dxf/node_modules/lodash/package.json | 63 + .../dxf/node_modules/lodash/pad.js | 49 + .../dxf/node_modules/lodash/padEnd.js | 39 + .../dxf/node_modules/lodash/padStart.js | 39 + .../dxf/node_modules/lodash/parseInt.js | 43 + .../dxf/node_modules/lodash/partial.js | 50 + .../dxf/node_modules/lodash/partialRight.js | 49 + .../dxf/node_modules/lodash/partition.js | 43 + .../dxf/node_modules/lodash/pick.js | 25 + .../dxf/node_modules/lodash/pickBy.js | 37 + .../dxf/node_modules/lodash/plant.js | 48 + .../dxf/node_modules/lodash/property.js | 32 + .../dxf/node_modules/lodash/propertyOf.js | 30 + .../dxf/node_modules/lodash/pull.js | 29 + .../dxf/node_modules/lodash/pullAll.js | 29 + .../dxf/node_modules/lodash/pullAllBy.js | 33 + .../dxf/node_modules/lodash/pullAllWith.js | 32 + .../dxf/node_modules/lodash/pullAt.js | 43 + .../dxf/node_modules/lodash/random.js | 82 + .../dxf/node_modules/lodash/range.js | 46 + .../dxf/node_modules/lodash/rangeRight.js | 41 + .../dxf/node_modules/lodash/rearg.js | 33 + .../dxf/node_modules/lodash/reduce.js | 51 + .../dxf/node_modules/lodash/reduceRight.js | 36 + .../dxf/node_modules/lodash/reject.js | 46 + .../dxf/node_modules/lodash/remove.js | 53 + .../dxf/node_modules/lodash/repeat.js | 37 + .../dxf/node_modules/lodash/replace.js | 29 + .../dxf/node_modules/lodash/rest.js | 40 + .../dxf/node_modules/lodash/result.js | 56 + .../dxf/node_modules/lodash/reverse.js | 34 + .../dxf/node_modules/lodash/round.js | 26 + .../dxf/node_modules/lodash/sample.js | 24 + .../dxf/node_modules/lodash/sampleSize.js | 37 + .../dxf/node_modules/lodash/seq.js | 16 + .../dxf/node_modules/lodash/set.js | 35 + .../dxf/node_modules/lodash/setWith.js | 32 + .../dxf/node_modules/lodash/shuffle.js | 25 + .../dxf/node_modules/lodash/size.js | 46 + .../dxf/node_modules/lodash/slice.js | 37 + .../dxf/node_modules/lodash/snakeCase.js | 28 + .../dxf/node_modules/lodash/some.js | 51 + .../dxf/node_modules/lodash/sortBy.js | 48 + .../dxf/node_modules/lodash/sortedIndex.js | 24 + .../dxf/node_modules/lodash/sortedIndexBy.js | 33 + .../dxf/node_modules/lodash/sortedIndexOf.js | 31 + .../node_modules/lodash/sortedLastIndex.js | 25 + .../node_modules/lodash/sortedLastIndexBy.js | 33 + .../node_modules/lodash/sortedLastIndexOf.js | 31 + .../dxf/node_modules/lodash/sortedUniq.js | 24 + .../dxf/node_modules/lodash/sortedUniqBy.js | 26 + .../dxf/node_modules/lodash/split.js | 52 + .../dxf/node_modules/lodash/spread.js | 63 + .../dxf/node_modules/lodash/startCase.js | 29 + .../dxf/node_modules/lodash/startsWith.js | 39 + .../dxf/node_modules/lodash/string.js | 33 + .../dxf/node_modules/lodash/stubArray.js | 23 + .../dxf/node_modules/lodash/stubFalse.js | 18 + .../dxf/node_modules/lodash/stubObject.js | 23 + .../dxf/node_modules/lodash/stubString.js | 18 + .../dxf/node_modules/lodash/stubTrue.js | 18 + .../dxf/node_modules/lodash/subtract.js | 22 + .../dxf/node_modules/lodash/sum.js | 24 + .../dxf/node_modules/lodash/sumBy.js | 33 + .../dxf/node_modules/lodash/tail.js | 22 + .../dxf/node_modules/lodash/take.js | 37 + .../dxf/node_modules/lodash/takeRight.js | 39 + .../dxf/node_modules/lodash/takeRightWhile.js | 45 + .../dxf/node_modules/lodash/takeWhile.js | 45 + .../dxf/node_modules/lodash/tap.js | 29 + .../dxf/node_modules/lodash/template.js | 251 + .../node_modules/lodash/templateSettings.js | 67 + .../dxf/node_modules/lodash/throttle.js | 69 + .../dxf/node_modules/lodash/thru.js | 28 + .../dxf/node_modules/lodash/times.js | 51 + .../dxf/node_modules/lodash/toArray.js | 58 + .../dxf/node_modules/lodash/toFinite.js | 42 + .../dxf/node_modules/lodash/toInteger.js | 36 + .../dxf/node_modules/lodash/toIterator.js | 23 + .../dxf/node_modules/lodash/toJSON.js | 1 + .../dxf/node_modules/lodash/toLength.js | 38 + .../dxf/node_modules/lodash/toLower.js | 28 + .../dxf/node_modules/lodash/toNumber.js | 66 + .../dxf/node_modules/lodash/toPairs.js | 30 + .../dxf/node_modules/lodash/toPairsIn.js | 30 + .../dxf/node_modules/lodash/toPath.js | 33 + .../dxf/node_modules/lodash/toPlainObject.js | 32 + .../dxf/node_modules/lodash/toSafeInteger.js | 37 + .../dxf/node_modules/lodash/toString.js | 28 + .../dxf/node_modules/lodash/toUpper.js | 28 + .../dxf/node_modules/lodash/transform.js | 65 + .../dxf/node_modules/lodash/trim.js | 49 + .../dxf/node_modules/lodash/trimEnd.js | 43 + .../dxf/node_modules/lodash/trimStart.js | 43 + .../dxf/node_modules/lodash/truncate.js | 111 + .../dxf/node_modules/lodash/unary.js | 22 + .../dxf/node_modules/lodash/unescape.js | 34 + .../dxf/node_modules/lodash/union.js | 26 + .../dxf/node_modules/lodash/unionBy.js | 39 + .../dxf/node_modules/lodash/unionWith.js | 34 + .../dxf/node_modules/lodash/uniq.js | 25 + .../dxf/node_modules/lodash/uniqBy.js | 31 + .../dxf/node_modules/lodash/uniqWith.js | 28 + .../dxf/node_modules/lodash/uniqueId.js | 28 + .../dxf/node_modules/lodash/unset.js | 34 + .../dxf/node_modules/lodash/unzip.js | 45 + .../dxf/node_modules/lodash/unzipWith.js | 39 + .../dxf/node_modules/lodash/update.js | 35 + .../dxf/node_modules/lodash/updateWith.js | 33 + .../dxf/node_modules/lodash/upperCase.js | 27 + .../dxf/node_modules/lodash/upperFirst.js | 22 + .../dxf/node_modules/lodash/util.js | 34 + .../dxf/node_modules/lodash/value.js | 1 + .../dxf/node_modules/lodash/valueOf.js | 1 + .../dxf/node_modules/lodash/values.js | 34 + .../dxf/node_modules/lodash/valuesIn.js | 32 + .../dxf/node_modules/lodash/without.js | 31 + .../dxf/node_modules/lodash/words.js | 35 + .../dxf/node_modules/lodash/wrap.js | 30 + .../dxf/node_modules/lodash/wrapperAt.js | 48 + .../dxf/node_modules/lodash/wrapperChain.js | 34 + .../dxf/node_modules/lodash/wrapperLodash.js | 147 + .../dxf/node_modules/lodash/wrapperReverse.js | 44 + .../dxf/node_modules/lodash/wrapperValue.js | 21 + .../dxf/node_modules/lodash/xor.js | 28 + .../dxf/node_modules/lodash/xorBy.js | 39 + .../dxf/node_modules/lodash/xorWith.js | 34 + .../dxf/node_modules/lodash/zip.js | 22 + .../dxf/node_modules/lodash/zipObject.js | 24 + .../dxf/node_modules/lodash/zipObjectDeep.js | 23 + .../dxf/node_modules/lodash/zipWith.js | 32 + .../dxf/node_modules/pretty-data/README.md | 78 + .../dxf/node_modules/pretty-data/package.json | 65 + .../node_modules/pretty-data/pretty-data.js | 344 + .../node_modules/pretty-data/test/test_css.js | 12 + .../pretty-data/test/test_json.js | 10 + .../node_modules/pretty-data/test/test_sql.js | 10 + .../node_modules/pretty-data/test/test_xml.js | 12 + .../dxf/node_modules/round10/.npmignore | 1 + .../dxf/node_modules/round10/README.md | 46 + .../dxf/node_modules/round10/package.json | 64 + .../dxf/node_modules/round10/round10.js | 53 + .../dxf/node_modules/round10/test/test.js | 53 + .../dxf/node_modules/vecks/.eslintrc.json | 30 + .../dxf/node_modules/vecks/.travis.yml | 5 + .../dxf/node_modules/vecks/README.md | 13 + .../dxf/node_modules/vecks/lib/Box2.js | 97 + .../dxf/node_modules/vecks/lib/Box3.js | 106 + .../dxf/node_modules/vecks/lib/Line2.js | 121 + .../dxf/node_modules/vecks/lib/Line3.js | 57 + .../dxf/node_modules/vecks/lib/Plane3.js | 88 + .../dxf/node_modules/vecks/lib/Quaternion.js | 62 + .../dxf/node_modules/vecks/lib/V2.js | 75 + .../dxf/node_modules/vecks/lib/V3.js | 90 + .../dxf/node_modules/vecks/lib/index.js | 71 + .../dxf/node_modules/vecks/package.json | 85 + .../dxf/node_modules/vecks/src/Box2.js | 73 + .../dxf/node_modules/vecks/src/Box3.js | 86 + .../dxf/node_modules/vecks/src/Line2.js | 93 + .../dxf/node_modules/vecks/src/Line3.js | 29 + .../dxf/node_modules/vecks/src/Plane3.js | 72 + .../dxf/node_modules/vecks/src/Quaternion.js | 50 + .../dxf/node_modules/vecks/src/V2.js | 46 + .../dxf/node_modules/vecks/src/V3.js | 63 + .../dxf/node_modules/vecks/src/index.js | 10 + .../node_modules/dxf/package.json | 120 + .../node_modules/dxf/src/Helper.js | 62 + .../node_modules/dxf/src/applyTransforms.js | 42 + .../node_modules/dxf/src/cli.js | 29 + .../node_modules/dxf/src/config.js | 3 + .../node_modules/dxf/src/constants.js | 7 + .../node_modules/dxf/src/denormalise.js | 118 + .../node_modules/dxf/src/entityToPolyline.js | 217 + .../node_modules/dxf/src/getRGBForEntity.js | 19 + .../dxf/src/groupEntitiesByLayer.js | 10 + .../node_modules/dxf/src/handlers/blocks.js | 55 + .../node_modules/dxf/src/handlers/entities.js | 82 + .../dxf/src/handlers/entity/arc.js | 43 + .../dxf/src/handlers/entity/circle.js | 32 + .../dxf/src/handlers/entity/common.js | 47 + .../dxf/src/handlers/entity/ellipse.js | 47 + .../dxf/src/handlers/entity/insert.js | 65 + .../dxf/src/handlers/entity/line.js | 43 + .../dxf/src/handlers/entity/lwpolyline.js | 42 + .../dxf/src/handlers/entity/mtext.js | 78 + .../dxf/src/handlers/entity/point.js | 32 + .../dxf/src/handlers/entity/polyline.js | 29 + .../dxf/src/handlers/entity/solid.js | 60 + .../dxf/src/handlers/entity/spline.js | 69 + .../dxf/src/handlers/entity/threeDFace.js | 57 + .../dxf/src/handlers/entity/vertex.js | 27 + .../node_modules/dxf/src/handlers/header.js | 60 + .../node_modules/dxf/src/handlers/tables.js | 129 + .../node_modules/dxf/src/index.js | 19 + .../node_modules/dxf/src/parseString.js | 88 + .../node_modules/dxf/src/toPolylines.js | 37 + .../node_modules/dxf/src/toSVG.js | 307 + .../node_modules/dxf/src/util/bSpline.js | 91 + .../node_modules/dxf/src/util/colors.js | 258 + .../dxf/src/util/createArcForLWPolyline.js | 78 + .../node_modules/dxf/src/util/diagram.png | Bin 0 -> 12717 bytes .../node_modules/dxf/src/util/insertKnot.js | 62 + .../node_modules/dxf/src/util/logger.js | 23 + .../dxf/src/util/rgbToColorAttribute.js | 11 + .../node_modules/dxf/src/util/rotate.js | 12 + .../dxf/src/util/toPiecewiseBezier.js | 62 + .../util/transformBoundingBoxAndElement.js | 68 + .../edit_attributes/edit_attributes.inx | 27 + .../edit_attributes/edit_attributes.py | 40 + .../fablabchemnitz/eggmazing/eggmazing.inx | 22 + .../fablabchemnitz/eggmazing/eggmazing.py | 661 + .../ellipse_by_five_points.inx | 16 + .../ellipse_by_five_points.py | 230 + .../epilog_dashboard_bbox_adjust.inx | 62 + .../epilog_dashboard_bbox_adjust.py | 127 + .../eraser_laser/eraser_layer.inx | 16 + .../eraser_laser/eraser_layer.py | 145 + .../estucheria/airplanetypelinearcase.inx | 26 + .../estucheria/airplanetypelinearcase.py | 239 + .../estucheria/airplanetypelinearcase.svg | 228 + .../estucheria/automaticbottomcase.inx | 26 + .../estucheria/automaticbottomcase.py | 233 + .../estucheria/automaticbottomcase.svg | 236 + .../fablabchemnitz/estucheria/box4p.inx | 23 + extensions/fablabchemnitz/estucheria/box4p.py | 162 + .../fablabchemnitz/estucheria/box4p.svg | 212 + .../estucheria/doublerailingcase.inx | 24 + .../estucheria/doublerailingcase.py | 225 + .../estucheria/doublerailingcase.svg | 220 + .../fablabchemnitz/estucheria/girdle.inx | 24 + .../fablabchemnitz/estucheria/girdle.py | 137 + .../fablabchemnitz/estucheria/girdle.svg | 180 + .../fablabchemnitz/estucheria/linearcase.inx | 26 + .../fablabchemnitz/estucheria/linearcase.py | 239 + .../fablabchemnitz/estucheria/linearcase.svg | 217 + .../estucheria/swissbottomcase.inx | 26 + .../estucheria/swissbottomcase.py | 218 + .../estucheria/swissbottomcase.svg | 232 + .../exponential_distort.inx | 25 + .../exponential_distort.py | 108 + .../export_selection_as.inx | 63 + .../export_selection_as.py | 283 + .../fablabchemnitz/extruder/.gitattributes | 2 + .../fablabchemnitz/extruder/extruder.inx | 47 + .../fablabchemnitz/extruder/extruder.py | 719 + .../fibonacci_pattern/fibonacci_pattern.inx | 20 + .../fibonacci_pattern/fibonacci_pattern.py | 86 + .../fill_rectangle_with_circle.inx | 19 + .../fill_rectangle_with_circle.py | 83 + .../fillet_and_chamfer/fillet_and_chamfer.inx | 28 + .../fillet_and_chamfer/fillet_and_chamfer.py | 293 + .../filter_small_things.inx | 27 + .../filter_small_things.py | 48 + .../filter_to_layer/filter_to_layer.inx | 21 + .../filter_to_layer/filter_to_layer.py | 82 + .../flash_burst/flash_burst.inx | 27 + .../fablabchemnitz/flash_burst/flash_burst.py | 105 + .../flevobezier/flevobezier.inx | 16 + .../fablabchemnitz/flevobezier/flevobezier.py | 241 + extensions/fablabchemnitz/flip/flip.inx | 16 + extensions/fablabchemnitz/flip/flip.py | 38 + .../fablabchemnitz/fret_ruler/fret_ruler.inx | 175 + .../fablabchemnitz/fret_ruler/fret_ruler.py | 503 + .../fablabchemnitz/fret_ruler/fret_scale.py | 399 + .../fablabchemnitz/funshapes/funshapes.inx | 16 + .../fablabchemnitz/funshapes/funshapes.py | 199 + .../gcode_import/gcode_import.py | 670 + .../gcode_import/gcode_import_gcode.inx | 54 + .../gcode_import/gcode_import_nc.inx | 54 + extensions/fablabchemnitz/gears/gears.inx | 94 + extensions/fablabchemnitz/gears/gears.py | 661 + extensions/fablabchemnitz/gears2/gears2.inx | 49 + extensions/fablabchemnitz/gears2/gears2.py | 59 + extensions/fablabchemnitz/gears2/involute.py | 348 + .../generate_palette/.editorconfig | 12 + .../generate_palette/generate_palette.inx | 40 + .../generate_palette/generate_palette.py | 180 + .../fablabchemnitz/generate_palette/info.svg | 1 + extensions/fablabchemnitz/globe/globe.inx | 21 + extensions/fablabchemnitz/globe/globe.py | 266 + .../fablabchemnitz/gpx_import/gpx_import.inx | 28 + .../fablabchemnitz/gpx_import/gpx_import.py | 379 + .../fablabchemnitz/gradient_saver/GUI.glade | 667 + .../gradient_saver/gradient_saver.inx | 16 + .../gradient_saver/gradient_saver.py | 385 + .../fablabchemnitz/gradient_saver/icon.svg | 678 + .../grid_strip_creator/grid_strip_creator.inx | 32 + .../grid_strip_creator/grid_strip_creator.py | 345 + .../group_to_layer/group_to_layer.inx | 17 + .../group_to_layer/group_to_layer.py | 52 + .../guillotine_plus/guillotine_plus.inx | 20 + .../guillotine_plus/guillotine_plus.py | 184 + .../guitar_fretboard/guitar_fretboard.inx | 21 + .../guitar_fretboard/guitar_fretboard.py | 237 + .../fablabchemnitz/hatch_fill/hatch_fill.inx | 47 + .../fablabchemnitz/hatch_fill/hatch_fill.py | 2253 + .../hershey_text_alternative.inx | 97 + .../hershey_text_alternative.py | 1878 + .../svg_fonts/EMSAllure.svg | 235 + .../svg_fonts/EMSElfin.svg | 236 + .../svg_fonts/EMSFelix.svg | 235 + .../svg_fonts/EMSNixish.svg | 235 + .../svg_fonts/EMSNixishItalic.svg | 235 + .../svg_fonts/EMSOsmotron.svg | 235 + .../svg_fonts/EMSReadability.svg | 235 + .../svg_fonts/EMSReadabilityItalic.svg | 235 + .../svg_fonts/EMSTech.svg | 236 + .../svg_fonts/HersheyGothEnglish.svg | 261 + .../svg_fonts/HersheySans1.svg | 260 + .../svg_fonts/HersheySansMed.svg | 260 + .../svg_fonts/HersheyScript1.svg | 261 + .../svg_fonts/HersheyScriptMed.svg | 261 + .../svg_fonts/HersheySerifBold.svg | 261 + .../svg_fonts/HersheySerifBoldItalic.svg | 262 + .../svg_fonts/HersheySerifMed.svg | 260 + .../svg_fonts/HersheySerifMedItalic.svg | 260 + .../svg_fonts/OFL.txt | 97 + .../fablabchemnitz/hex_tiles/hex_tiles.inx | 20 + .../fablabchemnitz/hex_tiles/hex_tiles.py | 457 + .../ids_to_text/ids_to_text.inx | 35 + .../fablabchemnitz/ids_to_text/ids_to_text.py | 51 + .../ifs_fractals/ifs_fractals.inx | 80 + .../ifs_fractals/ifs_fractals.py | 72 + .../image_triangulation.inx | 26 + .../image_triangulation.py | 248 + .../imagetracerjs-master/.eslintrc.json | 24 + .../imagetracerjs-master/.project | 17 + .../imagetracerjs-master/.settings/.jsdtscope | 6 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + .../imagetracerjs-master/LICENSE | 25 + .../imagetracerjs-master/README.md | 306 + .../imagetracerjs-master/bower.json | 34 + .../docimages/cover_problem.png | Bin 0 -> 24588 bytes .../docimages/option_presets.png | Bin 0 -> 1638179 bytes .../docimages/option_presets_small.png | Bin 0 -> 524282 bytes .../imagetracerjs-master/docimages/s1.png | Bin 0 -> 23657 bytes .../imagetracerjs-master/docimages/s10.png | Bin 0 -> 3345 bytes .../imagetracerjs-master/docimages/s11.png | Bin 0 -> 3522 bytes .../imagetracerjs-master/docimages/s12.png | Bin 0 -> 3887 bytes .../imagetracerjs-master/docimages/s13.png | Bin 0 -> 6663 bytes .../imagetracerjs-master/docimages/s14.png | Bin 0 -> 17471 bytes .../imagetracerjs-master/docimages/s15.png | Bin 0 -> 12894 bytes .../imagetracerjs-master/docimages/s2.png | Bin 0 -> 4592 bytes .../imagetracerjs-master/docimages/s3.png | Bin 0 -> 1679 bytes .../imagetracerjs-master/docimages/s4.png | Bin 0 -> 1699 bytes .../imagetracerjs-master/docimages/s7.png | Bin 0 -> 15873 bytes .../imagetracerjs-master/docimages/s8.png | Bin 0 -> 5715 bytes .../imagetracerjs-master/docimages/s9.png | Bin 0 -> 7339 bytes .../docimages/transparency_problem.png | Bin 0 -> 82568 bytes .../imagetracer_examples.html | 82 + .../imagetracer_options_gallery.html | 69 + .../imagetracer_test_automation.html | 334 + .../imagetracer_v1.2.6.js | 1217 + .../imagetracerjs-master/nodecli/PNG.js | 160 + .../imagetracerjs-master/nodecli/PNGReader.js | 418 + .../imagetracerjs-master/nodecli/READTHIS.md | 21 + .../imagetracerjs-master/nodecli/nodecli.js | 85 + .../imagetracerjs-master/options.md | 152 + .../imagetracerjs-master/package.json | 39 + .../imagetracerjs-master/panda.png | Bin 0 -> 45874 bytes .../imagetracerjs-master/panda.png.svg | 1 + .../imagetracerjs-master/process_overview.md | 57 + .../simplify_interop.html | 126 + .../imagetracerjs-master/smiley.png | Bin 0 -> 167 bytes .../imagetracerjs-master/smileyRGB.png | Bin 0 -> 3421 bytes .../imagetracerjs-master/testimages/1.png | Bin 0 -> 177 bytes .../imagetracerjs-master/testimages/10.png | Bin 0 -> 22080 bytes .../imagetracerjs-master/testimages/11.png | Bin 0 -> 15401 bytes .../imagetracerjs-master/testimages/12.png | Bin 0 -> 6446 bytes .../imagetracerjs-master/testimages/13.png | Bin 0 -> 78866 bytes .../imagetracerjs-master/testimages/14.png | Bin 0 -> 27719 bytes .../imagetracerjs-master/testimages/15.png | Bin 0 -> 38577 bytes .../imagetracerjs-master/testimages/16.png | Bin 0 -> 26701 bytes .../imagetracerjs-master/testimages/2.png | Bin 0 -> 29053 bytes .../imagetracerjs-master/testimages/3.png | Bin 0 -> 5351 bytes .../imagetracerjs-master/testimages/4.png | Bin 0 -> 75338 bytes .../imagetracerjs-master/testimages/5.png | Bin 0 -> 42107 bytes .../imagetracerjs-master/testimages/6.png | Bin 0 -> 33906 bytes .../imagetracerjs-master/testimages/7.png | Bin 0 -> 78966 bytes .../imagetracerjs-master/testimages/8.png | Bin 0 -> 21705 bytes .../imagetracerjs-master/testimages/9.png | Bin 0 -> 50423 bytes .../testimages/combined.png | Bin 0 -> 86076 bytes .../imagetracerjs-master/version_history.md | 75 + .../imagetracerjs/imagetracerjs.inx | 93 + .../imagetracerjs/imagetracerjs.py | 212 + .../fablabchemnitz/imagetracerjs/node.exe | Bin 0 -> 10990464 bytes .../import_3d_mesh/Poly3DObjects/cube.obj | 19 + .../import_3d_mesh/Poly3DObjects/cuboct.obj | 30 + .../import_3d_mesh/Poly3DObjects/dodec.obj | 36 + .../Poly3DObjects/great_dodec.obj | 96 + .../Poly3DObjects/great_rhombicosidodec.obj | 185 + .../Poly3DObjects/great_rhombicuboct.obj | 77 + .../Poly3DObjects/great_stel_dodec.obj | 96 + .../import_3d_mesh/Poly3DObjects/icos.obj | 36 + .../Poly3DObjects/icosidodec.obj | 65 + .../Poly3DObjects/jessens_orthog_icos.obj | 35 + .../import_3d_mesh/Poly3DObjects/methane.obj | 13 + .../import_3d_mesh/Poly3DObjects/oct.obj | 17 + .../import_3d_mesh/Poly3DObjects/rh_axes.obj | 12 + .../Poly3DObjects/rhomb_dodec.obj | 29 + .../Poly3DObjects/rhomb_triacont.obj | 65 + .../Poly3DObjects/small_rhombicosidodec.obj | 127 + .../Poly3DObjects/small_rhombicuboct.obj | 54 + .../Poly3DObjects/small_triam_icos.obj | 95 + .../Poly3DObjects/snub_cube.obj | 65 + .../Poly3DObjects/snub_dodec.obj | 156 + .../import_3d_mesh/Poly3DObjects/szilassi.obj | 24 + .../import_3d_mesh/Poly3DObjects/tet.obj | 12 + .../Poly3DObjects/trunc_cube.obj | 42 + .../Poly3DObjects/trunc_dodec.obj | 96 + .../Poly3DObjects/trunc_icos.obj | 96 + .../Poly3DObjects/trunc_oct.obj | 42 + .../Poly3DObjects/trunc_tet.obj | 24 + .../import_3d_mesh/import_3d_mesh.inx | 114 + .../import_3d_mesh/import_3d_mesh.py | 393 + .../import_attributes/import_attributes.inx | 20 + .../import_attributes/import_attributes.py | 45 + .../fablabchemnitz/incadiff/incadiff.inx | 17 + .../fablabchemnitz/incadiff/incadiff.py | 359 + extensions/fablabchemnitz/inkcut/inkcut.py | 57 + .../fablabchemnitz/inkcut/inkcut_cut.inx | 16 + .../fablabchemnitz/inkcut/inkcut_cut.py | 79 + .../fablabchemnitz/inkcut/inkcut_open.inx | 16 + .../fablabchemnitz/inkcut/inkcut_open.py | 70 + extensions/fablabchemnitz/inklin/inklin.glade | 421 + extensions/fablabchemnitz/inklin/inklin.inx | 16 + extensions/fablabchemnitz/inklin/inklin.py | 251 + .../fablabchemnitz/inkpacking/inkpacking.inx | 93 + .../fablabchemnitz/inkpacking/inkpacking.py | 776 + .../fablabchemnitz/inkscape.extension.rng | 550 + .../inkstitch/bin/Include/pyconfig.h | 770 + .../inkstitch/bin/Microsoft.VC90.CRT.manifest | 17 + .../inkstitch/bin/Microsoft.VC90.MFC.manifest | 18 + .../fablabchemnitz/inkstitch/bin/_bsddb.pyd | Bin 0 -> 1106432 bytes .../fablabchemnitz/inkstitch/bin/_ctypes.pyd | Bin 0 -> 92672 bytes .../inkstitch/bin/_elementtree.pyd | Bin 0 -> 142336 bytes .../fablabchemnitz/inkstitch/bin/_hashlib.pyd | Bin 0 -> 1101824 bytes .../inkstitch/bin/_multiprocessing.pyd | Bin 0 -> 27648 bytes .../fablabchemnitz/inkstitch/bin/_socket.pyd | Bin 0 -> 46592 bytes .../fablabchemnitz/inkstitch/bin/_ssl.pyd | Bin 0 -> 1422336 bytes .../inkstitch/bin/_testcapi.pyd | Bin 0 -> 43520 bytes .../fablabchemnitz/inkstitch/bin/_tkinter.pyd | Bin 0 -> 40960 bytes .../inkstitch/bin/_win32sysloader.pyd | Bin 0 -> 8192 bytes .../fablabchemnitz/inkstitch/bin/bz2.pyd | Bin 0 -> 71168 bytes .../inkstitch/bin/certifi/cacert.pem | 4641 + .../fablabchemnitz/inkstitch/bin/geos.dll | Bin 0 -> 692224 bytes .../fablabchemnitz/inkstitch/bin/geos_c.dll | Bin 0 -> 692224 bytes .../inkstitch/bin/icons/pencil.png | Bin 0 -> 15456 bytes .../inkstitch/bin/icons/pencil_20x20.png | Bin 0 -> 734 bytes .../inkstitch/bin/inkstitch.exe | Bin 0 -> 6229208 bytes .../inkstitch/bin/inkstitch.exe.manifest | 25 + ...CB7DB4HQYDV2LEPUALNSYMY.gfortran-win32.dll | Bin 0 -> 27666472 bytes .../locales/af_ZA/LC_MESSAGES/inkstitch.mo | Bin 0 -> 650 bytes .../locales/ar_SA/LC_MESSAGES/inkstitch.mo | Bin 0 -> 732 bytes .../locales/ca_ES/LC_MESSAGES/inkstitch.mo | Bin 0 -> 648 bytes .../locales/cs_CZ/LC_MESSAGES/inkstitch.mo | Bin 0 -> 926 bytes .../locales/da_DK/LC_MESSAGES/inkstitch.mo | Bin 0 -> 647 bytes .../locales/de_DE/LC_MESSAGES/inkstitch.mo | Bin 0 -> 42326 bytes .../locales/el_GR/LC_MESSAGES/inkstitch.mo | Bin 0 -> 646 bytes .../locales/en_US/LC_MESSAGES/inkstitch.mo | Bin 0 -> 648 bytes .../locales/es_ES/LC_MESSAGES/inkstitch.mo | Bin 0 -> 9024 bytes .../locales/fi_FI/LC_MESSAGES/inkstitch.mo | Bin 0 -> 26810 bytes .../locales/fr_FR/LC_MESSAGES/inkstitch.mo | Bin 0 -> 43575 bytes .../locales/he_IL/LC_MESSAGES/inkstitch.mo | Bin 0 -> 697 bytes .../locales/hu_HU/LC_MESSAGES/inkstitch.mo | Bin 0 -> 650 bytes .../locales/it_IT/LC_MESSAGES/inkstitch.mo | Bin 0 -> 42566 bytes .../locales/ja_JP/LC_MESSAGES/inkstitch.mo | Bin 0 -> 642 bytes .../locales/ko_KR/LC_MESSAGES/inkstitch.mo | Bin 0 -> 640 bytes .../locales/nl_NL/LC_MESSAGES/inkstitch.mo | Bin 0 -> 1092 bytes .../locales/no_NO/LC_MESSAGES/inkstitch.mo | Bin 0 -> 1294 bytes .../locales/pl_PL/LC_MESSAGES/inkstitch.mo | Bin 0 -> 3363 bytes .../locales/pt_BR/LC_MESSAGES/inkstitch.mo | Bin 0 -> 1689 bytes .../locales/pt_PT/LC_MESSAGES/inkstitch.mo | Bin 0 -> 6702 bytes .../locales/ro_RO/LC_MESSAGES/inkstitch.mo | Bin 0 -> 693 bytes .../locales/ru_RU/LC_MESSAGES/inkstitch.mo | Bin 0 -> 895 bytes .../locales/sr_SP/LC_MESSAGES/inkstitch.mo | Bin 0 -> 733 bytes .../locales/sv_SE/LC_MESSAGES/inkstitch.mo | Bin 0 -> 651 bytes .../locales/tr_TR/LC_MESSAGES/inkstitch.mo | Bin 0 -> 6752 bytes .../locales/uk_UA/LC_MESSAGES/inkstitch.mo | Bin 0 -> 22144 bytes .../locales/vi_VN/LC_MESSAGES/inkstitch.mo | Bin 0 -> 644 bytes .../locales/zh_CN/LC_MESSAGES/inkstitch.mo | Bin 0 -> 655 bytes .../locales/zh_TW/LC_MESSAGES/inkstitch.mo | Bin 0 -> 656 bytes .../inkstitch/bin/lxml._elementpath.pyd | Bin 0 -> 121856 bytes .../inkstitch/bin/lxml.etree.pyd | Bin 0 -> 3330048 bytes .../inkstitch/bin/markupsafe._speedups.pyd | Bin 0 -> 8192 bytes .../fablabchemnitz/inkstitch/bin/mfc90.dll | Bin 0 -> 1147904 bytes .../fablabchemnitz/inkstitch/bin/mfc90u.dll | Bin 0 -> 1154048 bytes .../fablabchemnitz/inkstitch/bin/mfcm90.dll | Bin 0 -> 59904 bytes .../fablabchemnitz/inkstitch/bin/mfcm90u.dll | Bin 0 -> 59904 bytes .../fablabchemnitz/inkstitch/bin/msvcm90.dll | Bin 0 -> 225280 bytes .../fablabchemnitz/inkstitch/bin/msvcp90.dll | Bin 0 -> 570496 bytes .../fablabchemnitz/inkstitch/bin/msvcr90.dll | Bin 0 -> 653952 bytes .../bin/numpy.core._multiarray_tests.pyd | Bin 0 -> 104448 bytes .../inkstitch/bin/numpy.core.multiarray.pyd | Bin 0 -> 1227264 bytes .../inkstitch/bin/numpy.core.umath.pyd | Bin 0 -> 717312 bytes .../inkstitch/bin/numpy.fft.fftpack_lite.pyd | Bin 0 -> 66560 bytes .../bin/numpy.linalg._umath_linalg.pyd | Bin 0 -> 108032 bytes .../bin/numpy.linalg.lapack_lite.pyd | Bin 0 -> 12800 bytes .../inkstitch/bin/numpy.random.mtrand.pyd | Bin 0 -> 665088 bytes .../bin/print/resources/barlow-bold.ttf | Bin 0 -> 46252 bytes .../print/resources/barlow-condensed-bold.ttf | Bin 0 -> 47944 bytes .../resources/barlow-condensed-extra-bold.ttf | Bin 0 -> 48160 bytes .../bin/print/resources/barlow-extra-bold.ttf | Bin 0 -> 48808 bytes .../inkstitch/bin/print/resources/barlow.ttf | Bin 0 -> 45476 bytes .../bin/print/resources/barlow_condensed.ttf | Bin 0 -> 45476 bytes .../inkstitch/bin/print/resources/favicon.ico | Bin 0 -> 102290 bytes .../bin/print/resources/inkstitch-logo.svg | 98 + .../bin/print/resources/inkstitch.js | 734 + .../bin/print/resources/jquery-3.3.1.min.js | 2 + .../inkstitch/bin/print/resources/style.css | 1183 + .../bin/print/templates/color_swatch.html | 51 + .../bin/print/templates/custom-page.html | 40 + .../inkstitch/bin/print/templates/footer.html | 8 + .../bin/print/templates/headline.html | 16 + .../inkstitch/bin/print/templates/index.html | 33 + .../templates/operator_detailedview.html | 75 + .../print/templates/operator_overview.html | 36 + .../bin/print/templates/print_detail.html | 30 + .../bin/print/templates/print_overview.html | 45 + .../inkstitch/bin/print/templates/ui.html | 172 + .../templates/ui_svg_action_buttons.html | 15 + .../fablabchemnitz/inkstitch/bin/pyexpat.pyd | Bin 0 -> 142336 bytes .../fablabchemnitz/inkstitch/bin/python27.dll | Bin 0 -> 2650112 bytes .../inkstitch/bin/pythoncom27.dll | Bin 0 -> 397824 bytes .../inkstitch/bin/pywintypes27.dll | Bin 0 -> 110592 bytes .../fablabchemnitz/inkstitch/bin/select.pyd | Bin 0 -> 10240 bytes .../bin/shapely.speedups._speedups.pyd | Bin 0 -> 102912 bytes .../fablabchemnitz/inkstitch/bin/tcl/auto.tcl | 618 + .../inkstitch/bin/tcl/clock.tcl | 4695 + .../inkstitch/bin/tcl/encoding/ascii.enc | 20 + .../inkstitch/bin/tcl/encoding/big5.enc | 1516 + .../inkstitch/bin/tcl/encoding/cp1250.enc | 20 + .../inkstitch/bin/tcl/encoding/cp1251.enc | 20 + .../inkstitch/bin/tcl/encoding/cp1252.enc | 20 + .../inkstitch/bin/tcl/encoding/cp1253.enc | 20 + .../inkstitch/bin/tcl/encoding/cp1254.enc | 20 + .../inkstitch/bin/tcl/encoding/cp1255.enc | 20 + .../inkstitch/bin/tcl/encoding/cp1256.enc | 20 + .../inkstitch/bin/tcl/encoding/cp1257.enc | 20 + .../inkstitch/bin/tcl/encoding/cp1258.enc | 20 + .../inkstitch/bin/tcl/encoding/cp437.enc | 20 + .../inkstitch/bin/tcl/encoding/cp737.enc | 20 + .../inkstitch/bin/tcl/encoding/cp775.enc | 20 + .../inkstitch/bin/tcl/encoding/cp850.enc | 20 + .../inkstitch/bin/tcl/encoding/cp852.enc | 20 + .../inkstitch/bin/tcl/encoding/cp855.enc | 20 + .../inkstitch/bin/tcl/encoding/cp857.enc | 20 + .../inkstitch/bin/tcl/encoding/cp860.enc | 20 + .../inkstitch/bin/tcl/encoding/cp861.enc | 20 + .../inkstitch/bin/tcl/encoding/cp862.enc | 20 + .../inkstitch/bin/tcl/encoding/cp863.enc | 20 + .../inkstitch/bin/tcl/encoding/cp864.enc | 20 + .../inkstitch/bin/tcl/encoding/cp865.enc | 20 + .../inkstitch/bin/tcl/encoding/cp866.enc | 20 + .../inkstitch/bin/tcl/encoding/cp869.enc | 20 + .../inkstitch/bin/tcl/encoding/cp874.enc | 20 + .../inkstitch/bin/tcl/encoding/cp932.enc | 801 + .../inkstitch/bin/tcl/encoding/cp936.enc | 2162 + .../inkstitch/bin/tcl/encoding/cp949.enc | 2128 + .../inkstitch/bin/tcl/encoding/cp950.enc | 1499 + .../inkstitch/bin/tcl/encoding/dingbats.enc | 20 + .../inkstitch/bin/tcl/encoding/ebcdic.enc | 19 + .../inkstitch/bin/tcl/encoding/euc-cn.enc | 1397 + .../inkstitch/bin/tcl/encoding/euc-jp.enc | 1353 + .../inkstitch/bin/tcl/encoding/euc-kr.enc | 1533 + .../inkstitch/bin/tcl/encoding/gb12345.enc | 1414 + .../inkstitch/bin/tcl/encoding/gb1988.enc | 20 + .../inkstitch/bin/tcl/encoding/gb2312-raw.enc | 1380 + .../inkstitch/bin/tcl/encoding/gb2312.enc | 1397 + .../inkstitch/bin/tcl/encoding/iso2022-jp.enc | 12 + .../inkstitch/bin/tcl/encoding/iso2022-kr.enc | 7 + .../inkstitch/bin/tcl/encoding/iso2022.enc | 14 + .../inkstitch/bin/tcl/encoding/iso8859-1.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-10.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-13.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-14.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-15.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-16.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-2.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-3.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-4.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-5.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-6.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-7.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-8.enc | 20 + .../inkstitch/bin/tcl/encoding/iso8859-9.enc | 20 + .../inkstitch/bin/tcl/encoding/jis0201.enc | 20 + .../inkstitch/bin/tcl/encoding/jis0208.enc | 1319 + .../inkstitch/bin/tcl/encoding/jis0212.enc | 1159 + .../inkstitch/bin/tcl/encoding/koi8-r.enc | 20 + .../inkstitch/bin/tcl/encoding/koi8-u.enc | 20 + .../inkstitch/bin/tcl/encoding/ksc5601.enc | 1516 + .../bin/tcl/encoding/macCentEuro.enc | 20 + .../bin/tcl/encoding/macCroatian.enc | 20 + .../bin/tcl/encoding/macCyrillic.enc | 20 + .../bin/tcl/encoding/macDingbats.enc | 20 + .../inkstitch/bin/tcl/encoding/macGreek.enc | 20 + .../inkstitch/bin/tcl/encoding/macIceland.enc | 20 + .../inkstitch/bin/tcl/encoding/macJapan.enc | 785 + .../inkstitch/bin/tcl/encoding/macRoman.enc | 20 + .../inkstitch/bin/tcl/encoding/macRomania.enc | 20 + .../inkstitch/bin/tcl/encoding/macThai.enc | 20 + .../inkstitch/bin/tcl/encoding/macTurkish.enc | 20 + .../inkstitch/bin/tcl/encoding/macUkraine.enc | 20 + .../inkstitch/bin/tcl/encoding/shiftjis.enc | 690 + .../inkstitch/bin/tcl/encoding/symbol.enc | 20 + .../inkstitch/bin/tcl/encoding/tis-620.enc | 20 + .../inkstitch/bin/tcl/history.tcl | 373 + .../inkstitch/bin/tcl/http1.0/http.tcl | 377 + .../inkstitch/bin/tcl/http1.0/pkgIndex.tcl | 11 + .../fablabchemnitz/inkstitch/bin/tcl/init.tcl | 831 + .../inkstitch/bin/tcl/msgs/af.msg | 49 + .../inkstitch/bin/tcl/msgs/af_za.msg | 6 + .../inkstitch/bin/tcl/msgs/ar.msg | 54 + .../inkstitch/bin/tcl/msgs/ar_in.msg | 6 + .../inkstitch/bin/tcl/msgs/ar_jo.msg | 39 + .../inkstitch/bin/tcl/msgs/ar_lb.msg | 39 + .../inkstitch/bin/tcl/msgs/ar_sy.msg | 39 + .../inkstitch/bin/tcl/msgs/be.msg | 52 + .../inkstitch/bin/tcl/msgs/bg.msg | 52 + .../inkstitch/bin/tcl/msgs/bn.msg | 49 + .../inkstitch/bin/tcl/msgs/bn_in.msg | 6 + .../inkstitch/bin/tcl/msgs/ca.msg | 50 + .../inkstitch/bin/tcl/msgs/cs.msg | 54 + .../inkstitch/bin/tcl/msgs/da.msg | 52 + .../inkstitch/bin/tcl/msgs/de.msg | 54 + .../inkstitch/bin/tcl/msgs/de_at.msg | 35 + .../inkstitch/bin/tcl/msgs/de_be.msg | 53 + .../inkstitch/bin/tcl/msgs/el.msg | 52 + .../inkstitch/bin/tcl/msgs/en_au.msg | 7 + .../inkstitch/bin/tcl/msgs/en_be.msg | 7 + .../inkstitch/bin/tcl/msgs/en_bw.msg | 6 + .../inkstitch/bin/tcl/msgs/en_ca.msg | 7 + .../inkstitch/bin/tcl/msgs/en_gb.msg | 7 + .../inkstitch/bin/tcl/msgs/en_hk.msg | 8 + .../inkstitch/bin/tcl/msgs/en_ie.msg | 7 + .../inkstitch/bin/tcl/msgs/en_in.msg | 8 + .../inkstitch/bin/tcl/msgs/en_nz.msg | 7 + .../inkstitch/bin/tcl/msgs/en_ph.msg | 8 + .../inkstitch/bin/tcl/msgs/en_sg.msg | 6 + .../inkstitch/bin/tcl/msgs/en_za.msg | 6 + .../inkstitch/bin/tcl/msgs/en_zw.msg | 6 + .../inkstitch/bin/tcl/msgs/eo.msg | 54 + .../inkstitch/bin/tcl/msgs/es.msg | 52 + .../inkstitch/bin/tcl/msgs/es_ar.msg | 6 + .../inkstitch/bin/tcl/msgs/es_bo.msg | 6 + .../inkstitch/bin/tcl/msgs/es_cl.msg | 6 + .../inkstitch/bin/tcl/msgs/es_co.msg | 6 + .../inkstitch/bin/tcl/msgs/es_cr.msg | 6 + .../inkstitch/bin/tcl/msgs/es_do.msg | 6 + .../inkstitch/bin/tcl/msgs/es_ec.msg | 6 + .../inkstitch/bin/tcl/msgs/es_gt.msg | 6 + .../inkstitch/bin/tcl/msgs/es_hn.msg | 6 + .../inkstitch/bin/tcl/msgs/es_mx.msg | 6 + .../inkstitch/bin/tcl/msgs/es_ni.msg | 6 + .../inkstitch/bin/tcl/msgs/es_pa.msg | 6 + .../inkstitch/bin/tcl/msgs/es_pe.msg | 6 + .../inkstitch/bin/tcl/msgs/es_pr.msg | 6 + .../inkstitch/bin/tcl/msgs/es_py.msg | 6 + .../inkstitch/bin/tcl/msgs/es_sv.msg | 6 + .../inkstitch/bin/tcl/msgs/es_uy.msg | 6 + .../inkstitch/bin/tcl/msgs/es_ve.msg | 6 + .../inkstitch/bin/tcl/msgs/et.msg | 52 + .../inkstitch/bin/tcl/msgs/eu.msg | 47 + .../inkstitch/bin/tcl/msgs/eu_es.msg | 7 + .../inkstitch/bin/tcl/msgs/fa.msg | 47 + .../inkstitch/bin/tcl/msgs/fa_in.msg | 52 + .../inkstitch/bin/tcl/msgs/fa_ir.msg | 9 + .../inkstitch/bin/tcl/msgs/fi.msg | 50 + .../inkstitch/bin/tcl/msgs/fo.msg | 47 + .../inkstitch/bin/tcl/msgs/fo_fo.msg | 7 + .../inkstitch/bin/tcl/msgs/fr.msg | 52 + .../inkstitch/bin/tcl/msgs/fr_be.msg | 7 + .../inkstitch/bin/tcl/msgs/fr_ca.msg | 7 + .../inkstitch/bin/tcl/msgs/fr_ch.msg | 7 + .../inkstitch/bin/tcl/msgs/ga.msg | 47 + .../inkstitch/bin/tcl/msgs/ga_ie.msg | 7 + .../inkstitch/bin/tcl/msgs/gl.msg | 47 + .../inkstitch/bin/tcl/msgs/gl_es.msg | 6 + .../inkstitch/bin/tcl/msgs/gv.msg | 47 + .../inkstitch/bin/tcl/msgs/gv_gb.msg | 6 + .../inkstitch/bin/tcl/msgs/he.msg | 52 + .../inkstitch/bin/tcl/msgs/hi.msg | 39 + .../inkstitch/bin/tcl/msgs/hi_in.msg | 6 + .../inkstitch/bin/tcl/msgs/hr.msg | 50 + .../inkstitch/bin/tcl/msgs/hu.msg | 54 + .../inkstitch/bin/tcl/msgs/id.msg | 47 + .../inkstitch/bin/tcl/msgs/id_id.msg | 6 + .../inkstitch/bin/tcl/msgs/is.msg | 50 + .../inkstitch/bin/tcl/msgs/it.msg | 54 + .../inkstitch/bin/tcl/msgs/it_ch.msg | 6 + .../inkstitch/bin/tcl/msgs/ja.msg | 44 + .../inkstitch/bin/tcl/msgs/kl.msg | 47 + .../inkstitch/bin/tcl/msgs/kl_gl.msg | 7 + .../inkstitch/bin/tcl/msgs/ko.msg | 55 + .../inkstitch/bin/tcl/msgs/ko_kr.msg | 8 + .../inkstitch/bin/tcl/msgs/kok.msg | 39 + .../inkstitch/bin/tcl/msgs/kok_in.msg | 6 + .../inkstitch/bin/tcl/msgs/kw.msg | 47 + .../inkstitch/bin/tcl/msgs/kw_gb.msg | 6 + .../inkstitch/bin/tcl/msgs/lt.msg | 52 + .../inkstitch/bin/tcl/msgs/lv.msg | 52 + .../inkstitch/bin/tcl/msgs/mk.msg | 52 + .../inkstitch/bin/tcl/msgs/mr.msg | 39 + .../inkstitch/bin/tcl/msgs/mr_in.msg | 6 + .../inkstitch/bin/tcl/msgs/ms.msg | 47 + .../inkstitch/bin/tcl/msgs/ms_my.msg | 6 + .../inkstitch/bin/tcl/msgs/mt.msg | 27 + .../inkstitch/bin/tcl/msgs/nb.msg | 52 + .../inkstitch/bin/tcl/msgs/nl.msg | 50 + .../inkstitch/bin/tcl/msgs/nl_be.msg | 7 + .../inkstitch/bin/tcl/msgs/nn.msg | 52 + .../inkstitch/bin/tcl/msgs/pl.msg | 52 + .../inkstitch/bin/tcl/msgs/pt.msg | 50 + .../inkstitch/bin/tcl/msgs/pt_br.msg | 7 + .../inkstitch/bin/tcl/msgs/ro.msg | 52 + .../inkstitch/bin/tcl/msgs/ru.msg | 52 + .../inkstitch/bin/tcl/msgs/ru_ua.msg | 6 + .../inkstitch/bin/tcl/msgs/sh.msg | 52 + .../inkstitch/bin/tcl/msgs/sk.msg | 52 + .../inkstitch/bin/tcl/msgs/sl.msg | 52 + .../inkstitch/bin/tcl/msgs/sq.msg | 54 + .../inkstitch/bin/tcl/msgs/sr.msg | 52 + .../inkstitch/bin/tcl/msgs/sv.msg | 52 + .../inkstitch/bin/tcl/msgs/sw.msg | 49 + .../inkstitch/bin/tcl/msgs/ta.msg | 39 + .../inkstitch/bin/tcl/msgs/ta_in.msg | 6 + .../inkstitch/bin/tcl/msgs/te.msg | 47 + .../inkstitch/bin/tcl/msgs/te_in.msg | 8 + .../inkstitch/bin/tcl/msgs/th.msg | 54 + .../inkstitch/bin/tcl/msgs/tr.msg | 50 + .../inkstitch/bin/tcl/msgs/uk.msg | 52 + .../inkstitch/bin/tcl/msgs/vi.msg | 50 + .../inkstitch/bin/tcl/msgs/zh.msg | 55 + .../inkstitch/bin/tcl/msgs/zh_cn.msg | 7 + .../inkstitch/bin/tcl/msgs/zh_hk.msg | 28 + .../inkstitch/bin/tcl/msgs/zh_sg.msg | 8 + .../inkstitch/bin/tcl/msgs/zh_tw.msg | 8 + .../inkstitch/bin/tcl/opt0.4/optparse.tcl | 1072 + .../inkstitch/bin/tcl/opt0.4/pkgIndex.tcl | 12 + .../inkstitch/bin/tcl/package.tcl | 751 + .../inkstitch/bin/tcl/parray.tcl | 28 + .../fablabchemnitz/inkstitch/bin/tcl/safe.tcl | 1127 + .../fablabchemnitz/inkstitch/bin/tcl/tclIndex | 87 + .../fablabchemnitz/inkstitch/bin/tcl/tm.tcl | 387 + .../inkstitch/bin/tcl/tzdata/Africa/Abidjan | 6 + .../inkstitch/bin/tcl/tzdata/Africa/Accra | 52 + .../bin/tcl/tzdata/Africa/Addis_Ababa | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Algiers | 39 + .../inkstitch/bin/tcl/tzdata/Africa/Asmara | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Asmera | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Bamako | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Bangui | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Banjul | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Bissau | 7 + .../inkstitch/bin/tcl/tzdata/Africa/Blantyre | 5 + .../bin/tcl/tzdata/Africa/Brazzaville | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Bujumbura | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Cairo | 132 + .../bin/tcl/tzdata/Africa/Casablanca | 230 + .../inkstitch/bin/tcl/tzdata/Africa/Ceuta | 258 + .../inkstitch/bin/tcl/tzdata/Africa/Conakry | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Dakar | 5 + .../bin/tcl/tzdata/Africa/Dar_es_Salaam | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Djibouti | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Douala | 5 + .../inkstitch/bin/tcl/tzdata/Africa/El_Aaiun | 219 + .../inkstitch/bin/tcl/tzdata/Africa/Freetown | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Gaborone | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Harare | 5 + .../bin/tcl/tzdata/Africa/Johannesburg | 11 + .../inkstitch/bin/tcl/tzdata/Africa/Juba | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Kampala | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Khartoum | 39 + .../inkstitch/bin/tcl/tzdata/Africa/Kigali | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Kinshasa | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Lagos | 6 + .../bin/tcl/tzdata/Africa/Libreville | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Lome | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Luanda | 5 + .../bin/tcl/tzdata/Africa/Lubumbashi | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Lusaka | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Malabo | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Maputo | 6 + .../inkstitch/bin/tcl/tzdata/Africa/Maseru | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Mbabane | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Mogadishu | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Monrovia | 8 + .../inkstitch/bin/tcl/tzdata/Africa/Nairobi | 9 + .../inkstitch/bin/tcl/tzdata/Africa/Ndjamena | 8 + .../inkstitch/bin/tcl/tzdata/Africa/Niamey | 5 + .../bin/tcl/tzdata/Africa/Nouakchott | 5 + .../bin/tcl/tzdata/Africa/Ouagadougou | 5 + .../bin/tcl/tzdata/Africa/Porto-Novo | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Sao_Tome | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Timbuktu | 5 + .../inkstitch/bin/tcl/tzdata/Africa/Tripoli | 34 + .../inkstitch/bin/tcl/tzdata/Africa/Tunis | 39 + .../inkstitch/bin/tcl/tzdata/Africa/Windhoek | 222 + .../inkstitch/bin/tcl/tzdata/America/Adak | 276 + .../bin/tcl/tzdata/America/Anchorage | 276 + .../inkstitch/bin/tcl/tzdata/America/Anguilla | 5 + .../inkstitch/bin/tcl/tzdata/America/Antigua | 5 + .../bin/tcl/tzdata/America/Araguaina | 60 + .../tcl/tzdata/America/Argentina/Buenos_Aires | 67 + .../tcl/tzdata/America/Argentina/Catamarca | 68 + .../tzdata/America/Argentina/ComodRivadavia | 5 + .../bin/tcl/tzdata/America/Argentina/Cordoba | 67 + .../bin/tcl/tzdata/America/Argentina/Jujuy | 67 + .../bin/tcl/tzdata/America/Argentina/La_Rioja | 69 + .../bin/tcl/tzdata/America/Argentina/Mendoza | 68 + .../tcl/tzdata/America/Argentina/Rio_Gallegos | 68 + .../bin/tcl/tzdata/America/Argentina/Salta | 66 + .../bin/tcl/tzdata/America/Argentina/San_Juan | 69 + .../bin/tcl/tzdata/America/Argentina/San_Luis | 68 + .../bin/tcl/tzdata/America/Argentina/Tucuman | 69 + .../bin/tcl/tzdata/America/Argentina/Ushuaia | 68 + .../inkstitch/bin/tcl/tzdata/America/Aruba | 5 + .../inkstitch/bin/tcl/tzdata/America/Asuncion | 259 + .../inkstitch/bin/tcl/tzdata/America/Atikokan | 12 + .../inkstitch/bin/tcl/tzdata/America/Atka | 5 + .../inkstitch/bin/tcl/tzdata/America/Bahia | 68 + .../bin/tcl/tzdata/America/Bahia_Banderas | 222 + .../inkstitch/bin/tcl/tzdata/America/Barbados | 15 + .../inkstitch/bin/tcl/tzdata/America/Belem | 35 + .../inkstitch/bin/tcl/tzdata/America/Belize | 60 + .../bin/tcl/tzdata/America/Blanc-Sablon | 12 + .../bin/tcl/tzdata/America/Boa_Vista | 40 + .../inkstitch/bin/tcl/tzdata/America/Bogota | 9 + .../inkstitch/bin/tcl/tzdata/America/Boise | 281 + .../bin/tcl/tzdata/America/Buenos_Aires | 5 + .../bin/tcl/tzdata/America/Cambridge_Bay | 252 + .../bin/tcl/tzdata/America/Campo_Grande | 257 + .../inkstitch/bin/tcl/tzdata/America/Cancun | 47 + .../inkstitch/bin/tcl/tzdata/America/Caracas | 9 + .../bin/tcl/tzdata/America/Catamarca | 5 + .../inkstitch/bin/tcl/tzdata/America/Cayenne | 7 + .../inkstitch/bin/tcl/tzdata/America/Cayman | 176 + .../inkstitch/bin/tcl/tzdata/America/Chicago | 369 + .../bin/tcl/tzdata/America/Chihuahua | 221 + .../bin/tcl/tzdata/America/Coral_Harbour | 5 + .../inkstitch/bin/tcl/tzdata/America/Cordoba | 5 + .../bin/tcl/tzdata/America/Costa_Rica | 15 + .../inkstitch/bin/tcl/tzdata/America/Creston | 8 + .../inkstitch/bin/tcl/tzdata/America/Cuiaba | 257 + .../inkstitch/bin/tcl/tzdata/America/Curacao | 7 + .../bin/tcl/tzdata/America/Danmarkshavn | 39 + .../inkstitch/bin/tcl/tzdata/America/Dawson | 256 + .../bin/tcl/tzdata/America/Dawson_Creek | 64 + .../inkstitch/bin/tcl/tzdata/America/Denver | 291 + .../inkstitch/bin/tcl/tzdata/America/Detroit | 272 + .../inkstitch/bin/tcl/tzdata/America/Dominica | 5 + .../inkstitch/bin/tcl/tzdata/America/Edmonton | 284 + .../inkstitch/bin/tcl/tzdata/America/Eirunepe | 41 + .../bin/tcl/tzdata/America/El_Salvador | 10 + .../inkstitch/bin/tcl/tzdata/America/Ensenada | 5 + .../bin/tcl/tzdata/America/Fort_Nelson | 151 + .../bin/tcl/tzdata/America/Fort_Wayne | 5 + .../bin/tcl/tzdata/America/Fortaleza | 48 + .../bin/tcl/tzdata/America/Glace_Bay | 273 + .../inkstitch/bin/tcl/tzdata/America/Godthab | 246 + .../bin/tcl/tzdata/America/Goose_Bay | 338 + .../bin/tcl/tzdata/America/Grand_Turk | 82 + .../inkstitch/bin/tcl/tzdata/America/Grenada | 5 + .../bin/tcl/tzdata/America/Guadeloupe | 5 + .../bin/tcl/tzdata/America/Guatemala | 14 + .../bin/tcl/tzdata/America/Guayaquil | 7 + .../inkstitch/bin/tcl/tzdata/America/Guyana | 9 + .../inkstitch/bin/tcl/tzdata/America/Halifax | 361 + .../inkstitch/bin/tcl/tzdata/America/Havana | 285 + .../bin/tcl/tzdata/America/Hermosillo | 21 + .../tcl/tzdata/America/Indiana/Indianapolis | 234 + .../bin/tcl/tzdata/America/Indiana/Knox | 285 + .../bin/tcl/tzdata/America/Indiana/Marengo | 236 + .../bin/tcl/tzdata/America/Indiana/Petersburg | 247 + .../bin/tcl/tzdata/America/Indiana/Tell_City | 234 + .../bin/tcl/tzdata/America/Indiana/Vevay | 213 + .../bin/tcl/tzdata/America/Indiana/Vincennes | 234 + .../bin/tcl/tzdata/America/Indiana/Winamac | 240 + .../bin/tcl/tzdata/America/Indianapolis | 5 + .../inkstitch/bin/tcl/tzdata/America/Inuvik | 249 + .../inkstitch/bin/tcl/tzdata/America/Iqaluit | 250 + .../inkstitch/bin/tcl/tzdata/America/Jamaica | 29 + .../inkstitch/bin/tcl/tzdata/America/Jujuy | 5 + .../inkstitch/bin/tcl/tzdata/America/Juneau | 276 + .../tcl/tzdata/America/Kentucky/Louisville | 314 + .../tcl/tzdata/America/Kentucky/Monticello | 279 + .../inkstitch/bin/tcl/tzdata/America/Knox_IN | 5 + .../bin/tcl/tzdata/America/Kralendijk | 5 + .../inkstitch/bin/tcl/tzdata/America/La_Paz | 8 + .../inkstitch/bin/tcl/tzdata/America/Lima | 16 + .../bin/tcl/tzdata/America/Los_Angeles | 317 + .../bin/tcl/tzdata/America/Louisville | 5 + .../bin/tcl/tzdata/America/Lower_Princes | 5 + .../inkstitch/bin/tcl/tzdata/America/Maceio | 52 + .../inkstitch/bin/tcl/tzdata/America/Managua | 21 + .../inkstitch/bin/tcl/tzdata/America/Manaus | 39 + .../inkstitch/bin/tcl/tzdata/America/Marigot | 5 + .../bin/tcl/tzdata/America/Martinique | 9 + .../bin/tcl/tzdata/America/Matamoros | 219 + .../inkstitch/bin/tcl/tzdata/America/Mazatlan | 222 + .../inkstitch/bin/tcl/tzdata/America/Mendoza | 5 + .../bin/tcl/tzdata/America/Menominee | 274 + .../inkstitch/bin/tcl/tzdata/America/Merida | 216 + .../bin/tcl/tzdata/America/Metlakatla | 43 + .../bin/tcl/tzdata/America/Mexico_City | 228 + .../inkstitch/bin/tcl/tzdata/America/Miquelon | 234 + .../inkstitch/bin/tcl/tzdata/America/Moncton | 342 + .../bin/tcl/tzdata/America/Monterrey | 218 + .../bin/tcl/tzdata/America/Montevideo | 92 + .../inkstitch/bin/tcl/tzdata/America/Montreal | 5 + .../bin/tcl/tzdata/America/Montserrat | 5 + .../inkstitch/bin/tcl/tzdata/America/Nassau | 279 + .../inkstitch/bin/tcl/tzdata/America/New_York | 369 + .../inkstitch/bin/tcl/tzdata/America/Nipigon | 264 + .../inkstitch/bin/tcl/tzdata/America/Nome | 276 + .../inkstitch/bin/tcl/tzdata/America/Noronha | 48 + .../tcl/tzdata/America/North_Dakota/Beulah | 279 + .../tcl/tzdata/America/North_Dakota/Center | 279 + .../tcl/tzdata/America/North_Dakota/New_Salem | 279 + .../inkstitch/bin/tcl/tzdata/America/Ojinaga | 222 + .../inkstitch/bin/tcl/tzdata/America/Panama | 7 + .../bin/tcl/tzdata/America/Pangnirtung | 252 + .../bin/tcl/tzdata/America/Paramaribo | 10 + .../inkstitch/bin/tcl/tzdata/America/Phoenix | 17 + .../bin/tcl/tzdata/America/Port-au-Prince | 217 + .../bin/tcl/tzdata/America/Port_of_Spain | 6 + .../bin/tcl/tzdata/America/Porto_Acre | 5 + .../bin/tcl/tzdata/America/Porto_Velho | 35 + .../bin/tcl/tzdata/America/Puerto_Rico | 10 + .../bin/tcl/tzdata/America/Rainy_River | 264 + .../bin/tcl/tzdata/America/Rankin_Inlet | 248 + .../inkstitch/bin/tcl/tzdata/America/Recife | 48 + .../inkstitch/bin/tcl/tzdata/America/Regina | 58 + .../inkstitch/bin/tcl/tzdata/America/Resolute | 248 + .../bin/tcl/tzdata/America/Rio_Branco | 37 + .../inkstitch/bin/tcl/tzdata/America/Rosario | 5 + .../bin/tcl/tzdata/America/Santa_Isabel | 284 + .../inkstitch/bin/tcl/tzdata/America/Santarem | 36 + .../inkstitch/bin/tcl/tzdata/America/Santiago | 122 + .../bin/tcl/tzdata/America/Santo_Domingo | 21 + .../bin/tcl/tzdata/America/Sao_Paulo | 258 + .../bin/tcl/tzdata/America/Scoresbysund | 246 + .../inkstitch/bin/tcl/tzdata/America/Shiprock | 5 + .../inkstitch/bin/tcl/tzdata/America/Sitka | 275 + .../bin/tcl/tzdata/America/St_Barthelemy | 5 + .../inkstitch/bin/tcl/tzdata/America/St_Johns | 372 + .../inkstitch/bin/tcl/tzdata/America/St_Kitts | 5 + .../inkstitch/bin/tcl/tzdata/America/St_Lucia | 5 + .../bin/tcl/tzdata/America/St_Thomas | 5 + .../bin/tcl/tzdata/America/St_Vincent | 5 + .../bin/tcl/tzdata/America/Swift_Current | 29 + .../bin/tcl/tzdata/America/Tegucigalpa | 12 + .../inkstitch/bin/tcl/tzdata/America/Thule | 224 + .../bin/tcl/tzdata/America/Thunder_Bay | 272 + .../inkstitch/bin/tcl/tzdata/America/Tijuana | 285 + .../inkstitch/bin/tcl/tzdata/America/Toronto | 365 + .../inkstitch/bin/tcl/tzdata/America/Tortola | 5 + .../bin/tcl/tzdata/America/Vancouver | 320 + .../inkstitch/bin/tcl/tzdata/America/Virgin | 5 + .../bin/tcl/tzdata/America/Whitehorse | 256 + .../inkstitch/bin/tcl/tzdata/America/Winnipeg | 316 + .../inkstitch/bin/tcl/tzdata/America/Yakutat | 276 + .../bin/tcl/tzdata/America/Yellowknife | 252 + .../inkstitch/bin/tcl/tzdata/Antarctica/Casey | 10 + .../inkstitch/bin/tcl/tzdata/Antarctica/Davis | 12 + .../bin/tcl/tzdata/Antarctica/DumontDUrville | 8 + .../bin/tcl/tzdata/Antarctica/Macquarie | 97 + .../bin/tcl/tzdata/Antarctica/Mawson | 7 + .../bin/tcl/tzdata/Antarctica/McMurdo | 5 + .../bin/tcl/tzdata/Antarctica/Palmer | 85 + .../bin/tcl/tzdata/Antarctica/Rothera | 6 + .../bin/tcl/tzdata/Antarctica/South_Pole | 5 + .../inkstitch/bin/tcl/tzdata/Antarctica/Syowa | 6 + .../inkstitch/bin/tcl/tzdata/Antarctica/Troll | 196 + .../bin/tcl/tzdata/Antarctica/Vostok | 6 + .../bin/tcl/tzdata/Arctic/Longyearbyen | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Aden | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Almaty | 56 + .../inkstitch/bin/tcl/tzdata/Asia/Amman | 246 + .../inkstitch/bin/tcl/tzdata/Asia/Anadyr | 72 + .../inkstitch/bin/tcl/tzdata/Asia/Aqtau | 58 + .../inkstitch/bin/tcl/tzdata/Asia/Aqtobe | 57 + .../inkstitch/bin/tcl/tzdata/Asia/Ashgabat | 31 + .../inkstitch/bin/tcl/tzdata/Asia/Ashkhabad | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Baghdad | 59 + .../inkstitch/bin/tcl/tzdata/Asia/Bahrain | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Baku | 242 + .../inkstitch/bin/tcl/tzdata/Asia/Bangkok | 7 + .../inkstitch/bin/tcl/tzdata/Asia/Beirut | 270 + .../inkstitch/bin/tcl/tzdata/Asia/Bishkek | 57 + .../inkstitch/bin/tcl/tzdata/Asia/Brunei | 7 + .../inkstitch/bin/tcl/tzdata/Asia/Calcutta | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Chita | 71 + .../inkstitch/bin/tcl/tzdata/Asia/Choibalsan | 222 + .../inkstitch/bin/tcl/tzdata/Asia/Chongqing | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Chungking | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Colombo | 13 + .../inkstitch/bin/tcl/tzdata/Asia/Dacca | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Damascus | 280 + .../inkstitch/bin/tcl/tzdata/Asia/Dhaka | 14 + .../inkstitch/bin/tcl/tzdata/Asia/Dili | 10 + .../inkstitch/bin/tcl/tzdata/Asia/Dubai | 6 + .../inkstitch/bin/tcl/tzdata/Asia/Dushanbe | 29 + .../inkstitch/bin/tcl/tzdata/Asia/Gaza | 278 + .../inkstitch/bin/tcl/tzdata/Asia/Harbin | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Hebron | 277 + .../inkstitch/bin/tcl/tzdata/Asia/Ho_Chi_Minh | 14 + .../inkstitch/bin/tcl/tzdata/Asia/Hong_Kong | 75 + .../inkstitch/bin/tcl/tzdata/Asia/Hovd | 221 + .../inkstitch/bin/tcl/tzdata/Asia/Irkutsk | 72 + .../inkstitch/bin/tcl/tzdata/Asia/Istanbul | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Jakarta | 13 + .../inkstitch/bin/tcl/tzdata/Asia/Jayapura | 8 + .../inkstitch/bin/tcl/tzdata/Asia/Jerusalem | 272 + .../inkstitch/bin/tcl/tzdata/Asia/Kabul | 7 + .../inkstitch/bin/tcl/tzdata/Asia/Kamchatka | 71 + .../inkstitch/bin/tcl/tzdata/Asia/Karachi | 16 + .../inkstitch/bin/tcl/tzdata/Asia/Kashgar | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Kathmandu | 7 + .../inkstitch/bin/tcl/tzdata/Asia/Katmandu | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Khandyga | 73 + .../inkstitch/bin/tcl/tzdata/Asia/Kolkata | 10 + .../inkstitch/bin/tcl/tzdata/Asia/Krasnoyarsk | 71 + .../bin/tcl/tzdata/Asia/Kuala_Lumpur | 13 + .../inkstitch/bin/tcl/tzdata/Asia/Kuching | 24 + .../inkstitch/bin/tcl/tzdata/Asia/Kuwait | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Macao | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Macau | 46 + .../inkstitch/bin/tcl/tzdata/Asia/Magadan | 71 + .../inkstitch/bin/tcl/tzdata/Asia/Makassar | 9 + .../inkstitch/bin/tcl/tzdata/Asia/Manila | 15 + .../inkstitch/bin/tcl/tzdata/Asia/Muscat | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Nicosia | 257 + .../bin/tcl/tzdata/Asia/Novokuznetsk | 72 + .../inkstitch/bin/tcl/tzdata/Asia/Novosibirsk | 72 + .../inkstitch/bin/tcl/tzdata/Asia/Omsk | 71 + .../inkstitch/bin/tcl/tzdata/Asia/Oral | 58 + .../inkstitch/bin/tcl/tzdata/Asia/Phnom_Penh | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Pontianak | 13 + .../inkstitch/bin/tcl/tzdata/Asia/Pyongyang | 10 + .../inkstitch/bin/tcl/tzdata/Asia/Qatar | 7 + .../inkstitch/bin/tcl/tzdata/Asia/Qyzylorda | 58 + .../inkstitch/bin/tcl/tzdata/Asia/Rangoon | 9 + .../inkstitch/bin/tcl/tzdata/Asia/Riyadh | 6 + .../inkstitch/bin/tcl/tzdata/Asia/Saigon | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Sakhalin | 73 + .../inkstitch/bin/tcl/tzdata/Asia/Samarkand | 32 + .../inkstitch/bin/tcl/tzdata/Asia/Seoul | 27 + .../inkstitch/bin/tcl/tzdata/Asia/Shanghai | 23 + .../inkstitch/bin/tcl/tzdata/Asia/Singapore | 14 + .../bin/tcl/tzdata/Asia/Srednekolymsk | 71 + .../inkstitch/bin/tcl/tzdata/Asia/Taipei | 46 + .../inkstitch/bin/tcl/tzdata/Asia/Tashkent | 32 + .../inkstitch/bin/tcl/tzdata/Asia/Tbilisi | 60 + .../inkstitch/bin/tcl/tzdata/Asia/Tehran | 105 + .../inkstitch/bin/tcl/tzdata/Asia/Tel_Aviv | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Thimbu | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Thimphu | 7 + .../inkstitch/bin/tcl/tzdata/Asia/Tokyo | 16 + .../bin/tcl/tzdata/Asia/Ujung_Pandang | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Ulaanbaatar | 221 + .../inkstitch/bin/tcl/tzdata/Asia/Ulan_Bator | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Urumqi | 6 + .../inkstitch/bin/tcl/tzdata/Asia/Ust-Nera | 71 + .../inkstitch/bin/tcl/tzdata/Asia/Vientiane | 5 + .../inkstitch/bin/tcl/tzdata/Asia/Vladivostok | 71 + .../inkstitch/bin/tcl/tzdata/Asia/Yakutsk | 71 + .../bin/tcl/tzdata/Asia/Yekaterinburg | 72 + .../inkstitch/bin/tcl/tzdata/Asia/Yerevan | 70 + .../inkstitch/bin/tcl/tzdata/Atlantic/Azores | 349 + .../inkstitch/bin/tcl/tzdata/Atlantic/Bermuda | 259 + .../inkstitch/bin/tcl/tzdata/Atlantic/Canary | 247 + .../bin/tcl/tzdata/Atlantic/Cape_Verde | 9 + .../inkstitch/bin/tcl/tzdata/Atlantic/Faeroe | 5 + .../inkstitch/bin/tcl/tzdata/Atlantic/Faroe | 245 + .../bin/tcl/tzdata/Atlantic/Jan_Mayen | 5 + .../inkstitch/bin/tcl/tzdata/Atlantic/Madeira | 350 + .../bin/tcl/tzdata/Atlantic/Reykjavik | 73 + .../bin/tcl/tzdata/Atlantic/South_Georgia | 6 + .../bin/tcl/tzdata/Atlantic/St_Helena | 5 + .../inkstitch/bin/tcl/tzdata/Atlantic/Stanley | 75 + .../inkstitch/bin/tcl/tzdata/Australia/ACT | 5 + .../bin/tcl/tzdata/Australia/Adelaide | 273 + .../bin/tcl/tzdata/Australia/Brisbane | 23 + .../bin/tcl/tzdata/Australia/Broken_Hill | 275 + .../bin/tcl/tzdata/Australia/Canberra | 5 + .../inkstitch/bin/tcl/tzdata/Australia/Currie | 273 + .../inkstitch/bin/tcl/tzdata/Australia/Darwin | 15 + .../inkstitch/bin/tcl/tzdata/Australia/Eucla | 25 + .../inkstitch/bin/tcl/tzdata/Australia/Hobart | 281 + .../inkstitch/bin/tcl/tzdata/Australia/LHI | 5 + .../bin/tcl/tzdata/Australia/Lindeman | 28 + .../bin/tcl/tzdata/Australia/Lord_Howe | 244 + .../bin/tcl/tzdata/Australia/Melbourne | 272 + .../inkstitch/bin/tcl/tzdata/Australia/NSW | 5 + .../inkstitch/bin/tcl/tzdata/Australia/North | 5 + .../inkstitch/bin/tcl/tzdata/Australia/Perth | 25 + .../bin/tcl/tzdata/Australia/Queensland | 5 + .../inkstitch/bin/tcl/tzdata/Australia/South | 5 + .../inkstitch/bin/tcl/tzdata/Australia/Sydney | 272 + .../bin/tcl/tzdata/Australia/Tasmania | 5 + .../bin/tcl/tzdata/Australia/Victoria | 5 + .../inkstitch/bin/tcl/tzdata/Australia/West | 5 + .../bin/tcl/tzdata/Australia/Yancowinna | 5 + .../inkstitch/bin/tcl/tzdata/Brazil/Acre | 5 + .../inkstitch/bin/tcl/tzdata/Brazil/DeNoronha | 5 + .../inkstitch/bin/tcl/tzdata/Brazil/East | 5 + .../inkstitch/bin/tcl/tzdata/Brazil/West | 5 + .../inkstitch/bin/tcl/tzdata/CET | 265 + .../inkstitch/bin/tcl/tzdata/CST6CDT | 278 + .../inkstitch/bin/tcl/tzdata/Canada/Atlantic | 5 + .../inkstitch/bin/tcl/tzdata/Canada/Central | 5 + .../bin/tcl/tzdata/Canada/East-Saskatchewan | 5 + .../inkstitch/bin/tcl/tzdata/Canada/Eastern | 5 + .../inkstitch/bin/tcl/tzdata/Canada/Mountain | 5 + .../bin/tcl/tzdata/Canada/Newfoundland | 5 + .../inkstitch/bin/tcl/tzdata/Canada/Pacific | 5 + .../bin/tcl/tzdata/Canada/Saskatchewan | 5 + .../inkstitch/bin/tcl/tzdata/Canada/Yukon | 5 + .../bin/tcl/tzdata/Chile/Continental | 5 + .../bin/tcl/tzdata/Chile/EasterIsland | 5 + .../inkstitch/bin/tcl/tzdata/Cuba | 5 + .../inkstitch/bin/tcl/tzdata/EET | 251 + .../inkstitch/bin/tcl/tzdata/EST | 5 + .../inkstitch/bin/tcl/tzdata/EST5EDT | 278 + .../inkstitch/bin/tcl/tzdata/Egypt | 5 + .../inkstitch/bin/tcl/tzdata/Eire | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+0 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+1 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+10 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+11 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+12 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+2 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+3 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+4 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+5 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+6 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+7 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+8 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT+9 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-0 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-1 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-10 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-11 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-12 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-13 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-14 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-2 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-3 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-4 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-5 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-6 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-7 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-8 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT-9 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/GMT0 | 5 + .../inkstitch/bin/tcl/tzdata/Etc/Greenwich | 5 + .../inkstitch/bin/tcl/tzdata/Etc/UCT | 5 + .../inkstitch/bin/tcl/tzdata/Etc/UTC | 5 + .../inkstitch/bin/tcl/tzdata/Etc/Universal | 5 + .../inkstitch/bin/tcl/tzdata/Etc/Zulu | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Amsterdam | 310 + .../inkstitch/bin/tcl/tzdata/Europe/Andorra | 237 + .../inkstitch/bin/tcl/tzdata/Europe/Athens | 268 + .../inkstitch/bin/tcl/tzdata/Europe/Belfast | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Belgrade | 250 + .../inkstitch/bin/tcl/tzdata/Europe/Berlin | 274 + .../bin/tcl/tzdata/Europe/Bratislava | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Brussels | 316 + .../inkstitch/bin/tcl/tzdata/Europe/Bucharest | 268 + .../inkstitch/bin/tcl/tzdata/Europe/Budapest | 282 + .../inkstitch/bin/tcl/tzdata/Europe/Busingen | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Chisinau | 272 + .../bin/tcl/tzdata/Europe/Copenhagen | 264 + .../inkstitch/bin/tcl/tzdata/Europe/Dublin | 359 + .../inkstitch/bin/tcl/tzdata/Europe/Gibraltar | 328 + .../inkstitch/bin/tcl/tzdata/Europe/Guernsey | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Helsinki | 248 + .../bin/tcl/tzdata/Europe/Isle_of_Man | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Istanbul | 306 + .../inkstitch/bin/tcl/tzdata/Europe/Jersey | 5 + .../bin/tcl/tzdata/Europe/Kaliningrad | 85 + .../inkstitch/bin/tcl/tzdata/Europe/Kiev | 251 + .../inkstitch/bin/tcl/tzdata/Europe/Lisbon | 351 + .../inkstitch/bin/tcl/tzdata/Europe/Ljubljana | 5 + .../inkstitch/bin/tcl/tzdata/Europe/London | 372 + .../bin/tcl/tzdata/Europe/Luxembourg | 313 + .../inkstitch/bin/tcl/tzdata/Europe/Madrid | 294 + .../inkstitch/bin/tcl/tzdata/Europe/Malta | 299 + .../inkstitch/bin/tcl/tzdata/Europe/Mariehamn | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Minsk | 75 + .../inkstitch/bin/tcl/tzdata/Europe/Monaco | 315 + .../inkstitch/bin/tcl/tzdata/Europe/Moscow | 83 + .../inkstitch/bin/tcl/tzdata/Europe/Nicosia | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Oslo | 271 + .../inkstitch/bin/tcl/tzdata/Europe/Paris | 314 + .../inkstitch/bin/tcl/tzdata/Europe/Podgorica | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Prague | 272 + .../inkstitch/bin/tcl/tzdata/Europe/Riga | 258 + .../inkstitch/bin/tcl/tzdata/Europe/Rome | 301 + .../inkstitch/bin/tcl/tzdata/Europe/Samara | 73 + .../bin/tcl/tzdata/Europe/San_Marino | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Sarajevo | 5 + .../bin/tcl/tzdata/Europe/Simferopol | 82 + .../inkstitch/bin/tcl/tzdata/Europe/Skopje | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Sofia | 258 + .../inkstitch/bin/tcl/tzdata/Europe/Stockholm | 250 + .../inkstitch/bin/tcl/tzdata/Europe/Tallinn | 254 + .../inkstitch/bin/tcl/tzdata/Europe/Tirane | 263 + .../inkstitch/bin/tcl/tzdata/Europe/Tiraspol | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Uzhgorod | 254 + .../inkstitch/bin/tcl/tzdata/Europe/Vaduz | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Vatican | 5 + .../inkstitch/bin/tcl/tzdata/Europe/Vienna | 271 + .../inkstitch/bin/tcl/tzdata/Europe/Vilnius | 251 + .../inkstitch/bin/tcl/tzdata/Europe/Volgograd | 71 + .../inkstitch/bin/tcl/tzdata/Europe/Warsaw | 296 + .../inkstitch/bin/tcl/tzdata/Europe/Zagreb | 5 + .../bin/tcl/tzdata/Europe/Zaporozhye | 252 + .../inkstitch/bin/tcl/tzdata/Europe/Zurich | 250 + .../inkstitch/bin/tcl/tzdata/GB | 5 + .../inkstitch/bin/tcl/tzdata/GB-Eire | 5 + .../inkstitch/bin/tcl/tzdata/GMT | 5 + .../inkstitch/bin/tcl/tzdata/GMT+0 | 5 + .../inkstitch/bin/tcl/tzdata/GMT-0 | 5 + .../inkstitch/bin/tcl/tzdata/GMT0 | 5 + .../inkstitch/bin/tcl/tzdata/Greenwich | 5 + .../inkstitch/bin/tcl/tzdata/HST | 5 + .../inkstitch/bin/tcl/tzdata/Hongkong | 5 + .../inkstitch/bin/tcl/tzdata/Iceland | 5 + .../bin/tcl/tzdata/Indian/Antananarivo | 5 + .../inkstitch/bin/tcl/tzdata/Indian/Chagos | 7 + .../inkstitch/bin/tcl/tzdata/Indian/Christmas | 6 + .../inkstitch/bin/tcl/tzdata/Indian/Cocos | 6 + .../inkstitch/bin/tcl/tzdata/Indian/Comoro | 5 + .../inkstitch/bin/tcl/tzdata/Indian/Kerguelen | 6 + .../inkstitch/bin/tcl/tzdata/Indian/Mahe | 6 + .../inkstitch/bin/tcl/tzdata/Indian/Maldives | 7 + .../inkstitch/bin/tcl/tzdata/Indian/Mauritius | 10 + .../inkstitch/bin/tcl/tzdata/Indian/Mayotte | 5 + .../inkstitch/bin/tcl/tzdata/Indian/Reunion | 6 + .../inkstitch/bin/tcl/tzdata/Iran | 5 + .../inkstitch/bin/tcl/tzdata/Israel | 5 + .../inkstitch/bin/tcl/tzdata/Jamaica | 5 + .../inkstitch/bin/tcl/tzdata/Japan | 5 + .../inkstitch/bin/tcl/tzdata/Kwajalein | 5 + .../inkstitch/bin/tcl/tzdata/Libya | 5 + .../inkstitch/bin/tcl/tzdata/MET | 265 + .../inkstitch/bin/tcl/tzdata/MST | 5 + .../inkstitch/bin/tcl/tzdata/MST7MDT | 278 + .../inkstitch/bin/tcl/tzdata/Mexico/BajaNorte | 5 + .../inkstitch/bin/tcl/tzdata/Mexico/BajaSur | 5 + .../inkstitch/bin/tcl/tzdata/Mexico/General | 5 + .../inkstitch/bin/tcl/tzdata/NZ | 5 + .../inkstitch/bin/tcl/tzdata/NZ-CHAT | 5 + .../inkstitch/bin/tcl/tzdata/Navajo | 5 + .../inkstitch/bin/tcl/tzdata/PRC | 5 + .../inkstitch/bin/tcl/tzdata/PST8PDT | 278 + .../inkstitch/bin/tcl/tzdata/Pacific/Apia | 188 + .../inkstitch/bin/tcl/tzdata/Pacific/Auckland | 285 + .../bin/tcl/tzdata/Pacific/Bougainville | 10 + .../inkstitch/bin/tcl/tzdata/Pacific/Chatham | 258 + .../inkstitch/bin/tcl/tzdata/Pacific/Chuuk | 6 + .../inkstitch/bin/tcl/tzdata/Pacific/Easter | 101 + .../inkstitch/bin/tcl/tzdata/Pacific/Efate | 26 + .../bin/tcl/tzdata/Pacific/Enderbury | 8 + .../inkstitch/bin/tcl/tzdata/Pacific/Fakaofo | 7 + .../inkstitch/bin/tcl/tzdata/Pacific/Fiji | 191 + .../inkstitch/bin/tcl/tzdata/Pacific/Funafuti | 6 + .../bin/tcl/tzdata/Pacific/Galapagos | 7 + .../inkstitch/bin/tcl/tzdata/Pacific/Gambier | 6 + .../bin/tcl/tzdata/Pacific/Guadalcanal | 6 + .../inkstitch/bin/tcl/tzdata/Pacific/Guam | 8 + .../inkstitch/bin/tcl/tzdata/Pacific/Honolulu | 11 + .../inkstitch/bin/tcl/tzdata/Pacific/Johnston | 5 + .../bin/tcl/tzdata/Pacific/Kiritimati | 8 + .../inkstitch/bin/tcl/tzdata/Pacific/Kosrae | 8 + .../bin/tcl/tzdata/Pacific/Kwajalein | 8 + .../inkstitch/bin/tcl/tzdata/Pacific/Majuro | 7 + .../bin/tcl/tzdata/Pacific/Marquesas | 6 + .../inkstitch/bin/tcl/tzdata/Pacific/Midway | 5 + .../inkstitch/bin/tcl/tzdata/Pacific/Nauru | 9 + .../inkstitch/bin/tcl/tzdata/Pacific/Niue | 8 + .../inkstitch/bin/tcl/tzdata/Pacific/Norfolk | 10 + .../inkstitch/bin/tcl/tzdata/Pacific/Noumea | 12 + .../bin/tcl/tzdata/Pacific/Pago_Pago | 9 + .../inkstitch/bin/tcl/tzdata/Pacific/Palau | 6 + .../inkstitch/bin/tcl/tzdata/Pacific/Pitcairn | 7 + .../inkstitch/bin/tcl/tzdata/Pacific/Pohnpei | 6 + .../inkstitch/bin/tcl/tzdata/Pacific/Ponape | 5 + .../bin/tcl/tzdata/Pacific/Port_Moresby | 7 + .../bin/tcl/tzdata/Pacific/Rarotonga | 32 + .../inkstitch/bin/tcl/tzdata/Pacific/Saipan | 5 + .../inkstitch/bin/tcl/tzdata/Pacific/Samoa | 5 + .../inkstitch/bin/tcl/tzdata/Pacific/Tahiti | 6 + .../inkstitch/bin/tcl/tzdata/Pacific/Tarawa | 6 + .../bin/tcl/tzdata/Pacific/Tongatapu | 14 + .../inkstitch/bin/tcl/tzdata/Pacific/Truk | 5 + .../inkstitch/bin/tcl/tzdata/Pacific/Wake | 6 + .../inkstitch/bin/tcl/tzdata/Pacific/Wallis | 6 + .../inkstitch/bin/tcl/tzdata/Pacific/Yap | 5 + .../inkstitch/bin/tcl/tzdata/Poland | 5 + .../inkstitch/bin/tcl/tzdata/Portugal | 5 + .../inkstitch/bin/tcl/tzdata/ROC | 5 + .../inkstitch/bin/tcl/tzdata/ROK | 5 + .../inkstitch/bin/tcl/tzdata/Singapore | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/AST4 | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/AST4ADT | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/CST6 | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/CST6CDT | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/EST5 | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/EST5EDT | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/HST10 | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/MST7 | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/MST7MDT | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/PST8 | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/PST8PDT | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/YST9 | 5 + .../inkstitch/bin/tcl/tzdata/SystemV/YST9YDT | 5 + .../inkstitch/bin/tcl/tzdata/Turkey | 5 + .../inkstitch/bin/tcl/tzdata/UCT | 5 + .../inkstitch/bin/tcl/tzdata/US/Alaska | 5 + .../inkstitch/bin/tcl/tzdata/US/Aleutian | 5 + .../inkstitch/bin/tcl/tzdata/US/Arizona | 5 + .../inkstitch/bin/tcl/tzdata/US/Central | 5 + .../inkstitch/bin/tcl/tzdata/US/East-Indiana | 5 + .../inkstitch/bin/tcl/tzdata/US/Eastern | 5 + .../inkstitch/bin/tcl/tzdata/US/Hawaii | 5 + .../bin/tcl/tzdata/US/Indiana-Starke | 5 + .../inkstitch/bin/tcl/tzdata/US/Michigan | 5 + .../inkstitch/bin/tcl/tzdata/US/Mountain | 5 + .../inkstitch/bin/tcl/tzdata/US/Pacific | 5 + .../inkstitch/bin/tcl/tzdata/US/Pacific-New | 5 + .../inkstitch/bin/tcl/tzdata/US/Samoa | 5 + .../inkstitch/bin/tcl/tzdata/UTC | 5 + .../inkstitch/bin/tcl/tzdata/Universal | 5 + .../inkstitch/bin/tcl/tzdata/W-SU | 5 + .../inkstitch/bin/tcl/tzdata/WET | 251 + .../inkstitch/bin/tcl/tzdata/Zulu | 5 + .../fablabchemnitz/inkstitch/bin/tcl/word.tcl | 144 + .../fablabchemnitz/inkstitch/bin/tcl85.dll | Bin 0 -> 900608 bytes .../inkstitch/bin/tk/bgerror.tcl | 259 + .../inkstitch/bin/tk/button.tcl | 757 + .../inkstitch/bin/tk/choosedir.tcl | 308 + .../inkstitch/bin/tk/clrpick.tcl | 693 + .../inkstitch/bin/tk/comdlg.tcl | 310 + .../inkstitch/bin/tk/console.tcl | 1065 + .../inkstitch/bin/tk/dialog.tcl | 180 + .../fablabchemnitz/inkstitch/bin/tk/entry.tcl | 670 + .../fablabchemnitz/inkstitch/bin/tk/focus.tcl | 178 + .../inkstitch/bin/tk/images/README | 7 + .../inkstitch/bin/tk/images/logo.eps | 2091 + .../inkstitch/bin/tk/images/logo100.gif | Bin 0 -> 2341 bytes .../inkstitch/bin/tk/images/logo64.gif | Bin 0 -> 1670 bytes .../inkstitch/bin/tk/images/logoLarge.gif | Bin 0 -> 11000 bytes .../inkstitch/bin/tk/images/logoMed.gif | Bin 0 -> 3889 bytes .../inkstitch/bin/tk/images/pwrdLogo.eps | 1897 + .../inkstitch/bin/tk/images/pwrdLogo100.gif | Bin 0 -> 1615 bytes .../inkstitch/bin/tk/images/pwrdLogo150.gif | Bin 0 -> 2489 bytes .../inkstitch/bin/tk/images/pwrdLogo175.gif | Bin 0 -> 2981 bytes .../inkstitch/bin/tk/images/pwrdLogo200.gif | Bin 0 -> 3491 bytes .../inkstitch/bin/tk/images/pwrdLogo75.gif | Bin 0 -> 1171 bytes .../inkstitch/bin/tk/images/tai-ku.gif | Bin 0 -> 5473 bytes .../inkstitch/bin/tk/license.terms | 39 + .../inkstitch/bin/tk/listbox.tcl | 539 + .../fablabchemnitz/inkstitch/bin/tk/menu.tcl | 1357 + .../inkstitch/bin/tk/mkpsenc.tcl | 1366 + .../inkstitch/bin/tk/msgbox.tcl | 451 + .../inkstitch/bin/tk/msgs/cs.msg | 84 + .../inkstitch/bin/tk/msgs/da.msg | 77 + .../inkstitch/bin/tk/msgs/de.msg | 76 + .../inkstitch/bin/tk/msgs/el.msg | 86 + .../inkstitch/bin/tk/msgs/en.msg | 76 + .../inkstitch/bin/tk/msgs/en_gb.msg | 3 + .../inkstitch/bin/tk/msgs/eo.msg | 73 + .../inkstitch/bin/tk/msgs/es.msg | 74 + .../inkstitch/bin/tk/msgs/fr.msg | 70 + .../inkstitch/bin/tk/msgs/hu.msg | 77 + .../inkstitch/bin/tk/msgs/it.msg | 70 + .../inkstitch/bin/tk/msgs/nl.msg | 109 + .../inkstitch/bin/tk/msgs/pl.msg | 73 + .../inkstitch/bin/tk/msgs/pt.msg | 70 + .../inkstitch/bin/tk/msgs/ru.msg | 73 + .../inkstitch/bin/tk/msgs/sv.msg | 74 + .../inkstitch/bin/tk/obsolete.tcl | 178 + .../inkstitch/bin/tk/optMenu.tcl | 43 + .../inkstitch/bin/tk/palette.tcl | 243 + .../inkstitch/bin/tk/panedwindow.tcl | 194 + .../inkstitch/bin/tk/pkgIndex.tcl | 7 + .../inkstitch/bin/tk/safetk.tcl | 264 + .../fablabchemnitz/inkstitch/bin/tk/scale.tcl | 290 + .../inkstitch/bin/tk/scrlbar.tcl | 434 + .../inkstitch/bin/tk/spinbox.tcl | 572 + .../fablabchemnitz/inkstitch/bin/tk/tclIndex | 278 + .../inkstitch/bin/tk/tearoff.tcl | 180 + .../fablabchemnitz/inkstitch/bin/tk/text.tcl | 1238 + .../fablabchemnitz/inkstitch/bin/tk/tk.tcl | 591 + .../inkstitch/bin/tk/tkfbox.tcl | 1964 + .../inkstitch/bin/tk/ttk/altTheme.tcl | 101 + .../inkstitch/bin/tk/ttk/aquaTheme.tcl | 59 + .../inkstitch/bin/tk/ttk/button.tcl | 83 + .../inkstitch/bin/tk/ttk/clamTheme.tcl | 137 + .../inkstitch/bin/tk/ttk/classicTheme.tcl | 108 + .../inkstitch/bin/tk/ttk/combobox.tcl | 456 + .../inkstitch/bin/tk/ttk/cursors.tcl | 186 + .../inkstitch/bin/tk/ttk/defaults.tcl | 125 + .../inkstitch/bin/tk/ttk/entry.tcl | 611 + .../inkstitch/bin/tk/ttk/fonts.tcl | 157 + .../inkstitch/bin/tk/ttk/menubutton.tcl | 169 + .../inkstitch/bin/tk/ttk/notebook.tcl | 197 + .../inkstitch/bin/tk/ttk/panedwindow.tcl | 82 + .../inkstitch/bin/tk/ttk/progress.tcl | 49 + .../inkstitch/bin/tk/ttk/scale.tcl | 91 + .../inkstitch/bin/tk/ttk/scrollbar.tcl | 123 + .../inkstitch/bin/tk/ttk/sizegrip.tcl | 102 + .../inkstitch/bin/tk/ttk/spinbox.tcl | 173 + .../inkstitch/bin/tk/ttk/treeview.tcl | 363 + .../inkstitch/bin/tk/ttk/ttk.tcl | 176 + .../inkstitch/bin/tk/ttk/utils.tcl | 350 + .../inkstitch/bin/tk/ttk/vistaTheme.tcl | 224 + .../inkstitch/bin/tk/ttk/winTheme.tcl | 80 + .../inkstitch/bin/tk/ttk/xpTheme.tcl | 65 + .../inkstitch/bin/tk/unsupported.tcl | 295 + .../inkstitch/bin/tk/xmfbox.tcl | 987 + .../fablabchemnitz/inkstitch/bin/tk85.dll | Bin 0 -> 1334784 bytes .../inkstitch/bin/unicodedata.pyd | Bin 0 -> 687104 bytes .../fablabchemnitz/inkstitch/bin/win32api.pyd | Bin 0 -> 100864 bytes .../inkstitch/bin/win32com.shell.shell.pyd | Bin 0 -> 397824 bytes .../fablabchemnitz/inkstitch/bin/win32pdh.pyd | Bin 0 -> 26112 bytes .../inkstitch/bin/win32pipe.pyd | Bin 0 -> 24064 bytes .../inkstitch/bin/win32trace.pyd | Bin 0 -> 15872 bytes .../fablabchemnitz/inkstitch/bin/win32ui.pyd | Bin 0 -> 779264 bytes .../inkstitch/bin/win32wnet.pyd | Bin 0 -> 25088 bytes .../fablabchemnitz/inkstitch/bin/wx._adv.pyd | Bin 0 -> 862720 bytes .../fablabchemnitz/inkstitch/bin/wx._core.pyd | Bin 0 -> 5680128 bytes .../inkstitch/bin/wx.siplib.pyd | Bin 0 -> 89088 bytes .../inkstitch/bin/wxbase30u_net_vc90.dll | Bin 0 -> 155136 bytes .../inkstitch/bin/wxbase30u_vc90.dll | Bin 0 -> 2036736 bytes .../inkstitch/bin/wxmsw30u_adv_vc90.dll | Bin 0 -> 1253888 bytes .../inkstitch/bin/wxmsw30u_core_vc90.dll | Bin 0 -> 4882432 bytes .../inkstitch/electron/LICENSE.electron.txt | 20 + .../inkstitch/electron/LICENSES.chromium.html | 38430 +++ .../inkstitch/electron/VkICD_mock_icd.dll | Bin 0 -> 276992 bytes .../electron/VkLayer_core_validation.dll | Bin 0 -> 2968576 bytes .../electron/VkLayer_object_tracker.dll | Bin 0 -> 2050048 bytes .../electron/VkLayer_parameter_validation.dll | Bin 0 -> 2499072 bytes .../inkstitch/electron/VkLayer_threading.dll | Bin 0 -> 1963520 bytes .../electron/VkLayer_unique_objects.dll | Bin 0 -> 1988608 bytes .../inkstitch/electron/chrome_100_percent.pak | Bin 0 -> 167621 bytes .../inkstitch/electron/chrome_200_percent.pak | Bin 0 -> 249617 bytes .../inkstitch/electron/d3dcompiler_47.dll | Bin 0 -> 3657992 bytes .../inkstitch/electron/ffmpeg.dll | Bin 0 -> 1987072 bytes .../inkstitch/electron/icudtl.dat | Bin 0 -> 10219152 bytes .../inkstitch/electron/inkstitch-gui.exe | Bin 0 -> 81415680 bytes .../inkstitch/electron/libEGL.dll | Bin 0 -> 89600 bytes .../inkstitch/electron/libGLESv2.dll | Bin 0 -> 4310528 bytes .../inkstitch/electron/locales/am.pak | Bin 0 -> 100801 bytes .../inkstitch/electron/locales/ar.pak | Bin 0 -> 100211 bytes .../inkstitch/electron/locales/bg.pak | Bin 0 -> 109803 bytes .../inkstitch/electron/locales/bn.pak | Bin 0 -> 144375 bytes .../inkstitch/electron/locales/ca.pak | Bin 0 -> 71155 bytes .../inkstitch/electron/locales/cs.pak | Bin 0 -> 72793 bytes .../inkstitch/electron/locales/da.pak | Bin 0 -> 65844 bytes .../inkstitch/electron/locales/de.pak | Bin 0 -> 71137 bytes .../inkstitch/electron/locales/el.pak | Bin 0 -> 123261 bytes .../inkstitch/electron/locales/en-GB.pak | Bin 0 -> 59095 bytes .../inkstitch/electron/locales/en-US.pak | Bin 0 -> 59750 bytes .../inkstitch/electron/locales/es-419.pak | Bin 0 -> 69212 bytes .../inkstitch/electron/locales/es.pak | Bin 0 -> 71389 bytes .../inkstitch/electron/locales/et.pak | Bin 0 -> 63513 bytes .../inkstitch/electron/locales/fa.pak | Bin 0 -> 97960 bytes .../inkstitch/electron/locales/fi.pak | Bin 0 -> 65526 bytes .../inkstitch/electron/locales/fil.pak | Bin 0 -> 72110 bytes .../inkstitch/electron/locales/fr.pak | Bin 0 -> 76367 bytes .../inkstitch/electron/locales/gu.pak | Bin 0 -> 137632 bytes .../inkstitch/electron/locales/he.pak | Bin 0 -> 84670 bytes .../inkstitch/electron/locales/hi.pak | Bin 0 -> 139366 bytes .../inkstitch/electron/locales/hr.pak | Bin 0 -> 68911 bytes .../inkstitch/electron/locales/hu.pak | Bin 0 -> 73193 bytes .../inkstitch/electron/locales/id.pak | Bin 0 -> 63157 bytes .../inkstitch/electron/locales/it.pak | Bin 0 -> 69126 bytes .../inkstitch/electron/locales/ja.pak | Bin 0 -> 84604 bytes .../inkstitch/electron/locales/kn.pak | Bin 0 -> 157441 bytes .../inkstitch/electron/locales/ko.pak | Bin 0 -> 70354 bytes .../inkstitch/electron/locales/lt.pak | Bin 0 -> 74674 bytes .../inkstitch/electron/locales/lv.pak | Bin 0 -> 74019 bytes .../inkstitch/electron/locales/ml.pak | Bin 0 -> 169319 bytes .../inkstitch/electron/locales/mr.pak | Bin 0 -> 139806 bytes .../inkstitch/electron/locales/ms.pak | Bin 0 -> 64602 bytes .../inkstitch/electron/locales/nb.pak | Bin 0 -> 64364 bytes .../inkstitch/electron/locales/nl.pak | Bin 0 -> 67612 bytes .../inkstitch/electron/locales/pl.pak | Bin 0 -> 72130 bytes .../inkstitch/electron/locales/pt-BR.pak | Bin 0 -> 68998 bytes .../inkstitch/electron/locales/pt-PT.pak | Bin 0 -> 69074 bytes .../inkstitch/electron/locales/ro.pak | Bin 0 -> 71836 bytes .../inkstitch/electron/locales/ru.pak | Bin 0 -> 109711 bytes .../inkstitch/electron/locales/sk.pak | Bin 0 -> 73788 bytes .../inkstitch/electron/locales/sl.pak | Bin 0 -> 69728 bytes .../inkstitch/electron/locales/sr.pak | Bin 0 -> 105643 bytes .../inkstitch/electron/locales/sv.pak | Bin 0 -> 64075 bytes .../inkstitch/electron/locales/sw.pak | Bin 0 -> 65194 bytes .../inkstitch/electron/locales/ta.pak | Bin 0 -> 162015 bytes .../inkstitch/electron/locales/te.pak | Bin 0 -> 151293 bytes .../inkstitch/electron/locales/th.pak | Bin 0 -> 129737 bytes .../inkstitch/electron/locales/tr.pak | Bin 0 -> 68085 bytes .../inkstitch/electron/locales/uk.pak | Bin 0 -> 112476 bytes .../inkstitch/electron/locales/vi.pak | Bin 0 -> 78514 bytes .../inkstitch/electron/locales/zh-CN.pak | Bin 0 -> 59042 bytes .../inkstitch/electron/locales/zh-TW.pak | Bin 0 -> 59153 bytes .../inkstitch/electron/natives_blob.bin | Bin 0 -> 125011 bytes .../inkstitch/electron/osmesa.dll | Bin 0 -> 2670592 bytes .../inkstitch/electron/resources.pak | Bin 0 -> 8720763 bytes .../inkstitch/electron/resources/app.asar | Bin 0 -> 22120821 bytes .../node_modules/spawn-rx/CODE_OF_CONDUCT.md | 50 + .../node_modules/spawn-rx/COPYING | 7 + .../node_modules/spawn-rx/build.cmd | 1 + .../node_modules/spawn-rx/build.sh | 2 + .../node_modules/spawn-rx/esdoc.json | 26 + .../node_modules/spawn-rx/lib/index.js | 352 + .../node_modules/spawn-rx/lib/src/index.js | 317 + .../spawn-rx/lib/src/index.js.map | 1 + .../node_modules/spawn-rx/package.json | 38 + .../node_modules/spawn-rx/src/index.ts | 341 + .../node_modules/spawn-rx/tsconfig.json | 29 + .../node_modules/spawn-rx/tslint.json | 38 + .../spawn-rx/vendor/jobber/Jobber.exe | Bin 0 -> 74240 bytes .../electron/resources/electron.asar | Bin 0 -> 282150 bytes .../inkstitch/electron/snapshot_blob.bin | Bin 0 -> 1215256 bytes .../inkstitch/electron/swiftshader/libEGL.dll | Bin 0 -> 117248 bytes .../electron/swiftshader/libGLESv2.dll | Bin 0 -> 2250240 bytes .../electron/v8_context_snapshot.bin | Bin 0 -> 1522696 bytes .../examples/Applique Color Change.svg | 470 + .../inkstitch/examples/Applique Stop.svg | 466 + .../inkstitch/examples/Bfly FSL.svg | 837 + .../examples/Donkey FullBack Design.svg | 652 + .../inkstitch/examples/Faux Fill Blend.svg | 580 + .../Fill Stitch Starting and Ending Point.svg | 215 + .../inkstitch/examples/Fringe Example.svg | 500 + .../InkStitch 1 Color Top Left Origin.svg | 421 + .../inkstitch/examples/InkStitch 1 Color.svg | 404 + .../examples/InkStitch Logo QR Code Patch.svg | 2312 + .../examples/InkStitch Multi Color.svg | 430 + .../examples/Logo Hat Embroidery.svg | 437 + .../examples/Monogram Frame Example.svg | 586 + .../inkstitch/examples/Puff Only.svg | 219 + .../inkstitch/examples/PuffRegular.svg | 281 + .../inkstitch/examples/True Blend.svg | 710 + .../examples/inkstitch_logo_screenshot.png | Bin 0 -> 109486 bytes .../inkstitch/fonts/dejavufont/LICENSE | 108 + .../inkstitch/fonts/dejavufont/font.json | 105 + .../inkstitch/fonts/dejavufont/←.svg | 6746 + .../inkstitch/fonts/dejavufont/↑.svg | 6746 + .../inkstitch/fonts/dejavufont/→.svg | 6746 + .../inkstitch/fonts/dejavufont/↓.svg | 6746 + .../inkstitch/fonts/geneva_rounded/LICENSE | 1 + .../inkstitch/fonts/geneva_rounded/README.md | 7 + .../inkstitch/fonts/geneva_rounded/font.json | 14 + .../inkstitch/fonts/geneva_rounded/←.svg | 2948 + .../inkstitch/fonts/geneva_rounded/↑.svg | 2948 + .../inkstitch/fonts/geneva_rounded/→.svg | 2948 + .../inkstitch/fonts/geneva_rounded/↓.svg | 2948 + .../inkstitch/fonts/geneva_simple/LICENSE | 1 + .../inkstitch/fonts/geneva_simple/README.md | 7 + .../inkstitch/fonts/geneva_simple/font.json | 14 + .../inkstitch/fonts/geneva_simple/←.svg | 2841 + .../inkstitch/fonts/geneva_simple/↑.svg | 2841 + .../inkstitch/fonts/geneva_simple/→.svg | 2841 + .../inkstitch/fonts/geneva_simple/↓.svg | 2841 + .../inkstitch/fonts/medium_font/LICENSE | 94 + .../inkstitch/fonts/medium_font/README_en.md | 24 + .../inkstitch/fonts/medium_font/font.json | 14 + .../inkstitch/fonts/medium_font/←.svg | 3215 + .../inkstitch/fonts/medium_font/↑.svg | 3174 + .../inkstitch/fonts/medium_font/→.svg | 3205 + .../inkstitch/fonts/medium_font/↓.svg | 3176 + .../inkstitch/fonts/small_font/LICENSE | 94 + .../inkstitch/fonts/small_font/README_en.md | 24 + .../inkstitch/fonts/small_font/font.json | 14 + .../inkstitch/fonts/small_font/←.svg | 3112 + .../inkstitch/fonts/small_font/↑.svg | 3076 + .../inkstitch/fonts/small_font/→.svg | 3097 + .../inkstitch/fonts/small_font/↓.svg | 3071 + .../inkstitch/fonts/tt_directors/README_en.md | 13 + .../inkstitch/fonts/tt_directors/font.json | 14 + .../inkstitch/fonts/tt_directors/←.svg | 2334 + .../inkstitch/fonts/tt_directors/↑.svg | 2334 + .../inkstitch/fonts/tt_directors/→.svg | 2389 + .../inkstitch/fonts/tt_directors/↓.svg | 2334 + .../inkstitch/fonts/tt_masters/README_en.md | 13 + .../inkstitch/fonts/tt_masters/font.json | 16 + .../inkstitch/fonts/tt_masters/←.svg | 2968 + .../inkstitch/fonts/tt_masters/↑.svg | 2968 + .../inkstitch/fonts/tt_masters/→.svg | 2968 + .../inkstitch/fonts/tt_masters/↓.svg | 2968 + .../palettes/InkStitch ARC Polyester.gpl | 292 + .../palettes/InkStitch ARC Rayon.gpl | 292 + .../palettes/InkStitch Admelody Polyester.gpl | 324 + .../palettes/InkStitch Admelody Rayon.gpl | 424 + .../inkstitch/palettes/InkStitch Anchor.gpl | 427 + .../palettes/InkStitch Aurifil Lana.gpl | 110 + .../palettes/InkStitch Aurifil Mako.gpl | 162 + .../palettes/InkStitch Aurifil Polyester.gpl | 208 + .../palettes/InkStitch Aurifil Rayon.gpl | 184 + .../palettes/InkStitch Aurifil Royal.gpl | 503 + .../palettes/InkStitch BFC Polyester.gpl | 324 + .../palettes/InkStitch Brildor AC.gpl | 124 + .../palettes/InkStitch Brildor CO.gpl | 74 + .../palettes/InkStitch Brildor MF.gpl | 214 + .../palettes/InkStitch Brildor NY.gpl | 184 + .../palettes/InkStitch Brildor PB.gpl | 264 + .../palettes/InkStitch Brother Country.gpl | 65 + .../palettes/InkStitch Brother Embroidery.gpl | 65 + .../palettes/InkStitch Coats Alcazar Jazz.gpl | 308 + .../palettes/InkStitch Coats Alcazar.gpl | 504 + .../palettes/InkStitch Coats Sylko USA.gpl | 307 + .../palettes/InkStitch Coats Sylko.gpl | 403 + .../inkstitch/palettes/InkStitch DMC.gpl | 462 + .../palettes/InkStitch Embroidex.gpl | 262 + .../inkstitch/palettes/InkStitch Emmel.gpl | 525 + .../palettes/InkStitch Fil-Tec Glide.gpl | 217 + .../palettes/InkStitch Floriani Polyester.gpl | 290 + .../palettes/InkStitch FuFu Polyester.gpl | 717 + .../palettes/InkStitch FuFu Rayon.gpl | 717 + .../inkstitch/palettes/InkStitch Gunold.gpl | 134 + .../InkStitch Gutermann Creativ Dekor.gpl | 204 + .../palettes/InkStitch Hemingworth.gpl | 298 + .../palettes/InkStitch Isacord Polyester.gpl | 394 + .../palettes/InkStitch Isafil Rayon.gpl | 290 + .../palettes/InkStitch Isalon Polyester.gpl | 418 + .../inkstitch/palettes/InkStitch Janome.gpl | 82 + .../palettes/InkStitch King Star.gpl | 434 + .../palettes/InkStitch MTB - Embroidex.gpl | 111 + .../palettes/InkStitch Madeira Burmilana.gpl | 125 + .../palettes/InkStitch Madeira Matt.gpl | 165 + .../palettes/InkStitch Madeira Polyneon.gpl | 353 + .../palettes/InkStitch Madeira Rayon.gpl | 361 + .../palettes/InkStitch Marathon Polyester.gpl | 305 + .../palettes/InkStitch Marathon Rayon V3.gpl | 388 + .../palettes/InkStitch Marathon Rayon.gpl | 321 + .../inkstitch/palettes/InkStitch Metro.gpl | 172 + .../palettes/InkStitch Mettler Embroidery.gpl | 156 + .../palettes/InkStitch Mettler Poly Sheen.gpl | 355 + .../InkStitch Outback Embroidery Rayon.gpl | 104 + .../inkstitch/palettes/InkStitch Poly X40.gpl | 290 + .../inkstitch/palettes/InkStitch Princess.gpl | 124 + .../inkstitch/palettes/InkStitch RAL.gpl | 198 + .../palettes/InkStitch Radiant Rayon.gpl | 106 + .../InkStitch Robison-Anton Polyester.gpl | 456 + .../InkStitch Robison-Anton Rayon.gpl | 423 + .../palettes/InkStitch Royal Polyester.gpl | 477 + .../InkStitch Royal Viscose Rayon.gpl | 498 + .../inkstitch/palettes/InkStitch Sigma.gpl | 154 + .../InkStitch Simthread Polyester.gpl | 111 + .../palettes/InkStitch Simthread Rayon.gpl | 388 + .../palettes/InkStitch Sulky Polyester.gpl | 911 + .../palettes/InkStitch Sulky Rayon.gpl | 284 + .../palettes/InkStitch Swist Rayon.gpl | 231 + .../palettes/InkStitch Tristar Polyester.gpl | 302 + .../palettes/InkStitch Tristar Rayon.gpl | 410 + .../palettes/InkStitch Viking Palette.gpl | 33 + .../palettes/InkStitch Vyapar Rayon.gpl | 292 + .../InkStitch Wonderfil Polyester.gpl | 174 + .../palettes/InkStitch Wonderfil Rayon.gpl | 346 + .../inkstitch/symbols/inkstitch.svg | 418 + .../insert_paper_template.inx | 30 + .../insert_paper_template.py | 96 + .../inset_alignment/inset_alignment.inx | 33 + .../inset_alignment/inset_alignment.py | 91 + .../inventory_sticker/inventory_sticker.inx | 60 + .../inventory_sticker/inventory_sticker.py | 655 + .../isometric_projection.inx | 22 + .../isometric_projection.py | 161 + .../j_tech_photonics_laser_tool.inx | 71 + .../j_tech_photonics_laser_tool.py | 296 + .../jitter_gradients/jitter_gradients.inx | 17 + .../jitter_gradients/jitter_gradients.py | 66 + .../fablabchemnitz/join_paths/join_paths.inx | 25 + .../fablabchemnitz/join_paths/join_paths.py | 163 + .../jpeg_export/jpeg_export.inx | 30 + .../fablabchemnitz/jpeg_export/jpeg_export.py | 202 + .../fablabchemnitz/knob_scale/knob_scale.inx | 50 + .../fablabchemnitz/knob_scale/knob_scale.py | 221 + .../label_feature_with_fill_color.inx | 16 + .../label_feature_with_fill_color.py | 143 + .../label_guides/label_guides.inx | 158 + .../label_guides/label_guides.py | 559 + .../lasercut_jigsaw/lasercut_jigsaw.inx | 75 + .../lasercut_jigsaw/lasercut_jigsaw.py | 498 + .../lasercut_polygon/lasercut_polygon.inx | 70 + .../lasercut_polygon/lasercut_polygon.py | 180 + extensions/fablabchemnitz/layer_clip/clip.py | 73 + .../fablabchemnitz/layer_clip/clip_above.inx | 16 + .../fablabchemnitz/layer_clip/clip_above.py | 52 + .../fablabchemnitz/layer_clip/clip_below.inx | 16 + .../fablabchemnitz/layer_clip/clip_below.py | 52 + .../layer_clip/clip_current.inx | 16 + .../fablabchemnitz/layer_clip/clip_current.py | 36 + .../layer_clip/clip_fixtransform.inx | 16 + .../layer_clip/clip_fixtransform.py | 41 + .../fablabchemnitz/layer_clip/clip_parent.inx | 16 + .../fablabchemnitz/layer_clip/clip_parent.py | 45 + .../fablabchemnitz/layer_clip/clip_remove.inx | 16 + .../fablabchemnitz/layer_clip/clip_remove.py | 50 + .../leather_case/leather_case.inx | 31 + .../leather_case/leather_case.py | 159 + .../line_animator/line_animator.inx | 47 + .../line_animator/line_animator.py | 216 + .../line_shading/line_shading.inx | 43 + .../line_shading/line_shading.py | 320 + extensions/fablabchemnitz/line_shading/png.py | 2751 + .../living_hinge/living_hinge.inx | 37 + .../living_hinge/living_hinge.py | 262 + .../living_hinge_size_input.inx | 23 + .../living_hinge_size_input.py | 81 + .../longest_continuous_path.inx | 24 + .../longest_continuous_path.py | 624 + .../fablabchemnitz/low_poly_2/low_poly_2.inx | 16 + .../fablabchemnitz/low_poly_2/low_poly_2.py | 301 + .../fablabchemnitz/lyz_export/lyz_bezmisc.py | 286 + .../lyz_export/lyz_cspsubdiv.py | 35 + .../lyz_export/lyz_cubicsuperpath.py | 166 + .../fablabchemnitz/lyz_export/lyz_export.inx | 38 + .../fablabchemnitz/lyz_export/lyz_export.py | 571 + .../lyz_export/lyz_export_zip.inx | 45 + .../fablabchemnitz/lyz_export/lyz_ffgeom.py | 138 + .../fablabchemnitz/lyz_export/lyz_inkex.py | 399 + .../fablabchemnitz/lyz_export/lyz_library.py | 441 + .../lyz_export/lyz_simplepath.py | 209 + .../lyz_export/lyz_simplestyle.py | 242 + .../lyz_export/lyz_simpletransform.py | 259 + extensions/fablabchemnitz/maze/maze.inx | 34 + extensions/fablabchemnitz/maze/maze.py | 66 + extensions/fablabchemnitz/maze/maze_lib.py | 536 + extensions/fablabchemnitz/mirror/mirror.inx | 16 + extensions/fablabchemnitz/mirror/mirror.py | 77 + .../move_path_node/move_path_node.inx | 55 + .../move_path_node/move_path_node.py | 183 + .../mutual_cut_line/mutual_cut_line.inx | 16 + .../mutual_cut_line/mutual_cut_line.py | 91 + extensions/fablabchemnitz/netting/netting.inx | 52 + extensions/fablabchemnitz/netting/netting.py | 106 + .../nextgenerator/nextgenerator.inx | 63 + .../nextgenerator/nextgenerator.py | 142 + .../number_subpaths/number_subpaths.inx | 21 + .../number_subpaths/number_subpaths.py | 83 + extensions/fablabchemnitz/ocr/.gitignore | 129 + extensions/fablabchemnitz/ocr/ocr.inx | 16 + extensions/fablabchemnitz/ocr/ocr.py | 46 + .../offset_paths/offset_paths.inx | 79 + .../offset_paths/offset_paths.py | 149 + .../open_closed_path/open_closed_path.inx | 16 + .../open_closed_path/open_closed_path.py | 43 + .../open_in_roland_cutstudio.inx | 16 + .../open_in_roland_cutstudio.py | 397 + .../optimize_sequence_lasercut_sequence.inx | 16 + .../optimize_sequence_lasercut_sequence.py | 40 + .../optimize_sequence_travel_distance.inx | 25 + .../optimize_sequence_travel_distance.py | 1239 + .../plot_utils.py | 744 + .../simplepath.py | 211 + .../simpletransform.py | 261 + .../origami_patterns/OrigamiPatterns/Hypar.py | 112 + .../OrigamiPatterns/Kresling.py | 154 + .../OrigamiPatterns/Kresling_full.py | 89 + .../origami_patterns/OrigamiPatterns/Path.py | 466 + .../OrigamiPatterns/Pattern.py | 249 + .../OrigamiPatterns/Pleat_Circular.py | 91 + .../OrigamiPatterns/Template.py | 97 + .../OrigamiPatterns/Waterbomb.py | 103 + .../OrigamiPatterns/__init__.py | 0 .../origami_patterns_kresling.inx | 92 + .../origami_patterns_pleat_circular.inx | 67 + .../origami_patterns_pleat_hypar.inx | 78 + .../origami_patterns_template.inx | 90 + .../origami_patterns_waterbomb.inx | 72 + .../fablabchemnitz/output_pro/output_pro.inx | 16 + .../fablabchemnitz/output_pro/output_pro.py | 1078 + .../output_pro/outputpro/__init__.py | 0 .../output_pro/outputpro/alpha.png | Bin 0 -> 170 bytes .../output_pro/outputpro/cmyk.py | 118 + .../output_pro/outputpro/cutmarks.py | 84 + .../output_pro/outputpro/preview_mask.png | Bin 0 -> 2029 bytes .../output_pro/outputpro/top.png | Bin 0 -> 70828 bytes .../admesh/linux/.libs/admesh | Bin 0 -> 60352 bytes .../admesh/linux/.libs/libadmesh.la | 1 + .../admesh/linux/.libs/libadmesh.lai | 41 + .../admesh/linux/.libs/libadmesh.so | 1 + .../admesh/linux/.libs/libadmesh.so.1 | 1 + .../admesh/linux/.libs/libadmesh.so.1.0.0 | Bin 0 -> 200520 bytes .../papercraft_unfold/admesh/linux/AUTHORS | 11 + .../papercraft_unfold/admesh/linux/COPYING | 339 + .../papercraft_unfold/admesh/linux/ChangeLog | 143 + .../admesh/linux/ChangeLog.old | 42 + .../papercraft_unfold/admesh/linux/INSTALL | 14 + .../papercraft_unfold/admesh/linux/Makefile | 1138 + .../admesh/linux/Makefile.am | 63 + .../admesh/linux/Makefile.in | 1138 + .../papercraft_unfold/admesh/linux/README.md | 115 + .../papercraft_unfold/admesh/linux/aclocal.m4 | 1169 + .../papercraft_unfold/admesh/linux/admesh | 210 + .../admesh/linux/admesh-doc.txt | 475 + .../papercraft_unfold/admesh/linux/admesh.1 | 173 + .../papercraft_unfold/admesh/linux/block.stl | 86 + .../papercraft_unfold/admesh/linux/compile | 347 + .../admesh/linux/config.guess | 1420 + .../papercraft_unfold/admesh/linux/config.h | 65 + .../admesh/linux/config.h.in | 64 + .../papercraft_unfold/admesh/linux/config.log | 699 + .../admesh/linux/config.status | 1964 + .../papercraft_unfold/admesh/linux/config.sub | 1798 + .../papercraft_unfold/admesh/linux/configure | 15080 + .../admesh/linux/configure.ac | 90 + .../papercraft_unfold/admesh/linux/depcomp | 791 + .../papercraft_unfold/admesh/linux/install-sh | 527 + .../admesh/linux/libadmesh.la | 41 + .../admesh/linux/libadmesh.pc | 11 + .../admesh/linux/libadmesh.pc.in | 11 + .../papercraft_unfold/admesh/linux/libtool | 11645 + .../papercraft_unfold/admesh/linux/ltmain.sh | 11147 + .../admesh/linux/m4/libtool.m4 | 8372 + .../admesh/linux/m4/ltoptions.m4 | 437 + .../admesh/linux/m4/ltsugar.m4 | 124 + .../admesh/linux/m4/ltversion.m4 | 23 + .../admesh/linux/m4/lt~obsolete.m4 | 99 + .../papercraft_unfold/admesh/linux/missing | 215 + .../admesh/linux/src/.deps/.dirstamp | 0 .../admesh/linux/src/.deps/admesh.Po | 179 + .../admesh/linux/src/.deps/connect.Plo | 212 + .../admesh/linux/src/.deps/normals.Plo | 212 + .../admesh/linux/src/.deps/shared.Plo | 186 + .../admesh/linux/src/.deps/stl_io.Plo | 188 + .../admesh/linux/src/.deps/stlinit.Plo | 225 + .../admesh/linux/src/.deps/util.Plo | 211 + .../admesh/linux/src/.dirstamp | 0 .../admesh/linux/src/.libs/connect.o | Bin 0 -> 72640 bytes .../admesh/linux/src/.libs/normals.o | Bin 0 -> 26208 bytes .../admesh/linux/src/.libs/shared.o | Bin 0 -> 43240 bytes .../admesh/linux/src/.libs/stl_io.o | Bin 0 -> 75744 bytes .../admesh/linux/src/.libs/stlinit.o | Bin 0 -> 39496 bytes .../admesh/linux/src/.libs/util.o | Bin 0 -> 53696 bytes .../admesh/linux/src/admesh.c | 425 + .../admesh/linux/src/admesh.o | Bin 0 -> 83776 bytes .../admesh/linux/src/connect.c | 975 + .../admesh/linux/src/connect.lo | 12 + .../admesh/linux/src/normals.c | 333 + .../admesh/linux/src/normals.lo | 12 + .../admesh/linux/src/portable_endian.h | 123 + .../admesh/linux/src/shared.c | 262 + .../admesh/linux/src/shared.lo | 12 + .../papercraft_unfold/admesh/linux/src/stl.h | 201 + .../admesh/linux/src/stl_io.c | 479 + .../admesh/linux/src/stl_io.lo | 12 + .../admesh/linux/src/stlinit.c | 404 + .../admesh/linux/src/stlinit.lo | 12 + .../papercraft_unfold/admesh/linux/src/util.c | 557 + .../admesh/linux/src/util.lo | 12 + .../papercraft_unfold/admesh/linux/stamp-h1 | 1 + .../admesh/windows/admesh.exe | Bin 0 -> 32548 bytes .../admesh/windows/include/admesh/stl.h | 201 + .../admesh/windows/lib/libadmesh.a | Bin 0 -> 51152 bytes .../admesh/windows/lib/libadmesh.dll.a | Bin 0 -> 36006 bytes .../admesh/windows/lib/libadmesh.la | 41 + .../admesh/windows/lib/pkgconfig/libadmesh.pc | 11 + .../admesh/windows/libadmesh-1.dll | Bin 0 -> 55131 bytes .../assets/models/cube/cube.mtl | 10 + .../assets/models/cube/cube.obj | 34 + .../assets/models/cube/cube.png | Bin 0 -> 152556 bytes .../assets/shaders/shader.frag | 22 + .../assets/shaders/shader.vert | 12 + .../papercraft_unfold/d3/__init__.py | 0 .../papercraft_unfold/d3/camera.py | 27 + .../papercraft_unfold/d3/controls.py | 112 + .../papercraft_unfold/d3/geometry.py | 108 + .../papercraft_unfold/d3/model/__init__.py | 0 .../papercraft_unfold/d3/model/basemodel.py | 334 + .../d3/model/formats/__init__.py | 4 + .../papercraft_unfold/d3/model/formats/obj.py | 208 + .../papercraft_unfold/d3/model/formats/off.py | 65 + .../papercraft_unfold/d3/model/formats/ply.py | 494 + .../papercraft_unfold/d3/model/formats/stl.py | 116 + .../papercraft_unfold/d3/model/mesh.py | 230 + .../papercraft_unfold/d3/model/tools.py | 99 + .../papercraft_unfold/d3/shader.py | 53 + .../papercraft_unfold/fstl/Qt5Core.dll | Bin 0 -> 6162552 bytes .../papercraft_unfold/fstl/Qt5Gui.dll | Bin 0 -> 7160952 bytes .../papercraft_unfold/fstl/Qt5OpenGL.dll | Bin 0 -> 327800 bytes .../papercraft_unfold/fstl/Qt5Widgets.dll | Bin 0 -> 5593720 bytes .../papercraft_unfold/fstl/fstl | Bin 0 -> 582648 bytes .../papercraft_unfold/fstl/fstl.exe | Bin 0 -> 514560 bytes .../papercraft_unfold/fstl/libEGL.dll | Bin 0 -> 23672 bytes .../papercraft_unfold/fstl/libGLESv2.dll | Bin 0 -> 3573880 bytes .../fstl/platforms/qwindows.dll | Bin 0 -> 1505400 bytes .../papercraft_unfold/papercraft_unfold.inx | 80 + .../papercraft_unfold/papercraft_unfold.py | 205 + .../papercraft_unfold/unfold/cygwin1.dll | Bin 0 -> 3592481 bytes .../papercraft_unfold/unfold/unfold_labels | Bin 0 -> 91488 bytes .../unfold/unfold_labels.exe | Bin 0 -> 247035 bytes .../papercraft_unfold/unfold/unfold_nolabels | Bin 0 -> 95864 bytes .../unfold/unfold_nolabels.exe | Bin 0 -> 227067 bytes .../fablabchemnitz/paperfold/paperfold.inx | 108 + .../fablabchemnitz/paperfold/paperfold.py | 981 + .../fablabchemnitz/parabola/parabola.inx | 36 + .../fablabchemnitz/parabola/parabola.py | 240 + .../path_intersections/path_intersections.inx | 18 + .../path_intersections/path_intersections.py | 423 + extensions/fablabchemnitz/pathops/pathops.inx | 30 + extensions/fablabchemnitz/pathops/pathops.py | 404 + .../pathops/pathops_combine.inx | 18 + .../pathops/pathops_cutpath.inx | 18 + .../pathops/pathops_difference.inx | 18 + .../pathops/pathops_division.inx | 18 + .../pathops/pathops_exclusion.inx | 18 + .../pathops/pathops_intersection.inx | 18 + .../fablabchemnitz/pathops/pathops_union.inx | 18 + .../paths_to_openscad/paths_to_openscad.inx | 95 + .../paths_to_openscad/paths_to_openscad.py | 1461 + .../perspective_grid/perspective_grid.inx | 32 + .../perspective_grid/perspective_grid.py | 270 + .../piano_scale/piano_scale.inx | 46 + .../fablabchemnitz/piano_scale/piano_scale.py | 331 + .../fablabchemnitz/pixel2svg/pixel2svg.inx | 44 + .../fablabchemnitz/pixel2svg/pixel2svg.py | 283 + .../playing_cards/playing_cards.inx | 131 + .../playing_cards/playing_cards.py | 862 + .../fablabchemnitz/polygen/.gitattributes | 2 + extensions/fablabchemnitz/polygen/polygen.inx | 44 + extensions/fablabchemnitz/polygen/polygen.py | 692 + .../polygon_side/polygon_side.inx | 22 + .../polygon_side/polygon_side.py | 118 + .../fablabchemnitz/polyhedra/polyhedra.inx | 67 + .../fablabchemnitz/polyhedra/polyhedra.py | 228 + .../polyhedra/polyhedrondata.py | 1429 + extensions/fablabchemnitz/primitive/primitive | Bin 0 -> 3743867 bytes .../fablabchemnitz/primitive/primitive.exe | Bin 0 -> 3910656 bytes .../fablabchemnitz/primitive/primitive.inx | 72 + .../fablabchemnitz/primitive/primitive.py | 195 + .../printing_marks_dotted.inx | 46 + .../printing_marks_dotted.py | 475 + .../purge_duplicate_path_nodes.inx | 22 + .../purge_duplicate_path_nodes.py | 101 + .../purge_duplicate_path_segments.inx | 16 + .../purge_duplicate_path_segments.py | 123 + .../purge_pointy_paths/purge_pointy_paths.inx | 16 + .../purge_pointy_paths/purge_pointy_paths.py | 49 + .../quick_joint/quick_joint.inx | 38 + .../fablabchemnitz/quick_joint/quick_joint.py | 310 + extensions/fablabchemnitz/ratchet/ratchet.inx | 55 + extensions/fablabchemnitz/ratchet/ratchet.py | 114 + .../remove_duplicate_guides.inx | 16 + .../remove_duplicate_guides.py | 130 + .../remove_empty_groups.inx | 16 + .../remove_empty_groups.py | 36 + .../remove_obsolete_attributes.inx | 20 + .../remove_obsolete_attributes.py | 44 + .../render_silhouette_regmarks.inx | 20 + .../render_silhouette_regmarks.py | 101 + .../replace_color_and_alpha.inx | 18 + .../replace_color_and_alpha.py | 81 + .../reverse_order_of_subpaths.inx | 17 + .../reverse_order_of_subpaths.py | 45 + .../robot_boxes/robot_boxes.inx | 38 + .../fablabchemnitz/robot_boxes/robot_boxes.py | 357 + .../roland_cutstudio_eps_export.inx | 15 + .../roland_cutstudio_eps_export.py | 262 + .../fablabchemnitz/rotations/rotate_helper.py | 59 + .../rotations/rotations_find_all_optimal.inx | 16 + .../rotations/rotations_find_all_optimal.py | 69 + .../rotations_minimum_bounding_box_area.inx | 16 + .../rotations_minimum_bounding_box_area.py | 43 + .../rotations/rotations_minimum_width.inx | 16 + .../rotations/rotations_minimum_width.py | 43 + .../round_corners/round_corners.inx | 35 + .../round_corners/round_corners.py | 520 + extensions/fablabchemnitz/rounder/rounder.inx | 30 + extensions/fablabchemnitz/rounder/rounder.py | 165 + .../scale_to_path_length.inx | 37 + .../scale_to_path_length.py | 123 + .../scale_to_real/scale_to_real.inx | 92 + .../scale_to_real/scale_to_real.py | 242 + .../scale_to_size/scale_to_size.inx | 31 + .../scale_to_size/scale_to_size.py | 67 + .../set_view_box/set_view_box.inx | 16 + .../set_view_box/set_view_box.py | 69 + .../shape_recognition/shape_recognition.inx | 52 + .../shape_recognition/shape_recognition.py | 836 + .../shape_recognition/shaperrec/extenders.py | 130 + .../shape_recognition/shaperrec/geometric.py | 305 + .../shape_recognition/shaperrec/groups.py | 278 + .../shape_recognition/shaperrec/internal.py | 351 + .../shaperrec/manipulation.py | 187 + .../shaperrec/miscellaneous.py | 209 + extensions/fablabchemnitz/shapes/arakne_xy.py | 382 + extensions/fablabchemnitz/shapes/shapes.inx | 197 + extensions/fablabchemnitz/shapes/shapes.py | 766 + .../sheet_metal_conus/sheet_metal_conus.inx | 32 + .../sheet_metal_conus/sheet_metal_conus.py | 430 + .../sheriff_star/sheriff_star.inx | 33 + .../sheriff_star/sheriff_star.py | 148 + .../shirt_waist/sewing_patterns.py | 820 + .../shirt_waist/shirt_waist.inx | 33 + .../fablabchemnitz/shirt_waist/shirt_waist.py | 459 + .../show_path_coordinates.inx | 16 + .../show_path_coordinates.py | 42 + .../simple_frame/simple_frame.inx | 23 + .../simple_frame/simple_frame.py | 272 + .../simple/ui/menus.xml | 328 + .../simple/ui/toolbar-commands.ui | 41 + .../simple/ui/toolbar-tool.ui | 49 + .../simpleinkscape/simpleinkscape.inx | 36 + .../simpleinkscape/simpleinkscape.py | 93 + .../sine_and_lace/sine_and_lace.inx | 47 + .../sine_and_lace/sine_and_lace.py | 332 + .../slic3r_stl_input/slic3r_stl_input.inx | 123 + .../slic3r_stl_input/slic3r_stl_input.py | 419 + .../slider_electrodes/slider_electrodes.inx | 18 + .../slider_electrodes/slider_electrodes.py | 56 + .../snap_object_points/snap_object_points.inx | 21 + .../snap_object_points/snap_object_points.py | 136 + .../source_code_text/source_code_text.inx | 22 + .../source_code_text/source_code_text.py | 72 + .../inkscapeMadeEasy/inkscapeMadeEasy_Base.py | 1307 + .../inkscapeMadeEasy/inkscapeMadeEasy_Draw.py | 2231 + .../inkscapeMadeEasy/inkscapeMadeEasy_Plot.py | 1632 + .../fablabchemnitz/spirograph/spirograph.inx | 30 + .../fablabchemnitz/spirograph/spirograph.py | 248 + .../split_and_break_bezier_at_t.inx | 65 + .../split_and_break_bezier_at_t.py | 157 + .../split_bezier/split_bezier.inx | 35 + .../split_bezier/split_bezier.py | 167 + .../fablabchemnitz/sprocket/sprocket.inx | 32 + .../fablabchemnitz/sprocket/sprocket.py | 245 + .../fablabchemnitz/starshine/starshine.inx | 24 + .../fablabchemnitz/starshine/starshine.py | 105 + extensions/fablabchemnitz/streaks/streaks.inx | 42 + extensions/fablabchemnitz/streaks/streaks.py | 157 + .../fablabchemnitz/strip_line/.gitignore | 1 + .../strip_line/geometry/Circle.py | 27 + .../strip_line/geometry/Minus.py | 29 + .../strip_line/geometry/Plus.py | 34 + .../strip_line/geometry/Triangle.py | 99 + .../strip_line/geometry/Vertex.py | 52 + .../fablabchemnitz/strip_line/strip_line.inx | 18 + .../fablabchemnitz/strip_line/strip_line.py | 234 + .../stroke_color_as_fill.inx | 34 + .../stroke_color_as_fill.py | 111 + .../styles_to_layers/styles_to_layers.inx | 66 + .../styles_to_layers/styles_to_layers.py | 298 + extensions/fablabchemnitz/sudoku/qqwing | 210 + extensions/fablabchemnitz/sudoku/qqwing.exe | Bin 0 -> 135168 bytes extensions/fablabchemnitz/sudoku/sudoku.inx | 47 + extensions/fablabchemnitz/sudoku/sudoku.py | 111 + .../sundial_declining/sundial_declining.inx | 45 + .../sundial_declining/sundial_declining.py | 328 + .../svg2shenzhen/bitmap2component.exe | Bin 0 -> 1448030 bytes .../svg2shenzhen/bitmap2component_linux64 | Bin 0 -> 755571 bytes .../svg2shenzhen/bitmap2component_osx | Bin 0 -> 927400 bytes .../svg2shenzhen/svg2shenzhen/export.py | 750 + .../svg2shenzhen/svg2shenzhen/prepare.py | 321 + .../svg2shenzhen/svg2shenzhen_export.inx | 29 + .../svg2shenzhen/svg2shenzhen_prepare.inx | 19 + .../fablabchemnitz/svgo_output/node.exe | Bin 0 -> 10990464 bytes .../svgo_output/node_modules/.bin/svgo | Bin 0 -> 40 bytes .../node_modules/minimist/.travis.yml | 8 + .../svgo_output/node_modules/minimist/LICENSE | 18 + .../node_modules/minimist/example/parse.js | 2 + .../node_modules/minimist/index.js | 224 + .../node_modules/minimist/package.json | 71 + .../node_modules/minimist/readme.markdown | 91 + .../node_modules/minimist/test/all_bool.js | 32 + .../node_modules/minimist/test/bool.js | 143 + .../node_modules/minimist/test/dash.js | 31 + .../minimist/test/default_bool.js | 35 + .../node_modules/minimist/test/dotted.js | 22 + .../node_modules/minimist/test/long.js | 31 + .../node_modules/minimist/test/num.js | 36 + .../node_modules/minimist/test/parse.js | 197 + .../minimist/test/parse_modified.js | 9 + .../node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/stop_early.js | 15 + .../node_modules/minimist/test/unknown.js | 102 + .../node_modules/minimist/test/whitespace.js | 8 + .../svgo_output/node_modules/svgo/.npmignore | 10 + .../svgo_output/node_modules/svgo/.svgo.yml | 53 + .../node_modules/svgo/CHANGELOG.md | 335 + .../svgo_output/node_modules/svgo/LICENSE | 55 + .../svgo_output/node_modules/svgo/Makefile | 21 + .../svgo_output/node_modules/svgo/README.md | 146 + .../node_modules/svgo/README.ru.md | 145 + .../svgo_output/node_modules/svgo/bin/svgo | 3 + .../svgo_output/node_modules/svgo/lib/svgo.js | 81 + .../node_modules/svgo/lib/svgo/coa.js | 547 + .../node_modules/svgo/lib/svgo/config.js | 224 + .../node_modules/svgo/lib/svgo/js2svg.js | 325 + .../node_modules/svgo/lib/svgo/jsAPI.js | 256 + .../node_modules/svgo/lib/svgo/plugins.js | 98 + .../node_modules/svgo/lib/svgo/svg2js.js | 162 + .../node_modules/svgo/lib/svgo/tools.js | 142 + .../svgo/node_modules/.bin/js-yaml | Bin 0 -> 58 bytes .../svgo/node_modules/.bin/mkdirp | Bin 0 -> 48 bytes .../svgo/node_modules/coa/.npmignore | 6 + .../svgo/node_modules/coa/.travis.yml | 9 + .../svgo/node_modules/coa/GNUmakefile | 34 + .../svgo/node_modules/coa/README.md | 322 + .../svgo/node_modules/coa/README.ru.md | 316 + .../svgo/node_modules/coa/index.js | 1 + .../svgo/node_modules/coa/lib/arg.js | 175 + .../svgo/node_modules/coa/lib/cmd.js | 605 + .../svgo/node_modules/coa/lib/color.js | 25 + .../svgo/node_modules/coa/lib/completion.js | 134 + .../svgo/node_modules/coa/lib/completion.sh | 43 + .../svgo/node_modules/coa/lib/index.js | 10 + .../svgo/node_modules/coa/lib/opt.js | 338 + .../svgo/node_modules/coa/lib/shell.js | 14 + .../coa/node_modules/q/CHANGES.md | 786 + .../node_modules/coa/node_modules/q/LICENSE | 18 + .../node_modules/coa/node_modules/q/README.md | 881 + .../coa/node_modules/q/package.json | 120 + .../svgo/node_modules/coa/node_modules/q/q.js | 2048 + .../node_modules/coa/node_modules/q/queue.js | 35 + .../svgo/node_modules/coa/package.json | 76 + .../svgo/node_modules/coa/src/arg.coffee | 130 + .../svgo/node_modules/coa/src/cmd.coffee | 456 + .../svgo/node_modules/coa/src/color.coffee | 25 + .../node_modules/coa/src/completion.coffee | 156 + .../svgo/node_modules/coa/src/index.coffee | 5 + .../svgo/node_modules/coa/src/opt.coffee | 243 + .../svgo/node_modules/coa/src/shell.coffee | 10 + .../svgo/node_modules/coa/test/coa.js | 496 + .../svgo/node_modules/coa/test/mocha.opts | 2 + .../svgo/node_modules/coa/test/shell-test.js | 60 + .../svgo/node_modules/coa/tests/api-h.js | 9 + .../svgo/node_modules/coa/tests/h.js | 6 + .../svgo/node_modules/colors/LICENSE | 23 + .../svgo/node_modules/colors/ReadMe.md | 178 + .../colors/examples/normal-usage.js | 74 + .../colors/examples/safe-string.js | 76 + .../svgo/node_modules/colors/lib/colors.js | 187 + .../node_modules/colors/lib/custom/trap.js | 45 + .../node_modules/colors/lib/custom/zalgo.js | 104 + .../colors/lib/extendStringPrototype.js | 113 + .../svgo/node_modules/colors/lib/index.js | 12 + .../node_modules/colors/lib/maps/america.js | 12 + .../node_modules/colors/lib/maps/rainbow.js | 13 + .../node_modules/colors/lib/maps/random.js | 8 + .../node_modules/colors/lib/maps/zebra.js | 5 + .../svgo/node_modules/colors/lib/styles.js | 77 + .../colors/lib/system/supports-colors.js | 61 + .../svgo/node_modules/colors/package.json | 59 + .../svgo/node_modules/colors/safe.js | 9 + .../colors/themes/generic-logging.js | 12 + .../svgo/node_modules/js-yaml/CHANGELOG.md | 299 + .../svgo/node_modules/js-yaml/LICENSE | 21 + .../svgo/node_modules/js-yaml/README.md | 290 + .../svgo/node_modules/js-yaml/bin/js-yaml.js | 142 + .../svgo/node_modules/js-yaml/bower.json | 23 + .../svgo/node_modules/js-yaml/dist/js-yaml.js | 3960 + .../js-yaml/examples/custom_types.js | 103 + .../js-yaml/examples/custom_types.yml | 18 + .../node_modules/js-yaml/examples/dumper.js | 32 + .../node_modules/js-yaml/examples/dumper.json | 22 + .../js-yaml/examples/sample_document.js | 19 + .../js-yaml/examples/sample_document.yml | 197 + .../svgo/node_modules/js-yaml/index.js | 7 + .../svgo/node_modules/js-yaml/lib/js-yaml.js | 39 + .../js-yaml/lib/js-yaml/common.js | 61 + .../js-yaml/lib/js-yaml/dumper.js | 842 + .../js-yaml/lib/js-yaml/exception.js | 25 + .../js-yaml/lib/js-yaml/loader.js | 1586 + .../node_modules/js-yaml/lib/js-yaml/mark.js | 78 + .../js-yaml/lib/js-yaml/schema.js | 104 + .../js-yaml/lib/js-yaml/schema/core.js | 18 + .../lib/js-yaml/schema/default_full.js | 25 + .../lib/js-yaml/schema/default_safe.js | 28 + .../js-yaml/lib/js-yaml/schema/failsafe.js | 17 + .../js-yaml/lib/js-yaml/schema/json.js | 25 + .../node_modules/js-yaml/lib/js-yaml/type.js | 61 + .../js-yaml/lib/js-yaml/type/binary.js | 134 + .../js-yaml/lib/js-yaml/type/bool.js | 37 + .../js-yaml/lib/js-yaml/type/float.js | 108 + .../js-yaml/lib/js-yaml/type/int.js | 183 + .../js-yaml/lib/js-yaml/type/js/function.js | 86 + .../js-yaml/lib/js-yaml/type/js/regexp.js | 84 + .../js-yaml/lib/js-yaml/type/js/undefined.js | 28 + .../js-yaml/lib/js-yaml/type/map.js | 8 + .../js-yaml/lib/js-yaml/type/merge.js | 12 + .../js-yaml/lib/js-yaml/type/null.js | 36 + .../js-yaml/lib/js-yaml/type/omap.js | 56 + .../js-yaml/lib/js-yaml/type/pairs.js | 61 + .../js-yaml/lib/js-yaml/type/seq.js | 8 + .../js-yaml/lib/js-yaml/type/set.js | 33 + .../js-yaml/lib/js-yaml/type/str.js | 8 + .../js-yaml/lib/js-yaml/type/timestamp.js | 98 + .../js-yaml/node_modules/.bin/esparse | Bin 0 -> 58 bytes .../js-yaml/node_modules/.bin/esvalidate | Bin 0 -> 64 bytes .../node_modules/argparse/CHANGELOG.md | 136 + .../js-yaml/node_modules/argparse/LICENSE | 21 + .../js-yaml/node_modules/argparse/README.md | 243 + .../argparse/examples/arguments.js | 36 + .../node_modules/argparse/examples/choice.js | 22 + .../argparse/examples/constants.js | 59 + .../node_modules/argparse/examples/help.js | 13 + .../node_modules/argparse/examples/nargs.js | 33 + .../node_modules/argparse/examples/parents.js | 28 + .../argparse/examples/prefix_chars.js | 23 + .../argparse/examples/sub_commands.js | 49 + .../node_modules/argparse/examples/sum.js | 35 + .../argparse/examples/testformatters.js | 270 + .../js-yaml/node_modules/argparse/index.js | 1 + .../node_modules/argparse/lib/action.js | 146 + .../argparse/lib/action/append.js | 55 + .../argparse/lib/action/append/constant.js | 47 + .../node_modules/argparse/lib/action/count.js | 40 + .../node_modules/argparse/lib/action/help.js | 48 + .../node_modules/argparse/lib/action/store.js | 50 + .../argparse/lib/action/store/constant.js | 43 + .../argparse/lib/action/store/false.js | 27 + .../argparse/lib/action/store/true.js | 26 + .../argparse/lib/action/subparsers.js | 148 + .../argparse/lib/action/version.js | 50 + .../argparse/lib/action_container.js | 479 + .../node_modules/argparse/lib/argparse.js | 14 + .../argparse/lib/argument/error.js | 50 + .../argparse/lib/argument/exclusive.js | 54 + .../argparse/lib/argument/group.js | 75 + .../argparse/lib/argument_parser.js | 1168 + .../node_modules/argparse/lib/const.js | 18 + .../argparse/lib/help/added_formatters.js | 88 + .../argparse/lib/help/formatter.js | 798 + .../node_modules/argparse/lib/namespace.js | 77 + .../argparse/node_modules/lodash/LICENSE | 22 + .../argparse/node_modules/lodash/README.md | 121 + .../argparse/node_modules/lodash/array.js | 44 + .../node_modules/lodash/array/chunk.js | 46 + .../node_modules/lodash/array/compact.js | 30 + .../node_modules/lodash/array/difference.js | 29 + .../node_modules/lodash/array/drop.js | 39 + .../node_modules/lodash/array/dropRight.js | 40 + .../lodash/array/dropRightWhile.js | 59 + .../node_modules/lodash/array/dropWhile.js | 59 + .../node_modules/lodash/array/fill.js | 44 + .../node_modules/lodash/array/findIndex.js | 53 + .../lodash/array/findLastIndex.js | 53 + .../node_modules/lodash/array/first.js | 22 + .../node_modules/lodash/array/flatten.js | 32 + .../node_modules/lodash/array/flattenDeep.js | 21 + .../node_modules/lodash/array/head.js | 1 + .../node_modules/lodash/array/indexOf.js | 53 + .../node_modules/lodash/array/initial.js | 20 + .../node_modules/lodash/array/intersection.js | 58 + .../node_modules/lodash/array/last.js | 19 + .../node_modules/lodash/array/lastIndexOf.js | 60 + .../node_modules/lodash/array/object.js | 1 + .../node_modules/lodash/array/pull.js | 52 + .../node_modules/lodash/array/pullAt.js | 40 + .../node_modules/lodash/array/remove.js | 64 + .../node_modules/lodash/array/rest.js | 21 + .../node_modules/lodash/array/slice.js | 30 + .../node_modules/lodash/array/sortedIndex.js | 53 + .../lodash/array/sortedLastIndex.js | 25 + .../node_modules/lodash/array/tail.js | 1 + .../node_modules/lodash/array/take.js | 39 + .../node_modules/lodash/array/takeRight.js | 40 + .../lodash/array/takeRightWhile.js | 59 + .../node_modules/lodash/array/takeWhile.js | 59 + .../node_modules/lodash/array/union.js | 24 + .../node_modules/lodash/array/uniq.js | 71 + .../node_modules/lodash/array/unique.js | 1 + .../node_modules/lodash/array/unzip.js | 47 + .../node_modules/lodash/array/unzipWith.js | 41 + .../node_modules/lodash/array/without.js | 27 + .../argparse/node_modules/lodash/array/xor.js | 35 + .../argparse/node_modules/lodash/array/zip.js | 21 + .../node_modules/lodash/array/zipObject.js | 43 + .../node_modules/lodash/array/zipWith.js | 36 + .../argparse/node_modules/lodash/chain.js | 16 + .../node_modules/lodash/chain/chain.js | 35 + .../node_modules/lodash/chain/commit.js | 1 + .../node_modules/lodash/chain/concat.js | 1 + .../node_modules/lodash/chain/lodash.js | 125 + .../node_modules/lodash/chain/plant.js | 1 + .../node_modules/lodash/chain/reverse.js | 1 + .../argparse/node_modules/lodash/chain/run.js | 1 + .../argparse/node_modules/lodash/chain/tap.js | 29 + .../node_modules/lodash/chain/thru.js | 26 + .../node_modules/lodash/chain/toJSON.js | 1 + .../node_modules/lodash/chain/toString.js | 1 + .../node_modules/lodash/chain/value.js | 1 + .../node_modules/lodash/chain/valueOf.js | 1 + .../node_modules/lodash/chain/wrapperChain.js | 32 + .../lodash/chain/wrapperCommit.js | 32 + .../lodash/chain/wrapperConcat.js | 34 + .../node_modules/lodash/chain/wrapperPlant.js | 45 + .../lodash/chain/wrapperReverse.js | 43 + .../lodash/chain/wrapperToString.js | 17 + .../node_modules/lodash/chain/wrapperValue.js | 20 + .../node_modules/lodash/collection.js | 44 + .../node_modules/lodash/collection/all.js | 1 + .../node_modules/lodash/collection/any.js | 1 + .../node_modules/lodash/collection/at.js | 29 + .../node_modules/lodash/collection/collect.js | 1 + .../lodash/collection/contains.js | 1 + .../node_modules/lodash/collection/countBy.js | 54 + .../node_modules/lodash/collection/detect.js | 1 + .../node_modules/lodash/collection/each.js | 1 + .../lodash/collection/eachRight.js | 1 + .../node_modules/lodash/collection/every.js | 66 + .../node_modules/lodash/collection/filter.js | 61 + .../node_modules/lodash/collection/find.js | 56 + .../lodash/collection/findLast.js | 25 + .../lodash/collection/findWhere.js | 37 + .../node_modules/lodash/collection/foldl.js | 1 + .../node_modules/lodash/collection/foldr.js | 1 + .../node_modules/lodash/collection/forEach.js | 37 + .../lodash/collection/forEachRight.js | 26 + .../node_modules/lodash/collection/groupBy.js | 59 + .../node_modules/lodash/collection/include.js | 1 + .../lodash/collection/includes.js | 57 + .../node_modules/lodash/collection/indexBy.js | 53 + .../node_modules/lodash/collection/inject.js | 1 + .../node_modules/lodash/collection/invoke.js | 42 + .../node_modules/lodash/collection/map.js | 68 + .../node_modules/lodash/collection/max.js | 1 + .../node_modules/lodash/collection/min.js | 1 + .../lodash/collection/partition.js | 66 + .../node_modules/lodash/collection/pluck.js | 31 + .../node_modules/lodash/collection/reduce.js | 44 + .../lodash/collection/reduceRight.js | 29 + .../node_modules/lodash/collection/reject.js | 50 + .../node_modules/lodash/collection/sample.js | 50 + .../node_modules/lodash/collection/select.js | 1 + .../node_modules/lodash/collection/shuffle.js | 24 + .../node_modules/lodash/collection/size.js | 30 + .../node_modules/lodash/collection/some.js | 67 + .../node_modules/lodash/collection/sortBy.js | 71 + .../lodash/collection/sortByAll.js | 52 + .../lodash/collection/sortByOrder.js | 55 + .../node_modules/lodash/collection/sum.js | 1 + .../node_modules/lodash/collection/where.js | 37 + .../argparse/node_modules/lodash/date.js | 3 + .../argparse/node_modules/lodash/date/now.js | 24 + .../argparse/node_modules/lodash/function.js | 28 + .../node_modules/lodash/function/after.js | 48 + .../node_modules/lodash/function/ary.js | 34 + .../node_modules/lodash/function/backflow.js | 1 + .../node_modules/lodash/function/before.js | 42 + .../node_modules/lodash/function/bind.js | 56 + .../node_modules/lodash/function/bindAll.js | 50 + .../node_modules/lodash/function/bindKey.js | 66 + .../node_modules/lodash/function/compose.js | 1 + .../node_modules/lodash/function/curry.js | 51 + .../lodash/function/curryRight.js | 48 + .../node_modules/lodash/function/debounce.js | 181 + .../node_modules/lodash/function/defer.js | 25 + .../node_modules/lodash/function/delay.js | 26 + .../node_modules/lodash/function/flow.js | 25 + .../node_modules/lodash/function/flowRight.js | 25 + .../node_modules/lodash/function/memoize.js | 80 + .../node_modules/lodash/function/modArgs.js | 58 + .../node_modules/lodash/function/negate.js | 32 + .../node_modules/lodash/function/once.js | 24 + .../node_modules/lodash/function/partial.js | 43 + .../lodash/function/partialRight.js | 42 + .../node_modules/lodash/function/rearg.js | 40 + .../node_modules/lodash/function/restParam.js | 58 + .../node_modules/lodash/function/spread.js | 44 + .../node_modules/lodash/function/throttle.js | 62 + .../node_modules/lodash/function/wrap.js | 33 + .../argparse/node_modules/lodash/index.js | 12351 + .../lodash/internal/LazyWrapper.js | 26 + .../lodash/internal/LodashWrapper.js | 21 + .../node_modules/lodash/internal/MapCache.js | 24 + .../node_modules/lodash/internal/SetCache.js | 29 + .../lodash/internal/arrayConcat.js | 25 + .../node_modules/lodash/internal/arrayCopy.js | 20 + .../node_modules/lodash/internal/arrayEach.js | 22 + .../lodash/internal/arrayEachRight.js | 21 + .../lodash/internal/arrayEvery.js | 23 + .../lodash/internal/arrayExtremum.js | 30 + .../lodash/internal/arrayFilter.js | 25 + .../node_modules/lodash/internal/arrayMap.js | 21 + .../node_modules/lodash/internal/arrayPush.js | 20 + .../lodash/internal/arrayReduce.js | 26 + .../lodash/internal/arrayReduceRight.js | 24 + .../node_modules/lodash/internal/arraySome.js | 23 + .../node_modules/lodash/internal/arraySum.js | 20 + .../lodash/internal/assignDefaults.js | 13 + .../lodash/internal/assignOwnDefaults.js | 26 + .../lodash/internal/assignWith.js | 32 + .../lodash/internal/baseAssign.js | 19 + .../node_modules/lodash/internal/baseAt.js | 32 + .../lodash/internal/baseCallback.js | 35 + .../node_modules/lodash/internal/baseClone.js | 128 + .../lodash/internal/baseCompareAscending.js | 34 + .../node_modules/lodash/internal/baseCopy.js | 23 + .../lodash/internal/baseCreate.js | 23 + .../node_modules/lodash/internal/baseDelay.js | 21 + .../lodash/internal/baseDifference.js | 55 + .../node_modules/lodash/internal/baseEach.js | 15 + .../lodash/internal/baseEachRight.js | 15 + .../node_modules/lodash/internal/baseEvery.js | 22 + .../lodash/internal/baseExtremum.js | 29 + .../node_modules/lodash/internal/baseFill.js | 31 + .../lodash/internal/baseFilter.js | 22 + .../node_modules/lodash/internal/baseFind.js | 25 + .../lodash/internal/baseFindIndex.js | 23 + .../lodash/internal/baseFlatten.js | 41 + .../node_modules/lodash/internal/baseFor.js | 17 + .../node_modules/lodash/internal/baseForIn.js | 17 + .../lodash/internal/baseForOwn.js | 17 + .../lodash/internal/baseForOwnRight.js | 17 + .../lodash/internal/baseForRight.js | 15 + .../lodash/internal/baseFunctions.js | 27 + .../node_modules/lodash/internal/baseGet.js | 29 + .../lodash/internal/baseIndexOf.js | 27 + .../lodash/internal/baseIsEqual.js | 28 + .../lodash/internal/baseIsEqualDeep.js | 102 + .../lodash/internal/baseIsFunction.js | 15 + .../lodash/internal/baseIsMatch.js | 52 + .../lodash/internal/baseLodash.js | 10 + .../node_modules/lodash/internal/baseMap.js | 23 + .../lodash/internal/baseMatches.js | 30 + .../lodash/internal/baseMatchesProperty.js | 45 + .../node_modules/lodash/internal/baseMerge.js | 56 + .../lodash/internal/baseMergeDeep.js | 67 + .../lodash/internal/baseProperty.js | 14 + .../lodash/internal/basePropertyDeep.js | 19 + .../lodash/internal/basePullAt.js | 30 + .../lodash/internal/baseRandom.js | 18 + .../lodash/internal/baseReduce.js | 24 + .../lodash/internal/baseSetData.js | 17 + .../node_modules/lodash/internal/baseSlice.js | 32 + .../node_modules/lodash/internal/baseSome.js | 23 + .../lodash/internal/baseSortBy.js | 21 + .../lodash/internal/baseSortByOrder.js | 31 + .../node_modules/lodash/internal/baseSum.js | 20 + .../lodash/internal/baseToString.js | 13 + .../node_modules/lodash/internal/baseUniq.js | 60 + .../lodash/internal/baseValues.js | 22 + .../node_modules/lodash/internal/baseWhile.js | 24 + .../lodash/internal/baseWrapperValue.js | 29 + .../lodash/internal/binaryIndex.js | 39 + .../lodash/internal/binaryIndexBy.js | 57 + .../lodash/internal/bindCallback.js | 39 + .../lodash/internal/bufferClone.js | 20 + .../lodash/internal/cacheIndexOf.js | 19 + .../node_modules/lodash/internal/cachePush.js | 20 + .../lodash/internal/charsLeftIndex.js | 18 + .../lodash/internal/charsRightIndex.js | 17 + .../lodash/internal/compareAscending.js | 16 + .../lodash/internal/compareMultiple.js | 44 + .../lodash/internal/composeArgs.js | 34 + .../lodash/internal/composeArgsRight.js | 36 + .../lodash/internal/createAggregator.js | 35 + .../lodash/internal/createAssigner.js | 41 + .../lodash/internal/createBaseEach.js | 31 + .../lodash/internal/createBaseFor.js | 27 + .../lodash/internal/createBindWrapper.js | 22 + .../lodash/internal/createCache.js | 21 + .../lodash/internal/createCompounder.js | 26 + .../lodash/internal/createCtorWrapper.js | 37 + .../lodash/internal/createCurry.js | 23 + .../lodash/internal/createDefaults.js | 22 + .../lodash/internal/createExtremum.js | 33 + .../lodash/internal/createFind.js | 25 + .../lodash/internal/createFindIndex.js | 21 + .../lodash/internal/createFindKey.js | 18 + .../lodash/internal/createFlow.js | 74 + .../lodash/internal/createForEach.js | 20 + .../lodash/internal/createForIn.js | 20 + .../lodash/internal/createForOwn.js | 19 + .../lodash/internal/createHybridWrapper.js | 111 + .../lodash/internal/createObjectMapper.js | 26 + .../lodash/internal/createPadDir.js | 18 + .../lodash/internal/createPadding.js | 29 + .../lodash/internal/createPartial.js | 20 + .../lodash/internal/createPartialWrapper.js | 43 + .../lodash/internal/createReduce.js | 22 + .../lodash/internal/createRound.js | 23 + .../lodash/internal/createSortedIndex.js | 20 + .../lodash/internal/createWrapper.js | 86 + .../lodash/internal/deburrLetter.js | 33 + .../lodash/internal/equalArrays.js | 51 + .../lodash/internal/equalByTag.js | 48 + .../lodash/internal/equalObjects.js | 67 + .../lodash/internal/escapeHtmlChar.js | 22 + .../lodash/internal/escapeRegExpChar.js | 38 + .../lodash/internal/escapeStringChar.js | 22 + .../node_modules/lodash/internal/getData.js | 15 + .../lodash/internal/getFuncName.js | 25 + .../node_modules/lodash/internal/getLength.js | 15 + .../lodash/internal/getMatchData.js | 21 + .../node_modules/lodash/internal/getNative.js | 16 + .../node_modules/lodash/internal/getView.js | 33 + .../lodash/internal/indexOfNaN.js | 23 + .../lodash/internal/initCloneArray.js | 26 + .../lodash/internal/initCloneByTag.js | 63 + .../lodash/internal/initCloneObject.js | 16 + .../lodash/internal/invokePath.js | 26 + .../lodash/internal/isArrayLike.js | 15 + .../node_modules/lodash/internal/isIndex.js | 24 + .../lodash/internal/isIterateeCall.js | 28 + .../node_modules/lodash/internal/isKey.js | 28 + .../lodash/internal/isLaziable.js | 26 + .../node_modules/lodash/internal/isLength.js | 20 + .../lodash/internal/isObjectLike.js | 12 + .../node_modules/lodash/internal/isSpace.js | 14 + .../lodash/internal/isStrictComparable.js | 15 + .../node_modules/lodash/internal/lazyClone.js | 23 + .../lodash/internal/lazyReverse.js | 23 + .../node_modules/lodash/internal/lazyValue.js | 72 + .../node_modules/lodash/internal/mapDelete.js | 14 + .../node_modules/lodash/internal/mapGet.js | 14 + .../node_modules/lodash/internal/mapHas.js | 20 + .../node_modules/lodash/internal/mapSet.js | 18 + .../node_modules/lodash/internal/mergeData.js | 89 + .../lodash/internal/mergeDefaults.js | 15 + .../node_modules/lodash/internal/metaMap.js | 9 + .../lodash/internal/pickByArray.js | 28 + .../lodash/internal/pickByCallback.js | 22 + .../node_modules/lodash/internal/reEscape.js | 4 + .../lodash/internal/reEvaluate.js | 4 + .../lodash/internal/reInterpolate.js | 4 + .../node_modules/lodash/internal/realNames.js | 4 + .../node_modules/lodash/internal/reorder.js | 29 + .../lodash/internal/replaceHolders.js | 28 + .../node_modules/lodash/internal/setData.js | 41 + .../node_modules/lodash/internal/shimKeys.js | 41 + .../lodash/internal/sortedUniq.js | 29 + .../lodash/internal/toIterable.js | 22 + .../node_modules/lodash/internal/toObject.js | 14 + .../node_modules/lodash/internal/toPath.js | 28 + .../lodash/internal/trimmedLeftIndex.js | 19 + .../lodash/internal/trimmedRightIndex.js | 18 + .../lodash/internal/unescapeHtmlChar.js | 22 + .../lodash/internal/wrapperClone.js | 18 + .../argparse/node_modules/lodash/lang.js | 32 + .../node_modules/lodash/lang/clone.js | 70 + .../node_modules/lodash/lang/cloneDeep.js | 55 + .../argparse/node_modules/lodash/lang/eq.js | 1 + .../argparse/node_modules/lodash/lang/gt.js | 25 + .../argparse/node_modules/lodash/lang/gte.js | 25 + .../node_modules/lodash/lang/isArguments.js | 34 + .../node_modules/lodash/lang/isArray.js | 40 + .../node_modules/lodash/lang/isBoolean.js | 35 + .../node_modules/lodash/lang/isDate.js | 35 + .../node_modules/lodash/lang/isElement.js | 24 + .../node_modules/lodash/lang/isEmpty.js | 47 + .../node_modules/lodash/lang/isEqual.js | 54 + .../node_modules/lodash/lang/isError.js | 36 + .../node_modules/lodash/lang/isFinite.js | 35 + .../node_modules/lodash/lang/isFunction.js | 38 + .../node_modules/lodash/lang/isMatch.js | 49 + .../node_modules/lodash/lang/isNaN.js | 34 + .../node_modules/lodash/lang/isNative.js | 48 + .../node_modules/lodash/lang/isNull.js | 21 + .../node_modules/lodash/lang/isNumber.js | 41 + .../node_modules/lodash/lang/isObject.js | 28 + .../node_modules/lodash/lang/isPlainObject.js | 71 + .../node_modules/lodash/lang/isRegExp.js | 35 + .../node_modules/lodash/lang/isString.js | 35 + .../node_modules/lodash/lang/isTypedArray.js | 74 + .../node_modules/lodash/lang/isUndefined.js | 21 + .../argparse/node_modules/lodash/lang/lt.js | 25 + .../argparse/node_modules/lodash/lang/lte.js | 25 + .../node_modules/lodash/lang/toArray.js | 32 + .../node_modules/lodash/lang/toPlainObject.js | 31 + .../argparse/node_modules/lodash/math.js | 9 + .../argparse/node_modules/lodash/math/add.js | 19 + .../argparse/node_modules/lodash/math/ceil.js | 25 + .../node_modules/lodash/math/floor.js | 25 + .../argparse/node_modules/lodash/math/max.js | 56 + .../argparse/node_modules/lodash/math/min.js | 56 + .../node_modules/lodash/math/round.js | 25 + .../argparse/node_modules/lodash/math/sum.js | 50 + .../argparse/node_modules/lodash/number.js | 4 + .../node_modules/lodash/number/inRange.js | 47 + .../node_modules/lodash/number/random.js | 70 + .../argparse/node_modules/lodash/object.js | 31 + .../node_modules/lodash/object/assign.js | 43 + .../node_modules/lodash/object/create.js | 47 + .../node_modules/lodash/object/defaults.js | 25 + .../lodash/object/defaultsDeep.js | 25 + .../node_modules/lodash/object/extend.js | 1 + .../node_modules/lodash/object/findKey.js | 54 + .../node_modules/lodash/object/findLastKey.js | 54 + .../node_modules/lodash/object/forIn.js | 33 + .../node_modules/lodash/object/forInRight.js | 31 + .../node_modules/lodash/object/forOwn.js | 33 + .../node_modules/lodash/object/forOwnRight.js | 31 + .../node_modules/lodash/object/functions.js | 23 + .../node_modules/lodash/object/get.js | 33 + .../node_modules/lodash/object/has.js | 57 + .../node_modules/lodash/object/invert.js | 60 + .../node_modules/lodash/object/keys.js | 45 + .../node_modules/lodash/object/keysIn.js | 64 + .../node_modules/lodash/object/mapKeys.js | 25 + .../node_modules/lodash/object/mapValues.js | 46 + .../node_modules/lodash/object/merge.js | 54 + .../node_modules/lodash/object/methods.js | 1 + .../node_modules/lodash/object/omit.js | 47 + .../node_modules/lodash/object/pairs.js | 33 + .../node_modules/lodash/object/pick.js | 42 + .../node_modules/lodash/object/result.js | 49 + .../node_modules/lodash/object/set.js | 55 + .../node_modules/lodash/object/transform.js | 61 + .../node_modules/lodash/object/values.js | 33 + .../node_modules/lodash/object/valuesIn.js | 31 + .../argparse/node_modules/lodash/package.json | 94 + .../argparse/node_modules/lodash/string.js | 25 + .../node_modules/lodash/string/camelCase.js | 27 + .../node_modules/lodash/string/capitalize.js | 21 + .../node_modules/lodash/string/deburr.js | 29 + .../node_modules/lodash/string/endsWith.js | 40 + .../node_modules/lodash/string/escape.js | 48 + .../lodash/string/escapeRegExp.js | 32 + .../node_modules/lodash/string/kebabCase.js | 26 + .../node_modules/lodash/string/pad.js | 47 + .../node_modules/lodash/string/padLeft.js | 27 + .../node_modules/lodash/string/padRight.js | 27 + .../node_modules/lodash/string/parseInt.js | 46 + .../node_modules/lodash/string/repeat.js | 47 + .../node_modules/lodash/string/snakeCase.js | 26 + .../node_modules/lodash/string/startCase.js | 26 + .../node_modules/lodash/string/startsWith.js | 36 + .../node_modules/lodash/string/template.js | 226 + .../lodash/string/templateSettings.js | 67 + .../node_modules/lodash/string/trim.js | 42 + .../node_modules/lodash/string/trimLeft.js | 36 + .../node_modules/lodash/string/trimRight.js | 36 + .../node_modules/lodash/string/trunc.js | 105 + .../node_modules/lodash/string/unescape.js | 33 + .../node_modules/lodash/string/words.js | 38 + .../argparse/node_modules/lodash/support.js | 10 + .../argparse/node_modules/lodash/utility.js | 18 + .../node_modules/lodash/utility/attempt.js | 32 + .../node_modules/lodash/utility/callback.js | 53 + .../node_modules/lodash/utility/constant.js | 23 + .../node_modules/lodash/utility/identity.js | 20 + .../node_modules/lodash/utility/iteratee.js | 1 + .../node_modules/lodash/utility/matches.js | 33 + .../lodash/utility/matchesProperty.js | 32 + .../node_modules/lodash/utility/method.js | 33 + .../node_modules/lodash/utility/methodOf.js | 32 + .../node_modules/lodash/utility/mixin.js | 82 + .../node_modules/lodash/utility/noop.js | 19 + .../node_modules/lodash/utility/property.js | 31 + .../node_modules/lodash/utility/propertyOf.js | 30 + .../node_modules/lodash/utility/range.js | 66 + .../node_modules/lodash/utility/times.js | 60 + .../node_modules/lodash/utility/uniqueId.js | 27 + .../node_modules/sprintf-js/.npmignore | 1 + .../argparse/node_modules/sprintf-js/LICENSE | 24 + .../node_modules/sprintf-js/README.md | 88 + .../node_modules/sprintf-js/bower.json | 14 + .../node_modules/sprintf-js/demo/angular.html | 20 + .../sprintf-js/dist/angular-sprintf.min.js | 4 + .../dist/angular-sprintf.min.js.map | 1 + .../sprintf-js/dist/angular-sprintf.min.map | 1 + .../sprintf-js/dist/sprintf.min.js | 4 + .../sprintf-js/dist/sprintf.min.js.map | 1 + .../sprintf-js/dist/sprintf.min.map | 1 + .../node_modules/sprintf-js/gruntfile.js | 36 + .../node_modules/sprintf-js/package.json | 52 + .../sprintf-js/src/angular-sprintf.js | 18 + .../node_modules/sprintf-js/src/sprintf.js | 208 + .../node_modules/sprintf-js/test/test.js | 82 + .../node_modules/argparse/package.json | 62 + .../js-yaml/node_modules/esprima/ChangeLog | 111 + .../js-yaml/node_modules/esprima/LICENSE.BSD | 19 + .../js-yaml/node_modules/esprima/README.md | 23 + .../node_modules/esprima/bin/esparse.js | 127 + .../node_modules/esprima/bin/esvalidate.js | 199 + .../js-yaml/node_modules/esprima/esprima.js | 5321 + .../js-yaml/node_modules/esprima/package.json | 93 + .../js-yaml/node_modules/esprima/test/run.js | 66 + .../node_modules/esprima/test/runner.js | 475 + .../svgo/node_modules/js-yaml/package.json | 84 + .../svgo/node_modules/mkdirp/.travis.yml | 8 + .../svgo/node_modules/mkdirp/LICENSE | 21 + .../svgo/node_modules/mkdirp/bin/cmd.js | 33 + .../svgo/node_modules/mkdirp/bin/usage.txt | 12 + .../svgo/node_modules/mkdirp/examples/pow.js | 6 + .../svgo/node_modules/mkdirp/index.js | 98 + .../mkdirp/node_modules/minimist/.travis.yml | 4 + .../mkdirp/node_modules/minimist/LICENSE | 18 + .../node_modules/minimist/example/parse.js | 2 + .../mkdirp/node_modules/minimist/index.js | 187 + .../mkdirp/node_modules/minimist/package.json | 67 + .../node_modules/minimist/readme.markdown | 73 + .../mkdirp/node_modules/minimist/test/dash.js | 24 + .../minimist/test/default_bool.js | 20 + .../node_modules/minimist/test/dotted.js | 16 + .../mkdirp/node_modules/minimist/test/long.js | 31 + .../node_modules/minimist/test/parse.js | 318 + .../minimist/test/parse_modified.js | 9 + .../node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/whitespace.js | 8 + .../svgo/node_modules/mkdirp/package.json | 60 + .../svgo/node_modules/mkdirp/readme.markdown | 100 + .../svgo/node_modules/mkdirp/test/chmod.js | 41 + .../svgo/node_modules/mkdirp/test/clobber.js | 38 + .../svgo/node_modules/mkdirp/test/mkdirp.js | 28 + .../svgo/node_modules/mkdirp/test/opts_fs.js | 29 + .../node_modules/mkdirp/test/opts_fs_sync.js | 27 + .../svgo/node_modules/mkdirp/test/perm.js | 32 + .../node_modules/mkdirp/test/perm_sync.js | 36 + .../svgo/node_modules/mkdirp/test/race.js | 37 + .../svgo/node_modules/mkdirp/test/rel.js | 32 + .../svgo/node_modules/mkdirp/test/return.js | 25 + .../node_modules/mkdirp/test/return_sync.js | 24 + .../svgo/node_modules/mkdirp/test/root.js | 19 + .../svgo/node_modules/mkdirp/test/sync.js | 32 + .../svgo/node_modules/mkdirp/test/umask.js | 28 + .../node_modules/mkdirp/test/umask_sync.js | 32 + .../svgo/node_modules/sax/AUTHORS | 10 + .../svgo/node_modules/sax/CONTRIBUTING.md | 14 + .../svgo/node_modules/sax/LICENSE | 15 + .../svgo/node_modules/sax/LICENSE-W3C.html | 188 + .../svgo/node_modules/sax/README.md | 220 + .../sax/examples/big-not-pretty.xml | 8002 + .../svgo/node_modules/sax/examples/example.js | 29 + .../node_modules/sax/examples/get-products.js | 58 + .../node_modules/sax/examples/hello-world.js | 4 + .../node_modules/sax/examples/not-pretty.xml | 8 + .../node_modules/sax/examples/pretty-print.js | 74 + .../node_modules/sax/examples/shopping.xml | 2 + .../svgo/node_modules/sax/examples/strict.dtd | 870 + .../svgo/node_modules/sax/examples/test.html | 15 + .../svgo/node_modules/sax/examples/test.xml | 1254 + .../svgo/node_modules/sax/lib/sax.js | 1430 + .../svgo/node_modules/sax/package.json | 84 + .../node_modules/sax/test/attribute-name.js | 33 + .../sax/test/attribute-no-space.js | 75 + .../svgo/node_modules/sax/test/bom.js | 44 + .../node_modules/sax/test/buffer-overrun.js | 26 + .../svgo/node_modules/sax/test/case.js | 50 + .../node_modules/sax/test/cdata-chunked.js | 11 + .../node_modules/sax/test/cdata-end-split.js | 15 + .../node_modules/sax/test/cdata-fake-end.js | 28 + .../node_modules/sax/test/cdata-multiple.js | 15 + .../svgo/node_modules/sax/test/cdata.js | 10 + .../svgo/node_modules/sax/test/cyrillic.js | 8 + .../sax/test/duplicate-attribute.js | 13 + .../svgo/node_modules/sax/test/emoji.js | 12 + .../node_modules/sax/test/end_empty_stream.js | 5 + .../svgo/node_modules/sax/test/entities.js | 10 + .../svgo/node_modules/sax/test/entity-mega.js | 16 + .../svgo/node_modules/sax/test/flush.js | 13 + .../svgo/node_modules/sax/test/index.js | 86 + .../svgo/node_modules/sax/test/issue-23.js | 43 + .../svgo/node_modules/sax/test/issue-30.js | 24 + .../svgo/node_modules/sax/test/issue-35.js | 15 + .../svgo/node_modules/sax/test/issue-47.js | 12 + .../svgo/node_modules/sax/test/issue-49.js | 31 + .../svgo/node_modules/sax/test/issue-84.js | 13 + .../svgo/node_modules/sax/test/issue-86.js | 30 + .../node_modules/sax/test/parser-position.js | 28 + .../sax/test/script-close-better.js | 12 + .../svgo/node_modules/sax/test/script.js | 12 + .../sax/test/self-closing-child-strict.js | 44 + .../sax/test/self-closing-child.js | 44 + .../node_modules/sax/test/self-closing-tag.js | 25 + .../sax/test/stand-alone-comment.js | 11 + .../node_modules/sax/test/stray-ending.js | 17 + .../sax/test/trailing-attribute-no-value.js | 10 + .../sax/test/trailing-non-whitespace.js | 18 + .../node_modules/sax/test/unclosed-root.js | 11 + .../svgo/node_modules/sax/test/unquoted.js | 18 + .../svgo/node_modules/sax/test/utf8-split.js | 34 + .../node_modules/sax/test/xml_entities.js | 11 + .../sax/test/xmlns-as-tag-name.js | 15 + .../node_modules/sax/test/xmlns-issue-41.js | 68 + .../node_modules/sax/test/xmlns-rebinding.js | 63 + .../node_modules/sax/test/xmlns-strict.js | 74 + .../sax/test/xmlns-unbound-element.js | 33 + .../node_modules/sax/test/xmlns-unbound.js | 15 + .../sax/test/xmlns-xml-default-ns.js | 31 + .../xmlns-xml-default-prefix-attribute.js | 36 + .../sax/test/xmlns-xml-default-prefix.js | 21 + .../sax/test/xmlns-xml-default-redefine.js | 41 + .../svgo/node_modules/whet.extend/.npmignore | 3 + .../svgo/node_modules/whet.extend/.travis.yml | 4 + .../svgo/node_modules/whet.extend/Cakefile | 52 + .../svgo/node_modules/whet.extend/History.md | 28 + .../svgo/node_modules/whet.extend/LICENSE | 22 + .../svgo/node_modules/whet.extend/Readme.md | 21 + .../svgo/node_modules/whet.extend/index.js | 1 + .../whet.extend/lib/whet.extend.js | 104 + .../node_modules/whet.extend/package.json | 61 + .../whet.extend/src/whet.extend.coffee | 68 + .../whet.extend/test/extend_test.coffee | 566 + .../node_modules/whet.extend/test/mocha.opts | 7 + .../whet.extend/test/test_helper.coffee | 11 + .../node_modules/svgo/package.json | 94 + .../node_modules/svgo/plugins/_collections.js | 2600 + .../node_modules/svgo/plugins/_path.js | 947 + .../node_modules/svgo/plugins/_transforms.js | 302 + .../svgo/plugins/addClassesToSVGElement.js | 40 + .../node_modules/svgo/plugins/cleanupAttrs.js | 56 + .../svgo/plugins/cleanupEnableBackground.js | 84 + .../node_modules/svgo/plugins/cleanupIDs.js | 209 + .../svgo/plugins/cleanupListOfValues.js | 141 + .../svgo/plugins/cleanupNumericValues.js | 76 + .../svgo/plugins/collapseGroups.js | 73 + .../svgo/plugins/convertColors.js | 111 + .../svgo/plugins/convertPathData.js | 678 + .../svgo/plugins/convertShapeToPath.js | 106 + .../svgo/plugins/convertStyleToAttrs.js | 117 + .../svgo/plugins/convertTransform.js | 354 + .../node_modules/svgo/plugins/mergePaths.js | 71 + .../svgo/plugins/moveElemsAttrsToGroup.js | 123 + .../svgo/plugins/moveGroupAttrsToElems.js | 57 + .../node_modules/svgo/plugins/removeAttrs.js | 112 + .../svgo/plugins/removeComments.js | 27 + .../node_modules/svgo/plugins/removeDesc.js | 32 + .../svgo/plugins/removeDimensions.js | 32 + .../svgo/plugins/removeDoctype.js | 42 + .../svgo/plugins/removeEditorsNSData.js | 65 + .../svgo/plugins/removeEmptyAttrs.js | 29 + .../svgo/plugins/removeEmptyContainers.js | 32 + .../svgo/plugins/removeEmptyText.js | 59 + .../svgo/plugins/removeHiddenElems.js | 218 + .../svgo/plugins/removeMetadata.js | 23 + .../plugins/removeNonInheritableGroupAttrs.js | 40 + .../svgo/plugins/removeRasterImages.js | 29 + .../node_modules/svgo/plugins/removeTitle.js | 24 + .../svgo/plugins/removeUnknownsAndDefaults.js | 131 + .../svgo/plugins/removeUnusedNS.js | 107 + .../svgo/plugins/removeUselessDefs.js | 51 + .../plugins/removeUselessStrokeAndFill.js | 92 + .../svgo/plugins/removeViewBox.js | 49 + .../svgo/plugins/removeXMLProcInst.js | 24 + .../node_modules/svgo/plugins/sortAttrs.js | 56 + .../svgo/plugins/transformsWithOnePath.js | 328 + .../fablabchemnitz/svgo_output/package.json | 17 + extensions/fablabchemnitz/svgo_output/svgo.js | 28 + .../svgo_output/svgo_output.inx | 98 + .../fablabchemnitz/svgo_output/svgo_output.py | 77 + .../tab_generator/.gitattributes | 2 + .../tab_generator/tab_generator.inx | 50 + .../tab_generator/tab_generator.py | 668 + .../table_support/base_transform.py | 266 + .../fablabchemnitz/table_support/table.py | 850 + .../table_support/table_add_columns.inx | 23 + .../table_support/table_add_columns.py | 40 + .../table_support/table_add_guides.inx | 18 + .../table_support/table_add_guides.py | 34 + .../table_support/table_add_rows.inx | 23 + .../table_support/table_add_rows.py | 40 + .../table_support/table_create.inx | 28 + .../table_support/table_create.py | 38 + .../table_support/table_edit_columns.inx | 20 + .../table_support/table_edit_columns.py | 34 + .../table_support/table_edit_rows.inx | 20 + .../table_support/table_edit_rows.py | 34 + .../table_support/table_edit_table.inx | 21 + .../table_support/table_edit_table.py | 35 + .../table_support/table_edit_text.inx | 19 + .../table_support/table_edit_text.py | 34 + .../table_support/table_fit_height.inx | 18 + .../table_support/table_fit_height.py | 32 + .../table_support/table_fit_page.inx | 18 + .../table_support/table_fit_page.py | 31 + .../table_support/table_fit_width.inx | 18 + .../table_support/table_fit_width.py | 32 + .../table_support/table_merge_merge.inx | 18 + .../table_support/table_merge_merge.py | 32 + .../table_support/table_merge_split.inx | 18 + .../table_support/table_merge_split.py | 32 + .../table_support/table_remove_columns.inx | 18 + .../table_support/table_remove_columns.py | 32 + .../table_support/table_remove_rows.inx | 18 + .../table_support/table_remove_rows.py | 32 + extensions/fablabchemnitz/travel/travel.inx | 39 + extensions/fablabchemnitz/travel/travel.py | 269 + .../triangular_grid/triangular_grid.inx | 49 + .../triangular_grid/triangular_grid.py | 266 + extensions/fablabchemnitz/tuckbox/tuckbox.inx | 26 + extensions/fablabchemnitz/tuckbox/tuckbox.py | 573 + extensions/fablabchemnitz/twist/twist.inx | 19 + extensions/fablabchemnitz/twist/twist.py | 518 + .../ungrouper_and_element_migrator_filter.inx | 115 + .../ungrouper_and_element_migrator_filter.py | 250 + .../unwind_paths/unwind_paths.inx | 67 + .../unwind_paths/unwind_paths.py | 238 + .../vertical_horizontal_scale.inx | 81 + .../vertical_horizontal_scale.py | 542 + .../fablabchemnitz/visicut/open_in_visicut.py | 315 + .../visicut/open_in_visicut_add.inx | 17 + .../visicut/open_in_visicut_replace.inx | 17 + .../fablabchemnitz/vpypetools/vpype_logo.svg | 392 + .../fablabchemnitz/vpypetools/vpypetools.py | 441 + .../vpypetools/vpypetools_filter.inx | 83 + .../vpypetools/vpypetools_freemode.inx | 113 + .../vpypetools/vpypetools_linemerge.inx | 78 + .../vpypetools/vpypetools_linesort.inx | 77 + .../vpypetools/vpypetools_multipass.inx | 77 + .../vpypetools/vpypetools_occult.inx | 78 + .../vpypetools/vpypetools_relooping.inx | 77 + .../vpypetools/vpypetools_splitall.inx | 76 + .../vpypetools/vpypetools_trim.inx | 78 + extensions/fablabchemnitz/x_agram/x_agram.inx | 34 + extensions/fablabchemnitz/x_agram/x_agram.py | 144 + .../zigzag_nodes/zigzag_nodes.inx | 18 + .../zigzag_nodes/zigzag_nodes.py | 85 + .../fablabchemnitz/zoetrope/zoetrope.inx | 58 + .../fablabchemnitz/zoetrope/zoetrope.py | 232 + 4878 files changed, 1849508 insertions(+) create mode 100644 .github/FUNDING.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 extensions/fablabchemnitz/000_about_fablabchemnitz.svg create mode 100755 extensions/fablabchemnitz/000_validate.sh create mode 100644 extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.inx create mode 100644 extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.py create mode 100644 extensions/fablabchemnitz/affine_spirals/affine_spirals.inx create mode 100644 extensions/fablabchemnitz/affine_spirals/affine_spirals.py create mode 100644 extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.inx create mode 100644 extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.py create mode 100644 extensions/fablabchemnitz/animate_order/animate_order.inx create mode 100644 extensions/fablabchemnitz/animate_order/animate_order.py create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/.eslintrc.json create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/.github/ISSUE_TEMPLATE.md create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/.gitignore create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/.npmignore create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/.travis.yml create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/CONTRIBUTING.md create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/LICENSE create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/delayed.png create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/oneByOne.png create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_custom.png create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_default.png create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/sync.png create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/timelines.svg create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/bower.json create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.js create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.min.js create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/hacks.md create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/index.html create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/package-lock.json create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/package.json create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/readme.md create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/_build.js create mode 100755 extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/pathformer.js create mode 100755 extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/vivus.js create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/karma.conf.js create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/hi-there.svg create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/index.html create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/obturateur.svg create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/polaroid.svg create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/synth.svg create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit.setup.js create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/pathformer.spec.js create mode 100644 extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/vivus.spec.js create mode 100644 extensions/fablabchemnitz/another_perspective/another_perspective.inx create mode 100644 extensions/fablabchemnitz/another_perspective/another_perspective.py create mode 100644 extensions/fablabchemnitz/apollonian_gasket/apollon.py create mode 100644 extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.inx create mode 100644 extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.py create mode 100644 extensions/fablabchemnitz/apollonian_gasket/apolloniangasket_func.py create mode 100644 extensions/fablabchemnitz/apply_transformations/apply_transformations.inx create mode 100644 extensions/fablabchemnitz/apply_transformations/apply_transformations.py create mode 100644 extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.inx create mode 100644 extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.py create mode 100644 extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.inx create mode 100644 extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.py create mode 100644 extensions/fablabchemnitz/batch_task/BaseExtension.py create mode 100644 extensions/fablabchemnitz/batch_task/batch_task.inx create mode 100644 extensions/fablabchemnitz/batch_task/batch_task.py create mode 100644 extensions/fablabchemnitz/bezier_envelope/bezier_envelope.inx create mode 100644 extensions/fablabchemnitz/bezier_envelope/bezier_envelope.py create mode 100644 extensions/fablabchemnitz/blobs/blobs.inx create mode 100644 extensions/fablabchemnitz/blobs/blobs.py create mode 100644 extensions/fablabchemnitz/blueprint_maker/blueprint_maker.inx create mode 100644 extensions/fablabchemnitz/blueprint_maker/blueprint_maker.py create mode 100644 extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.inx create mode 100644 extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.py create mode 100644 extensions/fablabchemnitz/bobbinlace/ground_from_template.inx create mode 100644 extensions/fablabchemnitz/bobbinlace/ground_from_template.py create mode 100644 extensions/fablabchemnitz/bobbinlace/polar_grid.inx create mode 100644 extensions/fablabchemnitz/bobbinlace/polar_grid.py create mode 100644 extensions/fablabchemnitz/bobbinlace/regular_grid.inx create mode 100644 extensions/fablabchemnitz/bobbinlace/regular_grid.py create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/1x1_1.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/1x1_1.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x1_2.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x1_2.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x2_2.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x2_2.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x2_5.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x2_5.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_1.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_1.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_10.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_10.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_11.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_11.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_4.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_4.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_7.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_7.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_8.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/2x4_8.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/3x3_1.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/3x3_1.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/3x3_3.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/3x3_3.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_10.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_10.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_100.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_100.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_101.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_101.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_102.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_102.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_103.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_103.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_104.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_104.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_105.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_105.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_106.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_106.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_107.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_107.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_108.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_108.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_109.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_109.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_11.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_11.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_110.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_110.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_111.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_111.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_112.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_112.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_113.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_113.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_114.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_114.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_115.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_115.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_116.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_116.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_117.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_117.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_118.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_118.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_119.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_119.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_12.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_12.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_120.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_120.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_121.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_121.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_122.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_122.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_124.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_124.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_126.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_126.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_127.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_127.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_128.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_128.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_129.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_129.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_13.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_13.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_130.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_130.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_131.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_131.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_132.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_132.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_133.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_133.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_134.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_134.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_135.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_135.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_136.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_136.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_137.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_137.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_138.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_138.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_139.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_139.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_14.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_14.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_140.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_140.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_142.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_142.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_143.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_143.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_144.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_144.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_145.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_145.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_146.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_146.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_147.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_147.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_148.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_148.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_149.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_149.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_15.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_15.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_150.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_150.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_151.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_151.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_152.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_152.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_153.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_153.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_154.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_154.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_155.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_155.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_156.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_156.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_157.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_157.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_158.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_158.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_159.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_159.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_161.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_161.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_162.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_162.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_163.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_163.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_164.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_164.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_165.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_165.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_166.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_166.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_167.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_167.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_168.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_168.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_169.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_169.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_17.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_17.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_170.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_170.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_171.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_171.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_172.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_172.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_173.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_173.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_174.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_174.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_175.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_175.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_176.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_176.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_177.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_177.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_178.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_178.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_179.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_179.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_18.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_18.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_180.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_180.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_181.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_181.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_182.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_182.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_183.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_183.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_184.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_184.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_185.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_185.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_186.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_186.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_187.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_187.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_188.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_188.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_189.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_189.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_19.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_19.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_190.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_190.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_191.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_191.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_192.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_192.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_193.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_193.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_194.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_194.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_195.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_195.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_196.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_196.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_197.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_197.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_198.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_198.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_199.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_199.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_2.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_2.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_20.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_20.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_200.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_200.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_201.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_201.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_202.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_202.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_203.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_203.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_204.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_204.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_205.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_205.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_206.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_206.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_207.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_207.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_208.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_208.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_209.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_209.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_21.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_21.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_210.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_210.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_211.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_211.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_212.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_212.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_213.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_213.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_214.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_214.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_215.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_215.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_217.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_217.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_219.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_219.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_22.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_22.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_220.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_220.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_221.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_221.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_23.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_23.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_24.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_24.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_25.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_25.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_26.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_26.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_27.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_27.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_28.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_28.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_29.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_29.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_30.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_30.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_31.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_31.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_32.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_32.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_33.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_33.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_34.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_34.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_35.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_35.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_37.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_37.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_38.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_38.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_39.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_39.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_4.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_4.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_40.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_40.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_41.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_41.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_42.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_42.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_43.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_43.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_44.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_44.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_45.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_45.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_46.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_46.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_47.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_47.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_48.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_48.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_49.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_49.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_5.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_5.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_50.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_50.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_51.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_51.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_52.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_52.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_53.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_53.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_54.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_54.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_55.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_55.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_56.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_56.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_57.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_57.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_58.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_58.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_59.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_59.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_6.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_6.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_60.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_60.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_61.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_61.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_63.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_63.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_64.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_64.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_65.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_65.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_66.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_66.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_67.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_67.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_68.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_68.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_7.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_7.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_70.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_70.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_71.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_71.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_72.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_72.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_73.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_73.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_74.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_74.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_75.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_75.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_76.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_76.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_77.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_77.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_78.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_78.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_79.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_79.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_8.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_8.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_80.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_80.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_81.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_81.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_82.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_82.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_83.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_83.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_84.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_84.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_85.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_85.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_86.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_86.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_87.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_87.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_88.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_88.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_9.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_9.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_90.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_90.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_91.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_91.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_92.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_92.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_93.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_93.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_94.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_94.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_95.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_95.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_96.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_96.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_98.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_98.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_99.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/4x4_99.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/basic.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/basic.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/bias.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/bias.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/devonshire.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/devonshire.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/kat.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/kat.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/pinwheel.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/pinwheel.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/rose.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/rose.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/rose_var1.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/rose_var1.txt create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/rose_var2.png create mode 100644 extensions/fablabchemnitz/bobbinlace/templates/rose_var2.txt create mode 100644 extensions/fablabchemnitz/boukamp_code/bouwkamp_code.inx create mode 100644 extensions/fablabchemnitz/boukamp_code/bouwkamp_code.py create mode 100644 extensions/fablabchemnitz/bounding_box/bounding_box.inx create mode 100644 extensions/fablabchemnitz/bounding_box/bounding_box.py create mode 100644 extensions/fablabchemnitz/box_maker_conical/box_maker_conical.inx create mode 100644 extensions/fablabchemnitz/box_maker_conical/box_maker_conical.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/box_maker_elliptical_box.inx create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/box_maker_elliptical_box.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/BezierCurve.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Coordinate.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Effect.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Ellipse.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/EllipticArc.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Line.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/Matrix.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/PathSegment.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/SVG.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_box/inkscape_helper/__init__.py create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_cone/.gitignore create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_cone/box_maker_elliptical_cone.inx create mode 100644 extensions/fablabchemnitz/box_maker_elliptical_cone/box_maker_elliptical_cone.py create mode 100644 extensions/fablabchemnitz/box_maker_generic_generator/.gitignore create mode 100644 extensions/fablabchemnitz/box_maker_generic_generator/box_maker_generic_generator.inx create mode 100644 extensions/fablabchemnitz/box_maker_generic_generator/box_maker_generic_generator.py create mode 100644 extensions/fablabchemnitz/box_maker_generic_generator/inkscape_path.py create mode 100644 extensions/fablabchemnitz/box_maker_lasercut_box/box_maker_lasercut_box.inx create mode 100644 extensions/fablabchemnitz/box_maker_lasercut_box/box_maker_lasercut_box.py create mode 100644 extensions/fablabchemnitz/box_maker_living_hinge/box_maker_living_hinge.inx create mode 100644 extensions/fablabchemnitz/box_maker_living_hinge/box_maker_living_hinge.py create mode 100644 extensions/fablabchemnitz/box_maker_mehr_boxes/box_maker_mehr_boxes.inx create mode 100644 extensions/fablabchemnitz/box_maker_mehr_boxes/box_maker_mehr_boxes.py create mode 100644 extensions/fablabchemnitz/box_maker_mehr_boxes/mehr_plate.py create mode 100644 extensions/fablabchemnitz/box_maker_path_to_flex/.gitignore create mode 100644 extensions/fablabchemnitz/box_maker_path_to_flex/box_maker_path_to_flex.inx create mode 100644 extensions/fablabchemnitz/box_maker_path_to_flex/box_maker_path_to_flex.py create mode 100644 extensions/fablabchemnitz/boxes.py/AgricolaInsert-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/AllEdges-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/AngledBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/AngledCutJig-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Arcade-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Atreus21-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/BasedBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/BayonetBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/BinTray-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/BottleStack-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/BurnTest-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/CardBox-detail-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/CardBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Castle-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/ClosedBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/CoffeeCapsuleHolder-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/ConcaveKnob-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Console-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Console2-backwall-detail-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Console2-panel-detail-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Console2-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/DinRailBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/DiscRack-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Display-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/DisplayCase-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/DisplayShelf-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/DividerTray-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/DoubleFlexDoorBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/DrillBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/DrillStand-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/ElectronicsBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/EuroRackSkiff-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/FanHole-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/FlexBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/FlexBox2-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/FlexBox3-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/FlexBox4-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/FlexBox5-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/FlexTest-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/FlexTest2-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Folder-2-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Folder-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/GearBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Gears-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/HeartBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/HexHoles-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/HingeBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Hook-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/IntegratedHingeBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Keypad-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/LBeam-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/LaserClamp-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/LaserHoldfast-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/MagazinFile-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/MakitaPowerSupply-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/March36539-box-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/NemaMount-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/NemaPattern-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/NotesHolder-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/OpenBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/OrganPipe-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/OttoBody-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/OttoLegs-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/OttoSoles-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/PaintStorage-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/PaperBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/PhoneHolder-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Planetary-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Planetary2-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Platonic-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/PoleHook-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Pulley-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Rack10Box-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Rack19Box-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Rack19HalfWidth-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/RackBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/RectangularWall-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/RegularBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/RobotArm-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Rotary-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/RoundedBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/RoyalGame-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SBCMicroRack-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/ShutterBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SideDoorHousing-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Silverware-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallCaliper-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallChiselHolder-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallConsole-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallDrillBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallEdges-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallPinRow-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallPlaneHolder-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallPliersHolder-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallSlottedHolder-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallStairs-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallTypeTray-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SlatwallWrenchHolder-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/SpicesRack-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/Stachel-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/StorageRack-2-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/StorageRack-3-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/StorageRack-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/StorageShelf-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/TrafficLight-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/TrayInsert-2-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/TrayInsert-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/TrayLayout-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/TrayLayout2-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/TriangleLamp-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/TwoPiece-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/TypeTray-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/UBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/UnevenHeightBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/UniversalBox-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/WaivyKnob-thumb.jpg create mode 100644 extensions/fablabchemnitz/boxes.py/WineRack-thumb.jpg create mode 100755 extensions/fablabchemnitz/boxes.py/boxes.exe create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.AgricolaInsert.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.AllEdges.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.AngledBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.AngledCutJig.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Arcade.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Atreus21.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.BasedBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.BayonetBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.BinTray.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.BottleStack.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.BurnTest.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.CardBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Castle.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.ClosedBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.CoffeeCapsuleHolder.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.ConcaveKnob.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Console.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Console2.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.DinRailBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.DiscRack.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Display.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.DisplayCase.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.DisplayShelf.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.DividerTray.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.DoubleFlexDoorBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.DrillBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.DrillStand.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.ElectronicsBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.EuroRackSkiff.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.FanHole.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox2.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox3.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox4.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.FlexBox5.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.FlexTest.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.FlexTest2.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Folder.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.GearBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Gears.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.HeartBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.HexHoles.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.HingeBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Hook.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.IntegratedHingeBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Keypad.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.LBeam.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.LaserClamp.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.LaserHoldfast.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.MagazinFile.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.MakitaPowerSupply.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.NemaMount.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.NemaPattern.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.NotesHolder.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.OpenBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.OrganPipe.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.OttoBody.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.OttoLegs.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.OttoSoles.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.PaintStorage.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.PaperBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.PhoneHolder.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Planetary.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Planetary2.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Platonic.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.PoleHook.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Pulley.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Rack10Box.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Rack19Box.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Rack19HalfWidth.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.RackBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.RectangularWall.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.RegularBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.RobotArm.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Rotary.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.RoundedBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.RoyalGame.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SBCMicroRack.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.ShutterBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SideDoorHousing.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Silverware.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallCaliper.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallChiselHolder.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallConsole.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallDrillBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallEdges.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPinRow.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPlaneHolder.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallPliersHolder.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallSlottedHolder.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallStairs.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallTypeTray.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SlatwallWrenchHolder.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.SpicesRack.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.Stachel.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.StorageRack.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.StorageShelf.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.TrafficLight.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.TrayInsert.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.TriangleLamp.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.TwoPiece.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.TypeTray.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.UBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.UnevenHeightBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.UniversalBox.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.WaivyKnob.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes.py.WineRack.inx create mode 100644 extensions/fablabchemnitz/boxes.py/boxes_proxy.py create mode 100644 extensions/fablabchemnitz/boxmaker_tabbed/box_maker_tabbed.inx create mode 100644 extensions/fablabchemnitz/boxmaker_tabbed/box_maker_tabbed.py create mode 100644 extensions/fablabchemnitz/boxmaker_tabbed/schroffmaker.inx create mode 100644 extensions/fablabchemnitz/buxtronix_living_hinges/buxtronix_living_hinges.inx create mode 100755 extensions/fablabchemnitz/buxtronix_living_hinges/buxtronix_living_hinges.py create mode 100644 extensions/fablabchemnitz/buxtronix_living_hinges/images/about.png create mode 100644 extensions/fablabchemnitz/buxtronix_living_hinges/images/cross-lattice.png create mode 100644 extensions/fablabchemnitz/buxtronix_living_hinges/images/diamond-lattice.png create mode 100644 extensions/fablabchemnitz/buxtronix_living_hinges/images/diamond-lattice.svg create mode 100644 extensions/fablabchemnitz/buxtronix_living_hinges/images/straight-lattice.png create mode 100644 extensions/fablabchemnitz/buxtronix_living_hinges/images/wavy-lattice.png create mode 100644 extensions/fablabchemnitz/can_generator/can_generator.inx create mode 100644 extensions/fablabchemnitz/can_generator/can_generator.py create mode 100644 extensions/fablabchemnitz/card_layout_guides/card_layout_guides.inx create mode 100644 extensions/fablabchemnitz/card_layout_guides/card_layout_guides.py create mode 100644 extensions/fablabchemnitz/cartography_hatches_grains/hatches_grains.inx create mode 100644 extensions/fablabchemnitz/cartography_hatches_grains/hatches_grains.py create mode 100644 extensions/fablabchemnitz/cartography_hatches_grains/locale/fr/LC_MESSAGES/hatches_grains.mo create mode 100644 extensions/fablabchemnitz/cartography_hatches_grains/locale/fr/hatches_grains.po create mode 100644 extensions/fablabchemnitz/cartography_hatches_grains/locale/hatches_grains.pot create mode 100644 extensions/fablabchemnitz/chain_paths/chain_paths.inx create mode 100644 extensions/fablabchemnitz/chain_paths/chain_paths.py create mode 100644 extensions/fablabchemnitz/checkerboard/checkerboard.inx create mode 100644 extensions/fablabchemnitz/checkerboard/checkerboard.py create mode 100644 extensions/fablabchemnitz/chip_scratches/chip_scratches.inx create mode 100644 extensions/fablabchemnitz/chip_scratches/chip_scratches.py create mode 100644 extensions/fablabchemnitz/circle_tangents/circle_tangents.inx create mode 100644 extensions/fablabchemnitz/circle_tangents/circle_tangents.py create mode 100644 extensions/fablabchemnitz/cleanup_styles/cleanup_styles.inx create mode 100644 extensions/fablabchemnitz/cleanup_styles/cleanup_styles.py create mode 100644 extensions/fablabchemnitz/clones_in_perspective/clones_in_perspective.inx create mode 100644 extensions/fablabchemnitz/clones_in_perspective/clones_in_perspective.py create mode 100644 extensions/fablabchemnitz/close_paths/close_paths.inx create mode 100644 extensions/fablabchemnitz/close_paths/close_paths.py create mode 100644 extensions/fablabchemnitz/collar/.gitattributes create mode 100644 extensions/fablabchemnitz/collar/collar.inx create mode 100644 extensions/fablabchemnitz/collar/collar.py create mode 100644 extensions/fablabchemnitz/color_harmony/.gitignore create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony.inx create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/__init__.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/colorplus.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/export.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/harmonies.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/matching/__init__.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/matching/matching.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/matching/svg.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/matching/svg_widget.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/matching/transform.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/open_palette.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/palette/palette.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/shades.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/storage/__init__.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/storage/cluster.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/storage/css.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/storage/gimp.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/storage/image.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/storage/kpl.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/storage/scribus.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/storage/storage.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/storage/xml.py create mode 100644 extensions/fablabchemnitz/color_harmony/color_harmony/utils.py create mode 100644 extensions/fablabchemnitz/colorize_path_lengths/colorize_path_lengths.inx create mode 100644 extensions/fablabchemnitz/colorize_path_lengths/colorize_path_lengths.py create mode 100644 extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.inx create mode 100644 extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.py create mode 100644 extensions/fablabchemnitz/contour_scanner_and_trimmer/poly_point_isect.py create mode 100644 extensions/fablabchemnitz/convert_to_polylines/convert_to_polylines.inx create mode 100644 extensions/fablabchemnitz/convert_to_polylines/convert_to_polylines.py create mode 100644 extensions/fablabchemnitz/convert_vertical_horizontal_to_line/convert_vertical_horizontal_to_line.inx create mode 100644 extensions/fablabchemnitz/convert_vertical_horizontal_to_line/convert_vertical_horizontal_to_line.py create mode 100644 extensions/fablabchemnitz/convex_hull/convex_hull.inx create mode 100644 extensions/fablabchemnitz/convex_hull/convex_hull.py create mode 100644 extensions/fablabchemnitz/create_hexmap/create_hexmap.inx create mode 100644 extensions/fablabchemnitz/create_hexmap/create_hexmap.py create mode 100644 extensions/fablabchemnitz/create_links/create_links.inx create mode 100644 extensions/fablabchemnitz/create_links/create_links.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/README.md create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/__init__.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/core/__init__.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/core/circle.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/core/fingerjoint.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/core/line.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/core/neopixel.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/core/part.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/core/point.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/core/rectangle.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/core/trace.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/platforms/__init__.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/platforms/circular.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/platforms/platform.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/platforms/rollerframe.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/shapes/__init__.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/shapes/box.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/shapes/cone.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/shapes/cylinder.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/shapes/rollerbot.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/shapes/shape.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/shapes/sphere.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/supports/__init__.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/supports/pier.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/supports/support.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraft/util.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraftbox.inx create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraftbox.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraftcylinder.inx create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraftcylinder.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraftrollerbot.inx create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraftrollerbot.py create mode 100644 extensions/fablabchemnitz/cutcraft/cutcraftshape.py create mode 100644 extensions/fablabchemnitz/cutting_optimizer/.gitignore create mode 100755 extensions/fablabchemnitz/cutting_optimizer/CutOptim create mode 100644 extensions/fablabchemnitz/cutting_optimizer/CutOptim.exe create mode 100644 extensions/fablabchemnitz/cutting_optimizer/cutting_optimizer.inx create mode 100644 extensions/fablabchemnitz/cutting_optimizer/cutting_optimizer.py create mode 100644 extensions/fablabchemnitz/delaunay_triangulation/delaunay_triangulation.inx create mode 100644 extensions/fablabchemnitz/delaunay_triangulation/delaunay_triangulation.py create mode 100644 extensions/fablabchemnitz/delete_above/delete_above.inx create mode 100644 extensions/fablabchemnitz/delete_above/delete_above.py create mode 100644 extensions/fablabchemnitz/destructive_clip/destructive_clip.inx create mode 100644 extensions/fablabchemnitz/destructive_clip/destructive_clip.py create mode 100644 extensions/fablabchemnitz/dimensioning/dimensioning.inx create mode 100644 extensions/fablabchemnitz/dimensioning/dimensioning.py create mode 100644 extensions/fablabchemnitz/dots_to_path_points/dots_to_path_points.inx create mode 100644 extensions/fablabchemnitz/dots_to_path_points/dots_to_path_points.py create mode 100644 extensions/fablabchemnitz/draw_directions/draw_directions.inx create mode 100644 extensions/fablabchemnitz/draw_directions/draw_directions.py create mode 100644 extensions/fablabchemnitz/dxf2papercraft/.gitignore create mode 100644 extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft.inx create mode 100644 extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft.py create mode 100644 extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cyggcc_s-1.dll create mode 100644 extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cygstdc++-6.dll create mode 100644 extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/cygwin1.dll create mode 100755 extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/dxf2papercraft create mode 100755 extensions/fablabchemnitz/dxf2papercraft/dxf2papercraft/dxf2papercraft.exe create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/INSTALL create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/README create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/parser.xml create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/process.xml create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/conf/ui.xml create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/doc/userguide.pdf create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/font.xml create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/kabeja.exe create mode 100755 extensions/fablabchemnitz/dxf2papercraft/kabeja/kabeja.sh create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/launcher.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.ant-contib create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.batik create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.js.txt create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.miethxml-toolkit.txt create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.pdf-transcoder.txt create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/legal/LICENSE.txt create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/batik-all.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/js.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-0.4.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-svg-0.4.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/kabeja-xslt.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/miethxml-toolkit.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/miethxml-ui.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/nothing create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/pdf-transcoder.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/xml-apis-ext.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/lib/xml-apis.jar create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/samples/dxf/draft1.dxf create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/samples/dxf/draft2.dxf create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/samples/dxf/draft3.dxf create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/samples/dxf/draft4.dxf create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/samples/dxf/hatch_1.dxf create mode 100644 extensions/fablabchemnitz/dxf2papercraft/kabeja/samples/dxf/hatch_16.dxf create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/dxf_dwg_importer.inx create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/dxf_dwg_importer.py create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/INSTALL create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/README create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/conf/parser.xml create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/conf/process.xml create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/conf/ui.xml create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/doc/userguide.pdf create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/font.xml create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/kabeja.exe create mode 100755 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/kabeja.sh create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/launcher.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/legal/LICENSE.ant-contib create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/legal/LICENSE.batik create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/legal/LICENSE.js.txt create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/legal/LICENSE.miethxml-toolkit.txt create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/legal/LICENSE.pdf-transcoder.txt create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/legal/LICENSE.txt create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/batik-all.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/js.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/kabeja-0.4.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/kabeja-svg-0.4.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/kabeja-xslt.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/miethxml-toolkit.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/miethxml-ui.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/nothing create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/pdf-transcoder.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/xml-apis-ext.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/lib/xml-apis.jar create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/samples/dxf/draft1.dxf create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/samples/dxf/draft2.dxf create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/samples/dxf/draft3.dxf create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/samples/dxf/draft4.dxf create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/samples/dxf/hatch_1.dxf create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/kabeja/samples/dxf/hatch_16.dxf create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node.exe create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/.eslintrc.json create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/.travis.yml create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/LICENSE create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/README.md create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/RELEASE.md create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/dist/dxf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/examples/dxf.html create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/examples/example.es5.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/examples/example.es6.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/Helper.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/applyTransforms.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/cli.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/config.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/constants.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/denormalise.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/entityToPolyline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/getRGBForEntity.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/groupEntitiesByLayer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/blocks.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entities.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/arc.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/circle.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/common.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/ellipse.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/insert.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/line.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/lwpolyline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/mtext.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/point.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/polyline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/solid.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/spline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/threeDFace.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/entity/vertex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/header.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/handlers/tables.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/index.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/parseString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/toPolylines.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/toSVG.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/util/bSpline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/util/colors.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/util/createArcForLWPolyline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/util/insertKnot.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/util/logger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/util/rgbToColorAttribute.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/util/rotate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/util/toPiecewiseBezier.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/util/transformBoundingBoxAndElement.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/commander/CHANGELOG.md create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/commander/LICENSE create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/commander/Readme.md create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/commander/index.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/commander/package.json create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/commander/typings/index.d.ts create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/LICENSE create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/README.md create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_DataView.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_Hash.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_LazyWrapper.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_ListCache.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_LodashWrapper.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_Map.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_MapCache.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_Promise.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_Set.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_SetCache.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_Stack.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_Symbol.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_Uint8Array.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_WeakMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_apply.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayAggregator.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayEach.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayEachRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayEvery.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayFilter.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayIncludes.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayIncludesWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayLikeKeys.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayPush.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayReduce.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayReduceRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arraySample.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arraySampleSize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arrayShuffle.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_arraySome.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_asciiSize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_asciiToArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_asciiWords.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_assignMergeValue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_assignValue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_assocIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseAggregator.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseAssign.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseAssignIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseAssignValue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseAt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseClamp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseClone.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseConforms.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseConformsTo.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseCreate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseDelay.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseDifference.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseEach.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseEachRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseEvery.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseExtremum.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseFill.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseFilter.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseFindIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseFindKey.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseFlatten.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseFor.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseForOwn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseForOwnRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseForRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseFunctions.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseGet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseGetAllKeys.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseGetTag.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseGt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseHas.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseHasIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseInRange.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIndexOfWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIntersection.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseInverter.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseInvoke.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsArguments.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsArrayBuffer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsDate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsEqual.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsEqualDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsMatch.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsNaN.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsNative.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsRegExp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIsTypedArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseIteratee.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseKeys.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseKeysIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseLodash.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseLt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseMatches.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseMatchesProperty.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseMean.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseMerge.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseMergeDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseNth.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseOrderBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_basePick.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_basePickBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseProperty.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_basePropertyDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_basePropertyOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_basePullAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_basePullAt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseRandom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseRange.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseReduce.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseRepeat.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseRest.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSample.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSampleSize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSetData.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSetToString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseShuffle.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSlice.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSome.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSortBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSortedIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSortedIndexBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSortedUniq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseSum.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseTimes.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseToNumber.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseToPairs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseToString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseUnary.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseUniq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseUnset.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseUpdate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseValues.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseWrapperValue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseXor.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_baseZipObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_cacheHas.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_castArrayLikeObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_castFunction.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_castPath.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_castRest.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_castSlice.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_charsEndIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_charsStartIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_cloneArrayBuffer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_cloneBuffer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_cloneDataView.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_cloneRegExp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_cloneSymbol.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_cloneTypedArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_compareAscending.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_compareMultiple.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_composeArgs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_composeArgsRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_copyArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_copyObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_copySymbols.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_copySymbolsIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_coreJsData.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_countHolders.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createAggregator.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createAssigner.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createBaseEach.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createBaseFor.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createBind.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createCaseFirst.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createCompounder.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createCtor.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createCurry.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createFind.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createFlow.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createHybrid.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createInverter.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createMathOperation.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createOver.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createPadding.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createPartial.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createRange.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createRecurry.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createRelationalOperation.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createRound.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createToPairs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_createWrap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_customDefaultsAssignIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_customDefaultsMerge.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_customOmitClone.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_deburrLetter.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_defineProperty.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_equalArrays.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_equalByTag.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_equalObjects.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_escapeHtmlChar.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_escapeStringChar.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_flatRest.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_freeGlobal.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getAllKeys.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getAllKeysIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getData.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getFuncName.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getHolder.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getMapData.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getMatchData.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getNative.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getPrototype.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getRawTag.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getSymbols.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getSymbolsIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getTag.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getValue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getView.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_getWrapDetails.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_hasPath.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_hasUnicode.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_hasUnicodeWord.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_hashClear.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_hashDelete.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_hashGet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_hashHas.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_hashSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_initCloneArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_initCloneByTag.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_initCloneObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_insertWrapDetails.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isFlattenable.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isIterateeCall.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isKey.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isKeyable.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isLaziable.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isMaskable.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isMasked.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isPrototype.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_isStrictComparable.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_iteratorToArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_lazyClone.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_lazyReverse.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_lazyValue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_listCacheClear.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_listCacheDelete.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_listCacheGet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_listCacheHas.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_listCacheSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_mapCacheClear.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_mapCacheDelete.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_mapCacheGet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_mapCacheHas.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_mapCacheSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_mapToArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_matchesStrictComparable.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_memoizeCapped.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_mergeData.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_metaMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_nativeCreate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_nativeKeys.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_nativeKeysIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_nodeUtil.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_objectToString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_overArg.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_overRest.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_parent.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_reEscape.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_reEvaluate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_reInterpolate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_realNames.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_reorder.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_replaceHolders.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_root.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_safeGet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_setCacheAdd.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_setCacheHas.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_setData.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_setToArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_setToPairs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_setToString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_setWrapToString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_shortOut.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_shuffleSelf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_stackClear.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_stackDelete.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_stackGet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_stackHas.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_stackSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_strictIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_strictLastIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_stringSize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_stringToArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_stringToPath.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_toKey.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_toSource.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_unescapeHtmlChar.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_unicodeSize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_unicodeToArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_unicodeWords.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_updateWrapDetails.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/_wrapperClone.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/add.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/after.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/array.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/ary.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/assign.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/assignIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/assignInWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/assignWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/at.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/attempt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/before.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/bind.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/bindAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/bindKey.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/camelCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/capitalize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/castArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/ceil.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/chain.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/chunk.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/clamp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/clone.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/cloneDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/cloneDeepWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/cloneWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/collection.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/commit.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/compact.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/concat.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/cond.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/conforms.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/conformsTo.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/constant.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/core.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/core.min.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/countBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/create.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/curry.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/curryRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/date.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/debounce.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/deburr.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/defaultTo.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/defaults.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/defaultsDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/defer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/delay.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/difference.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/differenceBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/differenceWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/divide.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/drop.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/dropRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/dropRightWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/dropWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/each.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/eachRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/endsWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/entries.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/entriesIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/eq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/escape.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/escapeRegExp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/every.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/extend.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/extendWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fill.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/filter.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/find.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/findIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/findKey.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/findLast.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/findLastIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/findLastKey.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/first.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/flatMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/flatMapDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/flatMapDepth.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/flatten.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/flattenDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/flattenDepth.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/flip.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/floor.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/flow.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/flowRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/forEach.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/forEachRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/forIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/forInRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/forOwn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/forOwnRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/F.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/T.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/__.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/_baseConvert.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/_convertBrowser.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/_falseOptions.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/_mapping.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/_util.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/add.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/after.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/all.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/allPass.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/always.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/any.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/anyPass.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/apply.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/array.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/ary.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assign.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assignAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assignAllWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assignIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assignInAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assignInAllWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assignInWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assignWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assoc.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/assocPath.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/at.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/attempt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/before.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/bind.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/bindAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/bindKey.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/camelCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/capitalize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/castArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/ceil.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/chain.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/chunk.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/clamp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/clone.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/cloneDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/cloneDeepWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/cloneWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/collection.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/commit.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/compact.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/complement.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/compose.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/concat.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/cond.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/conforms.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/conformsTo.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/constant.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/contains.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/convert.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/countBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/create.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/curry.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/curryN.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/curryRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/curryRightN.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/date.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/debounce.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/deburr.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/defaultTo.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/defaults.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/defaultsAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/defaultsDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/defaultsDeepAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/defer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/delay.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/difference.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/differenceBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/differenceWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/dissoc.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/dissocPath.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/divide.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/drop.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/dropLast.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/dropLastWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/dropRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/dropRightWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/dropWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/each.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/eachRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/endsWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/entries.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/entriesIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/eq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/equals.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/escape.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/escapeRegExp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/every.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/extend.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/extendAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/extendAllWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/extendWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/fill.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/filter.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/find.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/findFrom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/findIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/findIndexFrom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/findKey.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/findLast.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/findLastFrom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/findLastIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/findLastIndexFrom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/findLastKey.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/first.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/flatMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/flatMapDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/flatMapDepth.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/flatten.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/flattenDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/flattenDepth.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/flip.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/floor.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/flow.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/flowRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/forEach.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/forEachRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/forIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/forInRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/forOwn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/forOwnRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/fromPairs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/function.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/functions.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/functionsIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/get.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/getOr.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/groupBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/gt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/gte.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/has.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/hasIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/head.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/identical.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/identity.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/inRange.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/includes.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/includesFrom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/indexBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/indexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/indexOfFrom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/init.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/initial.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/intersection.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/intersectionBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/intersectionWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/invert.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/invertBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/invertObj.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/invoke.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/invokeArgs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/invokeArgsMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/invokeMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isArguments.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isArrayBuffer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isArrayLike.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isArrayLikeObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isBoolean.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isBuffer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isDate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isElement.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isEmpty.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isEqual.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isEqualWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isError.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isFinite.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isFunction.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isInteger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isLength.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isMatch.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isMatchWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isNaN.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isNative.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isNil.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isNull.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isNumber.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isObjectLike.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isPlainObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isRegExp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isSafeInteger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isSymbol.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isTypedArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isUndefined.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isWeakMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/isWeakSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/iteratee.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/join.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/juxt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/kebabCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/keyBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/keys.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/keysIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/lang.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/last.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/lastIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/lastIndexOfFrom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/lowerCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/lowerFirst.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/lt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/lte.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/map.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/mapKeys.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/mapValues.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/matches.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/matchesProperty.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/math.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/max.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/maxBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/mean.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/meanBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/memoize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/merge.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/mergeAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/mergeAllWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/mergeWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/method.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/methodOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/min.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/minBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/mixin.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/multiply.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/nAry.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/negate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/next.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/noop.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/now.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/nth.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/nthArg.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/number.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/object.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/omit.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/omitAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/omitBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/once.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/orderBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/over.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/overArgs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/overEvery.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/overSome.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pad.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/padChars.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/padCharsEnd.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/padCharsStart.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/padEnd.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/padStart.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/parseInt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/partial.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/partialRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/partition.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/path.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pathEq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pathOr.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/paths.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pick.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pickAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pickBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pipe.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/placeholder.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/plant.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pluck.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/prop.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/propEq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/propOr.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/property.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/propertyOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/props.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pull.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pullAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pullAllBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pullAllWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/pullAt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/random.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/range.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/rangeRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/rangeStep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/rangeStepRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/rearg.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/reduce.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/reduceRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/reject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/remove.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/repeat.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/replace.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/rest.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/restFrom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/result.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/reverse.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/round.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sample.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sampleSize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/seq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/set.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/setWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/shuffle.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/size.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/slice.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/snakeCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/some.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sortBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sortedIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sortedIndexBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sortedIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sortedLastIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sortedLastIndexBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sortedLastIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sortedUniq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sortedUniqBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/split.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/spread.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/spreadFrom.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/startCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/startsWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/string.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/stubArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/stubFalse.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/stubObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/stubString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/stubTrue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/subtract.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sum.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/sumBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/symmetricDifference.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/symmetricDifferenceBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/symmetricDifferenceWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/tail.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/take.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/takeLast.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/takeLastWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/takeRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/takeRightWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/takeWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/tap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/template.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/templateSettings.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/throttle.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/thru.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/times.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toFinite.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toInteger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toIterator.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toJSON.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toLength.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toLower.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toNumber.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toPairs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toPairsIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toPath.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toPlainObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toSafeInteger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/toUpper.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/transform.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/trim.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/trimChars.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/trimCharsEnd.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/trimCharsStart.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/trimEnd.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/trimStart.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/truncate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/unapply.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/unary.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/unescape.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/union.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/unionBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/unionWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/uniq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/uniqBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/uniqWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/uniqueId.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/unnest.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/unset.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/unzip.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/unzipWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/update.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/updateWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/upperCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/upperFirst.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/useWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/util.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/value.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/valueOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/values.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/valuesIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/where.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/whereEq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/without.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/words.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/wrap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/wrapperAt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/wrapperChain.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/wrapperLodash.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/wrapperReverse.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/wrapperValue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/xor.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/xorBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/xorWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/zip.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/zipAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/zipObj.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/zipObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/zipObjectDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fp/zipWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/fromPairs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/function.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/functions.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/functionsIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/get.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/groupBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/gt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/gte.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/has.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/hasIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/head.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/identity.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/inRange.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/includes.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/index.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/indexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/initial.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/intersection.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/intersectionBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/intersectionWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/invert.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/invertBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/invoke.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/invokeMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isArguments.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isArrayBuffer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isArrayLike.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isArrayLikeObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isBoolean.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isBuffer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isDate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isElement.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isEmpty.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isEqual.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isEqualWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isError.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isFinite.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isFunction.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isInteger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isLength.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isMatch.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isMatchWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isNaN.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isNative.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isNil.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isNull.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isNumber.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isObjectLike.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isPlainObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isRegExp.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isSafeInteger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isSymbol.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isTypedArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isUndefined.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isWeakMap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/isWeakSet.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/iteratee.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/join.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/kebabCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/keyBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/keys.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/keysIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/lang.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/last.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/lastIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/lodash.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/lodash.min.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/lowerCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/lowerFirst.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/lt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/lte.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/map.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/mapKeys.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/mapValues.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/matches.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/matchesProperty.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/math.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/max.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/maxBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/mean.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/meanBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/memoize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/merge.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/mergeWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/method.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/methodOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/min.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/minBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/mixin.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/multiply.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/negate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/next.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/noop.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/now.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/nth.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/nthArg.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/number.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/object.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/omit.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/omitBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/once.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/orderBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/over.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/overArgs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/overEvery.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/overSome.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/package.json create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/pad.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/padEnd.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/padStart.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/parseInt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/partial.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/partialRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/partition.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/pick.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/pickBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/plant.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/property.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/propertyOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/pull.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/pullAll.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/pullAllBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/pullAllWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/pullAt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/random.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/range.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/rangeRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/rearg.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/reduce.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/reduceRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/reject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/remove.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/repeat.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/replace.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/rest.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/result.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/reverse.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/round.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sample.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sampleSize.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/seq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/set.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/setWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/shuffle.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/size.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/slice.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/snakeCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/some.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sortBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sortedIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sortedIndexBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sortedIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sortedLastIndex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sortedLastIndexBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sortedLastIndexOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sortedUniq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sortedUniqBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/split.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/spread.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/startCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/startsWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/string.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/stubArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/stubFalse.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/stubObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/stubString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/stubTrue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/subtract.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sum.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/sumBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/tail.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/take.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/takeRight.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/takeRightWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/takeWhile.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/tap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/template.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/templateSettings.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/throttle.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/thru.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/times.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toArray.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toFinite.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toInteger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toIterator.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toJSON.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toLength.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toLower.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toNumber.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toPairs.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toPairsIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toPath.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toPlainObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toSafeInteger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/toUpper.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/transform.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/trim.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/trimEnd.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/trimStart.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/truncate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/unary.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/unescape.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/union.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/unionBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/unionWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/uniq.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/uniqBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/uniqWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/uniqueId.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/unset.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/unzip.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/unzipWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/update.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/updateWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/upperCase.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/upperFirst.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/util.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/value.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/valueOf.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/values.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/valuesIn.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/without.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/words.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/wrap.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/wrapperAt.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/wrapperChain.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/wrapperLodash.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/wrapperReverse.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/wrapperValue.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/xor.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/xorBy.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/xorWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/zip.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/zipObject.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/zipObjectDeep.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/lodash/zipWith.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/pretty-data/README.md create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/pretty-data/package.json create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/pretty-data/pretty-data.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/pretty-data/test/test_css.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/pretty-data/test/test_json.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/pretty-data/test/test_sql.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/pretty-data/test/test_xml.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/round10/.npmignore create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/round10/README.md create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/round10/package.json create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/round10/round10.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/round10/test/test.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/.eslintrc.json create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/.travis.yml create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/README.md create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/lib/Box2.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/lib/Box3.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/lib/Line2.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/lib/Line3.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/lib/Plane3.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/lib/Quaternion.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/lib/V2.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/lib/V3.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/lib/index.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/package.json create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/src/Box2.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/src/Box3.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/src/Line2.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/src/Line3.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/src/Plane3.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/src/Quaternion.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/src/V2.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/src/V3.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/node_modules/vecks/src/index.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/package.json create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/Helper.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/applyTransforms.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/cli.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/config.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/constants.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/denormalise.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/entityToPolyline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/getRGBForEntity.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/groupEntitiesByLayer.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/blocks.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entities.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/arc.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/circle.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/common.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/ellipse.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/insert.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/line.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/lwpolyline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/mtext.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/point.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/polyline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/solid.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/spline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/threeDFace.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/entity/vertex.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/header.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/handlers/tables.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/index.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/parseString.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/toPolylines.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/toSVG.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/bSpline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/colors.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/createArcForLWPolyline.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/diagram.png create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/insertKnot.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/logger.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/rgbToColorAttribute.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/rotate.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/toPiecewiseBezier.js create mode 100644 extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/util/transformBoundingBoxAndElement.js create mode 100644 extensions/fablabchemnitz/edit_attributes/edit_attributes.inx create mode 100644 extensions/fablabchemnitz/edit_attributes/edit_attributes.py create mode 100644 extensions/fablabchemnitz/eggmazing/eggmazing.inx create mode 100644 extensions/fablabchemnitz/eggmazing/eggmazing.py create mode 100644 extensions/fablabchemnitz/ellipse_by_five_points/ellipse_by_five_points.inx create mode 100644 extensions/fablabchemnitz/ellipse_by_five_points/ellipse_by_five_points.py create mode 100644 extensions/fablabchemnitz/epilog_dashboard_bbox_adjust/epilog_dashboard_bbox_adjust.inx create mode 100644 extensions/fablabchemnitz/epilog_dashboard_bbox_adjust/epilog_dashboard_bbox_adjust.py create mode 100644 extensions/fablabchemnitz/eraser_laser/eraser_layer.inx create mode 100644 extensions/fablabchemnitz/eraser_laser/eraser_layer.py create mode 100644 extensions/fablabchemnitz/estucheria/airplanetypelinearcase.inx create mode 100644 extensions/fablabchemnitz/estucheria/airplanetypelinearcase.py create mode 100644 extensions/fablabchemnitz/estucheria/airplanetypelinearcase.svg create mode 100644 extensions/fablabchemnitz/estucheria/automaticbottomcase.inx create mode 100644 extensions/fablabchemnitz/estucheria/automaticbottomcase.py create mode 100644 extensions/fablabchemnitz/estucheria/automaticbottomcase.svg create mode 100644 extensions/fablabchemnitz/estucheria/box4p.inx create mode 100644 extensions/fablabchemnitz/estucheria/box4p.py create mode 100644 extensions/fablabchemnitz/estucheria/box4p.svg create mode 100644 extensions/fablabchemnitz/estucheria/doublerailingcase.inx create mode 100644 extensions/fablabchemnitz/estucheria/doublerailingcase.py create mode 100644 extensions/fablabchemnitz/estucheria/doublerailingcase.svg create mode 100644 extensions/fablabchemnitz/estucheria/girdle.inx create mode 100644 extensions/fablabchemnitz/estucheria/girdle.py create mode 100644 extensions/fablabchemnitz/estucheria/girdle.svg create mode 100644 extensions/fablabchemnitz/estucheria/linearcase.inx create mode 100644 extensions/fablabchemnitz/estucheria/linearcase.py create mode 100644 extensions/fablabchemnitz/estucheria/linearcase.svg create mode 100644 extensions/fablabchemnitz/estucheria/swissbottomcase.inx create mode 100644 extensions/fablabchemnitz/estucheria/swissbottomcase.py create mode 100644 extensions/fablabchemnitz/estucheria/swissbottomcase.svg create mode 100644 extensions/fablabchemnitz/exponential_distort/exponential_distort.inx create mode 100644 extensions/fablabchemnitz/exponential_distort/exponential_distort.py create mode 100644 extensions/fablabchemnitz/export_selection_as/export_selection_as.inx create mode 100644 extensions/fablabchemnitz/export_selection_as/export_selection_as.py create mode 100644 extensions/fablabchemnitz/extruder/.gitattributes create mode 100644 extensions/fablabchemnitz/extruder/extruder.inx create mode 100644 extensions/fablabchemnitz/extruder/extruder.py create mode 100644 extensions/fablabchemnitz/fibonacci_pattern/fibonacci_pattern.inx create mode 100644 extensions/fablabchemnitz/fibonacci_pattern/fibonacci_pattern.py create mode 100644 extensions/fablabchemnitz/fill_rectangle_with_circle/fill_rectangle_with_circle.inx create mode 100644 extensions/fablabchemnitz/fill_rectangle_with_circle/fill_rectangle_with_circle.py create mode 100644 extensions/fablabchemnitz/fillet_and_chamfer/fillet_and_chamfer.inx create mode 100644 extensions/fablabchemnitz/fillet_and_chamfer/fillet_and_chamfer.py create mode 100644 extensions/fablabchemnitz/filter_small_things/filter_small_things.inx create mode 100644 extensions/fablabchemnitz/filter_small_things/filter_small_things.py create mode 100644 extensions/fablabchemnitz/filter_to_layer/filter_to_layer.inx create mode 100644 extensions/fablabchemnitz/filter_to_layer/filter_to_layer.py create mode 100644 extensions/fablabchemnitz/flash_burst/flash_burst.inx create mode 100644 extensions/fablabchemnitz/flash_burst/flash_burst.py create mode 100644 extensions/fablabchemnitz/flevobezier/flevobezier.inx create mode 100644 extensions/fablabchemnitz/flevobezier/flevobezier.py create mode 100644 extensions/fablabchemnitz/flip/flip.inx create mode 100644 extensions/fablabchemnitz/flip/flip.py create mode 100644 extensions/fablabchemnitz/fret_ruler/fret_ruler.inx create mode 100644 extensions/fablabchemnitz/fret_ruler/fret_ruler.py create mode 100644 extensions/fablabchemnitz/fret_ruler/fret_scale.py create mode 100755 extensions/fablabchemnitz/funshapes/funshapes.inx create mode 100644 extensions/fablabchemnitz/funshapes/funshapes.py create mode 100644 extensions/fablabchemnitz/gcode_import/gcode_import.py create mode 100644 extensions/fablabchemnitz/gcode_import/gcode_import_gcode.inx create mode 100644 extensions/fablabchemnitz/gcode_import/gcode_import_nc.inx create mode 100644 extensions/fablabchemnitz/gears/gears.inx create mode 100644 extensions/fablabchemnitz/gears/gears.py create mode 100644 extensions/fablabchemnitz/gears2/gears2.inx create mode 100644 extensions/fablabchemnitz/gears2/gears2.py create mode 100644 extensions/fablabchemnitz/gears2/involute.py create mode 100644 extensions/fablabchemnitz/generate_palette/.editorconfig create mode 100644 extensions/fablabchemnitz/generate_palette/generate_palette.inx create mode 100644 extensions/fablabchemnitz/generate_palette/generate_palette.py create mode 100644 extensions/fablabchemnitz/generate_palette/info.svg create mode 100644 extensions/fablabchemnitz/globe/globe.inx create mode 100644 extensions/fablabchemnitz/globe/globe.py create mode 100644 extensions/fablabchemnitz/gpx_import/gpx_import.inx create mode 100644 extensions/fablabchemnitz/gpx_import/gpx_import.py create mode 100644 extensions/fablabchemnitz/gradient_saver/GUI.glade create mode 100644 extensions/fablabchemnitz/gradient_saver/gradient_saver.inx create mode 100644 extensions/fablabchemnitz/gradient_saver/gradient_saver.py create mode 100644 extensions/fablabchemnitz/gradient_saver/icon.svg create mode 100644 extensions/fablabchemnitz/grid_strip_creator/grid_strip_creator.inx create mode 100644 extensions/fablabchemnitz/grid_strip_creator/grid_strip_creator.py create mode 100644 extensions/fablabchemnitz/group_to_layer/group_to_layer.inx create mode 100644 extensions/fablabchemnitz/group_to_layer/group_to_layer.py create mode 100644 extensions/fablabchemnitz/guillotine_plus/guillotine_plus.inx create mode 100644 extensions/fablabchemnitz/guillotine_plus/guillotine_plus.py create mode 100644 extensions/fablabchemnitz/guitar_fretboard/guitar_fretboard.inx create mode 100644 extensions/fablabchemnitz/guitar_fretboard/guitar_fretboard.py create mode 100644 extensions/fablabchemnitz/hatch_fill/hatch_fill.inx create mode 100644 extensions/fablabchemnitz/hatch_fill/hatch_fill.py create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/hershey_text_alternative.inx create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/hershey_text_alternative.py create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/EMSAllure.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/EMSElfin.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/EMSFelix.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/EMSNixish.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/EMSNixishItalic.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/EMSOsmotron.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/EMSReadability.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/EMSReadabilityItalic.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/EMSTech.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/HersheyGothEnglish.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/HersheySans1.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/HersheySansMed.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/HersheyScript1.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/HersheyScriptMed.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/HersheySerifBold.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/HersheySerifBoldItalic.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/HersheySerifMed.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/HersheySerifMedItalic.svg create mode 100644 extensions/fablabchemnitz/hershey_text_alternative/svg_fonts/OFL.txt create mode 100644 extensions/fablabchemnitz/hex_tiles/hex_tiles.inx create mode 100644 extensions/fablabchemnitz/hex_tiles/hex_tiles.py create mode 100644 extensions/fablabchemnitz/ids_to_text/ids_to_text.inx create mode 100644 extensions/fablabchemnitz/ids_to_text/ids_to_text.py create mode 100644 extensions/fablabchemnitz/ifs_fractals/ifs_fractals.inx create mode 100644 extensions/fablabchemnitz/ifs_fractals/ifs_fractals.py create mode 100644 extensions/fablabchemnitz/image_triangulation/image_triangulation.inx create mode 100644 extensions/fablabchemnitz/image_triangulation/image_triangulation.py create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/.eslintrc.json create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/.project create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/.settings/.jsdtscope create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/.settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/.settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/LICENSE create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/README.md create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/bower.json create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/cover_problem.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/option_presets.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/option_presets_small.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s1.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s10.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s11.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s12.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s13.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s14.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s15.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s2.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s3.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s4.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s7.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s8.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/s9.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/docimages/transparency_problem.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/imagetracer_examples.html create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/imagetracer_options_gallery.html create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/imagetracer_test_automation.html create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/imagetracer_v1.2.6.js create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/nodecli/PNG.js create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/nodecli/PNGReader.js create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/nodecli/READTHIS.md create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/nodecli/nodecli.js create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/options.md create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/package.json create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/panda.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/panda.png.svg create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/process_overview.md create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/simplify_interop.html create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/smiley.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/smileyRGB.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/1.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/10.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/11.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/12.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/13.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/14.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/15.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/16.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/2.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/3.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/4.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/5.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/6.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/7.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/8.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/9.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/testimages/combined.png create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs-master/version_history.md create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs.inx create mode 100644 extensions/fablabchemnitz/imagetracerjs/imagetracerjs.py create mode 100644 extensions/fablabchemnitz/imagetracerjs/node.exe create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/cube.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/cuboct.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/dodec.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/great_dodec.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/great_rhombicosidodec.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/great_rhombicuboct.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/great_stel_dodec.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/icos.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/icosidodec.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/jessens_orthog_icos.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/methane.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/oct.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/rh_axes.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/rhomb_dodec.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/rhomb_triacont.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/small_rhombicosidodec.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/small_rhombicuboct.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/small_triam_icos.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/snub_cube.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/snub_dodec.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/szilassi.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/tet.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/trunc_cube.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/trunc_dodec.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/trunc_icos.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/trunc_oct.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/Poly3DObjects/trunc_tet.obj create mode 100644 extensions/fablabchemnitz/import_3d_mesh/import_3d_mesh.inx create mode 100644 extensions/fablabchemnitz/import_3d_mesh/import_3d_mesh.py create mode 100644 extensions/fablabchemnitz/import_attributes/import_attributes.inx create mode 100644 extensions/fablabchemnitz/import_attributes/import_attributes.py create mode 100644 extensions/fablabchemnitz/incadiff/incadiff.inx create mode 100644 extensions/fablabchemnitz/incadiff/incadiff.py create mode 100644 extensions/fablabchemnitz/inkcut/inkcut.py create mode 100644 extensions/fablabchemnitz/inkcut/inkcut_cut.inx create mode 100644 extensions/fablabchemnitz/inkcut/inkcut_cut.py create mode 100644 extensions/fablabchemnitz/inkcut/inkcut_open.inx create mode 100644 extensions/fablabchemnitz/inkcut/inkcut_open.py create mode 100644 extensions/fablabchemnitz/inklin/inklin.glade create mode 100755 extensions/fablabchemnitz/inklin/inklin.inx create mode 100644 extensions/fablabchemnitz/inklin/inklin.py create mode 100644 extensions/fablabchemnitz/inkpacking/inkpacking.inx create mode 100644 extensions/fablabchemnitz/inkpacking/inkpacking.py create mode 100644 extensions/fablabchemnitz/inkscape.extension.rng create mode 100644 extensions/fablabchemnitz/inkstitch/bin/Include/pyconfig.h create mode 100644 extensions/fablabchemnitz/inkstitch/bin/Microsoft.VC90.CRT.manifest create mode 100644 extensions/fablabchemnitz/inkstitch/bin/Microsoft.VC90.MFC.manifest create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_bsddb.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_ctypes.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_elementtree.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_hashlib.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_multiprocessing.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_socket.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_ssl.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_testcapi.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_tkinter.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/_win32sysloader.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/bz2.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/certifi/cacert.pem create mode 100644 extensions/fablabchemnitz/inkstitch/bin/geos.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/geos_c.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/icons/pencil.png create mode 100644 extensions/fablabchemnitz/inkstitch/bin/icons/pencil_20x20.png create mode 100644 extensions/fablabchemnitz/inkstitch/bin/inkstitch.exe create mode 100644 extensions/fablabchemnitz/inkstitch/bin/inkstitch.exe.manifest create mode 100644 extensions/fablabchemnitz/inkstitch/bin/libopenblas.KZGMSHIV2CB7DB4HQYDV2LEPUALNSYMY.gfortran-win32.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/af_ZA/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/ar_SA/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/ca_ES/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/cs_CZ/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/da_DK/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/de_DE/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/el_GR/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/en_US/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/es_ES/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/fi_FI/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/fr_FR/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/he_IL/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/hu_HU/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/it_IT/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/ja_JP/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/ko_KR/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/nl_NL/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/no_NO/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/pl_PL/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/pt_BR/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/pt_PT/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/ro_RO/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/ru_RU/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/sr_SP/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/sv_SE/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/tr_TR/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/uk_UA/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/vi_VN/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/zh_CN/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/locales/zh_TW/LC_MESSAGES/inkstitch.mo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/lxml._elementpath.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/lxml.etree.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/markupsafe._speedups.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/mfc90.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/mfc90u.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/mfcm90.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/mfcm90u.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/msvcm90.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/msvcp90.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/msvcr90.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/numpy.core._multiarray_tests.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/numpy.core.multiarray.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/numpy.core.umath.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/numpy.fft.fftpack_lite.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/numpy.linalg._umath_linalg.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/numpy.linalg.lapack_lite.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/numpy.random.mtrand.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/barlow-bold.ttf create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/barlow-condensed-bold.ttf create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/barlow-condensed-extra-bold.ttf create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/barlow-extra-bold.ttf create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/barlow.ttf create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/barlow_condensed.ttf create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/favicon.ico create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/inkstitch-logo.svg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/inkstitch.js create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/jquery-3.3.1.min.js create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/resources/style.css create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/color_swatch.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/custom-page.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/footer.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/headline.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/index.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/operator_detailedview.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/operator_overview.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/print_detail.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/print_overview.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/ui.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/print/templates/ui_svg_action_buttons.html create mode 100644 extensions/fablabchemnitz/inkstitch/bin/pyexpat.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/python27.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/pythoncom27.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/pywintypes27.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/select.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/shapely.speedups._speedups.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/auto.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/clock.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/ascii.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/big5.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp1250.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp1251.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp1252.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp1253.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp1254.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp1255.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp1256.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp1257.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp1258.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp437.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp737.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp775.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp850.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp852.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp855.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp857.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp860.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp861.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp862.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp863.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp864.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp865.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp866.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp869.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp874.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp932.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp936.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp949.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/cp950.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/dingbats.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/ebcdic.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/euc-cn.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/euc-jp.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/euc-kr.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/gb12345.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/gb1988.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/gb2312-raw.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/gb2312.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso2022-jp.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso2022-kr.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso2022.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-1.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-10.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-13.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-14.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-15.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-16.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-2.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-3.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-4.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-5.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-6.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-7.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-8.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/iso8859-9.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/jis0201.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/jis0208.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/jis0212.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/koi8-r.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/koi8-u.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/ksc5601.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macCentEuro.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macCroatian.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macCyrillic.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macDingbats.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macGreek.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macIceland.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macJapan.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macRoman.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macRomania.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macThai.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macTurkish.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/macUkraine.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/shiftjis.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/symbol.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/encoding/tis-620.enc create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/history.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/http1.0/http.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/http1.0/pkgIndex.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/init.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/af.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/af_za.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ar.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ar_in.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ar_jo.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ar_lb.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ar_sy.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/be.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/bg.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/bn.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/bn_in.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ca.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/cs.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/da.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/de.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/de_at.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/de_be.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/el.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_au.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_be.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_bw.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_ca.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_gb.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_hk.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_ie.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_in.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_nz.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_ph.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_sg.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_za.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/en_zw.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/eo.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_ar.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_bo.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_cl.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_co.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_cr.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_do.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_ec.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_gt.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_hn.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_mx.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_ni.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_pa.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_pe.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_pr.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_py.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_sv.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_uy.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/es_ve.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/et.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/eu.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/eu_es.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fa.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fa_in.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fa_ir.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fi.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fo.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fo_fo.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fr.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fr_be.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fr_ca.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/fr_ch.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ga.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ga_ie.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/gl.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/gl_es.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/gv.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/gv_gb.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/he.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/hi.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/hi_in.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/hr.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/hu.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/id.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/id_id.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/is.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/it.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/it_ch.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ja.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/kl.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/kl_gl.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ko.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ko_kr.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/kok.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/kok_in.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/kw.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/kw_gb.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/lt.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/lv.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/mk.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/mr.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/mr_in.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ms.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ms_my.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/mt.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/nb.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/nl.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/nl_be.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/nn.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/pl.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/pt.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/pt_br.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ro.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ru.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ru_ua.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/sh.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/sk.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/sl.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/sq.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/sr.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/sv.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/sw.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ta.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/ta_in.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/te.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/te_in.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/th.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/tr.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/uk.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/vi.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/zh.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/zh_cn.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/zh_hk.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/zh_sg.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/msgs/zh_tw.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/opt0.4/optparse.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/opt0.4/pkgIndex.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/package.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/parray.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/safe.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tclIndex create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tm.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Abidjan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Accra create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Addis_Ababa create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Algiers create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Asmara create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Asmera create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Bamako create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Bangui create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Banjul create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Bissau create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Blantyre create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Brazzaville create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Bujumbura create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Cairo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Casablanca create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Ceuta create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Conakry create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Dakar create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Dar_es_Salaam create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Djibouti create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Douala create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/El_Aaiun create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Freetown create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Gaborone create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Harare create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Johannesburg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Juba create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Kampala create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Khartoum create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Kigali create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Kinshasa create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Lagos create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Libreville create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Lome create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Luanda create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Lubumbashi create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Lusaka create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Malabo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Maputo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Maseru create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Mbabane create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Mogadishu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Monrovia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Nairobi create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Ndjamena create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Niamey create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Nouakchott create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Ouagadougou create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Porto-Novo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Sao_Tome create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Timbuktu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Tripoli create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Tunis create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Africa/Windhoek create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Adak create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Anchorage create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Anguilla create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Antigua create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Araguaina create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/Buenos_Aires create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/Catamarca create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/ComodRivadavia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/Cordoba create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/Jujuy create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/La_Rioja create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/Mendoza create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/Rio_Gallegos create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/Salta create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/San_Juan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/San_Luis create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/Tucuman create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Argentina/Ushuaia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Aruba create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Asuncion create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Atikokan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Atka create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Bahia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Bahia_Banderas create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Barbados create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Belem create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Belize create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Blanc-Sablon create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Boa_Vista create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Bogota create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Boise create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Buenos_Aires create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Cambridge_Bay create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Campo_Grande create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Cancun create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Caracas create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Catamarca create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Cayenne create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Cayman create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Chicago create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Chihuahua create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Coral_Harbour create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Cordoba create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Costa_Rica create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Creston create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Cuiaba create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Curacao create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Danmarkshavn create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Dawson create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Dawson_Creek create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Denver create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Detroit create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Dominica create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Edmonton create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Eirunepe create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/El_Salvador create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Ensenada create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Fort_Nelson create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Fort_Wayne create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Fortaleza create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Glace_Bay create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Godthab create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Goose_Bay create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Grand_Turk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Grenada create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Guadeloupe create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Guatemala create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Guayaquil create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Guyana create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Halifax create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Havana create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Hermosillo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Indiana/Indianapolis create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Indiana/Knox create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Indiana/Marengo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Indiana/Petersburg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Indiana/Tell_City create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Indiana/Vevay create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Indiana/Vincennes create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Indiana/Winamac create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Indianapolis create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Inuvik create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Iqaluit create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Jamaica create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Jujuy create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Juneau create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Kentucky/Louisville create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Kentucky/Monticello create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Knox_IN create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Kralendijk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/La_Paz create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Lima create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Los_Angeles create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Louisville create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Lower_Princes create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Maceio create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Managua create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Manaus create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Marigot create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Martinique create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Matamoros create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Mazatlan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Mendoza create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Menominee create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Merida create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Metlakatla create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Mexico_City create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Miquelon create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Moncton create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Monterrey create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Montevideo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Montreal create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Montserrat create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Nassau create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/New_York create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Nipigon create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Nome create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Noronha create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/North_Dakota/Beulah create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/North_Dakota/Center create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/North_Dakota/New_Salem create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Ojinaga create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Panama create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Pangnirtung create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Paramaribo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Phoenix create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Port-au-Prince create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Port_of_Spain create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Porto_Acre create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Porto_Velho create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Puerto_Rico create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Rainy_River create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Rankin_Inlet create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Recife create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Regina create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Resolute create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Rio_Branco create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Rosario create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Santa_Isabel create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Santarem create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Santiago create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Santo_Domingo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Sao_Paulo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Scoresbysund create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Shiprock create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Sitka create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/St_Barthelemy create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/St_Johns create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/St_Kitts create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/St_Lucia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/St_Thomas create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/St_Vincent create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Swift_Current create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Tegucigalpa create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Thule create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Thunder_Bay create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Tijuana create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Toronto create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Tortola create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Vancouver create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Virgin create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Whitehorse create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Winnipeg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Yakutat create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/America/Yellowknife create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/Casey create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/Davis create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/DumontDUrville create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/Macquarie create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/Mawson create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/McMurdo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/Palmer create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/Rothera create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/South_Pole create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/Syowa create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/Troll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Antarctica/Vostok create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Arctic/Longyearbyen create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Aden create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Almaty create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Amman create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Anadyr create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Aqtau create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Aqtobe create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Ashgabat create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Ashkhabad create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Baghdad create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Bahrain create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Baku create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Bangkok create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Beirut create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Bishkek create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Brunei create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Calcutta create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Chita create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Choibalsan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Chongqing create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Chungking create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Colombo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Dacca create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Damascus create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Dhaka create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Dili create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Dubai create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Dushanbe create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Gaza create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Harbin create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Hebron create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Ho_Chi_Minh create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Hong_Kong create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Hovd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Irkutsk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Istanbul create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Jakarta create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Jayapura create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Jerusalem create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Kabul create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Kamchatka create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Karachi create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Kashgar create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Kathmandu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Katmandu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Khandyga create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Kolkata create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Krasnoyarsk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Kuala_Lumpur create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Kuching create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Kuwait create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Macao create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Macau create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Magadan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Makassar create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Manila create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Muscat create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Nicosia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Novokuznetsk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Novosibirsk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Omsk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Oral create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Phnom_Penh create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Pontianak create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Pyongyang create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Qatar create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Qyzylorda create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Rangoon create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Riyadh create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Saigon create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Sakhalin create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Samarkand create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Seoul create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Shanghai create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Singapore create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Srednekolymsk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Taipei create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Tashkent create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Tbilisi create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Tehran create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Tel_Aviv create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Thimbu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Thimphu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Tokyo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Ujung_Pandang create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Ulaanbaatar create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Ulan_Bator create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Urumqi create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Ust-Nera create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Vientiane create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Vladivostok create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Yakutsk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Yekaterinburg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Asia/Yerevan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Azores create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Bermuda create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Canary create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Cape_Verde create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Faeroe create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Faroe create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Jan_Mayen create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Madeira create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Reykjavik create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/South_Georgia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/St_Helena create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Atlantic/Stanley create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/ACT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Adelaide create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Brisbane create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Broken_Hill create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Canberra create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Currie create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Darwin create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Eucla create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Hobart create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/LHI create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Lindeman create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Lord_Howe create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Melbourne create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/NSW create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/North create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Perth create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Queensland create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/South create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Sydney create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Tasmania create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Victoria create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/West create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Australia/Yancowinna create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Brazil/Acre create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Brazil/DeNoronha create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Brazil/East create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Brazil/West create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/CET create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/CST6CDT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Canada/Atlantic create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Canada/Central create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Canada/East-Saskatchewan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Canada/Eastern create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Canada/Mountain create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Canada/Newfoundland create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Canada/Pacific create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Canada/Saskatchewan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Canada/Yukon create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Chile/Continental create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Chile/EasterIsland create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Cuba create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/EET create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/EST create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/EST5EDT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Egypt create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Eire create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+0 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+1 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+10 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+11 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+12 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+2 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+3 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+4 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+5 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+6 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+7 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+8 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT+9 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-0 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-1 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-10 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-11 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-12 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-13 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-14 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-2 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-3 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-4 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-5 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-6 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-7 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-8 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT-9 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/GMT0 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/Greenwich create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/UCT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/UTC create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/Universal create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Etc/Zulu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Amsterdam create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Andorra create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Athens create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Belfast create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Belgrade create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Berlin create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Bratislava create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Brussels create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Bucharest create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Budapest create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Busingen create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Chisinau create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Copenhagen create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Dublin create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Gibraltar create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Guernsey create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Helsinki create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Isle_of_Man create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Istanbul create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Jersey create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Kaliningrad create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Kiev create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Lisbon create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Ljubljana create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/London create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Luxembourg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Madrid create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Malta create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Mariehamn create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Minsk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Monaco create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Moscow create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Nicosia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Oslo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Paris create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Podgorica create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Prague create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Riga create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Rome create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Samara create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/San_Marino create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Sarajevo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Simferopol create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Skopje create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Sofia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Stockholm create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Tallinn create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Tirane create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Tiraspol create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Uzhgorod create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Vaduz create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Vatican create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Vienna create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Vilnius create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Volgograd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Warsaw create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Zagreb create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Zaporozhye create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Europe/Zurich create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/GB create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/GB-Eire create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/GMT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/GMT+0 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/GMT-0 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/GMT0 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Greenwich create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/HST create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Hongkong create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Iceland create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Antananarivo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Chagos create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Christmas create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Cocos create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Comoro create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Kerguelen create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Mahe create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Maldives create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Mauritius create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Mayotte create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Indian/Reunion create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Iran create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Israel create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Jamaica create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Japan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Kwajalein create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Libya create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/MET create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/MST create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/MST7MDT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Mexico/BajaNorte create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Mexico/BajaSur create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Mexico/General create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/NZ create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/NZ-CHAT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Navajo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/PRC create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/PST8PDT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Apia create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Auckland create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Bougainville create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Chatham create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Chuuk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Easter create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Efate create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Enderbury create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Fakaofo create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Fiji create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Funafuti create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Galapagos create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Gambier create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Guadalcanal create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Guam create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Honolulu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Johnston create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Kiritimati create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Kosrae create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Kwajalein create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Majuro create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Marquesas create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Midway create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Nauru create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Niue create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Norfolk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Noumea create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Pago_Pago create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Palau create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Pitcairn create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Pohnpei create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Ponape create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Port_Moresby create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Rarotonga create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Saipan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Samoa create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Tahiti create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Tarawa create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Tongatapu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Truk create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Wake create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Wallis create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Pacific/Yap create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Poland create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Portugal create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/ROC create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/ROK create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Singapore create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/AST4 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/AST4ADT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/CST6 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/CST6CDT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/EST5 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/EST5EDT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/HST10 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/MST7 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/MST7MDT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/PST8 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/PST8PDT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/YST9 create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/SystemV/YST9YDT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Turkey create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/UCT create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Alaska create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Aleutian create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Arizona create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Central create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/East-Indiana create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Eastern create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Hawaii create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Indiana-Starke create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Michigan create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Mountain create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Pacific create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Pacific-New create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/US/Samoa create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/UTC create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Universal create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/W-SU create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/WET create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/tzdata/Zulu create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl/word.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tcl85.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/bgerror.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/button.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/choosedir.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/clrpick.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/comdlg.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/console.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/dialog.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/entry.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/focus.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/README create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/logo.eps create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/logo100.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/logo64.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/logoLarge.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/logoMed.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/pwrdLogo.eps create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/pwrdLogo100.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/pwrdLogo150.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/pwrdLogo175.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/pwrdLogo200.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/pwrdLogo75.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/images/tai-ku.gif create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/license.terms create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/listbox.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/menu.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/mkpsenc.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgbox.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/cs.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/da.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/de.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/el.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/en.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/en_gb.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/eo.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/es.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/fr.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/hu.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/it.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/nl.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/pl.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/pt.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/ru.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/msgs/sv.msg create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/obsolete.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/optMenu.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/palette.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/panedwindow.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/pkgIndex.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/safetk.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/scale.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/scrlbar.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/spinbox.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/tclIndex create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/tearoff.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/text.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/tk.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/tkfbox.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/altTheme.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/aquaTheme.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/button.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/clamTheme.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/classicTheme.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/combobox.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/cursors.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/defaults.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/entry.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/fonts.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/menubutton.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/notebook.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/panedwindow.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/progress.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/scale.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/scrollbar.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/sizegrip.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/spinbox.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/treeview.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/ttk.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/utils.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/vistaTheme.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/winTheme.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/ttk/xpTheme.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/unsupported.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk/xmfbox.tcl create mode 100644 extensions/fablabchemnitz/inkstitch/bin/tk85.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/unicodedata.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/win32api.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/win32com.shell.shell.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/win32pdh.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/win32pipe.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/win32trace.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/win32ui.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/win32wnet.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/wx._adv.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/wx._core.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/wx.siplib.pyd create mode 100644 extensions/fablabchemnitz/inkstitch/bin/wxbase30u_net_vc90.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/wxbase30u_vc90.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/wxmsw30u_adv_vc90.dll create mode 100644 extensions/fablabchemnitz/inkstitch/bin/wxmsw30u_core_vc90.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/LICENSE.electron.txt create mode 100644 extensions/fablabchemnitz/inkstitch/electron/LICENSES.chromium.html create mode 100644 extensions/fablabchemnitz/inkstitch/electron/VkICD_mock_icd.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/VkLayer_core_validation.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/VkLayer_object_tracker.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/VkLayer_parameter_validation.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/VkLayer_threading.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/VkLayer_unique_objects.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/chrome_100_percent.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/chrome_200_percent.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/d3dcompiler_47.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/ffmpeg.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/icudtl.dat create mode 100644 extensions/fablabchemnitz/inkstitch/electron/inkstitch-gui.exe create mode 100644 extensions/fablabchemnitz/inkstitch/electron/libEGL.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/libGLESv2.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/am.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/ar.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/bg.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/bn.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/ca.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/cs.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/da.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/de.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/el.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/en-GB.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/en-US.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/es-419.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/es.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/et.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/fa.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/fi.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/fil.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/fr.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/gu.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/he.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/hi.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/hr.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/hu.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/id.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/it.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/ja.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/kn.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/ko.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/lt.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/lv.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/ml.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/mr.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/ms.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/nb.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/nl.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/pl.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/pt-BR.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/pt-PT.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/ro.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/ru.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/sk.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/sl.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/sr.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/sv.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/sw.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/ta.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/te.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/th.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/tr.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/uk.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/vi.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/zh-CN.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/locales/zh-TW.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/natives_blob.bin create mode 100644 extensions/fablabchemnitz/inkstitch/electron/osmesa.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources.pak create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/CODE_OF_CONDUCT.md create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/COPYING create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/build.cmd create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/build.sh create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/esdoc.json create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/lib/index.js create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/lib/src/index.js create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/lib/src/index.js.map create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/package.json create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/src/index.ts create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/tsconfig.json create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/tslint.json create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/app.asar.unpacked/node_modules/spawn-rx/vendor/jobber/Jobber.exe create mode 100644 extensions/fablabchemnitz/inkstitch/electron/resources/electron.asar create mode 100644 extensions/fablabchemnitz/inkstitch/electron/snapshot_blob.bin create mode 100644 extensions/fablabchemnitz/inkstitch/electron/swiftshader/libEGL.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/swiftshader/libGLESv2.dll create mode 100644 extensions/fablabchemnitz/inkstitch/electron/v8_context_snapshot.bin create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Applique Color Change.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Applique Stop.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Bfly FSL.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Donkey FullBack Design.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Faux Fill Blend.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Fill Stitch Starting and Ending Point.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Fringe Example.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/InkStitch 1 Color Top Left Origin.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/InkStitch 1 Color.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/InkStitch Logo QR Code Patch.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/InkStitch Multi Color.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Logo Hat Embroidery.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Monogram Frame Example.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/Puff Only.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/PuffRegular.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/True Blend.svg create mode 100644 extensions/fablabchemnitz/inkstitch/examples/inkstitch_logo_screenshot.png create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/dejavufont/LICENSE create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/dejavufont/font.json create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/dejavufont/←.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/dejavufont/↑.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/dejavufont/→.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/dejavufont/↓.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_rounded/LICENSE create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_rounded/README.md create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_rounded/font.json create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_rounded/←.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_rounded/↑.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_rounded/→.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_rounded/↓.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_simple/LICENSE create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_simple/README.md create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_simple/font.json create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_simple/←.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_simple/↑.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_simple/→.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/geneva_simple/↓.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/medium_font/LICENSE create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/medium_font/README_en.md create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/medium_font/font.json create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/medium_font/←.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/medium_font/↑.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/medium_font/→.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/medium_font/↓.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/small_font/LICENSE create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/small_font/README_en.md create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/small_font/font.json create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/small_font/←.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/small_font/↑.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/small_font/→.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/small_font/↓.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_directors/README_en.md create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_directors/font.json create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_directors/←.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_directors/↑.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_directors/→.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_directors/↓.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_masters/README_en.md create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_masters/font.json create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_masters/←.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_masters/↑.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_masters/→.svg create mode 100644 extensions/fablabchemnitz/inkstitch/fonts/tt_masters/↓.svg create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch ARC Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch ARC Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Admelody Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Admelody Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Anchor.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Aurifil Lana.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Aurifil Mako.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Aurifil Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Aurifil Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Aurifil Royal.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch BFC Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Brildor AC.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Brildor CO.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Brildor MF.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Brildor NY.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Brildor PB.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Brother Country.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Brother Embroidery.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Coats Alcazar Jazz.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Coats Alcazar.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Coats Sylko USA.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Coats Sylko.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch DMC.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Embroidex.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Emmel.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Fil-Tec Glide.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Floriani Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch FuFu Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch FuFu Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Gunold.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Gutermann Creativ Dekor.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Hemingworth.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Isacord Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Isafil Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Isalon Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Janome.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch King Star.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch MTB - Embroidex.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Madeira Burmilana.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Madeira Matt.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Madeira Polyneon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Madeira Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Marathon Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Marathon Rayon V3.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Marathon Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Metro.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Mettler Embroidery.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Mettler Poly Sheen.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Outback Embroidery Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Poly X40.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Princess.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch RAL.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Radiant Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Robison-Anton Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Robison-Anton Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Royal Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Royal Viscose Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Sigma.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Simthread Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Simthread Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Sulky Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Sulky Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Swist Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Tristar Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Tristar Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Viking Palette.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Vyapar Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Wonderfil Polyester.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/palettes/InkStitch Wonderfil Rayon.gpl create mode 100644 extensions/fablabchemnitz/inkstitch/symbols/inkstitch.svg create mode 100644 extensions/fablabchemnitz/insert_paper_template/insert_paper_template.inx create mode 100644 extensions/fablabchemnitz/insert_paper_template/insert_paper_template.py create mode 100644 extensions/fablabchemnitz/inset_alignment/inset_alignment.inx create mode 100644 extensions/fablabchemnitz/inset_alignment/inset_alignment.py create mode 100644 extensions/fablabchemnitz/inventory_sticker/inventory_sticker.inx create mode 100644 extensions/fablabchemnitz/inventory_sticker/inventory_sticker.py create mode 100644 extensions/fablabchemnitz/isometric_projection/isometric_projection.inx create mode 100644 extensions/fablabchemnitz/isometric_projection/isometric_projection.py create mode 100644 extensions/fablabchemnitz/j_tech_photonics_laser_tool/j_tech_photonics_laser_tool.inx create mode 100644 extensions/fablabchemnitz/j_tech_photonics_laser_tool/j_tech_photonics_laser_tool.py create mode 100644 extensions/fablabchemnitz/jitter_gradients/jitter_gradients.inx create mode 100644 extensions/fablabchemnitz/jitter_gradients/jitter_gradients.py create mode 100644 extensions/fablabchemnitz/join_paths/join_paths.inx create mode 100644 extensions/fablabchemnitz/join_paths/join_paths.py create mode 100644 extensions/fablabchemnitz/jpeg_export/jpeg_export.inx create mode 100644 extensions/fablabchemnitz/jpeg_export/jpeg_export.py create mode 100644 extensions/fablabchemnitz/knob_scale/knob_scale.inx create mode 100644 extensions/fablabchemnitz/knob_scale/knob_scale.py create mode 100644 extensions/fablabchemnitz/label_feature_with_fill_color/label_feature_with_fill_color.inx create mode 100644 extensions/fablabchemnitz/label_feature_with_fill_color/label_feature_with_fill_color.py create mode 100644 extensions/fablabchemnitz/label_guides/label_guides.inx create mode 100644 extensions/fablabchemnitz/label_guides/label_guides.py create mode 100644 extensions/fablabchemnitz/lasercut_jigsaw/lasercut_jigsaw.inx create mode 100644 extensions/fablabchemnitz/lasercut_jigsaw/lasercut_jigsaw.py create mode 100644 extensions/fablabchemnitz/lasercut_polygon/lasercut_polygon.inx create mode 100644 extensions/fablabchemnitz/lasercut_polygon/lasercut_polygon.py create mode 100644 extensions/fablabchemnitz/layer_clip/clip.py create mode 100644 extensions/fablabchemnitz/layer_clip/clip_above.inx create mode 100644 extensions/fablabchemnitz/layer_clip/clip_above.py create mode 100644 extensions/fablabchemnitz/layer_clip/clip_below.inx create mode 100644 extensions/fablabchemnitz/layer_clip/clip_below.py create mode 100644 extensions/fablabchemnitz/layer_clip/clip_current.inx create mode 100644 extensions/fablabchemnitz/layer_clip/clip_current.py create mode 100644 extensions/fablabchemnitz/layer_clip/clip_fixtransform.inx create mode 100644 extensions/fablabchemnitz/layer_clip/clip_fixtransform.py create mode 100644 extensions/fablabchemnitz/layer_clip/clip_parent.inx create mode 100644 extensions/fablabchemnitz/layer_clip/clip_parent.py create mode 100644 extensions/fablabchemnitz/layer_clip/clip_remove.inx create mode 100644 extensions/fablabchemnitz/layer_clip/clip_remove.py create mode 100644 extensions/fablabchemnitz/leather_case/leather_case.inx create mode 100644 extensions/fablabchemnitz/leather_case/leather_case.py create mode 100644 extensions/fablabchemnitz/line_animator/line_animator.inx create mode 100644 extensions/fablabchemnitz/line_animator/line_animator.py create mode 100644 extensions/fablabchemnitz/line_shading/line_shading.inx create mode 100644 extensions/fablabchemnitz/line_shading/line_shading.py create mode 100644 extensions/fablabchemnitz/line_shading/png.py create mode 100644 extensions/fablabchemnitz/living_hinge/living_hinge.inx create mode 100644 extensions/fablabchemnitz/living_hinge/living_hinge.py create mode 100644 extensions/fablabchemnitz/living_hinge_size_input/living_hinge_size_input.inx create mode 100644 extensions/fablabchemnitz/living_hinge_size_input/living_hinge_size_input.py create mode 100644 extensions/fablabchemnitz/longest_continuous_path/longest_continuous_path.inx create mode 100644 extensions/fablabchemnitz/longest_continuous_path/longest_continuous_path.py create mode 100644 extensions/fablabchemnitz/low_poly_2/low_poly_2.inx create mode 100644 extensions/fablabchemnitz/low_poly_2/low_poly_2.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_bezmisc.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_cspsubdiv.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_cubicsuperpath.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_export.inx create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_export.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_export_zip.inx create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_ffgeom.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_inkex.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_library.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_simplepath.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_simplestyle.py create mode 100644 extensions/fablabchemnitz/lyz_export/lyz_simpletransform.py create mode 100644 extensions/fablabchemnitz/maze/maze.inx create mode 100644 extensions/fablabchemnitz/maze/maze.py create mode 100644 extensions/fablabchemnitz/maze/maze_lib.py create mode 100644 extensions/fablabchemnitz/mirror/mirror.inx create mode 100644 extensions/fablabchemnitz/mirror/mirror.py create mode 100644 extensions/fablabchemnitz/move_path_node/move_path_node.inx create mode 100644 extensions/fablabchemnitz/move_path_node/move_path_node.py create mode 100644 extensions/fablabchemnitz/mutual_cut_line/mutual_cut_line.inx create mode 100644 extensions/fablabchemnitz/mutual_cut_line/mutual_cut_line.py create mode 100644 extensions/fablabchemnitz/netting/netting.inx create mode 100644 extensions/fablabchemnitz/netting/netting.py create mode 100644 extensions/fablabchemnitz/nextgenerator/nextgenerator.inx create mode 100644 extensions/fablabchemnitz/nextgenerator/nextgenerator.py create mode 100644 extensions/fablabchemnitz/number_subpaths/number_subpaths.inx create mode 100644 extensions/fablabchemnitz/number_subpaths/number_subpaths.py create mode 100644 extensions/fablabchemnitz/ocr/.gitignore create mode 100644 extensions/fablabchemnitz/ocr/ocr.inx create mode 100755 extensions/fablabchemnitz/ocr/ocr.py create mode 100644 extensions/fablabchemnitz/offset_paths/offset_paths.inx create mode 100644 extensions/fablabchemnitz/offset_paths/offset_paths.py create mode 100644 extensions/fablabchemnitz/open_closed_path/open_closed_path.inx create mode 100644 extensions/fablabchemnitz/open_closed_path/open_closed_path.py create mode 100644 extensions/fablabchemnitz/open_in_roland_cutstudio/open_in_roland_cutstudio.inx create mode 100644 extensions/fablabchemnitz/open_in_roland_cutstudio/open_in_roland_cutstudio.py create mode 100644 extensions/fablabchemnitz/optimize_sequence_lasercut_sequence/optimize_sequence_lasercut_sequence.inx create mode 100644 extensions/fablabchemnitz/optimize_sequence_lasercut_sequence/optimize_sequence_lasercut_sequence.py create mode 100755 extensions/fablabchemnitz/optimize_sequence_travel_distance/optimize_sequence_travel_distance.inx create mode 100644 extensions/fablabchemnitz/optimize_sequence_travel_distance/optimize_sequence_travel_distance.py create mode 100644 extensions/fablabchemnitz/optimize_sequence_travel_distance/plot_utils.py create mode 100644 extensions/fablabchemnitz/optimize_sequence_travel_distance/simplepath.py create mode 100644 extensions/fablabchemnitz/optimize_sequence_travel_distance/simpletransform.py create mode 100644 extensions/fablabchemnitz/origami_patterns/OrigamiPatterns/Hypar.py create mode 100644 extensions/fablabchemnitz/origami_patterns/OrigamiPatterns/Kresling.py create mode 100644 extensions/fablabchemnitz/origami_patterns/OrigamiPatterns/Kresling_full.py create mode 100644 extensions/fablabchemnitz/origami_patterns/OrigamiPatterns/Path.py create mode 100644 extensions/fablabchemnitz/origami_patterns/OrigamiPatterns/Pattern.py create mode 100644 extensions/fablabchemnitz/origami_patterns/OrigamiPatterns/Pleat_Circular.py create mode 100644 extensions/fablabchemnitz/origami_patterns/OrigamiPatterns/Template.py create mode 100644 extensions/fablabchemnitz/origami_patterns/OrigamiPatterns/Waterbomb.py create mode 100644 extensions/fablabchemnitz/origami_patterns/OrigamiPatterns/__init__.py create mode 100644 extensions/fablabchemnitz/origami_patterns/origami_patterns_kresling.inx create mode 100644 extensions/fablabchemnitz/origami_patterns/origami_patterns_pleat_circular.inx create mode 100644 extensions/fablabchemnitz/origami_patterns/origami_patterns_pleat_hypar.inx create mode 100644 extensions/fablabchemnitz/origami_patterns/origami_patterns_template.inx create mode 100644 extensions/fablabchemnitz/origami_patterns/origami_patterns_waterbomb.inx create mode 100644 extensions/fablabchemnitz/output_pro/output_pro.inx create mode 100644 extensions/fablabchemnitz/output_pro/output_pro.py create mode 100644 extensions/fablabchemnitz/output_pro/outputpro/__init__.py create mode 100644 extensions/fablabchemnitz/output_pro/outputpro/alpha.png create mode 100644 extensions/fablabchemnitz/output_pro/outputpro/cmyk.py create mode 100644 extensions/fablabchemnitz/output_pro/outputpro/cutmarks.py create mode 100644 extensions/fablabchemnitz/output_pro/outputpro/preview_mask.png create mode 100644 extensions/fablabchemnitz/output_pro/outputpro/top.png create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/.libs/admesh create mode 120000 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/.libs/libadmesh.la create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/.libs/libadmesh.lai create mode 120000 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/.libs/libadmesh.so create mode 120000 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/.libs/libadmesh.so.1 create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/.libs/libadmesh.so.1.0.0 create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/AUTHORS create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/COPYING create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/ChangeLog create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/ChangeLog.old create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/INSTALL create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/Makefile create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/Makefile.am create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/Makefile.in create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/README.md create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/aclocal.m4 create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/admesh create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/admesh-doc.txt create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/admesh.1 create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/block.stl create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/compile create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/config.guess create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/config.h create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/config.h.in create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/config.log create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/config.status create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/config.sub create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/configure create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/configure.ac create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/depcomp create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/install-sh create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/libadmesh.la create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/libadmesh.pc create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/libadmesh.pc.in create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/libtool create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/ltmain.sh create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/m4/libtool.m4 create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/m4/ltoptions.m4 create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/m4/ltsugar.m4 create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/m4/ltversion.m4 create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/m4/lt~obsolete.m4 create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/missing create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.deps/.dirstamp create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.deps/admesh.Po create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.deps/connect.Plo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.deps/normals.Plo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.deps/shared.Plo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.deps/stl_io.Plo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.deps/stlinit.Plo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.deps/util.Plo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.dirstamp create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.libs/connect.o create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.libs/normals.o create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.libs/shared.o create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.libs/stl_io.o create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.libs/stlinit.o create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/.libs/util.o create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/admesh.c create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/admesh.o create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/connect.c create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/connect.lo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/normals.c create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/normals.lo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/portable_endian.h create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/shared.c create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/shared.lo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/stl.h create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/stl_io.c create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/stl_io.lo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/stlinit.c create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/stlinit.lo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/util.c create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/src/util.lo create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/linux/stamp-h1 create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/windows/admesh.exe create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/windows/include/admesh/stl.h create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/windows/lib/libadmesh.a create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/windows/lib/libadmesh.dll.a create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/windows/lib/libadmesh.la create mode 100644 extensions/fablabchemnitz/papercraft_unfold/admesh/windows/lib/pkgconfig/libadmesh.pc create mode 100755 extensions/fablabchemnitz/papercraft_unfold/admesh/windows/libadmesh-1.dll create mode 100644 extensions/fablabchemnitz/papercraft_unfold/assets/models/cube/cube.mtl create mode 100644 extensions/fablabchemnitz/papercraft_unfold/assets/models/cube/cube.obj create mode 100644 extensions/fablabchemnitz/papercraft_unfold/assets/models/cube/cube.png create mode 100644 extensions/fablabchemnitz/papercraft_unfold/assets/shaders/shader.frag create mode 100644 extensions/fablabchemnitz/papercraft_unfold/assets/shaders/shader.vert create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/__init__.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/camera.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/controls.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/geometry.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/model/__init__.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/model/basemodel.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/model/formats/__init__.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/model/formats/obj.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/model/formats/off.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/model/formats/ply.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/model/formats/stl.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/model/mesh.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/model/tools.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/d3/shader.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/fstl/Qt5Core.dll create mode 100644 extensions/fablabchemnitz/papercraft_unfold/fstl/Qt5Gui.dll create mode 100644 extensions/fablabchemnitz/papercraft_unfold/fstl/Qt5OpenGL.dll create mode 100644 extensions/fablabchemnitz/papercraft_unfold/fstl/Qt5Widgets.dll create mode 100755 extensions/fablabchemnitz/papercraft_unfold/fstl/fstl create mode 100644 extensions/fablabchemnitz/papercraft_unfold/fstl/fstl.exe create mode 100644 extensions/fablabchemnitz/papercraft_unfold/fstl/libEGL.dll create mode 100644 extensions/fablabchemnitz/papercraft_unfold/fstl/libGLESv2.dll create mode 100644 extensions/fablabchemnitz/papercraft_unfold/fstl/platforms/qwindows.dll create mode 100644 extensions/fablabchemnitz/papercraft_unfold/papercraft_unfold.inx create mode 100644 extensions/fablabchemnitz/papercraft_unfold/papercraft_unfold.py create mode 100644 extensions/fablabchemnitz/papercraft_unfold/unfold/cygwin1.dll create mode 100755 extensions/fablabchemnitz/papercraft_unfold/unfold/unfold_labels create mode 100644 extensions/fablabchemnitz/papercraft_unfold/unfold/unfold_labels.exe create mode 100755 extensions/fablabchemnitz/papercraft_unfold/unfold/unfold_nolabels create mode 100644 extensions/fablabchemnitz/papercraft_unfold/unfold/unfold_nolabels.exe create mode 100644 extensions/fablabchemnitz/paperfold/paperfold.inx create mode 100644 extensions/fablabchemnitz/paperfold/paperfold.py create mode 100644 extensions/fablabchemnitz/parabola/parabola.inx create mode 100644 extensions/fablabchemnitz/parabola/parabola.py create mode 100644 extensions/fablabchemnitz/path_intersections/path_intersections.inx create mode 100644 extensions/fablabchemnitz/path_intersections/path_intersections.py create mode 100644 extensions/fablabchemnitz/pathops/pathops.inx create mode 100644 extensions/fablabchemnitz/pathops/pathops.py create mode 100644 extensions/fablabchemnitz/pathops/pathops_combine.inx create mode 100644 extensions/fablabchemnitz/pathops/pathops_cutpath.inx create mode 100644 extensions/fablabchemnitz/pathops/pathops_difference.inx create mode 100644 extensions/fablabchemnitz/pathops/pathops_division.inx create mode 100644 extensions/fablabchemnitz/pathops/pathops_exclusion.inx create mode 100644 extensions/fablabchemnitz/pathops/pathops_intersection.inx create mode 100644 extensions/fablabchemnitz/pathops/pathops_union.inx create mode 100644 extensions/fablabchemnitz/paths_to_openscad/paths_to_openscad.inx create mode 100644 extensions/fablabchemnitz/paths_to_openscad/paths_to_openscad.py create mode 100644 extensions/fablabchemnitz/perspective_grid/perspective_grid.inx create mode 100644 extensions/fablabchemnitz/perspective_grid/perspective_grid.py create mode 100644 extensions/fablabchemnitz/piano_scale/piano_scale.inx create mode 100644 extensions/fablabchemnitz/piano_scale/piano_scale.py create mode 100644 extensions/fablabchemnitz/pixel2svg/pixel2svg.inx create mode 100644 extensions/fablabchemnitz/pixel2svg/pixel2svg.py create mode 100755 extensions/fablabchemnitz/playing_cards/playing_cards.inx create mode 100755 extensions/fablabchemnitz/playing_cards/playing_cards.py create mode 100644 extensions/fablabchemnitz/polygen/.gitattributes create mode 100644 extensions/fablabchemnitz/polygen/polygen.inx create mode 100644 extensions/fablabchemnitz/polygen/polygen.py create mode 100755 extensions/fablabchemnitz/polygon_side/polygon_side.inx create mode 100644 extensions/fablabchemnitz/polygon_side/polygon_side.py create mode 100644 extensions/fablabchemnitz/polyhedra/polyhedra.inx create mode 100644 extensions/fablabchemnitz/polyhedra/polyhedra.py create mode 100644 extensions/fablabchemnitz/polyhedra/polyhedrondata.py create mode 100755 extensions/fablabchemnitz/primitive/primitive create mode 100644 extensions/fablabchemnitz/primitive/primitive.exe create mode 100644 extensions/fablabchemnitz/primitive/primitive.inx create mode 100644 extensions/fablabchemnitz/primitive/primitive.py create mode 100644 extensions/fablabchemnitz/printing_marks_dotted/printing_marks_dotted.inx create mode 100644 extensions/fablabchemnitz/printing_marks_dotted/printing_marks_dotted.py create mode 100644 extensions/fablabchemnitz/purge_duplicate_path_nodes/purge_duplicate_path_nodes.inx create mode 100644 extensions/fablabchemnitz/purge_duplicate_path_nodes/purge_duplicate_path_nodes.py create mode 100644 extensions/fablabchemnitz/purge_duplicate_path_segments/purge_duplicate_path_segments.inx create mode 100644 extensions/fablabchemnitz/purge_duplicate_path_segments/purge_duplicate_path_segments.py create mode 100644 extensions/fablabchemnitz/purge_pointy_paths/purge_pointy_paths.inx create mode 100644 extensions/fablabchemnitz/purge_pointy_paths/purge_pointy_paths.py create mode 100644 extensions/fablabchemnitz/quick_joint/quick_joint.inx create mode 100644 extensions/fablabchemnitz/quick_joint/quick_joint.py create mode 100644 extensions/fablabchemnitz/ratchet/ratchet.inx create mode 100644 extensions/fablabchemnitz/ratchet/ratchet.py create mode 100644 extensions/fablabchemnitz/remove_duplicate_guides/remove_duplicate_guides.inx create mode 100644 extensions/fablabchemnitz/remove_duplicate_guides/remove_duplicate_guides.py create mode 100644 extensions/fablabchemnitz/remove_empty_groups/remove_empty_groups.inx create mode 100644 extensions/fablabchemnitz/remove_empty_groups/remove_empty_groups.py create mode 100644 extensions/fablabchemnitz/remove_obsolete_attributes/remove_obsolete_attributes.inx create mode 100644 extensions/fablabchemnitz/remove_obsolete_attributes/remove_obsolete_attributes.py create mode 100644 extensions/fablabchemnitz/render_silhouette_regmarks/render_silhouette_regmarks.inx create mode 100644 extensions/fablabchemnitz/render_silhouette_regmarks/render_silhouette_regmarks.py create mode 100644 extensions/fablabchemnitz/replace_color_and_alpha/replace_color_and_alpha.inx create mode 100644 extensions/fablabchemnitz/replace_color_and_alpha/replace_color_and_alpha.py create mode 100644 extensions/fablabchemnitz/reverse_order_of_subpaths/reverse_order_of_subpaths.inx create mode 100644 extensions/fablabchemnitz/reverse_order_of_subpaths/reverse_order_of_subpaths.py create mode 100644 extensions/fablabchemnitz/robot_boxes/robot_boxes.inx create mode 100644 extensions/fablabchemnitz/robot_boxes/robot_boxes.py create mode 100644 extensions/fablabchemnitz/roland_cutstudio_eps_export/roland_cutstudio_eps_export.inx create mode 100644 extensions/fablabchemnitz/roland_cutstudio_eps_export/roland_cutstudio_eps_export.py create mode 100644 extensions/fablabchemnitz/rotations/rotate_helper.py create mode 100644 extensions/fablabchemnitz/rotations/rotations_find_all_optimal.inx create mode 100644 extensions/fablabchemnitz/rotations/rotations_find_all_optimal.py create mode 100644 extensions/fablabchemnitz/rotations/rotations_minimum_bounding_box_area.inx create mode 100644 extensions/fablabchemnitz/rotations/rotations_minimum_bounding_box_area.py create mode 100644 extensions/fablabchemnitz/rotations/rotations_minimum_width.inx create mode 100644 extensions/fablabchemnitz/rotations/rotations_minimum_width.py create mode 100644 extensions/fablabchemnitz/round_corners/round_corners.inx create mode 100644 extensions/fablabchemnitz/round_corners/round_corners.py create mode 100644 extensions/fablabchemnitz/rounder/rounder.inx create mode 100644 extensions/fablabchemnitz/rounder/rounder.py create mode 100644 extensions/fablabchemnitz/scale_to_path_length/scale_to_path_length.inx create mode 100644 extensions/fablabchemnitz/scale_to_path_length/scale_to_path_length.py create mode 100644 extensions/fablabchemnitz/scale_to_real/scale_to_real.inx create mode 100644 extensions/fablabchemnitz/scale_to_real/scale_to_real.py create mode 100644 extensions/fablabchemnitz/scale_to_size/scale_to_size.inx create mode 100644 extensions/fablabchemnitz/scale_to_size/scale_to_size.py create mode 100644 extensions/fablabchemnitz/set_view_box/set_view_box.inx create mode 100644 extensions/fablabchemnitz/set_view_box/set_view_box.py create mode 100644 extensions/fablabchemnitz/shape_recognition/shape_recognition.inx create mode 100644 extensions/fablabchemnitz/shape_recognition/shape_recognition.py create mode 100644 extensions/fablabchemnitz/shape_recognition/shaperrec/extenders.py create mode 100644 extensions/fablabchemnitz/shape_recognition/shaperrec/geometric.py create mode 100644 extensions/fablabchemnitz/shape_recognition/shaperrec/groups.py create mode 100644 extensions/fablabchemnitz/shape_recognition/shaperrec/internal.py create mode 100644 extensions/fablabchemnitz/shape_recognition/shaperrec/manipulation.py create mode 100644 extensions/fablabchemnitz/shape_recognition/shaperrec/miscellaneous.py create mode 100644 extensions/fablabchemnitz/shapes/arakne_xy.py create mode 100644 extensions/fablabchemnitz/shapes/shapes.inx create mode 100644 extensions/fablabchemnitz/shapes/shapes.py create mode 100644 extensions/fablabchemnitz/sheet_metal_conus/sheet_metal_conus.inx create mode 100644 extensions/fablabchemnitz/sheet_metal_conus/sheet_metal_conus.py create mode 100644 extensions/fablabchemnitz/sheriff_star/sheriff_star.inx create mode 100644 extensions/fablabchemnitz/sheriff_star/sheriff_star.py create mode 100644 extensions/fablabchemnitz/shirt_waist/sewing_patterns.py create mode 100644 extensions/fablabchemnitz/shirt_waist/shirt_waist.inx create mode 100644 extensions/fablabchemnitz/shirt_waist/shirt_waist.py create mode 100644 extensions/fablabchemnitz/show_path_coordinates/show_path_coordinates.inx create mode 100644 extensions/fablabchemnitz/show_path_coordinates/show_path_coordinates.py create mode 100644 extensions/fablabchemnitz/simple_frame/simple_frame.inx create mode 100644 extensions/fablabchemnitz/simple_frame/simple_frame.py create mode 100644 extensions/fablabchemnitz/simpleinkscape/inkscape-simpleinkscape/simple/ui/menus.xml create mode 100644 extensions/fablabchemnitz/simpleinkscape/inkscape-simpleinkscape/simple/ui/toolbar-commands.ui create mode 100644 extensions/fablabchemnitz/simpleinkscape/inkscape-simpleinkscape/simple/ui/toolbar-tool.ui create mode 100644 extensions/fablabchemnitz/simpleinkscape/simpleinkscape.inx create mode 100644 extensions/fablabchemnitz/simpleinkscape/simpleinkscape.py create mode 100644 extensions/fablabchemnitz/sine_and_lace/sine_and_lace.inx create mode 100644 extensions/fablabchemnitz/sine_and_lace/sine_and_lace.py create mode 100644 extensions/fablabchemnitz/slic3r_stl_input/slic3r_stl_input.inx create mode 100644 extensions/fablabchemnitz/slic3r_stl_input/slic3r_stl_input.py create mode 100644 extensions/fablabchemnitz/slider_electrodes/slider_electrodes.inx create mode 100644 extensions/fablabchemnitz/slider_electrodes/slider_electrodes.py create mode 100644 extensions/fablabchemnitz/snap_object_points/snap_object_points.inx create mode 100644 extensions/fablabchemnitz/snap_object_points/snap_object_points.py create mode 100644 extensions/fablabchemnitz/source_code_text/source_code_text.inx create mode 100644 extensions/fablabchemnitz/source_code_text/source_code_text.py create mode 100644 extensions/fablabchemnitz/spirograph/inkscapeMadeEasy/inkscapeMadeEasy_Base.py create mode 100644 extensions/fablabchemnitz/spirograph/inkscapeMadeEasy/inkscapeMadeEasy_Draw.py create mode 100644 extensions/fablabchemnitz/spirograph/inkscapeMadeEasy/inkscapeMadeEasy_Plot.py create mode 100644 extensions/fablabchemnitz/spirograph/spirograph.inx create mode 100644 extensions/fablabchemnitz/spirograph/spirograph.py create mode 100644 extensions/fablabchemnitz/split_and_break_bezier_at_t/split_and_break_bezier_at_t.inx create mode 100644 extensions/fablabchemnitz/split_and_break_bezier_at_t/split_and_break_bezier_at_t.py create mode 100644 extensions/fablabchemnitz/split_bezier/split_bezier.inx create mode 100644 extensions/fablabchemnitz/split_bezier/split_bezier.py create mode 100644 extensions/fablabchemnitz/sprocket/sprocket.inx create mode 100644 extensions/fablabchemnitz/sprocket/sprocket.py create mode 100644 extensions/fablabchemnitz/starshine/starshine.inx create mode 100644 extensions/fablabchemnitz/starshine/starshine.py create mode 100644 extensions/fablabchemnitz/streaks/streaks.inx create mode 100644 extensions/fablabchemnitz/streaks/streaks.py create mode 100644 extensions/fablabchemnitz/strip_line/.gitignore create mode 100644 extensions/fablabchemnitz/strip_line/geometry/Circle.py create mode 100644 extensions/fablabchemnitz/strip_line/geometry/Minus.py create mode 100644 extensions/fablabchemnitz/strip_line/geometry/Plus.py create mode 100644 extensions/fablabchemnitz/strip_line/geometry/Triangle.py create mode 100644 extensions/fablabchemnitz/strip_line/geometry/Vertex.py create mode 100644 extensions/fablabchemnitz/strip_line/strip_line.inx create mode 100644 extensions/fablabchemnitz/strip_line/strip_line.py create mode 100644 extensions/fablabchemnitz/stroke_color_as_fill/stroke_color_as_fill.inx create mode 100644 extensions/fablabchemnitz/stroke_color_as_fill/stroke_color_as_fill.py create mode 100644 extensions/fablabchemnitz/styles_to_layers/styles_to_layers.inx create mode 100644 extensions/fablabchemnitz/styles_to_layers/styles_to_layers.py create mode 100644 extensions/fablabchemnitz/sudoku/qqwing create mode 100644 extensions/fablabchemnitz/sudoku/qqwing.exe create mode 100644 extensions/fablabchemnitz/sudoku/sudoku.inx create mode 100644 extensions/fablabchemnitz/sudoku/sudoku.py create mode 100644 extensions/fablabchemnitz/sundial_declining/sundial_declining.inx create mode 100644 extensions/fablabchemnitz/sundial_declining/sundial_declining.py create mode 100755 extensions/fablabchemnitz/svg2shenzhen/svg2shenzhen/bitmap2component.exe create mode 100755 extensions/fablabchemnitz/svg2shenzhen/svg2shenzhen/bitmap2component_linux64 create mode 100755 extensions/fablabchemnitz/svg2shenzhen/svg2shenzhen/bitmap2component_osx create mode 100644 extensions/fablabchemnitz/svg2shenzhen/svg2shenzhen/export.py create mode 100644 extensions/fablabchemnitz/svg2shenzhen/svg2shenzhen/prepare.py create mode 100644 extensions/fablabchemnitz/svg2shenzhen/svg2shenzhen_export.inx create mode 100644 extensions/fablabchemnitz/svg2shenzhen/svg2shenzhen_prepare.inx create mode 100644 extensions/fablabchemnitz/svgo_output/node.exe create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/.bin/svgo create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/.travis.yml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/example/parse.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/readme.markdown create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/all_bool.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/bool.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/dash.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/default_bool.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/dotted.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/long.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/num.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/parse.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/parse_modified.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/short.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/stop_early.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/unknown.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/minimist/test/whitespace.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/.npmignore create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/.svgo.yml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/CHANGELOG.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/Makefile create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/README.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/README.ru.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/bin/svgo create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/lib/svgo.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/lib/svgo/coa.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/lib/svgo/config.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/lib/svgo/js2svg.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/lib/svgo/jsAPI.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/lib/svgo/plugins.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/lib/svgo/svg2js.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/lib/svgo/tools.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/.bin/js-yaml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/.bin/mkdirp create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/.npmignore create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/.travis.yml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/GNUmakefile create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/README.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/README.ru.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/lib/arg.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/lib/cmd.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/lib/color.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/lib/completion.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/lib/completion.sh create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/lib/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/lib/opt.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/lib/shell.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/node_modules/q/CHANGES.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/node_modules/q/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/node_modules/q/README.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/node_modules/q/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/node_modules/q/q.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/node_modules/q/queue.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/src/arg.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/src/cmd.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/src/color.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/src/completion.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/src/index.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/src/opt.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/src/shell.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/test/coa.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/test/mocha.opts create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/test/shell-test.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/tests/api-h.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/coa/tests/h.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/ReadMe.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/examples/normal-usage.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/examples/safe-string.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/colors.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/custom/trap.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/custom/zalgo.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/extendStringPrototype.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/maps/america.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/maps/rainbow.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/maps/random.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/maps/zebra.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/styles.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/lib/system/supports-colors.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/safe.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/colors/themes/generic-logging.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/CHANGELOG.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/README.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/bin/js-yaml.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/bower.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/dist/js-yaml.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/examples/custom_types.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/examples/custom_types.yml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/examples/dumper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/examples/dumper.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/examples/sample_document.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/examples/sample_document.yml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/common.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/dumper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/exception.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/loader.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/mark.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/schema.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/schema/core.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/schema/default_full.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/schema/json.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/binary.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/bool.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/float.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/int.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/js/function.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/map.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/merge.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/null.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/omap.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/pairs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/seq.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/set.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/str.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/lib/js-yaml/type/timestamp.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/.bin/esparse create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/.bin/esvalidate create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/CHANGELOG.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/README.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/arguments.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/choice.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/constants.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/help.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/nargs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/parents.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/sum.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/append.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/count.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/help.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/store.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action/version.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/action_container.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/argparse.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/const.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/lib/namespace.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/README.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/chunk.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/compact.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/difference.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/drop.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/dropRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/dropRightWhile.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/dropWhile.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/fill.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/findIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/findLastIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/first.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/flatten.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/flattenDeep.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/head.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/indexOf.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/initial.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/intersection.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/last.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/lastIndexOf.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/object.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/pull.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/pullAt.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/remove.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/rest.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/slice.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/sortedIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/sortedLastIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/tail.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/take.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/takeRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/takeRightWhile.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/takeWhile.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/union.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/uniq.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/unique.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/unzip.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/unzipWith.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/without.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/xor.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/zip.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/zipObject.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/array/zipWith.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/chain.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/commit.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/concat.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/lodash.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/plant.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/reverse.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/run.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/tap.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/thru.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/toJSON.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/toString.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/value.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/valueOf.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/wrapperChain.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/wrapperCommit.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/wrapperConcat.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/wrapperPlant.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/wrapperReverse.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/wrapperToString.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/chain/wrapperValue.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/all.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/any.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/at.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/collect.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/contains.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/countBy.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/detect.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/each.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/eachRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/every.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/filter.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/find.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/findLast.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/findWhere.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/foldl.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/foldr.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/forEach.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/forEachRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/groupBy.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/include.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/includes.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/indexBy.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/inject.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/invoke.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/map.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/max.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/min.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/partition.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/pluck.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/reduce.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/reduceRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/reject.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/sample.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/select.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/shuffle.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/size.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/some.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/sortBy.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/sortByAll.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/sortByOrder.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/sum.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/collection/where.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/date.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/date/now.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/after.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/ary.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/backflow.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/before.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/bind.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/bindAll.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/bindKey.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/compose.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/curry.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/curryRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/debounce.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/defer.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/delay.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/flow.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/flowRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/memoize.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/modArgs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/negate.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/once.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/partial.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/partialRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/rearg.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/restParam.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/spread.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/throttle.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/wrap.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/LazyWrapper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/LodashWrapper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/MapCache.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/SetCache.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayConcat.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayCopy.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayEach.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayEachRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayEvery.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayExtremum.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayFilter.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayMap.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayPush.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayReduce.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arrayReduceRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arraySome.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/arraySum.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/assignDefaults.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/assignOwnDefaults.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/assignWith.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseAssign.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseAt.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseCallback.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseClone.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseCompareAscending.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseCopy.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseCreate.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseDelay.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseDifference.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseEach.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseEachRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseEvery.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseExtremum.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseFill.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseFilter.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseFind.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseFindIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseFlatten.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseFor.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseForIn.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseForOwn.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseForOwnRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseForRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseFunctions.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseGet.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseIndexOf.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseIsEqual.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseIsEqualDeep.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseIsFunction.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseIsMatch.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseLodash.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseMap.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseMatches.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseMatchesProperty.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseMerge.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseMergeDeep.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseProperty.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/basePropertyDeep.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/basePullAt.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseRandom.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseReduce.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseSetData.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseSlice.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseSome.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseSortBy.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseSortByOrder.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseSum.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseToString.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseUniq.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseValues.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseWhile.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/baseWrapperValue.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/binaryIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/binaryIndexBy.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/bindCallback.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/bufferClone.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/cacheIndexOf.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/cachePush.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/charsLeftIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/charsRightIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/compareAscending.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/compareMultiple.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/composeArgs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/composeArgsRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createAggregator.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createAssigner.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createBaseEach.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createBaseFor.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createBindWrapper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createCache.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createCompounder.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createCtorWrapper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createCurry.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createDefaults.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createExtremum.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createFind.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createFindIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createFindKey.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createFlow.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createForEach.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createForIn.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createForOwn.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createHybridWrapper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createObjectMapper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createPadDir.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createPadding.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createPartial.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createPartialWrapper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createReduce.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createRound.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createSortedIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/createWrapper.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/deburrLetter.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/equalArrays.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/equalByTag.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/equalObjects.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/escapeHtmlChar.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/escapeRegExpChar.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/escapeStringChar.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/getData.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/getFuncName.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/getLength.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/getMatchData.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/getNative.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/getView.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/indexOfNaN.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/initCloneArray.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/initCloneByTag.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/initCloneObject.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/invokePath.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/isArrayLike.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/isIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/isIterateeCall.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/isKey.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/isLaziable.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/isLength.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/isObjectLike.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/isSpace.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/isStrictComparable.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/lazyClone.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/lazyReverse.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/lazyValue.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/mapDelete.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/mapGet.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/mapHas.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/mapSet.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/mergeData.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/mergeDefaults.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/metaMap.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/pickByArray.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/pickByCallback.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/reEscape.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/reEvaluate.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/reInterpolate.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/realNames.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/reorder.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/replaceHolders.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/setData.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/shimKeys.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/sortedUniq.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/toIterable.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/toObject.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/toPath.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/trimmedLeftIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/trimmedRightIndex.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/unescapeHtmlChar.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/internal/wrapperClone.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/clone.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/cloneDeep.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/eq.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/gt.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/gte.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isArguments.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isArray.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isBoolean.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isDate.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isElement.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isEmpty.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isEqual.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isError.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isFinite.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isFunction.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isMatch.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isNaN.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isNative.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isNull.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isNumber.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isObject.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isPlainObject.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isRegExp.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isString.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isTypedArray.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/isUndefined.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/lt.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/lte.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/toArray.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/lang/toPlainObject.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/math.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/math/add.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/math/ceil.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/math/floor.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/math/max.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/math/min.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/math/round.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/math/sum.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/number.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/number/inRange.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/number/random.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/assign.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/create.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/defaults.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/defaultsDeep.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/extend.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/findKey.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/findLastKey.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/forIn.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/forInRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/forOwn.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/forOwnRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/functions.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/get.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/has.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/invert.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/keys.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/keysIn.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/mapKeys.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/mapValues.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/merge.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/methods.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/omit.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/pairs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/pick.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/result.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/set.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/transform.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/values.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/object/valuesIn.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/camelCase.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/capitalize.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/deburr.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/endsWith.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/escape.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/escapeRegExp.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/kebabCase.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/pad.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/padLeft.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/padRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/parseInt.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/repeat.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/snakeCase.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/startCase.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/startsWith.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/template.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/templateSettings.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/trim.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/trimLeft.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/trimRight.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/trunc.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/unescape.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/string/words.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/support.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/attempt.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/callback.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/constant.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/identity.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/iteratee.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/matches.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/matchesProperty.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/method.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/methodOf.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/mixin.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/noop.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/property.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/propertyOf.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/range.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/times.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/utility/uniqueId.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/.npmignore create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/README.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/bower.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/demo/angular.html create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js.map create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.map create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js.map create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.map create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/gruntfile.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/src/angular-sprintf.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/src/sprintf.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/sprintf-js/test/test.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/esprima/ChangeLog create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/esprima/LICENSE.BSD create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/esprima/README.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/esprima/bin/esparse.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/esprima/esprima.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/esprima/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/esprima/test/run.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/node_modules/esprima/test/runner.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/js-yaml/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/.travis.yml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/bin/cmd.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/bin/usage.txt create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/examples/pow.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/.travis.yml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/example/parse.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/readme.markdown create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/test/dash.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/test/default_bool.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/test/dotted.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/test/long.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/test/parse.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/test/short.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/node_modules/minimist/test/whitespace.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/readme.markdown create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/chmod.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/clobber.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/mkdirp.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/opts_fs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/opts_fs_sync.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/perm.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/perm_sync.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/race.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/rel.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/return.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/return_sync.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/root.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/sync.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/umask.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/mkdirp/test/umask_sync.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/AUTHORS create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/CONTRIBUTING.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/LICENSE-W3C.html create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/README.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/big-not-pretty.xml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/example.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/get-products.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/hello-world.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/not-pretty.xml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/pretty-print.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/shopping.xml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/strict.dtd create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/test.html create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/examples/test.xml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/lib/sax.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/attribute-name.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/attribute-no-space.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/bom.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/buffer-overrun.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/case.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/cdata-chunked.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/cdata-end-split.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/cdata-fake-end.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/cdata-multiple.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/cdata.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/cyrillic.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/duplicate-attribute.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/emoji.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/end_empty_stream.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/entities.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/entity-mega.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/flush.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/issue-23.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/issue-30.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/issue-35.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/issue-47.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/issue-49.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/issue-84.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/issue-86.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/parser-position.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/script-close-better.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/script.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/self-closing-child-strict.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/self-closing-child.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/self-closing-tag.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/stand-alone-comment.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/stray-ending.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/trailing-attribute-no-value.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/trailing-non-whitespace.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/unclosed-root.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/unquoted.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/utf8-split.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xml_entities.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-as-tag-name.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-issue-41.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-rebinding.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-strict.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-unbound-element.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-unbound.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-xml-default-ns.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-xml-default-prefix.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/sax/test/xmlns-xml-default-redefine.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/.npmignore create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/.travis.yml create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/Cakefile create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/History.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/LICENSE create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/Readme.md create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/index.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/lib/whet.extend.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/src/whet.extend.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/test/extend_test.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/test/mocha.opts create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/node_modules/whet.extend/test/test_helper.coffee create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/_collections.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/_path.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/_transforms.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/addClassesToSVGElement.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/cleanupAttrs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/cleanupEnableBackground.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/cleanupIDs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/cleanupListOfValues.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/cleanupNumericValues.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/collapseGroups.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/convertColors.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/convertPathData.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/convertShapeToPath.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/convertStyleToAttrs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/convertTransform.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/mergePaths.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/moveElemsAttrsToGroup.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/moveGroupAttrsToElems.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeAttrs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeComments.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeDesc.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeDimensions.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeDoctype.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeEditorsNSData.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeEmptyAttrs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeEmptyContainers.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeEmptyText.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeHiddenElems.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeMetadata.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeNonInheritableGroupAttrs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeRasterImages.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeTitle.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeUnknownsAndDefaults.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeUnusedNS.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeUselessDefs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeUselessStrokeAndFill.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeViewBox.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/removeXMLProcInst.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/sortAttrs.js create mode 100644 extensions/fablabchemnitz/svgo_output/node_modules/svgo/plugins/transformsWithOnePath.js create mode 100644 extensions/fablabchemnitz/svgo_output/package.json create mode 100644 extensions/fablabchemnitz/svgo_output/svgo.js create mode 100644 extensions/fablabchemnitz/svgo_output/svgo_output.inx create mode 100644 extensions/fablabchemnitz/svgo_output/svgo_output.py create mode 100644 extensions/fablabchemnitz/tab_generator/.gitattributes create mode 100644 extensions/fablabchemnitz/tab_generator/tab_generator.inx create mode 100644 extensions/fablabchemnitz/tab_generator/tab_generator.py create mode 100644 extensions/fablabchemnitz/table_support/base_transform.py create mode 100644 extensions/fablabchemnitz/table_support/table.py create mode 100644 extensions/fablabchemnitz/table_support/table_add_columns.inx create mode 100755 extensions/fablabchemnitz/table_support/table_add_columns.py create mode 100644 extensions/fablabchemnitz/table_support/table_add_guides.inx create mode 100755 extensions/fablabchemnitz/table_support/table_add_guides.py create mode 100644 extensions/fablabchemnitz/table_support/table_add_rows.inx create mode 100755 extensions/fablabchemnitz/table_support/table_add_rows.py create mode 100644 extensions/fablabchemnitz/table_support/table_create.inx create mode 100755 extensions/fablabchemnitz/table_support/table_create.py create mode 100644 extensions/fablabchemnitz/table_support/table_edit_columns.inx create mode 100755 extensions/fablabchemnitz/table_support/table_edit_columns.py create mode 100644 extensions/fablabchemnitz/table_support/table_edit_rows.inx create mode 100755 extensions/fablabchemnitz/table_support/table_edit_rows.py create mode 100644 extensions/fablabchemnitz/table_support/table_edit_table.inx create mode 100755 extensions/fablabchemnitz/table_support/table_edit_table.py create mode 100644 extensions/fablabchemnitz/table_support/table_edit_text.inx create mode 100755 extensions/fablabchemnitz/table_support/table_edit_text.py create mode 100644 extensions/fablabchemnitz/table_support/table_fit_height.inx create mode 100644 extensions/fablabchemnitz/table_support/table_fit_height.py create mode 100644 extensions/fablabchemnitz/table_support/table_fit_page.inx create mode 100644 extensions/fablabchemnitz/table_support/table_fit_page.py create mode 100644 extensions/fablabchemnitz/table_support/table_fit_width.inx create mode 100644 extensions/fablabchemnitz/table_support/table_fit_width.py create mode 100644 extensions/fablabchemnitz/table_support/table_merge_merge.inx create mode 100644 extensions/fablabchemnitz/table_support/table_merge_merge.py create mode 100644 extensions/fablabchemnitz/table_support/table_merge_split.inx create mode 100755 extensions/fablabchemnitz/table_support/table_merge_split.py create mode 100644 extensions/fablabchemnitz/table_support/table_remove_columns.inx create mode 100755 extensions/fablabchemnitz/table_support/table_remove_columns.py create mode 100644 extensions/fablabchemnitz/table_support/table_remove_rows.inx create mode 100755 extensions/fablabchemnitz/table_support/table_remove_rows.py create mode 100644 extensions/fablabchemnitz/travel/travel.inx create mode 100644 extensions/fablabchemnitz/travel/travel.py create mode 100644 extensions/fablabchemnitz/triangular_grid/triangular_grid.inx create mode 100644 extensions/fablabchemnitz/triangular_grid/triangular_grid.py create mode 100644 extensions/fablabchemnitz/tuckbox/tuckbox.inx create mode 100644 extensions/fablabchemnitz/tuckbox/tuckbox.py create mode 100644 extensions/fablabchemnitz/twist/twist.inx create mode 100644 extensions/fablabchemnitz/twist/twist.py create mode 100644 extensions/fablabchemnitz/ungrouper_and_element_migrator_filter/ungrouper_and_element_migrator_filter.inx create mode 100644 extensions/fablabchemnitz/ungrouper_and_element_migrator_filter/ungrouper_and_element_migrator_filter.py create mode 100644 extensions/fablabchemnitz/unwind_paths/unwind_paths.inx create mode 100644 extensions/fablabchemnitz/unwind_paths/unwind_paths.py create mode 100644 extensions/fablabchemnitz/vertical_horizontal_scale/vertical_horizontal_scale.inx create mode 100644 extensions/fablabchemnitz/vertical_horizontal_scale/vertical_horizontal_scale.py create mode 100644 extensions/fablabchemnitz/visicut/open_in_visicut.py create mode 100644 extensions/fablabchemnitz/visicut/open_in_visicut_add.inx create mode 100644 extensions/fablabchemnitz/visicut/open_in_visicut_replace.inx create mode 100644 extensions/fablabchemnitz/vpypetools/vpype_logo.svg create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools.py create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools_filter.inx create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools_freemode.inx create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools_linemerge.inx create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools_linesort.inx create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools_multipass.inx create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools_occult.inx create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools_relooping.inx create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools_splitall.inx create mode 100644 extensions/fablabchemnitz/vpypetools/vpypetools_trim.inx create mode 100644 extensions/fablabchemnitz/x_agram/x_agram.inx create mode 100644 extensions/fablabchemnitz/x_agram/x_agram.py create mode 100644 extensions/fablabchemnitz/zigzag_nodes/zigzag_nodes.inx create mode 100644 extensions/fablabchemnitz/zigzag_nodes/zigzag_nodes.py create mode 100644 extensions/fablabchemnitz/zoetrope/zoetrope.inx create mode 100644 extensions/fablabchemnitz/zoetrope/zoetrope.py diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..c37e9c88 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: ['https://y.stadtfabrikanten.org/donate'] diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..9156c793 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +*.pyc +/.project +/.pydevproject +/.settings/org.eclipse.core.resources.prefs +*.out +extensions/.project +extensions/fablabchemnitz/animate_order/drawing.svg +extensions/fablabchemnitz/animate_order/animate_order.html +extensions/fablabchemnitz/path2flex/DebugPath2Flex.txt +extensions/fablabchemnitz/elliptical_cone_box/DebugEllConicBox.txt +extensions/.pydevproject +extensions/.settings/org.eclipse.core.resources.prefs +extensions/000_Inkscape_Gallery diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..9cecc1d4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 00000000..145ec148 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# MightyScape for Inkscape 1.0+ + +In short: A maintained extension collection for Inkscape 1.0+, working on Windows and Linux. There are **210 extension folders** with **372 .inx files** inside. We also take part at https://inkscape.org/gallery/=extension/ (with single extension uploads). + +# About MightyScape + +Looking to get more productive we started using some more special Inkscape extensions. We love Inkscape. And we love things like 3d printing, laser cutting, vinyl cutting, pen plotting, maths, physics, geometry, patterns, 2D drawings, 3D CAD , embroidery and more stuff. All this you can do with Inkscape! We recognized that there is no good source to pull extensions in a quick and clean way. Each developer puts his own code on his hidden/unknown repository and often without enough documentation or visible results for common understanding. Many plugins are completely unknown that way, and a lot of extensions are forked x times or are unmaintained. So many of them do not work with recent Inkscape or were never tested with newer versions so far. + +# What and why? + +This is a one-to-bundle-them-all collection of hundreds of additional functions to Inkscape (extensions) for the new Python 3 based version 1.X including documentation, made for makers and artists. All plugins where sorted into custom categories (to avoid overloading the standard extension menu of Inkscape). You can find most of them in sub menu "FabLab Chemnitz". We renamed and cleaned a lot of *.inx files and *.py files. We applied some function renamings, id changes (for preferences.xml clean-keeping), spelling fixes, formattings and parameter corrections. + +It took years to search and find all them on the web (so much different possible sources where to find!), to read, to comment (report issues), to fix problems, to test, to document and to provide them online. Many extensions were nearly lost in translation. + +At least this repo will help to bring alife some good things and will show hidden gold. It meshes things together in a fresh and bundled way - with ease of use and minimum installation stress. A lot of code is not at the optimum. A mass of bugs has to be fixed and different tools should be improved in usage generally. This package will show errors more quickly. So hopefully a lot of new code fixes is result from this package. Maybe some people help to make all the stuff compatible with Inkscape 1.0 and newer. + +# Credits / Help to develop + + * This is not a repository to steal the work of others. The credits go to each developer, maintainer, commiter, issue reporter and so on. + * All plugins are open source licensed and are fully compatible to be legally inside this repository. This plugin is a fully non-commercial project too + * All plugins were taken from each git repo's master branch (if git/svn available). There might exist some development branches, fork branches or issue comments which might resolve some issues or enhance functionality of provided plugins. To check for recent github forks use https://techgaun.github.io + * A lot of plugins were fixed by ourselves in countless hours + * If you find bugs or have ideas please push them directly to the corresponding root repository of the developer or put it to https://github.com/vmario89/mightyscape-1.X/issues + * Credits for creation of this big package: Mario Voigt / FabLab Chemnitz + +# Used software for development + + * Gitea and Github for hosting this + * GitEye and SourceTree git frontends for commiting + * LiClipse and NotePad++ for code + * regular Python installation (both Linux and Windows) + +# Requirements / Tested environment + + * tested with Inkscape + * Windows portable Version (Inkscape 1.2-dev (25cba68, 2021-05-16)) @ Windows 10 + * Linux dev trunk (https://inkscape.org/de/release/inkscape-master/gnulinux/ubuntu/ppa/dl/) @ Ubuntu 20 LTS + * tested using Python 3.8.5 64 Bit and 3.9.4 64 Bit + * some extensions require custom Python installation/modules. See documentation at our FabLab Chemnitz Wiki (see below). + * some extensions require additional commands, packages or other installers (see documentation too). + * the structure of this repo is intended the following way: all extensions which require exactly one *.py and one *.inx file are kept on the top level /mightyscape-1.X/extensions/fablabchemnitz. So just copy them to your Inkscape's extension directory. All extension which require additional libraries have their own sub directory. You will find redundancies in this repo like node.exe (NodeJS). We did it this way to give easy possibilty to only pick the extensions you want (instead creating ~200 repositories). + +# Remaining ToDos + + * clean code + * make more precise documentation with more examples + * check out command line handling of extension. This was totally ignored yet + +# Installation, documentation and examples + +MightyScape does not work with any releases or feature branches. Just use "git clone" to get the recent commit from master branch. + +Please see at https://y.stadtfabrikanten.org/mightyscape-overview for installation tips like required python modules, file locations and other adjustments. + +# Donate + + + +We are the Stadtfabrikanten, running the FabLab Chemnitz since 2016. A FabLab is an open workshop that gives people access to machines and digital tools like 3D printers, laser cutters and CNC milling machines. + +You like our work and want to support us? You can donate to our non-profit organization by different ways: +https://y.stadtfabrikanten.org/donate + +**Thanks for using our extension and helping us!** + +# Locations + +This repo has two remotes: +* https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X (root repo origin) +* https://github.com/vmario89/mightyscape-1.X (repo for collaboration. You can create your issues here. Active since May 2021) diff --git a/extensions/fablabchemnitz/000_about_fablabchemnitz.svg b/extensions/fablabchemnitz/000_about_fablabchemnitz.svg new file mode 100644 index 00000000..df967f89 --- /dev/null +++ b/extensions/fablabchemnitz/000_about_fablabchemnitz.svg @@ -0,0 +1,110 @@ + + + + + + + diff --git a/extensions/fablabchemnitz/000_validate.sh b/extensions/fablabchemnitz/000_validate.sh new file mode 100755 index 00000000..7b8e0cf8 --- /dev/null +++ b/extensions/fablabchemnitz/000_validate.sh @@ -0,0 +1,63 @@ +#!/bin/bash +echo "Validating inx files with xmllint. Only errors are printed to console" +for folder in */ ; do xmllint --noout --relaxng ./inkscape.extension.rng $folder*.inx > /dev/null 2>> 000_xmllint.out; done; grep -v "validates\|warning: failed to load external entity" 000_xmllint.out; rm 000_xmllint.out + + +echo "Count of inx files:" +INX=$(find ./ -type f -name "*.inx" | wc -l) +echo INX: $INX + +echo "Count of extension folders:" +FOLDERS=$(ls -d */ | wc -l) +echo FOLDERS: $FOLDERS + +README="../../README.md" +#replace values in README.md +sed -i 's/\*\*.* extension folders\*\*/\*\*'${FOLDERS}' extension folders\*\*/g' ${README} +sed -i 's/\*\* with .* \.inx files\*\*/\*\* with \*\*'${INX}' \.inx files\*\*/g' ${README} + +echo "Removing unrequired pyc cache files" +find . -type d -name "__pycache__" -exec rm -rf {} \; + +read -p "Build local gallery extension zip files?" -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + echo "Building Inkscape gallery extension zip files" + TARGETDIR="../000_Inkscape_Gallery" + mkdir -p $TARGETDIR > /dev/null + + #list of extensions which are uploaded at Inkscape gallery by us at the moment + for EXTENSION in \ + "animate_order" \ + "cleanup_styles" \ + "contour_scanner_and_trimmer" \ + "convert_to_polylines" \ + "create_links" \ + "dxf2papercraft" \ + "dxf_dwg_importer" \ + "imagetracerjs" \ + "inventory_sticker" \ + "move_path_node" \ + "remove_empty_groups" \ + "offset_paths" \ + "papercraft_unfold" \ + "paperfold" \ + "primitive" \ + "slic3r_stl_input" \ + "split_and_break_bezier_at_t" \ + "styles_to_layers" \ + "ungrouper_and_element_migrator_filter" \ + "unwind_paths" \ + "vpypetools" + do + EXTRA="" + if [[ $EXTENSION == "styles_to_layers" ]] || [[ $EXTENSION == "ungrouper_and_element_migrator_filter" ]]; then + EXTRA="${EXTRA} apply_transformations/" + elif [[ $EXTENSION == "styles_to_layers" ]] || [[ $EXTENSION == "ungrouper_and_element_migrator_filter" ]]; then + EXTRA="${EXTRA} remove_empty_groups/" + fi + ZIPFILE=$TARGETDIR/$EXTENSION.zip + rm $ZIPFILE > /dev/null + zip -r $ZIPFILE $EXTENSION/ 000_about_fablabchemnitz.svg $EXTRA + done +fi diff --git a/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.inx b/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.inx new file mode 100644 index 00000000..ea91f80a --- /dev/null +++ b/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.inx @@ -0,0 +1,43 @@ + + + About/Upgrade MightyScape + fablabchemnitz.de.about_upgrade_mightyscape + + + false + false + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + all + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.py b/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.py new file mode 100644 index 00000000..45cc83c5 --- /dev/null +++ b/extensions/fablabchemnitz/about_upgrade_mightyscape/about_upgrade_mightyscape.py @@ -0,0 +1,160 @@ +#!/usr/bin/env python3 + +""" +Upgrade MightyScape from Inkscape Extension Dialog. Made for end users + +Extension for InkScape 1.X +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 14.05.2021 +Last patch: 23.07.2021 +License: GNU GPL v3 + +ToDo + - enable stash option + - add while loop to list all remoteCommits by jumping from parent to parent + - add option to create/init .git repo from zip downloaded MightyScape version (to enable upgrader) if no .git dir was found +""" + +import inkex +import os +import warnings +from datetime import datetime +try: + import git + from git import Repo #requires GitPython lib +except: + inkex.utils.debug("Error. GitPython was not installed but is required to run the upgrade process!") + exit(1) + +class AboutUpgradeMightyScape(inkex.EffectExtension): + + def update(self, local_repo, remote): + try: + localCommit = local_repo.head.commit + remote_repo = git.remote.Remote(local_repo, 'origin') + remoteCommit = remote_repo.fetch()[0].commit + self.msg("Latest remote commit is: " + str(remoteCommit)[:7]) + + if localCommit.hexsha != remoteCommit.hexsha: + ssh_executable = 'git' + with local_repo.git.custom_environment(GIT_SSH=ssh_executable): + origin = local_repo.remotes.origin + origin.fetch() + + fetch_info = origin.pull() #finally pull new data + for info in fetch_info: #should return only one line in total + inkex.utils.debug("Updated %s to commit id %s" % (info.ref, str(info.commit)[:7])) + + inkex.utils.debug("Please restart Inkscape to let the changes take effect.") + + else: + inkex.utils.debug("Nothing to do! MightyScape is already up to date!") + + except git.exc.GitCommandError as e: + self.msg("Error: ") + self.msg(e) + return False + return True + + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--convert_to_git", type=inkex.Boolean, default=False, help="If you downloaded MightyScape as .zip or .tar.gz you cannot upgrade using this extension. But you can convert your downloaded directory to a .git one by enabling this option") + pars.add_argument("--stash_untracked", type=inkex.Boolean, default=False, help="Stash untracked files and continue to upgrade") + + + def effect(self): + warnings.simplefilter('ignore', ResourceWarning) #suppress "enable tracemalloc to get the object allocation traceback" + + #get the directory of mightyscape + extension_dir = os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), '../')) #go up to main dir /home//.config/inkscape/extensions/mightyscape-1.X/ + main_dir = os.path.abspath(os.path.join(extension_dir, '../../')) #go up to main dir /home//.config/inkscape/extensions/mightyscape-1.X/ + + #create some statistics + totalFolders = 0 + for root, folders, files in os.walk(extension_dir): + totalFolders += len(folders) + break #prevent descending into subfolders + + totalInx = 0 + for root, folders, files in os.walk(extension_dir): + for file in files: + if file.endswith('.inx'): + totalInx += 1 + + inkex.utils.debug("Locally there are {} extension folders with {} .inx files!\n".format(totalFolders, totalInx)) + + remotes = [] + remotes.append(["https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X.git", "origin"]) #main + remotes.append(["https://github.com/vmario89/mightyscape-1.X.git", "github"]) #copy/second remote + + gitDir = os.path.join(main_dir, ".git") + if not os.path.exists(gitDir): + if self.options.convert_to_git is True: + local_repo = Repo.init(main_dir) + local_repo.git.add(all=True) + localRemotes = [] + for remote in remotes: + localRemotes.append(local_repo.create_remote(remote[1], url=remote[0])) + localRemotes[0].update() + local_repo.index.commit('.') + if self.options.stash_untracked is True: + local_repo.git.stash('save') + local_repo.git.checkout('origin/master') + #git init + #git add . + #git remote add origin https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X.git + #git remote add github https://github.com/vmario89/mightyscape-1.X.git + #git remote update + #git commit -m "." + #git stash + #git checkout origin/master + else: + self.msg("MightyScape .git directory was not found. It seems you installed MightyScape the traditional way (by downloading and extracting from archive). Please install MightyScape using the git clone method if you want to use the upgrade function. More details can be found in the official README.") + exit(1) + + local_repo = Repo(gitDir) + #check if it is a non-empty git repository + if local_repo.bare is False: + if local_repo.is_dirty(untracked_files=True) is False: + if len(local_repo.untracked_files) > 0: + if self.options.stash_untracked is True: + local_repo.git.stash('save') + else: + inkex.utils.debug("There are some untracked files in your MightyScape directory. Still trying to pull recent files from git...") + + localLatestCommit = local_repo.head.commit + localCommits = list(local_repo.iter_commits("origin/master", max_count=10, skip=0)) + self.msg("Local commit id is: " + str(localLatestCommit)[:7]) + self.msg("There are {} local commits at the moment.".format(len(localCommits))) + localCommitList = [] + for localCommit in localCommits: + localCommitList.append(localCommit) + #localCommitList.reverse() + self.msg("*"*40) + self.msg("Latest local commits are:") + for i in range(0, len(localCommits)): + self.msg("{} | {} : {}".format( + datetime.utcfromtimestamp(localCommitList[i].committed_date).strftime('%Y-%m-%d %H:%M:%S'), + localCommitList[i].name_rev[:7], + localCommitList[i].message.strip()) + ) + #self.msg(" - {}: {}".format(localCommitList[i].newhexsha[:7], localCommitList[i].message)) + self.msg("*"*40) + + #finally run the update + success = self.update(local_repo, remotes[0][0]) + if success is False: #try the second remote if first failed + self.msg("Error receiving latest remote commit from main git remote {}. Trying second remote ...".format(remotes[0][0])) + success = self.update(local_repo, remotes[1][0]) + if success is False: #if still false: + self.msg("Error receiving latest remote commit from second git remote {}.\nAre you offline? Cannot continue!".format(remotes[0][0])) + exit(1) + + else: + inkex.utils.debug("No \".git\" directory found. Seems your MightyScape was not installed with git clone. Please see documentation on how to do that.") + exit(1) + +if __name__ == '__main__': + AboutUpgradeMightyScape().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/affine_spirals/affine_spirals.inx b/extensions/fablabchemnitz/affine_spirals/affine_spirals.inx new file mode 100644 index 00000000..5b92ba53 --- /dev/null +++ b/extensions/fablabchemnitz/affine_spirals/affine_spirals.inx @@ -0,0 +1,23 @@ + + + Affine Spirals + fablabchemnitz.de.affine_spirals + + + 3 + 2 + 0.8 + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/affine_spirals/affine_spirals.py b/extensions/fablabchemnitz/affine_spirals/affine_spirals.py new file mode 100644 index 00000000..e7fcd7ed --- /dev/null +++ b/extensions/fablabchemnitz/affine_spirals/affine_spirals.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 + +import inkex +from lxml import etree +from math import cos, sin, pi, exp +__version__ = '0.1' + +def line(npts=40, x0=0, y0=0, delta=.5, sgn=1): + #returns a list of points on a line (y = +/- x + c) starting at x0,y0 + return [ (x0 + delta*t, y0 + sgn*delta*t) for t in range(npts)] + +def ff(v, ww=.25, ds=.4): + #covering map from R^2 ro punctured plane + x,y = v + r,u = exp(-ds*x), cos(pi*ww*y) + 1J*sin(pi*ww*y) + return r*u + +def mk_plugs(pts): + #returns a list of complex representing a plug type segment + segs = [fit_plug(end_pts) for end_pts in zip(pts,pts[1:]) ] + tmp = [] + for seg in segs: + tmp.extend(seg) + return tmp + +def fit_plug(ss): + a,b = ss + rot = complex(b-a) + pts = [0,.45,.4 + .15*1J, .6 + .15*1J, .55, 1] + return [rot*z + a for z in pts] + +def pts2curve(cplxs): + '''makes a polyline path element from a list of complex + ''' + def cplx2pt(z): + return (z.real,z.imag) + + scale = 200 + data = [cplx2pt( scale*z ) for z in cplxs ] + pth = [ '%.2f, %.2f '%z for z in data] + return 'M '+ ''.join(pth) + +class AffineSpirals(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--num_lines", type=int, default=3) + pars.add_argument("--num_petals", type=int, default=3) + pars.add_argument("--shrink_ratio", type=float, default=3) + pars.add_argument("--active-tab", default='title') + + def calc_unit_factor(self): + unit_factor = self.svg.unittouu(str(1.0) + self.options.units) + return unit_factor + + def effect(self): + path_stroke = '#DD0000' # take color from tab3 + path_fill = 'none' # no fill - just a line + path_stroke_width = 1. # can also be in form '0.6mm' + page_id = self.options.active_tab # sometimes wrong the very first time + + styles = [ {'stroke': path_stroke , 'fill': 'none', 'stroke-width': path_stroke_width}, + {'stroke': 'none', 'fill': '#FFFF00', 'stroke-width': 0}] + + styles = [str(inkex.Style(x)) for x in styles] + + # This finds center of current view in inkscape + t = 'translate(%s,%s)' % (self.svg.namedview.center[0], self.svg.namedview.center[1]) + + # Make a nice useful name + g_attribs = {inkex.addNS('label','inkscape'): 'koch', + inkex.addNS('transform-center-x','inkscape'): str(0), + inkex.addNS('transform-center-y','inkscape'): str(0), + 'transform': t, + 'style' : styles[1], + 'info':'N: '+str(self.options.num_lines) } + topgroup = etree.SubElement(self.svg.get_current_layer(), 'g', g_attribs) + + NN = 2*self.options.num_lines + NP = self.options.num_petals + SF = 2*self.options.shrink_ratio + + payload = [] + for y in range(-NP,NP): + mpts = [ff(z,ww=1./NP, ds=SF) for z in line(npts=NN, y0=y)] + payload.append(mk_plugs(mpts)) + mpts = [ff(z,ww=1./NP, ds=SF) for z in line(npts=NN, y0=y,sgn=-1 )] + payload.append(mk_plugs(mpts)) + + payload = [pts2curve(cc) for cc in payload] + payload = ' '.join(payload) + + curve_attribs = { 'style': styles[0], 'd': payload} + etree.SubElement(topgroup, inkex.addNS('path','svg'), curve_attribs) + +if __name__ == '__main__': + AffineSpirals().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.inx b/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.inx new file mode 100644 index 00000000..07a59481 --- /dev/null +++ b/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.inx @@ -0,0 +1,14 @@ + + + AI compatible EPS output + fablabchemnitz.de.ai_compatible_eps_output + + .eps + application/eps + Encapsulated PostScript - AI compatible (*.eps) + Adobe Illustrator 7 compatible EPS + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.py b/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.py new file mode 100644 index 00000000..e1ccbc89 --- /dev/null +++ b/extensions/fablabchemnitz/ai_compatible_eps_output/ai_compatible_eps_output.py @@ -0,0 +1,1183 @@ +#!/usr/bin/env python +""" +Mainly written by Andras Prim github_at_primandras.hu + +Arc to bezier converting method is ported from: +http://code.google.com/p/core-framework/source/browse/trunk/plugins/svg.js +written by Angel Kostadinov, with MIT license +""" + +try: + from lxml import etree as ET +except Exception: + import xml.etree.ElementTree as ET + +import re +import math + +def wrap(text, width): + """ A word-wrap function that preserves existing line breaks """ + retstr = "" + for word in text.split(' '): + if len(retstr)-retstr.rfind('\n')-1 + len(word.split('\n',1)[0]) >= width: + retstr += ' \n' + word + else: + retstr += ' ' + word + return retstr + +def css2dict(css): + """returns a dictionary representing the given css string""" + cssdict = {} + if None == css: + return cssdict + for pair in css.split(';'): #TODO: what about escaped separators + if pair.find(':') >= 0: + key, value = pair.split(':') + cssdict[ key.strip() ] = value.strip() + return cssdict + +def cssColor2Eps(cssColor, colors='RGB'): + """converts css color definition (a hexa code with leading # or 'rgb()') + to eps color definition""" + if '#' == cssColor[0]: + r = float(int(cssColor[1:3],16)) / 255 + g = float(int(cssColor[3:5],16)) / 255 + b = float(int(cssColor[5:7],16)) / 255 + else: + # assume 'rgb()' color + rgb = re.sub('[^0-9]+', ' ', cssColor).strip().split() + r = float(int(rgb[0], 10)) / 255 + g = float(int(rgb[1], 10)) / 255 + b = float(int(rgb[2], 10)) / 255 + + if colors == 'RGB': + return "%f %f %f" % (r, g, b) + elif colors == 'CMYKRGB': + if (r == 0) and (g == 0) and (b == 0): + c = 0 + m = 0 + y = 0 + k = 1 + else: + c = 1 - r + m = 1 - g + y = 1 - b + + # extract out k [0,1] + min_cmy = min(c, m, y) + c = (c - min_cmy) / (1 - min_cmy) + m = (m - min_cmy) / (1 - min_cmy) + y = (y - min_cmy) / (1 - min_cmy) + k = min_cmy + + return "%f %f %f %f %f %f %f" % (c, m, y, k, r, g, b) + +class svg2eps: + def __init__(self, filename=None): + self.filename = filename + self.svg = None + self.rePathDSplit = re.compile('[^a-zA-Z0-9.-]+') + self.reTransformFind = re.compile('([a-z]+)\\(([^)]+)\\)') + self.reNumberFind = re.compile('[0-9.eE+-]+') + # must update reNumberUnitFind, if e is a valid character in a unit + self.reNumberUnitFind = re.compile('([0-9.eE+-]+)([a-z]*)') + # px to pt conversion rate varies based on inkscape versions, it is added during parsing + self.toPt = {'in': 72.0, 'pt': 1.0, 'mm': 2.8346456695, 'cm': 28.346456695, 'm': 2834.6456695, 'pc': 12.0} + + def unitConv(self, string, toUnit): + match = self.reNumberUnitFind.search(string) + number = float(match.group(1)) + unit = match.group(2) + if unit not in self.toPt: + unit = 'uu' + + if unit == toUnit: + return number + else: + return number * self.toPt[unit] / self.toPt[toUnit] + + def lengthConv(self, svgLength): + """converts svgLength to eps length using the current transformation matrix""" + matrix = self.matrices[-1] + epsx = matrix[0] * svgLength + epsy = matrix[1] * svgLength + + return math.sqrt(epsx*epsx + epsy*epsy) + + def coordConv(self, svgx, svgy, relative=False): + """converts svgx, svgy coordinates to eps coordinates using the current transformation matrix""" + if relative: + svgx = float(svgx) + self.curPoint[0] + svgy = float(svgy) + self.curPoint[1] + else: + svgx = float(svgx) + svgy = float(svgy) + matrix = self.matrices[-1] + epsx = matrix[0] * svgx + matrix[2] * svgy + matrix[4] + epsy = matrix[1] * svgx + matrix[3] * svgy + matrix[5] + + return (epsx, epsy) + + def matrixMul(self, matrix, matrix2): + """multiplies matrix with matrix2""" + matrix0 = matrix[:] + matrix[0] = matrix0[0] * matrix2[0] + matrix0[2]*matrix2[1] # + matrix0[4]*0 + matrix[1] = matrix0[1] * matrix2[0] + matrix0[3]*matrix2[1] # + matrix0[5]*0 + matrix[2] = matrix0[0] * matrix2[2] + matrix0[2]*matrix2[3] # + matrix0[4]*0 + matrix[3] = matrix0[1] * matrix2[2] + matrix0[3]*matrix2[3] # + matrix0[5]*0 + matrix[4] = matrix0[0] * matrix2[4] + matrix0[2]*matrix2[5] + matrix0[4] + matrix[5] = matrix0[1] * matrix2[4] + matrix0[3]*matrix2[5] + matrix0[5] + + + def alert(self, string, elem): + """adds an alert to the collection""" + if not string in self.alerts: + self.alerts[string] = set() + elemId = elem.get('id') + if elemId != None: + self.alerts[string].add(elemId) + + def showAlerts(self): + """show alerts collected by the alert() function""" + for string, ids in self.alerts.iteritems(): + idstring = ', '.join(ids) + print(string, idstring) + + def elemSvg(self, elem): + """handles the element""" + # DPI changed in inkscape 0.92, so set the px-to-pt rate based on inkscape version + self.toPt['px'] = 0.75 + inkscapeVersionString = elem.get('{http://www.inkscape.org/namespaces/inkscape}version', '0.92.0') + mobj = re.match(r'(\d+)\.(\d+)', inkscapeVersionString) + if mobj != None: + major = int(mobj.group(1)) + minor = int(mobj.group(2)) + if major == 0 and minor < 92: + self.toPt['px'] = 0.8 + + # by default (without viewbox definition) user unit = pixel + self.toPt['uu'] = self.toPt['px'] + self.docWidth = self.unitConv(elem.get('width'), 'pt') + self.docHeight = self.unitConv(elem.get('height'), 'pt') + + viewBoxString = elem.get('viewBox') + if viewBoxString != None: + viewBox = viewBoxString.split(' ') + # theoretically width and height scaling factor could be different, + # but this script does not support it + widthUu = float(viewBox[2]) - float(viewBox[0]) + self.toPt['uu'] = self.docWidth / widthUu + + # transform svg units to eps default pt + scale = self.toPt['uu'] + self.matrices = [ [scale, 0, 0, -scale, 0, self.docHeight] ] + + + def gradientFill(self, elem, gradientId): + """constructs a gradient instance definition in self.gradientOp""" + if gradientId not in self.gradients: + self.alert("fill gradient not defined: "+gradientId, elem ) + return + gradient = self.gradients[gradientId] + transformGradient = gradient + while 'href' in gradient: + gradientId = gradient['href'] + gradient = self.gradients[gradientId] + if 'matrix' in transformGradient: + self.matrices.append( self.matrices[-1][:] ) + self.matrixMul(self.matrices[-1],transformGradient['matrix']) + + if 'linear' == transformGradient['type']: + gradient['linUseCount'] += 1 + x1, y1 = self.coordConv(transformGradient['x1'], transformGradient['y1']) + x2, y2 = self.coordConv(transformGradient['x2'], transformGradient['y2']) + deltax = x2 - x1 + deltay = y2 - y1 + length = math.sqrt( deltax*deltax + deltay*deltay ) + angle = math.atan2(deltay, deltax)*180/math.pi + + elif 'radial' == transformGradient['type']: + gradient['radUseCount'] += 1 + cx, cy = self.coordConv(transformGradient['cx'], transformGradient['cy']) + # fx, fy = self.coordConv(transformGradient['fx'], transformGradient['fy']) + rx, ry = self.coordConv(transformGradient['cx'] + transformGradient['r'], transformGradient['cy']) + r = math.sqrt( (rx-cx)*(rx-cx) + (ry-cy)*(ry-cy)) + + if 'matrix' in transformGradient: + self.matrices.pop() + + + if 'linear' == transformGradient['type']: + #endPathSegment() will substitute appropriate closeOp in %%s + self.gradientOp = "\nBb 1 (l_%s) %f %f %f %f 1 0 0 1 0 0 Bg %%s 0 BB" % \ + (gradientId, x1, y1, angle, length) + elif 'radial' == transformGradient['type']: + self.gradientOp = "\nBb 1 (r_%s) %f %f 0 %f 1 0 0 1 0 0 Bg %%s 0 BB" % \ + (gradientId, cx, cy, r) + self.alert("radial gradients will appear circle shaped", elem) + + + + def pathStyle(self, elem): + """handles the style attribute in svg element""" + if self.clipPath: + self.closeOp = 'h n' + return + + css = self.cssStack[-1] + if 'stroke' in css and css['stroke'] != 'none': + self.closeOp = 's' + self.pathCloseOp = 's' + if '#' == css['stroke'][0] or 'rgb' == css['stroke'][0:3]: + self.epspath += ' ' + cssColor2Eps(css['stroke']) + ' XA' + elif 'url' == css['stroke'][0:3]: + self.alert("gradient strokes not supported", elem) + if 'fill' in css and css['fill'] != 'none': + if self.closeOp == 's': + self.closeOp = 'b' + else: + self.closeOp = 'f' + if '#' == css['fill'][0] or 'rgb' == css['fill'][0:3]: + self.epspath += ' ' + cssColor2Eps(css['fill']) + ' Xa' + elif 'url' == css['fill'][0:3]: + self.gradientFill(elem, css['fill'][5:-1]) + + + if 'fill-rule' in css: + if css['fill-rule'] == 'evenodd': + self.epspath += " 1 XR" + else: + self.epspath += " 0 XR" + if 'stroke-width' in css: + self.epspath += " %f w" % (self.lengthConv(self.unitConv(css['stroke-width'], 'uu')), ) + if 'stroke-linecap' in css: + if css['stroke-linecap'] == 'butt': + self.epspath += " 0 J" + elif css['stroke-linecap'] == 'round': + self.epspath += " 1 J" + elif css['stroke-linecap'] == 'square': + self.epspath += " 2 J" + if 'stroke-linejoin' in css: + if css['stroke-linejoin'] == 'miter': + self.epspath += " 0 j" + elif css['stroke-linejoin'] == 'round': + self.epspath += " 1 j" + elif css['stroke-linejoin'] == 'bevel': + self.epspath += " 2 j" + if 'stroke-miterlimit' in css: + self.epspath += " " + css['stroke-miterlimit'] + " M" + if 'stroke-dasharray' in css: + phase = 0 + if css['stroke-dasharray'] == 'none': + dashArray = [] + if css['stroke-dasharray'] != 'none': + dashArrayIn = css['stroke-dasharray'].replace(',', ' ').split() + dashArray = list(map(lambda x: "%f" % (x,), filter(lambda x: x > 0, map(lambda x: self.lengthConv(float(x)), dashArrayIn)))) + if 'stroke-dashoffset' in css: + phase = float(css['stroke-dashoffset']) + + self.epspath += ' [ %s ] %f d' % (' '.join(dashArray), phase) + + + + def endPathSegment(self, elem): + """should be called when a path segment end is reached in a element""" + if self.removeStrayPoints and self.segmentCommands <= 1: + self.alert("removing stray point", elem) + self.epspath = self.epspath[:self.segmentStartIndex] + return + if self.autoClose and (self.closeOp == 'f' or self.closeOp == 'b'): + autoClose = True + else: + autoClose = False + + if self.pathExplicitClose or autoClose: + closeOp = self.closeOp + else: + closeOp = self.closeOp.upper() + + if self.pathCurSegment == self.pathSegmentNum and self.gradientOp != None: + closeOp = self.gradientOp % (closeOp,) + + if self.lastBegin != None: + if (self.pathExplicitClose or autoClose): + if abs(self.curPoint[0] - self.lastBegin[0]) + \ + abs(self.curPoint[1] - self.lastBegin[1]) > self.closeDist: + x, y = self.coordConv(self.lastBegin[0], self.lastBegin[1]) + self.epspath += ' %f %f l' % (x, y) + + self.epspath += ' ' + closeOp + '\n' + + if self.pathExplicitClose: + self.curPoint = self.lastBegin + + self.lastBegin = None + + def elemPath(self, elem, pathData=None): + """handles svg element""" + if None == pathData: + pathData = elem.get('d') + self.pathSegmentNum = pathData.count("m") + pathData.count("M") + self.pathCurSegment = 0 + self.epspath = '' + self.segmentStartIndex = 0 # index in self.epspath of first character of current path segment + self.segmentCommands = 0 # number of handled commands (including first moveto) in current paths segment + self.closeOp = 'n' # pathStyle(elem) will modify this + self.gradientOp = None + self.pathExplicitClose = False + if elem.get('id'): + self.epspath += '\n%AI3_Note: ' + elem.get('id') + '\n' + + self.pathStyle(elem) + + tokens = self.rePathDSplit.split(pathData) + i = 0 + cmd = '' # path command + self.curPoint = (0,0) + self.lastBegin = None + + while i < len(tokens): + token = tokens[i] + if token in ['m', 'M', 'c', 'C', 'l', 'L', 'z', 'Z', 'a', 'A', 'q', 'Q', 'h', 'H', 'v', 'V']: + cmd = token + i += 1 + elif token.isalpha(): + self.alert('unhandled path command: %s' % (token,), elem) + cmd = '' + i += 1 + else: # coordinates after a moveto are assumed to be lineto + if 'm' == cmd: + cmd = 'l' + elif 'M' == cmd: + cmd = 'L' + + if ('M' == cmd or 'm' == cmd) : + if self.pathCurSegment > 0: + self.endPathSegment(elem) + self.pathCurSegment += 1 + self.pathExplicitClose = False + + if 'M' == cmd or 'm' == cmd: + if 'M' == cmd or ('m' == cmd and i == 1): + self.curPoint = (float(tokens[i]), float(tokens[i+1])) + else: + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + + self.segmentStartIndex = len(self.epspath) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.lastBegin = self.curPoint + self.epspath += ' m' + self.segmentCommands = 1 + elif 'L' == cmd or 'l' == cmd: + if 'L' == cmd: + self.curPoint = (float(tokens[i]), float(tokens[i+1])) + else: + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.epspath += ' l' + self.segmentCommands += 1 + elif cmd in ['H', 'h', 'V', 'v']: + if 'H' == cmd: + self.curPoint = (float(tokens[i]), self.curPoint[1]) + elif 'h' == cmd: + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1]) + elif 'V' == cmd: + self.curPoint = (self.curPoint[0], float(tokens[i])) + elif 'v' == cmd: + self.curPoint = (self.curPoint[0], self.curPoint[1] + float(tokens[i])) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 1 + self.epspath += ' l' + self.segmentCommands += 1 + elif 'C' == cmd: + for j in range(2): + x, y = self.coordConv(tokens[i], tokens[i+1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.curPoint = (float(tokens[i]), float(tokens[i+1])) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.epspath += ' c' + self.segmentCommands += 1 + elif 'c' == cmd: + for j in range(2): + x, y = self.coordConv(self.curPoint[0] + float(tokens[i]), self.curPoint[1] +float(tokens[i+1])) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + x, y = self.coordConv(self.curPoint[0], self.curPoint[1]) + self.epspath += ' %f %f' % (x, y) + i += 2 + self.epspath += ' c' + self.segmentCommands += 1 + elif 'Q' == cmd: + #export quadratic Bezier as cubic + qx0, qy0 = self.coordConv(self.curPoint[0], self.curPoint[1]) + qx1, qy1 = self.coordConv(float(tokens[i]), float(tokens[i+1])) + i += 2 + self.curPoint = (float(tokens[i]), float(tokens[i+1])) + qx2, qy2 = self.coordConv(self.curPoint[0], self.curPoint[1]) + factor = 2.0 / 3.0 + cx1 = qx0 + factor * (qx1 - qx0) + cy1 = qy0 + factor * (qy1 - qy0) + cx2 = qx2 - factor * (qx2 - qx1) + cy2 = qy2 - factor * (qy2 - qy1) + self.epspath += ' %f %f %f %f' % (cx1, cy1, cx2, cy2) + self.epspath += ' %f %f' % (qx2, qy2) + i += 2 + self.epspath += ' c' + self.segmentCommands += 1 + elif 'q' == cmd: + qx0, qy0 = self.coordConv(self.curPoint[0], self.curPoint[1]) + qx1, qy1 = self.coordConv(self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + i += 2 + self.curPoint = (self.curPoint[0] + float(tokens[i]), self.curPoint[1] + float(tokens[i+1])) + qx2, qy2 = self.coordConv(self.curPoint[0], self.curPoint[1]) + factor = 2.0 / 3.0 + cx1 = qx0 + factor * (qx1 - qx0) + cy1 = qy0 + factor * (qy1 - qy0) + cx2 = qx2 - factor * (qx2 - qx1) + cy2 = qy2 - factor * (qy2 - qy1) + self.epspath += ' %f %f %f %f' % (cx1, cy1, cx2, cy2) + self.epspath += ' %f %f' % (qx2, qy2) + i += 2 + self.epspath += ' c' + self.segmentCommands += 1 + elif 'A' == cmd or 'a' == cmd: + self.alert("elliptic arcs are converted to bezier curves", elem) + +# Angel Kostadinov begin + r1 = abs(float(tokens[i])) + r2 = abs(float(tokens[i+1])) + psai = float(tokens[i+2]) + largeArcFlag = int(tokens[i + 3]) + fS = int(tokens[i+4]) + rx = self.curPoint[0] + ry = self.curPoint[1] + if 'A' == cmd: + cx, cy = (float(tokens[i+5]), float(tokens[i+6])) + else: + cx, cy = (self.curPoint[0] +float(tokens[i+5]), self.curPoint[1] +float(tokens[i+6])) + + if r1 > 0 and r2 > 0: + ctx = (rx - cx) / 2 + cty = (ry - cy) / 2 + cpsi = math.cos(psai*math.pi/180) + spsi = math.sin(psai*math.pi/180) + rxd = cpsi*ctx + spsi*cty + ryd = -1*spsi*ctx + cpsi*cty + rxdd = rxd * rxd + rydd = ryd * ryd + r1x = r1 * r1 + r2y = r2 * r2 + lamda = rxdd/r1x + rydd/r2y + + if lamda > 1: + r1 = math.sqrt(lamda) * r1 + r2 = math.sqrt(lamda) * r2 + sds = 0 + else: + seif = 1 + if largeArcFlag == fS: + seif = -1 + sds = seif * math.sqrt((r1x*r2y - r1x*rydd - r2y*rxdd) / (r1x*rydd + r2y*rxdd)) + + txd = sds*r1*ryd / r2 + tyd = -1 * sds*r2*rxd / r1 + tx = cpsi*txd - spsi*tyd + (rx+cx)/2 + ty = spsi*txd + cpsi*tyd + (ry+cy)/2 + rad = math.atan2((ryd-tyd)/r2, (rxd-txd)/r1) - math.atan2(0, 1) + if rad >= 0: + s1 = rad + else: + s1 = 2 * math.pi + rad + rad = math.atan2((-ryd-tyd)/r2, (-rxd-txd)/r1) - math.atan2((ryd-tyd)/r2, (rxd-txd)/r1) + if rad >= 0: + dr = rad + else: + dr = 2 * math.pi + rad + + if fS==0 and dr > 0: + dr -= 2*math.pi + elif fS==1 and dr < 0: + dr += 2*math.pi + + sse = dr * 2 / math.pi + if sse < 0: + seg = math.ceil(-1*sse) + else: + seg = math.ceil(sse) + segr = dr / seg + t = 8.0/3.0 * math.sin(segr/4) * math.sin(segr/4) / math.sin(segr/2) + cpsir1 = cpsi * r1 + cpsir2 = cpsi * r2 + spsir1 = spsi * r1 + spsir2 = spsi * r2 + mc = math.cos(s1) + ms = math.sin(s1) + x2 = rx - t * (cpsir1*ms + spsir2*mc) + y2 = ry - t * (spsir1*ms - cpsir2*mc) + + for n in range(int(math.ceil(seg))): + s1 += segr + mc = math.cos(s1) + ms = math.sin(s1) + + x3 = cpsir1*mc - spsir2*ms + tx + y3 = spsir1*mc + cpsir2*ms + ty + dx = -t * (cpsir1*ms + spsir2*mc) + dy = -t * (spsir1*ms - cpsir2*mc) + + cx1, cy1 = self.coordConv(x2,y2) + cx2, cy2 = self.coordConv(x3-dx,y3-dy) + cx3, cy3 = self.coordConv(x3,y3) + + self.epspath += " %f %f %f %f %f %f c" % (cx1, cy1, cx2, cy2, cx3, cy3) + + x2 = x3 + dx + y2 = y3 + dy + else: + # case when one radius is zero: this is a simple line + x, y = self.coordConv(cx, cy) + self.epspath += ' %f %f l' % (x, y) + +# Angel Kostadinov end + self.segmentCommands += 1 + i += 7 + self.curPoint= (cx, cy) + + elif 'z' == cmd or 'Z' == cmd: + self.pathExplicitClose = True + cmd = '' + else: + i += 1 + + self.endPathSegment(elem) + + if self.pathSegmentNum > 1: + self.epspath = " *u\n" + self.epspath + "\n*U " + self.epsLayers += "\n" + wrap(self.epspath, 70) + "\n" + + def elemRect(self, elem): + x = float(elem.get('x')) + y = float(elem.get('y')) + width = float(elem.get('width')) + height = float(elem.get('height')) + + # construct an svg d attribute, and call self.elemPath() + pathData = "" + rx = elem.get('rx') + ry = elem.get('ry') + if None == rx and None == ry: + rx = 0 + ry = 0 + else: + # if only one radius is given, it means both are the same + if None == rx: + rx = float(ry) + else: + rx = float(rx) + if None == ry: + ry = float(rx) + else: + ry = float(ry) + + if rx == 0 and ry == 0: + pathData = "M %f %f %f %f %f %f %f %f z" % (x,y, x+width,y, x+width, y+height, x, y+height) + else: + pathData = "M %f %f A %f %f 0 0 1 %f %f" % (x, y+ry, rx,ry, x+rx, y) + pathData += " L %f %f A %f %f 0 0 1 %f %f" % (x+width-rx, y, rx,ry, x+width, y+ry) + pathData += " L %f %f A %f %f 0 0 1 %f %f" % (x+width, y+height-ry, rx,ry, x+width-rx, y+height) + pathData += " L %f %f A %f %f 0 0 1 %f %f z" % (x+rx, y+height, rx,ry, x, y+height-ry) + self.elemPath(elem, pathData) + + def elemPolygon(self, elem): + pathData = 'M ' + elem.get('points').replace(',', ' ').strip() + ' z' + self.elemPath(elem, pathData) + + def elemCircle(self, elem): + r = float(elem.get('r')) + self.elemEllipseCircleCommon(elem, r, r) + + def elemEllipse(self, elem): + rx = float(elem.get('rx')) + ry = float(elem.get('ry')) + self.elemEllipseCircleCommon(elem, rx, ry) + + def elemEllipseCircleCommon(self, elem, rx, ry): + cx = float(elem.get('cx')) + cy = float(elem.get('cy')) + # todo: test whether PostScript arc is handled by AI and use that instead + magic = 0.55228475 # I've read it on the internet + controlx = rx * magic # x distance of control points from center + controly = ry * magic # y distance of control points from center + + # construct an svg d attribute, and call self.elemPath() + pathData = "M %f %f" % (cx - rx, cy) # leftmost point + pathData += " C %f %f %f %f %f %f" % (cx - rx, cy - controly, cx - controlx, cy - ry, cx, cy - ry) # to top + pathData += " C %f %f %f %f %f %f" % (cx + controlx, cy - ry, cx + rx, cy - controly, cx + rx, cy) # to right + pathData += " C %f %f %f %f %f %f" % (cx + rx, cy + controly, cx + controlx, cy + ry, cx, cy + ry) # to bottom + pathData += " C %f %f %f %f %f %f z" % (cx - controlx, cy + ry, cx - rx, cy + controly, cx - rx, cy) # back to left and close + self.elemPath(elem, pathData) + + + def attrTransform(self, matrix, transform): + """transforms matrix using svg transform attribute""" + for ttype, targs in self.reTransformFind.findall(transform): + targs = list(map(lambda x: float(x), self.reNumberFind.findall(targs))) + if ttype == 'matrix': + newmatrix = [ targs[0], targs[1], + targs[2], targs[3], + targs[4], targs[5] ] + self.matrixMul(matrix, newmatrix) + elif ttype == 'translate': + tx = targs[0] + ty = targs[1] if len(targs) > 1 else 0 + newmatrix = [ 1, 0, 0, 1, tx, ty ] + self.matrixMul(matrix, newmatrix) + elif ttype == 'scale': + sx = targs[0] + sy = targs[1] if len(targs) > 1 else sx + newmatrix = [ sx, 0, 0, sy, 0, 0 ] + self.matrixMul(matrix, newmatrix) + elif ttype == 'rotate': + if len(targs) == 1: + alpha = targs[0] + newmatrix = [ math.cos(alpha), math.sin(alpha), + -math.sin(alpha), math.cos(alpha), + 0, 0] + self.matrixMul(matrix, newmatrix) + else: + alpha = targs[0] + newmatrix = [ 1, 0, 0, 1, targs[1], targs[2] ] + self.matrixMul(matrix, newmatrix) + newmatrix = [ math.cos(alpha), math.sin(alpha), + -math.sin(alpha), math.cos(alpha), + 0, 0] + self.matrixMul(matrix, newmatrix) + newmatrix = [ 1, 0, 0, 1, -targs[1], -targs[2] ] + self.matrixMul(matrix, newmatrix) + elif ttype == 'skewX' or ttype == 'skewY': + self.alert("skewX and skewY transformations are not supported", elem) + else: + print('unknown transform type: ', ttype) + return matrix + + def elemGradient(self, elem, grType): + """handles and svg elements""" + elemId = elem.get('id') + if elemId != None: + self.curGradientId = elemId + self.gradients[elemId] = {'stops': [], 'linUseCount': 0, 'radUseCount': 0, 'type': grType} + if 'linear' == grType: + x1 = elem.get('x1') + if None != x1: + self.gradients[elemId]['x1'] = float(x1) + self.gradients[elemId]['y1'] = float(elem.get('y1')) + self.gradients[elemId]['x2'] = float(elem.get('x2')) + self.gradients[elemId]['y2'] = float(elem.get('y2')) + elif 'radial' == grType: + cx = elem.get('cx') + if None != cx: + self.gradients[elemId]['cx'] = float(cx) + self.gradients[elemId]['cy'] = float(elem.get('cy')) + self.gradients[elemId]['fx'] = float(elem.get('fx')) + self.gradients[elemId]['fy'] = float(elem.get('fy')) + self.gradients[elemId]['r'] = float(elem.get('r')) + + transform = elem.get('gradientTransform') + if None != transform: + self.gradients[elemId]['matrix'] = self.attrTransform([1, 0, 0, 1, 0, 0], transform) + + href = elem.get('{http://www.w3.org/1999/xlink}href') + if None != href: + self.gradients[elemId]['href'] = href[1:] + + + def elemStop(self, elem): + """handles (gradient stop) svg element""" + stopColor = elem.get('stop-color') + if not stopColor: + style = css2dict(elem.get('style')) + if 'stop-color' in style: + stopColor = style['stop-color'] + else: + stopColor = '#000000' + color = cssColor2Eps(stopColor, 'CMYKRGB') + offsetString = elem.get('offset').strip() + if offsetString[-1] == '%': + offset = float(offsetString[:-1]) + else: + offset = float(offsetString) * 100 + self.gradients[self.curGradientId]['stops'].append( (offset, color) ) + + def gradientSetup(self): + """writes used gradient definitions into self.epsSetup""" + gradientNum = 0 + epsGradients = "" + for gradientId, gradient in self.gradients.items(): + + if gradient['linUseCount'] > 0: + gradientNum += 1 + epsGradients += ("\n%%AI5_BeginGradient: (l_%s)" + \ + "\n(l_%s) 0 %d Bd\n[\n") % \ + (gradientId, gradientId, len(gradient['stops'])) + gradient['stops'].sort(key=lambda x: x[0], reverse=True) + + for offset, color in gradient['stops']: + epsGradients += "%s 2 50 %f %%_Bs\n" % (color, offset) + epsGradients += "BD\n%AI5_EndGradient\n" + + if gradient['radUseCount'] > 0: + gradientNum += 1 + epsGradients += ("\n%%AI5_BeginGradient: (r_%s)" + \ + "\n(r_%s) 1 %d Bd\n[\n") % \ + (gradientId, gradientId, len(gradient['stops'])) + gradient['stops'].sort(key=lambda x: x[0]) + + for offset, color in gradient['stops']: + epsGradients += "%s 2 50 %f %%_Bs\n" % (color, offset) + epsGradients += "BD\n%AI5_EndGradient\n" + + if gradientNum > 0: + self.epsSetup += ("\n%d Bn\n" % gradientNum) + epsGradients + + + def layerStart(self, elem): + self.epsLayers += '\n\n%AI5_BeginLayer\n' + layerName = elem.get('{http://www.inkscape.org/namespaces/inkscape}label') + layerName = "".join(map(lambda x: '_' if ord(x)<32 or ord(x) > 127 else x, layerName)) + self.epsLayers += '1 1 1 1 0 0 %d 0 0 0 Lb\n(%s) Ln\n' % \ + (self.layerColor, layerName) + self.layerColor = (self.layerColor + 1) % 27 + + def elemUse(self, elem): + """handles a svg element""" + x = self.unitConv(elem.get('x'), 'uu') + if x == None: + x = 0 + y = self.unitConv(elem.get('y'), 'uu') + if y == None: + y = 0 + + if x != 0 or y != 0: + self.matrices.append( self.matrices[-1][:] ) + self.attrTransform(self.matrices[-1], "translate(%f %f)" % (x, y)) + + href = elem.get('{http://www.w3.org/1999/xlink}href') + usedElem = self.root.find(".//*[@id='%s']" % (href[1:],)) + if usedElem != None: + self.walkElem(usedElem) + else: + self.alert("used Elem not found: " + href, elem) + + if x != 0 or y != 0: + self.matrices.pop() + + # def elemNamedView(self, elem): + # """handles a svg element""" + # newDocumentUnit = elem.get('{http://www.inkscape.org/namespaces/inkscape}document-units') + # if newDocumentUnit in self.toPt and newDocumentUnit != self.documentUnit: + # if len(self.matrices) > 0: + # # recalculate scaling transformation to new document unit + # scale = self.toPt[newDocumentUnit] / self.toPt[self.documentUnit] + # self.matrices[-1][0] = scale * self.matrices[-1][0] + # self.matrices[-1][3] = scale * self.matrices[-1][3] + # self.documentUnit = newDocumentUnit + + def walkElem(self, elem): + if '}' in elem.tag: + uri, shortTag = elem.tag.split('}') + else: + shortTag = elem.tag + uri = '' + + transform = elem.get('transform') + clipPath = elem.get('clip-path') + cssNew = css2dict(elem.get('style')) + css = self.cssStack[-1].copy() + css.update(cssNew) + self.cssStack.append(css) + if self.removeInvisible: + if 'visibility' in css and (css['visibility'] == 'hidden' or css['visibility'] == 'collapse'): + return + if 'display' in css and css['display'] == 'none': + return + if shortTag in ('path', 'rect', 'circle', 'ellipse', 'polygon'): + if 'opacity' in css and css['opacity'] == '0': + return + stroke = False + if 'stroke' in css and 'none' != css['stroke']: + stroke = True + if 'stroke-opacity' in css and css['stroke-opacity'] == '0': + stroke = False + if 'stroke-width' in css and css['stroke-width'] == '0': + stroke = False + fill = False + if 'fill' in css and 'none' != css['fill']: + fill = True + if 'fill-opacity' in css and css['fill-opacity'] == '0': + stroke = False + if stroke == False and fill == False: + return + + + if transform != None: + self.matrices.append( self.matrices[-1][:] ) + self.attrTransform(self.matrices[-1], transform) + + if None != clipPath: + clipId = clipPath[5:-1] + clipElem = self.root.find(".//*[@id='%s']" % (clipId,)) + if clipElem == None: + self.alert('clipPath not found', elem) + clipPath = None + else: + self.epsLayers += "\nq\n" + clipPathSave= self.clipPath + self.clipPath = True + # output clip path even if it doesn't have visible style + popRemoveInvisible = self.removeInvisible + self.removeInvisible = False + self.walkElem(clipElem) + self.removeInvisible = popRemoveInvisible + self.clipPath = clipPathSave + self.epsLayers += ' W' + + if 'svg' == shortTag: + self.elemSvg(elem) + elif 'path' == shortTag: + # do not output paths that are in defs + # if they are referenced, they will be used there + if self.section != 'defs': + self.elemPath(elem) + elif 'rect' == shortTag: + if self.section != 'defs': + self.elemRect(elem) + elif 'circle' == shortTag: + if self.section != 'defs': + self.elemCircle(elem) + elif 'ellipse' == shortTag: + if self.section != 'defs': + self.elemEllipse(elem) + elif 'polygon' == shortTag: + if self.section != 'defs': + self.elemPolygon(elem) + elif 'linearGradient' == shortTag: + self.elemGradient(elem, 'linear') + elif 'radialGradient' == shortTag: + self.elemGradient(elem, 'radial') + elif 'stop' == shortTag: + self.elemStop(elem) + elif 'g' == shortTag: + if 'layer' == elem.get('{http://www.inkscape.org/namespaces/inkscape}groupmode'): + self.layerStart(elem) + elif None == clipPath: # clipping makes a group anyway + self.epsLayers += '\nu\n' + elif 'use' == shortTag: + self.elemUse(elem) + elif 'defs' == shortTag: + self.section = shortTag + elif 'namedview' == shortTag: + self.section = shortTag + else: + self.alert("unhandled elem: " + shortTag, elem) + + + for child in list(elem): + self.walkElem(child) + + if None != clipPath: + self.epsLayers += "\nQ\n" + + if 'g' == shortTag: + if 'layer' == elem.get('{http://www.inkscape.org/namespaces/inkscape}groupmode'): + self.epsLayers += '\nLB\n%AI5_EndLayer\n' + elif None == clipPath: + self.epsLayers += '\nU\n' + elif shortTag in ('defs', 'namedview'): + self.section = None + + if transform != None: + self.matrices.pop() + + self.cssStack.pop() + + def convert(self, svg = None): + self.alerts = {} + if None != svg: + self.svg = svg + if None == self.svg and None != self.filename: + fd = open(self.filename, 'rb') + self.svg = fd.read() + fd.close() + + self.autoClose = True # TODO: make it optional + self.removeInvisible = True # TODO: make it optional + self.removeStrayPoints = True # TODO: make it optional + # if last point of a path is further from first point, then an explicit + # 'lineto' is written to the first point before 'closepath' + self.closeDist = 0.1 + self.matrices = [[1, 0, 0, 1, 0, 0]] + self.cssStack = [{}] + self.gradients = {} + self.docHeight = 400 + self.docWidth = 400 + self.layerColor = 0 + self.section = None + self.clipPath = False + self.epsComments = """%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: tzunghaor svg2eps +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentNeededResources: procset Adobe_Illustrator_AI5 1.3 0 +%AI5_FileFormat 3 +""" + # TODO: creation date, user etc + + self.epsProlog = """%%BeginProlog +100 dict begin +/tzung_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +/Adobe_Illustrator_AI5 where +{ pop } { + /tzung_strokergb [ 0 0 0 ] def + /tzung_compound 0 def + /tzung_closeop { S } def + /tzung_fillrule 0 def + + /*u { /tzung_compound 1 def newpath /tzung_fillrule 0 def } bind def + /*U { /tzung_compound 0 def tzung_closeop } bind def + /u {} bind def + /U {} bind def + + /q { clipsave } bind def + /Q { cliprestore } bind def + /W { clip } bind def + + /Lb { 10 {pop} repeat } bind def + /Ln {pop} bind def + /LB {} bind def + + + /w { setlinewidth } bind def + /J { setlinecap } bind def + /j { setlinejoin } bind def + /M { setmiterlimit } bind def + /d { setdash } bind def + + /m { tzung_compound 0 eq { newpath /tzung_fillrule 0 def } if moveto } bind def + /l { lineto } bind def + /c { curveto } bind def + + /XR { /tzung_fillrule exch def } bind def + /Xa { setrgbcolor } bind def + /XA { 3 array astore /tzung_strokergb exch def } bind def + + + /F { tzung_compound 0 eq { + tzung_fillrule 0 eq { fill } { eofill } ifelse + } { + /tzung_closeop {F} def + } ifelse } bind def + /f { closepath F } bind def + /S { tzung_compound 0 eq { + tzung_strokergb aload pop setrgbcolor stroke + } { + /tzung_closeop {S} def + } ifelse } bind def + /s { closepath S } bind def + + /B { tzung_compound 0 eq { + gsave + tzung_fillrule 0 eq { fill } { eofill } ifelse + grestore + tzung_strokergb aload pop setrgbcolor stroke + } { + /tzung_closeop {B} def + } ifelse } bind def + /b { closepath B } bind def + /H { tzung_compound 0 eq { + }{ + /tzung_closeop {H} def + } ifelse} bind def + /h { closepath } bind def + /N { tzung_compound 0 eq { + }{ + /tzung_closeop {N} def + } ifelse} bind def + /n { closepath N } bind def + + + /Bn { /dict_gradients exch dict def} bind def + /Bd { /tmp_ngradstop exch def /tmp_shadingtype exch def } bind def %leaves gradient name in stack + /BD { ] % this handles only stops that have CMYKRGB color definitions + % linear gradient stops must be in reverse order, radials in normal order + aload + pop + /tmp_boundaries tmp_ngradstop array def + /tmp_colors tmp_ngradstop array def + tmp_shadingtype 0 eq { + 0 1 tmp_ngradstop 1 sub % for i=0; i<= number of gradient stops - 1; i++ + } { + tmp_ngradstop 1 sub -1 0 % for i=number of gradient stops - 1; i >= 0; i++ + } ifelse + { + /loopvar exch def + 100 div + tmp_boundaries loopvar + 3 -1 roll put % obj array i => array i obj + pop % assume gradient middle is always 50 + pop % assume color type is always 2 (CMYKRGB) + 3 array astore + tmp_colors loopvar + 3 -1 roll put + pop pop pop pop % drop CMYK values + } for + + tmp_ngradstop 2 eq { + /tmp_function 5 dict def + tmp_boundaries 0 get tmp_boundaries 1 get 2 array astore + tmp_function /Domain 3 -1 roll put + tmp_function /FunctionType 2 put + tmp_function /C0 tmp_colors 0 get put + tmp_function /C1 tmp_colors 1 get put + tmp_function /N 1 put + + } { + /tmp_functions tmp_ngradstop 1 sub array def + + 0 1 tmp_ngradstop 2 sub { + /loopvar exch def + /tmp_function 5 dict def + tmp_function /Domain [0 1] put + tmp_function /FunctionType 2 put + tmp_function /C0 tmp_colors loopvar get put + tmp_function /C1 tmp_colors loopvar 1 add get put + tmp_function /N 1 put + tmp_functions loopvar tmp_function put + } for + + + /tmp_function 5 dict def + tmp_boundaries 0 get tmp_boundaries tmp_ngradstop 1 sub get 2 array astore + tmp_function /Domain 3 -1 roll put + tmp_function /FunctionType 3 put + tmp_boundaries aload pop + tmp_ngradstop -1 roll pop pop % remove first and last bounds + tmp_ngradstop 2 sub array astore + tmp_function /Bounds 3 -1 roll put + tmp_function /Functions tmp_functions put + + tmp_ngradstop 1 sub { + 0 1 + } repeat + tmp_ngradstop 1 sub 2 mul array astore + tmp_function /Encode 3 -1 roll put + + } ifelse + + /tmp_shading 6 dict def + tmp_shadingtype 0 eq { + tmp_shading /ShadingType 2 put + tmp_shading /Coords [ 0 0 1 0 ] put + } { + tmp_shading /ShadingType 3 put + tmp_shading /Coords [ 0 0 0 0 0 1 ] put + } ifelse + tmp_shading /ColorSpace /DeviceRGB put + tmp_shading /Domain [0 1] put + tmp_shading /Extend[ true true] put + tmp_shading /Function tmp_function put + + /tmp_gradient 2 dict def + tmp_gradient /PatternType 2 put + tmp_gradient /Shading tmp_shading put + + dict_gradients exch tmp_gradient put % gradient's name is on the top of the stack from Bd operator + + } bind def + /Lb { 10 { pop } repeat } bind def + /Ln { pop } bind def + /Bb { } bind def + + /Bg { + 6 { pop } repeat + gsave + 4 2 roll + translate + exch + rotate + dup scale + exch pop % remove Bg flag + dict_gradients exch get % now gradient name is on top of the stack + [ 1 0 0 1 0 0 ] + makepattern + /pattern_tmp exch def + grestore + pattern_tmp setpattern + gsave % save for after pattern fil for possible stroke + } def + /BB { grestore 2 eq { s } if } bind def + /LB { } bind def + +} ifelse +""" + self.epsSetup = """%%BeginSetup +/Adobe_Illustrator_AI5 where +{ + pop + Adobe_Illustrator_AI5 /initialize get exec +} if +""" + self.epsLayers = "" + self.epsTrailer = """%%Trailer +showpage +count op_count sub {pop} repeat +countdictstack dict_count sub {end} repeat +tzung_eps_state restore +end +%%EOF +""" + + + self.root = ET.fromstring(self.svg) + self.walkElem(self.root) + self.gradientSetup() + + sizeComment = "%%%%BoundingBox: 0 0 %d %d\n" % (math.ceil(self.docWidth), math.ceil(self.docHeight)) + sizeComment += "%%%%HiResBoundingBox: 0 0 %f %f\n" % (self.docWidth, self.docHeight) + sizeComment += "%%AI5_ArtSize: %f %f\n" % (self.docWidth, self.docHeight) + pagesetup = """%%%%Page: 1 1 +%%%%BeginPageSetup +%%%%PageBoundingBox: 0 0 %d %d +%%%%EndPageSetup +""" % (self.docWidth, self.docHeight) + + eps = self.epsComments + sizeComment + "%%EndComments\n\n" + eps += self.epsProlog + "\n%%EndProlog\n\n" + eps += self.epsSetup + "\n%%EndSetup\n\n" + eps += pagesetup + self.epsLayers + "\n\n" + eps += self.epsTrailer + + return eps + +import sys + +if len(sys.argv) < 2: + raise NameError("missing filename") + exit(1) + +converter = svg2eps(sys.argv[1]) + +print(converter.convert()) +#TODO: show alerts in dialogbox +#converter.showAlerts() diff --git a/extensions/fablabchemnitz/animate_order/animate_order.inx b/extensions/fablabchemnitz/animate_order/animate_order.inx new file mode 100644 index 00000000..5cdb9175 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/animate_order.inx @@ -0,0 +1,64 @@ + + + Animate Order + fablabchemnitz.de.animate_order + + + + + + 5.0 + 60 + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/animate_order.py b/extensions/fablabchemnitz/animate_order/animate_order.py new file mode 100644 index 00000000..08b191f0 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/animate_order.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python3 + +import inkex +import subprocess +import shutil +import os +import sys +import warnings + +""" +Extension for InkScape 1.X +Features + - Create SVG preview file and show it in browser. Helps to quickly evaluate line order for cutting processes + +Author: Mario Voigt / FabLab Chemnitz +Mail: mario.voigt@stadtfabrikanten.org +Date: 21.04.2021 +Last patch: 07.05.2021 +License: GNU GPL v3 + +Used version of Vivus JS library: https://github.com/maxwellito/vivus/releases/tag/v0.4.6 - MIT License + +Browser config: +Firefox via about:config -> privacy.file_unique_origin = false + +ToDo: + - adjust width and height (give options) + - embed config buttons inside html to adjust time/type/... (more flexible than clicking from Inkscape) + - we should do it the way like vivus instant -> http://maxwellito.github.io/vivus / https://maxwellito.github.io/vivus-instant + - the generated SVGs can be downloaded again and include all animations! + - calculate the total length of all paths and auto-adjust the speed to have good visibility + - Possible feature request could be to handle "animate selected objects only". See "Export selection as ... " extension to steal that code. +""" +DETACHED_PROCESS = 0x00000008 + +class AnimateOrder(inkex.EffectExtension): + + def spawnIndependentProcess(self, args): #function to spawn non-blocking inkscape instance. the inkscape command is available because it is added to ENVIRONMENT when Inkscape main instance is started + warnings.simplefilter('ignore', ResourceWarning) #suppress "enable tracemalloc to get the object allocation traceback" + if os.name == 'nt': + subprocess.Popen(args, close_fds=True, creationflags=DETACHED_PROCESS) + else: + subprocess.Popen(args, start_new_session=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + warnings.simplefilter("default", ResourceWarning) + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--time", type=float, default = 5.0, help="Duration (frames)") + pars.add_argument("--fps", type=int, default = 60.0, help="Frames per second (fps)") + pars.add_argument("--sequence_type", help="Sequence type") + pars.add_argument("--reverse", type = inkex.Boolean, default = False, help="Reverse order") + pars.add_argument("--browser", help="Select your desired browser (must be installed and must exist in %PATH% variable).") + + def effect(self): + #write current SVG to extensions' directory. Target name must be "drawing.svg" because it is embedded in animate_order.html statically + inFile = "drawing.svg" + extension_dir = os.path.dirname(os.path.realpath(__file__)) + shutil.copy2(self.options.input_file, os.path.join(extension_dir, inFile)) + + target_html = os.path.join(extension_dir, "animate_order.html") + + docTitle = self.document.getroot().get("{http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd}docname") + if docTitle is None: + title = "Animate Order - Vivus JS" + else: + title = "Animate Order - " + docTitle + vivus_include = "./vivus-0.4.6/dist/vivus.js" + + duration = self.options.time * self.options.fps # we guess we have 20 ... 60 fps. depends on performance of the machine + frames_per_second = self.options.fps + type = self.options.sequence_type + reverse = str(self.options.reverse).lower() + + with open(target_html, "w") as text_file: + print( '' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print(f' {title}' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( '
' , file=text_file) + print(f' ' , file=text_file) + print(f' ' , file=text_file) + print( ' ' , file=text_file) + print( ' ' , file=text_file) + print( '' , file=text_file) + + if os.path.exists(target_html) is False: + inkex.utils.debug("Error. Target file does not exist!") + exit(1) + + #now open firefox + args = [self.options.browser, target_html] + try: + self.spawnIndependentProcess(args) + except FileNotFoundError as e: + inkex.utils.debug("Error. Check for correct browser installation and try again!") + exit(1) + +if __name__ == '__main__': + AnimateOrder().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.eslintrc.json b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.eslintrc.json new file mode 100644 index 00000000..b6a0b41d --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.eslintrc.json @@ -0,0 +1,37 @@ +{ + "env": { + "es6": false, + "amd": false, + "browser": true, + "jasmine": true, + "node": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "sourceType": "module" + }, + "globals": { + "Pathformer": true, + "Vivus": true, + "window": true, + "document": true, + "define": true, + "jasmine": true, + "it": true, + "expect": true, + "describe": true, + "beforeEach": true, + "afterEach": true, + "spyOn": true + }, + "rules": { + "no-cond-assign": 2, + "no-console": 0, + "no-const-assign": 2, + "no-class-assign": 2, + "no-this-before-super": 2, + "no-unused-vars": 1, + "no-empty": 0, + "object-shorthand": [2, "always"] + } +} diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.github/ISSUE_TEMPLATE.md b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..cfe60cfb --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,16 @@ +### Please define your problem or issue as clear as possible. + +For a problem, please fill the following: + +**Vivus version**: + +**Browser**: + +**Steps to reproduce it**: + +**JSFiddle link (or similar platform)**: +*No personal website will be allowed, only sandboxed platform where the code is isolated, clear and can be hacked. I don't want to debug uglified code between 42 libraries.* + +*[note]* +Please have a minimum of politeness. There's unfortunately only me as contributor/maintainor which help on my free time, I'm not the Amazon customer service or your Mom. I don't ask to send me flowers and tell me how amazing Vivus is (that won't make me help you quicker). But please try to do as much as you can before opening an issue: check that no closed issue mention a similar problem, that your script is executed correctly (conflicts, race conditions...).. Thanks :) +*[/note]* diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.gitignore b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.gitignore new file mode 100644 index 00000000..bdaa75e9 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.gitignore @@ -0,0 +1,6 @@ +coverage/ +node_modules/ +.DS_Store +.idea +yarn.lock +dist/vivus.min.js.map diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.npmignore b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.npmignore new file mode 100644 index 00000000..b5210b50 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.npmignore @@ -0,0 +1,5 @@ +test +assets +node_modules +coverage +.DS_Store diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.travis.yml b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.travis.yml new file mode 100644 index 00000000..a4726d41 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - 'stable' +script: npm run lint && npm run test +before_install: + - export CHROME_BIN=chromium-browser + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/CONTRIBUTING.md b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/CONTRIBUTING.md new file mode 100644 index 00000000..26aa7c50 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/CONTRIBUTING.md @@ -0,0 +1,7 @@ +# Contributing + +First of all, thanks for contributing, thinking about contributing, or even arriving here by mistake. + +Issues are reserved to mention a problem, a bug or discuss about implementing a feature. If you have any question or support request, please use [Gitter](https://gitter.im/maxwellito/vivus). For every issue, please try to give as much information as you can : version, steps to recreate it, examples (via jsFiddle or something like that). + +About pull requests, please try to contact the maintainer beforehand. He's a kinda human Grumpy Cat trying to avoid features which can be useful for only 1% of users. The warning is only because it would be sad to see contributors spending time a feature that wouldn't be merged. Otherwise, I would recommend you to add a section in the `hacks.md` file. But if it's a bug fix, the chances to be merged are higher. If necessary please think about updating the tests. \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/LICENSE b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/LICENSE new file mode 100644 index 00000000..cb16e265 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) maxwellito + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/delayed.png b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/delayed.png new file mode 100644 index 0000000000000000000000000000000000000000..39f341259c1d3b1f182c86f59ae805f37c658fad GIT binary patch literal 4362 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/oneByOne.png b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/oneByOne.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f22456b3a8a6cc58293ec1acac95be036dffd6 GIT binary patch literal 3913 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_default.png b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/script_default.png new file mode 100644 index 0000000000000000000000000000000000000000..bd03697eb78abb9a9abeb61bc32f55014eab3aed GIT binary patch literal 3979 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 l@)lpGq#ct{{YO3`rQBk literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/sync.png b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/sync.png new file mode 100644 index 0000000000000000000000000000000000000000..f792903dce4d4be99834e4a5e77575c9e9bb9140 GIT binary patch literal 3842 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 O05H@$r(1%v5C0cDn8E`9 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/timelines.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/timelines.svg new file mode 100644 index 00000000..44f1bd06 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/assets/timelines.svg @@ -0,0 +1,95 @@ + + + + + + + + time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/bower.json b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/bower.json new file mode 100644 index 00000000..0e71b32f --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/bower.json @@ -0,0 +1,16 @@ +{ + "name": "vivus", + "description": "JavaScript library to make drawing animation on SVG", + "main": "dist/vivus.js", + "licence": "MIT", + "ignore": [ + "assets/", + "src/", + "test/", + ".gitignore", + ".jshintrc", + "gulpfile.js", + "index.html", + "package.json" + ] +} \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.js new file mode 100644 index 00000000..57dbff04 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.js @@ -0,0 +1,1222 @@ +/** + * vivus - JavaScript library to make drawing animation on SVG + * @version v0.4.6 + * @link https://github.com/maxwellito/vivus + * @license MIT + */ + +(function () { + + 'use strict'; + +/** + * Pathformer + * Beta version + * + * Take any SVG version 1.1 and transform + * child elements to 'path' elements + * + * This code is purely forked from + * https://github.com/Waest/SVGPathConverter + */ + +/** + * Class constructor + * + * @param {DOM|String} element Dom element of the SVG or id of it + */ +function Pathformer(element) { + // Test params + if (typeof element === 'undefined') { + throw new Error('Pathformer [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID'); + } + } + if (element instanceof window.SVGElement || + element instanceof window.SVGGElement || + /^svg$/i.test(element.nodeName)) { + this.el = element; + } else { + throw new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement'); + } + + // Start + this.scan(element); +} + +/** + * List of tags which can be transformed + * to path elements + * + * @type {Array} + */ +Pathformer.prototype.TYPES = ['line', 'ellipse', 'circle', 'polygon', 'polyline', 'rect']; + +/** + * List of attribute names which contain + * data. This array list them to check if + * they contain bad values, like percentage. + * + * @type {Array} + */ +Pathformer.prototype.ATTR_WATCH = ['cx', 'cy', 'points', 'r', 'rx', 'ry', 'x', 'x1', 'x2', 'y', 'y1', 'y2']; + +/** + * Finds the elements compatible for transform + * and apply the liked method + * + * @param {object} options Object from the constructor + */ +Pathformer.prototype.scan = function (svg) { + var fn, element, pathData, pathDom, + elements = svg.querySelectorAll(this.TYPES.join(',')); + + for (var i = 0; i < elements.length; i++) { + element = elements[i]; + fn = this[element.tagName.toLowerCase() + 'ToPath']; + pathData = fn(this.parseAttr(element.attributes)); + pathDom = this.pathMaker(element, pathData); + element.parentNode.replaceChild(pathDom, element); + } +}; + + +/** + * Read `line` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Line element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.lineToPath = function (element) { + var newElement = {}, + x1 = element.x1 || 0, + y1 = element.y1 || 0, + x2 = element.x2 || 0, + y2 = element.y2 || 0; + + newElement.d = 'M' + x1 + ',' + y1 + 'L' + x2 + ',' + y2; + return newElement; +}; + +/** + * Read `rect` element to extract and transform + * data, to make it ready for a `path` object. + * The radius-border is not taken in charge yet. + * (your help is more than welcomed) + * + * @param {DOMelement} element Rect element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.rectToPath = function (element) { + var newElement = {}, + x = parseFloat(element.x) || 0, + y = parseFloat(element.y) || 0, + width = parseFloat(element.width) || 0, + height = parseFloat(element.height) || 0; + + if (element.rx || element.ry) { + var rx = parseInt(element.rx, 10) || -1, + ry = parseInt(element.ry, 10) || -1; + rx = Math.min(Math.max(rx < 0 ? ry : rx, 0), width/2); + ry = Math.min(Math.max(ry < 0 ? rx : ry, 0), height/2); + + newElement.d = 'M ' + (x + rx) + ',' + y + ' ' + + 'L ' + (x + width - rx) + ',' + y + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width) + ',' + (y + ry) + ' ' + + 'L ' + (x + width) + ',' + (y + height - ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width - rx) + ',' + (y + height) + ' ' + + 'L ' + (x + rx) + ',' + (y + height) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + x + ',' + (y + height - ry) + ' ' + + 'L ' + x + ',' + (y + ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + rx) + ',' + y; + } + else { + newElement.d = 'M' + x + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + (y + height) + ' ' + + 'L' + x + ' ' + (y + height) + ' Z'; + } + return newElement; +}; + +/** + * Read `polyline` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Polyline element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polylineToPath = function (element) { + var newElement = {}, + points = element.points.trim().split(' '), + i, path; + + // Reformatting if points are defined without commas + if (element.points.indexOf(',') === -1) { + var formattedPoints = []; + for (i = 0; i < points.length; i+=2) { + formattedPoints.push(points[i] + ',' + points[i+1]); + } + points = formattedPoints; + } + + // Generate the path.d value + path = 'M' + points[0]; + for(i = 1; i < points.length; i++) { + if (points[i].indexOf(',') !== -1) { + path += 'L' + points[i]; + } + } + newElement.d = path; + return newElement; +}; + +/** + * Read `polygon` element to extract and transform + * data, to make it ready for a `path` object. + * This method rely on polylineToPath, because the + * logic is similar. The path created is just closed, + * so it needs an 'Z' at the end. + * + * @param {DOMelement} element Polygon element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polygonToPath = function (element) { + var newElement = Pathformer.prototype.polylineToPath(element); + + newElement.d += 'Z'; + return newElement; +}; + +/** + * Read `ellipse` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element ellipse element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.ellipseToPath = function (element) { + var newElement = {}, + rx = parseFloat(element.rx) || 0, + ry = parseFloat(element.ry) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - rx, + startY = cy, + endX = parseFloat(cx) + parseFloat(rx), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + endX + ',' + endY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Read `circle` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Circle element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.circleToPath = function (element) { + var newElement = {}, + r = parseFloat(element.r) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - r, + startY = cy, + endX = parseFloat(cx) + parseFloat(r), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + r + ',' + r + ' 0,1,1 ' + endX + ',' + endY + + 'A' + r + ',' + r + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Create `path` elements form original element + * and prepared objects + * + * @param {DOMelement} element Original element to transform + * @param {object} pathData Path data (from `toPath` methods) + * @return {DOMelement} Path element + */ +Pathformer.prototype.pathMaker = function (element, pathData) { + var i, attr, pathTag = document.createElementNS('http://www.w3.org/2000/svg','path'); + for(i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + if (this.ATTR_WATCH.indexOf(attr.name) === -1) { + pathTag.setAttribute(attr.name, attr.value); + } + } + for(i in pathData) { + pathTag.setAttribute(i, pathData[i]); + } + return pathTag; +}; + +/** + * Parse attributes of a DOM element to + * get an object of attribute => value + * + * @param {NamedNodeMap} attributes Attributes object from DOM element to parse + * @return {object} Object of attributes + */ +Pathformer.prototype.parseAttr = function (element) { + var attr, output = {}; + for (var i = 0; i < element.length; i++) { + attr = element[i]; + // Check if no data attribute contains '%', or the transformation is impossible + if (this.ATTR_WATCH.indexOf(attr.name) !== -1 && attr.value.indexOf('%') !== -1) { + throw new Error('Pathformer [parseAttr]: a SVG shape got values in percentage. This cannot be transformed into \'path\' tags. Please use \'viewBox\'.'); + } + output[attr.name] = attr.value; + } + return output; +}; + + 'use strict'; + +var setupEnv, requestAnimFrame, cancelAnimFrame, parsePositiveInt; + +/** + * Vivus + * Beta version + * + * Take any SVG and make the animation + * to give give the impression of live drawing + * + * This in more than just inspired from codrops + * At that point, it's a pure fork. + */ + +/** + * Class constructor + * option structure + * type: 'delayed'|'sync'|'oneByOne'|'script' (to know if the items must be drawn synchronously or not, default: delayed) + * duration: (in frames) + * start: 'inViewport'|'manual'|'autostart' (start automatically the animation, default: inViewport) + * delay: (delay between the drawing of first and last path) + * dashGap whitespace extra margin between dashes + * pathTimingFunction timing animation function for each path element of the SVG + * animTimingFunction timing animation function for the complete SVG + * forceRender force the browser to re-render all updated path items + * selfDestroy removes all extra styling on the SVG, and leaves it as original + * + * The attribute 'type' is by default on 'delayed'. + * - 'delayed' + * all paths are draw at the same time but with a + * little delay between them before start + * - 'sync' + * all path are start and finish at the same time + * - 'oneByOne' + * only one path is draw at the time + * the end of the first one will trigger the draw + * of the next one + * + * All these values can be overwritten individually + * for each path item in the SVG + * The value of frames will always take the advantage of + * the duration value. + * If you fail somewhere, an error will be thrown. + * Good luck. + * + * @constructor + * @this {Vivus} + * @param {DOM|String} element Dom element of the SVG or id of it + * @param {Object} options Options about the animation + * @param {Function} callback Callback for the end of the animation + */ +function Vivus(element, options, callback) { + setupEnv(); + + // Setup + this.isReady = false; + this.setElement(element, options); + this.setOptions(options); + this.setCallback(callback); + + if (this.isReady) { + this.init(); + } +} + +/** + * Timing functions + ************************************** + * + * Default functions to help developers. + * It always take a number as parameter (between 0 to 1) then + * return a number (between 0 and 1) + */ +Vivus.LINEAR = function(x) { + return x; +}; +Vivus.EASE = function(x) { + return -Math.cos(x * Math.PI) / 2 + 0.5; +}; +Vivus.EASE_OUT = function(x) { + return 1 - Math.pow(1 - x, 3); +}; +Vivus.EASE_IN = function(x) { + return Math.pow(x, 3); +}; +Vivus.EASE_OUT_BOUNCE = function(x) { + var base = -Math.cos(x * (0.5 * Math.PI)) + 1, + rate = Math.pow(base, 1.5), + rateR = Math.pow(1 - x, 2), + progress = -Math.abs(Math.cos(rate * (2.5 * Math.PI))) + 1; + return 1 - rateR + progress * rateR; +}; + +/** + * Setters + ************************************** + */ + +/** + * Check and set the element in the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {DOM|String} element SVG Dom element or id of it + */ +Vivus.prototype.setElement = function(element, options) { + var onLoad, self; + + // Basic check + if (typeof element === 'undefined') { + throw new Error('Vivus [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error( + 'Vivus [constructor]: "element" parameter is not related to an existing ID' + ); + } + } + this.parentEl = element; + + // Load the SVG with XMLHttpRequest and extract the SVG + if (options && options.file) { + self = this; + onLoad = function() { + var domSandbox = document.createElement('div'); + domSandbox.innerHTML = this.responseText; + + var svgTag = domSandbox.querySelector('svg'); + if (!svgTag) { + throw new Error( + 'Vivus [load]: Cannot find the SVG in the loaded file : ' + + options.file + ); + } + + self.el = svgTag; + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + self.parentEl.appendChild(self.el); + self.isReady = true; + self.init(); + self = null; + }; + + var oReq = new window.XMLHttpRequest(); + oReq.addEventListener('load', onLoad); + oReq.open('GET', options.file); + oReq.send(); + return; + } + + switch (element.constructor) { + case window.SVGSVGElement: + case window.SVGElement: + case window.SVGGElement: + this.el = element; + this.isReady = true; + break; + + case window.HTMLObjectElement: + self = this; + onLoad = function(e) { + if (self.isReady) { + return; + } + self.el = + element.contentDocument && + element.contentDocument.querySelector('svg'); + if (!self.el && e) { + throw new Error( + 'Vivus [constructor]: object loaded does not contain any SVG' + ); + } else if (self.el) { + if (element.getAttribute('built-by-vivus')) { + self.parentEl.insertBefore(self.el, element); + self.parentEl.removeChild(element); + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + } + self.isReady = true; + self.init(); + self = null; + } + }; + + if (!onLoad()) { + element.addEventListener('load', onLoad); + } + break; + + default: + throw new Error( + 'Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)' + ); + } +}; + +/** + * Set up user option to the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {object} options Object from the constructor + */ +Vivus.prototype.setOptions = function(options) { + var allowedTypes = [ + 'delayed', + 'sync', + 'async', + 'nsync', + 'oneByOne', + 'scenario', + 'scenario-sync' + ]; + var allowedStarts = ['inViewport', 'manual', 'autostart']; + + // Basic check + if (options !== undefined && options.constructor !== Object) { + throw new Error( + 'Vivus [constructor]: "options" parameter must be an object' + ); + } else { + options = options || {}; + } + + // Set the animation type + if (options.type && allowedTypes.indexOf(options.type) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.type + + ' is not an existing animation `type`' + ); + } else { + this.type = options.type || allowedTypes[0]; + } + + // Set the start type + if (options.start && allowedStarts.indexOf(options.start) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.start + + ' is not an existing `start` option' + ); + } else { + this.start = options.start || allowedStarts[0]; + } + + this.isIE = + window.navigator.userAgent.indexOf('MSIE') !== -1 || + window.navigator.userAgent.indexOf('Trident/') !== -1 || + window.navigator.userAgent.indexOf('Edge/') !== -1; + this.duration = parsePositiveInt(options.duration, 120); + this.delay = parsePositiveInt(options.delay, null); + this.dashGap = parsePositiveInt(options.dashGap, 1); + this.forceRender = options.hasOwnProperty('forceRender') + ? !!options.forceRender + : this.isIE; + this.reverseStack = !!options.reverseStack; + this.selfDestroy = !!options.selfDestroy; + this.onReady = options.onReady; + this.map = []; + this.frameLength = this.currentFrame = this.delayUnit = this.speed = this.handle = null; + + this.ignoreInvisible = options.hasOwnProperty('ignoreInvisible') + ? !!options.ignoreInvisible + : false; + + this.animTimingFunction = options.animTimingFunction || Vivus.LINEAR; + this.pathTimingFunction = options.pathTimingFunction || Vivus.LINEAR; + + if (this.delay >= this.duration) { + throw new Error('Vivus [constructor]: delay must be shorter than duration'); + } +}; + +/** + * Set up callback to the instance + * The method will not return enything, but will throw an + * error if the parameter is invalid + * + * @param {Function} callback Callback for the animation end + */ +Vivus.prototype.setCallback = function(callback) { + // Basic check + if (!!callback && callback.constructor !== Function) { + throw new Error( + 'Vivus [constructor]: "callback" parameter must be a function' + ); + } + this.callback = callback || function() {}; +}; + +/** + * Core + ************************************** + */ + +/** + * Map the svg, path by path. + * The method return nothing, it just fill the + * `map` array. Each item in this array represent + * a path element from the SVG, with informations for + * the animation. + * + * ``` + * [ + * { + * el: the path element + * length: length of the path line + * startAt: time start of the path animation (in frames) + * duration: path animation duration (in frames) + * }, + * ... + * ] + * ``` + * + */ +Vivus.prototype.mapping = function() { + var i, paths, path, pAttrs, pathObj, totalLength, lengthMeter, timePoint, scale, hasNonScale; + timePoint = totalLength = lengthMeter = 0; + paths = this.el.querySelectorAll('path'); + hasNonScale = false; + + for (i = 0; i < paths.length; i++) { + path = paths[i]; + if (this.isInvisible(path)) { + continue; + } + + pathObj = { + el: path, + length: 0, + startAt: 0, + duration: 0, + isResizeSensitive: false + }; + + // If vector effect is non-scaling-stroke, the total length won't match the rendered length + // so we need to calculate the scale and apply it + if (path.getAttribute('vector-effect') === 'non-scaling-stroke') { + var rect = path.getBoundingClientRect(); + var box = path.getBBox(); + scale = Math.max(rect.width / box.width, rect.height / box.height); + pathObj.isResizeSensitive = true; + hasNonScale = true; + } else { + scale = 1; + } + pathObj.length = Math.ceil(path.getTotalLength() * scale); + + // Test if the path length is correct + if (isNaN(pathObj.length)) { + if (window.console && console.warn) { + console.warn( + 'Vivus [mapping]: cannot retrieve a path element length', + path + ); + } + continue; + } + this.map.push(pathObj); + path.style.strokeDasharray = + pathObj.length + ' ' + (pathObj.length + this.dashGap * 2); + path.style.strokeDashoffset = pathObj.length + this.dashGap; + pathObj.length += this.dashGap; + totalLength += pathObj.length; + + this.renderPath(i); + } + + // Show a warning for non-scaling elements + if (hasNonScale) { + console.warn('Vivus: this SVG contains non-scaling-strokes. You should call instance.recalc() when the SVG is resized or you will encounter unwanted behaviour. See https://github.com/maxwellito/vivus#non-scaling for more info.'); + } + + totalLength = totalLength === 0 ? 1 : totalLength; + this.delay = this.delay === null ? this.duration / 3 : this.delay; + this.delayUnit = this.delay / (paths.length > 1 ? paths.length - 1 : 1); + + // Reverse stack if asked + if (this.reverseStack) { + this.map.reverse(); + } + + for (i = 0; i < this.map.length; i++) { + pathObj = this.map[i]; + + switch (this.type) { + case 'delayed': + pathObj.startAt = this.delayUnit * i; + pathObj.duration = this.duration - this.delay; + break; + + case 'oneByOne': + pathObj.startAt = (lengthMeter / totalLength) * this.duration; + pathObj.duration = (pathObj.length / totalLength) * this.duration; + break; + + case 'sync': + case 'async': + case 'nsync': + pathObj.startAt = 0; + pathObj.duration = this.duration; + break; + + case 'scenario-sync': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + timePoint + + (parsePositiveInt(pAttrs['data-delay'], this.delayUnit) || 0); + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + timePoint = + pAttrs['data-async'] !== undefined + ? pathObj.startAt + : pathObj.startAt + pathObj.duration; + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + + case 'scenario': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + parsePositiveInt(pAttrs['data-start'], this.delayUnit) || 0; + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + } + lengthMeter += pathObj.length; + this.frameLength = this.frameLength || this.duration; + } +}; + +/** + * Public method to re-evaluate line length for non-scaling lines + * path elements. + */ +Vivus.prototype.recalc = function () { + if (this.mustRecalcScale) { + return; + } + this.mustRecalcScale = requestAnimFrame(function () { + this.performLineRecalc(); + }.bind(this)); +} + +/** + * Private method to re-evaluate line length on non-scaling + * path elements. Then call for a trace to update the SVG. + */ +Vivus.prototype.performLineRecalc = function () { + var pathObj, path, rect, box, scale; + for (var i = 0; i < this.map.length; i++) { + pathObj = this.map[i]; + if (pathObj.isResizeSensitive) { + path = pathObj.el; + rect = path.getBoundingClientRect(); + box = path.getBBox(); + scale = Math.max(rect.width / box.width, rect.height / box.height); + pathObj.length = Math.ceil(path.getTotalLength() * scale); + path.style.strokeDasharray = pathObj.length + ' ' + (pathObj.length + this.dashGap * 2); + } + } + this.trace(); + this.mustRecalcScale = null; +} + +/** + * Interval method to draw the SVG from current + * position of the animation. It update the value of + * `currentFrame` and re-trace the SVG. + * + * It use this.handle to store the requestAnimationFrame + * and clear it one the animation is stopped. So this + * attribute can be used to know if the animation is + * playing. + * + * Once the animation at the end, this method will + * trigger the Vivus callback. + * + */ +Vivus.prototype.draw = function() { + var self = this; + this.currentFrame += this.speed; + + if (this.currentFrame <= 0) { + this.stop(); + this.reset(); + } else if (this.currentFrame >= this.frameLength) { + this.stop(); + this.currentFrame = this.frameLength; + this.trace(); + if (this.selfDestroy) { + this.destroy(); + } + } else { + this.trace(); + this.handle = requestAnimFrame(function() { + self.draw(); + }); + return; + } + + this.callback(this); + if (this.instanceCallback) { + this.instanceCallback(this); + this.instanceCallback = null; + } +}; + +/** + * Draw the SVG at the current instant from the + * `currentFrame` value. Here is where most of the magic is. + * The trick is to use the `strokeDashoffset` style property. + * + * For optimisation reasons, a new property called `progress` + * is added in each item of `map`. This one contain the current + * progress of the path element. Only if the new value is different + * the new value will be applied to the DOM element. This + * method save a lot of resources to re-render the SVG. And could + * be improved if the animation couldn't be played forward. + * + */ +Vivus.prototype.trace = function() { + var i, progress, path, currentFrame; + currentFrame = + this.animTimingFunction(this.currentFrame / this.frameLength) * + this.frameLength; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + progress = (currentFrame - path.startAt) / path.duration; + progress = this.pathTimingFunction(Math.max(0, Math.min(1, progress))); + if (path.progress !== progress) { + path.progress = progress; + path.el.style.strokeDashoffset = Math.floor(path.length * (1 - progress)); + this.renderPath(i); + } + } +}; + +/** + * Method forcing the browser to re-render a path element + * from it's index in the map. Depending on the `forceRender` + * value. + * The trick is to replace the path element by it's clone. + * This practice is not recommended because it's asking more + * ressources, too much DOM manupulation.. + * but it's the only way to let the magic happen on IE. + * By default, this fallback is only applied on IE. + * + * @param {Number} index Path index + */ +Vivus.prototype.renderPath = function(index) { + if (this.forceRender && this.map && this.map[index]) { + var pathObj = this.map[index], + newPath = pathObj.el.cloneNode(true); + pathObj.el.parentNode.replaceChild(newPath, pathObj.el); + pathObj.el = newPath; + } +}; + +/** + * When the SVG object is loaded and ready, + * this method will continue the initialisation. + * + * This this mainly due to the case of passing an + * object tag in the constructor. It will wait + * the end of the loading to initialise. + * + */ +Vivus.prototype.init = function() { + // Set object variables + this.frameLength = 0; + this.currentFrame = 0; + this.map = []; + + // Start + new Pathformer(this.el); + this.mapping(); + this.starter(); + + if (this.onReady) { + this.onReady(this); + } +}; + +/** + * Trigger to start of the animation. + * Depending on the `start` value, a different script + * will be applied. + * + * If the `start` value is not valid, an error will be thrown. + * Even if technically, this is impossible. + * + */ +Vivus.prototype.starter = function() { + switch (this.start) { + case 'manual': + return; + + case 'autostart': + this.play(); + break; + + case 'inViewport': + var self = this, + listener = function() { + if (self.isInViewport(self.parentEl, 1)) { + self.play(); + window.removeEventListener('scroll', listener); + } + }; + window.addEventListener('scroll', listener); + listener(); + break; + } +}; + +/** + * Controls + ************************************** + */ + +/** + * Get the current status of the animation between + * three different states: 'start', 'progress', 'end'. + * @return {string} Instance status + */ +Vivus.prototype.getStatus = function() { + return this.currentFrame === 0 + ? 'start' + : this.currentFrame === this.frameLength + ? 'end' + : 'progress'; +}; + +/** + * Reset the instance to the initial state : undraw + * Be careful, it just reset the animation, if you're + * playing the animation, this won't stop it. But just + * make it start from start. + * + */ +Vivus.prototype.reset = function() { + return this.setFrameProgress(0); +}; + +/** + * Set the instance to the final state : drawn + * Be careful, it just set the animation, if you're + * playing the animation on rewind, this won't stop it. + * But just make it start from the end. + * + */ +Vivus.prototype.finish = function() { + return this.setFrameProgress(1); +}; + +/** + * Set the level of progress of the drawing. + * + * @param {number} progress Level of progress to set + */ +Vivus.prototype.setFrameProgress = function(progress) { + progress = Math.min(1, Math.max(0, progress)); + this.currentFrame = Math.round(this.frameLength * progress); + this.trace(); + return this; +}; + +/** + * Play the animation at the desired speed. + * Speed must be a valid number (no zero). + * By default, the speed value is 1. + * But a negative value is accepted to go forward. + * + * And works with float too. + * But don't forget we are in JavaScript, se be nice + * with him and give him a 1/2^x value. + * + * @param {number} speed Animation speed [optional] + */ +Vivus.prototype.play = function(speed, callback) { + this.instanceCallback = null; + + if (speed && typeof speed === 'function') { + this.instanceCallback = speed; // first parameter is actually the callback function + speed = null; + } else if (speed && typeof speed !== 'number') { + throw new Error('Vivus [play]: invalid speed'); + } + // if the first parameter wasn't the callback, check if the seconds was + if (callback && typeof callback === 'function' && !this.instanceCallback) { + this.instanceCallback = callback; + } + + this.speed = speed || 1; + if (!this.handle) { + this.draw(); + } + return this; +}; + +/** + * Stop the current animation, if on progress. + * Should not trigger any error. + * + */ +Vivus.prototype.stop = function() { + if (this.handle) { + cancelAnimFrame(this.handle); + this.handle = null; + } + return this; +}; + +/** + * Destroy the instance. + * Remove all bad styling attributes on all + * path tags + * + */ +Vivus.prototype.destroy = function() { + this.stop(); + var i, path; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + path.el.style.strokeDashoffset = null; + path.el.style.strokeDasharray = null; + this.renderPath(i); + } +}; + +/** + * Utils methods + * include methods from Codrops + ************************************** + */ + +/** + * Method to best guess if a path should added into + * the animation or not. + * + * 1. Use the `data-vivus-ignore` attribute if set + * 2. Check if the instance must ignore invisible paths + * 3. Check if the path is visible + * + * For now the visibility checking is unstable. + * It will be used for a beta phase. + * + * Other improvments are planned. Like detecting + * is the path got a stroke or a valid opacity. + */ +Vivus.prototype.isInvisible = function(el) { + var rect, + ignoreAttr = el.getAttribute('data-ignore'); + + if (ignoreAttr !== null) { + return ignoreAttr !== 'false'; + } + + if (this.ignoreInvisible) { + rect = el.getBoundingClientRect(); + return !rect.width && !rect.height; + } else { + return false; + } +}; + +/** + * Parse attributes of a DOM element to + * get an object of {attributeName => attributeValue} + * + * @param {object} element DOM element to parse + * @return {object} Object of attributes + */ +Vivus.prototype.parseAttr = function(element) { + var attr, + output = {}; + if (element && element.attributes) { + for (var i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + output[attr.name] = attr.value; + } + } + return output; +}; + +/** + * Reply if an element is in the page viewport + * + * @param {object} el Element to observe + * @param {number} h Percentage of height + * @return {boolean} + */ +Vivus.prototype.isInViewport = function(el, h) { + var scrolled = this.scrollY(), + viewed = scrolled + this.getViewportH(), + elBCR = el.getBoundingClientRect(), + elHeight = elBCR.height, + elTop = scrolled + elBCR.top, + elBottom = elTop + elHeight; + + // if 0, the element is considered in the viewport as soon as it enters. + // if 1, the element is considered in the viewport only when it's fully inside + // value in percentage (1 >= h >= 0) + h = h || 0; + + return elTop + elHeight * h <= viewed && elBottom >= scrolled; +}; + +/** + * Get the viewport height in pixels + * + * @return {integer} Viewport height + */ +Vivus.prototype.getViewportH = function() { + var client = this.docElem.clientHeight, + inner = window.innerHeight; + + if (client < inner) { + return inner; + } else { + return client; + } +}; + +/** + * Get the page Y offset + * + * @return {integer} Page Y offset + */ +Vivus.prototype.scrollY = function() { + return window.pageYOffset || this.docElem.scrollTop; +}; + +setupEnv = function() { + if (Vivus.prototype.docElem) { + return; + } + + /** + * Alias for document element + * + * @type {DOMelement} + */ + Vivus.prototype.docElem = window.document.documentElement; + + /** + * Alias for `requestAnimationFrame` or + * `setTimeout` function for deprecated browsers. + * + */ + requestAnimFrame = (function() { + return ( + window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(/* function */ callback) { + return window.setTimeout(callback, 1000 / 60); + } + ); + })(); + + /** + * Alias for `cancelAnimationFrame` or + * `cancelTimeout` function for deprecated browsers. + * + */ + cancelAnimFrame = (function() { + return ( + window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + window.msCancelAnimationFrame || + function(id) { + return window.clearTimeout(id); + } + ); + })(); +}; + +/** + * Parse string to integer. + * If the number is not positive or null + * the method will return the default value + * or 0 if undefined + * + * @param {string} value String to parse + * @param {*} defaultValue Value to return if the result parsed is invalid + * @return {number} + * + */ +parsePositiveInt = function(value, defaultValue) { + var output = parseInt(value, 10); + return output >= 0 ? output : defaultValue; +}; + + + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([], function() { + return Vivus; + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = Vivus; + } else { + // Browser globals + window.Vivus = Vivus; + } + +}()); + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.min.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.min.js new file mode 100644 index 00000000..e6d6596a --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/dist/vivus.min.js @@ -0,0 +1 @@ +!function(){"use strict";function n(t){if(void 0===t)throw new Error('Pathformer [constructor]: "element" parameter is required');if(t.constructor===String&&!(t=document.getElementById(t)))throw new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID');if(!(t instanceof window.SVGElement||t instanceof window.SVGGElement||/^svg$/i.test(t.nodeName)))throw new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement');this.el=t,this.scan(t)}var r,e,t,p;function i(t,e,n){r(),this.isReady=!1,this.setElement(t,e),this.setOptions(e),this.setCallback(n),this.isReady&&this.init()}n.prototype.TYPES=["line","ellipse","circle","polygon","polyline","rect"],n.prototype.ATTR_WATCH=["cx","cy","points","r","rx","ry","x","x1","x2","y","y1","y2"],n.prototype.scan=function(t){for(var e,n,r,i=t.querySelectorAll(this.TYPES.join(",")),a=0;a=this.duration)throw new Error("Vivus [constructor]: delay must be shorter than duration")},i.prototype.setCallback=function(t){if(t&&t.constructor!==Function)throw new Error('Vivus [constructor]: "callback" parameter must be a function');this.callback=t||function(){}},i.prototype.mapping=function(){var t,e,n,r,i,a,o,s,h,l;for(s=a=o=0,e=this.el.querySelectorAll("path"),l=!1,t=0;t=this.frameLength))return this.trace(),void(this.handle=e(function(){t.draw()}));this.stop(),this.currentFrame=this.frameLength,this.trace(),this.selfDestroy&&this.destroy()}this.callback(this),this.instanceCallback&&(this.instanceCallback(this),this.instanceCallback=null)},i.prototype.trace=function(){var t,e,n,r;for(r=this.animTimingFunction(this.currentFrame/this.frameLength)*this.frameLength,t=0;t + + + + + + vivus.js - svg animation + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+

vivus, bringing your SVGs to life

+

Vivus is a lightweight JavaScript class (with no dependencies) that allows you to animate SVGs, giving them the appearence of being drawn. There are a variety of different animations available, as well as the option to create a custom script to draw your SVG in whatever way you like.

+ + +
+ + +
+
+ +

Animation types

+
+
+ + + + + + + + + + + + + + +
+

Delayed

+

Every path element is drawn at the same time with a small delay at the start. This is currently the default animation.

+ +
+
+ +
+ + + + + + + + + + + + + + +
+

Sync

+

Each line is drawn synchronously. They all start and finish at the same time, hence the name `sync`.

+ +
+
+ +
+ + + + + + + + + + + + + + +
+

OneByOne

+

Each path element is drawn one after the other. This animation gives the best impression of live drawing.

+ +
+
+
+
+
+
+ + +
+
+ +

Timing function

+

To give more freedom, it's possible to override the animation of each path and/or the entire SVG. It works a bit like the CSS animation timing function. But instead of using a cubic-bezier function, it use a simple JavaScript function. It must accept a number as parameter (between 0 to 1), then return a number (also between 0 and 1). It's a hook.

+

Here an example test to play around with the different properties available.

+ +
+ + + + + + + + + + +
+

Type + + + + + +

+

Path timing function + + + + + + + +

+

Anim timing function + + + + + + + +

+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Scenarize

+

This feature allows you to script the animation of your SVG. To do this, the custom values will be set directly in the DOM of the SVG.

+

Here is an example using scenario-sync.
I would recommend you look at the source code and the readme file for more information.

+ + +
+
+ +
+
+
+ + +
+
+

Play with it on Vivus instant.

+

More information and documentation on GitHub.

+
+
+ + +
+

Thanks for watching.

+

Made with love a keyboard

+
+ + + + + + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package-lock.json b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package-lock.json new file mode 100644 index 00000000..58ddfac5 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package-lock.json @@ -0,0 +1,4325 @@ +{ + "name": "vivus", + "version": "0.4.4", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true, + "optional": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-each": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.2.tgz", + "integrity": "sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "binary-extensions": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", + "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", + "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "date-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", + "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", + "dev": true + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "eslint": { + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.3.tgz", + "integrity": "sha512-vMGi0PjCHSokZxE0NLp2VneGw5sio7SSiDNgIUn2tC0XkWJRNOIoHIg3CliLVfXnJsiHxGAYrkw0PieAu8+KYQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.12.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "dev": true + }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "inquirer": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", + "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "jasmine-core": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.3.0.tgz", + "integrity": "sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "karma": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.0.1.tgz", + "integrity": "sha512-ind+4s03BqIXas7ZmraV3/kc5+mnqwCd+VDX1FndS6jxbt03kQKX2vXrWxNLuCjVYmhMwOZosAEKMM0a2q7w7A==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^2.3.2", + "chokidar": "^2.0.3", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.2.tgz", + "integrity": "sha512-eQawj4Cl3z/CjxslYy9ariU4uDh7cCNFZHNWXWRpl0pNeblY/4wHR7M7boTYXWrn9bY0z2pZmr11eKje/S/hIw==", + "dev": true, + "requires": { + "dateformat": "^1.0.6", + "istanbul": "^0.4.0", + "lodash": "^4.17.0", + "minimatch": "^3.0.0", + "source-map": "^0.5.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "karma-jasmine": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", + "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", + "dev": true, + "requires": { + "jasmine-core": "^3.3" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "log4js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.0.2.tgz", + "integrity": "sha512-KE7HjiieVDPPdveA3bJZSuu0n8chMkFl8mIoisBFxwEJ9FmXe4YzNuiqSwYUiR1K8q8/5/8Yd6AClENY1RA9ww==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^3.1.0", + "flatted": "^2.0.0", + "rfdc": "^1.1.2", + "streamroller": "^1.0.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "mime": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "dev": true + }, + "mime-db": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true + }, + "mime-types": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, + "requires": { + "mime-db": "~1.38.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.1.tgz", + "integrity": "sha512-I6YB/YEuDeUZMmhscXKxGgZlFnhsn5y0hgOZBadkzfTRrZBtJDZeg6eQf7PYMIEclwmorTKK8GztsyOUSVBREA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "parent-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", + "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rfdc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz", + "integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "streamroller": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.3.tgz", + "integrity": "sha512-P7z9NwP51EltdZ81otaGAN3ob+/F88USJE546joNq7bqRNTe6jc74fTBDyynxP4qpIfKlt/CesEYicuMzI0yJg==", + "dev": true, + "requires": { + "async": "^2.6.1", + "date-format": "^2.0.0", + "debug": "^3.1.0", + "fs-extra": "^7.0.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", + "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "dev": true, + "requires": { + "ajv": "^6.9.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "uglify-js": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.2.tgz", + "integrity": "sha512-imog1WIsi9Yb56yRt5TfYVxGmnWs3WSGU73ieSOlMVFwhJCA9W8fqFFMMj4kgDqiS/80LGdsYnWL7O9UcjEBlg==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package.json b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package.json new file mode 100644 index 00000000..46d7d789 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/package.json @@ -0,0 +1,35 @@ +{ + "name": "vivus", + "version": "0.4.6", + "description": "JavaScript library to make drawing animation on SVG", + "main": "dist/vivus.js", + "scripts": { + "test": "karma start test/karma.conf.js", + "serve": "python -m SimpleHTTPServer 8844", + "lint": "./node_modules/eslint/bin/eslint.js src test", + "build": "npm run build-raw && npm run build-min", + "build-raw": "node src/_build.js > dist/vivus.js", + "build-min": "uglifyjs dist/vivus.js -o dist/vivus.min.js -c -m --source-map" + }, + "repository": { + "type": "git", + "url": "https://github.com/maxwellito/vivus.git" + }, + "author": "maxwellito", + "license": "MIT", + "bugs": { + "url": "https://github.com/maxwellito/vivus/issues" + }, + "homepage": "https://github.com/maxwellito/vivus", + "engine": { + "node": ">=0.10.22" + }, + "devDependencies": { + "eslint": "^5.15.3", + "karma": "^4.0.1", + "karma-chrome-launcher": "^2.2.0", + "karma-coverage": "^1.1.2", + "karma-jasmine": "^2.0.1", + "uglify-js": "^3.5.2" + } +} diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/readme.md b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/readme.md new file mode 100644 index 00000000..06d57ba7 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/readme.md @@ -0,0 +1,352 @@ +# vivus.js + +Demo available on http://maxwellito.github.io/vivus + +Play with it on [Vivus Instant](https://maxwellito.github.io/vivus-instant/) + +Vivus is a lightweight JavaScript class (with no dependencies) that allows you to animate SVGs, giving them the appearance of being drawn. There are a variety of different animations available, as well as the option to create a custom script to draw your SVG in whatever way you like. + +Available via: + +- [NPM](https://www.npmjs.com/package/vivus): `npm install vivus` +- [Bower](http://bower.io/): `bower install vivus` +- [jsDelivr CDN](http://www.jsdelivr.com/#!vivus): `//cdn.jsdelivr.net/npm/vivus@latest/dist/vivus.min.js` +- [CDNJS CDN](https://cdnjs.com/libraries/vivus) +- [WebJars](http://www.webjars.org/) + +Join the conversation on [Gitter](https://gitter.im/maxwellito/vivus) + +Try Vivus with your SVG on [Vivus Instant](https://maxwellito.github.io/vivus-instant/). If you plan to use the library to animate a single SVG without callback or controls, this will allow you to download your animated SVG, powered by CSS, JavaScript free. + +## Animations + +On the following images, the pink color represents the `duration` value, and the blue one is for `delay` value. + +### Delayed + +![Timeline for delayed animation](https://raw.github.com/maxwellito/vivus/master/assets/delayed.png) + +Every path element is drawn at the same time with a small delay at the start. This is currently the default animation. + +### Sync + +![Timeline for sync animation](https://raw.github.com/maxwellito/vivus/master/assets/sync.png) + +Each line is drawn synchronously. They all start and finish at the same time, hence the name `sync`. + +### OneByOne + +![Timeline for oneByOne animation](https://raw.github.com/maxwellito/vivus/master/assets/oneByOne.png) + +Each path element is drawn one after the other. This animation gives the best impression of live drawing. The duration for each line depends on their length to make a constant drawing speed. + +## Principles + +To get this effect, the script uses the CSS property `strokeDashoffset`. This property manages the stroke offset on every line of the SVG. Now, all we have to do is add some JavaScript to update this value progressively and the magic begins. + +However, there's a problem with this. The `strokeDashoffset` property is only available on the path elements. This is an issue because in an SVG there are a lot of elements such as `circle`, `rect`, `line` and `polyline` which will break the animation. So to fix this, there is another class available in the repo called `pathformer`. It's made for transforming all objects of your SVG into `path` elements to be able to use `strokeDashoffset` and animate your SVGs. + +_The animation always draws elements in the same order as they are defined in the SVG tag._ + +There are few conditions that your SVG must meet: + +- All elements must have a stroke property and cannot be filled. This is because the animation only looks to progressively draw strokes and will not check for filled colours. For example: fill: "none"; stroke: "#FFF"; + +- You should avoid creating any hidden path elements in your SVG. Vivus considers them all eligible to be animated, so it is advised to remove them before playing with it. If they are not removed the animation might not achieve the desired effect, with blank areas and gaps appearing. + +- `text` elements aren't allowed, they cannot be transformed into `path` elements. See [#22](https://github.com/maxwellito/vivus/issues/22) for more details. + +The code is inspired from other repositories. The drawer is inspired from the excellent [Codrops](http://tympanus.net/codrops/) about the post [SVG Drawing Animation](http://tympanus.net/codrops/2013/12/30/svg-drawing-animation/) (if you don't know this website, get ready to have your mind blown). Then for the pathformer, there is a lot of work from [SVGPathConverter](https://github.com/Waest/SVGPathConverter) by [Waest](https://github.com/Waest). + +## Usage + +As I said, no dependencies here. All you need to do is include the scripts. + +**Inline SVG** + +```html + + + + + + + +``` + +**Dynamic load** + +```html + + + +``` + +or + +```html +
+ + +``` + +By default the `object` created will take the size of the parent element, this one must have a height and width or your SVG might not appear. + +If you need to edit this object, it is accessible in the `onReady` callback: + +```js +new Vivus('my-div-id', { + file: 'link/to/my.svg', + onReady: function (myVivus) { + // `el` property is the SVG element + myVivus.el.setAttribute('height', 'auto'); + } +}); +``` + +Check out the [hacks page](https://github.com/maxwellito/vivus/blob/master/hacks.md) for more tricks. + +### Constructor + +The Vivus constructor asks for 3 parameters: + +- ID (or object) of DOM element to interact with.
It can be an inline SVG or a wrapper element to append an object tag from the option `file` +- Option object (described in the following | +- Callback to call at the end of the animation (optional) + +### Option list + +| Name | Type | Description | +| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | string | Defines what kind of animation will be used: `delayed`, `sync`, `oneByOne`, `script`, `scenario` or `scenario-sync`. [Default: `delayed`] | +| `file` | string | Link to the SVG to animate. If set, Vivus will create an object tag and append it to the DOM element given to the constructor. Be careful, use the `onReady` callback before playing with the Vivus instance. | +| `start` | string | Defines how to trigger the animation (`inViewport` once the SVG is in the viewport, `manual` gives you the freedom to call draw method to start, `autostart` makes it start right now). [Default: `inViewport`] | +| `duration` | integer | Animation duration, in frames. [Default: `200`] | +| `delay` | integer | Time between the drawing of first and last path, in frames (only for `delayed` animations). | +| `onReady` | function | Function called when the instance is ready to play. | +| `pathTimingFunction` | function | Timing animation function for each path element of the SVG. Check the [timing function part](#timing-function). | +| `animTimingFunction` | function | Timing animation function for the complete SVG. Check the [timing function part](#timing-function). | +| `dashGap` | integer | Whitespace extra margin between dashes. Increase it in case of glitches at the initial state of the animation. [Default: `2`] | +| `forceRender` | boolean | Force the browser to re-render all updated path items. By default, the value is `true` on IE only. (check the 'troubleshoot' section for more details). | +| `reverseStack` | boolean | Reverse the order of execution. The default behaviour is to render from the first 'path' in the SVG to the last one. This option allow you to reverse the order. [Default: `false`] | +| `selfDestroy` | boolean | Removes all extra styling on the SVG, and leaves it as original. | + +### Methods + +| Name | Description | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `play(speed, callback)` | Plays the animation with the speed given in parameter. This value can be negative to go backward, between 0 and 1 to go slowly, >1 to go faster, or <0 to go in reverse from current state. [Default: `1`]. Callback executed after the animation is finished (optional) | +| `stop()` | Stops the animation. | +| `reset()` | Reinitialises the SVG to the original state: undrawn. | +| `finish()` | Set the SVG to the final state: drawn. | +| `setFrameProgress(progress)` | Set the progress of the animation. Progress must be a number between 0 and 1. | +| `getStatus()` | Get the status of the animation between `start`, `progress`, `end` | +| `destroy()` | Reset the SVG but make the instance out of order. | + +These methods return the object so you can chain the actions. + +```js +const myVivus = new Vivus('my-svg-id'); +myVivus.stop().reset().play(2); +``` + +#### Play method callback + +Instead of using the global constructor callback when you create the Vivus object, you can add callbacks to be +executed for specific `play` method calls. + +```js +const myVivus = new Vivus('my-svg-id'); +myVivus.play(1, function () { + // called after the animation completes +}); + +// alternativly if you leave the speed param blank and use the default, you +// can pass the callback as the first parameter like so. +myVivus.play(function () { + // called after the animation completes +}); +``` + +## Timing function + +To give more freedom, it's possible to override the animation of each path and/or the entire SVG. It works a bit like the CSS animation timing function. But instead of using a cubic-bezier function, it use a simple JavaScript function. It must accept a number as parameter (between 0 to 1), then return a number (also between 0 and 1). It's a hook. + +If you don't want to create your own, timing methods are available via the constructor object: `EASE`, `EASE_IN`, `EASE_OUT` and `EASE_OUT_BOUNCE`. Then set it in the option object to enjoy them. + +```js +// Here, the ease animation will be use for the global drawing. +new Vivus( + 'my-svg-id', + { + type: 'delayed', + duration: 200, + animTimingFunction: Vivus.EASE + }, + myCallback +); +``` + +**WARNING**: `animTimingFunction` is called at every frame of the animation, and `pathTimingFunction` is also called at every frame for each path of your SVG. So be careful about them. Keep it simple, or it can affect the performance. + +## Extra attributes + +The attribute `data-ignore` allows you to ignore path tags from the vivus animation. + +```html + + + + + +``` + +In this case, the second path won't be part of the animation. + +## Scenarize + +This feature allows you to script the animation of your SVG. For this, the custom values will be set directly in the DOM of the SVG. + +### `scenario` + +This type is easier to understand, but longer to implement. You just have to define the start and duration of each element with `data-start` and `data-duration` attributes. If it is missing, it will use the default value given to the constructor. +The best part of this type is the flexibility it provides. You don't have to respect the order/stack of the SVG and you can start with the last element, then continue with the first to finish with all the rest at the same time. + +You will then have to define custom rules for each element in your SVG via extra attributes in your SVG DOM : + +- `data-start` (integer) + time when the animation must start, in frames +- `data-duration` (integer) + animation duration of this path, in frames + +```html + + + + + + +``` + +### `scenario-sync` + +It's not the sexiest code ever, but it's quite flexible. In addition to this, the behaviour is fairly different. +By using this animation type, the default behaviour is the same as `oneByOne`. However, you can define some properties on a specific path item such as the duration, the delay to start (from the end of the previous path) and if it should be played synchronously. + +- `data-delay` (integer) + time between the end of the animation of the previous path and the start of the current path, in frames +- `data-duration` (integer) + duration of this path animation, in frames +- `data-async` (no value required) + make the drawing of this path asynchronous. It means the next path will start at the same time. + If a path does not have an attribute for duration or delay then the default values, set in the options, will be used. + +Example: here is a simple SVG containing 5 elements. With the following options `{duration: 20, delay: 0}`, we should get this timeline + +![Timeline for script animation by default](https://raw.github.com/maxwellito/vivus/master/assets/script_default.png) + +This looks like 'oneByOne' animation, synchronous mode. But to make it a bit custom, here is what I can do: + +```html + + + + + + + +``` + +This scenario should give us + +![Timeline for this custom script animation](https://raw.github.com/maxwellito/vivus/master/assets/script_custom.png) + +I'm sorry if it does not look very sexy, and it's not really easy to use. I'm happy to make any changes, as long as the idea sounds interesting. Post an issue and I'll be very happy to talk about it! + +## Non Scaling + +Some SVG elements might use non scaling properties such as `vector-effect="non-scaling-stroke"`, which requires some additional custom logic. On instance construction Vivus will map all the child elements in the SVG and calculate their line length. If the element is resized during the animation, the calculated stroke style properties become invalid and the SVG will display incorrectly. + +To keep animation consistency, the method `recalc` should be called when the SVG is resized. It will re-calculate the line length on affected child elements on the next frame calculation. + +Code example: + +```js +// Create your Vivus instance +const vivusObject = new Vivus('my-div', { + duration: 200, + file: 'link/to/my.svg', +}); + +// Create your observer and set up a callback on resize +const resizeObserver = new ResizeObserver((entries) => { + // Recalculate the line lengths + vivusObject.recalc(); +}); + +resizeObserver.observe(vivusObject.el); +``` + +Vivus will provide a warning in the console when it detects stroke scaling. + +## Development + +To make it simpler a gulp file is set up to automise minifying, JShint and tests. +If you have never used Gulp before this is a good opportunity. To use it, you need to install NodeJS first then run `sudo npm install -g gulp`. + +To start, you will need to install the repo dependencies: + +```bash +$ npm install +``` + +Then you can use NPM scripts to run the following tasks: + +- `build` make the build (generate `dist/vivus.js` and `dist/vivus.min.js`) +- `lint` run ESlint on the source files +- `test` run Karma + +## Troubleshoot + +### Internet Explorer + +Some SVG weren't working at all. The only solution found was to clone and replace each updated path element. Of course this solution requires more resources and a lot of DOM manipulation, but it will give a smooth animation like other browsers. This fallback is only applied on Internet Explorer (all versions), and can be disabled via the option `forceRender`. + +Replacing each updated path by a clone was the only way to force IE to re-render the SVG. On some SVGs this trick is not necessary, but IE can be a bit tricky with this. If you're worried about performance, I would recommend checking if your SVG works correctly by disabling the `forceRender` option. If it works correctly on IE, then keep it like this. + +By default, `forceRender` is `true` on Internet Explorer only. + +### Firefox + +For Firefox users, you might encounter some glitches depending on your SVG and browser version. On versions before 36, there is a problem retrieving path length via `getTotalLength` method. Returning 174321516544 instead of 209 (I'm not exaggerating, this comes from a real case), messing up the entire animation treatment. Unfortunately, there's nothing that this library can do, this is due to Firefox. I hope to find a workaround, but at the moment I can only recommend that you test your animation on previous versions of Firefox. + +## Debug + +For an easier debug have a look to the attribute `map` of your Vivus object. This contains the mapping of your animation. If you're using a modern browser, I recommend `console.table` to get a nice output of the array which will make your debug easier. + +```javascript +const logo = new Vivus('myLogo', { type: 'scenario-sync' }); + +// The property 'map' contain all the SVG mapping +console.table(logo.map); +``` + +## Special thanks! + +Thanks to all contributors! Also users who pushed me to improve the library by publishing it on NPM, or browser compatibility or features. Also thanks for fixing my awful english :) + +- [@jolic](https://github.com/jolic) for dynamic SVG loading, ignore invisible paths, infinite and beyond... +- [@BenMcGeachy](https://github.com/BenMcGeachy) for making the documentation understandable +- [@TranscendOfSypherus](https://github.com/TranscendOfSypherus) for fixing the PathFormer +- [@flyingfisch](https://github.com/flyingfisch) for general helping with issues +- [@morgangiraud](https://github.com/morgangiraud) on the ignore invisible paths +- [@Nerdissimo](https://github.com/Nerdissimo) for inserting SVG without `object` wrapper +- [@jsimnz](https://github.com/jsimnz) for adding callbacks to play method + +and many others... diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/_build.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/_build.js new file mode 100644 index 00000000..eed30c70 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/_build.js @@ -0,0 +1,36 @@ +var fs = require('fs'); +var pkg = require('../package.json'); +var vivus = fs.readFileSync('src/vivus.js', { encoding: 'utf8' }); +var pathformer = fs.readFileSync('src/pathformer.js', { encoding: 'utf8' }); + +var output = `/** + * ${pkg.name} - ${pkg.description} + * @version v${pkg.version} + * @link ${pkg.homepage} + * @license ${pkg.license} + */ + +(function () { + + ${pathformer} + ${vivus} + + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([], function() { + return Vivus; + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = Vivus; + } else { + // Browser globals + window.Vivus = Vivus; + } + +}()); +`; + +console.log(output); diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/pathformer.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/pathformer.js new file mode 100755 index 00000000..06747130 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/pathformer.js @@ -0,0 +1,276 @@ +'use strict'; + +/** + * Pathformer + * Beta version + * + * Take any SVG version 1.1 and transform + * child elements to 'path' elements + * + * This code is purely forked from + * https://github.com/Waest/SVGPathConverter + */ + +/** + * Class constructor + * + * @param {DOM|String} element Dom element of the SVG or id of it + */ +function Pathformer(element) { + // Test params + if (typeof element === 'undefined') { + throw new Error('Pathformer [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID'); + } + } + if (element instanceof window.SVGElement || + element instanceof window.SVGGElement || + /^svg$/i.test(element.nodeName)) { + this.el = element; + } else { + throw new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement'); + } + + // Start + this.scan(element); +} + +/** + * List of tags which can be transformed + * to path elements + * + * @type {Array} + */ +Pathformer.prototype.TYPES = ['line', 'ellipse', 'circle', 'polygon', 'polyline', 'rect']; + +/** + * List of attribute names which contain + * data. This array list them to check if + * they contain bad values, like percentage. + * + * @type {Array} + */ +Pathformer.prototype.ATTR_WATCH = ['cx', 'cy', 'points', 'r', 'rx', 'ry', 'x', 'x1', 'x2', 'y', 'y1', 'y2']; + +/** + * Finds the elements compatible for transform + * and apply the liked method + * + * @param {object} options Object from the constructor + */ +Pathformer.prototype.scan = function (svg) { + var fn, element, pathData, pathDom, + elements = svg.querySelectorAll(this.TYPES.join(',')); + + for (var i = 0; i < elements.length; i++) { + element = elements[i]; + fn = this[element.tagName.toLowerCase() + 'ToPath']; + pathData = fn(this.parseAttr(element.attributes)); + pathDom = this.pathMaker(element, pathData); + element.parentNode.replaceChild(pathDom, element); + } +}; + + +/** + * Read `line` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Line element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.lineToPath = function (element) { + var newElement = {}, + x1 = element.x1 || 0, + y1 = element.y1 || 0, + x2 = element.x2 || 0, + y2 = element.y2 || 0; + + newElement.d = 'M' + x1 + ',' + y1 + 'L' + x2 + ',' + y2; + return newElement; +}; + +/** + * Read `rect` element to extract and transform + * data, to make it ready for a `path` object. + * The radius-border is not taken in charge yet. + * (your help is more than welcomed) + * + * @param {DOMelement} element Rect element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.rectToPath = function (element) { + var newElement = {}, + x = parseFloat(element.x) || 0, + y = parseFloat(element.y) || 0, + width = parseFloat(element.width) || 0, + height = parseFloat(element.height) || 0; + + if (element.rx || element.ry) { + var rx = parseInt(element.rx, 10) || -1, + ry = parseInt(element.ry, 10) || -1; + rx = Math.min(Math.max(rx < 0 ? ry : rx, 0), width/2); + ry = Math.min(Math.max(ry < 0 ? rx : ry, 0), height/2); + + newElement.d = 'M ' + (x + rx) + ',' + y + ' ' + + 'L ' + (x + width - rx) + ',' + y + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width) + ',' + (y + ry) + ' ' + + 'L ' + (x + width) + ',' + (y + height - ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width - rx) + ',' + (y + height) + ' ' + + 'L ' + (x + rx) + ',' + (y + height) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + x + ',' + (y + height - ry) + ' ' + + 'L ' + x + ',' + (y + ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + rx) + ',' + y; + } + else { + newElement.d = 'M' + x + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + (y + height) + ' ' + + 'L' + x + ' ' + (y + height) + ' Z'; + } + return newElement; +}; + +/** + * Read `polyline` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Polyline element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polylineToPath = function (element) { + var newElement = {}, + points = element.points.trim().split(' '), + i, path; + + // Reformatting if points are defined without commas + if (element.points.indexOf(',') === -1) { + var formattedPoints = []; + for (i = 0; i < points.length; i+=2) { + formattedPoints.push(points[i] + ',' + points[i+1]); + } + points = formattedPoints; + } + + // Generate the path.d value + path = 'M' + points[0]; + for(i = 1; i < points.length; i++) { + if (points[i].indexOf(',') !== -1) { + path += 'L' + points[i]; + } + } + newElement.d = path; + return newElement; +}; + +/** + * Read `polygon` element to extract and transform + * data, to make it ready for a `path` object. + * This method rely on polylineToPath, because the + * logic is similar. The path created is just closed, + * so it needs an 'Z' at the end. + * + * @param {DOMelement} element Polygon element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polygonToPath = function (element) { + var newElement = Pathformer.prototype.polylineToPath(element); + + newElement.d += 'Z'; + return newElement; +}; + +/** + * Read `ellipse` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element ellipse element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.ellipseToPath = function (element) { + var newElement = {}, + rx = parseFloat(element.rx) || 0, + ry = parseFloat(element.ry) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - rx, + startY = cy, + endX = parseFloat(cx) + parseFloat(rx), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + endX + ',' + endY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Read `circle` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Circle element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.circleToPath = function (element) { + var newElement = {}, + r = parseFloat(element.r) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - r, + startY = cy, + endX = parseFloat(cx) + parseFloat(r), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + r + ',' + r + ' 0,1,1 ' + endX + ',' + endY + + 'A' + r + ',' + r + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Create `path` elements form original element + * and prepared objects + * + * @param {DOMelement} element Original element to transform + * @param {object} pathData Path data (from `toPath` methods) + * @return {DOMelement} Path element + */ +Pathformer.prototype.pathMaker = function (element, pathData) { + var i, attr, pathTag = document.createElementNS('http://www.w3.org/2000/svg','path'); + for(i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + if (this.ATTR_WATCH.indexOf(attr.name) === -1) { + pathTag.setAttribute(attr.name, attr.value); + } + } + for(i in pathData) { + pathTag.setAttribute(i, pathData[i]); + } + return pathTag; +}; + +/** + * Parse attributes of a DOM element to + * get an object of attribute => value + * + * @param {NamedNodeMap} attributes Attributes object from DOM element to parse + * @return {object} Object of attributes + */ +Pathformer.prototype.parseAttr = function (element) { + var attr, output = {}; + for (var i = 0; i < element.length; i++) { + attr = element[i]; + // Check if no data attribute contains '%', or the transformation is impossible + if (this.ATTR_WATCH.indexOf(attr.name) !== -1 && attr.value.indexOf('%') !== -1) { + throw new Error('Pathformer [parseAttr]: a SVG shape got values in percentage. This cannot be transformed into \'path\' tags. Please use \'viewBox\'.'); + } + output[attr.name] = attr.value; + } + return output; +}; diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/vivus.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/vivus.js new file mode 100755 index 00000000..b6e6767d --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/src/vivus.js @@ -0,0 +1,917 @@ +'use strict'; + +var setupEnv, requestAnimFrame, cancelAnimFrame, parsePositiveInt; + +/** + * Vivus + * Beta version + * + * Take any SVG and make the animation + * to give give the impression of live drawing + * + * This in more than just inspired from codrops + * At that point, it's a pure fork. + */ + +/** + * Class constructor + * option structure + * type: 'delayed'|'sync'|'oneByOne'|'script' (to know if the items must be drawn synchronously or not, default: delayed) + * duration: (in frames) + * start: 'inViewport'|'manual'|'autostart' (start automatically the animation, default: inViewport) + * delay: (delay between the drawing of first and last path) + * dashGap whitespace extra margin between dashes + * pathTimingFunction timing animation function for each path element of the SVG + * animTimingFunction timing animation function for the complete SVG + * forceRender force the browser to re-render all updated path items + * selfDestroy removes all extra styling on the SVG, and leaves it as original + * + * The attribute 'type' is by default on 'delayed'. + * - 'delayed' + * all paths are draw at the same time but with a + * little delay between them before start + * - 'sync' + * all path are start and finish at the same time + * - 'oneByOne' + * only one path is draw at the time + * the end of the first one will trigger the draw + * of the next one + * + * All these values can be overwritten individually + * for each path item in the SVG + * The value of frames will always take the advantage of + * the duration value. + * If you fail somewhere, an error will be thrown. + * Good luck. + * + * @constructor + * @this {Vivus} + * @param {DOM|String} element Dom element of the SVG or id of it + * @param {Object} options Options about the animation + * @param {Function} callback Callback for the end of the animation + */ +function Vivus(element, options, callback) { + setupEnv(); + + // Setup + this.isReady = false; + this.setElement(element, options); + this.setOptions(options); + this.setCallback(callback); + + if (this.isReady) { + this.init(); + } +} + +/** + * Timing functions + ************************************** + * + * Default functions to help developers. + * It always take a number as parameter (between 0 to 1) then + * return a number (between 0 and 1) + */ +Vivus.LINEAR = function(x) { + return x; +}; +Vivus.EASE = function(x) { + return -Math.cos(x * Math.PI) / 2 + 0.5; +}; +Vivus.EASE_OUT = function(x) { + return 1 - Math.pow(1 - x, 3); +}; +Vivus.EASE_IN = function(x) { + return Math.pow(x, 3); +}; +Vivus.EASE_OUT_BOUNCE = function(x) { + var base = -Math.cos(x * (0.5 * Math.PI)) + 1, + rate = Math.pow(base, 1.5), + rateR = Math.pow(1 - x, 2), + progress = -Math.abs(Math.cos(rate * (2.5 * Math.PI))) + 1; + return 1 - rateR + progress * rateR; +}; + +/** + * Setters + ************************************** + */ + +/** + * Check and set the element in the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {DOM|String} element SVG Dom element or id of it + */ +Vivus.prototype.setElement = function(element, options) { + var onLoad, self; + + // Basic check + if (typeof element === 'undefined') { + throw new Error('Vivus [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error( + 'Vivus [constructor]: "element" parameter is not related to an existing ID' + ); + } + } + this.parentEl = element; + + // Load the SVG with XMLHttpRequest and extract the SVG + if (options && options.file) { + self = this; + onLoad = function() { + var domSandbox = document.createElement('div'); + domSandbox.innerHTML = this.responseText; + + var svgTag = domSandbox.querySelector('svg'); + if (!svgTag) { + throw new Error( + 'Vivus [load]: Cannot find the SVG in the loaded file : ' + + options.file + ); + } + + self.el = svgTag; + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + self.parentEl.appendChild(self.el); + self.isReady = true; + self.init(); + self = null; + }; + + var oReq = new window.XMLHttpRequest(); + oReq.addEventListener('load', onLoad); + oReq.open('GET', options.file); + oReq.send(); + return; + } + + switch (element.constructor) { + case window.SVGSVGElement: + case window.SVGElement: + case window.SVGGElement: + this.el = element; + this.isReady = true; + break; + + case window.HTMLObjectElement: + self = this; + onLoad = function(e) { + if (self.isReady) { + return; + } + self.el = + element.contentDocument && + element.contentDocument.querySelector('svg'); + if (!self.el && e) { + throw new Error( + 'Vivus [constructor]: object loaded does not contain any SVG' + ); + } else if (self.el) { + if (element.getAttribute('built-by-vivus')) { + self.parentEl.insertBefore(self.el, element); + self.parentEl.removeChild(element); + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + } + self.isReady = true; + self.init(); + self = null; + } + }; + + if (!onLoad()) { + element.addEventListener('load', onLoad); + } + break; + + default: + throw new Error( + 'Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)' + ); + } +}; + +/** + * Set up user option to the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {object} options Object from the constructor + */ +Vivus.prototype.setOptions = function(options) { + var allowedTypes = [ + 'delayed', + 'sync', + 'async', + 'nsync', + 'oneByOne', + 'scenario', + 'scenario-sync' + ]; + var allowedStarts = ['inViewport', 'manual', 'autostart']; + + // Basic check + if (options !== undefined && options.constructor !== Object) { + throw new Error( + 'Vivus [constructor]: "options" parameter must be an object' + ); + } else { + options = options || {}; + } + + // Set the animation type + if (options.type && allowedTypes.indexOf(options.type) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.type + + ' is not an existing animation `type`' + ); + } else { + this.type = options.type || allowedTypes[0]; + } + + // Set the start type + if (options.start && allowedStarts.indexOf(options.start) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.start + + ' is not an existing `start` option' + ); + } else { + this.start = options.start || allowedStarts[0]; + } + + this.isIE = + window.navigator.userAgent.indexOf('MSIE') !== -1 || + window.navigator.userAgent.indexOf('Trident/') !== -1 || + window.navigator.userAgent.indexOf('Edge/') !== -1; + this.duration = parsePositiveInt(options.duration, 120); + this.delay = parsePositiveInt(options.delay, null); + this.dashGap = parsePositiveInt(options.dashGap, 1); + this.forceRender = options.hasOwnProperty('forceRender') + ? !!options.forceRender + : this.isIE; + this.reverseStack = !!options.reverseStack; + this.selfDestroy = !!options.selfDestroy; + this.onReady = options.onReady; + this.map = []; + this.frameLength = this.currentFrame = this.delayUnit = this.speed = this.handle = null; + + this.ignoreInvisible = options.hasOwnProperty('ignoreInvisible') + ? !!options.ignoreInvisible + : false; + + this.animTimingFunction = options.animTimingFunction || Vivus.LINEAR; + this.pathTimingFunction = options.pathTimingFunction || Vivus.LINEAR; + + if (this.delay >= this.duration) { + throw new Error('Vivus [constructor]: delay must be shorter than duration'); + } +}; + +/** + * Set up callback to the instance + * The method will not return enything, but will throw an + * error if the parameter is invalid + * + * @param {Function} callback Callback for the animation end + */ +Vivus.prototype.setCallback = function(callback) { + // Basic check + if (!!callback && callback.constructor !== Function) { + throw new Error( + 'Vivus [constructor]: "callback" parameter must be a function' + ); + } + this.callback = callback || function() {}; +}; + +/** + * Core + ************************************** + */ + +/** + * Map the svg, path by path. + * The method return nothing, it just fill the + * `map` array. Each item in this array represent + * a path element from the SVG, with informations for + * the animation. + * + * ``` + * [ + * { + * el: the path element + * length: length of the path line + * startAt: time start of the path animation (in frames) + * duration: path animation duration (in frames) + * }, + * ... + * ] + * ``` + * + */ +Vivus.prototype.mapping = function() { + var i, paths, path, pAttrs, pathObj, totalLength, lengthMeter, timePoint, scale, hasNonScale; + timePoint = totalLength = lengthMeter = 0; + paths = this.el.querySelectorAll('path'); + hasNonScale = false; + + for (i = 0; i < paths.length; i++) { + path = paths[i]; + if (this.isInvisible(path)) { + continue; + } + + pathObj = { + el: path, + length: 0, + startAt: 0, + duration: 0, + isResizeSensitive: false + }; + + // If vector effect is non-scaling-stroke, the total length won't match the rendered length + // so we need to calculate the scale and apply it + if (path.getAttribute('vector-effect') === 'non-scaling-stroke') { + var rect = path.getBoundingClientRect(); + var box = path.getBBox(); + scale = Math.max(rect.width / box.width, rect.height / box.height); + pathObj.isResizeSensitive = true; + hasNonScale = true; + } else { + scale = 1; + } + pathObj.length = Math.ceil(path.getTotalLength() * scale); + + // Test if the path length is correct + if (isNaN(pathObj.length)) { + if (window.console && console.warn) { + console.warn( + 'Vivus [mapping]: cannot retrieve a path element length', + path + ); + } + continue; + } + this.map.push(pathObj); + path.style.strokeDasharray = + pathObj.length + ' ' + (pathObj.length + this.dashGap * 2); + path.style.strokeDashoffset = pathObj.length + this.dashGap; + pathObj.length += this.dashGap; + totalLength += pathObj.length; + + this.renderPath(i); + } + + // Show a warning for non-scaling elements + if (hasNonScale) { + console.warn('Vivus: this SVG contains non-scaling-strokes. You should call instance.recalc() when the SVG is resized or you will encounter unwanted behaviour. See https://github.com/maxwellito/vivus#non-scaling for more info.'); + } + + totalLength = totalLength === 0 ? 1 : totalLength; + this.delay = this.delay === null ? this.duration / 3 : this.delay; + this.delayUnit = this.delay / (paths.length > 1 ? paths.length - 1 : 1); + + // Reverse stack if asked + if (this.reverseStack) { + this.map.reverse(); + } + + for (i = 0; i < this.map.length; i++) { + pathObj = this.map[i]; + + switch (this.type) { + case 'delayed': + pathObj.startAt = this.delayUnit * i; + pathObj.duration = this.duration - this.delay; + break; + + case 'oneByOne': + pathObj.startAt = (lengthMeter / totalLength) * this.duration; + pathObj.duration = (pathObj.length / totalLength) * this.duration; + break; + + case 'sync': + case 'async': + case 'nsync': + pathObj.startAt = 0; + pathObj.duration = this.duration; + break; + + case 'scenario-sync': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + timePoint + + (parsePositiveInt(pAttrs['data-delay'], this.delayUnit) || 0); + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + timePoint = + pAttrs['data-async'] !== undefined + ? pathObj.startAt + : pathObj.startAt + pathObj.duration; + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + + case 'scenario': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + parsePositiveInt(pAttrs['data-start'], this.delayUnit) || 0; + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + } + lengthMeter += pathObj.length; + this.frameLength = this.frameLength || this.duration; + } +}; + +/** + * Public method to re-evaluate line length for non-scaling lines + * path elements. + */ +Vivus.prototype.recalc = function () { + if (this.mustRecalcScale) { + return; + } + this.mustRecalcScale = requestAnimFrame(function () { + this.performLineRecalc(); + }.bind(this)); +} + +/** + * Private method to re-evaluate line length on non-scaling + * path elements. Then call for a trace to update the SVG. + */ +Vivus.prototype.performLineRecalc = function () { + var pathObj, path, rect, box, scale; + for (var i = 0; i < this.map.length; i++) { + pathObj = this.map[i]; + if (pathObj.isResizeSensitive) { + path = pathObj.el; + rect = path.getBoundingClientRect(); + box = path.getBBox(); + scale = Math.max(rect.width / box.width, rect.height / box.height); + pathObj.length = Math.ceil(path.getTotalLength() * scale); + path.style.strokeDasharray = pathObj.length + ' ' + (pathObj.length + this.dashGap * 2); + } + } + this.trace(); + this.mustRecalcScale = null; +} + +/** + * Interval method to draw the SVG from current + * position of the animation. It update the value of + * `currentFrame` and re-trace the SVG. + * + * It use this.handle to store the requestAnimationFrame + * and clear it one the animation is stopped. So this + * attribute can be used to know if the animation is + * playing. + * + * Once the animation at the end, this method will + * trigger the Vivus callback. + * + */ +Vivus.prototype.draw = function() { + var self = this; + this.currentFrame += this.speed; + + if (this.currentFrame <= 0) { + this.stop(); + this.reset(); + } else if (this.currentFrame >= this.frameLength) { + this.stop(); + this.currentFrame = this.frameLength; + this.trace(); + if (this.selfDestroy) { + this.destroy(); + } + } else { + this.trace(); + this.handle = requestAnimFrame(function() { + self.draw(); + }); + return; + } + + this.callback(this); + if (this.instanceCallback) { + this.instanceCallback(this); + this.instanceCallback = null; + } +}; + +/** + * Draw the SVG at the current instant from the + * `currentFrame` value. Here is where most of the magic is. + * The trick is to use the `strokeDashoffset` style property. + * + * For optimisation reasons, a new property called `progress` + * is added in each item of `map`. This one contain the current + * progress of the path element. Only if the new value is different + * the new value will be applied to the DOM element. This + * method save a lot of resources to re-render the SVG. And could + * be improved if the animation couldn't be played forward. + * + */ +Vivus.prototype.trace = function() { + var i, progress, path, currentFrame; + currentFrame = + this.animTimingFunction(this.currentFrame / this.frameLength) * + this.frameLength; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + progress = (currentFrame - path.startAt) / path.duration; + progress = this.pathTimingFunction(Math.max(0, Math.min(1, progress))); + if (path.progress !== progress) { + path.progress = progress; + path.el.style.strokeDashoffset = Math.floor(path.length * (1 - progress)); + this.renderPath(i); + } + } +}; + +/** + * Method forcing the browser to re-render a path element + * from it's index in the map. Depending on the `forceRender` + * value. + * The trick is to replace the path element by it's clone. + * This practice is not recommended because it's asking more + * ressources, too much DOM manupulation.. + * but it's the only way to let the magic happen on IE. + * By default, this fallback is only applied on IE. + * + * @param {Number} index Path index + */ +Vivus.prototype.renderPath = function(index) { + if (this.forceRender && this.map && this.map[index]) { + var pathObj = this.map[index], + newPath = pathObj.el.cloneNode(true); + pathObj.el.parentNode.replaceChild(newPath, pathObj.el); + pathObj.el = newPath; + } +}; + +/** + * When the SVG object is loaded and ready, + * this method will continue the initialisation. + * + * This this mainly due to the case of passing an + * object tag in the constructor. It will wait + * the end of the loading to initialise. + * + */ +Vivus.prototype.init = function() { + // Set object variables + this.frameLength = 0; + this.currentFrame = 0; + this.map = []; + + // Start + new Pathformer(this.el); + this.mapping(); + this.starter(); + + if (this.onReady) { + this.onReady(this); + } +}; + +/** + * Trigger to start of the animation. + * Depending on the `start` value, a different script + * will be applied. + * + * If the `start` value is not valid, an error will be thrown. + * Even if technically, this is impossible. + * + */ +Vivus.prototype.starter = function() { + switch (this.start) { + case 'manual': + return; + + case 'autostart': + this.play(); + break; + + case 'inViewport': + var self = this, + listener = function() { + if (self.isInViewport(self.parentEl, 1)) { + self.play(); + window.removeEventListener('scroll', listener); + } + }; + window.addEventListener('scroll', listener); + listener(); + break; + } +}; + +/** + * Controls + ************************************** + */ + +/** + * Get the current status of the animation between + * three different states: 'start', 'progress', 'end'. + * @return {string} Instance status + */ +Vivus.prototype.getStatus = function() { + return this.currentFrame === 0 + ? 'start' + : this.currentFrame === this.frameLength + ? 'end' + : 'progress'; +}; + +/** + * Reset the instance to the initial state : undraw + * Be careful, it just reset the animation, if you're + * playing the animation, this won't stop it. But just + * make it start from start. + * + */ +Vivus.prototype.reset = function() { + return this.setFrameProgress(0); +}; + +/** + * Set the instance to the final state : drawn + * Be careful, it just set the animation, if you're + * playing the animation on rewind, this won't stop it. + * But just make it start from the end. + * + */ +Vivus.prototype.finish = function() { + return this.setFrameProgress(1); +}; + +/** + * Set the level of progress of the drawing. + * + * @param {number} progress Level of progress to set + */ +Vivus.prototype.setFrameProgress = function(progress) { + progress = Math.min(1, Math.max(0, progress)); + this.currentFrame = Math.round(this.frameLength * progress); + this.trace(); + return this; +}; + +/** + * Play the animation at the desired speed. + * Speed must be a valid number (no zero). + * By default, the speed value is 1. + * But a negative value is accepted to go forward. + * + * And works with float too. + * But don't forget we are in JavaScript, se be nice + * with him and give him a 1/2^x value. + * + * @param {number} speed Animation speed [optional] + */ +Vivus.prototype.play = function(speed, callback) { + this.instanceCallback = null; + + if (speed && typeof speed === 'function') { + this.instanceCallback = speed; // first parameter is actually the callback function + speed = null; + } else if (speed && typeof speed !== 'number') { + throw new Error('Vivus [play]: invalid speed'); + } + // if the first parameter wasn't the callback, check if the seconds was + if (callback && typeof callback === 'function' && !this.instanceCallback) { + this.instanceCallback = callback; + } + + this.speed = speed || 1; + if (!this.handle) { + this.draw(); + } + return this; +}; + +/** + * Stop the current animation, if on progress. + * Should not trigger any error. + * + */ +Vivus.prototype.stop = function() { + if (this.handle) { + cancelAnimFrame(this.handle); + this.handle = null; + } + return this; +}; + +/** + * Destroy the instance. + * Remove all bad styling attributes on all + * path tags + * + */ +Vivus.prototype.destroy = function() { + this.stop(); + var i, path; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + path.el.style.strokeDashoffset = null; + path.el.style.strokeDasharray = null; + this.renderPath(i); + } +}; + +/** + * Utils methods + * include methods from Codrops + ************************************** + */ + +/** + * Method to best guess if a path should added into + * the animation or not. + * + * 1. Use the `data-vivus-ignore` attribute if set + * 2. Check if the instance must ignore invisible paths + * 3. Check if the path is visible + * + * For now the visibility checking is unstable. + * It will be used for a beta phase. + * + * Other improvments are planned. Like detecting + * is the path got a stroke or a valid opacity. + */ +Vivus.prototype.isInvisible = function(el) { + var rect, + ignoreAttr = el.getAttribute('data-ignore'); + + if (ignoreAttr !== null) { + return ignoreAttr !== 'false'; + } + + if (this.ignoreInvisible) { + rect = el.getBoundingClientRect(); + return !rect.width && !rect.height; + } else { + return false; + } +}; + +/** + * Parse attributes of a DOM element to + * get an object of {attributeName => attributeValue} + * + * @param {object} element DOM element to parse + * @return {object} Object of attributes + */ +Vivus.prototype.parseAttr = function(element) { + var attr, + output = {}; + if (element && element.attributes) { + for (var i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + output[attr.name] = attr.value; + } + } + return output; +}; + +/** + * Reply if an element is in the page viewport + * + * @param {object} el Element to observe + * @param {number} h Percentage of height + * @return {boolean} + */ +Vivus.prototype.isInViewport = function(el, h) { + var scrolled = this.scrollY(), + viewed = scrolled + this.getViewportH(), + elBCR = el.getBoundingClientRect(), + elHeight = elBCR.height, + elTop = scrolled + elBCR.top, + elBottom = elTop + elHeight; + + // if 0, the element is considered in the viewport as soon as it enters. + // if 1, the element is considered in the viewport only when it's fully inside + // value in percentage (1 >= h >= 0) + h = h || 0; + + return elTop + elHeight * h <= viewed && elBottom >= scrolled; +}; + +/** + * Get the viewport height in pixels + * + * @return {integer} Viewport height + */ +Vivus.prototype.getViewportH = function() { + var client = this.docElem.clientHeight, + inner = window.innerHeight; + + if (client < inner) { + return inner; + } else { + return client; + } +}; + +/** + * Get the page Y offset + * + * @return {integer} Page Y offset + */ +Vivus.prototype.scrollY = function() { + return window.pageYOffset || this.docElem.scrollTop; +}; + +setupEnv = function() { + if (Vivus.prototype.docElem) { + return; + } + + /** + * Alias for document element + * + * @type {DOMelement} + */ + Vivus.prototype.docElem = window.document.documentElement; + + /** + * Alias for `requestAnimationFrame` or + * `setTimeout` function for deprecated browsers. + * + */ + requestAnimFrame = (function() { + return ( + window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(/* function */ callback) { + return window.setTimeout(callback, 1000 / 60); + } + ); + })(); + + /** + * Alias for `cancelAnimationFrame` or + * `cancelTimeout` function for deprecated browsers. + * + */ + cancelAnimFrame = (function() { + return ( + window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + window.msCancelAnimationFrame || + function(id) { + return window.clearTimeout(id); + } + ); + })(); +}; + +/** + * Parse string to integer. + * If the number is not positive or null + * the method will return the default value + * or 0 if undefined + * + * @param {string} value String to parse + * @param {*} defaultValue Value to return if the result parsed is invalid + * @return {number} + * + */ +parsePositiveInt = function(value, defaultValue) { + var output = parseInt(value, 10); + return output >= 0 ? output : defaultValue; +}; diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/karma.conf.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/karma.conf.js new file mode 100644 index 00000000..20f69533 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/karma.conf.js @@ -0,0 +1,75 @@ +// Karma configuration +// Generated on Fri Jul 18 2014 10:58:08 GMT+0100 (BST) + +module.exports = function(config) { + var options = { + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '..', + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['jasmine'], + + // list of files / patterns to load in the browser + files: [ + 'test/unit.setup.js', + 'src/pathformer.js', + 'src/vivus.js', + 'test/unit/**.js' + ], + + // list of files to exclude + exclude: [], + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + '../src/pathformer.js': ['coverage'], + '../src/vivus.js': ['coverage'] + }, + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress', 'coverage'], + + // optionally, configure the reporter + coverageReporter: { + type: 'html', + dir: '../coverage/' + }, + + // web server port + port: 9876, + + // enable / disable colors in the output (reporters and logs) + colors: true, + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['Chrome'], + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: true + }; + + if (process.env.TRAVIS) { + options.customLaunchers = { + Chrome_travis_ci: { + base: 'Chrome', + flags: ['--no-sandbox'] + } + }; + options.browsers = ['Chrome_travis_ci']; + } + + config.set(options); +}; diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/hi-there.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/hi-there.svg new file mode 100644 index 00000000..cfe0dd22 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/hi-there.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/index.html b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/index.html new file mode 100644 index 00000000..d62a21f1 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/index.html @@ -0,0 +1,425 @@ + + + + + + + vivus.js - manual tests page + + + + + +
+

Vivus manual (cheap) tests.

+

+ Just scroll along the page and if a glitch appear or the visual + appearance is not like the description, it's not good. +

+ +
+ +
+
+
+

+ This should display the obturateur SVG like on the demo page. The + strokes must be orange. The element must remain an + object tag. +

+ +
+
+ +
+
+
+ +
+
+
+
+
+
+

+ This should display the polaroid SVG like on the demo page. The + strokes must have the same color as this text. +

+
+
+
+ +
+
+
+

+ This should display the 'Hi there' SVG like ready to start. Be sure + no glitch appear (no small path or dots). Click on the following + button to start. +

+ +
+
+
+
+
+
+ +
+
+
+
+
+
+

+ This should display a synth ready to start. Be sure no glitch appear + (no small path or dots). The animation should use a custom path + timing function (ease_in: slow at start then finish fast.). Click on + the following button to start. +

+ +
+
+
+ +
+
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + +
+

+ Non scaling path
In any case of a resize, the animation of each + line must be complete. +

+ + +
+
+ + + + + + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/obturateur.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/obturateur.svg new file mode 100644 index 00000000..6baf6538 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/obturateur.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/polaroid.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/polaroid.svg new file mode 100644 index 00000000..af9f781b --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/polaroid.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/synth.svg b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/synth.svg new file mode 100644 index 00000000..93b2c104 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/manual/synth.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit.setup.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit.setup.js new file mode 100644 index 00000000..4badb160 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit.setup.js @@ -0,0 +1,14 @@ +/* Here is a cheap and bad implementation + * of requestAnimationFrame and + * cancelAnimationFrame mock. + * But it's more than enough + * for our tests. + */ +window.requestAnimFrameStack = []; +window.requestAnimationFrame = function (callback) { + window.requestAnimFrameStack.push(callback); + return true; +}; +window.cancelAnimationFrame = function () { + window.requestAnimFrameStack = []; +}; diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/pathformer.spec.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/pathformer.spec.js new file mode 100644 index 00000000..109f4b10 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/pathformer.spec.js @@ -0,0 +1,322 @@ +'use strict'; + +/** + * Unit tests for Pathformer + * + */ +describe('Pathformer', function () { + + var svgTag, + svgTagId = 'my-svg', + svgGroupTag, + svgGroupTagId = 'my-svg-group'; + + beforeEach(function () { + // Remove tag if existing + svgTag = document.getElementById(svgTagId); + if (svgTag) { + svgTag.remove(); + } + + // Create the SVG + svgTag = document.createElementNS('http://www.w3.org/2000/svg','svg'); + svgTag.id = svgTagId; + svgTag.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; + + svgGroupTag = svgTag.querySelector('#'+svgGroupTagId); + + // Insert it to the body + document.body.appendChild(svgTag); + }); + + describe('[param tests]', function () { + + // Tests about the SVG element + it('should throw an error if the SVG is given in parameter', function () { + expect(function () { + new Pathformer(); + }).toThrow(new Error('Pathformer [constructor]: "element" parameter is required')); + }); + + it('should work with only the SVG id', function () { + expect(function () { + new Pathformer(svgTagId); + }).not.toThrow(); + }); + + it('should work with only the SVG object', function () { + expect(function () { + new Pathformer(svgTag); + }).not.toThrow(); + }); + + it('should work with only the SVG group object', function () { + expect(function () { + new Pathformer(svgGroupTag); + }).not.toThrow(); + }); + + it('should throw an error if the SVG ID given is invalid', function () { + expect(function () { + new Pathformer('my-unexisting-svg'); + }).toThrow(new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID')); + }); + + it('should throw an error if the ID given is not related to a SVG element', function () { + var divTag = document.createElement('div'); + divTag.id = 'my-div'; + document.body.appendChild(divTag); + expect(function () { + new Pathformer('my-div'); + }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + }); + + it('should throw an error if the element is not a correct type (DOM object or string)', function () { + expect(function () { new Pathformer({}); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(42); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(false); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(new Date()); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(function () {}); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + expect(function () { new Pathformer(document.createElement('div')); }).toThrow(new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement')); + }); + }); + + describe('[translation]', function () { + + // Line object + describe('line', function () { + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.lineToPath({}); + expect(output.d).toBeDefined(); + }); + + it('should return an object with an unclosed shape', function () { + var output = Pathformer.prototype.lineToPath({}); + expect(output.d.substr(-1)).not.toEqual('Z'); + }); + + it('should set default positino attributes to zero', function () { + var output = Pathformer.prototype.lineToPath({ + x1: '21', x2: '32', y1: '11' + }); + expect(output.d.indexOf('0')).not.toEqual(-1); + expect(output.d.indexOf('undefined')).toEqual(-1); + }); + }); + + // Rect object + describe('rect', function () { + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.rectToPath({}); + expect(output.d).toBeDefined(); + }); + + it('should return an object with a closed shape', function () { + var output = Pathformer.prototype.rectToPath({}); + expect(output.d.substr(-1)).toEqual('Z'); + }); + + it('should set default positino attributes to zero', function () { + var output = Pathformer.prototype.rectToPath({ + x: '21', height: '32', width: '11' + }); + expect(output.d.indexOf('0')).not.toEqual(-1); + expect(output.d.indexOf('undefined')).toEqual(-1); + }); + + it('should apply rounded corners', function () { + var result = 'M 50,10 ' + + 'L 50,10 A 40,20,0,0,1,90,30 ' + + 'L 90,50 A 40,20,0,0,1,50,70 ' + + 'L 50,70 A 40,20,0,0,1,10,50 ' + + 'L 10,30 A 40,20,0,0,1,50,10'; + + var output = Pathformer.prototype.rectToPath({ + x:10, y:10, width:80, height:60, rx:100, ry:20 + }); + + expect(output.d).toEqual(result); + }); + + it('should apply rounded corners even when a value is missing', function () { + var result = 'M 30,10 ' + + 'L 70,10 A 20,20,0,0,1,90,30 ' + + 'L 90,50 A 20,20,0,0,1,70,70 ' + + 'L 30,70 A 20,20,0,0,1,10,50 ' + + 'L 10,30 A 20,20,0,0,1,30,10'; + + var output = Pathformer.prototype.rectToPath({ + x:10, y:10, width:80, height:60, ry:20 + }); + + expect(output.d).toEqual(result); + }); + }); + + // Polyline object + describe('polyline', function () { + var polyline; + beforeEach(function () { + polyline = { + points: '2,3 4,5 6,7' + }; + }); + + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.polylineToPath(polyline); + expect(output.d).toBeDefined(); + }); + + it('should return an object with an unclosed shape', function () { + var output = Pathformer.prototype.polylineToPath(polyline); + expect(output.d.substr(-1)).not.toEqual('Z'); + }); + + it('should ignore incorrect points', function () { + var output; + polyline.points += ' 43'; + output = Pathformer.prototype.polylineToPath(polyline); + expect(output.d.indexOf('43')).toEqual(-1); + }); + + it('should accept points defined with and without commas', function () { + var outputWithPoint = Pathformer.prototype.polylineToPath(polyline); + var outputWithoutPoint = Pathformer.prototype.polylineToPath({points: '2 3 4 5 6 7'}); + expect(outputWithPoint).toEqual(outputWithoutPoint); + }); + }); + + // Polygon object + describe('polygon', function () { + var polygon; + beforeEach(function () { + polygon = { + points: '2,3 4,5 6,7' + }; + }); + + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.polygonToPath(polygon); + expect(output.d).toBeDefined(); + }); + + it('should return an object with a closed shape', function () { + var output = Pathformer.prototype.polygonToPath(polygon); + expect(output.d.substr(-1)).toEqual('Z'); + }); + }); + + // Ellipse object + describe('ellipse', function () { + + var ellipse; + beforeEach(function () { + ellipse = { + cx: 2, + cy: 3, + rx: 3 + }; + }); + + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.ellipseToPath(ellipse); + expect(output.d).toBeDefined(); + }); + + it('should return an object with an unclosed shape', function () { + var output = Pathformer.prototype.ellipseToPath(ellipse); + expect(output.d.substr(-1)).not.toEqual('Z'); + }); + + it('should set default positino attributes to zero', function () { + delete ellipse.cy; + var output = Pathformer.prototype.ellipseToPath(ellipse); + expect(output.d.indexOf('0')).not.toEqual(-1); + expect(output.d.indexOf('undefined')).toEqual(-1); + }); + }); + + // Circle object + describe('circle', function () { + + var circle; + beforeEach(function () { + circle = { + cx: 2, + cy: 3, + rx: 3, + r: 1 + }; + }); + + it('should return an object with a `d` attribute', function () { + var output = Pathformer.prototype.circleToPath(circle); + expect(output.d).toBeDefined(); + }); + + it('should return an object with an unclosed shape', function () { + var output = Pathformer.prototype.circleToPath(circle); + expect(output.d.substr(-1)).not.toEqual('Z'); + }); + + it('should set default positino attributes to zero', function () { + delete circle.cy; + var output = Pathformer.prototype.circleToPath(circle); + expect(output.d.indexOf('0')).not.toEqual(-1); + expect(output.d.indexOf('undefined')).toEqual(-1); + }); + }); + }); + + describe('[utils]', function () { + + describe('attribute parser', function () { + it('should return an empty object if attributes length are undefined', function () { + var output = Pathformer.prototype.parseAttr({}); + expect(output).toEqual({}); + }); + }); + + describe('engine', function () { + it('shouldn\'t throw an error if the SVG got a tag not taken in charge', function () { + svgTag.innerHTML = ''; + + expect(function () { + new Pathformer(svgTagId); + }).not.toThrow(); + }); + + it('should remove useless attributes during transformation', function () { + new Pathformer(svgTagId); + expect(svgTag.childNodes[0].getAttribute('cx')).toBe(null); + }); + }); + + describe('validity', function () { + it('should throw error if the SVG contain shape with percentage value', function () { + // Create the SVG + var svgTagPrc = document.createElementNS('http://www.w3.org/2000/svg','svg'); + svgTagPrc.innerHTML = ''; + expect(function () { + new Pathformer(svgTagPrc); + }).toThrow(new Error('Pathformer [parseAttr]: a SVG shape got values in percentage. This cannot be transformed into \'path\' tags. Please use \'viewBox\'.')); + }); + + it('shouldn\'t throw error if the SVG contain shape with percentage value on a non-data attribute', function () { + // Create the SVG + var svgTagPrc = document.createElementNS('http://www.w3.org/2000/svg','svg'); + svgTagPrc.innerHTML = ''; + expect(function () { + new Pathformer(svgTagPrc); + }).not.toThrow(); + }); + }); + }); +}); diff --git a/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/vivus.spec.js b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/vivus.spec.js new file mode 100644 index 00000000..af9e74b1 --- /dev/null +++ b/extensions/fablabchemnitz/animate_order/vivus-0.4.6/test/unit/vivus.spec.js @@ -0,0 +1,669 @@ +'use strict'; + +/** + * Unit tests for Vivus + * + */ +describe('Vivus', function () { + + var ObjectElementMock, + triggerFrames, + myVivus, + objTag, + wrapTag, + svgTag, + svgTagId = 'my-svg', + svgGroupTagId = 'my-svg-group'; + + // Mock ObjectElement and it's constructor via createElement + ObjectElementMock = function () { + this.loadCb = []; + this.attr = {}; + this.addEventListener = function (evtName, cb) { + if (evtName === 'load') { + this.loadCb.push(cb); + } + }; + this.loaded = function () { + for (var i = 0; i < this.loadCb.length; i++) { + this.loadCb[i]({target: this}); + } + }; + this.getBoundingClientRect = function () { + return { + height: 11, + top: 364 + }; + }; + this.insertBefore = function () {}; + this.removeChild = function () {}; + this.setAttribute = function (key, val) { + this.attr[key] = val; + }; + this.getAttribute = function (key) { + return this.attr[key]; + }; + }; + window.HTMLObjectElement = ObjectElementMock; + + triggerFrames = function (counter) { + counter = counter || -1; + while (window.requestAnimFrameStack.length && counter !== 0) { + window.requestAnimFrameStack.shift()(); + counter--; + } + }; + + + beforeEach(function () { + // Create the SVG + svgTag = document.createElementNS('http://www.w3.org/2000/svg','svg'); + svgTag.id = svgTagId; + svgTag.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; + + wrapTag = document.createElement('div'); + wrapTag.appendChild(svgTag); + + document.body.appendChild(wrapTag); + + // Reset the request anim frame stack + window.requestAnimFrameStack = []; + }); + + afterEach(function () { + // Remove tag + svgTag.remove(); + wrapTag.remove(); + }); + + describe('[basic tests]', function () { + + it('should the class be defined under Vivus name', function () { + expect(Vivus).toBeDefined(); + }); + + it('should have timing functions set', function () { + expect(Vivus.LINEAR).toBeDefined(); + expect(Vivus.EASE).toBeDefined(); + expect(Vivus.EASE_IN).toBeDefined(); + expect(Vivus.EASE_OUT).toBeDefined(); + expect(Vivus.EASE_OUT_BOUNCE).toBeDefined(); + }); + + it('should have timing functions returning correct value on limits', function () { + expect(Vivus.LINEAR(0)).toEqual(0); + expect(Vivus.LINEAR(1)).toEqual(1); + expect(Vivus.EASE(0)).toEqual(0); + expect(Vivus.EASE(1)).toEqual(1); + expect(Vivus.EASE_IN(0)).toEqual(0); + expect(Vivus.EASE_IN(1)).toEqual(1); + expect(Vivus.EASE_OUT(0)).toEqual(0); + expect(Vivus.EASE_OUT(1)).toEqual(1); + expect(Vivus.EASE_OUT_BOUNCE(0)).toEqual(0); + expect(Vivus.EASE_OUT_BOUNCE(1)).toEqual(1); + }); + }); + + describe('[param tests]', function () { + + // Tests about the SVG element + it('should throw an error if the SVG is given in parameter', function () { + expect(function () { + new Vivus(); + }).toThrow(new Error('Vivus [constructor]: "element" parameter is required')); + }); + + it('should work with only the SVG id', function () { + expect(function () { + new Vivus(svgTagId); + }).not.toThrow(); + }); + + it('should work with only the SVG object', function () { + expect(function () { + new Vivus(svgTag); + }).not.toThrow(); + }); + + it('should work with the SVG group object', function () { + expect(function () { + new Vivus(svgGroupTagId); + }).not.toThrow(); + }); + + it('should throw an error if the SVG ID given is invalid', function () { + expect(function () { + new Vivus('my-unexisting-svg'); + }).toThrow(new Error('Vivus [constructor]: "element" parameter is not related to an existing ID')); + }); + + it('should throw an error if the ID given is not related to a SVG element', function () { + var divTag = document.createElement('div'); + divTag.id = 'my-div'; + document.body.appendChild(divTag); + expect(function () { + new Vivus('my-div'); + }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + }); + + it('should accept any DOM element if `file` option is set', function () { + var divTag = document.createElement('div'); + spyOn(window, 'XMLHttpRequest'); + try { + new Vivus(divTag, {file: 'opensource.svg'}); + } + catch(err) {} + + expect(window.XMLHttpRequest).toHaveBeenCalled(); + }); + + it('should throw an error if the element is not a correct type (DOM object or string)', function () { + expect(function () { new Vivus({}); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(42); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(false); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(new Date()); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(function () {}); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + expect(function () { new Vivus(document.createElement('div')); }).toThrow(new Error('Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)')); + }); + + it('should accept object element', function () { + // Create a mock Object getElementById + objTag = new ObjectElementMock(); + objTag.contentDocument = wrapTag; + + expect(function () { + new Vivus(objTag); + }).not.toThrow(); + }); + + it('the vivus state should be ready if the SVG is already loaded', function () { + objTag = new ObjectElementMock(); + objTag.contentDocument = wrapTag; + objTag.loaded(); + var myVivus = new Vivus(objTag); + expect(myVivus.isReady).toEqual(true); + }); + + it('the vivus instance should have `el` and `parentEl` different if the element is an object', function () { + objTag = new ObjectElementMock(); + objTag.contentDocument = wrapTag; + objTag.loaded(); + var myVivus = new Vivus(objTag); + expect(myVivus.parentEl).not.toEqual(myVivus.el); + }); + + it('should call `onReady` callback once the SVG is loaded', function () { + objTag = new ObjectElementMock(); + objTag.contentDocument = document.createElement('div'); + var myVivus = new Vivus(objTag); + objTag.contentDocument = wrapTag; + objTag.loaded(); + expect(myVivus.isReady).toEqual(true); + }); + + it('should throw an error if the SVG file does not exists', function () { + objTag = new ObjectElementMock(); + objTag.contentDocument = document.createElement('div'); + new Vivus(objTag); + expect(function () { + objTag.loaded(); + }).toThrow(); + }); + + // Options + it('should work without options', function () { + expect(function () { + new Vivus(svgTag); + }).not.toThrow(); + }); + + it('should throw an error if options is not an object', function () { + expect(function () { new Vivus(svgTag, []); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, 42); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, false); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, new Date()); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, 'manual'); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + expect(function () { new Vivus(svgTag, function () {}); }).toThrow(new Error('Vivus [constructor]: "options" parameter must be an object')); + }); + + // Options + it('should work with empty option object', function () { + expect(function () { + new Vivus(svgTag, {}); + }).not.toThrow(); + }); + + it('should throw an error if the `type` value given in options does not exists', function () { + expect(function () { + new Vivus(svgTag, {type: 'by-unicorn'}); + }).toThrow(new Error('Vivus [constructor]: by-unicorn is not an existing animation `type`')); + }); + + it('should throw an error if the `start` value given in options is not a string', function () { + expect(function () { + new Vivus(svgTag, {start: 'when-unicorn-ready'}); + }).toThrow(new Error('Vivus [constructor]: when-unicorn-ready is not an existing `start` option')); + }); + + it('should throw an error if the `delay` value is bigger (or equal) than `duration`', function () { + expect(function () { + new Vivus(svgTag, {duration: 200, delay: 199}); + }).not.toThrow(); + expect(function () { + new Vivus(svgTag, {duration: 200, delay: 200}); + }).toThrow(new Error('Vivus [constructor]: delay must be shorter than duration')); + expect(function () { + new Vivus(svgTag, {duration: 200, delay: 201}); + }).toThrow(new Error('Vivus [constructor]: delay must be shorter than duration')); + }); + + it('should override `duration` if invalid', function () { + myVivus = new Vivus(svgTag, {duration: -12}); + expect(myVivus.duration > 0).toBe(true); + }); + + it('should override `delay` if invalid, with a null value', function () { + myVivus = new Vivus(svgTag, {delay: -12}); + expect(!myVivus.delay).toBe(false); + }); + + it('should set up default values', function () { + myVivus = new Vivus(svgTag, {}); + expect(myVivus.type).toBeDefined(); + expect(myVivus.start).toBeDefined(); + expect(myVivus.duration).toBeDefined(); + }); + + it('the vivus instance should have `el` and `parentEl` equal if the element is a SVG object', function () { + myVivus = new Vivus(svgTag, {}); + expect(myVivus.el).toEqual(myVivus.parentEl); + }); + + // Callback + it('should throw an error if callback is non a function', function () { + expect(function () { + new Vivus(svgTag, {}, 42); + }).toThrow(new Error('Vivus [constructor]: "callback" parameter must be a function')); + }); + + it('should use scale to determine path length when vector effect is non-scaling-stroke', function () { + var scalingSvgTag = document.createElementNS('http://www.w3.org/2000/svg','svg'); + var scalingWrapTag = document.createElement('div'); + + scalingSvgTag.setAttribute('viewBox', '0 0 500 200'); + scalingWrapTag.style.width = '1000px'; + + scalingSvgTag.id = 'scaling-stroke-test'; + + scalingSvgTag.innerHTML = '' + + ''; + + scalingWrapTag.appendChild(scalingSvgTag); + + document.body.appendChild(scalingWrapTag); + + myVivus = new Vivus(scalingSvgTag); + + expect(myVivus.map.length).toEqual(2); + expect(myVivus.map[0].length).toEqual(280); + expect(myVivus.map[1].length).toEqual(141); + }); + }); + + describe('[engine]', function () { + + // Mapping + describe('Mapping:', function () { + + it('should not trigger any error if the SVG is empty', function () { + expect(function () { + var svgTag = document.createElementNS('http://www.w3.org/2000/svg','svg'); + myVivus = new Vivus(svgTag, {}); + }).not.toThrow(); + }); + + it('should create a mapping of the SVG', function () { + myVivus = new Vivus(svgTag, {}); + expect(myVivus.map && myVivus.map.length).toEqual(6); + }); + + it('should map with correct values for start and duration', function () { + var i, typeIndex, types = ['delayed', 'sync', 'oneByOne', 'scenario', 'scenario-sync']; + for (typeIndex in types) { + myVivus = new Vivus(svgTag, {type: types[typeIndex], duration: 200}); + for (i in myVivus.map) { + expect(myVivus.map[i].startAt >= 0).toBe(true); + expect(myVivus.map[i].duration >= 0).toBe(true); + } + } + }); + + // Tests for 'getTotalLength' method in case of awkward results + describe('SVG parsing issue', function () { + + var getTotalLengthBkp = SVGPathElement.prototype.getTotalLength, + warnBkp = console.warn; + + beforeEach(function () { + SVGPathElement.prototype.getTotalLength = function () { + return NaN; + }; + }); + + afterEach(function () { + SVGPathElement.prototype.getTotalLength = getTotalLengthBkp; + console.warn = warnBkp; + }); + + it('should call console.warn if a path length is NaN', function () { + var warnSpy = jasmine.createSpy('spy'); + console.warn = warnSpy; + myVivus = new Vivus(svgTag); + expect(warnSpy.calls.count()).toEqual(6); + expect(myVivus.map.length).toEqual(0); + }); + + it('shouldn\'t call console.warn if not defined a path length is NaN', function () { + console.warn = null; + myVivus = new Vivus(svgTag); + expect(myVivus.map.length).toEqual(0); + }); + }); + }); + + describe('Visibility checking:', function () { + + it('should not accept a path which is not displayed', function () { + // Hide a path + svgTag.childNodes[1].style.display = 'none'; + myVivus = new Vivus(svgTag, {ignoreInvisible: true}); + expect(myVivus.map.length).toEqual(5); + }); + + it('should not accept a path which with an ignore tag', function () { + svgTag.childNodes[1].setAttribute('data-ignore', 'true'); + myVivus = new Vivus(svgTag); + expect(myVivus.map.length).toEqual(5); + }); + + it('should not accept a path which is not displayed', function () { + svgTag.childNodes[1].setAttribute('data-ignore', 'false'); + myVivus = new Vivus(svgTag); + expect(myVivus.map.length).toEqual(6); + }); + }); + + // Drawing + describe('Drawing:', function () { + + it('should call the callback once the animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'autostart' + }, function () { + done = true; + }); + + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the callback once the reverse animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + type: 'oneByOne', + duration: 6 + }, function () { + done = true; + }); + + myVivus.finish().play(-1); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the method callback as the second param once the animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + }); + + myVivus.play(1, function() { + done = true; + }); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the method callback as the first param once the animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + }); + + myVivus.play(function() { + done = true; + }); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the method callback once the reverse animation is finished', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + }); + + myVivus.finish().play(-1, function() { + done = true; + }); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call the method callback provided in the last play call', function () { + var done = false; + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + }); + + myVivus.finish().play(-1, function () {}); + myVivus.play(function() { + done = true; + }); + triggerFrames(); + expect(done).toBe(true); + }); + + it('should call destroy method once the animation is finished', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual', + selfDestroy: true + }); + myVivus.destroy = jasmine.createSpy('spy'); + myVivus.play(); + triggerFrames(); + expect(myVivus.destroy.calls.count()).toEqual(1); + }); + + it('should\' call destroy method if selfDestroy option is not present', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + myVivus.destroy = jasmine.createSpy('spy'); + myVivus.play(); + triggerFrames(); + expect(myVivus.destroy.calls.count()).toEqual(0); + }); + + it('should stop animation if destroy has been called', function () { + var callbackSpy = jasmine.createSpy('spy'); + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'autostart' + }, callbackSpy); + + triggerFrames(1); + myVivus.destroy(); + + triggerFrames(); + expect(callbackSpy.calls.count()).toEqual(0); + }); + + it('should stop the animation once it reaches currentFrame == 0', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + myVivus.stop = jasmine.createSpy('spy'); + myVivus.play(-1); + triggerFrames(); + expect(myVivus.stop.calls.count()).toEqual(1); + }); + + it('should trace reasonably', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + spyOn(myVivus, 'trace').and.callThrough(); + myVivus.play(0.5); + triggerFrames(); + expect(myVivus.trace.calls.count()).toEqual(12); + }); + + it('should start by the last path if reverseStack is enabled', function () { + myVivus = new Vivus(svgTag, { + type: 'oneByOne', + duration: 5, + reverseStack: true + }); + myVivus.setFrameProgress(0.5); + + var paths = svgTag.querySelectorAll('path'); + expect(+paths[0].style.strokeDashoffset).not.toEqual(0); + expect(+paths[paths.length -1].style.strokeDashoffset).toEqual(0); + }); + }); + + describe('Force Render:', function () { + + it('should use renderPath if forceRender option is set to true', function () { + myVivus = new Vivus(svgTag, { duration: 2, start: 'manual', forceRender: true }); + + var originalFirstPath = myVivus.map[0].el; + myVivus.renderPath(0); + expect(myVivus.map[0].el).not.toBe(originalFirstPath); + }); + + it('should not use renderPath if forceRender option is set to false', function () { + myVivus = new Vivus(svgTag, { duration: 2, start: 'manual', forceRender: false }); + + var originalFirstPath = myVivus.map[0].el; + myVivus.renderPath(0); + expect(myVivus.map[0].el).toBe(originalFirstPath); + }); + + it('renderPath should not throw an error if the index doesn\'t exists', function () { + myVivus = new Vivus(svgTag, { duration: 2, start: 'manual', forceRender: true }); + expect(function () { + myVivus.renderPath(42); + }).not.toThrow(); + }); + }); + + }); + + describe('[controls]', function () { + + beforeEach(function () { + myVivus = new Vivus(svgTag, { + type: 'oneByOne', + duration: 2, + start: 'manual' + }); + }); + + it('shouldn\'t play if the parameter in incorrect', function () { + expect(function () {myVivus.play('a');}).toThrow(new Error('Vivus [play]: invalid speed')); + expect(function () {myVivus.play({});}).toThrow(new Error('Vivus [play]: invalid speed')); + expect(function () {myVivus.play([]);}).toThrow(new Error('Vivus [play]: invalid speed')); + expect(function () {myVivus.play('1');}).toThrow(new Error('Vivus [play]: invalid speed')); + }); + + it('should return the correct status', function () { + expect(myVivus.getStatus()).toEqual('start'); + myVivus.setFrameProgress(0.5); + expect(myVivus.getStatus()).toEqual('progress'); + myVivus.finish(); + expect(myVivus.getStatus()).toEqual('end'); + myVivus.reset(); + expect(myVivus.getStatus()).toEqual('start'); + }); + + it('should play with the normal speed by default', function () { + myVivus.play(); + expect(myVivus.speed).toEqual(1); + }); + + it('shouldn\'t run another process of drawing if the animation is in progress', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + spyOn(myVivus, 'trace').and.callThrough(); + + myVivus.play(0.5); + myVivus.play(0.5); + triggerFrames(); + expect(myVivus.trace.calls.count()).toEqual(12); + }); + + it('should stop the animation only when the animation is running', function () { + myVivus = new Vivus(svgTag, { + duration: 6, + start: 'manual' + }); + myVivus.play(); + expect(myVivus.handle).toBeTruthy(); + myVivus.stop(); + expect(myVivus.handle).toBeFalsy(); + myVivus.stop(); + expect(myVivus.handle).toBeFalsy(); + }); + + it('should remove all unecessary styling on every path element', function () { + var i, paths; + myVivus.destroy(); + + paths = svgTag.querySelectorAll('path'); + for (i = 0; i < paths.length; i++) { + expect(!!paths[i].style.strokeDashoffset).toEqual(false); + expect(!!paths[i].style.strokeDasharray).toEqual(false); + } + }); + + /** + * Where are the tests about `util` methods? + * Well.... + * to be honest, I've been struggling a bit for these kind of tests + * which seems difficult to test from Karma. + */ + }); + + +}); diff --git a/extensions/fablabchemnitz/another_perspective/another_perspective.inx b/extensions/fablabchemnitz/another_perspective/another_perspective.inx new file mode 100644 index 00000000..c1a7d1c3 --- /dev/null +++ b/extensions/fablabchemnitz/another_perspective/another_perspective.inx @@ -0,0 +1,16 @@ + + + Another Perspective + fablabchemnitz.de.another_perspective + + path + + + + + + + + diff --git a/extensions/fablabchemnitz/another_perspective/another_perspective.py b/extensions/fablabchemnitz/another_perspective/another_perspective.py new file mode 100644 index 00000000..62b19af3 --- /dev/null +++ b/extensions/fablabchemnitz/another_perspective/another_perspective.py @@ -0,0 +1,312 @@ +#!/usr/bin/env python3 + +""" +Copyright (C) 2017 Corentin Brulé + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Special thanks and orignal copyrigths : Aaron Spike (2005) and Timo Kähkönen (2012) +""" + +import inkex +import re +from lxml import etree +from inkex.transforms import Transform +from inkex.paths import Path, CubicSuperPath + +__version__ = '0.1' + +debug=False + +def distort_path(path_str,source,destination): + path_arr = path_string_to_array(path_str) + + subpath_type="" + is_num ="" + xy_counter ="" + xy="" + path_arr2=[] + subpath_type_upper="" + point="" + i=0 + for i in range(len(path_arr)): + patt1 = r"[mzlhvcsqta]" + + curr = path_arr[i] + if re.match(patt1,curr,flags=re.I): + xy_counter = -1 + subpath_type = curr + subpath_type_upper = subpath_type.upper() + is_num = False + path_arr2.append(curr) + else : + is_num = True + curr = float(curr) + + if xy_counter%2 == 0: + xy="x" + else: + xy="y" + + if is_num : + if xy=="y" : + point = transferPoint(float(path_arr[i-1]),curr,source,destination) + path_arr2.append(point["x"]) + path_arr2.append(point["y"]) + + xy_counter+=1 + + path_str = path_array_to_string(path_arr2) + return path_str + + +def path_array_to_string(path_arr): + + path_str=str(path_arr) + + path_str=path_str.replace(r"([0-9]),([-0-9])", "$1 $2") + path_str=path_str.replace(r"([0-9]),([-0-9])", "$1 $2") + path_str=path_str.replace(",", "") + path_str=path_str.replace("[", "").replace("]","") + path_str=path_str.replace("'", "") + + return path_str + +def path_string_to_array(path_str): + + patt1=r"[mzlhvcsqta]|-?[0-9.]+" #gi + #path_arr=path_str.match(patt1) #array de résultats + path_arr = re.findall(patt1,path_str,flags=re.I) + + patt1=r"[mzlhvcsqta]" #i + i = 0 + for i in range(len(path_arr)): + if re.match(path_arr[i],patt1,flags=re.I) == -1: + path_arr[i] = float(path_arr[i]) + + return path_arr + +''' +def isPermissible(p): + p0 = {x:c0.attr("cx"),y:c0.attr("cy")} + p1 = {x:c1.attr("cx"),y:c1.attr("cy")} + p2 = {x:c2.attr("cx"),y:c2.attr("cy")} + p3 = {x:c3.attr("cx"),y:c3.attr("cy")} + a0 = angle(p3, p0, p1) + a1 = angle(p0, p1, p2) + a2 = angle(p1, p2, p3) + a3 = angle(p2, p3, p0) + if not (a0 > 0 and a0 < 180) or not (a1 > 0 and a1 < 180) or not(a2 > 0 and a2 < 180) or not(a3 > 0 and a3 < 180) : + return False + else : + return True +} + +def angle(c, b, a): + ab = {x: b.x - a.x, y: b.y - a.y } + cb = {x: b.x - c.x, y: b.y - c.y } + dot = (ab.x * cb.x + ab.y * cb.y) + cross = (ab.x * cb.y - ab.y * cb.x) + alpha = Math.atan2(cross, dot) + return alpha * 180 / PI +} +''' + +def transferPoint (xI, yI, source, destination): + + ADDING = 0.001 # to avoid dividing by zero + + xA = source[0]["x"] + yA = source[0]["y"] + + xC = source[2]["x"] + yC = source[2]["y"] + + xAu = destination[0]["x"] + yAu = destination[0]["y"] + + xBu = destination[1]["x"] + yBu = destination[1]["y"] + + xCu = destination[2]["x"] + yCu = destination[2]["y"] + + xDu = destination[3]["x"] + yDu = destination[3]["y"] + + # Calcultations + if xBu==xCu : + xCu+=ADDING + if xAu==xDu : + xDu+=ADDING + if xAu==xBu : + xBu+=ADDING + if xDu==xCu : + xCu+=ADDING + kBC = float(yBu-yCu)/float(xBu-xCu) + kAD = float(yAu-yDu)/float(xAu-xDu) + kAB = float(yAu-yBu)/float(xAu-xBu) + kDC = float(yDu-yCu)/float(xDu-xCu) + + if kBC==kAD : + kAD += ADDING + xE = float(kBC*xBu - kAD*xAu + yAu - yBu) / float(kBC-kAD) + yE = kBC*(xE - xBu) + yBu + + if kAB==kDC : + kDC += ADDING + xF = float(kAB*xBu - kDC*xCu + yCu - yBu) / float(kAB-kDC) + yF = kAB*(xF - xBu) + yBu + + if xE==xF : + xF += ADDING + kEF = float(yE-yF) / float(xE-xF) + + if kEF==kAB: + kAB += ADDING + xG = float(kEF*xDu - kAB*xAu + yAu - yDu) / float(kEF-kAB) + yG = kEF*(xG - xDu) + yDu + + if kEF==kBC : + kBC+=ADDING + xH = float(kEF*xDu - kBC*xBu + yBu - yDu) / float(kEF-kBC) + yH = kEF*(xH - xDu) + yDu + + rG = float(yC-yI)/float(yC-yA) + rH = float(xI-xA)/float(xC-xA) + + xJ = (xG-xDu)*rG + xDu + yJ = (yG-yDu)*rG + yDu + + xK = (xH-xDu)*rH + xDu + yK = (yH-yDu)*rH + yDu + + if xF==xJ: + xJ+=ADDING + if xE==xK: + xK+=ADDING + kJF = float(yF-yJ) / float(xF-xJ) + kKE = float(yE-yK) / float(xE-xK) + + xKE = "" + if kJF==kKE: + kKE += ADDING + xIu = float(kJF*xF - kKE*xE + yE - yF) / float(kJF-kKE) + yIu = kJF * (xIu - xJ) + yJ + + b = {"x":xIu,"y":yIu} + b["x"] = round(b["x"]) + b["y"] = round(b["y"]) + return b + + +def projection(path_object,coords): + + pp_object = Path(path_object).to_arrays() + + bounds = Path(path_object).bounding_box() + + # Make array of coordinates, every array member represent corner of text path + source = [ + {"x":bounds.left,"y":bounds.top}, + {"x":bounds.right,"y":bounds.top}, + {"x":bounds.right,"y":bounds.bottom}, + {"x":bounds.left,"y":bounds.bottom} + ] + + destination=[ + {"x":coords[0][0],"y":coords[0][1]}, + {"x":coords[1][0],"y":coords[1][1]}, + {"x":coords[2][0],"y":coords[2][1]}, + {"x":coords[3][0],"y":coords[3][1]} + ] + + path_destination = distort_path(path_object,source,destination) + + return path_destination +''' +def complex2tulpe(complexNb): + return (complexNb.real,complexNb.imag) +''' +class AnotherPerspective(inkex.EffectExtension): + + def envelope2coords(self, path_envelope): + pp_envelope = CubicSuperPath(path_envelope) + if len(pp_envelope[0]) < 4: + inkex.errormsg("The selected envelope (your second path) does not contain enough nodes. Check to have at least 4 nodes.") + exit() + + c0 = pp_envelope[0][0][0] + c1 = pp_envelope[0][1][0] + c2 = pp_envelope[0][2][0] + c3 = pp_envelope[0][3][0] + # inkex.debug(str(c0)+" "+str(c1)+" "+str(c2)+" "+str(c3)) + return [c0, c1, c2, c3] + + def effect(self): + if len(self.options.ids) < 2: + inkex.errormsg("This extension requires two selected paths.") + exit() + + obj = self.svg.selected[self.options.ids[0]] + envelope = self.svg.selected[self.options.ids[1]] + + if obj.get(inkex.addNS('type','sodipodi')): + inkex.errormsg("The first selected object is of type '%s'.\nTry using the procedure Path->Object to Path." % obj.get(inkex.addNS('type','sodipodi'))) + exit() + + if obj.tag == inkex.addNS('path','svg') or obj.tag == inkex.addNS('g','svg'): + if envelope.tag == inkex.addNS('path','svg'): + mat = envelope.transform * Transform([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + path = CubicSuperPath(envelope.get('d')) + Path(path).transform(mat) + absolute_envelope_path = envelope.get('d') + # inkex.debug(absolute_envelope_path) + coords_to_project = self.envelope2coords(absolute_envelope_path) + + if obj.tag == inkex.addNS('path','svg'): + mat = obj.transform * Transform([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + absolute_d = str(Path(obj.get('d'))) + path = CubicSuperPath(absolute_d) + Path(path).transform(mat) + absolute_object_path = str(path) + # inkex.debug(absolute_object_path) + + elif obj.tag == inkex.addNS('g','svg'): + absolute_object_path="" + for p in obj.iterfind(".//{http://www.w3.org/2000/svg}path"): + + absolute_d = str(Path(p.get('d'))) + mat = p.transform * Transform([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + path = CubicSuperPath(absolute_d) + Path(path).transform(mat) + absolute_object_path += str(Path(path)) + # inkex.debug(absolute_object_path) + + new_path = projection(absolute_object_path,coords_to_project) + attributes = {'d':new_path} + new_element = etree.SubElement(self.svg.get_current_layer(),inkex.addNS('path','svg'),attributes) + + else: + if envelope.tag == inkex.addNS('g','svg'): + inkex.errormsg("The second selected object is a group, not a path.\nTry using the procedure Object->Ungroup.") + else: + inkex.errormsg("The second selected object is not a path.\nTry using the procedure Path->Object to Path.") + exit() + else: + inkex.errormsg("The first selected object is not a path.\nTry using the procedure Path->Object to Path.") + exit() + +if __name__ == '__main__': + AnotherPerspective().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/apollonian_gasket/apollon.py b/extensions/fablabchemnitz/apollonian_gasket/apollon.py new file mode 100644 index 00000000..565485ab --- /dev/null +++ b/extensions/fablabchemnitz/apollonian_gasket/apollon.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python3 +# Generate Apollonian Gaskets -- the math part. + +# Copyright (c) 2014 Ludger Sandig +# This file is part of apollon. + +# Apollon is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# Apollon is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with Apollon. If not, see . + +from cmath import * +import random + +class Circle(object): + """ + A circle represented by center point as complex number and radius. + """ + def __init__ ( self, mx, my, r ): + """ + @param mx: x center coordinate + @type mx: int or float + @param my: y center coordinate + @type my: int or float + @param r: radius + @type r: int or float + """ + self.r = r + self.m = (mx +my*1j) + + def __repr__ ( self ): + """ + Pretty printing + """ + return "Circle( self, %s, %s, %s )" % (self.m.real, self.m.imag, self.r) + + def __str__ ( self ): + """ + Pretty printing + """ + return "Circle x:%.3f y:%.3f r:%.3f [cur:%.3f]" % (self.m.real, self.m.imag, self.r.real, self.curvature().real) + + def curvature (self): + """ + Get circle's curvature. + @rtype: float + @return: Curvature of the circle. + """ + return 1/self.r + +def outerTangentCircle( circle1, circle2, circle3 ): + """ + Takes three externally tangent circles and calculates the fourth one enclosing them. + @param circle1: first circle + @param circle2: second circle + @param circle3: third circle + @type circle1: L{Circle} + @type circle2: L{Circle} + @type circle3: L{Circle} + @return: The enclosing circle + @rtype: L{Circle} + """ + cur1 = circle1.curvature() + cur2 = circle2.curvature() + cur3 = circle3.curvature() + m1 = circle1.m + m2 = circle2.m + m3 = circle3.m + cur4 = -2 * sqrt( cur1*cur2 + cur2*cur3 + cur1 * cur3 ) + cur1 + cur2 + cur3 + m4 = ( -2 * sqrt( cur1*m1*cur2*m2 + cur2*m2*cur3*m3 + cur1*m1*cur3*m3 ) + cur1*m1 + cur2*m2 + cur3*m3 ) / cur4 + circle4 = Circle( m4.real, m4.imag, 1/cur4 ) + + return circle4 + + +def tangentCirclesFromRadii( r2, r3, r4 ): + """ + Takes three radii and calculates the corresponding externally + tangent circles as well as a fourth one enclosing them. The enclosing + circle is the first one. + + @param r2, r3, r4: Radii of the circles to calculate + @type r2: int or float + @type r3: int or float + @type r4: int or float + @return: The four circles, where the first one is the enclosing one. + @rtype: (L{Circle}, L{Circle}, L{Circle}, L{Circle}) + """ + circle2 = Circle( 0, 0, r2 ) + circle3 = Circle( r2 + r3, 0, r3 ) + m4x = (r2*r2 + r2*r4 + r2*r3 - r3*r4) / (r2 + r3) + m4y = sqrt( (r2 + r4) * (r2 + r4) - m4x*m4x ) + circle4 = Circle( m4x, m4y, r4 ) + circle1 = outerTangentCircle( circle2, circle3, circle4 ) + return ( circle1, circle2, circle3, circle4 ) + +def secondSolution( fixed, c1, c2, c3 ): + """ + If given four tangent circles, calculate the other one that is tangent + to the last three. + + @param fixed: The fixed circle touches the other three, but not + the one to be calculated. + + @param c1, c2, c3: Three circles to which the other tangent circle + is to be calculated. + + @type fixed: L{Circle} + @type c1: L{Circle} + @type c2: L{Circle} + @type c3: L{Circle} + @return: The circle. + @rtype: L{Circle} + """ + + curf = fixed.curvature() + cur1 = c1.curvature() + cur2 = c2.curvature() + cur3 = c3.curvature() + + curn = 2 * (cur1 + cur2 + cur3) - curf + mn = (2 * (cur1*c1.m + cur2*c2.m + cur3*c3.m) - curf*fixed.m ) / curn + return Circle( mn.real, mn.imag, 1/curn ) + +class ApollonianGasket(object): + """ + Container for an Apollonian Gasket. + """ + def __init__(self, c1, c2, c3): + """ + Creates a basic apollonian Gasket with four circles. + + @param c1, c2, c3: The curvatures of the three inner circles of the + starting set (i.e. depth 0 of the recursion). The fourth, + enclosing circle will be calculated from them. + @type c1: int or float + @type c2: int or float + @type c3: int or float + """ + self.start = tangentCirclesFromRadii( 1/c1, 1/c2, 1/c3 ) + self.genCircles = list(self.start) + + def recurse(self, circles, depth, maxDepth): + """Recursively calculate the smaller circles of the AG up to the + given depth. Note that for depth n we get 2*3^{n+1} circles. + + @param maxDepth: Maximal depth of the recursion. + @type maxDepth: int + + @param circles: 4-Tuple of circles for which the second + solutions are calculated + @type circles: (L{Circle}, L{Circle}, L{Circle}, L{Circle}) + + @param depth: Current depth + @type depth: int + """ + if( depth == maxDepth ): + return + (c1, c2, c3, c4) = circles + if( depth == 0 ): + # First recursive step, this is the only time we need to + # calculate 4 new circles. + del self.genCircles[4:] + cspecial = secondSolution( c1, c2, c3, c4 ) + self.genCircles.append( cspecial ) + self.recurse( (cspecial, c2, c3, c4), 1, maxDepth ) + + cn2 = secondSolution( c2, c1, c3, c4 ) + self.genCircles.append( cn2 ) + cn3 = secondSolution( c3, c1, c2, c4 ) + self.genCircles.append( cn3 ) + cn4 = secondSolution( c4, c1, c2, c3 ) + self.genCircles.append( cn4 ) + + self.recurse( (cn2, c1, c3, c4), depth+1, maxDepth ) + self.recurse( (cn3, c1, c2, c4), depth+1, maxDepth ) + self.recurse( (cn4, c1, c2, c3), depth+1, maxDepth ) + + def generate(self, depth): + """ + Wrapper for the recurse function. Generate the AG, + @param depth: Recursion depth of the Gasket + @type depth: int + """ + self.recurse(self.start, 0, depth) + diff --git a/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.inx b/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.inx new file mode 100644 index 00000000..c069020e --- /dev/null +++ b/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.inx @@ -0,0 +1,34 @@ + + + Apollonian Gasket + fablabchemnitz.de.apollonian_gasket + + + 3 + 2.0 + 3.0 + 3.0 + true + true + + + + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.py b/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.py new file mode 100644 index 00000000..c859d2db --- /dev/null +++ b/extensions/fablabchemnitz/apollonian_gasket/apollonian_gasket.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 + +import inkex +import apolloniangasket_func +from lxml import etree + +__version__ = '0.0' + +def cplxs2pts(zs): + tt = [] + for z in zs: + tt.extend([z.real,z.imag]) + return tt + +def draw_SVG_circle(parent, r, cx, cy, name): + " structure an SVG circle entity under parent " + circ_attribs = { 'cx': str(cx), 'cy': str(cy), + 'r': str(r), + inkex.addNS('label','inkscape'): name} + circle = etree.SubElement(parent, inkex.addNS('circle','svg'), circ_attribs) + +def draw_SVG_circleAsPath(parent, r, cx, cy, name): + circ_attribs = { + "d": "M {:0.6f}, {:0.6f} a {:0.6f},{:0.6f} 0 1,0 {:0.6f},0 a {:0.6f},{:0.6f} 0 1,0 {:0.6f},0".format( + cx - r, cy, r, r, 2*r, r, r, -2*r), + inkex.addNS('label','inkscape'): name} + circle = etree.SubElement(parent, inkex.addNS('path','svg'), circ_attribs) + +class Gasket(inkex.EffectExtension): # choose a better name + + def add_arguments(self, pars): + pars.add_argument("--active_tab") + pars.add_argument("--depth",type=int, default=3) + pars.add_argument("--c1", type=float, default=2.0) + pars.add_argument("--c2", type=float, default=3.0) + pars.add_argument("--c3", type=float, default=3.0) + pars.add_argument("--shrink", type=inkex.Boolean, default=True) + pars.add_argument("--as_paths", type=inkex.Boolean, default=True) + + def calc_unit_factor(self): + unit_factor = self.svg.unittouu(str(1.0) + self.options.units) + return unit_factor + +### ------------------------------------------------------------------- +### Main function and is called when the extension is run. + + def effect(self): + + #set up path styles + path_stroke = '#DD0000' # take color from tab3 + path_fill = 'none' # no fill - just a line + path_stroke_width = self.svg.unittouu(str(0.1) + "mm") + page_id = self.options.active_tab # sometimes wrong the very first time + + style_curve = { 'stroke': path_stroke, + 'fill': 'none', + 'stroke-width': path_stroke_width } + + # This finds center of current view in inkscape + t = 'translate(%s,%s)' % (self.svg.namedview.center[0], self.svg.namedview.center[1]) + + # add a group to the document's current layer + #all the circles inherit style from this group + g_attribs = { inkex.addNS('label','inkscape'): 'zengon' + "_%d"%(self.options.depth), + inkex.addNS('transform-center-x','inkscape'): str(0), + inkex.addNS('transform-center-y','inkscape'): str(0), + 'transform': t, + 'style' : str(inkex.Style((style_curve))), + 'info':'N: '} + topgroup = etree.SubElement(self.svg.get_current_layer(), 'g', g_attribs) + + circles = apolloniangasket_func.main(c1=self.options.c1, + c2=self.options.c2, + c3=self.options.c3, + depth=self.options.depth) + + #shrink the circles so they don't touch + #useful for laser cutting + + if self.options.shrink: + circles = circles[1:] + for cc in circles: + cc.r = abs(cc.r) + if cc.r >.5: + cc.r -= .1 + else: + cc.r *= .9 + + scale_factor = 200 + for c in circles: + cx, cy, r = c.m.real, c.m.imag, abs(c.r) + + #rescale and add circle to document + cx, cy, r = scale_factor * cx , scale_factor * cy, scale_factor * r + if self.options.as_paths is False: + draw_SVG_circle(topgroup, r, cx, cy, 'apollian') + else: + draw_SVG_circleAsPath(topgroup, r, cx, cy, 'apollian') + +if __name__ == '__main__': + Gasket().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/apollonian_gasket/apolloniangasket_func.py b/extensions/fablabchemnitz/apollonian_gasket/apolloniangasket_func.py new file mode 100644 index 00000000..64315b6e --- /dev/null +++ b/extensions/fablabchemnitz/apollonian_gasket/apolloniangasket_func.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 + +# Command line program to create svg apollonian circles + +# Copyright (c) 2014 Ludger Sandig +# This file is part of apollon. + +# Apollon is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# Apollon is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with Apollon. If not, see . + +import math +from apollon import ApollonianGasket + +def ag_to_svg(circles, colors, tresh=0.00005): + """ + Convert a list of circles to svg, optionally color them. + @param circles: A list of L{Circle}s + @param colors: A L{ColorMap} object + @param tresh: Only circles with a radius greater than the product of tresh and maximal radius are saved + """ + svg = [] + + tresh = .000005 + print ('>>', tresh) + + # Find the biggest circle, which hopefully is the enclosing one + # and has a negative radius because of this. Note that this does + # not have to be the case if we picked an unlucky set of radii at + # the start. If that was the case, we're screwed now. + + big = min(circles, key=lambda c: c.r.real) + + # Move biggest circle to front so it gets drawn first + circles.remove(big) + circles.insert(0, big) + + if big.r.real < 0: + # Bounding box from biggest circle, lower left corner and two + # times the radius as width + corner = big.m - ( abs(big.r) + abs(big.r) * 1j ) + vbwidth = abs(big.r)*2 + width = 500 # Hardcoded! + + # Line width independent of circle size + lw = (vbwidth/width) + + svg.append('\n' % (width, width, corner.real, corner.imag, vbwidth, vbwidth)) + + # Keep stroke width relative + svg.append('\n' % lw) + + # Iterate through circle list, circles with radius radmin: + fill = colors.color_for(abs(c.r)) + svg.append(( '\n' % (c.m.real, c.m.imag, abs(c.r), fill))) + + svg.append('\n') + svg.append('\n') + + return ''.join(svg) + +def impossible_combination(c1, c2, c3): + # If any curvatures x, y, z satisfy the equation + # x = 2*sqrt(y*z) + y + z + # then no fourth enclosing circle can be genereated, because it + # would be a line. + # We need to see for c1, c2, c3 if they could be "x". + + impossible = False + + sets = [(c1,c2,c3), (c2,c3,c1), (c3,c1,c2)] + + for (x, y, z) in sets: + if x == 2*math.sqrt(y*z) + y + z: + impossible = True + + return impossible + +def main(c1=3.,c2=2.,c3=2.,depth=5): + # Sanity checks + for c in [c1, c2,c3]: + if c == 0: + print("Error: curvature or radius can't be 0") + exit(1) + if impossible_combination(c1, c2, c3): + print("Error: no apollonian gasket possible for these curvatures") + exit(1) + + ag = ApollonianGasket(c1, c2, c3) + + ag.generate(depth) + + # Get smallest and biggest radius + smallest = abs(min(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) + biggest = abs(max(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) + + return ag.genCircles \ No newline at end of file diff --git a/extensions/fablabchemnitz/apply_transformations/apply_transformations.inx b/extensions/fablabchemnitz/apply_transformations/apply_transformations.inx new file mode 100644 index 00000000..cdcde283 --- /dev/null +++ b/extensions/fablabchemnitz/apply_transformations/apply_transformations.inx @@ -0,0 +1,16 @@ + + + Apply Transformations + fablabchemnitz.de.apply_transformations + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/apply_transformations/apply_transformations.py b/extensions/fablabchemnitz/apply_transformations/apply_transformations.py new file mode 100644 index 00000000..c90b80ef --- /dev/null +++ b/extensions/fablabchemnitz/apply_transformations/apply_transformations.py @@ -0,0 +1,206 @@ +#!/usr/bin/env python3 +# +# License: GPL2 +# Copyright Mark "Klowner" Riedesel +# https://github.com/Klowner/inkscape-applytransforms +# +import copy +import math +from lxml import etree +import inkex +from inkex.paths import CubicSuperPath, Path +from inkex.transforms import Transform +from inkex.styles import Style + +NULL_TRANSFORM = Transform([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + + +class ApplyTransformations(inkex.EffectExtension): + + def effect(self): + if self.svg.selected: + for id, shape in self.svg.selected.items(): + self.recursiveFuseTransform(shape) + else: + self.recursiveFuseTransform(self.document.getroot()) + + @staticmethod + def objectToPath(element): + if element.tag == inkex.addNS('g', 'svg'): + return element + + if element.tag == inkex.addNS('path', 'svg') or element.tag == 'path': + for attName in element.attrib.keys(): + if ("sodipodi" in attName) or ("inkscape" in attName): + del element.attrib[attName] + return element + + return element + + def scaleStrokeWidth(self, element, transf): + if 'style' in element.attrib: + style = element.attrib.get('style') + style = dict(Style.parse_str(style)) + update = False + + if 'stroke-width' in style: + try: + stroke_width = float(style.get('stroke-width').strip().replace("px", "")) + stroke_width *= math.sqrt(abs(transf.a * transf.d)) + style['stroke-width'] = str(stroke_width) + update = True + except AttributeError: + pass + + if update: + element.attrib['style'] = Style(style).to_str() + + def recursiveFuseTransform(self, element, transf=[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]): + + transf = Transform(transf) * Transform(element.get("transform", None)) #a, b, c, d = linear transformations / e, f = translations + + if 'transform' in element.attrib: + del element.attrib['transform'] + + element = ApplyTransformations.objectToPath(element) + + if transf == NULL_TRANSFORM: + # Don't do anything if there is effectively no transform applied + # reduces alerts for unsupported elements + pass + elif 'd' in element.attrib: + d = element.get('d') + p = CubicSuperPath(d) + p = Path(p).to_absolute().transform(transf, True) + element.set('d', str(Path(CubicSuperPath(p).to_path()))) + + self.scaleStrokeWidth(element, transf) + + elif element.tag in [inkex.addNS('polygon', 'svg'), + inkex.addNS('polyline', 'svg')]: + points = element.get('points') + points = points.strip().split(' ') + for k, p in enumerate(points): + if ',' in p: + p = p.split(',') + p = [float(p[0]), float(p[1])] + p = transf.apply_to_point(p) + p = [str(p[0]), str(p[1])] + p = ','.join(p) + points[k] = p + points = ' '.join(points) + element.set('points', points) + + self.scaleStrokeWidth(element, transf) + + elif element.tag in [inkex.addNS("ellipse", "svg"), inkex.addNS("circle", "svg")]: + + def isequal(a, b): + return abs(a - b) <= transf.absolute_tolerance + + if element.TAG == "ellipse": + rx = float(element.get("rx")) + ry = float(element.get("ry")) + else: + rx = float(element.get("r")) + ry = rx + + cx = float(element.get("cx")) + cy = float(element.get("cy")) + sqxy1 = (cx - rx, cy - ry) + sqxy2 = (cx + rx, cy - ry) + sqxy3 = (cx + rx, cy + ry) + newxy1 = transf.apply_to_point(sqxy1) + newxy2 = transf.apply_to_point(sqxy2) + newxy3 = transf.apply_to_point(sqxy3) + + element.set("cx", (newxy1[0] + newxy3[0]) / 2) + element.set("cy", (newxy1[1] + newxy3[1]) / 2) + edgex = math.sqrt( + abs(newxy1[0] - newxy2[0]) ** 2 + abs(newxy1[1] - newxy2[1]) ** 2 + ) + edgey = math.sqrt( + abs(newxy2[0] - newxy3[0]) ** 2 + abs(newxy2[1] - newxy3[1]) ** 2 + ) + + if not isequal(edgex, edgey) and ( + element.TAG == "circle" + or not isequal(newxy2[0], newxy3[0]) + or not isequal(newxy1[1], newxy2[1]) + ): + inkex.utils.errormsg( + "Warning: Shape %s (%s) is approximate only, try Object to path first for better results" + % (element.TAG, element.get("id")) + ) + + if element.TAG == "ellipse": + element.set("rx", edgex / 2) + element.set("ry", edgey / 2) + else: + element.set("r", edgex / 2) + + # this is unstable at the moment + elif element.tag == inkex.addNS("use", "svg"): + href = None + old_href_key = '{http://www.w3.org/1999/xlink}href' + new_href_key = 'href' + if element.attrib.has_key(old_href_key) is True: # {http://www.w3.org/1999/xlink}href (which gets displayed as 'xlink:href') attribute is deprecated. the newer attribute is just 'href' + href = element.attrib.get(old_href_key) + #element.attrib.pop(old_href_key) + if element.attrib.has_key(new_href_key) is True: + href = element.attrib.get(new_href_key) #we might overwrite the previous deprecated xlink:href but it's okay + #element.attrib.pop(new_href_key) + + #get the linked object from href attribute + linkedObject = self.document.getroot().xpath("//*[@id = '%s']" % href.lstrip('#')) #we must remove hashtag symbol + linkedObjectCopy = copy.copy(linkedObject[0]) + objectType = linkedObject[0].tag + + if objectType == inkex.addNS("image", "svg"): + mask = None #image might have an alpha channel + new_mask_id = self.svg.get_unique_id("mask") + newMask = None + if element.attrib.has_key('mask') is True: + mask = element.attrib.get('mask') + #element.attrib.pop('mask') + + #get the linked mask from mask attribute. We remove the old and create a new + if mask is not None: + linkedMask = self.document.getroot().xpath("//*[@id = '%s']" % mask.lstrip('url(#').rstrip(')')) #we must remove hashtag symbol + linkedMask[0].delete() + maskAttributes = {'id': new_mask_id} + newMask = etree.SubElement(self.document.getroot(), inkex.addNS('mask', 'svg'), maskAttributes) + + width = float(linkedObjectCopy.get('width')) * transf.a + height = float(linkedObjectCopy.get('height')) * transf.d + linkedObjectCopy.set('width', '{:1.6f}'.format(width)) + linkedObjectCopy.set('height', '{:1.6f}'.format(height)) + linkedObjectCopy.set('x', '{:1.6f}'.format(transf.e)) + linkedObjectCopy.set('y', '{:1.6f}'.format(transf.f)) + if newMask is not None: + linkedObjectCopy.set('mask', 'url(#' + new_mask_id + ')') + maskRectAttributes = {'x': '{:1.6f}'.format(transf.e), 'y': '{:1.6f}'.format(transf.f), 'width': '{:1.6f}'.format(width), 'height': '{:1.6f}'.format(height), 'style':'fill:#ffffff;'} + maskRect = etree.SubElement(newMask, inkex.addNS('rect', 'svg'), maskRectAttributes) + self.document.getroot().append(linkedObjectCopy) #for each svg:use we append a copy to the document root + element.delete() #then we remove the use object + else: + #self.recursiveFuseTransform(linkedObjectCopy, transf) + self.recursiveFuseTransform(element.unlink(), transf) + + elif element.tag in [inkex.addNS('rect', 'svg'), + inkex.addNS('text', 'svg'), + inkex.addNS('image', 'svg')]: + inkex.utils.errormsg( + "Shape %s (%s) not yet supported, try Object to path first" + % (element.TAG, element.get("id")) + ) + + else: + # e.g. + self.scaleStrokeWidth(element, transf) + + for child in element.getchildren(): + self.recursiveFuseTransform(child, transf) + +if __name__ == '__main__': + ApplyTransformations().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.inx b/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.inx new file mode 100644 index 00000000..5c9a5948 --- /dev/null +++ b/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.inx @@ -0,0 +1,55 @@ + + + Archimedes Spiral + fablabchemnitz.de.archimedes_spiral + + + + 50 + 3 + 50 + + + + + 0 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + ../000_about_fablabchemnitz.svg + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.py b/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.py new file mode 100644 index 00000000..5c55d240 --- /dev/null +++ b/extensions/fablabchemnitz/archimedes_spiral/archimedes_spiral.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 +""" +Copyright (C) 2017 Panagiotis Loukas +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WAphiANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WAphiANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Version 0.2 +This script was written by Panagiotis Loukas to make spiral easy. +It simply, + +Have fun :) +PS. + Written on Arch. +""" + +import inkex +from lxml import etree +from math import cos, sin, pi, log, sqrt + +class Archimedes(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('--tab') + pars.add_argument('--r', type = int, default = '50') + pars.add_argument('--a', type = float, default = '3') + pars.add_argument('--step', type = int, default = '50') + pars.add_argument('--trl', default = '1') + pars.add_argument('--turns', type = float, default = '5') + pars.add_argument('--length', type = float, default = '500') + + def effect(self): + th = pi / 3 + a = self.options.a + r = self.options.r + + length = self.options.length + if length > 0: + turns = self.angle(a, r, length, th) / (2 * pi) + else: + turns = self.options.turns + + if self.options.trl == '1': + step = -self.options.step + else: + step = self.options.step + + layer = etree.SubElement(self.document.getroot(),'g') + path = etree.Element(inkex.addNS('path','svg')) + path.set('d', self.built(r, step, a, turns)) + path.set('style',"fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1") + layer.append(path) + + def built(self, r0, st = 4, a = 4, k = 1, th = 0): + step = 2 * pi / st + r = r0 + s = "M " + str(r * cos(th)) + ", " + str(-r * sin(th)) + for i in range(0, int(k * (abs(st)))): + prin = th + i * step + meta = th + (i + 1) * step + rp = r0 + abs(a * prin)# instead we put the absolute value the spiral will drift inwards + rm = r0 + abs(a * meta)# at the absolute price closes outwards + + s += "a " + str(rm) + "," + str(rm) + " 0 0," + self.options.trl + " " + str(-rp * cos(prin) + rm * cos(meta)) + "," + str(rp * sin(prin) -rm * sin(meta)) + return s + + # see https://mathepedia.de/Archimedische_Spirale.html for formula of total arc length + def spirallength(self, a, r0, th): + phi = (r0 / a) + th + phi_sqrt = sqrt(phi ** 2 + 1) + return (a / 2) * (phi * phi_sqrt + log(phi + phi_sqrt)) + + def ds(self, a, r0, th): + return self.spirallength(a, r0, th) - self.spirallength(a, r0, 0) + + def angle(self, a, r0, length, th): + i = 0.0 + while (True): + ls=self.ds(a, r0, i) + if length - ls > 100: + i += 0.01 + elif length - ls > 10: i += 0.001 + elif length - ls > 1: i += 0.0001 + elif length - ls > 0.1: i += 0.00001 + elif length - ls > 0.01: i += 0.000001 + else: break + return i + +if __name__ == '__main__': + Archimedes().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.inx b/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.inx new file mode 100644 index 00000000..bb6d8563 --- /dev/null +++ b/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.inx @@ -0,0 +1,17 @@ + + + Barrel Distortion + fablabchemnitz.de.barrel_distorsion + -1.0 + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.py b/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.py new file mode 100644 index 00000000..107ecf84 --- /dev/null +++ b/extensions/fablabchemnitz/barrel_distorsion/barrel_distorsion.py @@ -0,0 +1,100 @@ +import math +import re +import inkex +from inkex import bezier +from inkex.paths import Path, CubicSuperPath + +class BarrelDistorsion(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument("--lambda_coef", type=float, default=-5.0, help="command line help") + + def distort_coordinates(self, x, y): + """Method applies barrel distorsion to given points with distorsion center in center of image, selected to + + Args: + x (float): X coordinate of given point + y (float): Y coordinate of given point + + Returns: + tuple(float, float): Tuple with X,Y distorted coordinates of given point + """ + x_u = (x - self.x_c) / (self.width + self.height) + y_u = (y - self.y_c) / (self.width + self.height) + x_d = x_u / 2 / (self.q * y_u**2 + x_u**2 * self.q) * (1 - math.sqrt(1 - 4 * self.q * y_u**2 - 4 * x_u**2 * self.q)) + y_d = y_u / 2 / (self.q * y_u**2 + x_u**2 * self.q) * (1 - math.sqrt(1 - 4 * self.q * y_u**2 - 4 * x_u**2 * self.q)) + x_d *= self.width + self.height + y_d *= self.width + self.height + x_d += self.x_c + y_d += self.y_c + return x_d, y_d + + def split_into_nodes(self, nodes_number=1000): + for id, node in self.svg.selected.items(): + if node.tag == inkex.addNS('path', 'svg'): + p = CubicSuperPath(node.get('d')) + new = [] + for sub in p: + new.append([sub[0][:]]) + i = 1 + while i <= len(sub) - 1: + length = bezier.cspseglength( + new[-1][-1], sub[i]) + + splits = nodes_number + for s in range(int(splits), 1, -1): + new[-1][-1], next, sub[ + i] = bezier.cspbezsplitatlength( + new[-1][-1], sub[i], 1.0 / s) + new[-1].append(next[:]) + new[-1].append(sub[i]) + i += 1 + node.set('d', str(CubicSuperPath(new))) + + def effect(self): + if re.match(r'g\d+', + list(self.svg.selected.items())[0][0]) is not None: + raise SystemExit( + "You are trying to distort group of objects.\n This extension works only with path objects due to Inkscape API restrictions.\n Ungroup your objects and try again." + ) + self.split_into_nodes() + self.q = self.options.lambda_coef + if self.q == 0.0: + inkex.errormsg("Invalid lambda coefficient. May not be exactly zero.") + return + nodes = [] + for id, node in self.svg.selected.items(): + if node.tag == inkex.addNS('path', 'svg'): + path = Path(node.get('d')).to_arrays() + nodes += path + nodes_filtered = [x for x in nodes if x[0] != 'Z'] + x_coordinates = [x[-1][-2] for x in nodes_filtered] + y_coordinates = [y[-1][-1] for y in nodes_filtered] + self.width = max(x_coordinates) - min(x_coordinates) + self.height = max(y_coordinates) - min(y_coordinates) + self.x_c = sum(x_coordinates) / len(x_coordinates) + self.y_c = sum(y_coordinates) / len(y_coordinates) + for id, node in self.svg.selected.items(): + if node.tag == inkex.addNS('path', 'svg'): + path = Path(node.get('d')).to_arrays() + distorted = [] + first = True + for cmd, params in path: + if cmd != 'Z': + if first == True: + x = params[-2] + y = params[-1] + distorted.append( + ['M', + list(self.distort_coordinates(x, y))]) + first = False + else: + x = params[-2] + y = params[-1] + distorted.append( + ['L', self.distort_coordinates(x, y)]) + node.set('d', str(Path(distorted))) + + +if __name__ == '__main__': + BarrelDistorsion().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/batch_task/BaseExtension.py b/extensions/fablabchemnitz/batch_task/BaseExtension.py new file mode 100644 index 00000000..7e558f4d --- /dev/null +++ b/extensions/fablabchemnitz/batch_task/BaseExtension.py @@ -0,0 +1,195 @@ +#!/usr/bin/env python3 + +# pylint: disable=too-many-ancestors + +# standard library +import os +import sys +import re +import argparse +from shutil import copy2 +# from subprocess import Popen, PIPE +# import time +# from lxml import etree + +# local library +import inkex +from inkex.command import inkscape +from inkex.elements import _selected as selection + +MIN_PYTHON_VERSION = (3, 6) # Mainly for f-strings +if (sys.version_info.major, sys.version_info.minor) < (3, 6): + inkex.Effect.msg(f"Python {MIN_PYTHON_VERSION[0]}.{MIN_PYTHON_VERSION[1]} or later required.") + sys.exit(1) + + +class BaseExtension(inkex.Effect): + """Custom class that makes creation of extensions easier. + + Users of this class need not worry about boilerplates, such as how to + call inkscape via shell, and the management of tempfiles. Useful functions + are also provided.""" + + def __init__(self, custom_effect, args_adder=None): + """Init base class. + + In a typical Inkscape extension that does not make use of BaseExtension, + the effect is determined by the "effect" method of the extension class. + This init function will take in a method, and run it in the "effect" method + together with the other boilerplate. + + This init method takes in a function under the custom_effect argument. + This function will handle the user's effects, minus the boilerplate. It + has to return a list[str] object, with each str being a verb that inkscape + can execute.""" + + inkex.Effect.__init__(self) + self.custom_effect = custom_effect + + self._msg = self.msg # The old msg function provided by inkex (only accepts strings) + def msg(*args, sep=' '): + """Improved msg method, similar to Python's print""" + self._msg(sep.join([str(arg) for arg in args])) + self.msg = msg + + if args_adder is not None: + args_adder(self.arg_parser) + self.args_adder = args_adder + + + + + def z_sort(self, alist): + """Return new list sorted in document order (depth-first traversal).""" + return list(self.z_iter(alist)) + + + def z_iter(self, alist): + """Return iterator over ids in document order (depth-first traversal).""" + id_list = list(alist) + count = len(id_list) + for element in self.document.getroot().iter(): + # element_id = element.get('id') + # if element_id is not None and element_id in id_list: + if element in alist: + id_list.remove(element) + yield element + count -= 1 + if not count: + return + + @staticmethod + def show(obj): + """Returns a str representation of object""" + def rep(obj): + if hasattr(obj, 'get_id'): + return f"{type(obj).__name__}({obj.get_id()})" + return f"{type(obj).__name__}" + + + if type(obj).__name__ == 'ElementList': + return ('ElementList(' + + ', '.join([rep(child) for child in obj.values()]) + + ')') + if isinstance(obj, list): + return '[' + ', '.join(rep(child) for child in obj) + ']' + + + return rep(obj) + + + def find(self, obj: any, xpath='/*') -> list: + """Returns a list of objects which satisfies XPath + + Args: + obj (any): Parent object to recurse into. Examples include root, selected, or a group. + xpath (str, optional): Defaults to '/*'. + + Returns: + list: [description] + """ + + BASIC_TAGS = ('circle', 'ellipse', 'line', 'polygon', 'polyline', 'rect', 'path', 'image', 'g') + SPECIAL_TAGS = { + 'l': "svg:g[@inkscape:groupmode='layer']", + 'p': 'svg:path' + } + + xpath = re.sub(r'((?<=/)(' + '|'.join(BASIC_TAGS) + r')\b)', r'svg:\1', xpath) + for k, v in SPECIAL_TAGS.items(): + xpath = re.sub('(?<=/)' + k + r'\b', v, xpath) + + xpath = re.sub(r'(?<=\[)(\d+):(\d+)(?=\])', r'position()>=\1 and position()<\2', xpath) + + if type(obj).__name__ != 'ElementList': + obj = [obj] + + output = [] + for child in obj: + matches = child.xpath(xpath, namespaces={ + 'svg': 'http://www.w3.org/2000/svg', + 'inkscape': 'http://www.inkscape.org/namespaces/inkscape'}) + for match in matches: + if type(match).__name__ not in ('Defs', 'NamedView', 'Metadata'): + output.append(match) + + return output + + + def effect(self): + """Main entry point to process current document. Not to be called externally.""" + + actions_list = self.custom_effect(self) + + if actions_list is None or actions_list == []: + self.msg("No actions received. Perhaps you are calling inkex object methods?") + elif isinstance(actions_list, list): + tempfile = self.options.input_file + "-BaseExtension.svg" + + # prepare + copy2(self.options.input_file, tempfile) + + #disabled because it leads to crash Inkscape: https://gitlab.com/inkscape/inkscape/-/issues/2487 + #actions_list.append("FileSave") + #actions_list.append("FileQuit") + #extra_param = "--with-gui" + + #workaround to fix it (we use export to tempfile instead processing and saving again) + actions_list.append("export-type:svg") + actions_list.append("export-filename:{}".format(tempfile)) + actions_list.append("export-do") + extra_param = "--batch-process" + + actions = ";".join(actions_list) + inkscape(tempfile, extra_param, actions=actions) + + + # finish up + # replace current document with content of temp copy file + self.document = inkex.load_svg(tempfile) + # update self.svg + self.svg = self.document.getroot() + + + # Clean up tempfile + try: + os.remove(tempfile) + except Exception: # pylint: disable=broad-except + pass + + def call(self, child, ext_options): + """Used to call an extension from another extension""" + + old_options = self.options + + parser = argparse.ArgumentParser() + child.args_adder(parser) + self.options = parser.parse_args([]) + + for k, v in ext_options.items(): + setattr(self.options, k, v) + + output = child.custom_effect(self) + self.options = old_options + + return output diff --git a/extensions/fablabchemnitz/batch_task/batch_task.inx b/extensions/fablabchemnitz/batch_task/batch_task.inx new file mode 100644 index 00000000..8453f35f --- /dev/null +++ b/extensions/fablabchemnitz/batch_task/batch_task.inx @@ -0,0 +1,177 @@ + + + Batch Task + fablabchemnitz.de.batch_task + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + all + + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/batch_task/batch_task.py b/extensions/fablabchemnitz/batch_task/batch_task.py new file mode 100644 index 00000000..e3cbc3ce --- /dev/null +++ b/extensions/fablabchemnitz/batch_task/batch_task.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python3 +import os +import sys +import re +import subprocess + +from BaseExtension import BaseExtension + +# For linting purposes +from argparse import ArgumentParser + +"""If syntax error occurs here, change inkscape interpreter to python3""" + +"""I have yet to find a way for an extension to call another extension with parameters, +without GUI. This extension can be run as part of a standalone extension (using BaseExtension) +or imported for use by another extension. This workaround is done via the 'option' arg in +the 'custom_effect' function""" + + +def custom_effect(self: BaseExtension): + """Note: The init of the BaseExtension class will set its 'custom_effect' attr + to this function. Hence, the self arg is of type BaseExtension.""" + + + selected = self.svg.selected + root = self.document.getroot() + actions_list = [] + + proc = subprocess.run("inkscape --verb-list | grep -oP '^.+?(?=:)'", + shell=True, capture_output=True) + valid_actions_and_verbs = proc.stdout.decode().splitlines() + + proc = subprocess.run("inkscape --action-list | grep -oP '^.+?(?= *:)'", + shell=True, capture_output=True) + valid_actions_and_verbs += proc.stdout.decode().splitlines() + + + self.options.dry_run = self.options.dry_run == 'true' + + def verify_action(action): + if ':' in action: + action = action.split(':')[0] + if action not in valid_actions_and_verbs: + raise ValueError(action) + + def select_do_individually(objs, actions): + for obj in objs: + actions_list.append("EditDeselect") + actions_list.append("select-by-id:" + obj.get_id()) + if isinstance(actions, str): + actions = [actions] + for action in actions: + verify_action(action) + actions_list.append(action) + + def select_do_on_all(objs, actions): + for obj in objs: + actions_list.append("select-by-id:" + obj.get_id()) + + if isinstance(actions, str): + actions = [actions] + for action in actions: + verify_action(action) + actions_list.append(action) + effects = [] + try: + if self.options.tab_effect is None: + if self.options.effects is not None: + self.options.tab_effect = 'Multi' + elif self.options.effect1 is not None: + self.options.tab_effect = 'Simple' + + elif self.options.tab_effect in ('Preset', 'Simple'): + for attr in ('effect_' + self.options.tab_effect.lower() + str(i) for i in range(1, 4)): + e = getattr(self.options, attr) + if e != None: + effects += [e.strip()] + if effects == []: + raise ValueError + elif self.options.tab_effect == 'Multi': + if self.options.effects is None: + raise ValueError + for line in self.options.effects.split('\\n'): + effects += [e.strip() for e in line.split(';') if e != ''] + except ValueError: + self.msg("No effects inputted! Quitting...") + sys.exit(0) + + + if self.options.target == 'root': + objects = self.find(root, '/svg:svg' + self.options.xpath) + elif self.options.target == 'selected': + objects = self.find(selected, self.options.xpath) + if objects == []: + self.msg(f"No objects satisfies XPath: '{self.options.xpath}'.") + self.msg("Root:", self.show(root)) + self.msg("Selected:", self.show(selected)) + sys.exit(0) + + + try: + if self.options.mode == 'all': + select_do_on_all(objects, effects) + elif self.options.mode == 'indiv': + select_do_individually(objects, effects) + except ValueError as e: + self.msg(f"'{e.args[0]}' is not a valid action or verb in inkscape.") + sys.exit(1) + + if self.options.dry_run: + self.msg(f"{'DRY RUN':=^40}") + self.msg("Root:", self.show(self.find(root, '/*'))) + self.msg("Selected:", self.show(selected)) + self.msg() + self.msg("XPath:", self.show(objects)) + self.msg() + self.msg("Actions:", actions_list) + sys.exit(0) + return actions_list + + +def args_adder(arg_parser: ArgumentParser): + + arg_parser.add_argument("--target", default='root', help="Object to apply xpath find on") + arg_parser.add_argument("--xpath", default='/*', help="For selection of objects") + arg_parser.add_argument("--tab_main", default=None) + arg_parser.add_argument("--Simple", default=None) + arg_parser.add_argument("--Multi", default=None) + arg_parser.add_argument("--mode", default="all", help="Mode to apply effects on objects") + arg_parser.add_argument("--tab_effect", default=None) + for arg in (*(x + str(y) for x in ('effect_preset', 'effect_simple') for y in range(1, 4)), 'effects'): + arg_parser.add_argument(f"--{arg}", default=None, help="Inkscape verb for path op") + arg_parser.add_argument("--dry_run", default='false') + arg_parser.add_argument("--null_notebook", default='false') + + #import inkex + #for key, value in arg_parser.parse_args()._get_kwargs(): + # if value is not None: + # inkex.utils.debug("{}={}".format(key, value)) + +BatchTask = BaseExtension(custom_effect, args_adder=args_adder) + +if __name__ == '__main__': + BatchTask.run() + + + + +# Namespace(Multi='SelectionDiff', Simple='SelectionDiff', dry_run='false', effect1='SelectionBreakApart', effect2=None, effect3=None, effects=None, ids=['image25'], input_file='/tmp/ink_ext_XXXXXX.svgIDCKU0', mode='all', null='null', output=<_io.BufferedWriter name=''>, selected_nodes=[], tab_effect='Simple', tab_main='Options', target='root', xpath='/*') + + +# Namespace(Multi=None, Simple=None, dry_run='false', effect1='SelectionDelete', effect2=None, effect3=None, effects=None, mode='all', null='false', tab_effect=None, tab_main=None, target='root', xpath='/*') diff --git a/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.inx b/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.inx new file mode 100644 index 00000000..d632b4ed --- /dev/null +++ b/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.inx @@ -0,0 +1,16 @@ + + + Bezier Envelope + fablabchemnitz.de.bezier_envelope + + path + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.py b/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.py new file mode 100644 index 00000000..d9360c44 --- /dev/null +++ b/extensions/fablabchemnitz/bezier_envelope/bezier_envelope.py @@ -0,0 +1,399 @@ +#!/usr/bin/env python3 +''' +Bezier Envelope extension for Inkscape +Copyright (C) 2009 Gerrit Karius + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +About the Bezier Envelope extension: + +This extension implements Bezier enveloping. +It takes an arbitrary path (the "letter") and a 4-sided path (the "envelope") as input. +The envelope must be 4 segments long. Unless the letter is to be rotated or flipped, +the envelope should begin at the upper left corner and be drawn clockwise. +The extension then attempts to squeeze the letter into the envelope +by rearranging all anchor and handle points of the letter's path. + +In order to do this, the bounding box of the letter is used. +All anchor and bezier handle points get new x and y coordinates between 0% and 100% +according to their place inside the bounding box. +The 4 sides of the envelope are then interpreted as deformed axes. +Points at 0% or 100% could be placed along these axes, but because most points +are somewhere inside the bounding box, some tweening of the axes must be done. + +The function mapPointsToMorph does the tweening. +Say, some point is at x=30%, y=40%. +For the tweening, the function tweenCubic first calculates a straight tween +of the y axis at the x percentage of 30%. +This tween axis now floats somewhere between the y axis keys at the x percentage, +but is not necessarily inside the envelope, because the x axes are not straight. +Now, the end points on the two x axes at 30% are calculated. The function match() +takes these points and calculates a "stretch" transform which maps the two anchor +points of the y axis tween to the two points on the x axes by rotating the tween and +stretching it along its endpoints. This transform is then applied to the handle points, +to get the entire tweened y axis to its x tweened position. +Last, the point at the y percentage 40% of this y axis tween is calculated. +That is the final point of the enveloped letter. + +Finally, after all of the letter's points have been recalculated in this manner, +the resulting path is taken and replaces the letter's original path. + +TODO: +* Currently, both letter and envelope must be paths to work. +-> Arbitrary other shapes like circles and rectangles should be interpreted as paths. +* It should be possible to select several letters, and squeeze them into one envelope as a group. +* It should be possible to insert a clone of the letter, instead of replacing it. +* This program was originally written in Java. Maybe for some code, Python shortcuts can be used. + +I hope the comments are not too verbose. Enjoy! + +''' +import inkex +from inkex import Transform +from inkex.paths import Path +import math +import sys +import ffgeom + + +class BezierEnvelope(inkex.EffectExtension): + + segmentTypes = ["move","line","quad","cubic","close"] + + def effect(self): + if len(self.options.ids) < 2: + inkex.errormsg("Two paths must be selected. The 1st is the letter, the 2nd is the envelope and must have 4 sides.") + exit() + + letterElement = self.svg.selected[self.options.ids[0]] + envelopeElement = self.svg.selected[self.options.ids[1]] + + if letterElement.get('inkscape:original-d') or envelopeElement.get('inkscape:original-d'): + inkex.errormsg("One or both selected paths have attribute 'inkscape:original-d' which points to Live Path Effects (LPE). Please convert to regular path.") + exit() + + if letterElement.tag != inkex.addNS('path','svg') or envelopeElement.tag != inkex.addNS('path','svg'): + inkex.errormsg("Both letter and envelope must be SVG paths.") + exit() + + axes = extractMorphAxes(Path( envelopeElement.get('d') ).to_arrays()) + if axes is None: + inkex.errormsg("No axes found on envelope.") + exit() + axisCount = len(axes) + if axisCount < 4: + inkex.errormsg("The envelope path has less than 4 segments.") + exit() + for i in range( 0, 4 ): + if axes[i] is None: + inkex.errormsg("axis[%i] is None" % i) + exit() + # morph the enveloped element according to the axes + morph_element( letterElement, envelopeElement, axes ); + + +def morph_element( letterElement, envelopeElement, axes ): + path = Path( letterElement.get('d') ).to_arrays() + morphedPath = morphPath( path, axes ) + letterElement.set("d", str(Path(morphedPath))) + + +# Morphs a path into a new path, according to cubic curved bounding axes. +def morphPath(path, axes): + bounds = [y for x in list(Path(path).bounding_box()) for y in list(x)] + assert len(bounds) == 4 + new_path = [] + current = [ 0.0, 0.0 ] + start = [ 0.0, 0.0 ] + + for cmd, params in path: + segmentType = cmd + points = params + if segmentType == "M": + start[0] = points[0] + start[1] = points[1] + segmentType = convertSegmentToCubic( current, segmentType, points, start ) + percentages = [0.0]*len(points) + morphed = [0.0]*len(points) + numPts = getNumPts( segmentType ) + normalizePoints( bounds, points, percentages, numPts ) + mapPointsToMorph( axes, percentages, morphed, numPts ) + addSegment( new_path, segmentType, morphed ) + if len(points) >= 2: + current[0] = points[ len(points)-2 ] + current[1] = points[ len(points)-1 ] + return new_path + + +def getNumPts( segmentType ): + if segmentType == "M": + return 1 + if segmentType == "L": + return 1 + if segmentType == "Q": + return 2 + if segmentType == "C": + return 3 + if segmentType == "Z": + return 0 + return -1 + + + +def addSegment( path, segmentType, points ): + path.append([segmentType,points]) + + +# Converts visible path segments (Z,L,Q) into absolute cubic segments (C). +def convertSegmentToCubic( current, segmentType, points, start ): + if segmentType == "H": + # print(current, points, start) + assert len(points) == 1 + points.insert(0, current[0]) + # points[0] += current[0] + # print(segmentType, current, points, start) + return convertSegmentToCubic(current, "L", points, start) + elif segmentType == "V": + # print(points) + assert len(points) == 1 + points.append(current[1]) + # points[1] += current[1] + # print(segmentType, current, points, start) + return convertSegmentToCubic(current, "L", points, start) + if segmentType == "M": + return "M"; + if segmentType == "C": + return "C"; + elif segmentType == "Z": + for i in range(0,6): + points.append(0.0) + points[4] = start[0] + points[5] = start[1] + thirdX = (points[4] - current[0]) / 3.0 + thirdY = (points[5] - current[1]) / 3.0 + points[2] = points[4]-thirdX + points[3] = points[5]-thirdY + points[0] = current[0]+thirdX + points[1] = current[1]+thirdY + return "C" + elif segmentType == "L": + for i in range(0,4): + points.append(0.0) + points[4] = points[0] + points[5] = points[1] + thirdX = (points[4] - current[0]) / 3.0 + thirdY = (points[5] - current[1]) / 3.0 + points[2] = points[4]-thirdX + points[3] = points[5]-thirdY + points[0] = current[0]+thirdX + points[1] = current[1]+thirdY + return "C" + elif segmentType == "Q": + for i in range(0,2): + points.append(0.0) + firstThirdX = (points[0] - current[0]) * 2.0 / 3.0 + firstThirdY = (points[1] - current[1]) * 2.0 / 3.0 + secondThirdX = (points[2] - points[0]) * 2.0 / 3.0 + secondThirdY = (points[3] - points[1]) * 2.0 / 3.0 + points[4] = points[2] + points[5] = points[3] + points[0] = current[0] + firstThirdX + points[1] = current[1] + firstThirdY + points[2] = points[2] - secondThirdX + points[3] = points[3] - secondThirdY + return "C" + else: + sys.stderr.write("unsupported segment type: %s\n" % (segmentType)) + return segmentType + + +# Normalizes the points of a path segment, so that they are expressed as percentage coordinates +# relative to the bounding box axes of the total shape. +# @param bounds The bounding box of the shape. +# @param points The points of the segment. +# @param percentages The returned points in normalized percentage form. +# @param numPts +def normalizePoints( bounds, points, percentages, numPts ): + # bounds has structure xmin,xMax,ymin,yMax + xmin,xMax,ymin,yMax = bounds + for i in range( 0, numPts ): + x = i*2 + y = i*2+1 + percentages[x] = (points[x] - xmin) / (xMax-xmin) + percentages[y] = (points[y] - ymin) / (yMax-ymin) + + + +# Extracts 4 axes from a path. It is assumed that the path starts with a move, followed by 4 cubic paths. +# The extraction reverses the last 2 axes, so that they run in parallel with the first 2. +# @param path The path that is formed by the axes. +# @return The definition points of the 4 cubic path axes as float arrays, bundled in another array. +def extractMorphAxes( path ): + points = [] + current = [ 0.0, 0.0 ] + start = [ 0.0, 0.0 ] + # the curved axis definitions go in here + axes = [None]*4 + i = 0 + + for cmd, params in path: + points = params + cmd = convertSegmentToCubic( current, cmd, points, start ) + + if cmd == "M": + current[0] = points[0] + current[1] = points[1] + start[0] = points[0] + start[1] = points[1] + + elif cmd == "C": + + # 1st cubic becomes x axis 0 + # 2nd cubic becomes y axis 1 + # 3rd cubic becomes x axis 2 and is reversed + # 4th cubic becomes y axis 3 and is reversed + if i % 2 == 0: + index = i + else: + index = 4-i + if( i < 2 ): + # axes 1 and 2 + axes[index] = [ current[0], current[1], points[0], points[1], points[2], points[3], points[4], points[5] ] + elif( i < 4 ): + # axes 3 and 4 + axes[index] = [ points[4], points[5], points[2], points[3], points[0], points[1], current[0], current[1] ] + else: + # more than 4 axes - hopefully it was an unnecessary trailing Z + {} + current[0] = points[4] + current[1] = points[5] + i = i + 1 + elif cmd == "Z": + #do nothing + {} + else: + raise Exception("Unsupported segment type: %s" % cmd) + return None + + return axes + + +# Projects points in percentage coordinates into a morphed coordinate system that is framed +# by 2 x cubic curves (along the x axis) and 2 y cubic curves (along the y axis). +# @param axes The x and y axes of the envelope. +# @param percentage The current segment of the letter in normalized percentage form. +# @param morphed The array to hold the returned morphed path. +# @param numPts The number of points to be transformed. +def mapPointsToMorph( axes, percentage, morphed, numPts ): + # rename the axes for legibility + yCubic0 = axes[1] + yCubic1 = axes[3] + xCubic0 = axes[0] + xCubic1 = axes[2] + # morph each point + for i in range( 0, numPts ): + x = i*2 + y = i*2+1 + # tween between the morphed y axes according to the x percentage + tweenedY = tweenCubic( yCubic0, yCubic1, percentage[x] ) + # get 2 points on the morphed x axes + xSpot0 = pointOnCubic( xCubic0, percentage[x] ) + xSpot1 = pointOnCubic( xCubic1, percentage[x] ) + # create a transform that stretches the y axis tween between these 2 points + yAnchor0 = [ tweenedY[0], tweenedY[1] ] + yAnchor1 = [ tweenedY[6], tweenedY[7] ] + xTransform = match( yAnchor0, yAnchor1, xSpot0, xSpot1 ) + # map the y axis tween to the 2 points by applying the stretch transform + for j in range(0,4): + x2 = j*2 + y2 = j*2+1 + pointOnY = [tweenedY[x2],tweenedY[y2]] + Transform(xTransform).apply_to_point(pointOnY) + tweenedY[x2] = pointOnY[0] + tweenedY[y2] = pointOnY[1] + # get the point on the tweened and transformed y axis according to the y percentage + morphedPoint = pointOnCubic( tweenedY, percentage[y] ) + morphed[x] = morphedPoint[0] + morphed[y] = morphedPoint[1] + +# Calculates the point on a cubic bezier curve at the given percentage. +def pointOnCubic( c, t ): + point = [0.0,0.0] + _t_2 = t*t + _t_3 = _t_2*t + _1_t = 1-t + _1_t_2 = _1_t*_1_t + _1_t_3 = _1_t_2*_1_t + + for i in range( 0, 2 ): + point[i] = c[i]*_1_t_3 + 3*c[2+i]*_1_t_2*t + 3*c[4+i]*_1_t*_t_2 + c[6+i]*_t_3 + return point + +# Tweens 2 bezier curves in a straightforward way, +# i.e. each of the points on the curve is tweened along a straight line +# between the respective point on key1 and key2. +def tweenCubic( key1, key2, percentage ): + tween = [0.0]*len(key1) + for i in range ( 0, len(key1) ): + tween[i] = key1[i] + percentage * (key2[i] - key1[i]) + return tween + +# Calculates a transform that matches 2 points to 2 anchors +# by rotating and scaling (up or down) along the axis that is formed by +# a line between the two points. +def match( p1, p2, a1, a2 ): + x = 0 + y = 1 + # distances + dp = [ p2[x]-p1[x], p2[y]-p1[y] ] + da = [ a2[x]-a1[x], a2[y]-a1[y] ] + # angles + angle_p = math.atan2( dp[x], dp[y] ) + angle_a = math.atan2( da[x], da[y] ) + # radians + #rp = math.sqrt( dp[x]*dp[x] + dp[y]*dp[y] ) + #ra = math.sqrt( da[x]*da[x] + da[y]*da[y] ) + rp = math.hypot( dp[x], dp[y] ) + ra = math.hypot( da[x], da[y] ) + # scale + scale = ra / rp + # transforms in the order they are applied + t1 = Transform( "translate(%f,%f)"%(-p1[x],-p1[y]) ).matrix + #t2 = Transform( "rotate(%f)"%(-angle_p) ).matrix + #t3 = Transform( "scale(%f,%f)"%(scale,scale) ).matrix + #t4 = Transform( "rotate(%f)"%angle_a ).matrix + t2 = rotateTransform(-angle_p) + t3 = scale_transform( scale, scale ) + t4 = rotateTransform( angle_a ) + t5 = Transform( "translate(%f,%f)"%(a1[x],a1[y]) ).matrix + # transforms in the order they are multiplied + t = t5 + t = Transform(t) * Transform(t4) + t = Transform(t) * Transform(t3) + t = Transform(t) * Transform(t2) + t = Transform(t) * Transform(t1) + # return the combined transform + return t + + +def rotateTransform( a ): + return [[math.cos(a),-math.sin(a),0],[math.sin(a),math.cos(a),0]] + +def scale_transform( sx, sy ): + return [[sx,0,0],[0,sy,0]] + +if __name__ == '__main__': + BezierEnvelope().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/blobs/blobs.inx b/extensions/fablabchemnitz/blobs/blobs.inx new file mode 100644 index 00000000..f4d68fc6 --- /dev/null +++ b/extensions/fablabchemnitz/blobs/blobs.inx @@ -0,0 +1,32 @@ + + + Blobs Texture + fablabchemnitz.de.blobs + + + + 10 + true + 1000 + 1000 + + + + 10 + 50. + 0. + 0.3 + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/blobs/blobs.py b/extensions/fablabchemnitz/blobs/blobs.py new file mode 100644 index 00000000..0ab642e6 --- /dev/null +++ b/extensions/fablabchemnitz/blobs/blobs.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 + +# These two lines are only needed if you don't put the script directly into +# the installation directory +import math +import inkex +import random +from lxml import etree + +class Blobs(inkex.EffectExtension): + """ +Creates a random blob from a convex hull over n points. +The expected degree of the polygon is sqrt(n). The corners +are blunted by the blunt parameter. 0 means sharp. 1 will +result in loopy splines. + """ + def add_arguments(self, pars): + pars.add_argument("--pgsizep", type=inkex.Boolean, default=True, help="Default rectangle to page size?") + pars.add_argument('--num', type = int, default = 25, help = 'Number of random points to start with') + pars.add_argument('--blunt', type = float, default = 0.3, help = 'Bluntness of corners. Should be < 1') + pars.add_argument('--cave', type = float, default = 0.0, help = 'Concavity. Less blobby and more splatty') + pars.add_argument('--rx', type = int, default = 1000, help = 'Size of work area x') + pars.add_argument('--ry', type = int, default = 1000, help = 'Size of work area y') + pars.add_argument('--sz', type = float, default = 50., help = 'Size of a blob') + pars.add_argument('--nb', type = int, default = 10, help = 'Total number of blobs') + pars.add_argument("--Nmain", default='top', help="Active tab.") + + def effect(self): + global cave + if self.options.pgsizep: + svg = self.document.getroot() + rx = int(self.svg.unittouu(svg.get('width'))) + ry = int(self.svg.unittouu(svg.attrib['height'])) + else: + rx = self.options.rx + ry = self.options.ry + blunt = self.options.blunt + cave = self.options.cave + sz = self.options.sz + nb = self.options.nb + num = self.options.num + + # Get access to main SVG document element and get its dimensions. + svg = self.document.getroot() + + # Create a new layer. + layer = etree.SubElement(svg, 'g') + layer.set(inkex.addNS('label', 'inkscape'), 'Blob Layer') + layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') + + ctrs = [(random.randrange(rx) , random.randrange(ry)) + for i in range(nb) ] + for ctr in ctrs : + points = [(random.gauss(ctr[0], sz) , random.gauss(ctr[1], sz)) + for i in range(num) ] + + px = hull(points) + pts = [points[px[i]] for i in range(len(px))] + + # Create path element + path = etree.Element(inkex.addNS('path','svg')) + path.set('style', str(inkex.Style({'fill':'#000000'}))) + pathstring = 'M ' + str(pts[0][0]) + ' ' + str(pts[0][1]) + ' ' + + for j in range(len(pts)): + k = (j+1) % len(pts) + kk = (j+2) % len(pts) + if j==0 : + (lasth, h1) = sHandles(pts[-1], pts[0], pts[1], blunt) + (h2, hnext) = sHandles(pts[j], pts[k], pts[kk], blunt) + pathstring += "C %f %f %f %f %f %f " % (h1[0], h1[1], + h2[0], h2[1], + pts[k][0], pts[k][1]) + h1 = hnext + + pathstring += 'Z' + path.set('d', pathstring) + layer.append(path) + +def sHandles(pre, pt, post, blunt): + '''I'm proud of this cute little construction for the + spline handles. No doubt someone has thought of it before + but, if not, its name is ACHC Andrew's Cute Handle + Construction. Note: no trig function calls.''' + try : + slope = (post[1] - pt[1]) / (post[0] - pt[0]) + except ZeroDivisionError : + slope = math.copysign(1E30 , post[1] - pt[1]) + lenpre = distance(pre, pt) + lenpost = distance(pt, post) + lenr = lenpre**2 / lenpost + locx = math.copysign(lenr / math.sqrt(1. + slope**2) , post[0] - pt[0]) + mark = (pre[0] - locx , pre[1] - locx*slope) + try : + markslope = (pt[1] - mark[1]) / (pt[0] - mark[0]) + except ZeroDivisionError : + markslope = math.copysign(1E30 , pt[1] - mark[1]) + prex = math.copysign(lenpre / math.sqrt(1. + markslope**2) , + pt[0] - mark[0]) + hpre = (pt[0] - prex*blunt , pt[1] - prex*markslope*blunt) + postx = prex*lenpost/lenpre + hpost = (pt[0] + postx*blunt , pt[1] + postx*markslope*blunt) + return (hpre, hpost) + +"""Blunt=0.3 makes pleasingly round, mostly convex blobs. 0.4 makes them more +concave. 0.6 - 1.0 they're getting more and more pointy. 2.0 - 10. and they +grow appendages like hot-air balloons. 0.1 makes the corners pretty sharp. +0.0 and it's down to the convex hulls that are the basis of the blobs, that +is, polygons""" + +def distance(a, b) : + return math.sqrt((a[0] - b[0])**2 + (a[1] - b[1])**2 ) + +def hull(arg): + """Convex hull by Graham scan.""" + xarr, yarr = zip(* arg) + ymin = min(yarr) + ind = findall(yarr, lambda y: y == ymin) + if len(ind) > 1 : + xshort = [xarr[j] for j in ind] + xmin = min(xshort) + j = ind[xshort.index(xmin)] + ind = j + else : + ind = ind[0] + all = list(range(len(xarr))) + del all[ind] + all.sort(key=lambda i : (xarr[i] - xarr[ind]) / + math.sqrt((xarr[i] - xarr[ind])**2 + (yarr[i] - yarr[ind])**2), + reverse=True) + if len(all) < 3 : + all.insert(0, ind) + return all + ans = [ind] + for i in all : + if len(ans) == 1 : + ans.append(i) + else : + while rightTurn(ans[-2], ans[-1], i, arg) : + ans.pop() + ans.append(i) + + return ans + +def rightTurn(j, k, l, arg) : + '''Cross product: Ax*By - Ay*Bx = Cz ''' + ax = (arg[k][0] - arg[j][0]) + by = (arg[l][1] - arg[k][1]) + ay = (arg[k][1] - arg[j][1]) + bx = (arg[l][0] - arg[k][0]) + p = ax*by - ay*bx + dot = ax*bx + ay*by + cos = dot / math.sqrt((ax**2 + ay**2) * (bx**2 + by**2)) + crt = 1 - cave*2 + + if p <= 0 : + return cos < crt #We forgive right turns based on /cave/ + else : + return False + +def findall(a, f): + r = [] + for x, j in zip(a, range(len(a))) : + if f(x) : + r.append(j) + return r + +if __name__ == '__main__': + Blobs().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.inx b/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.inx new file mode 100644 index 00000000..8a9953ab --- /dev/null +++ b/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.inx @@ -0,0 +1,29 @@ + + + Blueprint Maker + fablabchemnitz.de.blueprint_maker + + + + + + + 1.000 + + + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.py b/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.py new file mode 100644 index 00000000..d0e26153 --- /dev/null +++ b/extensions/fablabchemnitz/blueprint_maker/blueprint_maker.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python3 + +import inkex +import copy + +class bluePrintMakerData(): + def __init__(self,effect): + self.effect=effect + self.stroke_units=effect.options.stroke_units + self.unit_factor=1.0 + self.set_units() + self.stroke_width=effect.options.stroke_width*self.unit_factor + self.palette=effect.options.palette + self.background_color=None + self.stroke_color=None + self.set_colors() + self.selected_nodes=[] + if len(effect.options.ids)==0: + self.selected_nodes=[effect.svg.getElementById(x) for x in effect.svg.get_ids()] + self.selected_nodes=[node for node in self.selected_nodes if effect.is_geometry(node)] + else: + self.selected_nodes=[y for x,y in effect.svg.selected.items()] + self.selected_nodes=[node for node in self.selected_nodes if effect.is_geometry(node,shapes=['path','g','rect','ellipse','perspective'])] + self.allowed_ids=[] + self.allowed_nodes=[] + self.set_objects() + + def set_units(self): + if self.stroke_units=='millimeters': + self.unit_factor=3.543 + if self.stroke_units=='centimeters': + self.unit_factor=35.433 + if self.stroke_units=='points': + self.unit_factor=1.25 + if self.stroke_units=='pixels': + self.unit_factor=1.0 + + def set_colors(self): + if self.palette=='blueprint': + self.background_color='#006fde' + self.stroke_color='#ffffff' + if self.palette=='black': + self.background_color='#000000' + self.stroke_color='#ffffff' + if self.palette=='white': + self.background_color='#ffffff' + self.stroke_color='#000000' + if self.palette=='laser': + self.background_color='#ffffff' + self.stroke_color='#ff0000' + + def set_objects(self): + for current_id in self.effect.svg.get_ids(): + node=self.effect.svg.getElementById(current_id) + if self.effect.is_geometry(node): + self.allowed_ids.append(current_id) + self.allowed_nodes.append(node) + +class BluePrintMaker(inkex.EffectExtension): + + def __init__(self): + inkex.Effect.__init__(self) + self.arg_parser.add_argument('-p', '--palette', help='Choose the colors...') + self.arg_parser.add_argument('-s', '--stroke_width', type=float, help='Stroke size...') + self.arg_parser.add_argument('-u', '--stroke_units', help='Choose the units...') + self.data=None + + def is_a_group(self, node): + data=False + if node.tag==inkex.addNS('g','svg'): + data=True + return data + + def is_geometry(self, node, shapes=['path','rect','ellipse','perspective']): + data=False + for s in shapes: + if node.tag==inkex.addNS(s,'svg'): + data=True + return data + + def change_page_settings(self): + namedview=self.svg.namedview + namedview.set('pagecolor',self.data.background_color) + namedview.set(inkex.addNS('pageopacity', 'inkscape'),'1') + namedview.set(inkex.addNS('pageshadow', 'inkscape'),'0') + namedview.set('bordercolor',self.data.stroke_color) + namedview.set('borderopacity','1') + return None + + def change_this_object(self,node): + styles=dict(inkex.Style.parse_str(node.get('style'))) + styles_copy=copy.deepcopy(styles) + styles_copy['stroke']=self.data.stroke_color + styles_copy['stroke_width']=self.data.stroke_width + styles_copy['stroke-opacity']='1' + styles_copy['fill']='none' + styles_copy['fill-opacity']='1' + styles_copy['opacity']='1' + node.set('style',str(inkex.Style(styles_copy))) + return None + + def iterate_on_objects(self,node=None): + if self.is_geometry(node): + self.change_this_object(node) + if self.is_a_group(node): + for current_node in list(node): + self.iterate_on_objects(current_node) + + def effect(self): + self.data=bluePrintMakerData(self) + self.change_page_settings() + for node in self.data.selected_nodes: + self.iterate_on_objects(node) + return None + +if __name__ == '__main__': + BluePrintMaker().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.inx b/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.inx new file mode 100644 index 00000000..7a9a58d2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.inx @@ -0,0 +1,54 @@ + + + Circular Ground from Template + fablabchemnitz.de.circular_ground_from_template + + + ./templates/ + + + 45.0 + + + 30 + + + + 50 + + + + + + + + + + 3 + + + + 1 + + + + + + + + + + 255 + + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.py b/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.py new file mode 100644 index 00000000..32c2f511 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/circular_ground_from_template.py @@ -0,0 +1,434 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2017, Ben Connors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import os +from math import sin, cos, acos, tan, radians, pi, sqrt, ceil, floor +import inkex +from lxml import etree + +__author__ = 'Ben Connors' +__credits__ = ['Ben Connors', 'Veronika Irvine', 'Jo Pol', 'Mark Shafer'] +__license__ = 'Simplified BSD' + +class Vector: + def __repr__(self): + return 'Vector(%.4f, %.4f)' % (self.dx,self.dy) + + def __hash__(self): + return hash((self.dx,self.dy)) + + def rotate(self,theta): + """ Rotate counterclockwise by theta.""" + return self.mag*Vector(cos(self.theta+theta), + sin(self.theta+theta), + _theta=self.theta+theta) + + def __mul__(self,other): + return Vector(self.dx*other,self.dy*other,_theta=self.theta) + + def __rmul__(self,other): + return self*other + + def __init__(self,dx,dy,_theta=None): + """ Create a vector with the specified components. + _theta should NOT be passed in normal use - this value is passed by + vector functions where the angle of the new vector is known in order + to eliminate that calculation. + """ + self.dx = float(dx) + self.dy = float(dy) + self.mag = sqrt(dx**2 + dy**2) + self.tuple = (dx,dy) + + ## Angle to positive X axis + if _theta == None: + _theta = acos(self.dx/self.mag) + self.theta = 2*pi-_theta if self.dy < 0 else _theta + else: + self.theta = _theta + + +class CircularGroundFromTemplate(inkex.EffectExtension): + + def unitToUu(self,param): + """ Convert units. + Converts a number in some units into the units used internally by + Inkscape. + + param is a string representing a number with units attached. An + example would be '3.8mm'. Any units supported by Inkscape + are supported by this function. + + This wrapper function catches changes made to the location + of the function between Inkscape versions. + """ + try: + return self.svg.unittouu(param) + except: + return inkex.unittouu(param) + + def loadFile(self): + """ Load the specification for the unit cell from the file given. + Note that the specification should be in the following format: + TYPE ROWS COLS + [x1,y1,x2,y2,x3,y3] [x4,y4,x5 ... + + And so on. The TYPE is always CHECKER and is ignored by this program. + ROWS specifies the height of the unit cell (i.e. max_y - min_y) + and COLS specifies the same for the width (i.e. max_x - min_x). + Note that this is not enforced when drawing the unit cell - points + may be outside this range. These values are used to determine the + distance between unit cells (i.e. unit cells may overlap). + """ + # Ensure that file exists and has the proper extension + if not self.options.file: + inkex.errormsg('You must specify a template file.') + exit() + self.options.file = self.options.file.strip() + if self.options.file == '': + inkex.errormsg('You must specify a template file.') + exit() + if not os.path.isfile(self.options.file): + inkex.errormsg('You have not specified a valid path for the template file.\n\nYour entry: '+self.options.file) + exit() + extension = os.path.splitext(self.options.file)[1] + if extension != '.txt': + inkex.errormsg('The file name must end with .txt.\n\nYour entry: '+self.options.file) + exit() + + data = [] + rows, cols = -1, -1 + with open(self.options.file,'r') as f: + for line in f: + line = line.strip() + ## If rows is not a positive integer, we're on the first line + if rows == -1: + tmp = line.split('\t') + _type,cols,rows = tmp[0],int(tmp[1]),int(tmp[2]) + else: + data.append([]) + for cell in line[1:-1].split(']\t['): + cell = cell.strip() + ## The pattern must be rotated 90 degrees clockwise. It's + ## simplest to just do that here + tmp = [float(n) for n in cell.split(',')] + data[-1].append([a for b in zip([rows-i for i in tmp[1::2]],[cols-i for i in tmp[::2]]) for a in b]) + return {'type': _type, 'rows': rows, 'cols': cols, 'data' : data} + + def line(self,points): + """ + Draw a line from point at (x1, y1) to point at (x2, y2). + Style of line is hard coded and specified by 's'. + """ + # define the motions + path = ('M%.4f,%.4fL' % tuple(points[0][:2])) + 'L'.join([('%f,%f' % tuple(a[:2])) for a in points[1:]]) + + # define the stroke style + s = {'stroke-linejoin': 'miter', + 'stroke-width': self.options.linewidth, + 'stroke-opacity': '1.0', + 'fill-opacity': '1.0', + 'stroke': self.options.linecolor, + 'stroke-linecap': 'round', + 'stroke-linejoin': 'round', + 'fill': 'none' + } + + + ## Attributes for new element + attribs = {'style':str(inkex.Style(s)), + 'd' : path} + + ## Add new element + etree.SubElement(self.svg.get_current_layer(), inkex.addNS('path', 'svg'), attribs) + + def baseVectors(self,segments): + """ Create vectors for all vertices on the specified polygon.""" + ## Start at 12 o'clock + theta = pi/2 + ## Move clockwise + dtheta = -2*pi/segments + + vector = Vector(0,self.options.diameter/2) + vectors = [vector] + for i in range(1,segments): + vector = vector.rotate(dtheta) + vectors.append(vector) + return vectors + + def fuzzyEquality(self,a,b): + return (a-b <= 1e-8) + + def circleWrap(self,points,segments): + """ Wrap a grid around the origin. + <> is a list of 2- or 3-tuples. + In the case of 3-tuples, they should be laid out like: (x,y,name) + Whereas 2-tuples should eliminate the name portion. + Only one format may be passed; they may not be mixed. + x- and y- values are rounded to the nearest integer. + If more precision is desired, scale up the points before calling this function. + x-values should be within [0,segments) + Values not within range will be moved within range. + y-values must be greater than 0 + An error will be raised if a y-value is less than 0. + The 'name' portion is not touched by this function; it is merely + passed along. This may be used to identify points or groups of points. + <> is the inside radius (i.e. distance to origin from a point with + a y-value of 0). + <> is the number of segments (sides) of the polygon. + <> is the angle of the diagonal of the square approximation. It must be + somewhere on (0,pi/2). + """ + angle = self.options.angle + if angle <= 0 or angle >= pi/2: + raise ValueError('Angle must be in (0,pi/2)') + + vectors = self.baseVectors(segments) + theta = 2*pi/segments + + """ + Determine the coefficient to multiply the vectors by in order to deal + with a higher x-value. + With R being the large radius (radius to next y-value) and r being the + small radius (radius to current y-value): + + a^2 = r^2 (1 - cos(theta)) ## Cosine law + b^2 = R^2 (1 - cos(theta)) + + To get the most square-like trapezoid: + R - r = 0.5(a+b) + + Subbing in the equations for b^2 and a^2 yields the following lines. + """ + C = sqrt(2*(1-cos(theta))) + val = 2*tan(pi/2-angle) + coeff = (val+C)/(val-C) + diff = coeff-1 + + ## Sort points in order of increasing y-value. + named = False + if len(points[0]) == 3: + named = True + points = [(x,y,name) for x,y,name in sorted(points,key=lambda a: a[1])] + else: + points = [(x,y,None) for x,y in sorted(points,key=lambda a: a[1])] + + done = [] + cur_y = 0 + for point in points: + x,y,name = point + + ## Check constraints + if y < cur_y: + raise ValueError('Invalid point (%d,%d)' % (x,y)) + elif y >= cur_y+1: + ## Multiply vectors accordingly + delta = floor(y-cur_y) + vectors = [(coeff**delta)*v for v in vectors] + cur_y = floor(y) + + ## Wrap x-value to lie in the proper place + ## lazy + while x < 0: + x += segments + while x >= segments: + x -= segments + + if self.fuzzyEquality(y,int(y)) and self.fuzzyEquality(x,int(x)): + x = int(x) + ## Can do it the quick way + wx,wy = vectors[x].tuple + else: + ## Use vector rotation + ## Determine nearest vector (counterclockwise) + pointer = vectors[floor(x)] + ## Scale x and y to be within (0,1) + x -= int(x) + y -= int(y) + c = C*x ## This value is used a lot, cache it + ## Now the angle of rotation must be determined using cosine law + factor = 1 + if not self.fuzzyEquality(x,0): + ## x isn't equal to 0, must rotate vector + n2 = 1+c**2-2*c*cos((pi-theta)/2) + factor = sqrt(n2) + phi = acos((n2+1-c**2)/(2*factor)) + pointer = pointer.rotate(-phi) + ## Correct vector magnitude + pointer = (1+y*diff)*factor*pointer + wx,wy = pointer.tuple + if named: + done.append((wx,wy,name)) + else: + done.append((wx,wy)) + return done + + def createGround(self,unit,rows,cols,scale=1): + """ Return a lace ground. + + This function returns a list of points and corresponding lines that may + be transformed or passed to a drawing function (such as draw_image) in + order to draw a lace ground. + + unit is the pattern for the lace ground, in the format returned by + loadFile. + + rows and cols are integers and represent the number of horizontal repeats + and vertical repeats of the pattern, respectively. + + scale is an optional value that can be used to scale the pattern before it + is repeated. Note that this comes with some constraints - the + template's rows and cols after scaling (i.e. unit['rows']*scale) must + be an integer. For example, a template with 4 rows and 4 cols before + scaling may be scaled by any integer value above 1 and select values + between 1 and 0 (namely 0.25,0.5,0.75). A scale value of 'True' may be + passed if each repeat of the template should fit within a 1x1 square. + """ + data = unit['data'] + unit_rows = unit['rows'] + unit_cols = unit['cols'] + if scale <= 0: + raise ValueError('Scale must be greater than zero') + elif scale != 1: + ## The user wants to scale the template + _data = [] + for row in data: + _row = [] + for c in row: + if scale == True: + _row.append([i for n in zip([a/unit_cols for a in c[::2]],[a/unit_rows for a in c[1::2]]) for i in n]) + else: + _row.append([a*scale for a in c]) + _data.append(_row) + data = _data + unit_rows *= scale + unit_cols *= scale + ## Catching invalid input + if not self.fuzzyEquality(unit_rows,int(unit_rows)): + raise ValueError('Scale factor must result in an integer value for template rows') + if not self.fuzzyEquality(unit_cols,int(unit_cols)): + raise ValueError('Scale factor must result in an integer value for template cols') + unit_rows = int(unit_rows) + unit_cols = int(unit_cols) + line_num = 0 + points = [] + for c in range(cols): + ## Do each column first + x = c*unit_cols + for r in range(rows): + y = r*unit_rows + for row in data: + for x1,y1,x2,y2,x3,y3 in row: + ## In order to draw lines in the correct order, an extra + ## point must be added + p1 = (x+x1,y+y1,'%09da,1'%line_num) + p2 = (x+x2,y+y2,'%09da,2'%line_num) + p1a = (x+x1,y+y1,'%09db,1'%line_num) + p3 = (x+x3,y+y3,'%09db,3'%line_num) + points.extend([p1,p2,p1a,p3]) + line_num += 1 + return points + + def draw(self, points,line=lambda a: None): + """ Draw the image. + points - a list of points, as returned by createGround. + line - a function that draws a line connecting all points in the passed list in order. + """ + groups = {} + ## This loop scales points, sorts them into groups, and gets image parameters + xs = [] + ys = [] + for x,y,n in points: + xs.append(x) + ys.append(y) + sn = n.split(',',1) + ident = 0 + if len(sn) == 2: + ident = int(sn[1]) + n = sn[0] + if n not in groups: + groups[n] = [] + groups[n].append((x,y,ident)) + max_x = max(xs) + min_x = min(xs) + max_y = max(ys) + min_y = min(ys) + ## Sort all groups to draw lines in order + for group in groups: + groups[group].sort(key=lambda a:a[2]) + ## Sort all groups to draw groups in order + groups = sorted([(name,pts) for name,pts in groups.items()],key=lambda a:a[0]) + ## Draw lines + for name,pts in groups: + _pts = [] + for p in pts: + _pts.append([p[0]-min_x,p[1]-min_y]) + self.line(_pts) + + def add_arguments(self, pars): + pars.add_argument('--file') + pars.add_argument('--angle', type=int) + pars.add_argument('--cols', type=int) + pars.add_argument('--diameter', type=float) + pars.add_argument('--diamunits') + pars.add_argument('--rows', type=int) + pars.add_argument('--linewidth', type=float) + pars.add_argument('--lineunits') + pars.add_argument('--linecolor', type=inkex.Color) + + def effect(self): + ## Load the file + unit = self.loadFile() + self.options.linecolor = self.options.linecolor.to_rgb() + + ## Change the input to universal units + self.options.diameter = self.unitToUu(str(self.options.diameter)+self.options.diamunits) + self.options.linewidth = self.unitToUu(str(self.options.linewidth)+self.options.lineunits) + + ## Convert the angle + self.options.angle = radians(self.options.angle) + + ## Ensure no y-values are below 0 + min_y = min([b for a in [i[1::2] for row in unit['data'] for i in row] for b in a]) + if min_y < 0: + data = [] + for row in unit['data']: + _row = [] + for c in row: + _row.append([a for b in zip(c[::2],[i-min_y for i in c[1::2]]) for a in b]) + data.append(_row) + unit['data'] = data + + ## Create the ground coordinates + points = self.createGround(unit,self.options.rows,self.options.cols) + + ## Wrap it around a polygon + points = self.circleWrap(points,self.options.cols*unit['cols']) + + ## Draw everything + self.draw(points,line=lambda a: self.line(a)) + +if __name__ == '__main__': + CircularGroundFromTemplate().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/ground_from_template.inx b/extensions/fablabchemnitz/bobbinlace/ground_from_template.inx new file mode 100644 index 00000000..c508542d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/ground_from_template.inx @@ -0,0 +1,60 @@ + + + Ground From Template + fablabchemnitz.de.ground_from_template + + ./templates/ + + + 45.0 + + + 5.0 + + + + + + + + + + + 50 + + + + + + + + + + 50 + + + + 1 + + + + + + + + + + 255 + + + all + + + + + + + + diff --git a/extensions/fablabchemnitz/bobbinlace/ground_from_template.py b/extensions/fablabchemnitz/bobbinlace/ground_from_template.py new file mode 100644 index 00000000..696115e7 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/ground_from_template.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2017, Veronika Irvine +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice,# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import os +from math import sin, cos, radians, ceil +from lxml import etree +import inkex + +__author__ = 'Veronika Irvine' +__credits__ = ['Ben Connors', 'Veronika Irvine', 'Mark Shafer'] +__license__ = 'Simplified BSD' + +class GroundFromTemplate(inkex.EffectExtension): + + def loadFile(self): + # Ensure that file exists and has the proper extension + if not self.options.file: + inkex.errormsg('You must specify a template file.') + exit() + self.options.file = self.options.file.strip() + if self.options.file == '': + inkex.errormsg('You must specify a template file.') + exit() + if not os.path.isfile(self.options.file): + inkex.errormsg('You have not specified a valid path for the template file.\n\nYour entry: '+self.options.file) + exit() + extension = os.path.splitext(self.options.file)[1] + if extension != '.txt': + inkex.errormsg('The file name must end with .txt.\n\nYour entry: '+self.options.file) + exit() + + data = [] + rowCount = 0 + colCount = 0 + with open(self.options.file,'r') as f: + first = True + for line in f: + if first: + # first line of file gives row count and column count + first = False + line = line.strip() + temp = line.split('\t') + type = temp[0] + rowCount = int(temp[1]) + colCount = int(temp[-1]) + + else: + line = line.strip() + line = line.lstrip('[') + line = line.rstrip(']') + rowData = line.split(']\t[') + data.append([]) + for cell in rowData: + cell = cell.strip() + data[-1].append([float(num) for num in cell.split(',')]) + + return {'type':type, 'rowCount':rowCount, 'colCount':colCount, 'data':data} + + def line(self, x1, y1, x2, y2): + """ + Draw a line from point at (x1, y1) to point at (x2, y2). + Style of line is hard coded and specified by 's'. + """ + # define the motions + path = 'M %s,%s L %s,%s' %(x1,y1,x2,y2) + + # define the stroke style + s = {'stroke-linejoin': 'miter', + 'stroke-width': self.options.linewidth, 'stroke-opacity': '1.0', + 'fill-opacity': '1.0', 'stroke': self.options.linecolor, + 'stroke-linecap': 'round', 'stroke-linejoin': 'round', 'fill': 'none' + } + + # create attributes from style and path + attribs = {'style':str(inkex.Style(s)), 'd':path} + + # insert path object into current layer + etree.SubElement(self.svg.get_current_layer(), inkex.addNS('path', 'svg'), attribs) + + def draw(self, data, rowCount, colCount): + a = self.options.distance + theta = self.options.angle + deltaX = a*sin(theta) + deltaY = a*cos(theta) + maxRows = ceil(self.options.height / deltaY) + maxCols = ceil(self.options.width / deltaX) + + x = 0.0 + y = 0.0 + repeatY = 0 + repeatX = 0 + + while repeatY * rowCount < maxRows: + x = 0.0 + repeatX = 0 + + while repeatX * colCount < maxCols: + + for row in data: + for coords in row: + x1 = x + coords[0]*deltaX + y1 = y + coords[1]*deltaY + x2 = x + coords[2]*deltaX + y2 = y + coords[3]*deltaY + x3 = x + coords[4]*deltaX + y3 = y + coords[5]*deltaY + + self.line(x1,y1,x2,y2) + self.line(x1,y1,x3,y3) + + repeatX += 1 + x += deltaX * colCount + + repeatY += 1 + y += deltaY * rowCount + + def add_arguments(self, pars): + pars.add_argument('-f', '--file', help='File containing lace ground description') + pars.add_argument('--angle', type=float) + pars.add_argument('--distance', type=float) + pars.add_argument('--pinunits') + pars.add_argument('--width', type=float) + pars.add_argument('--patchunits') + pars.add_argument('--height', type=float) + pars.add_argument('--linewidth', type=float) + pars.add_argument('--lineunits') + pars.add_argument('--linecolor', type=inkex.Color) + + def effect(self): + result = self.loadFile() + + # Convert input to universal units + self.options.width = self.svg.unittouu(str(self.options.width)+self.options.patchunits) + self.options.height = self.svg.unittouu(str(self.options.height)+self.options.patchunits) + self.options.linewidth = self.svg.unittouu(str(self.options.linewidth)+self.options.lineunits) + self.options.distance = self.svg.unittouu(str(self.options.distance)+self.options.pinunits) + + # Users expect distance to be the vertical distance between footside pins + # (vertical distance between every other row) but in the script we use it + # as the diagonal distance between grid points + # therefore convert distance based on the angle chosen + self.options.angle = radians(self.options.angle) + self.options.distance = self.options.distance/(2.0*cos(self.options.angle)) + + # Draw a ground based on file description and user inputs + self.options.linecolor = self.options.linecolor.to_rgb() + # For now, assume style is Checker but could change in future + self.draw(result['data'],result['rowCount'],result['colCount']) + +if __name__ == '__main__': + GroundFromTemplate().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/polar_grid.inx b/extensions/fablabchemnitz/bobbinlace/polar_grid.inx new file mode 100644 index 00000000..0ecd631c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/polar_grid.inx @@ -0,0 +1,71 @@ + + + Polar Grid + fablabchemnitz.de.polar_grid + + + + 45.0 + + + 180 + + + + + + + + + + + + + + + + + 160 + + + + + + + + + + 100 + + + + + + + + + + 0.5 + + + + + + + + + + 255 + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/polar_grid.py b/extensions/fablabchemnitz/bobbinlace/polar_grid.py new file mode 100644 index 00000000..1353be5c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/polar_grid.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +# Copyright 2015 Jo Pol +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. + +from __future__ import division +from math import pi, sin, cos, tan, radians +from lxml import etree + +# We will use the inkex module with the predefined +# Effect base class. +import inkex + +__author__ = 'Jo Pol' +__credits__ = ['Veronika Irvine','Jo Pol','Mark Shafer'] +__license__ = 'GPLv3' + +class PolarGrid(inkex.EffectExtension): + + def add_arguments(self, pars): + pars.add_argument('-a', '--angle', type=float, default=45, help='grid angle (degrees)') + pars.add_argument('-d', '--dots', type=int, default=180, help='number of dots on a circle') + pars.add_argument('-o', '--outerDiameter', type=float, default=160, help='outer diameter (mm)') + pars.add_argument('-i', '--innerDiameter', type=float, default=100, help='minimum inner diameter (mm)') + pars.add_argument('-f', '--fill', type=inkex.Color, default='-6711040', help='dot color') + pars.add_argument('-A', '--alignment', default='outside', help='exact diameter on [inside|outside]') + pars.add_argument('-s', '--size', type=float, default=0.5, help='dot diameter (mm)') + pars.add_argument('-v', '--variant', default='', help='omit rows to get [|rectangle|hexagon1]') + pars.add_argument('-cu', '--circleDiameterUnits', default = 'mm', help = 'Circle diameter is measured in these units') + pars.add_argument('-du', '--dotUnits', default = 'px', help = 'Dot diameter is measured in these unites') + + def group(self, diameter): + """ + Create a group labeled with the diameter + """ + label = 'diameter: {0:.2f} mm'.format(diameter) + attribs = {inkex.addNS('label', 'inkscape'):label} + return etree.SubElement(self.gridContainer, inkex.addNS('g', 'svg'), attribs) + + def dots(self, diameter, circleNr, group): + """ + Draw dots on a grid circle + """ + offset = (circleNr % 2) * 0.5 + for dotNr in range (0, self.options.dots): + a = (dotNr + offset) * self.alpha + x = (diameter / 2.0) * cos(a) + y = (diameter / 2.0) * sin(a) + attribs = {'style':self.dotStyle, 'cx':str(x * self.circleScale), 'cy':str(y * self.circleScale), 'r':self.dotR} + etree.SubElement(group, inkex.addNS('circle', 'svg'), attribs) + + def iterate(self, diameter, circleNr): + """ + Create a group with a ring of dots. + Returns half of the arc length between the dots + which becomes the distance to the next ring. + """ + group = self.group(diameter) + self.dots(diameter, circleNr, group) + self.generatedCircles.append(group) + return diameter * self.change + + def generate(self): + """ + Generate rings with dots, either inside out or outside in + """ + circleNr = 0 + flag_error = False + minimum = 2 * self.options.size * self.options.dots /pi + if minimum < self.options.innerDiameter: + minimum = self.options.innerDiameter + else: + flag_error = True + if self.options.alignment == 'outside': + diameter = self.options.outerDiameter + while diameter > minimum: + diameter -= self.iterate(diameter, circleNr) + circleNr += 1 + else: + diameter = minimum + while diameter < self.options.outerDiameter: + diameter += self.iterate(diameter, circleNr) + circleNr += 1 + # Display message + if flag_error: + # Leave message on top + font_height = 8 + text_style = { 'font-size': str(font_height), + 'font-family': 'sans-serif', + 'text-anchor': 'middle', + 'text-align': 'center', + 'fill': '#000000' } + text_atts = {'style':str(inkex.Style(text_style)), + 'x': '0', 'y': '0'} + text = etree.SubElement(self.gridContainer, 'text', text_atts) + text.text = "Dots overlap. inner changed to %4.1f" % (minimum) + + def removeGroups(self, start, increment): + """ + Remove complete rings with dots + """ + for i in range(start, len(self.generatedCircles), increment): + self.svg.get_current_layer().remove(self.generatedCircles[i]) + + def removeDots(self, i, offset, step): + """ + Remove dots from one circle + """ + group = self.generatedCircles[i] + dots = list(group) + start = len(dots) - 1 - offset + for j in range(start, -1, 0-step): + group.remove(dots[j]) + + def computations(self, angle): + self.alpha = radians(360.0 / self.options.dots) + correction = pi / (4 * self.options.dots) + correction *= tan(angle*0.93) + self.change = tan(angle - correction) * pi / self.options.dots + + def effect(self): + """ + Effect behaviour. + Overrides base class' method and draws something. + """ + + # constants + self.dotStyle = str(inkex.Style({'fill': self.options.fill.to_rgb(),'stroke':'none'})) + self.dotScale = self.svg.unittouu("1" + self.options.dotUnits) + self.dotR = str(self.options.size * (self.dotScale/2)) + self.circleScale = self.svg.unittouu("1" + self.options.circleDiameterUnits) + self.computations(radians(self.options.angle)) + + # processing variables + self.generatedCircles = [] + self.gridContainer = self.svg.get_current_layer() + + self.generate() + + if self.options.variant == 'rectangle': + self.removeGroups(1, 2) + elif self.options.variant == 'hexagon1': + self.removeGroups(0, 3) + elif self.options.variant == 'hexagon2' or self.options.variant == 'snow2': + for i in range(0, len(self.generatedCircles), 1): + self.removeDots(i, (((i%2)+1)*2)%3, 3) + elif self.options.variant == 'hexagon3': + for i in range(0, len(self.generatedCircles), 2): + self.removeDots(i, (i//2+1)%2, 2) + elif self.options.variant == 'hexagon4': + self.removeGroups(0, 4) + elif self.options.variant == 'hexagon5' or self.options.variant == 'snow1': + for i in range(0, len(self.generatedCircles), 2): + self.removeDots(i, 1, 2) + + self.dotStyle = str(inkex.Style({'fill': 'none','stroke':self.options.fill.to_rgb(),'stroke-width':0.7})) + self.dotR = str((((self.options.innerDiameter * pi) / self.options.dots) / 2) * self.dotScale) + self.generatedCircles = [] + if self.options.variant == 'snow2': + self.options.dots = self.options.dots // 3 + self.computations(radians(self.options.angle)) + self.generate() + elif self.options.variant == 'snow1': + self.generate() + self.removeGroups(1, 2) + for i in range(0, len(self.generatedCircles), 2): + self.removeDots(i, i%4, 2) + for i in range(0, len(self.generatedCircles), 2): + self.removeDots(i, (i+1)%2, 2) + for i in range(2, len(self.generatedCircles), 4): + self.removeDots(i, 0, self.options.dots) + +if __name__ == '__main__': + PolarGrid().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/regular_grid.inx b/extensions/fablabchemnitz/bobbinlace/regular_grid.inx new file mode 100644 index 00000000..96fc0f31 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/regular_grid.inx @@ -0,0 +1,60 @@ + + + Regular Grid + fablabchemnitz.de.regular_grid + + + + + 45.0 + + + 5.0 + + + + + + + + + + + 50 + + + + + + + + + + 50 + + + + 2 + + + + + + + + + + 255 + + + all + + + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/regular_grid.py b/extensions/fablabchemnitz/bobbinlace/regular_grid.py new file mode 100644 index 00000000..3e54d0b4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/regular_grid.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2017, Veronika Irvine +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from math import sin, cos, radians, ceil +import inkex +from lxml import etree + +__author__ = 'Veronika Irvine' +__credits__ = ['Ben Connors', 'Veronika Irvine', 'Mark Shafer'] +__license__ = 'Simplified BSD' + +class RegularGrid(inkex.EffectExtension): + def circle(self, x, y, r, fill): + # define the stroke style + s = {'fill': fill} + + # create attributes from style and define path + attribs = {'style':str(inkex.Style(s)), + 'cx':str(x), + 'cy':str(y), + 'r':str(r)} + + # insert path object into current layer + etree.SubElement(self.svg.get_current_layer(), inkex.addNS('circle', 'svg'), attribs) + + def drawDot(self, x, y): + self.circle(x, y, self.options.dotwidth, self.options.dotcolor) + + def draw(self): + + a = self.options.distance + theta = self.options.angle + + hgrid = a*sin(theta); + vgrid = a*cos(theta) + rows = int(ceil(self.options.height / vgrid)) + cols = int(ceil(self.options.width / hgrid)) + y = 0.0 + + for r in range(rows): + x = 0.0 + if (r % 2 == 1): + x += hgrid + + for c in range(ceil(cols/2)): + self.drawDot(x, y) + x += 2.0*hgrid; + + y += vgrid; + + def add_arguments(self, pars): + pars.add_argument('--angle', type=float) + pars.add_argument('--distance', type=float) + pars.add_argument('--pinunits') + pars.add_argument('--width', type=float) + pars.add_argument('--patchunits') + pars.add_argument('--height', type=float) + pars.add_argument('--dotwidth', type=float) + pars.add_argument('--dotunits') + pars.add_argument('--dotcolor', type=inkex.Color) + + def effect(self): + """ + Effect behaviour. + Overrides base class' method and draws something. + """ + # Convert user input to universal units + self.options.width = self.svg.unittouu(str(self.options.width)+self.options.patchunits) + self.options.height = self.svg.unittouu(str(self.options.height)+self.options.patchunits) + self.options.distance = self.svg.unittouu(str(self.options.distance)+self.options.pinunits) + # Convert from diameter to radius + self.options.dotwidth = self.svg.unittouu(str(self.options.dotwidth)+self.options.dotunits)/2 + # Users expect distance to be the vertical distance between footside pins + # (vertical distance between every other row) but in the script we use it + # as as diagonal distance between grid points + # therefore convert distance based on the angle chosen + self.options.angle = radians(self.options.angle) + self.options.distance = self.options.distance/(2.0*cos(self.options.angle)) + + # Draw a grid of dots based on user inputs + self.options.dotcolor = self.options.dotcolor.to_rgb() + self.draw() + +if __name__ == '__main__': + RegularGrid().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.png b/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..acd38aef2387cd9b720b87c05a2aaff512ac98c9 GIT binary patch literal 2844 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 SMA(159Ofoa<0?b<*na~Ch=|Yt literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.txt b/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.txt new file mode 100644 index 00000000..48d61639 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/1x1_1.txt @@ -0,0 +1,2 @@ +CHECKER 1 1 +[0,0,1,0,-1,1] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x1_2.png b/extensions/fablabchemnitz/bobbinlace/templates/2x1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff8782f1f9fae3212de38624252daf10503b87d GIT binary patch literal 4403 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≫DkDH%322 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 QKrt8^nCQRJyY=XQ0K!+h^8f$< literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x2_2.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x2_2.txt new file mode 100644 index 00000000..b3f6a7b8 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x2_2.txt @@ -0,0 +1,3 @@ +CHECKER 2 2 +[0,0,1,0,-1,0] [1,0,0,1,2,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.png b/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3be644b5ae52a6b75e6943e2cd718d4200a7b5 GIT binary patch literal 5887 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.txt new file mode 100644 index 00000000..8f22cfe1 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x2_5.txt @@ -0,0 +1,3 @@ +CHECKER 2 2 +[0,0,1,0,-1,1] [1,0,2,0,1,1] +[1,1,0,2,1,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb6225de4b9c4a9258bbfa3da30e7afdf7f51f3 GIT binary patch literal 11067 zcmcJVcT`i|*6y)^BH*ilNLRr4DhNVo2@+JgG(kiV0g*@)A}ygwQ&3S5FhqV|-(rasP1O*gKhPW$m?o^LggnFRvMDbFvGt zv#_vm>gs5iu(0f@1^%5lxEHu$ecX72g++3&uEu3kub4@K4N{2gM?b@Z^VlmgP;vQ- z;C@fYJCdHq9#v)U+0eg~!;ir^rN78{M{_QG30;>JeOj?65WbJ`TJtY>M!9g?A)dIO z++08RK6xEB$a_#!!Or0;kDVKzgbo*ek1qbyu#WWBtG^#hEaP7 zewyuepn%yHqtkg~tkbGn;d%iGnA<}d@(l3j2Z#P~78d!v*h&3KQAajs5h1_X7sXt? z$`{v%`$uO}CljH4c9f!`B1cEZxUZ?E=UN>W7kD6uBW{YX5FpDeCD{5*Z_!Ja<*C)O z%T_tF&7v^Bg(U6s7)n5EKB zM&DqJY-nq5xuIur_qj>hTQ1b2F~VdBJ}4+CJ6rbI7H+;Fo9A-!y&u*kp3@?nf~$r% zC4GE+(0!|`&@eH@7%^9xco7!0w*gWf(_JBm4MUE1~`Kj_=)kGUr?@`?gY&SzDbSQ_eOk!=}$XgmF zU~6+@CVg_PcMBGl)}btC_rS*|I`CR8>2G#M*%ALsoFXvaPXg5381Hx@KOtlA3E9KN zTujDA(k;g3Wws!H{oQsy`Nre-G{LSOb=w~lmw4rS*VPqMqO#Oi7UYmC&{;faez#p* zeh-gAJil1cTjQ{aI}}@HIIGh4CB^-J2ZAYcfPaQ{jfr! zUqW<4R5WGYO+1>q1UFyMbb1FJuI&1z!AW8xa~8dFmY}QE5B1az!J-{EmZ^_2d&0MX zg$A8Dv+_hM^6D6hk-44!TKbk$gT)(g z5?_b3wa~qGbFT?{#M+k|(s1bP3o(8K&oE&$mLhkGDFf#Ff2advig z{djv91r4>Cw3AU{HJuvIA*5^!i9`5-8JXzr6K#)9}n(yH2^MlTLYJ2)-a@7kJ zCtx`%G0or48-U9giFzW1Gq!0S?313!z>_PqABDL+r)r6vp~VbLn%sIqIsSwkD_+J% zF3^}x9Fudy{XI1CroJlNNWl1mCj-q7;ijQH5bNrQqJ>;?PE=x<8hGI{PCV3C@fgH% zZpD`tm0p!ngV7v}i-_TsPD_x<@g_t)Cc}tP$Sir`2%&M}EdxcI%FPG-)_Wi#5RY|j zF~o~OhmlaEIpTDT&d=jdGT<pMRd8@gC|#3AVkq6o*&a@o5al9v$nt_^IFfCg!krvwES7N$a&gl= zI(>~fl-ABrWhtNFn-#quNl)s>6fF#lKB$HWy$Z+xjfV=XiU~GY96A&EWp7=+rYNHI z2u9OYK4biYTl?3x>MRm+-BH0JqNRb);v40vGUlmwpwIhkn-*17Q41dJ>Q#%vQZJjZu z^DGd^t0O_ILT@nz^{dJ-_XuCDyun^=1>Y8k@W#Cy*lN6N@ICkl5f*L)7LUWUGM0@w zMcoYzMDghnu=^dh{CGxs#9%Xxgg~op`k9t%6N(aS^xL#WzYctPCGFQ%J^R3)1}@~^ zf_?7)NU>_-1C4(?atm#)ib(@P#U%i~-%I{nPyip1j*pgSSK z37-0SOA)z2N=L$ry)toJm@N> zjvn*A6k+4P67c3K@jy5pkH3{MJWNu9K=5&KN^vM?2jfgyP9&;i6j_V#lcSdYE}n~0 zuFJNcH(496 z8`hnz{$74gQ!x%TFaAuOpKWq7s-yl%efX>OI)ci9!dukN&X26)x?%Mx3k)V3^w$K(>2TycRf6oxO9;h>9OsQK;5{-D!3;0{`>pQTl@WvOcSq! z*=&Sul`nO{RtrQAL?ctY-=VhC{^D>usy8$-fromPQdbfQeN%R%VA_9qGgPLyJQGp= zpuyM0*7nImBwx=uMDu8K|BzdO>A6Ppq}c)@k=y5hgeV@A@#chI#Dv8M1;mP7v@4Vt z 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 EKM_DLzyJUM literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.txt new file mode 100644 index 00000000..7bf36072 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_1.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,3,0,1,1] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,3,1,1,2] [3,1,2,2,4,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_10.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_10.png new file mode 100644 index 0000000000000000000000000000000000000000..22aef0aefd742fa35170c9a59f905a60fe55a496 GIT binary patch literal 9301 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 ObYETX?#DY1L;n{oN#xl8 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_11.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_11.txt new file mode 100644 index 00000000..ee056568 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_11.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8720da49a08343f9877990a4cf677408ec461ff0 GIT binary patch literal 11896 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 i17^`zflpm?f7sx(+{XYN!pygNq literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.txt new file mode 100644 index 00000000..0d588352 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_4.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,1,2,3,2] [3,1,2,1,4,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1b63bbca33c217883acc4190550c89b3d9f7cfb7 GIT binary patch literal 9584 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 Sz4Jg$0qJQQX_aU=y!c;21M$ZI literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.txt new file mode 100644 index 00000000..d3179977 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_7.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,2] [3,1,3,2,4,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.png b/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9f4643897b47dc03316440e2d2c25d0683d60b GIT binary patch literal 9568 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.txt b/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.txt new file mode 100644 index 00000000..d7e3b97f --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/2x4_8.txt @@ -0,0 +1,3 @@ +CHECKER 2 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/3x3_1.png b/extensions/fablabchemnitz/bobbinlace/templates/3x3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac3a6cd0db8ff60423f84bbb743ba494f6c4789 GIT binary patch literal 15240 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 V(pZ`_fq%Y$RF$=qz9>9;^G}V@z0v>x literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/3x3_3.txt b/extensions/fablabchemnitz/bobbinlace/templates/3x3_3.txt new file mode 100644 index 00000000..485f98b0 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/3x3_3.txt @@ -0,0 +1,3 @@ +CHECKER 3 3 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,3,0,2,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.png new file mode 100644 index 0000000000000000000000000000000000000000..820c68326c00631df1a1fb16c5438ec2ffd3aa5d GIT binary patch literal 20278 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.txt new file mode 100644 index 00000000..1ff626d0 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_10.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_100.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_100.png new file mode 100644 index 0000000000000000000000000000000000000000..739ddf8e3cc3f19921ff9640ea9568aa5025ec2c GIT binary patch literal 15619 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_102.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_102.txt new file mode 100644 index 00000000..952e612c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_102.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,1,2,2,2] [3,1,2,2,3,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_103.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_103.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf76154ecf64b1bc31144b3b0d23396d7d9bb14 GIT binary patch literal 15937 zcmcJ0c{tSH`!_9GY;CeeQ6r6z-Pqbh*0LsB7=#H~vrZ+1qzNI05VA8u*2%sPvQGAW z-**PjdDG|f?fbi)=enNjxvuAr`osG^=RWWAzR$Vu*Xw?b?*nC7>XS?-$;im4@5|j) zB_ktmfc_mn1pd;QPuoI9CUyM&-COD}B4@FBPj$5&=j+W4VWl5Rm-)|9B$S60DN?NP zjhN_vmY`C)IPl83HexKz=R*aplGMQMvD+8RuOL$?L!)kvo3fLhjK$}_=cP`_x?UU4 zWqCOVgW=-xiZ7^A=gwO-%qig3@^{bsJ{uReoYf>XK2yA=U%kh6`-eiJX4>w2&hEHn zr_^ReOl+<(((E%9-8mxi!~r*Z%GxX>sX3Vt$d`5A=k1(jn0? z(#mA34=r1tctYniHHBySoe>nPfxV|7r=(a?uxDd*&vlcu-4u8i zu_NH-y0OU_-RX<+QWTOOWjTKA*s=Qh`aHFUrl$G1xh(<@^N8Z%>d3P;{MwUT^ChnF z?OT(y9t)j}Xx8J;@4t0=kM27=)X5kjr@+L#J?Vts#w+$L$gEdR^vGSijINI>8^^np zth2dxqjRqJ$`e14nk+C1qmi-+O!2lI*~P`~lfUB6oWR~I(YnV+v=wFP%eRxw4Io_) z)QpmJh4ud^Dd8!U%TZ&0?~L@n+;%l0+j#_c(`<+e{<8|np~A?#ZLO8jr@Xt#amho( zc?Pz7BfouXYi)j~Z|}n`#hwRIPucQ+t*?z_8Il~F`-+#%#FtcfOBUG?$9U=T)d}Gv zNe{1?QR5u@oyV~%(mR4XoX(#+W*xg{b5mWlrz0XF!cUL5nj8sY{lNJWr!!*h-0*SZ zOHPi^W}aPmX63*cBA7ki@G?NIEvmSvb`K>cr^prAG?b(=b}Y;LplBniA7)MHy1-#ASTnjj?TTdW>)A9!N=xZVzPJ zdDM0ZW2d{^(i&Hv<6}mu=Kc=Tl{K> zq2-InWi6eMAI{6B1sJQIAD7TtlrJ<`1Nuwc2g|%R{LPx80`_z&rJd$)2Ix~p>niWl zt>;K6PM0gspZw^TDkyQb56MQ3ScpY@dw6|Z)T^3%)=|8dq@bXHRpy+(z7>~yjFz?L zcp#hfd;C>buC4XHzNnsy%TK>8yvVdA_(=#&jid(Za+*!Ba8oI2p4*y{&G%j{YelH*(U~+Qu zE=O8g+Nw)&!z|_Ya!Z_SGTkt56?0PeY#sHlMQU;UZNhW@_HU7Ph9h-icg8;q8scJ` z&HC$Y;N~K}{()msqAm!R&79E1ZMo;=s!kthnpjIFO0F`C{oe5GuvWAc)`~+BoF}#o zb~RWdzMX%ptE;Q07xL_b^TUR((xbjn1y?TM@u!787Gz&iIpI^T#$naBX)&CX#O0u` z9cK6WJ5#%@uy5oB+&(up+o>xo^{rUFipLU~f0tx!w9<&dC3`L((?RD8{Z`OV+T3hH zKb!Cz%7NELkN2Z@!Q}%lXYxR(i!7eCi)rAfp52&JDew{-$0XfLiWHjI#`n+5s#T0W zzdJ^EV|iD-mt9+5U$cJ@6Yw36&#>a@S8ifW?44vJisOL-`4wp{c4OZIi_PFXFo zGAo-jA&V!qO79rXo$szTh^rg#?%%aL>!UHF+xO7mi{IF_Z|Iug((gLqcL@>$I~LPs z2G%=4hVo!LuZCn(XfM+9>Zg7Pxn0tkDSgGW^rDCL5oQP?Pu* zE|<6%_GF&a(p5yIM!z5nQhJb#Im0|{-T7s6_@)`thKb@mqt&vS%#)hB60qVd(;;$2 z;jCo+BFssxLtqI0(yq6NwEfy4{JUDY1{rsu3w03Bt`Sf~$+`q9MXkqEbrNo|-l#GOvwGvNqF zcYd3xT0OIJig>g+{EP>q>#eO+e(vRYdz0N7ekJ@-7_)3{7V7fyJQFxNIjYDh?q<>r zuwNwpH7{SokjJnD^$`mjL2bhxx%d)YgKM@&9|=p_!@$Bzt_r4F&{&?y=cg7Xp2S)+ z;Bmc=YTL^%ZL3tACgJa-KWtX<>eiYY9w^tO{e{L zKJ#+iP-ZyhS&GAGIoi`@Scg)Ugn9RI-bt<$Xt)qZ+dfwM_lGhS}!pfX;mr1zXCnqG1 zCk%O%um_Q2&0p4@U&Nfk!_Uyp?RIx?I;5Xz)4toHg*-$FJqeXl-o`3JO{+{I)dY z!OBs17}0t-sGT1(o4GVT>ZITCPVd=i89b&p3x~56uWV>&c=E-)tdOz&{Q5F8@pN-I zYgp>1Mcp7t3D>I@(#C}|?0%Q-I#yuCoqjb+i;EX#W#oI7l`6Nu-nxLp z(TDUN*!*R`Dwdo0Wj&dmqFF}B)p4ZRMRKhJdsi)Ck%EbBY3Az zS${8)!}6)y@||(A!O$$3)KvYj$!tF25lzkZ`k6gdz0M7A3dq5{{$I5YrLIx8eQzp5 zp6z<9!P~p{bXT-l?B<3E>U5_i)hGG5-{V_;y60c#%*)3cVsC=W;@ENgyX!+P0i~+u zZJSTGYD}INujwTT>YkGO$DeM-jYro4wxX38^SPBfOW+~iAu5UQbWcvOTqN=5R@#XA zW&B{;<6^$X`+l$}U8Dlpo93={joSZ2^Ie{!_B5wF7Ol{!`tYw=@EB0n}`>@pYX zf54C`bb{+diU{t;pxX`G_$08Ocf1X%94>lTrNlG|w%ut*2Y~8^AMTDetiAk)h0!@M(4?-1dB7_x!Vd zi?sS^ka<926YG)wzJ1#K_Jo^^{+^C?OQK4&l-tHaU$JW_ufg1^i)ZP;!YPEvT{9g) zBGS|LkxY)mY3ts{A_nJ3e~>{dEt;i7l0*t>n!ej{R(TvgmC>0vJ}~ga*;#Do#q8$h zW^b>aPV`3#MC$|!LlHi6^R2?|B0JJ@lxWy4zo3ssg}bBEs#k;d1?#%V$_#0yc#M>caVUwMad8jj(c_Oq zNwd(z9XnmekqXs#fq@wr8TACM^B>+Cvue}YC$tcGlx`3M-)!`bWOeuFN}Xslq^mRI z%}tj=PhWJd*$gByGkZ9r=3QN7mA8r|oh9H#)iplbKH}(Hj=hy3X5QFoigwm$4wcpd z=z{y?z-#GlXD84=(E7I9|NFP9m;v5HZ#0$I^;KciIc3IXQ-{?oNh>%_?s-Q?$4E2+ zt4wmsEi=~pl6|oy{N=r{nSU=d*tv@pOiFS0zQOSe)KPoCJGLkBLnT|itvNOHXE(!nw{SSH14MU}zm+n$v z5O=Y>%4~(#xw&how{|>;HK&`kKTIgz;ZSsB?=}o%85ieu=M2458>!Uu;6jSko(3s( zHn>)5uiefeQb*XfqOMMUYbtCezVyi#bet@|U5V?ul|I2sFZq4U$bCyv<%{L|?8goy z4Pl&=*#tLgdVgk#&P-4-o)lkqKm|oFX9{h}PqQs)uKgmp{bs7k!?$jk^idc*+euX> zRj9PdWoKtEg_Y%f$^Yi>a$-enx={VXO>?W&clS6(eJ8~Symt&Pna$g@g?oeT>dyCe zSULNK!1Y~BK_qp+WjgKIX5V55?~?F`zH1k9ZAlVAAsRgB?el{4&aqglU1kxhn*KC- z-C`GwlJzn#%0>F7NU^g!+cU)MYrFY&-l<=az)PiW-WIs* zHyGC%wH#vEEoFX+6uLX*nk7AGd5(EXykkWNRsnzJk3MX4)5ve`Y zSq#0lYvvn3?QXL@ANU?Ay*F2j?0Qo>M_QPOoh1aS=>C{dAA+(8dHsGi(f8eRe#~#D zucK36pPwnsCh78ZhGW;LXtS_4z31YE{-Wg=D7?UarHX!Lh;U3X$YXV%r$rlD;)-R0 zbKIM^ln`d-7~c%j@a=(#$%)ZU{i=EQN+r$SRfL4=M(lPhYD5(0IGW{a5mQ-NnV+8z z*Gfk{dlnM(@)XflO-*e|S7)@Spx~O0$TIv6Y)6bKpe=20Lo)o^W_vHg=JWEwq%wH- zW^?#GvqPVaa39fUCfyufgDHix7uudBTWul z3iD8MX4oDmm|<bynJEcT=O z!VhF1PFrdD@}p9)_r#%@+YWxTW= zRK{!i5_p-#K2Sp-tTL zRbh^&jFd+AJ+zr%8B{lO66{AFon`U_P(SV1*c|!+QV3r&zvt_FLe~5%hig7xXp(nf zO>_8Z5`RaK8N9uN;rmDLYC8H!CCwiO+se`289HngF!&b%whfb1S!1|)^c6mByyb6~ z8`=*&X2o^PUliplTH_8O1VFLivXc98LAw(+?cQ!<0E4UUs5Fy266ass&?d)pD!z4Wy>GKD1$r(F zp2uZ{6t#a%ZJK7Hk#&wXS@%4-XoVYc*b{%|F^}a1LtYZd%Yh#{#f~`=aRPxF3oIOM z<6ktwf%N+>ARs@ilgqfSW-^eYLwkcyd!pf}2jeuC3A_WJIIyFv_4?F%BpuIKlaI|B z)8LMrCOP)-8}L?jzx`yQsT&PtY_cioJ<(}Z#wJtxpXzFG|nI|y#%qsdR zmiIP4cy<_imQ0jail%Nglz9Qht)O3Gc@GJIXLnvh*AOEN>a~ z%oEzhsV@1W(bPmknQt(7@)|l5_!ETuy#&uJe#>)3Q}-Ck{Di^l*3mVvS|!N_h4jUr#OB^PF{)wfNyr1uDWmB=Gdz_G=Qm0ZPw(x8v4OX)n5a>+($>I-d4Z zn<-Q6^D1=CmX;}i_v)S%cbWt2pS6`0MfYY|F;lblpfWXoS43*f|%fWvj zfP}P>uFqK^{j+JwW?3DhNtOkhW@cve=g+5BIQdWt^~iV=Rs^dd)PGecYmCc!{PRpp z;GQi1bY{jqD(z8R&-IRifAPQ@@zj(-9)A0T#D_3=Y76x07 zlcS$uwy4%qT8WGikc19Ti)LFxBJE@Rees#`{vDFdUUOZds28Tz%Gz2*NhxVrvvz1` zXlg21q6{H{{E|IjjN1nv(^)3)#r$|D^sfu!2S}wI237%U_g1A}lkvcqdwJ*9 zx2Fj208N^9kAoFK34>8$i=pGJiMnF9wyUKhz3nm`ZNVvbk}^oCsm72fR~o@>zjhS= zZnZ5hq-b7NOo&_djWsUZj#XP&wF``f(1E1TGnr*-^)S@67rjHZ5gG&>=8&-V#0>qx zk@O8%?O*h%O?Vx8HOkl5w*vloel`>Jl~3{fel5SME=*MPxuPT7e0nep1(*pD4lp+Z zn0x=oCWoUE$`N|PAH4aLgnKuY9uasXg1iW?pjFc;3eR7A)oOCs{CG1`ATaH7W~AN| zFt8jtd)LBJs|2w;%yKuM!cxpl*XoI0NL;hnRdD+yzOJ28YMsQrNKn(w{=ssl9 zNfN81gGHQ7hesju(zJy?a)L(yA{a|L=c?{09N{CXFZ2v0iQRZ>!m$ZmjEBHW)qbag z8??R#&dlglc9KH5nSFaetkHvYa6W_QmK+D4`)JcuR(Mdiw(yy>+S_LLK**|;X{L(K zv?i*sNx6MvUw0`keR68|Fy^?ea;R$~K})Q^&}n{Yw7$sR@w0&ac?rAsPjR&!PFcu9v)6kofbnK7wg4ZNDc_;C_5G&gm@z(BD-FUTso*dqxO6_Dykf& z>DtN%iguqy8CkFC>1kX0c0SIbFxgzW+W|PS2wCN`*1KgItAdwpJ=SK38ylj$SV}wL zz(@*&P79HvK~XcCIW&>B*Gh|6hZV<4?+))_ov9)o%_@0Hh+yKbqU+t0-V*aj|KZ@x zZUjcw$jWN0cNx0%OSE}|4Q(OecLCNcq* z-)rjg?e-Qj_O{T+Ja3Jyd9}x_1ua!vcDZ8sXsJPF*0}zj@;J-*TyLSXSaq#>oGrl% zvnp1vkNcJ_+AGIxFWivN2UX>$FuSJdD6W_pAQ>sc95n>@<>?D_Io z<5OMqN*rx`c^$gv$MfMX#}u2@DUHoON_w6O0|~n^#g+MNv!>*YaRN3adU<2xMb5?N zC+*TzB*u?V^t>jhBk-#oI{(eK4?MrD^Mm&pxJ_eq_it0s6<|}6c(HKv-V4&kb5f-y zinn0Ds_s!>R>md$SAQTvHa!TmBF?kI;C@rK#>U1jE{GdHEiEmJ^?B{K%L<%VCNS49 z8~%&rbB=|!p7w6b=I>1G-UlV!8;zvo&>}D*Lj82b00++xKE%29cv4D_S#pft0l!@y zZuY z@Hwo}a0b!II1uO8cU6ub78rtrpFhVvzKc5m2m8WJWTc`Q;ch}{A z`$H@fRM_QT$JNa6d;;3fCC)(HGRbjMe>vka4Ta~1q?&`-%~|QzI7?PBy^_VCFREVw z32m2D6aSJB!V!81;X^AObmiWh-zbfCBP`#Y6fkL(2Vake_~VP}JavEgV{(XN6Owtq zvbj8NNl`0)G+QV5w5BZ#V0AKV?aSIvU(_cR6%{Y*x9E=8ss}6YvvOou^MTMTS$S$3 zh*3Ur&V*$`@vwaYxPF5#Yr6W=E;ts`O$jo0d&xY!ZN~H^8(cVw_l=bA3;u*<>m)xz zT{tgu0x*aK{Q_)_LK==BGP&g^6c6pcENcsu4c4zsHvL3>>>I-6eSUlfQ$(Jwjrm-& zYN!of<_Opr;QXW5&s8`-FOKeS-(Qb)$;+7D%RTz{=nAs#A()QnM!_ zGis2)30M#x(dd6ev$}g=WyalP9I5RS$Ps4`2VK9Z`PF5^wPIyuWn=`o(~?#+5m{X` z2j23gnadO0(bUw`9_1SX0s;(FQ^zuLCnEc6-v9fsB6^ec#=oqo%=iIox*smrZ$>Ga z%x#WZ>##kvXvx3Hu5%3f29vL9&o^7;waVmw|K2uf&+TzCp=f`(ptgaT8XI#IFXPdB z9vPk48(dexCW46ZF{r9Q{V8s^pyCG5z#(w0+}vC++V9N%tbqT&(&FCWfzOy@sOh(j z=2giUvRj{8_NKoAy(h$RA}7rJE|1A|jwtc$&kI#9=6vD)W?4M_UEtGz_YDLM05fjv3m)kh3AMRE=0Z@@#@_Ea`vr;T$FNE&3|0{uft~10r-u|SXB$|9=pLL{;(Az&6EHFT2 zdQGpkD>P19+3cS#h;i&XDX5akmrhsm9 zYpNKn&<=(1$<{<#HmM?~`M%NmP}kzVCw!t35)hyGMZjKD@D3mi`;p~Iaxyy(BP%Q{ zEZn@jiEP^v($e_CLd$8jUpK*R+d_uD{>vtaI*pyqq!UwUKlyR+^1`4EgXBe(xy@)v zS79ls642L&tA?0DeSOJhMufjuffR$_z!Wo6~9jX9|is-vTGZG5^j zBPCLZIYK>9BKl(pC%S$I?;;aYc+TwEGo{_6*2#*d>}wKMM-Y?~k*_ldM+7U7@y&L2 zc8l4*pnqChTgwMmy<}JDIQv*)JUpCHJI5e*PXyry_S=sBJFa7hO z0W9R$qxOVXae&>aKx%1f{?d9j!az%LxIbz1WB77!q0_Q0PbzDUbttFWBK@!oS5t1= z^IOE4t;m?{mjnrigqTaP6rP^TP!oI`0S2jFGIL-3cA;?Wd&K*U~D8=|=kCJ)O+sfBN8zQZt26rO;XMw?~_LQY!dLG@k_!nah;S>FU1Jzh; z!isCnf(~ra32clVjK$%-n&T}wJAjoye_HbAet){!$s%99MjJgnT>vsS@N3JE-mrg*cz4=FVQ{F@e~g(Hq*Hf& zD4i~!rPCI+Jp^p&8k>n1K(FMqzTTM`)aan6#M=h~PpsI`^@X61zJu>oc|~Z}7L?oP zXJq6Y?z5D^tWxR}7{zDzlxNCygMzz}#%_*{Az zdPHW@>9KFD4x`#VWppGU zV3xjEdrT;vWkf*tfmbjS1^sft9nloO1&=q-y#>aCtMJDMT=|nc9?xXC(~5uA>;p0{ zWfC7%?iBxbzjK#_{y2I78C#S;!1EkVl{@|DA7hXyDU&3q9H#gi{LT&jV|)=ZMwCBD zf zdCD{7PCNdY!WG=|<~(`@!Fj(U-1K&H9zSx|qtL;;Z?mCiM6}-ZCX@goVk~V<6K|zH z0u&WidEHid^F8?j;P%STXGF=IT(`JscGNzh6w8DZEJez6SXk#)-TZG>BQPCeHID2X zK^H{jWP2a?`_j6)y4iCe^Lmzk@vw0cRV~*;?(c7FD@zbv7G!dZ6h40%u;Y}Jl$t|@ zYs0ZVx~4AA-{M3BFWN!~OXsM;}91S62%Qd92F) z^YrvuT3Vw~dkYKALy12;6+o{EieS+8q&Irb5W5|=<6+Qy;{$$F3N6S)+&bQw`Sc)K zpxo@$#pJ!Bc>2>}7SI@k#u4eE@T=oP5-N?wei{O~0OS=A3d6UjXz%o)%z&xQA5&gn z`n8Skpa6A?eltqu(*inRF#i2^9lfdr0}vg&d6+87pXbOa{7c;7dSc z!1GJq% zJGqaAiwB+^N$Ab0M8feTk|oz*}Hl9^?qhjw`mZI-Gu2RveVMg z0I<>;_#i4ey1%zKCpg2T#@3tA98UILjB~&Y=Vghj^vBuch)|ag^0{Ie-7#zSssT3v%C!gU{W76e@h~ywwb;=hjxIJ4c}m{yB9m;Z{^c z&BI{)Xo-4pY@MD*^Y7oENot9$zR}rXvdZJ!mU5%0zd$=!hZyg8GpOb`gW9!5dU|w8 zC?gja7h7AfqCAPH17TdtgkNj*IdGJ0Jw5OS!Z_GLR)@{gXr;?%vUm)~^a7pLc1$Wq{QOX?<~ES~~c`d>h|(EPcvf7Fbe zyC*>@W6ESWHFH53Li#vJ@)bI|dwp3xz`6I^!{Gh=|EY$&56b_NApgGyJ=mPA`vhkI zks(PaR7s4-pH3in01ejAi_1LvMUOUTmx{*>?z2!)EV?F45nldAC&+e6*cP}AbKZ&v zQn72}su%@wEL;}S3b1*=6yEjF)nCAUR7}nGr-jDLtiE!n`U8Ubu8?4EOg)5S_R^T#>U32Z4$ztaG+p1Y!9P= z>AXypTU}Uxdw>?U;&hx_!~!wBkS>a_@)JqV09}@t~f9bVK^tUxP z2k7My>71hTt9=*`n3ab8M2_Cu-P!LaJouMG@g)M4>F3X?<7yxOF1ocz=MJzcCxm z?6daK2VN}BkoKm#5|mGq1$Q4- zK`(ZInU8lMfr`iB5ZC^44y;x`qvC(r+`4$+8&VS$is}WWsWWLxVfk&jprG8>5z!~^ z<8q@zg3z%ApJiWoRI{^uzz!v;K36{h`+#X2XBIBpKN^sx2SwRAof7)Fvv=SCxjzB4 z65Z3NCx-f=O4kn-!RW!*>9fRm%iDoib6^D3*-8`9Wu~g3jqn2_P?C3+cG~e!PU8#@ z77FEO6Oz>ZM+Tuv*Y=H|LOm zy!$k~&5IXL*Et~2och$8ko&Zx)>{qZw>4ceDJClVNMB!Bdd>NOdGAR43h;?oEIC5w z>mZEzvCOr)bPlJn9z^uJkJ^Xs)nC`-G5>}>Us;AsB7wyxD@zup~v zQFEiKr-v$=oi3RtFE>}6(3xSNC1xosoW$xZbp@`n`)M1!>UYhFi|}uvHq&^~bKL%X zv)EAs?1`suYvp6c$Hs=t&K}773^l*r9s`ZPoEHR80ORg03-hE#ajHbsTvYY>#$GvT z?C0fmH2)U9A2iz!K>+=*EY=*%lAfCSHRE^94OS|O61Dm(0^^`;85`AoBx%vlqmnSh zTjj4B^(<-lH4gCLcg)DK&If2&@5g;UadG&%0~i#4o3J(YP~5Tc`rDSLUtNUU%{nr9 zAQ&zNDNMXUKPOzCHdEbTcMbcPCtR%m$MZY8%DjSRW&g+2`&+iB$oVYd&bXrJ6iedF z>kng~#_yhWba@&2=@SC`e!k5XaMZgU)&G@dNe5|`gR(s0+F!`t5#q==iuXCP<^2_8 zq@|65R}=|kl~gskfWDz03=)mihxgX{n7_tpvKV+_wiSiG`}_L?5<@Fpm-zel5>|@` zcP=3zp-t>dowI|3#wYbLEp5dqQ^54={91H9`tV_L;gO|b?{Y&T&_D~=6W$~NBBUC5 z1(I46aIaf~qB?&Ad-0mrT>>sskeS|FBZPBbP3?n`$%oX`ZGFm(PDz>=kWD$Cq-9$& znc)03PRKkEVdSX$R95Lv-zWk;*5Y;%lupMvui;Q5M}RH-b4<24lNFA=sNixJv9A1> z^QjoqpFrXK$q6W&x6y^shp;i(Pd@;GL`kjRhpCSn_V+Z$0Y81=s1E@Ux?{tUQ#0>H z%8)W1ddiB5qVgOUi1kO~6!%-YpqAcesO0+ie&`1&0r`W%Qbi;07Xb}W`2w*3eJrCl z&JstIFCSJ?+4=*aP00`H>{y-?e!u3wpW*#8fJF*|0yYdo4wD5}i&c7-+y4Mc(32a! zt>}FzSs_tovY6d#UiSAb2-}Duq1t?q?^}WWW0-HEDkObs6787&sW;j73RO` z&7bfta#z%;K56t;{{f=e2mV|_R6Ju2J~o>t<< zx|Z~+h7727lc#iCxBmhCUmzUN?j7TyNAU>5p81dQG051NVXDm}jE<|!^3SSnLdFi> zF^?hK%U<)3F*#&x$57W{QUhjwc3^Ba4xuOAf<&V!vurSiP5 z=WT#tpZPPz8bD#Kx&`)J);S`Z1tiOy%&h{dT=ok|`#p33_uN~K1U2f+rg`*!s{w>v zuT@^JRe!#n8MwWGqOQyD++6!h!pR9mPjR6dNDh$N-iHc!_09%d8{IcR?a9f>d52Xm z(c&h=wE&~1;DYdLO)1u9@eBzG>E;5Nm%{Vb&cK|_*L`&iK#U2AVlcSTzR89_KZoi6 z&;me#BMHbM&}p${;C}z=-#lD)p`-mDMqov-5$QF1pB0d2dcgAw3rR8{E+HR) z(Dv%O;0@`u2wso?BK;&P@du?s4tt}W4{gIo8Cp|sAPI7N>Fs4%F`LWOg zGzh5ycq)eY?yle1-YF?Cz6ko5yH5pitEbZq|KMLpVo#YRL^T=C&V5W264rtj$mWH@ zFT}7W(jS7ve*h=Mb9l9}c^450z;xh`sR6{4BpHV77oeL`C+f**;tl}f0RV2}yDZ#+ zHV*uskURfsD;@ETNe2j`i5Z}XfU+{ZYT8wSbQbb#?EfLI!W=0(sc^EJ%esJsQnw;zmO z!`?QBHp7i!#zQD#lq?81^Ck#pHV~Z-t@(PFZVk}`$nOs31!Ufn@a*{`Gp)9{FPZDf z9eYU4KvWvvbYitMTQ6?Gw|8BK&F#m-;p?)SPdP@OeQ?{!rtO#9*>hMzZ?&#lht!=SBg1j= z69dHO@3DS=K3*P&*08A+6;fIQc6$SQdT$!2-|wvK1P-wkFAg3{TQ5x9%~~X;;4kE- zg-D(x8&FEDLB{tMxsHF2aTX%#uoZ6)UeG(zOOe>P)!XTlvUs7k_7m8Kmq${C@8z_X;OAeh^F3@@vc9t}{lei~_~QA=cS|b0 zUFeeCw_4(!6%>iof-F zj2P7BMZ3&f8W3Fksa~8D8w{+|2$a5R?AbtjCNWS$CEu}Og`DgQPgOSM`#^Z09w?eN6N7) z(S#|o1Gzfi_(EYuzS5VsT1nW<^X!>UWa}P%xDJQ}hm+QBy}tci2&qtM_p8aN3pI&L zO2YF!_<>?)ErumtdZhIS_lnO^dZ)JW%KdYP$zEP#=-oiLyH2fAr^M~Kxu0I{4eaY= zsr3tjA5NS%GVhDn{B*Y~h}l5)UbwT&(1_}tnTzY~pB^4c+-v>)?g{wmsz?d=4+sFa)NT55&sEUXU~4s6;2GP+95=Z5ofsn>VhLR&LxhKJf( z%lQvmNRQHasceCt4kP6CcwPj|E$a3u#9x!$$kiv?L3sFk*$!e4>Qem_0S$jC_FTrTS@kQkPa)rO%y z1f77q9gj-xL^509UOZqR`$n_b!Z}q9RxU1q1~RB25Uz&@BP!QlxhSQL2P0RZ#&cB1C!u3P_P2q&JZo zN)V}$CLO5)(%an$ocDOn_x``RGk5MiGiMxk*4}IXc3bOtp5?21Dsr^Pn2u3UP|(WX zy`xS+aiE#>{}D>i(p`L_je5|GkLP7Bqs#kFa`~jgtAEKb}`;1tg+1?x=^onmv_b^JAO857dSBS%+)>IUz>M`+B zo*Tc0sy8{0AAa8UP$>E$a`Ph6EGl|tXlTu)ax+`(l+=!^19IZ)<6nWhUJL6dq@@{t z&a@6O`?X5D8FAw1QJq)A9WJt5xR9Bd*-yy%^yyP!;e>dp#~Uaui-SrP9`Q1zY`M$( zlV0UUTgZ;cL~G(zH_m_oiS;Mq0bcRYJ38MwI<|WLjueI!T-nLf8&!ufhNjD=VLE4KX3CZb;#W?K1-fSYn+Puc`t^%|6;H4M zJqs6Sh|q<)mKNnUI1a0B-^`(Z`GYJG)4~yXNbC$!=YR-=*}bu&W4FkD#CfBYO}0(6 zebcs0I$6%fc5VwFzr}y5riQlm*-9?=wu$i!GsKv&zQ5EvpL^%`7@PNbw&#%n2G=GG z0y?gS=TWMa+EuKNbH;mwZKH1}O)tA)RpdI#Q_N(V z-m4sB^qz7q#Xq>c)L`zw$DY17ua@&-e%=F5{qUA7&d}D((bjpv2Q7V%=Z#ltdW}7% z;f;$#=;0& zpjZ-0#Zt=4&7;H_Wv}j7C)2-9`NW5(c6d0UC*`VJV2R=w!9T&Tek8Y#vyqjaX~p{` z<_g@h1Fw6bScUKvrW0d=i_OHcqv@r;&~n#fY_}cSD26h>m|E2pTH$J8m7~*{*=z-L zswl6_`>*s1ZOxf~j<>`PyW~F=tr=LG?bXgQkgsrE7_J?yG~ZH;HJ(>c9Qe)6Jqrfq9LuQh#&)A1n+;#w+8O1{rJ2M#0*Sh@fD@y!3% z+QP_aU_#`u_x${P;DKWI+uygV8exh79jWL%F%%Z_-XZ7ub>iLWJT?ZVu9R*m!25Ug_4Q|+#XIkA zdwE|!H~PAJWg<~71i=k4RuWOq?mk0>Tc8!MyhV^lb*5tSL{MYEU&Al5Kf8&d@SNBV zyqp6Yi}Z!cwXVQXr=%oPJojC6Ae!IZI3k$kgje=5H5${>c{SGI)YJ~6H~l6A_fkts zOGHHE4)bW-S?Ety`*)oD@|@XrHNls&t^IF*sjh}XZ3os-zxw(x5?LMNm@DbB`50yP zl$~SP%*mMx;7(q_j3K2rD`DO{g%7u8b3c7dY?6!L-pX6>+E8k-^ICGh%@$--9JaQ; z!G*H}c=BUA@-e?Y~`>p&xyR&_CpvxjZ+WY0RAb7F+{$ z823qf@8zk^W4iJ+?zEd4*O`LDx|7G~&lSgq&9W~w=*He7$Ox&y4F3Nm~3tw2FDd!$*l#0VI>O`^#a$Nrp#Bqu<=Z zh)O%IP*w)v@Ae07EIMD!+cf1q?z~X>xfY?ZI#&~nKryQ2S9O`TZG9!uYzZb`{+ahJ z=Xj<4J=2`ozJA#P72K{l$N7O2UDF(zA|YwVWIyA&ni?tQ-6)TdcVA50xis!L-|X8> z2yLE!!7tt;o17GyNrini6e%DnA1}P6qTO~&w|K-9CxF|9b3}W0r_TIvJL={?LpiB* zv@)ptqK6h!#JWof%KJ{V#ULeGnf<$tP}sUlaB_08-g%VM>#ti!-$BoB39h_+Wg4yr zN!A>-d@Mw4C<;~ZEUwTTJ(gqbHK_!?&-1--h9#ZV>0&`z5#lkd-ML~Wo>(?9^k@DD z#;LUFxN1v|?)PaB{mdn0c5PqtrQ68UYvwaFFHJk`b(}_HguWrTT`ELS7j#6V9U)*{ zE3OJ=#L%Vt8^n)CTVn~@a#=^4#{CGFe>L?m7W>{GG!10ee{TxW&s(Aoovy~MzlR*gCW>DkGfG8f;Ay(Q*PS|06P&Ka4aU zH-EyUfZ+KwSzPBjv4O#qxb-#qpx1eKle6&oJ8Xp_wW`0J9XobDCRcaq-f7cDD1-%T z<}FS0%uR3$p8pzsI4a}yiNwiRwW+H9%7>ns6FfJu@Uxz9h>2kIZ?|%l6sWXxB}fX& z%MHB;KN5z$D%eX8i=ClD-^WFd7z9Da*~ht5Qe0fWGVmJz z+=Kv5{2f&Cy6zR|Ivux{k;go|rKgiY?Kd;=!u0fXA(V%QCrGxDvn*E4#$LKI^uht` z&u92+(R@Nge676Z=J{T8Mz!OYa2#`e#b}$I+S=N&F>~$(ZZLgG9L?Uyc4uQ|7Fu6R zJ!M#epRIm1Luvmtrqu6>SMP?udf?`v(?qea(X3G!Vd*dFHfvofa+WU@scL=w`&sAp zI%do3L-_rxDJqPS&Eq}-7jLxL(UtNUaR|J_L~MpvrS!SuJYL6Q*u>ha`5y?5VpZq! zciuSlObmKU!J>LLE=E~9qRL%uZBX>@Tl6jp4jg5|$FHcw-psQz~O~wi@KmVja2y-@z7Vtpu)rU$@bn<~;S9P{1X}gS4=->0Qq@B) zateQ2#yy*;K`6%%m;d1w-*2U#+|M&i551pFTa zx;^rmY^L-&ul>2P`_m1*_l)RF@98V`3?IPfHXrgjA6eVQXbRK2RF2mxF2+6xJPqb) zaj-H-(X`fdb;r|gVip^sA3Ka(O(`wycHx!!!Hs(GGRuMR!D2$%bL00=wcqOeV5Qgg zhROAF!LrV567;Z#YCf1e86*?drVWAa%rZ(HtM#s212GlJmgKrtH?$NImvT5V0CUF* zcVHazL1luCoZ6eS-7hES_Q)%euWH9Rn_!0=liP^ww1Pynv*l;tc5z!}7cS&iegh+p zHw{FNDAu>Co~^7k8q&|)b*|z}?SYd%B>($LL5P8~&e98hu(u4EUv(WgH zlzO&NDqZpJ^X&)P8&wrOqCuxOV~2~}SF@dK<14mC_(vZ6QV*qv$?Zn5(rXdeI}qQd zm&LHJQ{C03dwY8!=~G-M>z^j*1K7~YZXC*cO)7P8K2X}Jw0|`B{gY8^!qU=`;6$IP z>G*Lhc3eq@Ly451t9X5{G*Ao?c8DnVCZ4hLUdUwpmYL9ebGs^@)&GFFw~H8dOd|cp z#H34f?z2%3^*)#R0cF%or9+YM)(22{DB9mhjOeDZ~{o< zztEtlsbisz&Y@7+;OoR_%EHsHm&zH5Ll6QxIY-}8Xv~q?{ozpDsv{yef=PVn=_%>% ztn~ZaL!rhC*_p1z((H5;XnqK@{CJg*#fkB z)wevpF}*6RByQNWJ?++;?+R(7NvhO~r7mKuv25OxD)TwaCO z>__To7Y4Ysvo0H#Js!HXH6O^x-?$dZXZUgDRH1Euqlh$0mcWH#eDUcPhti7WdwtIZ zEI+PV**32K?-ctk^40FrI|mQ1r8OQTz9Gorb%II?+9s*9v(vUv|2M-juiOb%iIb;T zrM)m7x#2zf#KA#ED%7g)aXX7!ga#r%SkDvSvyUOHEd{|Z&o21)ieSvi|T&P=l+_^Ww zb_4K+^RUeiry$H12G7Mhahr;!Wy7M~8`plW)fO6E&gQs6t7vpH#sK3%+{9Ury8d#{ zl)l~wlkLdr5e?=2gu~%-b1!|rxH>Hg$(Ldc8N2dxbUC;vbTmBp<;#~KYt|lBa0)#q zAu7u01G@PTG{w$*J&UH_(ihrU(b4N{8%u2U+9A4nW0)3W2e$_LG?KVq#kYE|t%G~4 zSS_|Sde5jPgfKv3&I)^Ev+C9LAk-mX=<&HhcD@ykJ5WS@RCmb?L)G{1F)Ex6IsV;C zE7WLP;J|yrequD;`2D!S9mVy`xODC8nC^{-LJCH)5!%pEFNKeR3UIz&)TL3(A+h$! znb*nD)>AwP&l-WXIaQZ2o2@qdF^W>@0s2i}`ddW36H0-#82Z%MN}m6g{2q0-%$UH? zkY0of*L5{MZ8lgou!zXFU^;tjcFwh_Me-YGoqw^G)22Xx%S@b05i6yFOkYM><}muT zB%6vCr4Mt_Ke4cYEC)oMad?(G#D^Mja;B~f>g>r6A60mYZ}=kQy;`~}s8k(UEjv+- z(0J}?xN+nTtxG6#cAof}c}87AW|9_V5J!FTdLr9)rU-2a9rJ^c623rooys)#) zm7jTnxc84DKr0`F89VEJo|qG@Nb5{ZgARU|cY@@(B$J#7M_Hs*&6yx@Y6-h=#F7Qy z-l#r=QIb0veff=yA(xT>tt?z@6oV0jxqQmI_;Q#j*`F+g`6g12G*)Qlk@)b?mdf_< z%@JEzzClm4wd1#4cHCd7u)ovmqG;=b*rOnlGgYqQ-73F@`y}FH%wct_n2spe5t? zny)I0JO8i9KTn$MyoTglD3*ZA-11Za+$T!@ej_Rm?b zp5ID61#u^kw_c+|_s!S0q-f^Z_x-GNTW_1%X1d9Rt~4emhDL7qHB=OKUWIlN^FoQ% zB}bGfMsu2J!St*rR6(+6lQA=d(y^x@mt+bx{dekn!FocDuk$HE-XQ%Zg*!UflIQNj zlVbIzW2&2xR?fJ>;M>BMJa1FrjwCk6j`Lw*Z(d&BC6`cf;dc(FT`a$TJ%|qe$agmt z2^lo4Z4I0+&j~F$V~}QlEC1!gE89778kk-95ub8q^bMD1Oh`Y=oV!iF{?Vmg$DtNdQ-K#c4Oe(25D2ZIlyZD~# zKMAqiOnT_Mj$2P4{?EJmBzYEkyX1iPr$+&R*x!bFH`mL-DZzAzi+bmZ@q_&4KR!{=IPyL4I0I z7Bu>*Y7y_Dl3RjW58AZ;l_2Y^pG~N2#zJQsD0V zB%MzEg0Ql}-vg~~BX%Jl%2^GiHfAQ`gIDX9rF|&CRWjyhrSn^C3|iw|$*g<8Dki6- z#31GlAeUuEkHTF4W_JF7XZiB<_oHE7z98~kMsuu_eke1DZTbL8EUu z`1p>yz(VZGRkZLUi@GM_p$E9HFd@=o@l|VBBfVHUVNrbq%f~$VT1H80hEG{pIbRUr z^m>gC$@mobxlY=PGx}-H3&&RR7Cy}MsxPV3BZ5bJ5rEVpJxyI&*9KWBz@l_Bs^)8W z@i61lLAN)gZuyxV#Rq60u}8DG;u;z6>xhI&qhAu90nj9TOh4^OAh(jp8H4*0PJH@# z)|XYmYE%PSz%s!4!%pN86I}Frh6n)>iu6F2lb~m~JHKDTFy1TVII#->n z<*sq@wQ>zlz@V8v)0G*0kH5KRhNXryj5tVwFR6)wBzSy2c(H@bfbFHbNc8>Xvq`Ae zM#N(r*nH9iK=M01J;SI1NzZC1b(ycDZtz|~?q2rVZDZSR?aMm|>0BDcpE;#mqtrYX zomc)J-We9_(ER0#PpTSvRrU#)f5x#-kimVr;r(oXYeE~*Q88Y5o-VK&b>|6Lg71}FrZ*saaOpwQZl)W(5oCE2gf|?&F zPr#r7?FU2JAe;yZkvvl@SewfXV$9L&8pB5e8TkzScRd$|;pcb1 zeNbF>h>MHMVz~TDWMbp8!|P`R-btkoOWhSK`8~H^6dv=VfAFGrV^QFY>kQtq@B?^9 z_1}`;(ZWgIsq$CUCs_TDgs@4gRP-oV!&g^VYoGRIei~91p+`lWO;h7UI*p2fleGlq z>r1HmQjOp+G_)mWuN?O+MDWG_8BFF5A|aTAVz(y}guZkT`J0tQ#G+q;d{WD+)HQou`?Or5 z+G0#vnc&63cp_0a1j9Qxdh;F^&hl+zvF50{%tT|T;sNkB#N$tMh}4=r=b48TdoBk5 zG|J{I_z+GtK6g=*uhAf5LW#mL`2d+ag*X2mYl^fw%q4a(Pyele77B7$tepaje~OQI zr}?wFxjD&54Ks?;e5=AyN=5qR5qM4I6qFwWQdE#KKoCGvFc5fE6x7qpuW-7i3>hPoz;2g>?POB^Bth<;r(q%=y^K0OHN*YOl#44&8 znfbI-QbC1rdQ#v z0xA*s0My?d@v6>i-!7xfbr`NVLiWBZB$cxW1qWp2Gjp|D$kXqjw19T>H}jd+OcFyW z|7mzu`Eg5t=AEn)f4B+lJDO!23J=Zv{D+&%;#FGL1VwSYfA&s-^k~5?IP_oq;pQ&N z$4U!|EA$yDe6h9TM1SvPlZvWZb+6tap8#}x1!SQZgM}jt@8+_V3sK9ky+64Bo z>cI!!XIExsthb4oWs{ithB@+bxtZXYy1KjVkUBa#fEihSuC4D#utUg^y8^nA7LTl` z=i%ey~`~|ah-GY9)l-!wEo-CB(U?ed$e05IK7~+OaQqriK25> z%U+Q!Xx1Cq8*aY|^Y5m%ER1a4Kdl6GVZkQR`E`3PF>m7Dc}z@?u1v0z=ER1bA%x{#osJ0&r;F+Z)SOCP2)YkvhqRx+iuJ1_JO`-EYSM zkLH2S)CiT6le4n2BFbIe5By5s%+$ihFqGgCi#j}M9qJpK;hZme2t1by)#Eixlu~{sijNfChqRN2+)7H=T39N8gIde zMS5Ma;pZFM6>A!Wy~?b4Q6NrBNK5lO5H2uS5WwThIM#d@Ny%h}yEO@dHY5Z>z6W3u zh3s(>PuP9@qZVdlk%g`Q3D>%zOQdMs)>l;pBK{)~Ncd36?=L}0D=OlokPd?NiEUS1 z%A6si&gv{tmyMNFa&DkPdwX!9{~?&7A;?K%zeP+JSn&E$3qbc2k_3NCk# z9t^2}pu0*;$M`w~VM3v(l~^b(t$?om^>FMD5IzG2iQ$7vK$Z7(oe$^M4&yf}dVFbT zwKkBEEYaTI^an!jB_tr8B*!tAU2fjx7OFvrV^y4ew6(QM`)xruFZ?3m`b*}H>(-k6 zVy%`LcS&U>|KU;F543i;n*LwQ0+1Mx@a zmfg%`L@L&2*hy}-$CYm12B8N=!%+~8veYIkoHf5ky?AR7bRb_S(~OarXI0IS7^%p~ zdF<+{BZ49eoJYP~oj3yaoib`lNyb4*>pBbFh<;@4in5ZrbI>|VgYH?f7#ZPzREi`< zN&+$R0+)U$>UtvP!MQQg(pzNaSpk3*HhKUaL84Jwt4K5oG#p7BTY(CfeqfK}eR&c^ z0B0pH>AYC!NME$IZcVa|^_#K&%Y~{H0{zp=H3gqgGCskX%NPf6P+^vD2y;*IG3*u_ zi(^f~&rh-ubnwMTCRwPknMp~tX`~-Z0suxqyVW)wO_b?)%y?d`{f=!J8Nx@%1PBWE zbaSo$tDPaR{f!=s_q=Wy-;QOJZ+&3gvrnl^lS*gKlYx~UkIL;S=CAe$G&?sSCwNHu z#~okNvz5zG+Wsa(5l|Zq3V_-O91nR1y$>KLpvd!e;(d$w0HHzdV-O<^IIqz6P=PJM zu3j1qe0=1Tl33*$lD>>mVE6GJad7h3Lot!ktiPYYKS{ z8HN*%7qcfG76w}8D-T;TC6i3XJz=QDy(k;ZdyC#*G{4v6ypEvY4LRP_(t1uPDj**-V$@zc}Th*9X^0|rLM z$jHdd8W%qr;XbedLcmBeSdf@HN@)wIg1>@epQ+*B{o9p9aGq$nly*GB*wmC|VQ>B# z*W3@3)hVzVfUW@G4;+b{{QU6#HFCa6rUc0AvVSaku)g~QfW(!30ziKUk1!)q2Y=e> zV0_oa#vk8!t9=}>`YmiB^#xL2g#U5&^xNN*YrGgcNDb7cXow(L49nMv_U&_D&{28Z zLtgmX$PjQm6t^E;E$NL0rhWUSAPVKbjqwHXvx7Te9-V{vaee<-9{`b-_e1h~faiEP zZv>I|o-B>&D2^pGYaz}==+b1bzt1aeAjjH_4|;0jwgA>Q>zM$LSXo~Jc?9|Zbv49H zq%KVwu$}(P)>_RnFlbfKstQQq5dY(3^-Qmk;e&jrfRP1n6mWJhbkAAfx{!a%T1ST_ z_w&@U8I!E0j6+}d=1vm0tOPK=$EX!}ID1@x6dePG*8wQG7Qyrp8(;>jG6MP)>55(g zsR{4*N2wmT__2eVRzT_oSDGYj<)@~+CyZ%EoS6aBBb^KuDR40oqI_dSGjcE{Z2N1+ zKw7&tp^nNcZ^jOyfoMhAWD@A+Ep9g%OSXzQqtv@MDUzC%k4SlM0pEw)e+pJ)%#EC6 zxrw}XW1OY^zsA|dZb1YF~)JE&v9YjKbyH6!R_?d{jTlGGu>)>c{6^VwM&bmzcX{|9FT z0zvgwM58vMIPk>O>gKR&zpdz#W;0e;Y+mZ6=)86JLacl5*sG~0d4)aUSGrkd> zQNj+OX{&dyS$r(Imeyv-4zV( z{=c+_a?FAr>l;g1P=-kA&K7)X|A`1hIXMB5g`pf?F1qleit5zR!bm-yQU6uuXG5NOVJ5U zb$aqRHt^dK4P@nYC~*=2$ucU}Tb~^+A2*g~36{lMB`-EU?enrgc1xfNJkZoPKQw>} zrwMfuz~z=B*AIC?6oY!s2GZinVnalIdO6J z{MxBH_T2FEhrJ{l5X0?fx<5pjEQx<=qALjHdbAIvK(Jr&$xsxi8XtVdC0=CY!^&O? zYMdyrTp&*H-+A)tsK_o|Gx?3X+TOQtwQ=t=fOxD7pfBGRzFoN^`{#YXOS120bW4)hnvuugZgO=eGLUBf4B*YG0~@w4z@n^ryKmy zEZtBi2J8}j^l>t9JOD{Y{#!~g^o}(~w!w@;4XH>Fu!aOj1KytS4tYct4VICGiwO>_ z`y>S@g|XBzHm<~)g8zh=I!_qcw86+lGW$sOa{M}LUQtm|S()_}ub1$NGCAi1`;Pg>vJ6``N@RI3P6`fNs;=&&ld({x1@rVUURa*H@tb7MUnFjnQuGE3P zdw7sU#P`C>zcUjBt%CQ4+iyZK{ky3Y#nkdot6IdEkk3CMZQxMjqpV0>D~~-)N-mBu zgG!M}nQNd{?Wdqs3mXEHPis6wcG3805Gjoxax`n z&xMe^^#XkONK8jDrZLyigPx4(Nwp=@_m+I=Uw;_czg&j^f>qkqr-Vh&d6EZ$g6nBO z%PndM1{&U@pJc(%l)~JLKigAIut}A9@9r#5cT+zHU<0=)lhknY=Sh-OdmAYa!X$i2 zxj+TZx?c?PzHF};L_j_eE+64=3_M~FnBL{VnQU<&(wzm*W!;I`Gx}|RmvRup+cA5k z99PMu9KHnkqG{{M@u-X&9+Tv{>1MzG8g+mA|10V)f%x1EbJ2++g?)p!P!8^9mrJ{$#?*t8pxm!R5@>8TJS6(WU@K>4T)?fbEU%#aN7q>vRV@! z^8=F3z-bI9qF%;40!|yxh;o5!xV9h*u(Z){nDHIP=ra@fq>2usHGK{}UGT0{=$g#K}>f zpdO3HG{Ze{tsT9Ye-aHl7gE2d{%EnxU7~6+X!FaLFGE8hW5HKBI5@B$NyKn~eWx+` z2tCjupj-9$Mv$E$L$9cSJW*iW;UZEk2Z$k+`s|RkA3tP_ewSg3U6QQfja5OY*QRfw zj>-7wd_vZvw|Ipx>a)5a>{&`t1BT&Ai)Ng8WN&N7OhkY|!P#34FdC3mg;{`l0S6?` z{8X%2?#&1nbf46Eog*k^?)}zy;HXGJmjeMD)QQxaB%R+XAnIpRB!BnuTOKzaT$x~h z=WyJyAS{ewuL$7UVso?76g@v@5TzPf_dHX)Ko*DfD7hLtOpH@Tss7atV65fXCj?@l zWG&s4iIv~&@V5lZccko>MC@AS-k?phlc^6?4j{qOoQHeaGU?gUn^C!q<1RsdIVP3p&x>i0;Kl3Y zn{Olit#>X&rKP259d>C-qpwQeH$Vdso_C;0@F@r^P-4T1GV4ERV4#9$ z!pS(3RKpC8L^X+i8X25lrGEab7D(Zddr*-?_I8=MF#QjV@W1TrnTDsMNOhkACo5}3 zyd_wBH;#1w)~eV-M*O8A;=tGoj{dAHb?i_dywnALd<7c|U231g4Mo zO@VmbrEbY&VPT=3eYHaM3(BW@|5%fFToM2VL~-uFuy1&vpnj;bjs|iOW92THro$(p*1Dl^Pyg%wtJ{Q22MgS?|AB~3K8UwLWD5sg| zLb>t?rvEt@bO*)jfcbl55}h}HaAqmk&ZD}G($=nQ!8b5R#Xb`12w3PxKcXC{lo==} zz8rwiP*Bi4!&6c`y={V{p!jhziid*Y#=-yV%>vhnA=1|QUQUZkL-h<&xh|Q@1DpE7 z11L<0;H|c&zo+9XcC`j}BSoYrD9$B9iJ9VdwXC0mN0a0t)ukS)&daaG#UaKw~s7wra$Mm=>V{oH0 zKSXsWy6?@y5h@Cq^Pf^^UI=VYWv)sq?@To1QFFR`vl)vo#q$TxY)2x`sSLVWBNoFo zXqr6d^R4E~CA?an1U{BsNHH3gHukJ(3chJ6v$A`|OLBE^st}C#NQuv*T*74?Rmng2 ze3((yKqqE=0k2%_=em{PvAK}@WMdXNu-O>7G{8>DDyOoZ_^B3sqVfEj&6^9%trb~M z#3?A=)~(I?ptl>(bT=9KhKVQTs#&a@taVpyg<)VT{2q1${TJOx>0$FX=$d1PF$n|c z&WZ~Z6bc%{3|ZQY{sg_DrtK;NKlPZ5jdGZsJSOeN@>mj{;rNX!PAVeH-tRq0E@a(@ zrd1Xd+VHtsL_@VlFYBf5TjSvMJ29&aSktRghHs=Vt`5Ro7?b=CP{>>e;`6|kODs?M zbS`*Tlyv^iJdw?{f=FzKQX#X=xCUZ3BQ$&3X^iV-quphPe{0H^@h^`x+&EBLs7gWc znQN_%@&D*hHD(yTTa(@W$_%*}*(yA?)6+FYswHP_cVKqaFr}t8y zl>Eq`PmXV=N4pLW{bWYlrtAI^pMP%}{j&POuT(w?nd@&$euekIcs(Sv7h_ig zdiV(vl02gC7B!4~$TLdl`01ma%Gx^Ck60k}k??Hnma&8oVWTr8N;=8qeA`TvWG7mZQ=dUu^dM)J7Q3gSwn_6hzQJFTnId`yi^hz0P& zQ-@EGSRJo>s(DHbCyr53bjTuc#N~q4t+dHYhP8p8y|xw&hk5H;^I)E+?(_pl)`@UR zlHK*{&j=cAtNRj3>1&S+1;675mAoVp5{V#OsFdsz`uO`fAD1ONIMJ~c%Lq0)B^t&m_i<|awqGSiO>H6 DzffS> literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_104.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_104.txt new file mode 100644 index 00000000..8f19ae5d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_104.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,2] [3,0,2,0,3,2] +[1,1,0,2,1,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.png new file mode 100644 index 0000000000000000000000000000000000000000..fb40d23ae6978470e79c4fe4abf5253dbc6462bd GIT binary patch literal 15799 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.txt new file mode 100644 index 00000000..44b88b41 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_105.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,2] [3,0,2,0,3,2] +[1,1,1,2,2,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_106.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_106.png new file mode 100644 index 0000000000000000000000000000000000000000..1331742f5b984fa99449e9f9b65273c1b6ac735d GIT binary patch literal 15761 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

<5YkElKFj!=i5EzBNoTdJj{_Q&=8cr`# z6D$LY4xH6|>P(rD8&F54Ms`>A)4vHw;bJKbXy{RFz!nbCQjP2!xV4aIafPxg$to7} zdhEd^%8|dL?FrpgHqHiG(wBY@n?({ z3s*dfN0=aE|F;Uz5DwtrO7i?H-)?0PlRsB*adIJvap!bHfQFQU1GXG$Jojzt4i@I; z0rjn7M^75+jFE!)P9KdQa!=-ShgKew=K(ln@-gR;p-D!!xI0_-W6NneGQ{96(TJf5 znxN-v4JK-{G)KYI-=%t93%EM;e(q&Y!0<5gv#l+Mf`Q%xR!&6@Ka>%9;4kk6>E$G@ zEX0cq?Xq%f8W+>^=`4E%kRBg zU0p@0LSwS$s!$Kzpjo!U!uOxkL8#%s;>o2}cmOf!S5;7xE@2nF6~fB0TA=Wh=r%We zL)NKe=%$9rqQI&aevqIu!PtfOww4mF;~sd-AZ+=4G#`Gys#pVQTR2L1`FKDPWkizB z&9b%I9V>m!_nyezX6(v&vf23vX}h5zfwA_s?DG8LyW+A*B@xr{Z&33Hz$@tf9l#C0 z7Jy@JU~p$kwvF~Nix1_wvyB+tq>b|>k_=)|l>tD##Kl++Oi7ESR=C8e{L$eW-=bO( z+UTg@7Q+oM2VX@tuth73RT*fpz*_&Tmr&k!aLrALkSnVO9DpmUJ*?8(c)`dhzPL7K4!#h(APvrwtKS=`?Y;^FH3 zHi&t>UO;n12j$=ImTCIylv6Jvlqz1qSSvd;Iz0V_3?qRIs6qw{HU2D>`qC0QuynQn z)wLM<5WVxqM%3!D*IxjSYXVe{GI9PsrciHXEe0OL161eA?q594rc~cey7sD!hzBQc zy5$y010Kr9W%%xKRGBv#F=Ugf?B>N^>?o1IJsp9jCL@NsWFO)ntA8JZ?r{(tpCjJj zRKVpLCWjD@?kdSw8qDFQtWP%h&UM5JI{h_++tljLK_V#eo+vW;rbwvoIl3Jr0!uu> z$&;Py6zp6a_#5OT&0d%jP;0JopunmX=UB9ko?dPkNgm~rbp1kk!ninR_85RH-z}b; z9Bzk_a}8!VPMM%$o;0rDta;UFQ|a1-H3E`$Qqtl*{KLYQvU`)nm=2M%>U&G`w)bC= z{ec{i3=>#~1Ox;ICM|J@9KrD9)KoH1L1BLU<0lJK1;hizU>fj|rviFPedEpOPdzDV zX@rEo&kiEbuo0)@lZcXF)9b2b3rMUvBAexjXSlnzC9lm5c}(BcX?+5mz?tlSL#DYrjvc(21oL2p(}-b zpQy@aTy{(=V=`w>UUKl^RY6N6c4KB5wc?+_sH>|Rv#98u_#i?$|EoEuzd4#&X_lP2 zH_q4AHj?VD%_mZ3cnnhaPsCnaxtW@-~58 zC8FUV&^$IFU3RM##>F4q`_zQgIrwj%>l`efh;5CZL6Uyiv2ezw*6r;|aoWee7PaA~ zAX$CLU~<%Qu6^XyjbA$-K{UZC0jFM^IdAwj9SA{58~R-`kF$Q1kq;Ouc6PeKzP|2)i!5IeG~HjJv`Mg%n6$8^YG&!L z)`kYVYqEriKU(P3C%GaRPtYtmcHptaZD(R+R8b{Eu`?95|2yPiYP>Ljo-)8;p@Ld| z)OuVrSo79CcW(poEoi=+yBs4W!;y;fx7BqUFA)%)R7C#lTNaYQiG&&besrh6F7xWo zV8-grT{8;#lq#HTWZPcC9CtZNf9QUQN$y;ERp1*PzJFdA$vdD`iWU?ED7nwE1f`q0 zhja0qBHm_vQNp#KTJEW|v9h}Nt(*#<(3B$P#!klX{qJVMn%S?e{s!dPz-~&x++Uep zd#`FCRKocoeafS=gS3vc+g~#rX%_F=h3 zT^|-cM#zyyGg&q?6BiT|xEgd*>>qodtCf$S!gt%e)+a=g4C6p1Wr`2(-4@FgHM*>P z-ryzVY`bR&HEM5fUv+)qN038Yb+R*hE{pzYJZ*}f<4gK^fX2neRrQkN@7UE8U_5z# z6gvwnN8WAe08Jk#w*9dQlS3(y@nRbz`lr69r>BL5EKSmlbCy+3N*gYfBO%8~w|#PQ zQein%Sy?F`6bGCFI;#JjI>Djk-4?j(k-{kKmz^0PkoFqnh?lwO3Lv{sqcbJRdY$@D z&j{ju5HW4;IyMCkyBkhYSzr~?(o-SKs%Fv(kBdi!0IM4XYW$KTizCS~zqcb+A##gQ z3@853dbVwDZK(@Wh+n3w`}n zn#X7I$dh7=yuVkUW|8L60*Q7%N?g1_g%#UF+MF|7ZS(sY!-*f&am<^pD~mMkk}0_Q zk~ebFt;dIlUoc?dE7gJUsSyx2DYB4<7*T#ipBDt@sm1@iXm01DRWL(L;1a&!IJT=Z zbUCmKxZnIPnIdN=t57+%_)$SNwa?UJn^-UxJw>O#h9_+OYAFp-{LfRW<ppA2sVdJI5KtB_+?LLi)pYvL+mRfDA0el>z1iCY&s~90}>Yt%M>UF%mHX z0QCsYD&XX#ReCnxV>@yhs?qZB-ch<@u7s~e#mg;w^?s0Oe`0JKvlrK1dw6378J{GkF zfR)ju?Y0>xr$eAUd%g)Z?_@bv=zR-)*J^4>oS^Zp=b%9<~OS&rObwW?=WduCth737Mb8S|H$Uv}yf0}TwXL+}2 zX|NoT-4asu3`QO0-qO(#QcWND!NJ#8Py2KI&7^e|J_bp{*aT|~L12Rr-`S%{`FP^% zDF7glRz36|B(S;jGXk!NiapN4{o?CreK`sLg#iiG{!<1j;z&@j?Dknw0Ye_{etL2k zl9Em9SCbHfnwlV;#j{B?^55>~wC5=&c{DNd^*Zem9QU4f$jq#CUgKn9L~dGbM9@n! znkfMII>2@W5o(~YG2Dv(v?=`5hp~aRI_|q%Lq0q7lF&@+&biCXo=cMkFnna%G5 zeiaq>gaQ=|fT>^~n3TO)TVenTR8nJ51uAkgxz!KmFfYtvhhXC$JdG3q{@E|U4sC61 zl@t_$XIKr)&CRW?!z)j+dSrkB{;{_V``69v+4Z_g+Mx8w@}KksLBQKD8EQZ=dIan- zsG=-4G0=GVDcPu2IY*jzHA&xG98ZS8GsR3Mh^>2OP(?>{e@Tq`=KefnEgE}p-B!1H}h zQSvsc@r482aeXb9wjzCL#(QWQHOV2D)*gml{6HV`(%Q{2w7q3-eNe%=SQ0Vzi_UDz zyPxnb{I&(V+CWOwb8n?5OL`xm(hhU7s3JKJ`gbJNiGM=@5#oQ_MZxxq~` zo8aHHIV=Imm{ArA2w?wCTu_}=j_^N~X9-b_kk#$!={xrqcReIMyWY89Fk%3{0_8*i zWj)VZW?|>IDd(K`gI-MZhlt7+pT|9^V8d^&>$<3lC%}S4e+5HAq7{hd=jY9ilYx7L z6(Z`rA9{1yGz39+)@L+KNVm(LK-*B}ha7$B6`SaH0o#e}$<5eF)yvglUCGzay!Tc# zd(LVc7dpIKinOYxLC@p*Z2KH?fQ)?ps(&Xer2zN;Ibl8J|36AtN`~@bhmHQ&=6^CW zGRw*3ao@ks7@_d))2B}r758QHTC_A(w@iS9Eca=v!jGG^Rqe`Ab>k}_k%#@KC<}-M z$a*t$|`H?>!G+6t_IsWAtpu!P*oX8X67;g zJ)KLVWc8hPUS8Vu_6?KqC5a*I7zRo7kRReArtR7W#1GDSHoZ-fl>#AOT*f%|$gNOH zZr6ylEt{&*as=0ShAgxaAV|na7~IU%`96v#CS?JZRx%vy0o|KLH5`XfGYO$;o*pt_ zhTrMbRgHYe!8LQvUkh;;lgGiP)%s=l-UapMctD+$1BiLvID;DpJw-0)*|kM&K|FH% znPo`x_rxdwm)+6t*5jQhV4ru>-69bK=qS%QQ?0k7NT@oDLbB1egubS3f=f)bg`47G z{)d~H$`l@k5kb$e{}9W#skWgkeQxIow)ez9+lXOYbN4?m8cqyQXFj|f9+g|jR_7L) zK!CPVF4A0=Fihj=en=eHCdvU+U`daD1+K>rdM)^bll7IwyMY2Fj4Vcz|3K+c|5YZ- zjn8a~64udLuFy+Rx~Rz_x`K@Xqau4YSkqQle1R_=94a^(SkGjsC546a6ha9uu6x@B ze`H$aRCz;AVX!F-Z|lPcvH9NsXjMZJ!QWv1kA*3eltxUS@)8PwO;-n4)zl~0OVhGJ z6QlR3F(!tb@c<5H0m2zjSHu}z@sPnkCcFIhe5Sj(1e6kpx^+EphkHDl)KUUTZYm={ z4Uz5$P(uXt7jvql*ODJh?fH4@Lri6B;fMIj*5qpdyTwRJ`3@8ySv&Q;kM8YC0B-}o zW`L2jhv1~pq{5UecHaM{&GLsPQSn+@T6gAaUDrqG!DzrNgSv8N*k0>LSGYT2#zalO z*}Z+P#`Cw!e;Kc~Z!Sszvb@itu#k{ks-+;On*7H?1c4lI$2t-G*boq26aZFeFpqw@ zrY8X+_^b5oN%GPAnwlCwk-N-A!$8rr^z>De`qu>$WXHAue@B(<03;Y7s$qw?dU1XK zNLNV4i5h##0LsG+r{U-4pQi3r%041aow&OHeETl!%(FFaG(XGV)$mr@$ zd{jV{O{^OfC|nvU))^fc;h}xWhD<8Rx|`6A-`aq5ZaTRnU@aEZoUzoc@-#FN2QuP5 zj_hJ}HNlE)^N=tka+zCZFBxBGJq;Duo(~t7u@XxUZDp$_lA3A(ya@;aj|ae21jkSrC=A@UU~`os2>fWNNC`7@6f&X#4##(Kzwt^t!< zEW84EK_M)aGrH)(SE&!Z{dbct1SEtXLIoHDmMY@8v)F?;-Y?Ov>0Na>Mu;|JL|Ofic>~B*3v7UI9e5A= zMi=pXy(knRI+xNd2=BL~hLL;*JiizqPH*6*A_DM(MJaX9&R5(NZwYO(IL?5Qb}rqz z>Tll^DOpu`dm}wyl7^LUR)D|)Xo?|#D1%a!u`8Pk2Op$8*@X-D6ni)`w;o!hy z@1)k^eYC^sEbbjhNts-yTv}Z%gYQwV+k+~uCK(N<7D#s-2Uh0hHHZ?z!_&+^rlbJh z1ps&Wt)xf={4yGlYd;r$p;-Pf4}-F4qvvmHY95Y==GHT6X@Aj=JW*5Z0F++`79V4E z`(fD@D-`~p&$dBQUpOtN;Jybgk!0}BEUALgOQBlNy!jyu2$b(G%@>xl!)z#ztLq5sizc4_5n!qpgDN4-# zLj(V4*&kf4T}J2L7}}pN?)hsjLG;qQtPJ5`E{1;-5Qc(!h)Cb^jz%lD16Tjoe~}Xg zf%`!s1yCE-q2b#Xs2m_Ro$jn2>d9g+GQVh{_5+}L0ek2K+aEmC(=v3*zeLDrUaTZk z5bMP(Ba*Dj_p}XM;X~;oNc!B*_dQ0pAABUjjfyTYIl-$s|F8*e(Ya48j^URk&z%%A zmrAqn4+#lq%)W=PQoO`e;ZFb*TzPsniWdm8bnziy-J&fp%r6U;=GcoU|(Ag zx{CseNZ<|JiQ9D=J3H?xhQZ-*p9WiNC{nz7-8C^43BmeAX4fg{qv-u(Y;0_LIy3Hc z`CW|-YT|@-Jn;0XD>iK1jjGdeX+FzG*H%HiC|jqSN`hd0&5ZcB}lyDrLHa#6f ze!<)TRf3wDdNbS?Ro6o$)_Q5b>M`o->qU^TIrk529@&bNVgLrXbP#Rm1SRj0RjaM9 zefs!)AJF_hy7uOhp?<}BAd21E-;wHqS_;y3Ut&G5kE6dt)A9-JMuaUc(KHgOsq<15 z*Zf=mP{Pb^H1e0L_?HOZr)ZwkC@HcON6d@$u*Am%k9t-9o1I3*P(Ez~zfQU|Ey-ve z0SE<|o#Q{GJ=07j|E}gZZuKRxBt!IjIVC-^Oe7r|Dp2hFFLF$RUET7AIH&H%Uq9$T zix(mdxI|IM&^f)!=r7F}j-fs0z;~iX*x>D&{X& zCZd0(Q&n+kWA5;Lr?RDa@())I5dQ9A`%~(l2a*rI6L9>C#Wy$pYmdwx04m6({lUj3 zzq~io`#$UY7B9cA7FA8;XN|t}EGGQ3;|gSGXe;PUxM*niuS8>_y{38txq|j6{JRl4 zTDsJ$GBh-0hCg4d-2*;iyCx5Gx48QMvO5lw=W&+Q47s!z{rKQU@M>o`VX=*>Tc^Ho zqDc1rci&DA2VCdYCDXP-+cuSYZlR;ydLtY?UVUt{SVZkwLU&s5R<1*p4-PBQJ)Iga zq$8%LIb52HoQ<5QK6*Ukpmo{~GHPF+2xz~8mLF|ecHPCW-^kW?XKkQXQ^e^01M|W4 z)9J0%EZ+`l;-2<7y*kg`ZSmW{4&159#U&ujWNeR$$cx-N{Si5P_6<~4VB5t_)3Dk7 zqlLYlAmL!5GhWQi@g#MF%t7ktxz^FT2K}aq;SKW}XPm#5&Cepv$kEU`vK)Rb|E%d0 zIQE9nk$iKTZEE5pguS6lTO+X*6XuWnhG_9@*qY0(QVt3dkv@4={ksR7kx%9%eIxwo z%nHjBqVB*W&GsUC8e_Vgv_G!(LFHmUPhjC}YXlC+`jDQ&$8jHkQ zKuIkyY?e-4bZur64xu;OxKUpO!f_(WCGa-F>9K?VtjJ&s95d*wt>y~aYta}^uar7r zVEBUOGoSkdJL8d@rYjJvc2g`x-PR5_+i9&k<8*olg60vM6iuvOrf*7ia=+dP?~Ua{ zL+eIgI{?P`zp=8ALY?*~OC7?qo~$$d*+O z^HwpGbo}SfvJ|6x;s-qKeTpbZg~H|OJ2I( z*wb>(p3$DKUu>;*TB2*GBe!uH{hQFx)}Fa2@h=>LeiMFpX8xY|I&vDNsbvdBA_AJi zEO=7czYaLi!BB^+xxgt^X}eAFz^u%9I{v+L*y@@Ksba!M)ZsK|9@O|p88 o9e|FOi~(G`{C^5sr(zSb#?NgfMhJngdC{IqDn2O|f93bT0GQaR+W-In literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_107.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_107.txt new file mode 100644 index 00000000..9d51cbba --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_107.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,2] [3,1,2,2,4,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_108.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_108.png new file mode 100644 index 0000000000000000000000000000000000000000..bad38b1980495781acadeb32e224726655946bd8 GIT binary patch literal 13966 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_109.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_109.txt new file mode 100644 index 00000000..72311f1c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_109.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,2,2,4,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.png new file mode 100644 index 0000000000000000000000000000000000000000..0c2b80bb84381debbaac60f744023b1b7725a19e GIT binary patch literal 20986 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.txt new file mode 100644 index 00000000..4f15e228 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_11.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,1,2,2,2] [2,1,1,1,2,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_110.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_110.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf800f46b6ad3c04baa53e3d71fd2e3b9d2085e GIT binary patch literal 16747 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_111.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_111.txt new file mode 100644 index 00000000..2bf6b359 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_111.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.png new file mode 100644 index 0000000000000000000000000000000000000000..ca2647e7376d9d15151718223a7fc2c39103d589 GIT binary patch literal 14814 zcmeIZXIN89*e)DIL6Nd`)9a>%-W8+>3IfulNS7iZp@URI6%i0n5JK+=NEb{5M4EsI zp$k$%myUpx&`UTgal3V2@AvCF=lnYRM=maA%{(*n%+v0B){3~Jtx7@0NCpCdDAaD> z(gT5ry70gAXMmRB8miAAkaWJMA*lvPneG~~>Qxa+rSN~O!!lT+>)-=-z$7i51!8`dM3nenVIWH||X)znw4X{b>z ziCWE>3!@`#b@p5;W)qED|hE|8b(;Ba#4`c8f0)E-WD zZ#)uMRQ7Xq3txpc&0;RroiQr~i2iE1T|GB(XaHO(_DbJdZAUDv~ z)*c!fdPOWKB*enXnm8fj^Qb3(`UScwl%8g$4BP9c=zm$fvyJW4+iIF;3b(5Oe$cYG zvsmwVUGHhb^6lN_aGe<3n%$}D(OgBp!*Ujeqrd@`|13KC`}#Uh3TkYvr?*$XXh4d^ z`Z|2;3GMjk=*x~I+UY2S+|~-nQzv*;99?9 z7{{NFFf4XEd^IaL70LLVbNfFO@FEzl1^)b_>`>gx)3alz&yYl{Qw zX|zElTP1}I4aRVVpyR&Y+Hqlo($RT zd+3jAW7YPUmErP|Kg%uZi*Z7;mbKnOWBlJI>zSM+YAysM3BkC2Nd0=d`taB>ixjr* z?dRHf{ie2*=*AT9o}v;fZXR2jFGY(1uc{o=GLnn-US5@k zCCWmIsy95DZ>cKfoE}X#5l3z;edhGyxLdln_xbas?mv95P_s$vq-l@>O1TI=nrWF* zWf+1<$z!|I`$+eK{JrxIR>$ZvtOLM)8}+EDD$;d}cWz|iG>i8xa*Q4?k;dqs_-j{H zSBH?AJXguZIED30Rm=N$dqen&{~VktA6~hlBpTS<5#xY8JoGjAq5K`NK-pSIhwEb( zW!h!GD*`oCySu(34cm(Kd-~8yd11=$}V8yBPsgZk`Vdu(_b{n6;2Qi5~3ITz1V>2^E zFN^Lb8yj0E)676{pt8My<&2{QgW;%lw$lw*Tg3>Zg^G2rmn}DPfoW=gY)<~68}^3$ z_WaJ>4H-}&Wg0uOgHB*QsAfyzz$Y=B(fGERdrM0T8s<_x_O0F?PO8FccEGRT3}O3r z!9A>Jm;457uVN5_O3#G7tR9wqxOYR|_pcsRp=< z^oQu=E@KOpS9WArU^KO~mHVOa9jc6skLn0p4`Z60hbUuzumCyMB&@@TosOQF`3v>9 z(Q$L$VR+B$`@!f#xkBo23P~lOIo_T{lkp9@gz z#!#fKbg7k;$)&F-Q>`H*rhJ3I3I_66rIoBQhCUO03G$}LS&JC;2ugttQIksxC?~L) z;e3>Mq~()A1s#cO3C${hi`@+VL2G3-u)rDlP8%e*VFPc`zH&B>A(bejQnKX_!F_nY zVTYHoZYDaiQ@+y*IS=$G-*25i9G)OwDm8;CRZK6!LyF^7&Rwy4^Q>K8lj>qX~N`9+${5Gt-Y~ec}g^aSSD<*VPZ0rfM+U~`^ zZV3yt!@5a+;zbO84oZyXBOxK-Crb9BwWV$p^kT~kiw?}_OHqY+hz>(E8VBZc$2-rl zre^Akeq9~R-R2aGh{j?2q@QAY`RE;xucS*wKS4rCvaS|yg^IO`M7|DMVh$aXcYKLv zT&ig1LePXBmf9zXXz~Z@nx7~wK4jiCnbjQ945tZ8Ddla4QIz^y8*fH&d}EX0X}X(r zwG;B(%h(#w#JId8bp9eX(sHgOXephUCt&C=#8r%SXe?O3eZTZgg2*$$z}QM$j)&SvdE_1$}c)%`3r1Iu4lb{r~Y6cifYzI|I; z>sZ=CR_)ot{35F#zqf?5ZS;c0-G?0OT`a7)CXcL^j^4)8*~Z0)(uC;|ALW{ap>_lU zF+e6EAz@=<1C=TLNRa_#A+(1_m~AdIqO#eVyFrZPq7&+MJ16@tzk*1^0Y?yOCnq|< zXmvCDRXYBu>MA~& zd=&V^x%sI<;P{!DDn!PMg7$QLe0*!moqcnMC_|cW&AmygVYAxsTIrMVJEqoOorUGM zm}0?xyJ9%nGk3uWh0zkl;Cx}LD2`+amv`ba&YxyQohRaWi_7!7h&nbk$hqq>U9 zrH>o0m01TJt{NYgl$2DOmVKyPB9_5|5L%H!KLUKpYA&0cu!E54oBaK1Lg-#uSplk= zUma<{0_(hicMi1rtQCq@>ki5+9eiE2-i+uS9~~Xd&dzStB^aBSm>3%;Cnqm?%A9+x z%+{Aen(U<4C1q0C`)OuxrM`SOuRfDJ(<$co`-S&tQ^@;1Qm8M%g4SlU-G)1*MO_{LokI<57x&%p<+Y*Py8#Krh*2`W)cUa}MN!V$~Z3@VH+ zD2_GT@QZ@y0ueZk+D1!q5W!-&Uy5$cs*9;Vz+2EGG`RH-#7=kmS4<5MtM-To?%&>w zdG>7oRbD_O9}ucyHHdyp8VpW5Sf0C+6^j1Uo4zLfx$kgzk652511|dVlA%>9dV%?r zeF-IsNlwAaMX;3y=|{53psa3jmVN-@fYi+WsynUsO*dDVE>xHU%T&42O!iFNB!E+R zA;OSag{H9~76jx~>~8~bj}F8N_IIA2HNO2J{RWKnncWkbWGm!^iw;YW;R(dde#1tw zQP?BWa_aV@bDz4%Jr|musuRhG=L z%Gehas_vMH&+66lGslca|kMow?jI)u84hvbqWP$O0lQjIsI{D9pWYn zdpRl7C~jJX#agIFdC*c9v8E(nezFsvYr5bBtdl$a~M=EE9_)t;0u%@$S(b7-BkYRua48ZnwcUk5AAD-e)(xhA^)4IKD1AI;MdN@k= zwF><&n4KuWpuo8`JSkn9jR{&w+n-UekUQxanAW&Z>*|?xa%hs-&R>jXoUgb{l675L z+QiK4V#6-n-hO#wqv8Y2LF80=N751yc?GR^O~N&+ggzGj;hGUN`R5FRI?8uwcVZov zA+-rqA?u@<+Vjh4(U7Uvnss*%25~XFXzTnz){`;as`duSP8)~=7TvY3#inQl)mh$Lil2cGPJ3H&nYh1i-LEg}Q^UI7>*%tS?AqCIq-~re@F-**p zeVfzGSNrxam2)Xs0o)~Xc^@Ai{niVK%o){sp#Tzqq4|)vmYJ(Q+w}zvI#hBkqQqJ?qlQojWFnwH($v@s*Uzst-JY>FYNphAW^@Ch zCu~KzrIzBD0yg=CwiRmhGgXuerZ@c5!U#x8qmDS@g zziBku&I-ijrji$PCTgSRv^maUJu+4sCOn$nOL1z-&qWfxVeRv^awdz9i(lC3ZYn7h z80jbQ6m5d%tR& zWYX;gNu@>drCmVw?(-QfZ=mGQ3FB}40zrxg&J`Sg#Wd&qd83$l3)6^OIo*K;?Pdwo z)M&LG3=9mHTN?3L)VOm8L1Jos*27q>Kl@>HtC6(=0!H;u94x${9Fe9kGN)Kkiy~wbnNzwG)y|O`v&5J55f^rWx9&yO| zZr{!@){U-+j*hkqOU}({2xm_jGw1k$D`Ge(Rz6d)wuvy#haD-%%l7;4u0{1!$Rn=r zPhynE0EfJFHo#x6Q(eEFexTEZTNTfezdzn?$t7BvEG_wQMlJ&fJpGE*DlYLFIUiE zl5XgRthCB&8(uT8_jKaWu(P$bwYIjtfB)scGMD*~Q9hvm$vDGx^utz>^-q0#u<9`w z=cnPu@@@bGK%_zy77PUYFbw8mCNq||)=RG2-{lG68RKj`Iy4Go^=W=RUGsIX@ieF| zqF-$pyDh5&1c#I>nC}JmFq?lhoErMi6-xR9jx4k6=;2l`1NLfB?Jc97qo^J@^_Ouz zvN@u%^6J6(C7RRC%{O)I@)_Bdx(0K}l89xl2ovEx38 z%(zRB3){tG#O zTxiIp1In?M2>!gjL!G-`yn!@7WY`$r%zEx4h5Q^G{37M(nT4@knilxgi^n@`mR`BJ zxw;a2EO$j{Bxw~qt5}BLK9v&8>V+nov}KQePboeBC8#RpA{#GIF@*P2&8E@@P-s;4 zkV~x48;q$TXp%H!TDoMyI4XZG=yJP9lc zp4zR9FA!Rl*ttu8wL*>6{PBIw*tv^-wK^FG5c+zs@09&&wK3k5zX(iN@M30#t+o6N zVL$GShR=GNApvuOdC7;WnJXN-h7Fb=8AQ z`b`o~UmB9}YhC3Dt1^*FCF#(RwXozL zA=wl7V`-IsD6O=C=z{Is*N(M*B+6BE6C ze6(Cp^4TaGV^^f&;-e?B9^v6Z8{_L0Ti7=_&O?z6!CSn|b8~ZVn^#u_;lXIOH41^xVkKQ@zr#5pQNM8zzsN|kfx=h8(XV-<2*#>=}n@lX=umz!i~2dqEnt3 zIlg{w`1;eAU{CURDFp>KL0nBu&HVhl;>-%`xDF}cg5zQ)IW{+%0Sab!6|s`gCGuJ3 z=}UPsHeOdK6l{F#3D%fWE>m2Y4orR2LpdFfj%+?kr~JEME=;JaI)U6R9(1VKH!?DE ztTYXFeDlWf65(ihhbk=m_m6lHC##=e%4O%k8cwdRq*O@8=PD?SpqtQ7!{F_!fMgX@ z@i$(OSw*=j$X=Hhf(V@f`}N>(xc&Wia<1HlhK7<-Qp@L8w%>|ogl7D0vXSC~mBZhD zE0;Y9foQ9|nHan>5#jQ)RK8nol-JYT^S76T(i<*$5LuSioz8dkx=V>Z86Jm(1O#ln zEBM z>)+2julUp8y1-1|D&&YSH&B9C(xh=I8vlrcB6BD^CI9-m0!21;z?goyF#`an`H99J zJthq0Qyp@@h5bS`o*lT9jKnmm|Eze|pI9`nmLKc#_NfH4v1T_I>#@Yc^T6+2$B z^wF|XduKLHe~<7S%mCNcDN}&}~ z*=-w&9?uvB6JnHDSOO|aKyygdpMAc@`T5Ug-LQmH_A|+)G0BP@7_sv|omi2gMPXd3qXOCE zIKgSCt^A(7^{GZU_7&wX`!Q(gSg+vW;Q?sftppEodx<1AKg>4v@C&W9Edo0ZBtVE2az4fo&Gwx;Sj&?6GCrc}7MygcGb`<^vRsvPGv@ zh10C<6V;&YDW&quTYXO4K zHL@47?4-d;mxq^mus1VvA7CgyIHJlE$-bDF3**js83y;9k@5KY6x|V}m1!N@GWq`M zRVgXeqs2ny8I7@|sByFsf?=2x0!;=wRQsic_|o z3=zdBQcq##rPa&P$xfA~6fV<)gM+4Jw3WC0jgm>JSnoVhjbSbNQ=lXBbZO}+^!$Vd z&ng6w)16NYz~LTYVEryY-15Qwq-dpFy#b0gvhdHrywV>O?Uu{49A^tl%NPgL1pt@= zTkF{wIley z=~f9Upb#_{H4&jPElV7pNZrkfHzshU5-|j>wB?Q-E1oN@90pp5i6C#ye$%ylS}ts@UAVJlt}O)nUkMNinZrFx}!5L?s*0V0)S-3M2ibza9h!a zM#evz1-VKj5rB*LskbON33}sLWFAQV`EA{k9=RJZo;M>9264Smq=%c^9sLdUX%knE zt;=``_gX0tEDQ{rTGlbEvvo9o=pvLC+Ds zz-z4x}Rw_c#-YmkU999n{-5 z9hR0{&u8SIzPG2#q=hVl9h*%ORG0k%BccN*`lQc$E<~&zdyuK5mFhC^JyTQH^|Vl2 zsa%-&R6Bp8+_dX-Q45I7RdqaL|f z7OY8#=FrA7Y7(CO+lZt-X{x>y9;Al6VYv{(*b&8lPPq5sJZUd-^i6$VTgA_Jpr*Fl3F z-Br{d+aPHMp=Gf^{4AgWV#udYpRy%9y_FU*7?Z8>bZZRn0HoW;I6?+&29zb#aDXI~ z0nOXiPV}&uPk0E3n}o8&F30mH$9s5q0GC&xABRZ+Rz}7{ zFBMHmMKv~4aoIsAKRQ~Hjx|NwR4JxnskZPgft<_0@Sc83Ql_7rZ_NcRZxHT;%Nv?^ zv;lZ$#Pc`QBXRL#V`EJjr@%!Dq4+oiGzdJkLh@B`^X={JwY9a)A5gzRB9RppqGDp7 zmp#eMqvY|25R+HEyU^syhItS*l-3n}5Smeg<2~Q{nv#Uvqi_fIR?V_U#>&R7v&;27$DXw42 zqYAdDh}D~-(mY2P0T5wMO&{{Qu%7OsB3f$dOI>FO1lP!8d$l6hC-2>Z2^#`PF(LYd z_(PRK0TzNhfCC$OEKTU5cxK@&-e>U)U6qx#-Z!S4*B_Eoeho~15&t%bm7c!vY<9eQ zrAo?Ud0ym&6AFL=`=JGO9rX#$45t2aCW4qp=vUd}d2{fjCl>&t24bb$2Z;Wi`+DvT zWd++m0ta5fyaId&Q{jd#fVKU78u4-Qw)GE?AAj|k*6DDcS~fHM)kl;k|AMQQ2)D@3 z*@JffKS(WK(^dY*YW9jM>LY-yE5S(i0f4~NhDM`DM@=`pK5A%agolTpd)=NCzW~X* z{|KWey-opQ;exAh>sGl5^3$PeD`4u2BIXRszzak_oTs5`^5DN>>$Eyd> z@iMwv>M~<-ZRhMc+p1F>_|(#XQUN%348Z3A;K0IZON@|)_s`{SseB)?v0wo10w9#i z8P+@3bvwovE)y(5+w-Uts4jTGlinVoTvyUXl z<3oy*ETzMx%3vj|_+81r`0f&R;?4Yp14>Ma6_;mHQB}=_ewQ6J<9GTc=IPXjhPp0E zkFUhX?||Fy($uLoZSC&vZfcFMq`%BbuHf&8GVV2B zLePwoxQ&gBBvV$rdpF`z{T!eG{xP#07)Wa8`VQ+q`R)2rIwj#LMY_02jy0${B_+j5 zub+W7fUc6PETqSt;I=Fut|DlZec13!Wu7^KsXX_(^^>s3&&}(uk^rcO^7}Ef;D2Seni@4f+`z!Vnc@33zf3QfX{1(Z)S+^Yh4}DQKw$Z>fCJ5CCIq3v z!y9nq=!YhG-iPG6|C|UJ=0i^X@r&P1Ac$CXCs*Y+jTckM;q%*NY#!NfN2%v*HPyA* zd*=7^_s}Deh;s%>{Wc?#+jdDl>)&nST(+8Vo8;5b-&Q`Fx0(ha|CdF_O7bDNQoa+7 z|7QEQ8-nen4@D)6owHwP%0drzhay%ZzG81Y^T{M-xT51n2*}thu*( zG4@HuFDGiCNax|yA-oFpxcrWVsi};doM2%+?6+W$<1*clTi@EZ=3SrE{WPVS@COgXio3x;neqdC z0pL-7VPV1Ulop_Egt2@5p>mfeSKNoDnB$Fud6;kaJe74eWqVNYe;X}&k z$QJ<`2oHHy7Yg&nJXAQ zc~q!(fIe8v^*dMkCNOuasceloD!r0NQt=CU(=v`PYr@wI*Pk{1E~z*a1o}f;0Wpyo zG=?2oJ1~O<*}ADEq=SzzWlU^!EOhLiVIF&Ro1gQq;rQliup+1O5>tx1yr4(J8G&F8 zZ|v@|t&+eXWIbSex9s5E`3DkbjaUYg(;F{=KoIg(K#%CztwA0@~}o?qx+9zA+%k`^}TmJ(Yyg|5p>n9iWI^_kl7>(lUp@< z559I5qgA@xZU!L&c9@7j+4P5#`@UW+Co^Z3=9P5qLt)Vj&Pd%wTtMRU_sxF<)coZi z*4Nnb>dE*#G3b#w*ZWPcgWWGBOop&i|G_ugYcVb#nbDC^0>nw{_ge*--ai#tZGB!Y z!AV)q@!&zxP3iUkc$APE6$DJNmg+`ojh?au8@6 z@eyKaIyisRxFdgk#rj9%wcFN6aQ#8CrN)o{joa;zU(0uWubO{t^?NUTzRvk*P@s;( z!pVbgdOj)a9&3OYIIqZk9JhWLSYWWmR$?rSnV&${Z?>A|7A8#_T zwX&l5*BL^95AeuI{&!WEgSH^AVL2jUTnxMTA*vY!I=F3xT;!~&^MyBI6kI2wQU`?* zt@sC{%Z|v7jgXTEosi9!qM#cthbc~Ob!!@@G&^yxmu_0E*PBPuO8aGXx2Dxvbh|Bk zS;%hy{T|tJiDKG6o7!0P)0|WZGpzZKk0eR@E_dH+8ivECm90Ubqjq1evBeWHv?Uh; z681Ea&^U|s)f#&6W9rry**;ANMFH79H|5SH;Mlxu~jWZd$-Xzq(7 z&wEv65Z4uTC*&CsGGdT1Y34ql^XDHRM4%g-qChz7JFiI#0$n+SIQM_H`IOBC{z?&} UdcGC-G!mqytbOaXqSfR71ycO7UjP6A literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.txt new file mode 100644 index 00000000..48adeede --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_112.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,4,2] +[0,2,0,4,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.png new file mode 100644 index 0000000000000000000000000000000000000000..a866db2fb4a033f003110416727f813d689f6627 GIT binary patch literal 14752 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 OLQ`E=Ennrqi~kGRoLPbZ literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.txt new file mode 100644 index 00000000..a7e2d201 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_113.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,3,0,2,2] [3,0,4,0,3,1] +[3,1,3,2,4,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.png new file mode 100644 index 0000000000000000000000000000000000000000..2b25854eb7f057989fc19ce0149714cea108e9d1 GIT binary patch literal 15544 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 L-+X_=^vVAMqldLX literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.txt new file mode 100644 index 00000000..9656dda5 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_114.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [3,1,2,2,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.png new file mode 100644 index 0000000000000000000000000000000000000000..c205e008e1d00f9d906b3b86068e3fe9e536d014 GIT binary patch literal 16139 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.txt new file mode 100644 index 00000000..742ec2dc --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_115.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.png new file mode 100644 index 0000000000000000000000000000000000000000..82773d9a4006274131d02df0098f22f81902de2e GIT binary patch literal 14809 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 JLdAPe{}*g^X$AlQ literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.txt new file mode 100644 index 00000000..eba8c00d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_116.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.png new file mode 100644 index 0000000000000000000000000000000000000000..c55ebb44ec95a15c45caa36f8f4e5b49d8de39e1 GIT binary patch literal 14277 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 G_4_|tqekuk literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.txt new file mode 100644 index 00000000..9b7614ad --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_117.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,3,0,3,1] [3,0,4,0,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_118.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_118.png new file mode 100644 index 0000000000000000000000000000000000000000..146b85db56323d68102afdd0a3794373a7dd24ae GIT binary patch literal 14581 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 Pq*7JXxK$wk;OYMWgPQFz literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_119.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_119.txt new file mode 100644 index 00000000..78548e75 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_119.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,2] +[1,1,1,2,2,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4e4cb4fb0de3bb47295292b0e3dff215d37739 GIT binary patch literal 15772 zcmeIZc{tQ<_%^NuWz8N!DofcD*@aMuvT+=XGB9MBdibq^07ZA|oTCy?NvM z9Wt^bt;ElXqu@zjIejM?nWE**>nitr5DQ2rN3K3!e1VA3jboxeFFiBOIZ+CIBFK89 zsw2YDJ0yT%z_ea402N z5Rfi==$rn*5RB}#{x@UrCyGXum5huzG7qxAeoWF+p(nKNfvTU(#|CLs_*!^3TZI3Af6^9&4ioN7YX>{qtY+o4_~s48n}c$5zJ%rw5CHKR3=2Xuj|YsgY6o~nKGCA|OO z=x}!N&mS4VtX;|dBO^6FD;5pd2euDpd9_-+Dgy~qw>YFhaY$)tsVz1ui;qKH0da2Q z7))j^Qi9hZ=f2r!x@oP_)WN!Z!aDh8Y3e$D5u&Xto3l$hvIbE)}=^+)<;Zrd~t&RdZX9p2E5IGD)hIY8r`bXR!oVFWGU5V7!7$wK2*E zKP?T6`sWXOm85wOb$74^6=!iO%Ce4E-bF8(M8@)&)2tt<8fT} zAB&2P!ej*CIId&FMj6zO*r`Vnq|!fu8B`5x$`7bOiUn|k&%@koR5chRwyVQ4i zt@UfaZx+xx0dH!Js!{cTB>&r(jvoSF-72jgGqP=DKGx}xh%ib9epHxBH0^(Hn zo~kgYdVMJ3Vm4e`cbtrF2uv&3yQkkoC3lF|nk>q|iJ{R^mqt-*AwJ=fx5aHjjTz>3b*?n^}814}z!-*Th83W}~TUsN&uYX-9= zFUl(_n$Pl@%`-kV3~T^At+_*2`CC?Q#}<2p-&H*@FF>B>149X%Vn#>ULsZB#m{^fg|32JFVd_2SxX zmg$SFnODAe%G5*kXsDq_Oe*ok^fiQLIy0<`XFAzOLKmGAC$@rt8mIDuQ>yrz8mCe~ z56*BCx2BP)GAIl|a6YkmgrVV=+YOCXRBt+RTT8SLc`wB(Arkj|$@zS=;1ZY8&T~GZ zLxP{mqJ!4F`hEagyQ?Fuk~}#ptES_@A08fVayNq~$uboCstk{Q1ovr&KFoj%pDNO` z;8QV@s7dByD$17emRBx$_mxZi`I4dgI)c}gZiZMpCXAKQ_hF;f&ti+JWWG~H6tc!S zY@1e@Pgi32l0Vaf1E)b9Sv6*OGa2$+2y-t24aFr`y6H(qo$fPaJiX^yI)*qZa$z;p zk}uFm0@r$ntH?&yxbd0)j(&qo3pv+83m?-nUMc0BmjB%Z#M`aio>^kU@Q&Qp zI1PTymiHxfaU<874C<39`Fh;8)E#~~p2Kpj@XV*-$6D_QkQWjY`=wyXupX zJ;t|{`yV{B&yZ9bWDX1rWTAIM`u_OzChfk-`I9gim^!L2>x zp2;&hn3$`s&WtMLY+e$LWXpA!#=4+I5tp_r-BH{(L4&5KES9*NHp$biP0!EqqY97X zU7P0-NsM7=S0jmwr1I{}5;KjAh|Jr%_$#mZtl&3=_}xeqUYz4^GYo}$G*2O3-Fe~| zWB2t!lQ0u9xk`f}&QbWYtmvehuHK58^k%Vzg*8}Ootn(2k@5*+i07AOV5)AaUYjmn zWoCmTyIAhPg{mS9+!yb9csq``DApMSaPoit{5dSzW`pUm?-z6HddMu1Uw9m*&Rhp2 zt5;1pI=#OcJf5<(mH2`ufDp1&S#r2Fx?e4n=R9P{7-U$|-H$_4A5ImN9oFZU;&dJH z1;P8l-|g>Oa`Ouaczb)Vv#Zm*;N#ekl$3OZM3mz!WF77_4W#;rRV^#}|IEZ@>K=Ah zo|ut$Vo~zh{XEjXSz23p%kFF8I?wLGfUXb`2Db#@MhTvsMWP

0H#cVzF{?C%C| zV-~cGjbS#GyMBCw$#5_8u|}Q%aSdZ3V`Jm*=5}_G8VvL~Z{PCb1v7jn>4RjEksm&M zpubVJ%b_HbIMg3zh2vlqYQZgmJs#CWTA8oRn?w@<_G+o`pQV zC7nsQ;fjA|=ldS}D-gQ?XGg~d@eO!362e&NwZP#7D?d1e(4L%sW{68+C{nR2*~MfQ z`|W*g%zskC>9UW?q!=7k-ahloy7!ft(MsR$2gG1IHzIgZ%!&3Ef_+KQ$jmI~?P^)@ zZg3UHkdK8$CkJHGZh8JKOG>+nfZ&!>Yt`8S+1-fXtfoOcc#;&OGIJv3ahGU@T)SK*FAA5Tt(XPPCLpnX4`hRk2PP^60%qO z7XRtcQ4R8=e;wd#zg9qgH^s(}A9ZzgE5~OiHq(Q4(8FW%{h0IT&wtOZtyNYzB!aDC z5H4Lg9nB=bjX$3jv}3mmlS!R+RQqsi6ccs6x&QO$&uBmRLx8Zcij%{m@^S&?1gvgH z)ow|k{l`P&U0kGu=yfg{9aN^!k*G;W@`5h>)Rb+=17l%n^)1))bB7GCr{ z!#k2c&+6&9{{a1X${wKSn|{ZNY|Ywhue`)jJ-H5Nhbz6?2L%x0XNF0DDs&bjmx^pO z3z(PNw62H6(zSCd*(?0KSlAWCNszjqU-04*YIJKy&p&PYYG?l{r#4bILT_nxo0cuW z=CRl4z`|W*W5sbK2R%JKLFuf7l$3h#N?zGWMet$J>;7>Xn3Dv*m58QI^})_)Ka*_y z^xWsGJPLcu-=-e!{*q2_@HVAhk4q0=7Rvjyve3tg6!ZR62JpN^?QqE~ct$LMo}9U! z*sFrk)8ypj;bGIXPqnq}0*Q?ZebWtG>O)C#8S4Ynpp5F;W@yi(p@Gmi(ZgqH#hm^rAX-zu|IN)`l{Zf~B}1#zYbJG!oa)(GlyQg+2y{ zEE}$FAXr@KmSlwhR+6i3+(cgpibA>Ae0zevh#SV~iP*VmGW?QH02NOl)ckO#n2?rl z!>&L0QTS?Awtu9R@dWfSBCq?If02HJPvfiBF|fawGC=`XwACvAQ3IO~bWjXJr158( z4bi7x5Z@Yi{47gubYp_NQ46x<=Vp^I8!Oe)FZW=m`^7n|Y{EVIAi&P}K!LFR+wtg; zY-`x>60@R<(CBkmZfz|}U`7PD$OZS1jZcrctys!XZ-OodOC(0(8iVs+jSE`%2w&tP zK{toUg^9u!b~{1(z834O-}Rau^r^>MJEYak%*?*3nZUTEMc>0%`fhw-$3gY6u`E7# zFG%0sVA6D}Ri(hR`qz?a*Nvn2hS#E2S3~gv6kxb$; ztpI8{0MzER;vz2sdY!`(cbQoJf+j;;5I{((Ne^8$sH${gu>~WHNPhMNExG{j(adqg zUA(B?G?fI=32nXHnf%RxS>hX(5%KE|H-3#-*$S>F#1A2Y@PvF+(kHO6-vl4S`I!~0 zqyRcw5MNA-Mz7j}ZBa0s)kRf(2RHjMN_GAcN;Bh;UUcJvc^%2MN5XgY(rw758|35DzaGWlcfyH55`(Upg063 zE>5z1ARd*W}f)KghM7J#<9H@9; zw93Yu`}I1kg@ZjgV6ptFiLAVm(g>*6j$p!IFqYh72w8C0&dC}-jaB41Z5RQg7vX!c zs2v@NOHi*2=_?4XligiyG4MTmOGjs@94_Eea;>RferudqO)?i=dWv^9zOGJgr}X_SFRHIxxcA9{Z7yD~gJy1$_hv^>N(gq-kL_2Gxy~!CERRw4PXCN*Pj_UyiAz zrDcRRAuKG+29sQ7bk;TD^K}^eb9!iv-(g#`vS0V?IDwvilb*o3242|s`}_O&ByAoc zl7{VV-vJ|8g(vWYy7C)ITt&FuOy}B>>45TjeNWfLu>K*e8NlP=rr=p@S zFxhE&ryLJCR~(}Z8_i?2-c7piFd-KOgKf7O3tq6reF`oWOs^zVoEj5;9Ep3Cv;#dp z{HtKCy7!_)XYxw5izXrDIE-D#gB9Dr;Bf?s|6Us!hB|HyG3PruEsfp8E_T{Wy{<1lC2D)qIyBw48j7?0=MbSeld$jpR z1u2+t2$kUFEN)!z`)=oBDYMxXRHU%wob$x!XY6v95F>jT%jL zt}$6@(boS~=f37;qi!esC=v(pc3eAidc!cP%aDvTGyZArqGG0n=e+ntRF)(L42%iM z&cUfqLGdE%Y4rVLM6>iB&r|DF(gA$^zDG$;>rb=E)Q?zM$>N#LzCMGMG0)Np%gCVk zUBOUd@H6+ghBtNo`t6!NM9OsQg&*apiNIt!(m;i->^7VwR=*ZT4{6P3XHSlPigJz+2peQ^^$kUZ-BBYNcmuY!fY% z#0t&N9NpP(kan0;=QO5iB0*rBR3Vr>bMM;kK|L2uSBG4U*CH(}KU);_pM{;WU4dG? zf>Z`$D)$FAqMI52aCXg^mLf37J24q;ZEat_ey#LgdQcNk-tSmyBodM+0|0aCRd7?b z9;&f6U~epyzDkVGF*s{~xjrHvi-XbF%$-5Od|_CrD2w#~S66XK$zOpBgo%lX#YJa+ zznXXK+paM&kvNT5IB4SsNpQ;aX6W)BxD-&h+8fqfvasZQ*T~IrVLzbVdEO6ee(zsO z4jkI-_L}N2BJV{^cDaT=I&E;FbU##Kz^H#we#@}5Z zGckgR&HCx8rSYbI zWI|A#hFL4+g@p{0AN*WJb1*KLxfK(^8TbUAN&E4d%Mr|iuf}_bM%~nbBiFcZ+uiqL$_eY0n$IE z$9}yzUPv)LmlDq?_u|EiyHh*Tz2Y#!$$m7hh2X`rU^{r%BxHSTfwHP?nnb?0b9(f( zf))zPd|#*C@|Ys(QXaYQG8X|a zR{r$Z{cn0o%@gB6Rh@W+&>6qk9!&hzn2py$$oBg|%xhNY*x!1VRzDsrFx`LgP>py1$OK8DQ9 z%#o0WK>oR9IgtmJmdB1A!$rD=!%x+`aB6+BCpNBCzqrK3H9F*L*_ig_*XRLW{{T|K zSw&}Y27MaP>-Hdmqzge%F?Cwu>QznZwSj>YxW(7PlA^LQP1=Am;d2j8-$V6O9kcWE zt9VdA*~T~`38>yTNvAft{so>hP9=%~2NPfJ7?>|qd3ca{;N#=2Kl7B?`Uf9o?avg# zn2-hr2EK(}!07LQctV@fmc1J+y;@XLRb`R~F+FDY@Zsk{SVJ066w(x1%)Oetq~%}K zZvF7({>E+?KrypCKc0y_pT@Wruc1I|FbK}(JLz} zUc29YF@`O2Qrz6!*}6U_Zr!@o*52OTv0iO0sMYQoj^PIw)9ZGrv+uEslF!z-8XbD0 z(Mc)N1zE#-Y3Jls7};=8b?3HwgulFux9g$&ro2Cw!LDJ>s*cB0rz#MemlYMR#BOYE zZcnTx;W?0>GM{qZ71*#|C`PItlX)ir2;2`S<1e*@ALUi`S8w;@JGLnYxIMC2m?od3 z9`cWPZA#~wTOgYyJIj0QW!nj>$&@3yZqer~fZJFUjC#*d4FiG{Wz?x6h&N9FKAx*4 zqh(gP3xSW1qbP(JOj77EAILS0e(55EL+|=xw||lH&MIEo~J!BVz9Y2 z_K7qaTH5mLiOW$W;G7jyZIVmx!?&KLdb2rtsNVEEAN$G<#Fvd1uwQ=JBl>E;d9d}m#(F31xe-(lsXUn^Iz*X?F?zlpg?wK-PLIuaO=yQPndIL_-N4S+{LdPQV z$U;iA95Y$YGsF!5NCS;!KMKprmFAaw_AsEyC`a;{q@V@aS9=;TG{c{T3~uHP_6U*R z%mSDv;XG!(K=24N%54fT99b-5boBJG^N?SyAw*cBz75Qv3xhQ5W`?GT@tt=}o^j-Q z!58GJ-w?upDx@M!F!!QvlhJVN&xXjL;MYru6%lE^5}p0CF?<}HolAo=b8{%4M{vC{ z6EZ56B1o}=E}?q$+cN;F6D=Oa158hd{h%^Ecv03y$#_R~&KnhAip2DTTr*2iMRvR| z4)P@A-S{6XWnSk+xe*JlbKC&T@=rm=BEKAB!Rc#VUd$wP?9q>k?NQ2Wg_nj>zQSdm zAQ6t3pAqPjcGhVa7V+3CJnAGPcmk#@c@y;quuN0hY*0O`f#tU?0H52VxYMkE9A-A= z7%79wY~oE-%A=#Bv$3(kD(L9yu2w$Rnsc#qBlB~JC&6al zI|yG8SVn0Is)u;#ypLK#_GaZPHx!Jc`{wjFpj0y^sGbr3B}Jp&tJ2Z|ob~Lu9U1(y zo4lM4OoO)NDSKTGH-dAPYBwAXzk0ur*NX1z>-%tZw)?&*XV62$<}C!DTj>V~${^ol z#fb*wS;i3Z*e8x#50Sug=cD%PULPFr?Dv@M2cjkqHRjW#rq(YkBpsI;^KR>wD@EXR zv5k$u=_(>U>z>Ch_>K();VY34gMyl?5)vwN6~Hk&v{kgXo#EV%$WRF3IWL^$no!T|?*hC=S)MJ{s=c%Kf5peM>~>ij)oycth`eJO-frsdvQf>qySp3E75B#a1P++v0Jm*n z2u=(KJsll?8geT7j_KT1DJ!1)6puBY$2OX4CDdL9jHg^4|J0XP=y7#X)_sY**lqh) zg^OI>z)$sN0oB}qsG5^@u-U01rL9HW?W}6=wCTH+GA&>;>Uhv)%=5~V82A1o2Bv$K zF741G_~kUrQQWv9EG!aNDCpk=De~b@b%_?L9^p$oEfcZ!KU8tqJ0}DAjXkQQ5}<-$ z(FI%++=ybitVJU4El+lXXmVC98Dm!^T7)%%81curvUeFIy7d~as{#euKLqm}E?gYj z#BfOs(qlc(A!JHygmjV`RjDJ-yuEB?Xd3Q-_IUdQLk?3OYkluUlH$QOs;N<0lI(r2 zP`Fb*w)sP27W%cspJ-%)XN9_yk!3B=<^ zl8DD0ys(zjMVG;oTnR*d2zb(@2-9XOdevjy)pr`F59~&awaZl@H5EE39QCqtt_g36 zLAHL=)O}NaX!Q6QHkp>&Ai4$;Hz7}ysSN9?3xWnxSS?_6_3BkNHnt@%JLy!wbArla z>3Xb9q{1=h#)Q?5AjpBY=l&n*)SjFQn!Y4fO&K9_;DqLc6EIU@^In@J${Wf=3i?yp z=$W&Vlm26n0L>Lm^tH8Zf|{ln9K3nn;%jd|`&k@>~s~pirc^WOJM6QCcJ6Xo8(kr_6kZ8I4^1J5}Fd+3) zRxvj>ckhdFnX~WcUVXFxKmYsB&CO8+gF+>fT+!OS;qZjhx!!*GnHjr83IyO0tw^=l zZ%|9s-p!A6wLwTPolp*f|DfHiIr~%l^++U=i{MI1RmP9>e>eglR~C*>J28P~=jHSm zLyR)c?>s_8%Oi0~Fqg2%t?|_(W^Bdo*~-XBNe5vuG2)rS^~#>hg#$shdTi6S=#vTP zL}`(fQiP@XVh^_eH$k*N{WKR>$(-N8-uAr;(*Pt;Oo?)6eZMRNP8Y_h<+PJ_|BOD4 z=%IU3sU=IT9z&!+YJ5$lATN)+?GuTK_4zP}34H+3_)$G#Vi9Dm*l}_ofymD5K>ppw z(=%Rq@l82LG=-F{bZY)gr`S*?SGs-4?4@O3>Z(8>1G)CLk(@+J0hXvt%KNnkG6Xar zy@Uo9O5uKJ?aU7=%gf?Rsi!~^aE)!$Z!T|lbBW|!MrFNqsGy*piMj=V5O429fyJdI z!p(Mx_LB2%sFvstOuGq`M!|js5U^**(RuKi)2u}aqr9^q6RdD(Td*=sY2bM><*Kvi z<0}>-iNuA4d*B!ds=aIju($D?X16Z)R$Eqd+ICc2af{H0lwNe80aWHlT|c8+!dsvT zs>N@N?6V|JS4t*-KMnN1FS4|*xWtSwM-x&C&4Nq3DAZwoK~`w&%m^G(CtHO_i+9Sh zTGRJyO@0?RRaWubCEE0_&PQ?={Boqj?3Ta_^<;O6wgxVt9^@JSc!VF;H}0BZ?^}k1 zF#=gq4@AXyLy+k@ZxX)NV~vo4RNn>$eK02c>kKsz>z*{n-uGm$#A>k-8)1_%K8Gvp zP(7#lo`xNgI8JgPj-UJKWh8TdD~uf#`2_{-yS7r7^w2?~TZ*MG{UB}&+{9fQfc$l5 zB(}|q{_C?Shj-)iPr)RRG0}YVpz{jJh|8h85$1@piPlI;yD?mUSM>7MyLlV#~SY3R$ zJ-HO9V;E*55jRbuAUu(tok{w~$4uXf1f7NmNYC z-{2j%M$u*?352vU;bSEAB0TiT{Km${KW73Y#*0}M6%<*z1+H8aNBmWL*we!>HY2kSs(diKQf%}c@qD)iEOBW_czsL!td(8-526Zm?f#l{c12f#dx7YmM&=$b@}`>SWWL&* zJnxzS<_mN(7NcO+Z*+4L#((G5OB<;Ctbq~-7yf4oPqWk2Q|`w3vYh_Y^ZIol4^4jM zDQEusq(r^4{oMYf=PG&lpOGLt=Ya5Y)Mor2GfvsALEoVl|0G;1y~WIGh8(4h^AhS> z!ieVs99Fb)#S_Pr+20`NW2UJ9Hfd#LYI!a#Nb(#9XFvMdv)EgAhrKGDYClEyW`I;D zzCGQ{$S7mhJsGKIj!|g0YUz;m15u^lKV)ALFt|An03aOh_ea&h61!a1 z>RPvxqaFfRYS>rPCZ8LgRQfSt0n(iZ9v#BtiX@EdgC-5BdV$b%zrJI3T`q74D7Uys z7!Fa$^VMr(zW?P*2K(;O(WSuK#>^U;n$_e}N^zb(`#YW~-sa|YvMV2Q(n0|w2>+UI zA+K$ewoyG0sOb_1LIclVp@B7PFN>naq3UUBSBX)Z@fZN`=1rnd0&F~vD8Pu@M9c%m z8$5)I#2vlLL2KXPC~YdKQSfR5!pA&xG&pSBdu~nQ&_*7|XuJlt0 z2Bfk}aPsP74xfI{n9%*LG0w~Om+m@rY^lCC{yng|}+tvuwoD-YRdnI|JK^pjP%_k+Uk z2A}Ca0ok=(;bQk+sGHadZyhjnqeTA2+vf2nenVTAC+5l#@{>@`+_iEz{*Ko<6H^&j z#&;&tFD7LCo#NOM3#Ar!k|#)<{qo0M$Tf2pPdV>PzBz&s1n$$btInBktdQ4<;#!MMU(MvI&PJ4O)HYE4gqu&+VlUMQAKg0kK3-1a0bErK*HfkOH z*Poy=O?XjGp5uSqF&7^d6p5n#)AX#Mc9Z=B(?8>bXkJv6w)Xs={C0Cv)$S3798dN; z2HxUL&90!Nqy#r5NS7zJO*H^?$xs6LBE`QK(-BjC{Kh91yat2ZIP=uY{#@+?%vRPy znM7H|D(OkGXZ7ZY|Gmf2(X^vjp7bD4_cy~W7WLfc4WflrKX_5p4ldBu z%bMW>BraOjqgup*%l-zjXR@$>(SAReg-l6FNl(vN-Qq^iKuuBp zpCa_)gI2!@E-g}QeFDlMk~yMpZ_312@FcPxMa9R>L|&a8^w6(?pzbj2p zg;4lgYojcTcnLihEQjT@K^8DiJ5T0neiNWYBuK6~YZbUWjC`x*zogKagZ;Cs&s^_U z^CF$vog?S@-(yGqgs$X>dVd@h$TI71#O7J8=tz%p7=(`2y=43^e*G_g{V#s~FMjPg=5Yn&a|J&BlaA7jC>0^Jssz**n7IxO^ z2-!8>6Hqd;+b907KW5~$a;dueVejMaIxd>#z~a}P$u?BWMH|`GlMB4>L;QDg49q4D z3wRz>FtkvTk!5rVStYvE*uv&k+fbUyd^c_iTvXfWMkS5}NT4Z4DTWoQ*Kji*Yqlrw znagcf`$x#goc+Rt$vd81)uS}Z=k@=EWGfh@>!2RjJ;Iir z0+js|htHweUUoN+d%+Ddva_5Sh%G<&`PHquESG!zOqCZ~-})AD23>gxGppIj#y^_* z;QIpJ@4`B}{2rD=w%__;U|&s%HsCOJ_mHj;*gooMfTxOgWf7;wNcZh36?@7o$s?7@ z=>zu^N|tzJ3fhHVhmR<)yo<{>y!MzWAe+bOmU4d#1=*wdNVk)Hovc|7@+%X?NiKC^ z;f`BXN*I}#dx(i5NvmTVh%vhUUx(+xx~jJ`nKkB&>Crt(8)2RlRM2W2i=`ddT#|6< zUAu@2fQ~uv4frtgY{`VG|5b@@3=Kl*8O!B@CE38<^1>yC$T&6HnCKyaoF+tSwTv(|+3ll?Tj0B@|L0rk1_H+Rq)KUQf>&&ygK*!R zjO46;cJ=|Cksyh0>5uRJ$Ek-N9zowqv_$9n{hMJ6Q;)d_1F%Ra7(QfNsKEKAlJ;xO< ztkk*GCWiZRpKag-V>R?SqwH|NuS8l1Z~5}$s7;eqeZ{+}L72DOcemxFIz-dr5|b#ysH zoa~z1xhIaBH$@x8#AJ5xJ)A1H+Nhvaf;41r5NW(~K6~aaQ7lD1`lrdxN>!`&?p7__ zt)=q2X|Swj?xK+V%tqEPz3p3SWeg|651B|!tY?0jK~;L$E{|7ihAPOIZL>Gfc|Pv6 z;`)^6(p;4zvCBuk7lvOgtQ;gwi@l2MI$L*KjOrMftzMU95y&4An~0@l$QPYn9PrN< zT@JjN$YtC)+H0*&OL}L1wlhD@6JaKI@_c%t2Qntl)@3g0OcCn?W(qQKx}gI+d{y(%{{<)g&GG;M literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.txt new file mode 100644 index 00000000..208a7900 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_12.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.png new file mode 100644 index 0000000000000000000000000000000000000000..e90eac36fc2c8bea580d4d6aa5d464120eb02d5b GIT binary patch literal 15297 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.txt new file mode 100644 index 00000000..dbf9d6e8 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_120.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,2] +[1,1,0,2,2,2] +[0,2,-1,2,1,3] [2,2,1,3,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.png new file mode 100644 index 0000000000000000000000000000000000000000..df07a8380ec4877cb959b4d4698951ad4bd71729 GIT binary patch literal 14794 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 I-+A)?0Nps60{{R3 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.txt new file mode 100644 index 00000000..85e89085 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_121.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,3,0,3,1] [3,0,4,0,3,1] +[3,1,2,2,3,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] [3,2,2,2,3,4] +[1,3,0,4,1,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_122.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_122.png new file mode 100644 index 0000000000000000000000000000000000000000..e35b83ce640908eac670970bc0a6af900924db5d GIT binary patch literal 12941 zcmeHu2T;?`w=Xu3E*&I-h)5R%r3O$CQ0dY^K?RHyL3#&iBB1ml1`;|b1|$IyX-bg* zO6VA>Nbdxx65wut-@n}do%iOwx$n-sGtZgtIQf2e_nbX@_Uz|#&Jv-ktxijInu?5! zjP~Y@>$l0sj(j6MCy#2dkAkEG1toS?oeOF##is1;#zKHthA#aVJon0 zYf-WdMF~{;T2LVc{xc-!p(Z0EzlMD)yICGGOz#^$BAbKUq2JhWT0}z9KT733&7K+> z8d8tpQjp0Wa`dbmN?`KprH7hNqNwrP8|6OL0c}Z^J57aCBmMzqIZ;YG8{1+5+Yi_$ zl%K5Lc|JBawzjr5!>*yBK|w)LG{kod=kaq|Ryj=hgK$I6DJz(g67w%l%0j>0ttEA} zfR!&4wb%p^F}N6oF}VTHA1&W7T;Olw@(8_e;81pHe2MCwNdC70SH%nb{Jzx|h%4JW zyF?1L2&6%JiTl-Exmxbu2|4x*P-!Jjn~iN)qyl22DJH2TfRWW7!+L0lx}zH>G1BX zeepS4mM5$H>ZQs{PB=KmJ_~62M31+T(s!L ziyoCj4QojX7K<_MNAC4gxrGXB*hC7|OG1Se1~M6W%HA1N`ok8sgJwDMQc&m_S&D&d>8ei$T)VX9PxHwp$vQ+J{VCFSC z(V9{psIen#T$H%|+;?NKkwOVt?|PidMrF$&BKC}qR$+0?nxWrXK;V;|KaV3L;^Jzv zJv0-co4>n$!?(E?C^W3m$M>Lbk%$qfLaV86Y6*;IcFo7{EUKtT>h#Of^7i55?w0+S z8-8n}_2D_ooJ{}Ghl^~dE~t*(lsyM!6o&50s}u8 zZ~hAT&8fi~RJOO%#gwtljo>%SEPXIz`g~zwAvHA>d)2PYY{5ewAOE&kDS&7~*SK7_ zeAP}0UaEXYX-^;+=H;Qmr)-oqWPMsgI1-NSOIv}p-1A%p3t!h4R~N)rd^Y`#qBq{p z)F8Ed3WK>@>U1u=y``mPa`FOgNJH_+_{?0$m#Y@>be1D0$>Xcgm*nLKmMlM>Gj?PC zA_M{+k zs6ZEsAUG~$7xx7qO6s`x2!Y>`g4@y?6Kn;+bGs|_{oFM9hLkpoh{ncaOOUpD7(mYEMry?P6t) zmKTYrFN)UXAAFXoHzXtJQ$-|CrYm(I{#U(0ZyrZ7BDjz_pHUiE9_ux5}8WOkx^NNd%7e?9etSkS>!3i+f3 z9B|8^vDsdBO`~o4{Hs93i|#yVqDX|m>My;Q5u!#MqXeqaD>dPt(1=901W)~C11ZR{ zsBH94+1UTz{a;LHb5dQz zddJ}^ykmLg&|)(swEnjsD-<4Lie29h!71(ef2GPjCakyB6IkW5J2aKA`f0N(uy*fP zxtP$rEd6PUP6C1O=g%Lv7rD8)AtA@^BG3KgK-~Q-Xf3E;WLc}_y;{ArqgB^>m*+y* zpeGaQ)UOw+b*O>d;m{2Orzwj?@eo(x&Zmt&gnhEUS2`*()|3mOInd;)8T=S<#T!7Nl|7d>hq@K(YUNsD9me}iHoQ3MjY=rDR-5Y4$OI9W>FE5(3t**FqrKfK}f!^lK-E? z>o+9XRe${oXkS^8K()`f0i(5gd(ef%8s@NEii_6Z~7beY+pb3tA zpzWO!RNow-I;p3pM=d*UR90o{Zvddq?2*&N@^Y*Z_6H|8rQ3Qvfn8ZzzWup;0+*=@NB^5I(8NL@5>T76G=bRv)?#EH(@;Ebih zFk-WIZ;Nw}ckb!kToL_<07T%%R@6vMY*3HoTx-;(_hOjPtoKrrZ%BO=EajUw>)Vp< z8Mk2b23w_I^4se{)*sLi(S|>NJ`w5YX>+o(dA*&zgpVXG-?G2oajMCT*1(!w!Q!F#$m3I2)YHb6>VP+Eq;vvY;{~ir< z?j37tYWiJ#=Mhmov2w_9vwwA{(sP2l6nXm*v!Fs>O8`@I<`lN2z*QDUcb^rlDwv3g zXuq_%8@|0F72qs&?DOu%hV6)Mb~84$YqaF2tac`WJKV$jQIq;`nWX>v_tl4(o7*Bj zTFG3*h#v&V5%&-Ju$Kl<>#*pwq{QJ7gDeH>W8b{Bt+52LOa}M0S;M=@=cdmPkEkg$ zT}$`Y+lghFku?_>`liaGK5@D8>s~{{^#BGHmBcqL=L#fwH)SuXKWGz@oZj6*H6$fr z*jTe}@d)4k8kkw~#rb(ZH?csH4YbjM!Z4E0AGleczi-nxAJ+KB1RI${Kq^Q964Pa5 z)b`f+c_eK>cj^fugkI%5Xe;1sv-VA_@r?yG^2a8Qi_=zExK_+EaTYYf2X4x8#XoTq zk`$;xuZOa*(3(0s-w<=g=h}mW7Z`_dyRTCPL~F(J z!(`Pmop^*-UIs?1beDgLk=s6|)bvbuQlv>>Roq%Nnt*eD?jy6Q2h;gE^#g*JZM{Ub zLt~nGnlucOG|Z8J=$G+v7)W;eKrBn@7;@~?n#Xc>TifW=kIQD0sv^hLZA5eSN1pG4~+3%A-8+$ZvQ;fBMuCL>)P_qfgs%0SqdokZm!( zIWjO{F9l!o@wcpGlF?VA(3#CU^O~FmY~6UplX%Sw@xRvQr+UgQY2Q2s9jHMEn3a{4 z+}B^f9+VFl)|!S@H1CM~y}g>g%KG?91p6P30Wjao3JTdClT%Y;A%TvLj^5s;Q8l2s zrq17nAJ(D8cOf&mnu(`f69i7DBlP4YB_#=8bkxzS=6&j~;Dfm7(jcE}=?fvT->son z?$`e5HU6YHj;hv?(yX?Kq2Jw)%9#ZHC-w}pB$)nqWmbAmOw_uzijZ5Ra}CQlFfc$! ze`i$K<5+$rfC~5rsTGQ6$?uQN!d?T@dLxCHcC@ye|0zJQ?uzY>C+Lhj3zwkLXb=H? zP5AlyXGO$;H?S?cI)pD*=SC^n(bdSt5`6sDy!PW-&{v!?mb@=YK0UfhLZ#Mr#7?~3 z6h`Q!2OdgEgqWWtEbe&PbNg4XyE1WaB!@c?qanca_DH@FjI`>?@mGqpV*bO8j@W>@ z0M91%;~_#g`NlX4fRFu-)v7E^13u;re9Uol%7izLre!x;33w~NHUEVR=QJd0%Iks4 zN&qG4_rIr-jZxae`ahTRSo2!(Zo}h%=kk+0_f$ai6-Febc-s5kJX*g2WhuoKlorf* z3#j6IQmN^5GlH_czck3n5PM7s@0BFNihbvKA z`F8x#eIV<+by5hv&dnnU1SL%Pvg>n5T^tTSP$| zyE!v(41|Q=v7(+WF=MCP<-zokqf=h&&nk{YSuua2#doq9%FyYBlcoR(h}MuC7cBzz zypN@G#lHp}u7D1Eqf;Lt^??yjK?f>4j}y%=nd|8ww2&fY%GK7sQXnBA_RMat23WD( zpX%uqpK;E5ZvG6(R?PkMrlQj2AQmM9mA;(}h^EfuyYK1g$*tgX{#YR?k#%>7{(2{O zSe^pE#5gtu!436#@_SNC1yM$?M~xWEX!DqT7bO%vzf9@t=T}uzbCFw?|Cq*Zb!n;F zlP4Li`NOegW3p}Hyh`)3FFbIkDQd6a7<6Is?!7l`RHQ`j^J1!PgjPeszn}08GdDNy z{)A5DmD@_<6;SC_!7(IaW+yg?^LR{0hn@-oLs5%F)bC47nGF>=qj(wq-KSbH@YWb^ zcRujKV!hf!-`1zmS_LdK(vLM%1*m31%uuY=-H$HUHHm;R5xEj;@bvWbh92mu$ef76 zRH~s^EsXH+`Rirql`A$`ZE6bH;4#lQ$Dl-}@&@OvrKP0KQTk4_C=pw0iA#><@Q*cUzHyIuI?Z6dxX)R--0m}T|a&N zh^=$A7O`Cwxkz_j1+mtPkA`)dR_+fo5yAPZcz5=L<`47oyvfPQN9HN($@9svoXt_V z*^j48K)Pgod(*Hj?J>lQE?k5ScYoD~m5qWCVdR<5!UqhiK$Nkv6OE$t@&vtGY}wq7hp#`TJlQj9b> z3va0=b2hYUrq-p$u@gh*yI>=)96^3dv}cpyC}LFhjMs-TJme(4N>{_O+NUQJ{dDTo zGUN#2*b5&i3Xqx6eI}7e3&IU!G%bw{pzA17hQ_F_Bq$U7tTdFOP-?m*BPE^)ewMdP z{+u$QY$69;GUtu(5F$i)^v7q?2tz{f5Tq3!gp(Z%h&H!z1z{@G>X-^gi>^nZ16@FL z(i4Y!0^p}(()Ta_wZfd!nwy&~irI*ggEXaS7GXel8XIE+9_zl|-mhQ31}C3+x!?CtFdDbvfDc!%D(wKs1B z?Lt6M=1H3Q5o#6}(DlLKV%**Ezts$Im#7Z{!91%r4}9noH8u5Ub_5=8YPZzcqJvcA zW9XzYGrlvZC?+P>MU}2iLE6p!>+=vP9(c#6hOb}MR@1((uI>Xp(R`8e1h;#nFmq4N zC2qh3=;gKEi=kgWiJ$M~8;^jWbaiztMG5DNNXN%XDvpwK(U7~Cr+bthC2fC41>ayy zY%aQY)p=>SI^(Xox_UTUmFpDU&AXKzqE*YCxf=Dt6rWvb5&BQ3%p#{ehrRi+r&^3| znV5xl_8LY{1T`T<9#04)N*0|5Gv73Fb9XQ6c$BCg@UIb*!`zmnoW~rV$t(1oZW&>H zef`@v&77dx&0kR-m3Otb2xCp?s8F_NoFDNHomBWge9&?;Q4fS3SR1`5Muh)UEi9EG zXIEkA_e8Bq00iH^f3m&4P+eW^(&9#TPAuseu9AXQ1oyEk^H%Lh-?X=@Yr-dkHYQDk zmsmK7ibEY{8(N(c@MsU2M z9nVK%*&h2$yE4oa8;MC~=jO)Mx?~1$=q-9wj@svWE)6FIwy$G!=Y$l(>4T|8+g+_~ zx;fnGmfyG0je^K3*ey2Jp7%-$yW$u>gK^T7hHLdF&t5V8q<`T-lk0I((}Jt%S8fBw zsj{I#S+?3!XzXqpnNhA!&b|hraQ|>@_FGi>Icrs)+O$`%uwoAi=EM!PkMF++;6@|i zhZuDkM^lkit$tRU$5j#%B8WF^+jzjWw6*h4@6r}fr^3ovJNVXVup(DQKtsY4G* z#Iosb;;j3vZaiH9W)FOTjuz!PU^ZL&eXY4TxrBrPwtp(;OQ+OicJh-MLW;WBAxk}S z*5jZ9jszs}JuV+i-=ibA1cinK!76364cFnEZ5jEEAsigddpjIvBiCb?du9)WUj$uJ zlsDX6=j9M?2cwYSXgYBx-l~s~f1tfTI0u-<=Tjh+(Z=bFq)E=R0L*<(r*`~@yWin7 z0!ak0C7`)v&g;j4T*PNwi5_~Juc>GZmVce3_%@kRQ(p5lX`u4MfdJSPjqMea^*Do+ z=bLq)=*9!QI&go}dz|Wvo+#0g%6-S2p?r_Dhw1Cj;wF?;6A8 zg>*@|^mGdVJu}+YuVIA>KsHRf;?t-8N0%=LP&s-Zhzv(swK_OCHA(O8Llb)<^P%xU zE#!k{ao;wHSP_^HiIw?oLITrEWUzL`flQ?)Das-%54khmjZXu*qyoj+r*|^Ss}2?` z9a#O!FVDy)^K!eM2P-NJ237f0?FGy}b!c`#ZbV}}$|b?txE`zxiF#LSYHD6jw)R7Y zg2m4{7*7Gv?&|CPBHNt4pg;d%f55rs_#|A-a@5V>4^b=s_||vwvVGS(! z8-5?lX#_eRPVd`M5(OfP27y*P2dyTLDm6{CyL4Rvo4Vpa2aYc|XUb>uasPV4^=w}~ ze?Mc+WEq4CwRFCo0?fs?-01pM>_Po~lQ%IXIhl@*?(*yIAA%_F=%;eoZAVxNFls_v z=ob92#Pr7Ym-@*^!hiNDNe2ogYIhg^jUk=b;*6Hh-6tmnuI!8My&CSy$#mSWzdx+D z$Y0Np`hmwcOAeTmyE!PMZq(YE3#DL-RJgnC%BFMGvKbT~HWx!S00rSw;4hlYhk+=k z{rg)%8!G_lw=?(a-%Nk;i4WzMN&Ev8z)Oohe)PAnu*hQp z_b%e;Kv~NB*9B6J`|(`oaQqOX3onQFmBG({=Mwu^*b&sq0Z*dPCy>|pZd}}n#u1al z|JT$36lv=*D!BWM{Gr{-s>&ZMikmpS_K(1vYQAlwSK;*B@pTFOI(5|cnW*W}Q65z6 z$D}sz1lqqdf%)}y4?oz49=o!E1yI9(yu3-U!mHL%*V7J?Qp_I%c6-A}Xrmmlpc@y< z0)yRu1Q&#R*x1;Bc1EPYk@X4Qd;!d z_l)Yl8eL8T8TektZkh}IWPmxj7$&{ET^7p%b>a^CpTx2LGYtNJ>q=SG93K0*q1B&X zLg3O)9|jg2%Y9v3vNm{sf(r;#%OdZ*0MnI<`se#hpA=OA_s<7+nn0n{61(nG4QS#E zmRr(Ku2+mK;cz&8*G{MYNX5TZE6t3hBvJGv%q;?y4>iT!)@u6twYRtTmsrQB3I_kK zZ%$udznffMUS370tAw)b+)m!(H+Rle()sHa_GG1;eyN7AVm-vqqG`%fmF@>oloTR| zbCV9Q5dC8WrQ6^C^LSYYWvOiU2vFjmmW9vEG&VLmmYZvvI`YqaK3^q1_}OjzTzLu5 zYk3|8NZsF01gVe(MaTt$=4Qgg=xZ3wx zWps2jotW2D+nM-J`*(hFHBz1#(>&f4 z_ea+k27G;eClY7Ku3HGvB0cF(n;@L?RgwZ~i#vXU%Q^0E()eFN2`}UZz>@-~mo|^E z!Q;Wdk}tGr{!bH7BIa=>mX;|aqM781q)Rml`K}}Kx3R977>$2m9Ml*Pv_&t03{2pJ z@{U9nIJN5gGy&TZ-pg2kW%e5S&~YDUsoO7hNzOuk-cLVMCuSXWyTJ16zb0ku(Qf&g z4bf943qVudAUXS-KRm+E7E>7QW(tjqXVJ{pobqYJXJzR~crumENfjHp8X$Y=Qk-Rj zZr}a4X(#vJGmuI^C6=sqlF@gY0uC^lYY=km{_~C2c`0~Wnx?s_?0`9sQ11b{7Wp~l zb>rNQMCJERBcp(rN`an3AP&;BUS4%~weSxKNo5;Ys1($|XdkSS61!!m+{&PjSuOA+ z4zO^*0YDpuLZ12v}8s#9^op%n*wfO?+~2%kcmVgoA5%ljOp=GOjncXxMocDA)eU$kLLXajkC zZQgy-!GG48MOQdr9S`f`0apax#MtRcU7krx|0n1Vl1*+e_BXG5)kh#jL=%<|YC(W? z_yg8ahx4O<1&5nkSoCH&Id;l+b>U}Dkm!>Gcj&udaFxv~KZjT34{DD0o0c5RO-{ZV zB%QC4syBwZ#eHMxF8iS65s`Ut<&bSCH6`PRhohZ{<|w1eq25iw=>y|~3px&|7R4LQ z{7CGW;DZAk@`1?D&wpC!!~r}3y z`oo>LbTFtfsfg3yO8~eScW8D1`_0cTIKsf%OdYI^2end@PwJ~z&qbOy6)6FoxOp%h zsYK!vQEIv_y$<^89IpR9^0%HWy%AF?_3!w=`ZwF&JkvtIf9S5)mi7?#x~%1Jg-OIT z1uB_u`s&{?j;U|9dHMg;^>pU87A3EC+NrjHzkbXU_~3Q=UVsgbg;&f4NZa9bP7 zSqC%IU^%!EDaGsk`M4u%BB08urWtKUiTgQP6@}Z&^Kz4kATQ7YynH{WYwhPZ*nZq` zsdlf1(ll@XbvHg5Ei1&1CL{Yvf6|nUO#GxWD;XJ0aO?>(vXHaZN60>({eS-YMs#fT zo-JxU0fW?8vfpf&eAzGN^q8KItgn zorvnHy_IAAibrL=)m%EjTS0@zISjK}MVM)Pj|kk^u-!!LaF1z_k=>Iq;L&h)_1}Gv zAxn$jMq1QfLFUGmDfg>4rOgU&o_?JDf7&2pEn$TrrXJGEDPUNoOR(&5H0 zATxv6`=Vd9qW;$8Wt#^EC#Z3^O`c6|UE7#Z-dbNUuYHj&UcEdlU6HoR$_O>2~wK*_@aLizkO~jG~rm%^3%A!POR&* zJ;jfRlTqq9)!*#zA0bjTpb^AnDPdr9gzV~1PD>z`IaGvfT^jZ5RH=W!6iy+4*l#1?HY!}|`udMoQO+azz)sB-#(uGA z1qBg3@!$Fu*?ygDWMn_G+h>BMtrfuSGOWi_OmvlFz`d^rERD0PVmZ4*Z{3>mORj zrt$bHPIyc*Jra_>OUA`aPR1S$;qjG9XoZKfrS1Oi-6=Kn4ih1L5RaCyR_UUD`^E_S z>)L&?r@a8FjW`Sk3@umUIbqm~}vL z(9hfoG)pm%hfA-!zp(IfF(x`&9P!d+Cwt0mvtiAGi)r3Fn+g@qk@*r*M@BZRznId4%^R%P+qa`!5M%D|<((bW_5)k;yjTk2%P0s%l>^Qoa}bZ-2c&uavHnghT|Uq9~{N0=bx|{)8QtG=s5Vz#R9tm5%wIl4AWACMJo3 zGrqJvBUV9U;nA0y#v9Qds7$zphcIS1|4Wf@{^u^WD2jMIhjd%+m)f3;n)wVSjsDiZ zA4WY?&6dBVbSKdeYhe0}UxzQ}S*hl;=+`b?kqRlVUqmd=d|KM`j2NX0%-4ue=bSsY z#C9->askV_lQyjf{>rA2X98cyxTWIu4k~3`J=WGvsN?2a!jh$3=36>37yBMEhR^Q) zT%J^y*_ujYbgdjgK&2&LVLZmv+I##KhRZi^r}_L%Eqid#A$t(i5q6+FV|+r0(|vjW zoRS{aS8+y-{rq`bTU$XzT|>j+(b4Bm&(R?*!)Mu3<+-KSDo{zA_?CI6jvX$Gh|Q55 z!^-`}&FX`B(UujhP1N$If^F*ec~*HpR-emwZF?n!?sqF^M1=~hkGc!AIp1r-p>%Gi zJ&3|(65F_k_)@iB zOqrM0+GVemQR^bjmQ>mgVH$JbuB#sX@NgR1o064zFuIK&G~Q|&i_>FTK*vi;;+@ME zo%M4ztqezpheHe(>gi~{dJ~wtwoHl=NBwCbXz;CoANwcrX33wF@5ur z{D!B2-dvwsgn9R+w*7;C9Zs+PrVa(mZ>tNVvKrLE`>QYsjCr);Ok|Xsi;KjIo?fdW z&FVLX(9f&~vz-@ludN_GLGHc1y*;EpwOrP12!9CU75c(c3VQDwwv5z<(p8u$N3&=@ z+?Cbf2%Pt5L<>+mZ&c*u?v4U(yW>S zSlpXy`LtG(UOGD`qPSqjoW1_|$-LhE7)x)vUQbws2Mn7MGaA8k?i^0W?>)4|x?+Sy zWtMJoS$Bz1DUUa6L3KOb=p@+O;5)txZH?htLQ(t@3{##@(`DQ;HrTpJuViWJowYHJ z#_*ZhjaKDU^**zoY&^9-&=w!_UXco(XFp%bd!yCL_Z)})mZi>UgZ4qv7?ZBSTd+ZtvIMY8Z<@&FL_M|<6yMw^JKew z^{jYG6S525`g8f`7N;zo(QPV<=&Dzaj^nea?>aDjCOrB9YH4W50EO!^eB$BZ;pV3A zFWzw5P%}0#dOegDSu|76g0-b*FI<*-oEF*iuDxQV zRb9j4%|wg7`r2{LeJ8Iyx*}O-HPo7bs-uik`^Rl;dwaU^3n)89-rac=i>vIVo*
TP+GvRnfL9^H*gb_iGY#bQ%Z?OJ(g2!USMT2l9VC%Bta}?-R+h3p2YD{Rm z1jqqP`qj%RG0!m{2&v6%k(^?`vuhJHoIjQCqjgAym8=G5j!>i#-y-Z~!b?XvMo1V1 zxR&b;N_$CGlXNs*=03ZT*JsmnBu-tkuz^}ySbU1Vq>0=>@3;KwV0(TBu`HniZt?C_ zofb8dZl6>Tw=?t&3 zY-qCaY75kU;k5|vHu}BTz@_~pj$C+z$7P_=v{$e-t$_U&PgdSs@;$RZ zzx|AipEbR-%z+596|mllV4~<2ihTxNGQyZ|Sa@}+Gbbc0>U&ap7P|$j)}gU-*gwBT zF&LVLY_K5sL||W0@sWKp>Yr+fR@H9*iaA=zU}1h<+I#(;*5ZcuzW>ln>vKMV=wS&9 z-nL64Yx}!fTwGi-c)r4ocrG|672J!ktj@Vw>N)A@=@S!{PP?KH^!I$s%tmlXn9lQ> z%nB=qX5nkUtD5*;`z1I{A!|nym8zce`R1E^7bYZEKa@-iuIl*kKDxpDUCcgm%c7^J z=ksL++iReT)E0pLa&pea>u&jgvTir;#gR2oX9AQhWhW&|pUR<`;@cESBCPA91gCPC z^nktY_oh^-ROrFj;hQ9#@b1A=@5i`jrFT@94rA%{*5yDPwq7Hd8s(dkVIuLNe87H4 zf>ReMc_9Jz@|L=)YCECMq@%B05Ez1Ke-}R9ICZSmpv*+{Gz8XExQL`Ye-GU{p4AD(Dw&NjNh9R^Vz(V_s^cjcvERr)L3Pv>t;ky0BiwC#%KeMY!m}MQF;79sh}6WuVAfUAOPw1sO`u%bo_qMBy+_L4Q&4g7_cTI7 z84PqVYLPkfeMx;}O{RYXNaI~)#(p|+sQZbvl^uq*yc(Cc)LrF|JR z9UI-y8%<&_}FKsLZI!m^FnmdQyg-||~k0S_N% zls;HuZTBKpX&}@z%OfKn#2-kdRt%!&Kf&aLRj&+0o}+SHFEPNUG!W2-&1r=$>wW!V#$#IU3M%ai`Vctgh|Va6pGFeKTk2+*53YrDL$RA zRcGh*gT@BObpVF>hh3Z|mPfM6=-n66bR`M|xvpJ{YhI<&Ka9`WP0_`jdi9yDj7T5i z8bmDPIumDwP9q}Xd3SPAMU1Ln*bs!@#9yJ%znxk1Wz zQ^cV;m!VWGjruu46qtKfUF5Y1xu4$u#~ERF2@}IZG_PAy>i&Bka#`LA;%jJ{34f zTqpRQ0ds4$MEz!4_V#Bd@7}#jUm)h{;YRAKlWTMapQ|Tf0s5c^ZXAE8zh7Z*^i4Yh zf!$aOvYynFI1ML&Fz%q@sLrMczwnqmJ^iVDK6-$5!iI@N4xm$wE^ z{s{n~-+lxRlX1LTQjIrp^Qs(H$+Bb%St#O?YgBNwe!mQU*i4L8-)a2)C3o4MF$EAB z+jRo-Nj&>#PCU=(SK({`G7%jZ~egok|1-%4NDcXJF$2{yvT)wQ^? zQaaV#%uKewxsj1m%rdU3I<^%!$7i#18w_M{@_fHd;Qme$Aj_C2sQ3H_vbcS+ZvB1{ z*y+x1qa;!Wt^y_15AHX90m+c1YtLLT#>#SFd;Z)er}7WYF0b`>gNNwL=FHQ*O8ue8 z&Y8v^`V^&g@3a02M-{57tE!BRzs^m}yL))tN1nhPYXudOsg|a1Qx990%grt4K&ix| z5#qHP@_P|PpiYW+r-tUf(~O<<80|WLa`v86{mxrZeK@}~JDMs0^H`fyea$2HRS!uZ z!3BtAeFb6P{D-)FOxg%LVzeriHglYEB9neAIcxvf_jBEf=9ZRM_h)+d_IzuG3i5~A zKe`l6id#h9N~|D-=Yhb^N^c7%Tq&@7d-@1sz?^vP5((@nQym9dvJ| zYa;7kaJLCIDMMoxN#R6bihlwbimS6(4 zAiAgN3dNOghsg!k-S$sdWd4;f>T(hwhgg%9osBsZ3YBp1!X^1>?61m-3MEakHC}lh zu$9taNrHCgSq3>-t7fFly}a~&IYKG$%gY)m*{N#AOXi{!T34#?qzpoB0vG&q?W?%c z2&b&KpA@g;`5FWPiH25y zx1sC7$~sBktg^f6N%+22C}xm{fVUq?(>a=$s;Q`G<=Q=O0L}h90cJ<-5+pmY6{0dX9W{6u}t+?3LyQ+&y10UoD@+Y%AE zuv0}#viHP#LxiJ^5`I2Q$am9}U<9T{tdnm2VcFT-BS?7DGR}pFUIQa7vD7?2SaW)& zy5o-S0!h4!h8-bWo_GbSYoPl3pk^?}So0eU3f7~P0NcyrZd2&ZRV>~H7Kj?$pMB+# z6>_A|s}ihlZz%#3YnJ1Vtjx3XkI>cBN`OLx@h2#VY+L!{(?IPVArWBq>cOz@W{*r? zEvdjlGs&$#gC2qDxEqvZWr748O&rwg&!FtX&#I|){tOzrO#tS~MG)%$hMSolaux_m zh+g%zGGGCZAJ_&y+WLR8)>y#H#gR5t``dyN(InLVf` zt_EV3^?y;r2ij9&GUU^Ux*~vfvmL&cmX@TYnQ#Y3Wo55Ti&Y&)Dt;&FqzX3-bC+a~ zAIp8_HVzC_j&Oy9ww!y$ zT6vynTIcJ>a(YE7aMJN*T*TxvWK;APgwqjuKhx6$_Y^)uKAMh0Yr3q3XTLj*^a%Ox>GYr10 z$@fO00)$?J5i|b|y&A}6OebJy8obdd->=sZfU)VW-tB3>q2Un~6{W*BdMG(dPysLu zBRNhZ^54FFdr$h|jf%xkSs-__@+c!DgGWEz6E~Eu2olNo(@JGw{gfL1%Cayp%p8a7 zXfF|`)=tpx1o&_){5TxwNc?X%R$Ow|v2^99m5;Z?76X`v13_g)Eev|m!nnOdf2d{g z2D2bCv!qCh8dSAJNg%tVoO2NgZ97)jusXY>TYw9GklG$WvMl51PU!0vyJE#$ZcG^Jw0j#HUx5q^@v_JL;yAkft@T6h-9Fm)Csga23$l&{d zF}Hq?_dQn@XMc zYQ*IP7%jp{GgGmr@1u)>b)E*(FnBW>go;H&F+qeJ%1Sj!q9UIuRajp6t~DrPvo`!qByinV&^g)gN!iCvW>0&qfd2&d0vEjPyC{c8SLTLyG_7eQ^<;!{WfRew;6O@F7CQM#`3Er<95(2f6 zeJ@T;L8(+i=cqwo)xM&E=|p&>V9DG9iTL6XD1T%m1lVr9BaD|(|7g!F;1wC$djOiq z;3dP^IA-8rxi5tBWNFTwAHG3=I`~|$s@jBT;F(#rXPpv18Cx!~JHtqJ`6X~Ouf?dl z1y8O+YdLKR3#v~Zm7G%#Mo+4LH1W|EL&jD{?5;eLjXOo?ejzj>{eO$ImPRJ!zE($! zxqu=(6VN(^*qy!-`k`t10#SvW<)BzuShzfo6IS*XF2q|ZI)Js-75w;+1sq3Nz(vP~ zeQ+%)J@#K+dFvhajV83#{5^+eTpbLbdyMJ7dU9<5kplni$bm4l{SY99Ri^~+iDIkS zT_VwGqXk4K5OYQylxbsPGTN(rw(@fG@Iuw=$P>QT} z_V%+nqMZQNOw11hSc7l*mmhCy+uYp;`csr*Woc(!+}`{CIM?E0LbIFdu%%D>eaCy)tnS;hf$?isTZYueI>K<^OdJ%?}UB8D7&pzIl#n2;cu zsy3(@K___u;(L$b0@R-m+WUHNn~s*&I=IEd23^lW)=E*FYqEOmZ|9ms%op~0h~9j1 zGs6#AQgYScj=#o*VL%;NKh5O?Jc|3gT^CI0mE2m`7YC>eae+XNO8I{ZSN@$@lsX4l z{ZrsG2b{Zb5XPpJ&v%mqh&8|lG$a~!?sDDI@n+qqK9j1*Cny-XRR4>F^7Fq?l z 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 L?&QlodiH++V~0z8 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.txt new file mode 100644 index 00000000..35a0f3c3 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,1,2,2,2] [3,1,4,1,3,3] +[0,2,-1,3,0,4] [1,2,0,2,1,3] [2,2,1,2,1,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_17.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_17.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c74c24222945d9287255ac4656216f391568ae GIT binary patch literal 20304 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_170.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_170.txt new file mode 100644 index 00000000..5d8a089e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_170.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,0,2,1,3] [3,1,4,1,3,2] +[0,2,-1,2,0,4] [2,2,1,3,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_171.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_171.png new file mode 100644 index 0000000000000000000000000000000000000000..2b067f35663894a5184d68ef82bf5747bea07c59 GIT binary patch literal 17490 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 RH4d8FH}!7htKEP8zW{ngo0q~4Fv_o$!k}y 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 QMW?u?sedI$FL3$AgAktK%3rLO9I~sa#2Mu6| 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 I$>PQT0?&Ne(*OVf literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_173.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_173.txt new file mode 100644 index 00000000..5a472f73 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_173.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,3,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,4] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c4c90e9fe17aa28350db4b4ba195f29e09dbd4 GIT binary patch literal 15516 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 z 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_197.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_197.txt new file mode 100644 index 00000000..0d2f2283 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_197.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,1,1,0,2] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.png new file mode 100644 index 0000000000000000000000000000000000000000..5be86fd6619e12dfd4019b5d0e6c2fc6700e6e31 GIT binary patch literal 19153 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.txt new file mode 100644 index 00000000..28a54521 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_198.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.png new file mode 100644 index 0000000000000000000000000000000000000000..747e7f7ed60f86a0a38bbeb6c282c09afdca2d23 GIT binary patch literal 17368 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 J_4bpO{|7gatuO!p literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.txt new file mode 100644 index 00000000..f3b64067 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_199.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..64422b41c9114205d86149bf12b5b80fd793e785 GIT binary patch literal 18285 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.txt new file mode 100644 index 00000000..36195825 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_2.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,0,1] [2,0,1,1,2,1] +[0,1,1,1,-1,2] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,4,1,2,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7dcea82fb1a77f72f02b7f8f64613dce9f886a GIT binary patch literal 20647 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

HUcCMq^#%Fu0v8MA zN#?s?;Bc(<@dRVZf*#;be)qBpntE((rdsMIV>`##Qjd(h1iHvEMK-wmSrO6X&+>6n zRC=c&XafhZM_dn9)gOQG+&0n}8RhSH9UL(dG=x`?AHkF>|GuQ8q_Wa?G*~yib=sXr z+1C<#Bn@5cI6sERnDcCzp5SB>oUtU4-naAbC~ zCnU(o>|j2zcXP(iPKtF9#|B8kn$`|Un2#NTwpu1&$+rga0X{(pj1xV6lR6bT7lc|v zIhEI+H#W0BQ_AdJamM<6$Z`_E1BLxxz8p0E;kTx@tsJDNxZ(60UK}_EcE9U1e8`BE z3{Op~ta(bDU|EU12e4N?8wC>1iNRoa!fU?*y94%X)e`cAg%X({mH;d4x({6c<6A_( z<(LLuoy~7bu6M3fsBZ_|v%fyQ#kM`5Y&e9)@@%GWFIv~SM02r)zaCLdR*}2rMFcKE z)%_Ib!GAr4`8ClBrX6815s$Q8)5bYz& z_NuwATow@=+24LEu4>guW2O2B#N&V9!3V-aM?9Pz%);%9v3JD9#Dr`=j%u!2$^#9* zcvSVclSN{J?}*C6uy;!1)c9@wI&x_Y#*2)3Ad$_{ivJgcJx!^x+~B zWz}iU`b}sEKL*hMtSOgp2C5}DKKt@%xXePhqIG(r>5rA3GPnZrXD9#t@I)n)fY8=b zw}&!QzVhPwruP(s7EPR}e?X{)b0#6IkhH$BTqS5^u^uiJw z3eYOo?%=F*+G+H^e*i0&ga~!ROIVfH`!QCJ8eSvSJ|P$FCxJ`c>6wuFQ}t<1^w4tICc$3b=+Wxp;Wq> zIIV@+`PVf1LJ%r4DrUFAH=xhY&2^LK2APv`3Sjg?;cf4`9S!|G(VH)h>CjRqC!|F< z1?-!G<1L_QnIPJ~d6MAf2#QFI=NFP~ZkFv5_3q?yv*ZX_*S$54QJ`;@?RkCkVY*?I z)$Fh7N1MSmJBWQ%7a;ZqEhBB0jje;ymCnOK1^~B==g+ajL~M;(M_Ud9Pt@GYYqm#e z>%H`JZ=|Wi;zEG!8O)a|3uoE{>D_Uc9Qqo;_rK|Yax$Cwe%Pl`KKAy-Qp>#}gl2QS z;IOdKp7`Q+a$L4)eh~69T0*DlGrkELB%10ZHhaT)*U`tD0!LqUEldeG`qcO{rE9>| z_k?#aDmvMjYAe_*OKEIQae{IZx13tbi;)=7)#Mk#g`AOCp+hh4LyI#pn;&Q>f14QU zXYoaIsNUVcITDv05i>_&oGZ0VT!AR;+VMgSz>e35y=GwbMY?M*4D%6LMqQxO#{L;0|l`+CKR1#AX*Fc8X>Ktl|;Cr#3q9;l>vXV zuNBEFd@kvlr|b_>ePg}BmG==?-EfA<@#Ec&62fas#9$v@G7n4)g z8q0;f*ZyPpgJ&KmtnLZfH)Gcv_Y;o7>f44(5)xwOu!qJh~kn(3_`Hx8DNDE~4@bi0Fu~_}3a7p3lm^pJEu#c0I zsNwPlYPL|xEE@w=uZ5GaxV`wz>m~`gNo?X7&Z?@$It}%T5}>F8t3orA$g%{XfAr|l zAZ{%tpFHrH3OW3l77TrIIf z-?TWc%u$5E4NsgzdBT_bHX7||fcTf{qvp*`ABT4Z1u7NaK6n9L(g-qj#SqDq;5Oh` zDay#4cZeSN(Smw5v;c6|3m)G?_}qPXt!iY#v7GuZhEJMwGT6qg?Qb5D*IS(;k|&Ty z^IndM$~C6$Hh^!qlFBLF-NrKuOTcO)-ZNWNMX@&_i1s&$TgCbW@;_x8yse;KmA3=i z9HqztFmA?Cr`}3#>(v+1iE(k+bsh3Dk}=*fVp~nIJ23ad?;K45f&tMp`LWn(q$xB+ zyFowUezFmM*SBSdnf@AO-e{xT0;Lc6Z8^gAPI%kv+%Da9v&<)zrJ!6doo=h^b~L5H zpkObrBSWRgWU_!g>(@o|$UXRems+2u&sP(UCD)(78IDxY_0z*GluyTJw*;}=dMgth9Yg~uPWJ1}PP!}~ zJuI>T%4>gSrjP?vQZjs2EG<2Kkh}5DjW%?D%>gxB-Ip)F4>0LFRC>-swz*+69P0sd z$#7_`DsEtEr_9ekv}oq5xfHJRvppv#=T&o8SCKwZl`<>DrpAKpSFg*7SstutPWG-52JOPEv50__}@V|GsX2m z{&0Saw|B5v!eI7fVXnQZvqNU9)oGd?qOh-4x~^6Brpu8zxdT*DeIL9QpJJ`1U5ToK z?0-w8dvC2Hy+vn^;^mC@2!57M27J`Bu^oT#_>${Jmv!-jw(6ACmQ<|+{(K2fOF>)` z-Uk)9hEF(|IB@b|XSFI;;QaX%Qv-451F?~Fl%wGF>K78n2Jxk~0epDnmBwLw1s#49 zn0|P57s5+!^aI}jc|11ti-GE{0Y<;;-Kp#Sm^arfpjRjj=%jHaMfVofhN!yl7Kn;lJA@Mzl0s?flPno5VlLxGCXYXP%pUf@8@&pNDTfCzu=68F8TKY|`PC{2_5) z{zzdnGqb))33CDbhvu2WuHxi!0T6rMWhe2Ws!CZ#rg*oyna4jN2|9CK z6oMijX;m8$eQm%Dr~Gj==)xs?N0qL=gZB>i6O`Dlq{jPv9S#50ANHxY9q9mM}#woeQc4~E*LJ%&0WAKOG+A8LeZ?& z&&cQ2M3dqzn~#8zbB3sv`-2LMBO%rTG#-^lMX?0EtEdpGG&{AN1PrLQvny8e_>slr zmk^vZ58(;<0JwJ879ZNcDI}84{H^GM;^K~RSIH7%1R3}^T1@ls0{<>hr_{sni7{z7 z=)!s6uLVCN!vVy@3WFzgj}XCTa%gC1YD#qSCx|(}{+OiTylWL?g00qOvJ!KwY${)1XWheMH&(2TX zu23($A-3Foa-xrBq_h(A=F7EqjTEoDSrpfyPorpX4S(-LRK^(ME11yOkS^iG>!(#z zzSPy#n$p6UGDzvo~-R7QQ8!ra`JLZL_ zYIX3hKMBLprlNbD@(BP@wOgLh;F;uZ-0=&L)W*{w&#!09%=WcDA|k>h+c>P?-Mfz+ z2MEt=kBe(T(E;T6J#%u0gx|hbS6%j2s(ipX4PRMV0XjfNMkd3(Vx1e;L23cKW;h$g~6u4`&0Wz_{ z*xIIIB|$vnQU2d5W2*U3nnki@h@0C`SMgBZvQ zy!2&ldw54fs~Bj4ONGwc0hPaxSK-!jejJDvI7qok<}M_&)7mT&gax3{ zR2HC{<_8R;rQ>u6>tkc;==tYtR(-8?#~2y)baeFNuvjd0$XT9N)ia*6|!^ki5iE~)Gmmpa5 zF~D73Sa@woi6#%j5go53qh>t~!MIjh@}!}CP;}_M<26X~vzs<0#l^3?L0LB_2D$t1 zM%wdJv;BV``5njzyWBBpseH%n_xq%8W5DHzN) z3ygl0hy+x-xwVm(<{LX6<{zG)zgRYI9;T#l2ZznMc%VPbqIE0cq)2K(B_ilc6(g@h z8dnQ8CNU-yye5aKTuH#+t*k!@Ze#g&eO@4O6S*<2xXJ05#*NqowCpF832&_J!gBrY zM)qKPObu@{k(j{a{}p?6k-`Z&mt>*~>(A1Hbd3pQ?`y}Bu0jbC_xEmbtQt^#ne^AM z(Wdu>vlqbxyHoyBpQ>OA-KcEe}=` zKR}(Lr*g@YA7P_7EPjnzyv%9TN@g4b2_)LD{paRWR!N^>3W73MZ!)3ap`*6uK)KQO z7py|{G$@&ewQ3wl{-SCY9KX0nX-9|92k%++yi-yDYt^QG@*{+6`*A9edSIKE)vKQ6 zT^Zy>!|MMbp+LPYe7ta-C(MmA?z$S31)$e{h~)NT*1N3OJ@|yZczS=8b8L81^=hY~ z2S3+AIK5RRHOX3k&if{oJ2==TGVbr^`49zl_OF5$B|xv;2Oy>z+cAD_di8+F7$Mw!5NxMTF>J%i?#^LQ*m97L zurIo?bo%Jgqbsw$`MRo-W>yCBX?Dd_cfd~+YKi2TL;3Y*nB%5(aBAYut@7*G9Fr@? zwzgpR-~ZEwLac2t>W-q~;=a`W7ecrt78>}NqTgN3AY+TvN@v^&7ytU;hFQDi;bBTK z+jeG5czs=>rK;ry$D%6UXW4ucg}pQ%&tLbPFE7?P(7vNr#-OxXs`vdv|K)8EN=m&- zQ*>UeXx1lWoKeT9GoU(YNIr{=1P~|zR-v2i-GnI$h4S_+GqmysQ^ZACS<|pwGAc6W zAt`b=GFiS$Rao}@NNOs7DnoJoO>}K*V?CHjplIC|OD4RQz-vgHZ?&D5mw6?^rQ=Vp z`RIplxUP1%%{!pu^k_P60f@YCL~1Y}Nt0az2f|7~2ZE~SG7d9+0(!L(ey@iK-p8lo z?X6>g_qY5mA!X52Uv;+?b%n4sbH!kjc3FQ9=fL=b5!yL8K zeR_cIQ{O7-4sLKoHe)_Y#55ADe$(=M4jNLSWE?C;R~;_X(C`f`kDIT{wck!FH%P|I ziY}N*ZFPt5%Dyv?+&@e4n&0InX?zCs)*?6B06OdgVtwF=7WkTxMjk$C25ctpJ7~1x z%1B|ZZ;xe#x3S{Bfk*ah{9CSx`Zhv7_q;m8F=fplC9__hgpikP@ta}-jBRwWzI_G6 zTSW-IeO_0~?)*GQ{7(%OJ7bQ%=wTqN(TrO3ET!M+abCWu7rs7njMkz`nn2WwBf@D* zZFXPQ;os$K6k5=QC0R?q7^0xrz!&~oGLOPK2U_{A+A6ZD;w-!v;dG`Hf>jc*1t0+~9Fi5r}Q5?-H}v9UQB)4vyBz|Fq8T@0AP$(8z4*Cr8sHg>k* z!6NIN+*5MpTpy7s>V!U|?O3RR3RF_-kcXsHza&@f3vxJv+I&BeFIjXC1bl(DFrSly zBZyp}+C2!BW`7aytOW&9?l_Qt z@XGY-hb1-)GXbEBh{R5VOQiu$+URYQN$pX*kr;2XFu$#h1YmAp?GIyWC*_D&|BE9C z8>51hVAK#lx?>N3e81!^#3U>YNx{KcF_HQOU>|E>ACYEAk^HY-Soo^3h;&di) zOC=%UK9vs#4{{?loc8YkG?RhcrT`KYJId|w}v=Sl})>3!)<2Muka6fBDI zDW@V*zM#6@f7WRpTO{4IvdXJ_1DkO#YgmrmAy=*`UcSCC4WfD)If(&0gd#I8=g&-_ zfVDCnuGpoadGKY(`lhdvdqC}XDO1aZgsb$-iygZQ30NZt%p?XKd~7i2N5Q7qQ^fOm zlPG)mGQq(?($KM|T*EyqG&D%UcUZ)_pSD)?uZToDT~t!yp1sA|nly5hP5e>|pr_Fi zfq@1KwHUV5Sx_o45+4>~uNuc~6&Z(SG=ZFbSI~JTV3f4vA#81*2ls&WpFiiu#sWD6 zS3GfyIZ_-Up7av`gds$vJD(}}f#Am+g%*Tx&n-20rf-w{to#@7L)-=Kw>y?(s-(AK ztvdbqUg>rq5QvoHRu&eRy0+k)HqrB`ek5AC;)DaxYJB!JfM~x7v=s=U^N*~XTSaDE zZ!`l1*{Q?xAuakpeu+@(hA@Vfqe+Z3kun?v@WmY#l?mRf0P-3(d)8$f^nw5k60G=u zbli6Q`d{J5aHNK(ByCfG-=sVQJbwsHO$(eCt%!ac)$Vf%8p&F<6bH7Uy4%YSUDH7; zJgaBIe6ij!Z|>_r!wt0(mcf$Kl-O=|!92Od%H5R!ACWI7)-56ZLMB(rr2khg7OjiB zEByF?7~XTGR$3(UJ!oY4uF>e*fNMtjVDA>;dGhh|q#d80Z=AU?0YMeriJ(6tAhf=I4Huy^)#twe zZCec%m5!EdNkDjjV(@X);4)U{s&`F*$AijI1PZR}^q0=jz!c)_^2Nzp78P*{&WO7n zxNcApfMf(j>)7nwiCbkAaS{aGe|`^0SN4HP@cYS%I9|fP-}iY6$v(Oy;`R>HBORn& zHvjhR+ZzlG zJ@94rmj7B6o4}F;OWtVJZGZu#iX9Bph?V=p;Vb|N*#q3pY9WH_+V`D$wM4&E4eC|% z$h^@Tms1n)wV3?vYJ(R&fnuLPZ|v4&Zs0y>xsYp7@*0sq=`py_o&)OIZtu8fb?ONX zElJVzAXrkrnOo|$V@&Mi%gs)%kWtm|shaVzAR|ISFz1t}{p7qup4c8-pYmUTOh6gQOLUe}Pn$Yjl|@H$soZ{4i5ejH~n3Rd7YCjP=L z0Yiulunc$>nClOw)YH6%k&zKQ>zK;h20cLjwdviV2W#P@uWBI8V%gSR>~zVA0H)D4 zYXh5UuIwPh@z2jzCV%`eLyt)9l&rU^|C|0!j0FDgqEqGLSlo*jFU&VU4?FLmCmEX+?=!e z>KIx)1Jt<4nVo?`8gnL3~YG8LhSO3Ejc{km>);cSxFAmsfc%&9Ot?y1)-?#d9U5;r|iSmD6(mQ zUruX@{S7gL8%qoIJ^*VlrQgLxa!rhD#fX;%P8}Bk(*67{@46yH*lA*g*sQtuQ~$=5 z|MD%nb8>OMUYr_2cL1~*J@^MmeZS%=lZb8EKo|@z%28S#f&?)QlKSi(kI4*h#)VX* zW((&|YB&f)2WblCS%x_z1rm2B`^TyO#*Y6CQX5Muj9Pi7yGsCJq+NM)LfQpzKKWuo z;&;?8=X(prLAL`UgF&)>`h7q^fWt-c?6mW|Db$+RY<#IZ;bE>nl~1oR7;<%BmnCY<7umYY0H2Q z6pOzS6Lo)JPHX)}7#@>Vt{<+2OA`M7EQr;d^G@%W)-L)2hi2!AhEj zxc?(vTOghX7S|{Nc4`i2CB|u}31EI7181z5*=-P+-LX~0mh;}{-^Ju>WZ&Re+P@_J zPl-c;Kdq2yel1f@*IQK+heROqtg8~`vJ*iJo;Ez?Vlfw8J{QD}V= z_HCU?2}0-v?pC|8+z1(sFd$mOlVY*<2|OfPn`O_M`G%YbI$NNd*zklL3M#xCSPDA{ zRnVL`{<|>svp`JiZ4hPcsTM_4K9+UrNx8qX_yta?oljn^d46=m1DsARo5&3DFgZ-^j+S~-9MNSX<&7$gUrpOd?^!v{kW5of@H&L19Hf3(57S`Bp6C$5iZr%`1;ko1Dpup^KHcBN)3-KsI$l0SW9m{S3mHkU;$26!IT8 z!+z%RjQdMP;C*Q-J%;Q|@ANOh1iM@QSQrM*@z%0wxPYFPWfxp2(lOk?hA@nd$I{kW z7DQodc?E`T6`h54l-75z9!yT#j{#V(rj4x?htK6*0rs8!S(pIH>HIQ9rGR}R=$44H zqQo~%pxo%GinkbQ>LNabtiMo~(K1bp3cHkITFT5|eD$Rr_VWujc zX82i`?3fH|-A-%x{{0n3gN%YBgalQvT7EqzXhMaN&fmm_cUns^5&ykd9iBKDuuI$G zSt$>o;rh@2(lb)t9>r^y;XbFu^|t8%zM5 zBsdDlIU3l|OY^d)f<_hy#N!F0N%hCwRV6n@|NLAnK_FjMl~kntyx=}piaG~ppM$J# z*zkQqf@4yraMc+^e@h#DNwAIQH!bkyC|#g)bH9a|T8PCmD1*ZSjCcj4Pt0xbqu?v` zT2!uTr1k!rNP1#DY?S@$0}!79FUsZ##{}+=koBc}zi#~=kb8O&j%6^=!f_vXK?bFs zJ{0|5Q3&g>hk9}3RmYJrB@ASghLKsrbcHgHX}@1Abe8Pu|a|S_~^b?y~5QVJqM=} z-hMVZx_7!J*wpaFhPu&7<4pK+GNYB(>|o)c*kg&;6qJH}oYh5U)amFx3dhDA&EVUd zi&}xPZLfT7_a`P-h4sKzs`NB}Jkra%px8B6_^QA((fIOku~XG%guv)*kWPkV3;t)# zHp~Yjps?@%+sZ~RuIgJsIl%?n85tNlU)=doRrL1L%cVZ4o{#kBg(ilX%%3-7v-r(t z%b!2{^z8Yz+NkNFvjYxXJ`q%#68iN`uL!Tm{HHo^F8d1E1J4nQaQOYQY4hV#%b$Ag z;yudeQMs^3R?*I~!sdU{uWdk^?T+1lQ)%<({O=+*u?!3!8m{%O|Ga(qyn7q0{@!2SKWpEogSR!^ zH(lJU&HVg*($bvOcU-uBzd3e2b74r_M1gs#0(?b3pR%esRMh}aY+KWqU&BaQDw@2L z`%?O$b+>XFXL>gR&8jZxdNVnwv`%PR(aAZCX2qHYKu0z@PF#EG$+bwYP2sWV) zh+a>bJe8TDA-+iT=9Z^BCwbl8%zWlXul`l0$NBXWs#LVs7`Fj4;R=Hv$AIY!rt{10_{BD+Jy^zlz$uZTAqkl2HqVTirx#c7YybP&DOXI^D0R0UVqiFTQfJel zFU>c3!X_RCDLj-Sdh-Wm+;qJCBXA~xR@DOI_?#3I`nsG`caRK x9@l?vTDm=IdfCKYu(1{&diCj4ay|LaZe}On|M5!WE#Sd^44$rjF6*2UngGcBLSz5{ literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.txt new file mode 100644 index 00000000..fae8478b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_20.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.png new file mode 100644 index 0000000000000000000000000000000000000000..92166fd3810bbd0da85c5ba2df4d312d782f3b84 GIT binary patch literal 18664 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

>kxb6rBe|D^f2&&>dx zx;mKX@sT9q`N<(Vxl9l0_!)4=zlm6Ns#W7&>*$`SZFh6qml?64da`u|X8Gtx{ZHm* zA#ZT@teW~;zfNUEb~^?j^q#`v5>+f7GsR2t2pi6qN^rPm@`E!__|Q$t|1vRIrJ|X= z?eH9$O|kZ1i$Q~5Gsioy20WG3$GDqK$ zj7Xk&or$0CO?>=B^~uxiQ3_^-Jgc~7<1_)1XHJxAv7Y;ef)j!WRq9hDO=?kq1(kY_ z-P4G6lCL?r@pJXwH$}cFTv>A2T>UxG%+;0WufC9w#9lSTM%r12CA{bMDB+`Bn5`=8 zuvu$p)32SWln~IkO!8R@``VOhGW=4Cl7eZ#OVz{I+_1^fyk&<6zJ2q|cm1c%7A&7C z{&I@q>nN#1&N;}d(NYB*BjLF-FNIj#=_;lVQ0;Q=E~zu0ql6*optmq5{vU6tlmC|m eFp@~|^P$te?Ynvr@P~p(?#ip*`6z4X_rCz-g>bF_ literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.txt new file mode 100644 index 00000000..46139439 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_200.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.png new file mode 100644 index 0000000000000000000000000000000000000000..221fae75d26b34eabe462357dd1b7ad370a3855b GIT binary patch literal 18601 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 b+v(oXvI{kqy$rtgLv;nNbNPev&By-_=MgtO literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.txt new file mode 100644 index 00000000..d74fc0b4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_201.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [2,2,1,3,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.png new file mode 100644 index 0000000000000000000000000000000000000000..e0bbc181cb11349c2e4b22c09e206a25b615bf39 GIT binary patch literal 18209 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.txt new file mode 100644 index 00000000..ece142d7 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_202.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.png new file mode 100644 index 0000000000000000000000000000000000000000..3fcb53108879a8acb6d3e949fb6249b98c611760 GIT binary patch literal 17951 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 Jr*ikn{{aYCDZBsx literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.txt new file mode 100644 index 00000000..e33d4339 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_203.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,1,2] [3,1,3,3,4,2] +[0,2,1,2,0,4] [1,2,2,2,1,3] [2,2,2,3,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_204.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_204.png new file mode 100644 index 0000000000000000000000000000000000000000..2c24b8e8e544fba25d94e518e72d36d8dbede752 GIT binary patch literal 16655 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 C9KjI) literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_206.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_206.txt new file mode 100644 index 00000000..d66d2098 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_206.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,0,2,2,2] [3,1,4,1,3,3] +[0,2,-1,3,0,4] [2,2,1,3,2,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.png new file mode 100644 index 0000000000000000000000000000000000000000..43bb63ce36a86a10ae17eb10fac6158fe84ecbb7 GIT binary patch literal 18840 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%0Aj z0GEsZM#BFEv&0aRZiY+)jez`-EA))`gLcKQyIbX;1~01%s@a)8uwIv-kJr$lbO=lQ zEEwGhcFXa9z$=l>nCnD}a~(q(4E`h$Jg2)V=I`gn7j;kxSf`uO-&j5$AKn5$38}Yc zxJB5j8ia+0QmYF+GCwYC!cGuIj=bvL1($e^5YDRCS@`n?$KW{7C%H!VL0UdrJdR zzz5;Omwn&~l46o)RyTJv_(cEbvd+onVfX9(SHC4(ag(u=7yrDoMMxkk<3U;keyHZM5RaSy883<6)(9$+nhsgi3SKVXXYsFJT z_*ZU?#J|;x_*%%0@xRqVeuNyoi?=Ql64B+%>GebH@lgIY*5SN8=s|W5_x(4ZMR>RT zQqeE#I}B@fnqdP*pXc%4_}TpSO}2FtG!#r2n^vI2z#$0K0sYe=n(>G*vPJ~*#iQ!h zrR8ObpZ8ri*zs_yT(O3aXM?p%{`zTp4g+l#K4D>^N&S1yy>K`M3$!;xrv;3bJsy2R z%LL(R^KUF|vK*s=6gUFVbS!Ox7lGl{$09K8TNeDnA{$YPWqt-v{&;KXvk57)j5_@Kt!U?7HhwCBqdAqG5&uoR) z(ag8#Wsmhl2!#)ZC|fpNkwak?kdpMWm;|)5dR6NsOO%B&#-m4M3j;%T1NappZ63^B zAY^3`{Xz&&_rR>pLA#|&Cq%BWGr`VW?07gPtQ52#WLt#a1Pr_c=F!RU7aXRz5NU#7 zEb;(@ycXKPRaE1BEjTOWCtz#HjQ}J~+r!`HzAmvELmO0#hQI$UP#X|0uPp!MpTGWh zoFm}4zPQ(jY_2MY1=l7TFbVy+S8m@G9K-pF|0ZA+u`!qT4MX4)HFsgwubuI zsnma!+1Er>^$ifkB#}Lk(Zh|<_vJR8dxw4X_Uf|n-jZ9v+hYfPjGVr22%x(gyKGuF zcjkG2dK_t$Io&th^Z&TwUnUGKcpQ2&K8ng1a7f*=9|KI=6mlfDA}Pk4kJO?c&7VQ{ z6~axC%Rkx}FMU{DLXSEh1(vRF%snNoO9|$H+Ve)QHn?Gu&9S*7_ z_?OLv$NT%k)4^)-C4%fbE1!siQ+Fpm>$$UQ){6>J6nR*U&^n6PP+zQ3CGV3~(I~2C zw|E^_KmBy8nX|h-`_U}1dxESid=2CO;!F2>I z1u9iPQPt{bbb&-hZ&9q>ZP?DOR6|s2yyvgas)JvEq2AR``ozd(imxu3^f4b`NddP6wd$5|M@KFDQ1Hor-f>hz>4T1D4ro5rE@MU1JU5%GVTmN7- zSXW_eXGOm`CEwG*Vth-3yZKW|-WxMp9`_NRux>gVn}}$eXtFcsHKPjC`AHk&yhiJU z!SB9Yt8BeZ+IaPgWQ;K#Atg^K_$`=#m*M7geh=RSbA$VkzkUyT z9}>=8OVXQMtZ!uyy~oK1?z+DU!mg`MtNQ2m`n}01I%7)bSMtygvY=Yj_fh7@*hVuS zsi{wrq|jlX0q;-h(VDCUzgEU7!^ir_KsM~YF%2PlJ3(#@JJl?l+h!TtA$Gt+UyXMH@s|IKJN_R$NZAQ- z>#^6}B}`~5BN?al~ClCG_LlVf~A^h{E^QbM*!71Gh@|Q^9LLpX!9ne}$OKq-(B8Uw~tN zxar2i!#9r?{muvcX2JjQ2kQUDga4C{?Ga0jE=Qa>@8coxi%X|uB^4hRJ~HzDAH9_s AFaQ7m literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.txt new file mode 100644 index 00000000..385ad33a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_207.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,1,2,2,2] [3,1,4,1,3,3] +[0,2,-1,3,0,4] [1,2,0,2,1,3] [2,2,1,2,2,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.png new file mode 100644 index 0000000000000000000000000000000000000000..0736f67fb424e3c1150027e26709c793ccb73bd6 GIT binary patch literal 16825 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 A7XSbN literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.txt new file mode 100644 index 00000000..d837f526 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_208.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,2,2] [3,1,3,3,4,2] +[0,2,-1,3,0,4] [2,2,1,3,2,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8d076a2495937fa19df55121d3168a3e3d0f84 GIT binary patch literal 16754 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 GUj7dyh1}Et literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.txt new file mode 100644 index 00000000..c219a058 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_209.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,1,3] [3,1,2,2,4,2] +[0,2,-1,3,0,4] [2,2,2,3,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_21.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_21.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf15be0961b85b1805b400d4e4f30c48060fcf5 GIT binary patch literal 20848 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

B=`o*`K! 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�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�t#Sl!%gv?J>8!wiXmWpQ# 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_210.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_210.txt new file mode 100644 index 00000000..3c89bf76 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_210.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,1,3,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,0,4] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.png new file mode 100644 index 0000000000000000000000000000000000000000..437d10b918a2bbef71c64d7bf549cdff68290d40 GIT binary patch literal 17861 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.txt new file mode 100644 index 00000000..3cdcb388 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_211.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,3,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,4] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_212.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_212.png new file mode 100644 index 0000000000000000000000000000000000000000..dbba2e7eb75803df9dec112d3561ff2bef84fea0 GIT binary patch literal 17052 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 myqEG%i~ryLc=ih$ez84F?Pn9 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_213.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_213.txt new file mode 100644 index 00000000..85aedd3c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_213.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,2,2,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_214.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_214.png new file mode 100644 index 0000000000000000000000000000000000000000..62b2bf4145e1997b2d2055db02a48e49715d2f97 GIT binary patch literal 18059 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 KlCNg*{Qm&&IJ6P~ literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_215.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_215.txt new file mode 100644 index 00000000..c6d2f62d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_215.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,-1,1,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,0,4,1,3] [2,2,1,3,2,4] +[1,3,0,4,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.png new file mode 100644 index 0000000000000000000000000000000000000000..4a30c964803379ce35d0f6dc65c863155d31e699 GIT binary patch literal 14819 zcmeHuXHZmIw{05%Ns<*51SClkNeu`bl1dgqa#BK*X|iM`3P?~CL>iDR0wOdyN)VCI zNNSSg(Bw>$;jTu`{XE}2x88lX>Q%iT$115}vDeyb?>*<3V~n|X$bFTÐUKp+re z`FpYtAdpk7xc~U4!ANfzX$J%%@=;z^O5+J)F~Qd6YOgzn_qy&q8r=qE>Izpf8**)S z>gULd_wC)Dd65kaePMt1lw&`A5X ziSMsUI34oChE>|mKp^j5yt6z7fw1%A>p&p)@uiC;^?a*}R>vE${DT`sJNwhqq{3Tn zSY^e{S~*OG+wyRw`}zTWu4eX--STq1jszV2!i2G+V$gd&*O#lat|yz5j;?}(#%DV$ zc&o)Y{zM-rm8%fvav|VF8Vfv8;G9nuAA^AX7?N@LIE7 zLhM0y)ml&9p?s@kiTH9QCSl&YYQ}xJkxTlK@XeLx*qZ%Rfw;~0JMTTq6_YM{XI9ni z+5a3ltXK@Ux4*CJVAF9F(;3&_*9Y}I^lA=F{o$DvD4@8sw4|b}tX7h|Tv+0`JS^@p z(cFAtlW9qXWAGV2VzD7EYO~AAc(k3@fR^xRJw9=3cBMLgi)JicQ&Y%iLikWj@D(f4 z;=Om2Lc2{@^`jLRS~vT{G1h}Fe>R5ek+lZS<`zTZZc9Hsm#b(F*l05ZR|7!gd&f!TB~tw%v$cePjVrCFC5 z8m(G9vq&nrck{KTgjh|P457__7F^DuBTjxvuB)r7R&B7M;p}F1pKIqvx|rM2edccS z4>UWiZEYQ=t*x!$K~55|3FyTF@6ONk=lGh`0bl zSuS4QyO9wF6|T8McHekLN_bZf@rfaFgg@|KZkde|VXmNrjJZrXcul>lw5-EUTbG~@ zG!{L}25)Osuy=GlcUno)*;=X{8#qwkOJP3$z3Tbs8B<19Ha5#7>5Z7l>IN}p0`c6z z#WjhS78>|4sGd*5dm_e)2ZI;SQG1IUdJ4M5!>lDWDGO*5judmTk8`nE1GT(iEp}h)|Ub`EXlCB(j9FHt7 zE9j|<#GJ+|7Pm3YnvyDnB^*u}xxz$~{N+QGrW!atU(7@=DI z{p45hb@J@Zt2l^qjH>pte-v1DhW2eQ)f$dryBN;VkXZdZI6z6Ih}Y<_!t#uabPWuy zGBA+3q|pi673$_bN%t{n)hn@c&?4equoj3{*8QVf0x^bIusLHFkkc!SG<+eS9a+7v zHZy9{T)5^D%)2Flyc=HmfR2!-m9`yyXM1$of7<_*i08pB`2pu*Je=lTQqs{%J!uwQ z13l&ZU|8kwBS8t4gIYX>0P2h+qbFm5`NL8rLqih1pK33o(Bn!?9?x1mX47lJcQ8kb zE|R@dA5wB=_c1DNVqR&}MZLqy(VB+51JzEhul4qPjjHEIIE(g%mlpFzrh0u>cu!-f@+$98Qs!7vysSe1vOTWe3~G15RUmQZDA zM0@4RLd9Er5Bqn9lUIi&D6d$q^%EUF!@hW6SV{te4u+U8WecY@}>K-W^?H`89zh)Zw5)OI& ziqo0x4NKfq3O|LIO&UE_RsFZb>a#HM(iyIlPR16kSGz~?hm_Hg>_};D#RfT8ieX-` zp}eng1leY~MN7d`C&!ioc!vlDe*fM4SIoI@`&v6G3O+%%XeEm?%ogR8Y>X}xagjmU z3c1K=68Ikl25{_ae^1a<5bcps;D%d297`4LVg-~g!Rg$yc+X09H_ z`4}XP_E6Xc6Ki*@fU^(O6VCILiacXfn}z<`4DL{O36c~4d{8KT{h=Jr-L8jB^}+lOyTUFlDRwW?(9n$KkhmojP33?jSswS^ z%=R6x*~V43U1J{UT@}y3t&!521GhoCk>U4+<9)l4XCybfLhI~|ukC$D6k`&$DxIqG zXvCL?q*1SRjt-3uOjC=kbNP`S@rK{srV-*!(|h(c;&(hbx0Z%d&uMCEexPx1``9~Q zYbd+iV%Gqq9RVQe6Q?#)|(WClqU3Dlsri4wU(6J z&h%Z)m;COU7%gJ&F`UWlV@>?|34auTWR#nBj`>vZm%P9R8wU~N5At50n zF;uHrgNl`ZoXDyVxL$N1#CZ*sT~`zLm{$k5d85E3Wj!h!!)Nj~Y1` zdNhGjS{UO`oc5V|YC?NhCm@}6&LWbvTX*-(6L)tJ5835`BI`xhahq8VgbXeG(`zRq zfytcwC@S%DH@bQ~i-Zo&VXSE62yYvDZW@>5pVZT>8hvLHpT(qsE%J38XForf$uw0* zd%xsvs_=eb#gLt|MpK%8h~=eAi}wmCWNSos!YvWr;XOSMp<3TWSUx(T7o!ZaY=0QR zi?Jphr(dhT)+{7q(OSYz1?8Aye)LWheY5T_lNIYTF@d2FB3{pEcMd4nRCWjvqApg> z&aY!cymy@=upyw{ZXaM4`jI=d1mq49qYWVxhwX6Jj{e{W@zpJ%%+39^wNg5{f$&kd zRNX!I`7II>BfIKy4v%FOlVIw;owkJ0u**EMS1B`kYTrPn9I*}Y8}q$+T^GFfu(lm^ zB_$=6&-%o}UdJvA(1u&w)z#L18y5!{*t&?G-xW}$Z-l()w)7#rmJ}`50 zbIT0|@FTj!2A|R~&J*0q_AJ?3L6XW~s=c;}IuElB@Y?Y96*3CP19#qi{Lx!cq}P7? zV4|9B*T5M&zWbnLaH^}q%ZK@FQvdt0!KJ1AMt%c76+%){()CMGZ zR$fKHi>YDKXhKu8BJV-&5mP3)_s~)ELFBM|p=asdFi%ngsR7~Ufc3Ju0;l2jfMVMc zru^r?Fbu0XU$Z|RE%{uW@;(WS_Y<#!JtH*@O-XU__Sb}js}g0msmt!LS@VtuW|2v> zNR3!ZvUoha2uMPGKNnA6PH#&NCb43>D9@XDdmQldos7IxryL;QW_GY`~_c^-z6tuiF7dNun6!M3E>5o2}=GZ|wxmg2;Eu^{p>%a*#n3BRIhQ~CH$ z>;1lWF-0_d`Q9Ae1+t@v9|f}d&Zq!T4OdLkN1X~%;WzH~-hA+7~EqT4Z-{0v}PSnkF-$HZB4E^HLMNNks zu_Rhs<5kZIuq-{tlD`uhGDv=VL@1q^XJc7 zkrjwKl@LgAXP4d~N5Ny{sAM$j5rYMvcD4ZPeVg_T8@L7UWgsE%7LSD0*4ko${ucJ1r4L7ijlKI@ZZ;j1uy|=%JVEPb6xioy=!S)N- zlaTt&Yn~9CEwfqV zs37|TkfJ|b&{4>A{Qfs@1E%s;CG`ZjY1(tY=jKw7{&d7TVO!&tj}~CdD_-ss6B9Br zGOk#rpr1TO)wii3s2lKZ9T`*%lj-~_fua#<&1+vj>7vq^1^3icr0VTeD|Q$gE9=0b z>ya?sV|RCVuG5J0i4^g@ySVriOq&s{#*GQbQ zE%U)ynuNH??B;Mu8WC#fe61WTp_I0OV|lgY1}+#of0mf&8TldU^_|f#q8a07Ic~(@ zSfA3a81v$+;xVP)b+~5g{?Y2l*Xeeq!fT!67?$xAezm+_nLN{~E&cA;6z-POsPEh@ zb#gF8IG3rDB*9G~b{eqUxB$M_NXn}?0@3yZ; zS~mKqx!)>cwYs}h^Z}qlp(@|aoA<+_dg3aS@vU^e3ci8|ArJcK3TUTo-}toEfHa;f zdwW9Ei!Un5Xb!ga{UYk^Hg1l9c*}k17qTJJ0aR;Sa7v?J6+V7oj$4Vi>bd+#?5KW# zqu5~NPE^s2+_%-ofTIckX9ECEW)4cl7;4I`#L4>+Mos>P(zbZ9}zWj{WZITjNL+>-2{405f z*Vfjw&(0|>x>g*;6N3b45H+fBZ8OJQGnd8!Rqk@_Q3$f`%YbCjvJRht8^{&$$e?E( z5dtD2BErJ3lXP^tXcA1A=rI>x%*M5P?ve3TuYPyvFb-3stQY91y@hjG&!RklT7ABw zSej#g|E(s2@1aST<7s_oY~`I)vc-FV8}sw?XY>SstK|{JlWJmJT?to}ede;K=cY9H zbs~j7zr37w=#h@Du2qrlZ^vC2LpuE%d_4U>!iUqv0Gr#j^9-M=x)*#twWt+s#Z~p} z^44rml2W#vQU_Og`AD>_s7UY^4+;zlKpTdU;LzjBX+}DkeJXQ}wtCJxC&$K3a*i!l zV(^Zy@Pf3EQnU4w+-4BEaROVk{pi?ZL^P3VqG#?hAU^?*3Xwm-gXzZAg4Qf# zG8AT-AIw5ZXOz0~&8Tno7PkA!Q|DD$7*yakfFt^0l2}V>+WP84Z zNyzQJN<@*upqR!B1nTgdd+xf*>?g#+*oF5{qw2m<=Z~GSh1xQR=DoLmCUWTYFaP2u zZaVGU#J_WsQSF!8w{QMNP4-MJ{*9U(m=buK*(!8LY*?r1J4@`l2+p<-W2(~%j~URT zoTwj>zDoSqu;%D2K{YYQJUN$+xMc6pXV0GL2IQcA+DhMVx$)^Gpw(t-U!!_%^7?OB z9|Ai-qn#oBH)b+mUj2)ic$m*b55|siod%Lyv&kw^Pf6hzC=h2JY676R_0Sci94L)$ zS_nUP>~I|}p(<0?<+2GcCcupD?o zQ0p&MQR$J>`#bC2G!*GnRl-xj6%`fpsz2}Ob$D(qbKF5ceW;>GMj&^_7&m2XDEqxw=9?LwS=5Rdo_oZ(6b zx~o-dgEa?|>_AWU9$GIv7i$al#GtNPg$@us?1kCcMNn(&>9t@MVCXphk)!_hVZa9@ z7mtA|xi6(}w3RlN*N7xSU`(F_b9Q4gho3RtOB)8X?d#8(s=mv4hjYt=i>?c6-je#m zDxF_s3nAh9Pw3(Y-JPAWA#8>$J(-EShxP~PC_PjyBH``Z&;9*I!hT=Mm{8swQAoQ0 zn~^gZuhF3G2}$~~!gBZ+EIK;6Fqfi=Wv6~B+_diQ$fB$JRq}AnPN-4&h7hibw2Qkv zlXTikNCjN{AzUS74k1WgfElM(j)})9R+n^?s->XoXDu;>k#)f*A?Fv5WiCPWleI~C zf=|Jp`OVP1HHWdjD|kmOA~0Hk6}+VYCwyq{PiG15-NK}x*SW7h7ZRo0)* zLRhVq=CcjDsdrfjq?|K6R;grFEbc8{zj?xQ)s0xJ5Oal1C{73FH3GZ;FukSF zJ52mRbVfN*QpF^C-%}A3tnD;5sd*q7iC}vPZR6Ta9)YB4U7lSUy<(NQEYQ>AsSEpO zZ1cO4a4C&j@7hve4*h;Ow{57Uf2&qBuuI?C0lSoYQ%RBldI7NsIfh(9X`!ILF`|c} z9+(hu!5}34F`&w6h?~xDdd$4pzb&*NZALzMT`GO>WTA{!B zp;CTkO#pesjrW-O z32Ih7sJo0(8_oG9LZNx@Qb6;y?D7{zCh5nE5F*66e;uuHKBUL2v{6Az0hp%|XHYM! zFiP5tk1hDnk5`789G)e>`6PmOELQU1>vW{So(=EWR@Fzs{%A$I73^JaCk0H)O=ab)| zBVRW+w}X&D3r-Kv|I#%!GYkCKV)h9bfpeXnn+&fBMB0H5cz_**2k|46 zllfs+3HxVQU!G^xklUqy7wgx^0bD$jDuQ0WXmZRpe0K2|yMBnu&bRIEmQ!NFXm~rZ zz*r7KTAkn#UG7qXnA?W{07@NkzE8%!f0x%awzcKnR*jR;|Hz|yxFlmu)KgKqURNi5 z?+k9H^9kJ0d1?n|8f88Uv3QhNl2BZje6G{Cw56rRgzS?+1=_A8ObkyD+O=lEA9X~&w>=?w$1t8S^sM9z2ceh<8ILcHSd%eOZXjT z-O*o)3<|7yAu&BaoGE4HHIL>#ER|cf0!j8qcF%>X#KSsq+U*xO?5Hd(q_m~L-4k1s z&?sovI0!DeR(K8Yc`SvEGA{|_^bHLWS0~PPTIfD`^5pF|)`tE4+Xs!uvg{1lWxo$> z0`yZ2^~1|T8^*`S(P-+LQY5mTP5c{EZ-i+s53f@AcFFA@SbmS93pj|d{sj>Z!5;v$ zuk5GRd`)GL?qLBoQ8s61Q=uWqGPux;&BZNgA!=IWkH+vk*30uld_y)umU{0hY6a*9 z{Qwx?!A`-kg&^jyGtSGri5Nb3^Jb&|G6zVF5tcFiv(Wf-8^-uI9#!-nEM2FVRrM$S z?4A5)1LYxUzwTlmTU1fGl1;eGi3&TBV#hffWqf(sl9rRvbaA;{2JQ+zh`az|5k0_~)D7-v0$3nIjB(XH zL22@sx@g977@9ycPXQ3fa3TXek=^VT$}B!a7l1mAwz6x$yixBlTkE-m(gD|sGhsdk z?hnDd zyu2(dnox7MCS7;d%%Iul0mDA_NUod4#>ReQQc_YX9JKxAB^)bvRYg?HbyI(*>OCbD z6;xYWoF>I-nE0`z;Q#1Ue4SD8Omtr^`-vWTiWBwNWL){x=zbzEUEE6|gWjXXPwYURc;|Riud0J;zlJln(^% z=*Z@4TeCGj;cq_SBApADhX81N>Hlj;gZB0Ix`m!F&KmdwR6dee{#7% zXd9Qf8~_p$ATn=2^&;dLtz}%|HoyoO7{SSXZboZWmpB11;s8bpM8%#_FrlhdGCK%^TCb)79fKh2pR>;I+RT6R1cQgTpqv8&Metrkq}+Sjl7B@sBYFokc7(+6_^1n1u5(G% zM_W8&V`IZiPyZHR{+9@G9g;nYnD@0B3o%L6@&5{XJU-v?7DwD$248*`*vF=o6nIqw zXUW;!i;aoV&5f}XWITyUoH}L@5)uju4tBSZ2E95}Rn^EBFPufM{wvim*YNwV?<1W6 z74+IjsP4i>2i-s$G83OjuZg!k#4C7G~X2cVR{ zh$NrWg;dU3fD znzmkq0fZ>dCJ%|?)*kvRr(0fL##rC*4hJt~rNznuu^=HH{{n z2k8_X+5aM38CN70`=<7MN-Go60Kq#&Tec!ZjUzfme^H054U?1CZRcg}BxwP&MhxuL%`{VJ*QjaM#I=t6JL*d z;3KTz)DXQ0^vK-& z4tR5kdmWIutiZt%dpw$qk9#L?|KtkbxKa-)X7o;z$AML4dAX>B1pSQ_@HUrjt|m~# z-z0E-$%oeqKj(D-YII6%5BJn;;l-ywlW<H9*GyZ z-gBc-Eti0TWYayZ257kU4_x)6y)nHO#z>SiGXQd_0B?IRvPs#4_xV* z;q+Wf-fhn@tvJe4kZUp3!Gt8|JDxQVyvQ=L^QgLg;cz*%uY6?&zrKTx6#IPVP3qYf z-peiETr;Jzt$G$)(T7==w@2!YRxL~}>RuzU!df87Doks0@ga~aFQ*%NQ&Z!DgKtIq zXT{cCc^7$pI?`~mB+u}PxMS&hpC_r4$P#z=s8ma`ftpIsFmI^NwP|}1QC7N&>k(8C z$mGl2Ilo~aGv36M%w#`U==k}Gl!R{qTaA^0Yka$$^n#rf6kHcajYoDm44q_IKNI05 znZ6t&|Ku;;{KIFw!!p0`sUlJTB$y!w#~!hp?&;IRXBe*27C<#2kSO^P3Zr1QsYsHi z^dnSL?6>bJIW&bf9(oURiq>6|(7#yoW!1>-1w4&@pXUlE1k%LZ6OuQPnMtCmeRY3% z>}zIw^^Rj*Vvd`$>FBmj4%k;UOZP$tIA-jU3$*+mcI83;MBZ%=`%xuYFdO3LbqexS z`eFh2$n0VO7x>2PEH3&kNHv}Q9}Qn`K@z@73a}ll&)!uzcOC+nlcy+%Oli(w)7bRB z_Gl#Q3k329-eqZY1}qoLKP%Zq1A)w3gEcj(F1l=&)}^|aM?7zB@`eV+8b6LVA*N3f zSlI5OF`=i7f1JS!f&7rJtv~lI_2zBWSk(=Y+`H|QD(hdCOXcgCNJ+MSt!Ba06_WP_ zl?C_sRB9pi&XVPWwPw6Y4LF1t~ZEovJ{-%PAyf(E^X(ah%i6Z#8yA>1Q-?D}NA3 zKy9L>ZSck5|2{kKHAjhiOuCK}38Z`KLs&1IflxBbHDMDc9ii^EwMT}fH*~vmqrS>M zf-3I9TtrtfgL|eS#S(P!)lklLanlhG%PmQY}p@9k|XyGeS zo`=9+P%?6Q=~~xaHyH0PFD)8&GGX{SlOI=+(&fHmoN^QL)N^tudXe8(X*a~Qlk3{e zTHMLzzk4bbPcnvu)IlJQ_Z(cL>@66|%CEV;;*l)wY)4O}6YCr=9_8Ho{XB~IYM@%{ zb%SpvoI^GSSu*H)+!B~CSB?Ic!SsI@dXqLtibM<(|z{i^qc{vr?PtwMI{{gYn BCj|fi literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.txt new file mode 100644 index 00000000..6f1b9975 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_217.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,2,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.png new file mode 100644 index 0000000000000000000000000000000000000000..3bad03193772b196a795003b5c54c849c4274188 GIT binary patch literal 14825 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.txt new file mode 100644 index 00000000..3ff3dfea --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_219.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,-1,1,1,1] [2,0,1,1,2,2] +[1,1,0,2,2,2] [3,1,3,3,4,2] +[0,2,0,4,1,3] [2,2,1,3,3,3] +[1,3,0,4,2,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_22.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_22.png new file mode 100644 index 0000000000000000000000000000000000000000..e486e32bdd2a98458a7af676918634e567331e15 GIT binary patch literal 20486 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_220.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_220.txt new file mode 100644 index 00000000..d119e19d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_220.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,3,3] +[0,2,-1,3,0,4] [1,2,0,2,1,4] [2,2,1,2,2,4] +[3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa0bde4b7ee5dd3fafe90f042528612d1b75541 GIT binary patch literal 12705 zcmdUWX*`te|F$JbM0ee`Y;|YLT9gJMv>;ouODa>7Y{OWy6YiACOh{%ZLUzqqLYB;p zCUps^CbBd3eP93QEOpoK_dK8Hd0sv*yqN1euk$>w@AX}d|gm>QqmwR7K2CMKp` z`g*6#n3$N~Q~!3bfGc0hd0Lp5j@-~crETtqoxpWF!}V`v?o}6@zWn$~!8c-U@yn@( zU8pO88p~ey&?Wh)Ym9p^3JXibDY{cRNpD=-&1%0p8B-5|CE)%tvRP4sjl^G z7%LkSQ)sOAO=c#hVP$C>CZ@~VBsiIv?mdMwGlj;9#*b&4WmZ;JcKf|rRqj2w{*QOj8wD?m_#A9r@MkaViyO{+6f9uvpx4pSv9`AM z>$IS5Yilbp#-vX}L)U{2jGT>JMcq7h5P3i16a_Y)2DiHBx-eK)Voz0YFcn5m25_qYGI6F=z^!N9Fx_PEY znEejqvD*Q!cqC) zU52-=P1*xn;vh@d6}MlWZb2@mf7im<2an-jSqOiuYeqrlTHL0d^ylzXl<-v=YA}EN$CDBgAdoHbhP>uIGsn*XVy^C z)aSY73M=?4{)0|9^^GEQKG)oxRsGPwqcOYsKwObJVKw+25+?lVhL@$k9Niw818bGY z!1fz=ioyQnwHtAl^=BiuQDAyrP>f*+f3Rx?nlIrLh2??8b2Eks-3FE`r`=@Z3yQ!C zU(Ww4-iz^|;+5T}_3W}w(N+rJ&GzEtpvDDO%6~(FrNbbDcE$s_dJ?vDo4SyOegEjP zl(}_9-%DY~#nUqN^pjHz6>2!qrDh(S=h9Hx%Q9vy{CjAx7KLB7H!X>ev9{iWag=Y6Y`NUFd6EJ2QRaFWujSiSP0=Hr3Wh+P%qM~44l&8W^yFz(!NVBgvgt<;Bv z{Nbl{dMnRZ`ioil!xxjx@_cv6E-Fce4gE7+U0r0djh_;BZB$r500Wme_w`UaG+NyF zRM$(_j#n&sYa;a@)vY;`O;zcYA=`ak}8AI1^lC>Zv}_cbK68Ce9nAu&Ct3OL}^za&XaL=`gm!HokOiyMKU7?_O9*e#HO_K*^;UeN^_9bUU3nSWiB(g1!_i?2k;PS2RW&sx zXdVg+tWk>G##XZwuoYQ!h0_bc8+kfmz4~QQfu_PZv!%FN?pVol{ypt7t;6j3u}eks zh@9L|LO5#Y>Y_1c-x9V!pkuVjJw)GIVh@gYp~FiOqaSoYL{xNge0=vMPHeBR*drHN zo_moCiXn^c=2m~T*qm2acg4)^IME(V#A%}G3u@(@Z_5c*!0FZs}a*`GtY=?6FBR!)*ur7n1b(C76y zaHyhW8)b38mkcJmnBubuYEF7ymLB|QrNWGs8-G4FWWnZ>#HUr~!qB^n+{W{;=Pb{| za)&wf1wWff?SfT`*Ca!M@B`X<>vd*ExOjh3&SgaW)dSg?C68A6tdNr66c6OYcj%j0 zzbgtjpzpaO5Rz%pF&na9sKe-n5(20fX!qxU`z!g)Bm#((yjFSf_TpSo3;c29^*KQExGnehgAhk#P5288B+CSC6;33KOoVIlBi^AWdZ|i%Hug3>Z(X z0K+T2Dl_{yQZQ82Xg~2^=`= zwep9LT;<;+$&`mcfluKFCCa?03yo!P7Tz>L-2KgLT5J z4ZLSJD2;7=ka~P_+j3w1AV@MxJH*M3MK~BFGZpzfZ7PTzF*|T(8M`uko|Ga}k|WBK zGWH<1tt6Q5NtUb=%;hVGX<2)|o%3pq*7|g`=*xC!wQr>GA62V;*zq14d;4P(rdf(# z92V|g`@Y5vNo*j8(iJ7vPG%Qo56)fQf=S~&q-yc`QADxtH8p>rUn{-ZnyOhbOF+fF zE?Y9ekl;Zh zQnk~iGRyUg{0{34g>cnGQq9&{YF^aHbI9A-Om&PdE-euVw#;Vm=Lfp z80r%Dxpt|W7FN&691d`jI*BetkLG3J_CV7@wS+92s%)^Ye~Y%dvQ_s;2hs z1v3JsD1mu?to2`9^YMa1_pn?}>7J3iPktw=L$dH#PNx%XLM1 zWm=(ydLHWSa|Q7r&QG#um&Q}qNn4vECR+|GFHA!+ zD|QC`GZuO3Rm@I`L=P7wV<0}BclK*I0BJEV^Q+ev6V0u3*4-@cKn6yVm{lFM6DK;! zsIkE?+h{50kWo}g@LCPdWSWIm1CC&+*Z~_Ow z6)7IdS~qUwHgB(4CTcA^FU@5a>u&i1w=5L19$AyD-=hYDJvPpAc6O#vD7US&s~`4s z?x61Q^=)@{le;~i#lozRA|*X!<9qkYxyFqw`^zi+R$xCI7W-$R=Wz3Ca7?hC-dY87 zBPfv~v>nwQ!~)m5dN6%8l_@3}BGn=Qf8{1et51v(JT|5GLIAd$==Vvu8CgU~bM61D z&ZeE)x31*R3B~SSVbMOcTwM~6f5XHl=g1tw)yeqy8p2Jr&g{=-?Rpf zYqORW58yh}_3$tXaShgKR}Cxa@2(jj2EoCPFL=bFMMHA$ULQx==O*Wpwc-+*J%N9#Tu&U1;b zbc(K+9@yP8o+2Dh-`z1ke$_bCoYVy}BzJT`5b!0qdr#*fvd|qU@U602V}@md4~w|r zqHY?&Q@t}+{ZotN8Z)JU6s+epq?_WQE?;7%@~JhtKj1m~kxMD`ZUw36`{JOJ^ z5@pO0jT~IQ^eN9krJSH7Hu*D2DQ)&eE6dZL(KyR?WIko9*o6NPyf05pbQ0HfH)UPa zk{MeSH~c;t7`fteOaS7V8D545(Y}H7bvTzK7tDrm5LcT!(ELi|fvv}QUZ8>HwVu4! z+`f$^kD7rI7Io-Gn91c$gx=-AEp8$P1720;W#sYIgrj^Jw@%r<^s#i4$VIE=h7!M5 zBzW4b?}S7cyXxG`0LGQGiHB?=MJ6Yl4-xANdpZGcp&Cc3$kJ9#wi#`42Wv6i+l5b< zy$EiF7*E|>qJwX|EG4cc8$ zogat2KJg0CIJ6?)?YnK;)&>Ak^MB|2eC9U^$*^qie}mfa@Qxujcb!Ij7#+=VidF-u zD96F2r^|PuwtO3u{Sfi`RKIcPHM?EWS`{H72gUubA-B3i<_2fWD?`>HRoS`!$Y05Z zl4E0I0RaIB1mal(G77c*Z$+E-;=Pys?0DC&uH97(?zd`kwFo?Mi-NTP$*(u}g<w}#OKVZ=<3w+GF(K*?M($(1x2Q&LSrx2$% z)TZD{*^1AJL?R9+@&oX=_P2L$eKWUC?cT(W+JbjC8hJFedCb>3MI*o`FwoFX9+)K1 z6n`dW$vjAHx$&0W#%zRx!X`@FQ{EtxkakIrpPzqe^1G}k>rDWTQZ$2drt;UT;vgMM_GlK38~^P@U@O&w+rQ^#paY z<79s~TOgf~g|i8PU>@c(+o;k^+A7ZqC+uRlzgE;N+D!HpLWv(xp!1*)&Y*vRBzq2YGA{$~Y8i_$i_sQG0&hl%6 zFoOj!QjH&ff_F#)*EyAEgi*g&ib1Hg?u*y)%e~{V^lZ{^Wv!rodC(H?gtMsC!Eagw zMBNpGa1ZGbd}3#l$AdStG%#zgr?3_^P`cdP$;(JI=|#dz0`GI+7eTqAGyBv}|ZA+eMKzw8jgn$(9knPYH`V0Rs~mw|;Y$7`RuIZJ=U;7(~7bNF6-X z3lbb7i5s8G-*C$;c1Bp1`t^d54d@$_70eTL9d{d$*-xdv4%CqHJs#T7c1gDog z#mM1#@zbSB5*VOjB=IawqqG|x){&Wv1fTt7r@q}WNwAQOAjlpTa05wZ=reo|J-OjB zY@glCy`^*jfVZ|@V|>g$Om-+LK#7;})=MnwI!0&uDg6A3`!He}tEzX98aB5HIUz_urs9393l;do(R z!cc}__G*~E>X)gItpc~)K1=fuNzxab#h=vaD^PoYtT{A#OMZk3ji@jry#<5D8A>iN zi_ut^sXg0DfN`%&_@b*CQiYiU1Jwksnfk?DFO{BWym<#A*${h+0jHJ(+KGQd><`t) zCGCgm!)q_cXKtl^$r`Dm4M@5R3lIVj7qbFOW~dBn(LUsJS!!Zp;_WXwcGgI@Fyw(Z z<&nOfs{3Z|CBCRhjd0?+9mz)Vd4cZjgeu2{_xd+j?CU;~=zrx6d8fV-HvcsNii<;B zyn4&T69Q-92V8i(u5v_JOt2xn<;Dm)p=R~%^P-+{qbxWqpe=x6`0&c>`DE9v$_m4s zoKTmSK@{P5l`phSu%W#>Z$U9pSxye-TNf}xEZOF~L!9fy)IaYsmA7M z`p83BC)Gc`Ss`=v${W=a|40Z@MHJE=-06pr9z9-GR#x6RE6t+<^Mk9o&w>jb-NBYg z*fA2aK$4gwBeQQLmgugvK#iM*L4g-;N&I)~T~uUuI@1UW7ZeE5_=*UGbo1rrx~JcV z&Um8j-B2IOk)@6^KCYq?Q`frnvb@}%0*SzsRTFCkA<2LB4jcUKX6Ed7_t@sb-;rSjHChR47qDPj^UtdUtl=!wgdnHxuU8q#xbkBgCH z7*(o})AsDYr|wis25+?(sF*f-ANPdR<~TJZi9Om0J+CDnQQfVH(8ND{DnSa3_b)4B zfO8h?cZ_ZiYUm&*hppKz>thp(XX3|qVbvu9SSiM&E+AdRMQ)SlV9#@#Ts*@N3}~R7 zG2+CYCsSD!Cl$bicmU_=8IK!hrU?$z-RohA0^HG)Q{N*9=ajHcK$tegUnJqW4(>us zfk0-Zz@EYdG2anfl!tH_fcoI4KSl)ntOcV?)SqOG{dF$NG#myBr^iWBgI*~l0Ev^3 zlYq~KqGKO*YC6I$ND#?@LIKk#mS1Z?N*YEHfKbkApmG!M)PT%1iXw2*e)@P0Xpnmh zQ$UI&VT5Sr?r5MQS;|owl9d}vaX~7C&Fw)d+#wS-4v~K}23A*B8S-8xb?%+&iy_Aj zudJ^NL%=C@C_6MdFzEJOR3DddadjQ>kCyu4Ys{JImb5wt(lD?pgj?vJfml%9qX$^SwkO*6t~* zO7mia!ccm6b;h9_x$Y}Nl&9uMV2&`-eHx5@$y;;e)q7ZOgxQ;NbtJcmk2VdX<@-H& zqt@TaZNNskUz;ROj-eq_I}Slzuw z@$^UnU3DrdDaoMhq7MpF8QBncBW>-%A|kGzzJC9%L6fw5<-V)3Y#g$&AgjjStat*b znb`EdX};$oJH*xrbvk~=%|c&xQ-TT-(NSfHKI_MW^n7@@TcZSkp4 z%NR&Pp**w}*^WXshz5kHTA}=VpaAU}At0LXKX}0L+sOYK1^reATptxaOaYQkbM;vB z>f+q&EP7OCXAc)*FYd*Z3(6U-UMKu=Ip)vhxeY%*aw50j4WmONxi=s zEDIP;r9&%EZ-ZQwX{17j>cEMv(5X?POp@>;5bizW zxK0jw1odfL9&@lm_?gy~@1-iRx9R>dBUIEB%vUb*2sybETZK_)Y;j`y_$x69&PudwKuO+PE$Un2cef z)*pH##4jGXjqR3i2j`LbS5dNa64dPxJcrcI!(`MmJf)7#4ONFROf zv-GezdOvJHZaR*-GV4#li<*VdBPx;?m??{JnV!xR!$`WhZ1%CXdySE9*Op5p?FI#T z?_V_bWSQf*13URU0imM>AQarKzp9c9w8w>o1(3xF1j2NO$p%5~8P-Gfa*o|~Y9(;O z9sCH2MH`OVM`q9o&4|%^cbWH!#sP%_yBBnBr6dBpyo%2|Iy;Ze&mTSU8VhhLC{18g z+4sKge-?`O0I-^<$RZ0^K`-Y^FOoXLQtPnOYuTdoc#Qj-8ZMg`2QI*)K$4!B?j9BQhp}c*otZ<}C zN|nM)B(qUdlizV%|3RW3Jq)bGl0dcTswJ!c!1XvE<0g15BQl1oP?B#C7i?b74=Klz zLVE#>0gm26qYD=|uiGz1z5S2506})kVZdIr6rJ`j)HmGDMGvYwUFwK%u72&rjSotK zhp|;*)F8Pvh2>zmw=hAWHeWv;bYI^T-p)kAVJvGH;VhnA z!v~7Vi`{^f<9uq7-0YA&W@9)P3v9weE1n>9+AgW9JtQp72XU+8~`%E;Jv7@JKi zSsN$_BOJ@xd?pDTobKcE?^W&a%G_Gr?(57%ddX>%qF_l)j|c9J#<6oDJgJcI*}v!? z%wh%b@j}Z_^xqdsQ;Y$w+MNi$1O4^34u-7A&COMNwvO=T0*SueR7+P0n@a=!TrBD{4}`#rhL%ijN|t1Hu;o0ZiO{R*Ca-4y3>f z7)191B4{mJEXTZ?SAZMK$tX^syl7w&yMl}!8**ZeNX50}M~0jL98245!RrKx2W12tXC}XUez|7?mP|xL<#pQMSuoO#{(9Vl*5-Ec^@+V1}nP=6!s9O-xLP#9Z~P^G5tsqTq?( z&7ckg;YYJ)Vq#)rBM80jNjX|KQdds%nP?)2wJ!vXLu9I`9J-LsyOA_1GcP_52s9@h zfQNRLKY5ME>xkO@cN!PEKu_aumWB?4X3ue@-@W=9$a34Ty)G;g$$NsL9lEdcrEC1& z#L~PBJI;b&L$FGd|H1wQH5atZp9N_qJJvD^j5g`Iwl`OCp-{t$qc#YYM_hUqPF$JbBni)F#+hZ2q@ zZG+ii^cf&D^T_Qf5?=`GaabD*V#@soe4&>56qgwu12%+N&-i2Ezv*S#Ni2d2EE)by zrLv4=J|FqyYn*NXAQKK<6^6=!yZ?k8IqF$I8cVh1&Ui5f1oz+?gq#LQqP66Mbf~|d zUhxebrGGg1rS*tCfLxO$RD~IA#fb~BS=@R;4HKg*(HF}Y6X-->NmSU)iPc4aXK)fx zMnlM^r366`OC3yt~J<*0G9qe4CRNXtK=^A0bHL2DL$q$FyC!}@q!OA zXu#~Pz&8Z87cAV#28eGNgKe-hepKo|K{XDd$MA6{z2RoZ0gTf?76l8t)h4Ns89?xW zpzd;t3ocaI-}4|9>eEj#mRC^l#K*V|0QuGW?USU>+}LwHueV{(S>w_{)9e0k#5eFa zm_y6`t+@1-XtV{0oJf zz`e%))zGrCvZbXZ{n=hBt3)dF_zY!QN#qtF^4JZJ*?*vZ5Ldg}60>RO&5N`|sxTpV z>yzTETOT zvP>58hp)ce|7#g=O%IHm|4rvKw>l3x=RahkGow@5r1j?AyjWL2vuENEE|GAq*s0m3 zb%5u2VHm074DeXjc=?u?Hw3`8eWExltqnuO{6)4!WE_ z!G8t!*C3P9K(O>0^S?{S7qI$tW8_o8(!n&S#R!lfuGK{pOql!Ta2&fNy^#?{aPYKZ z1XjPm2_H9;VADF)-BhB?h@OiLJ-%-DioqiT`RfZ@i!s@os|z7!05}SWeNcbS&>?#9 zg98KWZrR{G7nrFlYnWI436LHFEZ^+0J4&2Kz({#n~CVs_0aG`HX-eH zo-_8!<#F=fF7%q@1*8f$OC*Zf*`d*Pq9b* zJvn~Lg6XLe=QJa(HVBj0sNF>o7(Y^du7!x+7`3W-cZ3y}&HnzVJuI=-p97Xyq(&VX z)Exl$T$l}fBJdn_lUe_7;ltQ;AdUU)Wh}p+BaSr+^(Uy2aZom!_yNyax6DMc&4&8;X71CFmOzTBj z@zTybRYtzNcEP2+XT5|z7xsC-EqUB4By;h*Z*Wi{*^9$KMFZe7Z2!kM%cG)$tsDQ8 zDc(KCchQ+ty5&NAV4jlg*U{9DJ{CyChjd6tlZAo%0p}d!ba1~E9shroNqv0I7Owb1lKaDi}N^^+R1m7Js!{^@)Wc zw%pv1YX97keD*TCNm5Q(GgoIIZ|)#MCU8INpT&x~?t*bafqRF2UbJll2m-IKTPU zajV(0uztP}20k^{Qjl1y$Z>P4L-UQPy5wcCurh@TcuA9c2myawReqT|0(QOHV}t*Y zwRnqQ-`g?gRh8khIdME|S_%7g=uFQCOw{+zpqE$dtfQ5Kn3+!g$&#w@$|kajG9r_W zotd8CvF!Ma@AYldC*Bl_PW;+D4-OtTJYQ!u2xZUAUo>i8Tr^bvkT|?nUqXmJw!QRH zlk+%Ym4zwvhS#l%o?Wh46oX6n1lrPuuMJ8k<}bzqZc_0yZ~Qoabr5SpK0Mi^{hAW^ zME-?eyi3POxgl7Q`}#y=Vdma@-N7GknUs2_907LN?>Nox@c(MBUyXZTV$G*%;2`*20;Gq?Fuj#meAu{bS)5*nUO{tDKbUk&2qp;VN zJ*&@xCcd-9N{z@kH*L7szbk=zfO(-OJG-Rp{DVeZ1&?8$k6m{y$K^Mb!+DMW+|IO{ seX|d|=l@$T`qe7`N0<9`@|Kt!_wJGSXWmQTUoV*SPaB^q(77D`KeB@mssI20 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.txt new file mode 100644 index 00000000..4b75916f --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_221.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,-1,1,0,2] [2,0,1,1,2,2] +[1,1,1,3,2,2] [3,1,3,3,4,2] +[0,2,0,4,1,3] [2,2,2,4,3,3] +[1,3,0,4,1,5] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.png new file mode 100644 index 0000000000000000000000000000000000000000..98db8f7d634e040d3e9e011272559006aa9da582 GIT binary patch literal 20139 zcmcG$XIK;4+CQwKV8aH8G*M7MddE;zq&F!d2#7!+G(kE_Q$dh!Kzc%zCLoYdq>I#0 zLXj4VAT4wVNH2L;zW)ee@9VfD7ORYHnVOJzk6S{BTVtk`Ev9hpcM|%312Ia+ zq_>t-p7}Kl=Po}-CBLm)V5sW!4XsuE^SsUCO>HP`^Yc(S{^+X}isUO;Yxno(YQKNK z7Ahw2fm5c+~5~=2$w}4$i~He!1mW zWF5OXd#~>$r(c7EPoF)j_IQxfYh5~|k$3~Pb_3RQ(gKB4-=wYC+GV*cz4y}Gtu$?5 zi;#a^W)E9u23IFKS9fhM#3a!K+WP5;6gh7ArKP3GrwQET7ZO6()EK+E&fb8D`NcZD z`=}Z%IW-lN-*0X2y;!N2-p&?C!pO)-YYd;wEob_{XqK#^1!r+) zuRoV58NfKMp`oFo-z_a?Ls>)-R~&j+8E&Qc+hOP6E^o16LT&f?*%&;OjYpG)zX`zi z);u)-Bw)%6{xC=8>FT-?aWcCa)DIgdXYcI}L_HHvF1tw-XL4KKAClVnnU*gV6kc1* zVl#yZQl-p82qh0zxf90OlRQ}t0x$fGZ?~v=mRX+pbaZ%FHT2$)*2yS=dlYYkpUxP^ zqi_APw6Y335SEf^XJ+`K(ATc-pLH}TCx7fglGy1wsK?y}<#>a_B;(UBdWT;UJ2tJ> znv7o|UgpHs`8X(2x)S%-uJo+wBN0^1Jj_2h;bYH>tWF_rm`zfxt*wpY3MJf@iiQ?@Hl!5pB!qV!PtHBg zbQ4t;VmCPqS^NA2E`d*kJK@hGy)uL&Zzu4tuPNp62<58h?KTXCJ2h46Rj}Etm@ejx z6DF8_#cw%I^EJ7YhH3Om&-$=Pn0=I5J>&Y0ySAr?y8R9`0UE9)N{6{tH)0pl9$26D zpn;IY3iDSDWr4sHcq4?IH=;RX7nEN-u|WNiwTqRQezXWfkx%AL7Mz+$5Ybn{`e@}; z>E?J9y6%nAN)%(2uzY=v0@BjF7d{sj3ham(e`gS8NQ%A2$T(@d7dpBXy0v+5;CPY8k!Mk6wgFb~ysnx2Kgvis-9$C45f5)u=m zUqndR80hIGpPrweM>SGVQ1skz5$$o3j+G!S^C8xBA_ReErNz*Rd#D^^V_5%#+x+am zKFg5AHpsa%wiF%)drvXCqx$;9pQs6{WRHAlH(|7KV~A z^!EF|)LCHg1wu`Exi|z8cTG`6MI}#{tJtf9P*zgX=%1SFfX00$H}!0Q^R;gOs`5Y~ zUTO7?IjO(kZY_gNE+A5zQVWBy(wF=(@={(K#nh!N6-o$Coz2=M-OZUFmruPyi{2Eq zc=9pvkIbtc&(91HyS<--qd^cKLj#Xl1DW|(P7l7&e_ET!m%N(qRoKYa|CQY_8ZLD( zn=dS8B5UdD>gwPC_rE`Xzv8q4u5DV3t6Jrmwu7`-xhxQ;aRBLk6Z?PH9yfGhDMa3PW zmwkwXo7I~^MGZ@s{;WyQwS=1dCEu8xUlKd36YlX!KfiC$6700|nll$-TlMEHhIB+W zzAhB z5#HghT&?t&ANApm7`4+z3rxF-J(L3{=6P0Ly`h;ytsR#{xQJ|>Qcd8lh!j3B=3y>k z(x3JZY=#ujLVV$HcsL0>l>^EE5mWN-5%ZZ;;xoXBXw7 zHFJ<(gtb{mbtZc><3AuSdcd{cVjEd$n}Tn(u$0iCFWB&-X8bd9JD*MJY&nYEU8R)2 zs*s(1)0z);+SxS?ef8Nb&8uy?AriT`<}+f#mhU%Mg6pU3TqhGk5!cem1G1``&m^N6 zki{!3fvD#tro$$o3ezKtp%0AVS`)H8&nB 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.txt new file mode 100644 index 00000000..a488c897 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_23.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad7d2e47dae5d1a4a12da7ec2be17211336754a GIT binary patch literal 18876 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.txt new file mode 100644 index 00000000..c3a305e2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_24.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_25.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_25.png new file mode 100644 index 0000000000000000000000000000000000000000..db877f1641c8fdec81fc423d605ffa47dbb0f425 GIT binary patch literal 20822 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 b?;n3(b?L^bo~b{9nTNsC)z4*}Q$iB}00u&P literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_26.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_26.txt new file mode 100644 index 00000000..3db6bd93 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_26.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.png new file mode 100644 index 0000000000000000000000000000000000000000..2690210e613ef74a754d102defa9c056d0a08336 GIT binary patch literal 20539 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 R1$ZbRgQu&X%Q~loCIFc&IeY*B literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.txt new file mode 100644 index 00000000..d8fb0347 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_27.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_28.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_28.png new file mode 100644 index 0000000000000000000000000000000000000000..c40220d211003b0b48849bcb8fcb32e9209b0af4 GIT binary patch literal 19794 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 V=-c_K5O^*jgQu&X%Q~loCICutUzz{_ literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_30.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_30.txt new file mode 100644 index 00000000..34361ebc --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_30.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.png new file mode 100644 index 0000000000000000000000000000000000000000..bd20a6e33ebd03f2bf4700dd1e1647f0c53b5d70 GIT binary patch literal 19940 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 eTb%u~KPLS2`pL6v!-1!_F?hQAxvX%`9 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.txt new file mode 100644 index 00000000..749967a4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_31.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.png new file mode 100644 index 0000000000000000000000000000000000000000..7af82e0ec9e9ef7a01b7bc48bc21b41de87da67b GIT binary patch literal 20720 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 WP0v>p9RVH@$l&Sf=d#Wzp$P!@=F;B) literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.txt new file mode 100644 index 00000000..ecd6eeee --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_32.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,2,1,3,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,1,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.png new file mode 100644 index 0000000000000000000000000000000000000000..45567cf4b57f6c1df049982e43d76e13dd272440 GIT binary patch literal 18592 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

o+Bb}D3^Ay@8NYu}A_4+Oq z`z&VJ4+dHGPkWSl-ST#I)e$oJah50~F{$;6vU%54AvqbD(E6;(rY17q(auiYk8P3r za~c;49^2WGbKR9Q>y37O3a3&jMg`}{T5$4|uk8v2H-KVWyt!W%vgF@c#Y*k{XK5&^ zVtA4=rEkco#AN!zS&JRx6)6+nS?r2K!4)Ny1lA!3w?3nx)f{03b7~Qj0q!B&{Ni399G`c6HH(xut`}^tl6I}vyJ9a@8~RMO^{kq~ zQbOd3(ZZ-0K73(j^@EUO6Wx{RO%)qPjp7#-7_4r4PaqRF_ytuEtayk66}r1aFl593 z4wNBg;P>Z5UPP!VwBc(D{l%t089N?}*jHxcL3SG{$nID^5{y40SLr#ZuQE~)x~jCu zu1J2{n7YI(XL7H$(t7bT=)5(kkw@_Q-%0yjoDE@+0MzjwXU?u+w!roQy^p}z06+^!Acs=6C4ske!?v#Cj)!T z^4z9-J6PKV;+sY^5Si~S={PZ@(=g6TQX5NiZWGlvO^j7%{J?4FUd=`3`i4&OZ2sQR z4XGaMCT$8d8@JF0ZfhAcOYJTk%NZ*Or$QI{nt{fMz45c%^t|L*5id+`12;_5% zRskE=IqR%EeN?Z=_mR)rxAV52rpZ?6m-|4thHyFs+yAV^=7_TCwRi|RWS;VtfrV)+ zalv+XmeF=}F}2^u@M7H33p##}w@_3T>XsoaCR|z1lIm~#Gi-b4j+#MjLS9xDmZ)!c(5Hf#{f&IQ&rtEuxdjx0 zG+Q*P4BI+@LG@W@Cn;8&cb0FrCpcu)-;D^qkGlB*ThTLl_Y3#q<-QrW{#$#d&)mJe z$pjY{7nM-;q*x4pY)Bfv4`*EIjZ)D z9!XgA3i&USlVts_8R?ReqIj#5rRUtPytHEf{8b6Q$X!4y9rxcTce|+lkkC@ zfF;DozqZd)7m>eu^#skbVj`RzZfsz1W@<5_3x}RE{)8gcl!*UnEp9=V`vUcbP-dn7 zDziM42_|+J@%1bIkBdKsmM-6a!TR>^$`ZEXc}qDXPtpbxWRhEJmWoZf1ivbQFRH$b&jCF(d(zo=DY2>q#pFj{aLhuG+unQ+85txH z@+Xs$@)Xtmx>f~QS@P^rI*i5J;Oa|p^*?|9aHOK7EUtJJ9-gv4J^d*6)!T#wayEus zl$PAeGbQkN`xKdD3Z3{(SbZfp6eVAbD~(`xGfB)CpdOxZnC$ux+T$dE|*a_ds{iMeINo6thx zx6dX0S9f^JgD$!*&zJ7Kw#TA<%*dro77^cJ(FfobmhU1&@_>+~j0hk*M*@z*lo_-x!QDlTnb(@GX1dQsr(|y26SPw~F6&=}$7z zg8P$UT5yF$jTGYNk6g$4UOJS{85-|%aq{_3Z9{dj8?L;YgB6?0d#|o~jRh|4XBEY9 z46F_e4S71!ggBoB6_tqvUs3-H?@d6?i+|{{erUj!TSb(Umyzvf^xl{1?K*|M>v=Jz z(?%27)D=D}GbDc&v%S{Cq|7E_ISMZ4`ra~Xb`R~F_*q{+;fmB1c>F42fQD^%bZ*-@ z7HyrK%Y)D`w`;h~J{#2peW+zKo$Qv7ErDe!T24lOmTiek5KY#|6zK>{-|#2Wq7E=S zOVPco`Ej+YaOPZnptGL$#BllF?Jc*Lq(J?Y{`~75UJCqf|hg zx_f@!@D_h8kr`s48gSoIu>pS`)eJ&u<%TD;2olwqw{2?n8`F2=u3O&ws0Y@MHdFZyM%M|F9d;x<7=zLfyewL-u^UDb%^H^);}N||)EV$ZVv zj?NN5e%<`?_oB^Gq+_QWk zW$hl4natLi+V7*g_|v!jDJ>= zi4N|&YCJrR;;5e1#gY-~X|*J)&W&ZLimlx_z`3%lO+7@|5GNG_KapKv_8!%j94tOi9V!kL|ws?8*Z$))}dp?iF5>I<;PKSMJ zhH4r-Zr}80^?_jRZ^ZL_SCWhd%ymkL*Zx8K`q5z_P+M#8gcckY!xPfs8(}D$z*(L$wK6}8q3>N{0>G;3bssAzl)oSlj1a^+1^Lww(#=u z%F4=enB2+en%yXoUFp8P%Wyd{qMcN%u z@Unib<0N3^|EB6DL?Ts<;RR2^mEV|Fa}6fKU;|6B-epYLe#Q$%%{Wc_HJ_zDb1wso z#UfC;JijaWbN#4R#Q-YSr{IVv^B_JQb_W|fg5cKiQ!kr>xh~c0`$*Wym*B!+!m+ob zNGg&v>ytXEZy0?3{24jAxG22t8y;Yu^HyEvECwBpDu}dfh|(}P>FRMvSjSqH=m$6R zWx5;tG32l_f%;4RqQgH;a1#n+aw7{0yIHcAy`uWq2NyOVV;mPe%lkNc)@bH&FK^WR zUGO!%-^j6BtthzeEsxNkqjn0oJotv8*Ws#p&+wfkt zpCR&@!C)l$D)E)ovy=E{zV!Z!jKrcA`i7UNLdT)B`MkJ;;`;r(S>Tj1QHIX6-`C|b zq_z3=U0>bwnpqJ>zq19E*5r<9f2enh38nXvH=oyC6bZ$X#r|SCf=_t~M-=g+&I{j|}w&;MsKp#>R)5}ZO-0`a~6o@Tcd7wDmKE@XZCCVc5q zP!=sb)aKzsB6=!n>KaCe!an4+;YX^gqxYUjT2o=|*{RTc>_65@k(E2+8(O~PYLmlg zPwa&jOx|WSqeFSWf=!=qDvSPO(*)`YclseB<@tq$(5IOT3k&zN7>jl*_a8es1sGjE zDw+G3fJ#aIj4q_4P5@kzI>erj8Rn%GyEHZEy4i1-`Gfq|xasC6pOxZ$c{4})rqSvn z%Bt|q#VtWWi0#Mn{HqvL{ztND7huSEQIKY4X4=DGihmfi#y7@ytPA_<)Y=mg62QzW z#E@?t#a61BtjOAbSBUWoiw-_2-J|@B4HCY=F#hnbDtVXvzg06&*OryFGevyn^rdE_q8gx4_u$&NXqkG z%U&KESH3z~2u~C@nQ-`Rj&@LgGurgWS4uj*kbLO&1KF?7eKz;Ewu*dlLb108FKBp5 zoUGXL1`7Fe$&93gYYg+QdQJ^HmofHP1c5luKahOsv`+M~Hjg-&{aB3z z^VV?Ejfo7$4%rBzvCQ=*nqS&;xOvxLrv~E-(Vv-=j##K}>si1$KLu=MaRUnZdj^at z=%4;SREKkhBjL<~w)M!`SRz+Fy9P$GKLQ#fJuiw}2qp4a5$jG2C6Yu1w$gPH_zgYD-Ep*od zUo34)e!^bo_Tln_GcP$z>qri}3aLtP(fw~l;)qkBH{RC&AFIUm6FkB8JVVmwGv+_c z_>cuJJ>&frK3(KLctgs5UFNuyFkU8pn78pCGI3)Ol+*4Z)!Aff4YStX9)*^5UzK~f z!Zu1)xMnjY8D7?nX5o#+%eoyFsGIn*2_)nxiT;?#{L3Wbi5*gwglU_;+!}||8eftU z)L>`_-4tF8&PaYm;HE&7o@w-N=zaS%o>wU9yfthdfyVf9I~+{YQ)*S#yLCS)F>!u= z-q-hfmR`o6xwyEvVl4x1z1Fn(>wyr#I}rg&hte?dnoPn}qy|C{FeE!WJIg?7h`~;i zzTZ3Sv+LZhk{TjpYmXm4F7C1&c$WOCVcj1iBOmN4S;)!yMlbd5t@eJ+&tsbX#6J5S z9XbZiK*OcQpm4kXfvXJ-{u*g)g)Q;oqSkfBF@x6A+sw!7%rD2gNOXEbXa{g;>w9mT z(Yw!t*jA+@biU|9rt{XB{8yqYzeh>~-OePqeiy?R6;ZWq5K; zoJ`QjZJ}SDoL^l%TfjoFHBCis&$uo%CEDh{h+g4em-*15QmKG!d(`kf9)ess|&KYzKV#rMkWD2Jr^P2zZ#7bY;|X|%d4{$Kh>Xjjunf* zt%@u?{B>B>eD0VdXyy^*XhA9N)q|hF3_7n2zr< zt|=`Y9XM)Nj3W*Mv#+?1@cDxpt3$0Z(QmL(~u5ym3R@-_1<|eG>?)p|D^)8C;+^1rJW#OQ_f$5!it!N6oWqGS%5!4x3++TI3L`GV=lJ>M=k29OWwa&PT#IrqcsPLM zDqw*)+uD8wPeNw$Y0$d@H}iE!q`R7#zyDC#z*!7J+kl3gI;O5kIbSa$$Pq~KV?n*S zP8DkXFDUHA-9BX|Gf14l;6H9F5@InnxF83C2%AWy-fi?bIlh=W!eny&C*Jf6Mp=Y` zT1bRVRG6oN5)Bmuj}XmAu28)N?B)kxH+%kgc9Y(95o=G3k%EiFu*NygaK)J2T;-q(ZYv!?L2lLFIs8)4K@KJHadGC0TSj-66QIH zPZx=qhUFFt1D>*TG;f7456L27?~qsB6K z_fX}-vx5Pk8a`2=#<Nc1!Z%km6j=_61ln4>i3grWv=Mp5H$>9e zQl%a~K+xO1g^%z1kbP3_{#nvy^!j;k$@ex&4BEp|WV;m#xXZ(Vw_j9M?iuys1-sH* z)d<%&j~aRnq<92rZ<)j$T!HO|vFjUi{Lx8pROjfZhOq0K2l%7Vd)!f(!gy`4zz7<= zJ0X-6nV;j3o2AO_aCBWcnO{&P&IFgaJ9-&9q~h0#+I;9+dgX}x{CFb4;`3%}bWe1lxDh+Aq5`5cVM2Xo2ZGTEZX(>5FXev~Q zv8)N8XQS0ez1OO4MlWD*JfFfb)sO_v1DgvSV&9ZSPNJjz7>Hl5DOl4 zEv=dog6|U&9Nc4#K_6>^Q;pYkQa_`(fF(Dv>FMb?_K}*JdId2$&AiIQNZLPkiz-zx z_C-;kzP>)^5W_yF?XBOFkED90uJu@p^KGIe4x*1F*G#%?OsRsSYGDe7PnuzGZCBZFzAqfe`|7kTgEv368UCn zZI69og-Tn2Qx?+OB4EDMG68B_6%A|3(_7sP2YPeV2O zu7!wor*?n%j&~&RSmgr;VFXTcpW=}bvvaR_bW+1FP7}qr_dBZMqY7ZegzuI*$t*`nt2T8NJs zqT^bX^^W#wbb|Kl=jujjHfunV?Cre|H6`?MIVfYGvRTZzw(GG5sWc2GzEJrvch}za zi*A%0-<;dkMGIHtl)_OAjVnhYtj=6);t_bIWatp^t6zQf)G(YGUmb>*s|Z3vA5lTo z%F1PcBS>M^m%-`@6Vy$^rep%t#&Fj+0Wt@A1H1LbBHt>=W{>spHOSa{8OWOP!zHi% z3h)FlcJ{3KK0`O zXMXy6+*-NfJ?@8ycLb2^752(5iegp9%4It*2SNL zg+&p#)NK|Vm!+iYA$h34w=3JByvf?rd2vkn@((TpNV=W=uYRei#O6KsBiHq1|9`Of z2Bp=?C-B7_6lc$L9*YZY?h*WS+vaB`Fy1yzC@d_j>6Jq|P*G7KGiw+<*hm=9Y)lA7 z{e6<@++WZW78XXpo(pqnL0kmK_qM=thLD(h2aun*9M0D(*jtW-~>o2DO@)J~jUj}WU`)o$5?H2({u7PjZbt07nrk$Gsqk=s@f zRnjm`TSz}HLi@z!Uq-F|Yl3VnhMhP6h~fcOvt@yBeu>2LIdf)6<@pm!0sJQLUwzJO zJ-E;M5eC6Qz84t5jehv@;l5 z>RvN@S6A=)j$~gt9yY8Hm#QQ1$)|jAv?M73gJQm;Z&(8H4QRXMm>~Oiu=Cxi@gH;z zrPhI*Ee_s)1|S^I6b5DsQ_`odmgFem0jn9(QJ)rhFQ4*<`2vBmM?DoQj z@c`4QE5%4?l+e~q0Fjysj~^cOI6Rtba3&WS$I8yGiF+g_q=*-4{ge-cTKo!qz*Fsl zv%McHcc}4vM5lkF$9kZN6svxwozu>WH9bp>72MwfBQ!Zyof5Q0F0AQa4-Y}ddB8AW zkovLWA%`$bCOlzAT!SyzUa#*wfEgWEp?Xr zoN8vQwMT0}lM{x;ok@d)l3?de;`sY~U0ibW^43-u^6zIEXP44(4LrMV4PFmN#EkMq zi!U&u_!9MwN$`~A=jZ2EuCBUdbd{Wz=P(09^buJBDh=)Z#BJ{U1;x4ox7cIcub%VF zmFZbSBqvwDC@n43er@pXfF#ZXM#PJNabhD=p|451EkCw75%M{diUS~@Ls9_UPoX$q ziBfUIY=-wT?j>@!%D#4a@{0*sqMi_137%Ok$gk`K8I};CiNhvm@Ind!X+kR{f9aw? zZ}eP9SolRA!+TZ$F{2Oab7pA;Xn8Z^Y{Y56n?GJ-tqN;+5bw?pwApqo15P0{&pE~5lNOxeK~#A+lh5oH#Pxq93}0lW#mm95*Y zNwQ`cD*Du*CBm9yvko{E3bC0r@_n{(og}cEmS_UPbZ8kIqe`o#lq1-0YiNtN$;rX) z|HXcz>!Y|wl@0Ax@l-1Bv9!fUr~hLL zRwTuH_9=lLoo35@Ut5M#+z0wz-0h1?G?Aro!6v>8Ec$@(pLRGQb&SBS1f?yWUS7`f z03bre@=p-CZg*PT(@tEQ?mXaTh7R5hjA7S@WWNeT<+>Oc zy=eNHG7m&4028^75f7a^lnb6IVwPU0jL${E zHHpAI2ND)8QX|j(A6W@qZZ4g;c~@`nDl@mD6GJkK+(A?PsrYYm;{pO;QFhch^E$!^f;O5zQ08#k-_+wINAw6bubD%E^P^BOS zJVVNq)3y5tn`!{!{!KC5fbA{9ca*8wiG1l(xQ18m2V(vSGLsdCm+%i9M#jJATrP1r zjIxHLhjZ+lC=lo$1A!ikBM9^vY6QthI7ixoQuouQM!M!opV;jfqW9o&#A{GL%mE$x zuNV_*dPJ5GS`TE9!tf?C&c#CnG6Q6(9x*jQVf*Uqv|yOKP1;(A+h1?83UUnPD)n@A zO;3*xJKKJ3>hlqDT_(&6Nl>hhJ#H9N209l)#EXCc;ebw!p`Ny+%=BhlZ*ssxNI}s7 zgy56dJu6dHR=?dm!;G2?;_k~E*=)Yl$OMKoq9&sAKa=o@VVrF9FBGxt_a_t@syUyi2cSx@$8lkPU zWat>f&3`1dRGK`mbFJc4oIs%BB)h!1jaPAw)bWXl3B3$=Isw|(U(|pU4sNGQbRM^o zWJ~t~piZ?g0(Cl-KQLgFt}4_5#JqdJ{Jky7nt#Bu@_qoa$ON7a5CDi}wQYo0=r|bt zg(yz;_dx6^N_t79>9ofyWXYIx?Cn#t?6!MbTW_tda}n?*Uh-FI6$A@P@tH~2T6{Wq zEK;M`9Z1z}!e+LmsOeo1N|o#8biWzz)5 zq4K025a(sgy&a+LWc3h{U_3#fPRKKjmjZbkd@BP^K(1>1%8yEEX*-mMv={Tt#K_Sg zp1FRL4{$(JkXZ5 zFC4-xZszTMw)-3_>sq;tghVZ1C&b!|uIEM4{LWi2gZAfk4G^7~;a*Pb6=GAMtOJ4K)?j??vP1S@`WQ`S)82KkP~px}r~A zw)Z+efp2@jvVQ+dufpeY0b?SxJC6j7F9s;T2UZANp<6N_2xJphyvPio&_J!kckgT^ z&I;gYQxCI1g2@eYjUbQux5a&431s`auX$v2RZF2zs1+p`v}ov}!}ZbX^P_`YR9G!M z-O9kzEw|z4K_pGNC zMjt-S9AFxVdh$H655RN#aLXU0R;^n3W0=mTLR2fph$45ogk zj1k1QLwqpjLkP4bq*`rziLb`w;02%~tm>N+rx7BB_WYuxrk?YXh!?Ot;#@~+_f(Db zRc&f$&8DB=-vsHN32}bakjygB>;OJQXm&8>VPH!LYi@x)_lK`XQu4EM)Je{>x!dWg z-0&k!hdBnGcDgRIMdvz~%@LS=d_N-&Z3wd87ofeRcckeMT|w|G3tFt*|9j&zy`|0u zWN1Q{BW9VPrK#!R;Q=ZCpqJ4#=kBS*jRD**k(dn95pug>@YxF$i&?RMWJSa9g7Rlx zLqv2zFCVuOW>S}%)+o+A0klBliqOv;&b$dv<#97J{Fz06snXH>H*3Hv6~8s#ac3g$ zel9iio;y(pH6gIs!;Yi`3W$v!_Y-&YL10sx_)wzGJK6k2FGHFIu_-NBH9?Lku7{An z-DLT^1gxOjGkM3wsGvco!|1w8n^7n&b@ksswC z>-%6Nhnnr}$;Im<_quNK@giFQE-ec{wl#wPweJtVB>~&eKspPsmk0a2xL5`g52vaP zKgvV?NM9Iv0U+tF(%%?aw+8t|#e|O`xPK-c8KX!T@nS1g)eS(Eqaz3Kqzu3h@TDvV zzH9##UnHD5w`EU76>*yDYTr$Rg!f1;Ms~ii*bv*r zO|#a2VHC<5L4!euyo9jg`=)}}&g(bgic-(}zdjR#*Pqi{&Os}I{v4js4DkV)3KJ__ zGIW4bFwgx9c+;28)GQw-rtuPtX~!@L2hm@{7cNC@pxwc-YF}ou|Sc4K_5P~NDAP6 zE3~yCQpBReo(MQ(^r^ii@3Rk-p{&Z>NR0|gUw4}nzSuu684eX4h-6UaSJ-ft+Q9WM zA06z0gwz5;ezhRv*X2M&P?*z7azJDcFWKn)d>47IoDzwL9dK0b;Ak}1pchou4-$Dh zH>1rCxz|@)LMo93a7sqd9W9QLg48=}xpG30ST$r$4~RWaBB`L_eb-<|VvTW+we4?8 zXmsB-;C~(HH(X$U%ab#d(6zqv0CEnFnf0q9Y?Llr5Rp3bWvPYg14 z90HtbFxG}n%Xg9{|J*G`3WogHu|EZ3e3O!ZOy#rypKCQGvtyyjWtm=j;8fQEunK z&=|T0s}ne13T1-I3UWl%9Bl*YJoz^Z~Q>S7-Y@jd3t_sc*}#mv0YDfe%4gQfDAWfq8A$7vxL?iW4E6{Uyeq;U;ZXKZj`sEe)xgN;sb274 z1^$+r8WoNXL<9)DW^yF*T;jjv@JbQVWB*scs`E_{)@W4E!ZhLig}O4CHf91n!e^{5F78pU z#;slhGU4M_0sUnXyQ3KmMNKp?O((jdR=24|L22AmY*RPY~%mwA4A-a*s2o zt1cyICyf?b61L|E1F;5)Lc0JZ2QL)gx%WCImLL_MvOKi6Td-_l3GBH+)mKR9|0lDZ z5Is`+k#GDz_YpS7b@+Y zhf)!MyVk)Jg1ru$F6fcHP63^m*8rPb=Xm;FsEi)zO249SwGKYV59R}+&0lUl6G7Mk zN2du=&Vk3DNKqq`u!bL-eh=T#93CZ(#^;#8Q9yKPk9w;__J=YFeT3`kb8{W6W^Avk z7Zjh^VvP?3tP9ev{OfR7U}B3I{&0aVXmW}R3$2p~bd9AgDNlw1&=zM6!#_7HHLlqq zyl466fQ?#)L<#@C|0s`Vg)La9MwH^5v;|ABnM5_`FHwq*G)MoBLX4v3(KF>YX3RG( zu;o(Jh@KsZv;_aRf;0q73BU3GUV!tNt1N{@Go<8jOh~u99 z0`B@KetZ)cf99G9+(|xLj1q0QRKAWOxkE<8G@Y@{b1>u5mSg)kkOIW z%ED{Md>nDhZS_Ir;79#P7Ef-nC$yGWL=i5!*^)v3v)S91dC;Fue~I^<|AyThq-i4M z-ZfnvVZ28*2Z2mE zE%Ye34FudfPgnQKi_fJC8F|Y0xwYwbBDgKR&z;Hte5{$ByR#*le1b?=%;Mu8N`pGr zv{7eaA7x34;|k^{Kg<1U7NwwTsw6kzkSou`EuWm;c+YpkOyP2kvgCY^e`Sf8HFLEV z(@7C0`D=A*kB>8LG6$P=o_8Oa+nM-slPPlt=j(QVE!ETH6>}qo9l=uM#~^4vP*L!g`OL_+da+A>*u&*Zz|jaxO}6yTSKZIDl`cg&fCFDo~7oci}-p)S2~!$^MA+OXls>16Kr@Rdr?p?-g2^nXw2LUgS=MNp!N89zq$!{ z>TW!DFBzt})8T5#o*N|&Cw#O!4L3AU48T7cpLtTRQ!VGawnAy}R7uh;SeU(0j3Qb- zR7uj-`y29+k6b0au3mj*U6sJzwmmzlf8$Z0UB~0?Vf?rpiqJ?(_ zyA|hLR4~-nlC*e?pDd)Z2!WzDQtQp=MQ{Dt=!r_mQoCy5BX@_nMzp(XXbarQ|A$!h fKOo}1!gJmPKdUy{Mev`8j@`Phsq#(9^vVAMKn1~w literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.txt new file mode 100644 index 00000000..d7d65c14 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_33.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,0,1] [2,0,1,1,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [3,1,4,1,2,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_34.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_34.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1b151525c823e56f9de9a7e36f5330cbf77bf1 GIT binary patch literal 19628 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_35.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_35.txt new file mode 100644 index 00000000..02ec2317 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_35.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[0,1,1,1,-1,2] [1,1,1,2,2,2] [3,1,4,1,2,2] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,3,2,1,2] [3,2,4,2,2,3] +[1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.png new file mode 100644 index 0000000000000000000000000000000000000000..66e94ea004b20a30e18035b8f7f9db76ee759750 GIT binary patch literal 17370 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.txt new file mode 100644 index 00000000..e0fbefb1 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_37.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.png new file mode 100644 index 0000000000000000000000000000000000000000..b808ef08182b3eee2beffb89a61cd1ffb0d5a974 GIT binary patch literal 18746 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 JygOzu{|}3`fN1~# literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.txt new file mode 100644 index 00000000..7f5e8e3e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_38.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.png new file mode 100644 index 0000000000000000000000000000000000000000..fcaec4f9f350142f59934aa4376c8216525de816 GIT binary patch literal 18400 zcmcJ%c|4SB{Qs|wBD9d56Onz7jIGj0)+`aSMTQIx#*(#CgwWW<*q3BPCS)5?cE-L8 zS<1fe`}VtL=xo2w=dbVgdmiU>9*_IJ=U%S+y57t4^|}kVr+$Z$oROS_goN_0(rqmg zl4DJT|4ttVTY8GA+ek?6WZu1fQ^zfS4rOR{1s^-1ZFAX@^f}X7kSzTV-)gLz%3Ab5W3;PUPJli#CF_D7@-t~S}1Y zaUw-tS=sL5PlXPAB-teV<%L*yhx5Xh`RpEf`;vLsWi`3&Ny)uE`F))0KJ+_f;&qJ@ zUn8y8-W^KoZDgT+6;Be&ofWAX(NX(xg84eQQ)4)kGzw%Lk~6+d1)_8!Yh7Y9owV( z#S_M&PwsQrxJHm72mvBr<(5MEy#AIu`L;RBhWv|HXiMBRPD@=?0!ETqH3GGxm zqE%To-n-*^O&h2|maXzwR41Q*2 zW~NfiT}4Hu*;4GY*CV0F=G+jg;3qfk6u@^mnWUU?5+ta`+dQf+SK9L+k@IXi-nTwp z-C22>emA?q;HmtFN{UF={95Y0r;x?Yg0*c1>8uHJ2M1)$P0j4@8(I?20;j$W*hL2i zywLl4YR4xqKKKOjbnEF#;puFS-)OkLXiKF!-{F-HeR5+^nJP}ido(nshiQCb!k5L` z($ddcPfO(5HRuc#HT4Pw87b+e4`$QX*LO|8Gkc{2cG|wJZTCD!`K6f1AkhJ$ zF|%W26``VNp~3yCo(HXDE#8Q0?Vh`+xHvN}u73Bu=``D!U?#e#KOfY`&zZTpN?xz) z>+5?W&X_!Rac5$GUv4IF_ZD_VIz)l;#nLGc@4$Fl5^&zCIDSl_D_;dw39WwGLL0vW z+bpZAkV)BSuGbP*<41Q{7Psy1PuZFDC1BY}f|62F^&!UsA|oT4o7JXEl0(l1thU${ zH45Hc>9HuowS25;t#yVJ;k1G_Jn``Y$G`<1#qrzQs>uIYGBhcgT|!@Seeb7r(ZE{4 z0lr1<;_A(f;_&vCR6SPN{Y?=uJZ^%;W#sw7zQ9slzEr<&&lp(GW&M5D@wZs6XE;21 z(ETmIy&RVyor3f6_QnamZaFp27dE%`i#YihPD$VwD@X8a<~nVjGlo6_zw+L6y9LRv zjtyiF50HG7M!Su+#+$q^TPbMJIHfK6N++5_@y?xUCdoLp{XX&1Ei#=)XQ)GQx;YWm)=13aMww>76&N-FSVEI+>y(b^) zk|(`t@qKe0E=-wKvn17To^Nh$j^%vkA*b*mNO=r?cfubh3qAIESXK%1ZP{LEHGQe= zPDOyeh{!}IGV<39lcKx#;ZF_Qx00PSG)V+xsM}}rutjvF9h>v62ZBa8eRjTA3rr9X z>_Uz^R(vv7WTs{!o--ek1P-SU@A8TIx=~1%CH{*E7J#P7wYOq5+)4U8=% zoswr=&gModr(bTrZe-znVnkag-Te-NvEh_G~+arr8MbGx|a26 z3H9^(EHxdI=TQQcPr}#Kwf**6bvvWZ6kp!Cw?sJnQYe~{(S3DeL+|)xC%$|>eKq-4 z3uC|pKdnAXYjICrkA>}*bKf~cJ=LQzlpFO1&VTBiFFnQ$#l1jw9YcAXQz^)6HZwZL zr;5Tjgcp36D1BrkZiKUxmPgF1!8@yN`8$WBg;j8tYTbni3*?BlPAR6@-PU5*Cv^&G zmhRw!sy9+h;`$UG*tkw8W)%JbykFxQK>@V$1Ia#e%mlo_Vs3WJ4o=q`gF)h`Q69`e zpY!l$1E=|#IAI)IHnuIUsijuy@oV6(c1#@!%k8pRL8&W{d`}^lFEDY8Ruub9b2bK4s!Ha0eUd;8p+oZ!$< zNycDHOqSU%o=Nl_*p7&O{;NM9=q=B^3V66bzud+b`r;ywi}AF~{^qCLPdcM+vkO~x zAMKBqefjdfXU6GRRCF|6MlbLg&K)6m(oe0Bo~j=)AT7vbUt(WEw^E_u>0u_L5q}jv zExfJ9f$!mUHOVRSS?^|$;>Yx@=k^(!XVqcj2lR4%1`z`-AERhfCQ8HXyMmHCrrg4} z+XzX|0{jDm`Mb+uNKBZQ>XvT6WFd5?!nq93`tP+mS4^|n?|Y4nY!=bg`2U^roQp-4 zJ61B`yg#m*`20diz71p!cbd4v(&!<_VgL!z&e6@x%*^s(Wnl>@yDvlvu}f!Fudt4< zjuJLZrhcUTx%#q)1THd|kPsf2m{2FQrD8kbel3d$y()P6Kq`Z+SDq7@sRk1JVZreb7!!9e z4&+RUnI`iZ3!imN3;A%~ccnBlXWjw%_q$i7Z4E`_6ZPJG-p-EPNM$U$_w=gAZfj!Z z35@~IkBMW{|4ow1dyxyfAWd$mERugQJK6%^A&O7`e0G>t6nx%HZ#82_3s8DJdhP}}FkkA+kK6yuf7hl|w7nc>LK+toPx^GTJliQh$JJo)!hsZix=RY5Ertmr z771NXuJs~y_4I5C3_5w2qGKc^B)F?8E00y=RR!nu%}HE4%|dy`xJ>!*zD@H#dD2@y zFe%%6m79}9ov=6gByDR`T2k`cwrb(pcGunhZYD`VerNKXW#6GYW1fpe{*ERl9HphD zl{dS)yLD6BPTMB-%5Q9J=###p(f z`GHa}!P&Fpjzernx%j?T6c5-VV(%NBHHzO~{M>gGsolZAAm zYi}?acBkk&$BIkY>Iwgrr>?W|`=c`l{H~asGylk?y^3W%`K;=lGtTQj&O7g~tT?&c z^c4Kl1PO0}1$#+_o7E4V{J=Jez8Hh%7Sb8qG8oGgp-dATE2uG?O%_@(KD9tfGH6!K z;ZN<>@{w(?gsWMB((nCutg!_Gp|h*lX^E*fiL=x*?d@&oSxINF?Y|uuHy2ETS|bUk zt#%z3mmV0gn+d+;vHG>#+veuX+NEHa_R9-0>Gx<7gBN!5TZMy3yr*;pS@GA_)_XO7{PHhZ-#9vGT2+@f zKi44;Hj(0~J3to!)trb9mXVMcH)P*2e(`>v?G5}S;dF53U1`#%)a*7plc_`W0kbyo z^HZbu5?|HVNUCp)N4M_h&QmBKL#>%YFSz{js7;!$TOVlQO5+AJlw5*Ry#iGkPjUw{A$;RTg;(8CM zWdQmzW%CWM!E_Oj|npcpZ95La+16u zOFOVEk9$M+M2es3STK^U5mIm6bW=$Qbs&5ft3HXQ1TVvKA-qdC`lW0O&wHk4rxkT& zHKI8;S`=WiUoD^_R{4FFGoQZ0nq9nQ#V+@?9wcK}P4iP?MD?3jlJUbBQt1j@v1Rb@ zcc!S?UH2xu#;aRrqDMZi2)|EFoH5XfddB#U9&`)i)b6&2+&9w$f1LZX`oI*tMR3bI zyH*&;soJuMW*-g?FWY9FU&9h*)&RTa>Wu;0(+;=)ZXCU|@X3kYOgY_djgpmmik@6H z0pCOs+p|aQV_)Cqrdw*8l|)?fMUBUod$(*Sx6az`u|aIs^4#xC^>w zx9+i;IE|LXeCx-Fo_lw9pZdNuvwnc{G1=;s@PE80S6cQkS2w#;kCZes0Y!E^1_E%CBc|q+~HOI;UO6U7j^ z&sh@%Ue$*{uk#m=773Ym2QA$^%(#u)|H!x^FicYuzt5b_!ltK-wRILA&h?S0PyWAI zclHw&%PK>0H-R$@!*k2Y569a&i~;>E(vXXG&6_7Hv4u~KeC^5D-oq4V^-({HVAPMM zGRn-@XIsH9_#DV~BQMd>Su@jAJkmL^IPpFvE4E}na3)*xPJRGc+U)H#YGgcR7z8#M zf4oc1kUZRr$0vLsD_-+GvY~}GmOqGX%Y1(g{LDF zj~|PR!WDVBxk4Tmp@dX>{t_|Os={jO>Xcm0CppQCVp3C617Ae{-Kk=Xo1iQHL#2?b z{qC7#0!xYEImW2)a)=logOoYWGVAZw^q1ZnMt(RPe($BP?+I_SS4?IF{kBiei7_fO z`=#OVe-Jw0N(&+RO|J+uucdXmr5VNIpZL&^itj=zoSekaEf$8kCaBN0Hic-iE!2ma%`!<8qH@oL9F^ZrvU%IJ}M z(eg}^ArcxW^Nx1fZ(w8|6l}W%LW36g`?;XZ0X)WnV`$Ox^*3)_yw8?~kKH;7FLIA8 zEWQ(jipwwUdv9y=CuROvd1l#@& zCR0K}Lf|M!4-dHlZS!}byXkD#|DAiuYnFa2lF4t%58fJ2TU`N6DOBFONwsk0ssDi6 zIiCYv&rzoR<}s&1mYq=ft!?>Ql!b7h>y){@eM@N$s)ncYdA09J51yHyx66%TEi9T7 z^78U9y6+Pw=lKEyn?@RA&o*wB#-~2Rai)IdVsek`1keMkyJa0{HR?BXu)pK86`i|6 zVK^eN-b%MKrBgCUNy1LWbaCqvtS8i4)*il#!Y7{;64YzQ8eefkCgb7DJsB`d%U*da zIA`xlDtoPDVcvnl#ImMNcyP)2uKzhBJMErkyR;3ToRiLy_Td&+O?^&X+F>=nZS7v` zU=<%Za_8iy9B>lQp5fkh4ZJ~XwmQi6`&o1HpnEk@IP zweZ3+90*53!tc{bMQ|tHe^=An8)JXBNnkP%Qqf+Qe0%L6iSg+%)YHx>_?c5;_J3&vej-{R7b*?`KKAxF%zG#`%G0>Ha9E@y*mc=JXwW&L%1iPRQ6DyUJmeQQ7l?7WnWma~a&z}v4au!K8{?Z9jLUEMQR zO7Vn!nGu8^7R#u1X>-k3F5+h;mDY78Tszi%CizviJi9MNuDCxe=uz!f8^aX;crj>$ z8j4&1NsfhcMW0UxS8c|&zx)#)2TRm(nao^M%)T~wA$C}W*+#89auxqZ_5kE_4-XGp zTU$@hvNkL6IJL@v%o7J&3yZsdDd3XyWv&6MEPo8Un zf`Zd)+Yg_OjXjot=@|F^*fRRGpIB{{ES4%RXY&A@W9R$Rs*Im0L*ijxIgT4$4LdM< z6!M#Bw(Y@(xohj?<@X{8$sbR@^&}AAqLr3)Vi3k=Cznj@o)ac!XSTGSARsLEFJu_a zQ1S6^-n^NeoxRrryEHs=7F#rZ*X-$pYxuU$uYL;iXE>RBxi~1LbBvBuH0I=7bibbZ zwqslkMo@Cl(|tcejc;dkMx$(n)LQVO*JO#wS}1bBM>QJl*h|Npqbj@I@XF`mL25|u zgi6-U+MLdBQDc6UH8gHH?ax*0cK1BE7YuOn^x($A(1ttK!-M%d*Z4}a8}I$4&J`XxA4FMR-iw>G`X8=Yiq;$b?NEpmYCQtA3>@I={wRXg|StN z1|M&`qA$j^gGuy?YP30lzY!@vGwos61;X*ikO;oR-aA;A*n4aGfi5u1rW!GDOp#qp zqJZkWykvF9oJ(xQ$=qiYx-!z|r--21Zc8QNB9CK;o-d`2dB)clxZ+7PgLx(eb}gp@ zx8L{ms!0VzP%d|{iE%;f_%e;-r6&q@aaDI*cww4;&THn?m(DI~A*!sMPw!35%w)^J zOifJzwpRA}^Uu7nz`t5oq*BgVDWOfHZ z)7>pCU>|T04_|xo-s9Tv*xT#+B8*eICf+NJWff}bO5^+~H8nM)w5$Jazx7WKHtFQ( z0t(>lT%eoH>GN12txn3Aa*|nj9*8czTpsJG*~sycg&#l8&WPc=XY{Vx8ruK(lGiyk z+(_-s_L$JFL+4Gd(xo|G(lPh(NsPQ!@pfT1WaOT&V(L#r&9ZJ+S6AN?Q8_s|rm7xq zo24}WK6k(DyfN0T-el(&C=J%!A&aX4D=!6*jt{yw2O4sH?Vy0*jaWRr9EthD2q=e9 z*m!Qe8!FK#I9UOwKGCiJB+DSPCOkZR_DkdgeSQ3oA6H82_e3(8kq!E{|GvtMoU7LM z)76I5S~hu0uKumEZ+0?&+7DH5dRGQZCLPuU`k#Z6gF4s}T>6cwP53DDrBsZ(Eo9>X zSDP*7nBE1mb@s*P!(l8tKB0wC``m)ACu8Q@snb3l14?83A4w7G$x1L3&7eiVA*eP| z*svoRW{JA&SSf&by>V*{m3!a&!zjh*&CR^k*=>gct29A*34p61LZ!=J3AkG0O-M+? zx~Ki!>g}sY3u*Acf{5{ZA21SdJ^i=y4n=EK+}^>h8$gXW zSgzjsM#gwMPda$~V`7FYvww|#)(O9L_D1Onzn>QnF19RD8DF17YQJ?TV;IrxeutLu zAG=IP&&b$7f8_%m{>Rp}4bMq91j(GIH-=EsPtJ8HGt_^SuO-EYyPe_&CXJ`cBX=Yx z3UDz%fK$w0H8A`f>Z$cO$IyC*ZI8l2LwoZ>&>SXsQ|Wy`rC+z`^I$jXmb`qUI!w&F*RF;5Tujoj zaQ;34aP&hie`gibeC$S?OzA6?re{R3P33F7nLxI&?Wa`x+MYnaRnw25g42>is^ZWd z{gkm}XBh7h=ysQx1SK{)AA7l12S>i4m7`; z|A55rSOlB=Nufmm+ttV&@0tNcq4G+#HgV~rhy8Y)bn27Byd z;g^a;ALqM(J*`mf4R&ADP!(|xbu3)5Nc2&DHv~;U+N-Teb@JfTZ8MDPOxZbjc)8t22&ZI)i70LEyeNEd7b+$j z%Mc_GCO2XNf#zKBQT8@B_hn~hW?rP=`;kyVlt9Zr57+P05H!#kf|?i>Gdn+T_vb`K zK|z<5_^tk{-OWJSxZ^qw@`mmz2&d$m&`0V7U66eYLM&v%s$4G9U9w3CS2y{7H*_}Scw7cCDE z6rHNSt4yR3Pd=8~YhdM;@Y1FFvx24T*Cr$RvAOG1a|haFXPfcMDK7~(ke>F{z{>kk z=m#e&D{k|*@8fL+m5CS84NR^k^h^OrSW3F`9UwRaULXw222FKqRZ+8Qx$~_Lh&0E- zG;RRe2>RYxflb>C47-=T$4dH5pJ07Sxe0!P9JWS+@(6qpiyrsFE@asriGNgtYXC8? z-Xa(-jCD_ISAxewfKGULD*EtiUn1R4Z1EQx4s)q0 z-UoK0PwjW3G5EvrC=Vz%=+#AjyfFpHgQ?~%m@H5ftF;99(Mpn8h z-83dc2!oS^Rz#~lb!%}g(C=*c+JgmAvr;oc#9=%;+g>#uh~QAZ8XbR)j*~D|NI%}^ zvUv(EF-s2@nHU)vnVXvpdXM(5zf8!8PIec-XdmKIQ#p`D<<&Q8wRN7Z#;qT~&+xf!{~_UQ zm7_Zniuuk#=9EzqS`Ta-7}kbl%w|bVrMBOh*6zm_yFGpfkU4?CLz6~%Ai_SBr}v60 z7O#*#tp(-_cy0gCs7Mk-RZYFTWZg0X3LP-`v$lyx5d~Dp+*4LT!4wu8nK**{!K$3P z(%v4{3|SfG`F3*i>9j0?Y#lHcD0{Buv6L?4dTJ8F#|ANc#InOifW~(Nwns092gZ~g zmZ&7(tYOlG*x2NuO38`<;lCUfJKNi3KGbK==Ka%TabN04G@@<=x{;8lzIuTHrQL8> zSC>J~r2^&MKfM0OK(QzfB}6E&fVQ94bLEwmGX2=Hx3#^-7~HxZ;EbuLXi zM{W`8N4LN+)kL?A`GJlOZDbdqRbT>NI}uL%hyZ#9-mNFx#H#-$VTU{6tC5%b&zl2oiz< z0l;72=2gbm5uFD48ZNiH9t-E6C#-Vfz6V+n*qW&X6h)4Tv&lVj;+>K4h2>oulE!b^ zDmG5#Dzfh|W_m-U9zWFXC( z_^ofi(r>^}50JMnCp9bf^ABk$osV5_0j1LOqDrI4tWN*@3#&Jg!9(_^39q2wSa{@( zfe=k$N9>*ZH~EWmnFv90<`@^>b9{=95%Mh4G%;)vw^XKdY9r5%I0HCB6sRJ<>S#`* zmHhA}#8?c324&MU?lrwD-%S4=+E$Z@4Bjxa4}TA-m7p?)wq95(n(*NI)WUd+kkHVg zqN1Me?wZm{&2Og}QtBIA&j?|jxd5pJx1ZDjYc$VC z)QwyROD3H$r9=t>2{Vv=K#q`sM&7BgK4^)`YX|ap$DcqRM~_tQK)4w|^$P~g7D(o1no z9D#Vgu$#pLrLNSFY*NU~&Cr%8V$I?UdlwZI^{(0SS4pz-xAi%MaJA5AP+0RdjgjN{ zx+N)XlMD5D8seBSF%mA?*s?YM>B|?Torz7_)M>xDUa$5QD1OdGpAyPq#>vW^PGHZ3 zA-?*-i*S#GQiO$p;S6?FH7YBMhy2=+65Ys(HwTU_M2kj+S|h_5LXhu1yEQvG`95Ws zQw0B{fbqxI?Ck6U0|D>q_o!ab;zF-qzdlT-`$g8LbRdIN#AE9FfcbPh<#EEiXuN$_ z6>#h5p)Ik(!a~MiMesOX|Bfhf-kwH&e{<`jA4N&*j*ecDmbk2|t1BTXnU!{u?eQ61 zjiUa?(aKvkr;Ii8vriHb^c{)(h1}1H8;%(oWgZ*zQ&U+=IK{uK5meYvfB%YIQO4d? z+9Ot#;qzlO4QgxzhUCp#}%_1kK1!Z6lW8T2NhLuV@k%bX^t zD)0p0TYo9Er0&(2(!bgley`Db9~3V_NlVyACVRNg*6+L4qC}h$fz+y_{8B=n;RF%guSf~E zWfCgktHhJn%+*VvwH@in+;WKZqd(1fkIB*u&$MAbR#eDuKDpK>Q(5yFKdHext!Ok# z|KQ9vfvkeClZ<(Sn1)jq#=!%>F{Gb32Sujeb1;!aP=Wb#Z+n6UeNQS7arKR|Nrc@X zh&6!iyK@({^rbky?aUnYNah~c1tFpK1UUFnVu2E1taP#-Y1{)cU~3Rq*!Of33sfE} z*7Pg8XL1j~!5OMSrsGa;G01dWXWDT8z&-F8YS4B;p#3y{_^@+k zt(c^-u@NqqT9#MLZS)DeX*}Ty!7T>Kj!}WLK!^Np`*}kCFC8+_B7Le~30qVSSfysk zUFX>w_QM-nR)&%fOyOKlI97BKX^CiI;FT^6kgqF^_CUu4gU^M zLxH~x9}&tU7dTNT%uqMHmMo=hq&OD;o)kfK3dA`H7`Tg=`f*2BivCYKoufhdpjs%Q zHjbtJabZ_xjWsAJXthmWR8KiDex&OeE*T8)=tqp@n^+Kutk!$b!08eO%$_S070Z#i zZuXi?^z<>HN|FGU(@Ix#fUvYQ(~qw@W2@5U%hO4|-KIEIe+0X#np#`Qw{PEetFTzP z$+M_yZ%c8>FR@QV>6%P78>&DoJL5%glA{0g@Lo1~a;~KIBD1nycGobev5^s{Ps+t?&YTIHCHM7P2r z;p?As!KZ8O8$8#G06i27IY?060$H{w~+foAuH4C$i$J!LZ4J z+oYL7hXc1ND95*ELTBGx@1NM=ZI3J-zVySCb|&#HQb07TF|-wb0=$$gTwk8i|4MgUnRn%&f`Lx>BcfPznkP48FH*jpBl| zoS>k9Vk1MTT@5?2{vn<*tDS*~X+ zR!iYXQbhMkaVuVlahlt=zN9GI-&U-WGOG8wvxPIgDtNHN4jA2dpW0SziIR)xt&CAS z+~Kzz1IE<7m%{m^WX#{a80bu?lpp8MJFm4$T=XH$sHiYmOowS9y8s+L?Cj2P$JLiq zNoJ&7zjgi%nkqZw1ECajYMaswS1WREzLaiDODv6o)P>%`r*mxbxCPKkgsSi%!X0OU zfg5QQ1B|c3kSoq%hLK0vhL4z5=uoVp_*p|eAI-jpNJ7>wo?H#AAJ2EbMwdSJ z`?P>5)#P~m|KgJ08RTs4(S;i9^Ysho|7ol+(Yk$^_vjj7aqwULgO4Wv$7mG9!77!I zqH~3q4}W8yqYyK|OfV1536Me(QW{c+J|6%tUhzMv53mAvd8y)biG{t2!d=yf~Q5Z@>Q4A>Kh48V7tc?c`AExa&0pDBKHRly!5`*kIA(&_Mrp0VMflW$3r7e8!SM?N9#>8N%4jF&!Y7ko=yf{E=1v zE`4sXJwBfmN3e@WF87d^rC8{lnH&K<^3m4=!~uIOte;CmbgJcm81Ra=IEjxFrs)FE?SkKBp6FZt4o6mOwp16>$lvP(5 z&*yH^g*;B2uX2Gouly$NTIs1uTl^<1#0wmvfrrZE=vU)c*N@t!fCl{dA%XzajlrAX z;H@b7r(6dAWh|ckO`V2U)BXcwUJO}6_}VuLB~2Jtdt#hNoNyO_Q<<;`GPz^wpA1gy zB=kl7WwQoBMHY$#1}M^z>^r={-)pisvWY8ugXWcpzAsZ#HfxsnZN|(XK)4SvO^rpf zov^O#-`;6ZQV{IZ$s}AVrQi4W_lL8)toWu?eR=)lbaol&m*Ugek50*07>B-3#zOmv zNn2}_pZ@5!$UYfRWb?Mu@}Uq?aRNkC@*}P{`;{&26nTU?D1|Q(S;@RUe^*siAR=7( zstWF?1Kbdmcwz>FmV5&I1jYd+1`H48na_EJ>;seS^$D2$!(sd?C;Tw`It8>GD9fDZPX1MJ`hQ!v0P-g7z z?tcG%8-$^h>oPKFf6#PfD{ZXDyijwTh?CX%Aein*z=ZyelLSFCfiM3fB>|&!_w<1N z$O?Rb&e0j+tKm^nz05&uHBJNpfEk3l=( z%vL7K_aK_bQG$xt>x7Dgv#_uf44IvQ#E{z!$Hp>jvv{t=oz~XY{ycx=9BSFw`1+M3 zNdEfun0XFM7|d5nJF>&R!%>mg^Q@WgS4EEjEJZ9Ea=M-XSWMk6`L`8!ZmXYQ#T`(g zpgPbVg))cW z+jVSC44+{{)Z@~^$h{(Y-21WY_>UIo5+hG&+C=%1$fQ9>P#;qcvr<9 z>yh@#4e24ZkRy$f)oR0str&p?oHL2YZ(V%uQa4K#1N^CFz@NJ3L-41*ywyou9^EHY zbzgV}wfi2@+jC0_!aIje77;h3q(uC-p<3M0F(Tz)B9IC2FMt!A&?#U)#TU1h=xm%y zCw71Cz@BNdR308oEG3>?0hZQjU^;cSK180F^T6zB;2GE4Z;3Z4d&`;cCoT?p2oh8< z@T*FEvzI7rUUn}~`)wfwJuq;QJ_sqoTg8p-EaxEzd`0E!EZ{4kE@=i-W-pJxS8BDC zSoEzKrD~eO0F(hGUjXf0n&W){$}9`KqCr|8{1_Tyb7T5(KUUd`o9`wY4SsXakJyzn z3G1KfoTER*G2x*@`#o%@#h{;hQ zP9*~9QVi7cfr_5({%dHD??J6Uurp+UzUcR`ji-nkBF}PwP6s?Vuo$b2|JU)++T6lfd>RSJHHyTJ1bs_@Q#XnpT7knGcoG7-&Ni^7jF)K)}BwTbieu2=heD(=35&2-( z8!~WJ)+7QbC0+MA&+GnruJs#+IH&Xx4o8^&vh6`4k;5u27P0T%rQAE}NU*a=SrAMV zHg^9iIbh9iTS7uYc*%_~g#V-R03O4>0NcMkhW#r=1dkymTK$J?#u4WsieJDAu!WNU z%Q9#n`>%-dYoxa4F_Gn-J7P)1A6b6`+&$m?;-klpA3HgPD=RN*MwzZ5fb%{pqC$6= zma|m(23yY*!h&OGUwP;0f4qN$0+*}7G=Gq1tGrxx!NsP}N6RdL?2In;f6Ec6=Q~Cz z>?@m&86g(CEZ;Q$DoQAgSJ7!+bI`?6S7KR$Yii2#X_Yg{V?T7@5m$oK7I$I2-=J<- z3AaM>&l7WR@hrmNOR}fnOR}8x;L_S= z^Eq^#wCnt0TyxL$eH47@eGtETp5WRl1T>fTleEEiEj2wW5(<-YLq+&sL_eCK^(Ym> z569S=f#IYXnfcUwPMdt!QU%Wcs-%vglBdb<$TT5$JVy`2P_rqThJ#|Kmfxi@BCP#l}TxeA|hGm_b+1}al&DBk9z6e*1 z3*JvlvFn6}JdaGG)>5bjVTS>dt(b{hH!ZEtxE`+wA<-my*_?rw4XnyTJ6o!fYt{Qz z=+wATbgL9V+Ww9^XaQcbyI#szy1@44T(E>?z`>mB`awG5^^R?rJ78-nct5AX*2io5 zr8<@tWjSfCU@HNHflTMGwT*V>g;hA@W(Kya8G?xR)8{b!>i+CUK( z)J~hNG8xYTuF$@TrsaiY)v0HWsQpm%*at2aumn*kmJdq0@36t69{q7NQFQ5XI?;sh zl#W4Gz-+ABhF`kYX=Xh3=Fa_p)HdzO=6u9x1Y{+xSyqCR`$O0C>Z*9xHqdNJbk@Ee zdA+uI8}&zX+(mA{*udjxLTbeen_-l3a7BMvQ0wHE`W#^Okn?kUVsXMa$%~ntQAvRo zK#k((=WktCkIrMAq!=u94Q+XP*fr_=MFMW3%pD6`VQTN->o&Rn4p0R8z)38RY7g=8 z^ym8*--&fS*1-iFVG9cc6@y0+&4Tm!oR;RW89V{kD~ijBK}xylCR;K{{!&hfHNM;z+%^ zzr67f`+{6+lsWg19$j`tUDJk#4-5^#99Jl|QV`7kjN*)x06X=Yf-iW#a18YIk=J}C z!^dCz2Rj0uWTJdMmP_jft^atTHThm<$IqUyKGIG%N5?Q0jq`kbd~tDcos^C~yIgmG zzv>8e0ZR0ar?9@Hh3|inqiDXDLgUvHI~gK8V`bhp=s%>KoF(uSBo4w;R)3+{GQ48H z4)+@4h0SF*ilwltq}2Vie})0i9$vD08YK&oPsB8uvj6_2mo7G+oy`BOZV!}zdFeNB z9pRFU5u9Z{^cLOdk|KT%+u2=E%zaG{bm=P&t#|~xlxc257LphB>66G%SWJ%1T}|b& z!^Y)ta4S`k`OHYy4qL=b@K>X=W$Pw2jnKR>k7e5h23%xp8(RwSzf z$@!NP5SM_7UpO5j0m3?VBBI=uE5Gv49Hb2jAlXC;q9I5$2JKPm-YaqOhiO2t_8ndS zO7Kk$03xy60re#h2^eL_ls&iu*mLlQJFK}w!I)#GbAhi_wWJQ)u;^#`v1mR|bLBt|n##KAyy^Gkgqj9GlWTZ{VGmrhPxm)8 zNvY2mEFleQuL>lJQqar^Rf)##Yxg5ubdShJ`QvKSQX`gC-2JjwO@ zZESnUl$@P*6``!tD!|5e>Equ!kCQwD3g$7A8<&OkNl5OUR=q?*LUa7+Z-DrJz44UZe{Zq8|x<-r5sawH^wD2LV0dvCv+ z$SF<4x~}EY2-b(USyZ?!%(`o8@;j+sTb%`dp_Atr$+L3-nG_#Gvhc54b`~%r^F=Hh z?lN@;8?k2P8?(K;metwkMGPHBo+Zy<_tr~Wa4Ij+%hevaB0j78JG&eSb7ws%Z+&4b zGWKG&&)0KENK^oSlZMRs;zj4Nn?)LrNd=k=-R7#A#1q+KFt6Zie4#73-ZldhSmr|V zQ=a3Y#xMK7wZA3Zw_p0vYR`l?#YI7K@5SQ4sh*Jro2%r;e!qm+wwM>Uhd$3YOZgkt z?jvXX(6>n|nA*N-e0{MM`;7CrC)@n35?>ii9*|D@>i&h9<5;Om-IMVvuMLC(GgW`{)>F1-+$L zB~KKlK@IRxw6jcHk8T^EC8zy&Q%& zZoEo4UYLuxsrC8G`aW?wT`jJ9F)#2wskGj~H#?16O!VBuGu@ni%IZZF44f4{L5Hp4qW9VP){Eqq zY@r7$(NyIBbmU%ed8{Z@cg)?A6xht8wvR(hJ57rA%|B@4ag8S~zB)z{c&85uui6#)b+P`n`0Kip zgl*`nb5i)QIDRhj6C|U)U%^E8Uw>XoaqH^TGF-*8P*AVaLPV3EBjjFh29;FDA-1zzRq6rwlb20oRB-|&#f*~P)UJs(#Ez|t}yPHQ3PMCiG YM0UfZry2asJtTLb>bF1MGJWy?0TD&)1^@s6 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.txt new file mode 100644 index 00000000..e6297e20 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_39.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..afbf4d3e41d0628ddc2606b4e883255bc9dea773 GIT binary patch literal 19335 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.txt new file mode 100644 index 00000000..85c1ecbc --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_4.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,0,1] [2,0,2,1,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_40.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_40.png new file mode 100644 index 0000000000000000000000000000000000000000..c2273d42f4a23baf45088a20deb0cdd573915ee7 GIT binary patch literal 18060 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 z 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_41.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_41.txt new file mode 100644 index 00000000..7d4d5676 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_41.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,-1,1,1,2] [1,1,2,1,0,1] [2,1,3,1,2,2] [3,1,2,2,3,2] +[0,2,-1,3,0,3] [1,2,0,2,2,3] [2,2,3,2,1,2] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [2,3,1,3,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_42.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_42.png new file mode 100644 index 0000000000000000000000000000000000000000..f193ab8f6e02010906c1a9ceed5851bea1f12e05 GIT binary patch literal 21347 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_43.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_43.txt new file mode 100644 index 00000000..ed89d2b1 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_43.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.png new file mode 100644 index 0000000000000000000000000000000000000000..3c91b317bd39f46cd561e47b81cd823edd1b0c44 GIT binary patch literal 17935 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 Ph2)N!&h2~^%a{KPQW2|( literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.txt new file mode 100644 index 00000000..1b2b5e44 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_44.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_45.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_45.png new file mode 100644 index 0000000000000000000000000000000000000000..7abea31806b0f87aeed47e2bd00658b648bb1c41 GIT binary patch literal 20633 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_46.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_46.txt new file mode 100644 index 00000000..36258f81 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_46.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.png new file mode 100644 index 0000000000000000000000000000000000000000..d0fdbfdbf503729a4c3f0683bb9c20d31bd516bb GIT binary patch literal 16969 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 AZvX%Q literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.txt new file mode 100644 index 00000000..af6529a2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_47.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_48.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_48.png new file mode 100644 index 0000000000000000000000000000000000000000..32b334175aab657e605dd313172d5cf023e18abb GIT binary patch literal 16105 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 o=ad`##L+w3|DU~65&`Mb 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 QaYUi2q;~_w~N^>$N(39Zd;gQ`_l6#1U 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 Ul|A4$b@1-VtI6fvHGcj70H_EEGynhq literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_5.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_5.txt new file mode 100644 index 00000000..9e8ed7e1 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_5.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,0,1] [2,0,1,1,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [3,1,4,1,2,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,2,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.png new file mode 100644 index 0000000000000000000000000000000000000000..adbad183e6e2b67f7608356dbccb75d233e6bd05 GIT binary patch literal 17173 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 amivMJHe@*+4t}KsnUcJ^T%pXv*Z&K*3s=zq literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.txt new file mode 100644 index 00000000..56d144e9 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_50.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_51.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_51.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6ff28e4ea1e1ba38371191400a5eac3efc3d0f GIT binary patch literal 16846 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%0Dd%oNwF?XR(DSdl& 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 BizxsA literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_55.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_55.txt new file mode 100644 index 00000000..a3f61941 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_55.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_56.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_56.png new file mode 100644 index 0000000000000000000000000000000000000000..b571e61ce34c21f33151fc577653aa74debae0d0 GIT binary patch literal 18821 zcmb`P2UJsA`{uC#0xA}YfFM$&3Mx%0!4^$ub^?06-+Z%X*80y{_p)RsXP>suTYk@Tc&VkKdVrCWk%orm!1Zfa zb!cdIHB?@u4I zA!K`_V0(}5!@nVXZ%~N6IOrcOw}&}|{z;VThcABBN9W4V^DzwsaU?yzbPVQ$%nc4h zi66Xn{9eno(!+zi4OpkVTx713!^BGHWUqc^X<2DjDJDxDsl4ye1I$`_UgZ+T{Fjnm z;XWFg$1*mRv@|pyOzEI(G&JJAe6g*5%8KXR7l%nBQfu;FLqDB1em1Ng?Mrglr@h$L z*0#L7{7q)srR?j3qWf;b$R5ILhHSh`S%oHKwUzHMWZiCTI0e&9UXYArHg|Wk{4$+4 z6WF7QhKL?1VbSUN{Ke$3goH#4VbsKTWMqV%nTM<&c~H9SlV70Y$=KOa|!XN7Ex4-nBU z8s3jCcLao=Udw~QPZMA%rHQGqmWGCg?+>bSPL9jIlZ0yBBTl<0|Jrcml>HgsqW?NL z_+EW{JU1uQ?mWYzcK*m0{m*g{OZd_cR`rYr_NC$LWKyes`DolEyj0#gA5eKZp$uAe z*m#;0x6#wL`G7G==fK3}^(@f}q{`T{4VTgx$mVSN&*b_(ujA%^w$RQmacU7}Ius!CDkqo5A($gI9ir4L0!^aLiFGhfmw-CY&3#Zu336HwFRj{)#+@^ z;&4(nZ#-nfJR#QE(WnuX!-NGqRQlss{bzN)NDL0MUHe@aeHj!RkmH;5~8 zW_r3H5&vMAUI){WMAtwL;P1OArJ2Q57vsp!W&5mE@6;ZGI@S~{$`{CmG^+IKgwZ7{W14p)nc}?Y1$D^`O_4V~-<>c-i zOX+3Nq_AS%>rpV33JWs2^_?VU6^~(hZRa&!-cqt)A29h;T z6!>;*Vw-pdnPx9%s*X0ze=*K6*$D`~$c?@#A7yW7TnoR>?2F7`ObD1JtT4jXMR}}+vaS!I-#k&(V%J8YWK)t^K6!# zna6~cC~L$cdGAKZMb;|JhpkIvehoIMM=mTqU0MBB)|a`duYCkuOG+T93x55YGvn^( z%7CHJaVPl=+`Z+!&*IYsR8bzo@aTR?*}`j-s3nGFn=4t{s}JwF($$~-AP(C_PM+eR z(J%*B^NODq>^;jz#T^W)v=3Va<)JBgN4`^uFow0>~Y$p{6qg<2cw7@4%61*Z2-E%CGAmSM9Q zs*s&1YIMcP&hADxUrDs}y*c9`J7zNJ*&IvRQ*^}}Ny8E;3C5sM*3R=-B|^s~TV95s zkzm_1WcPj?SB)-d|DENU;@cz5#cnsTXU*>fUM)%|^4Da0Y+P)NXV9`1f3?Afn!dM8 zi(K9vV0WsfEJM@$xsK-v{odkhaL*VezVfo8%mU%>UknFPH)WqAG6`ePkz;BZBkmS9 z-nTnWOh8o4S-d3B7-&v{(LgwcQxbw>^eENQ27ck^QTmifN#ft2lq>N8})vTtYl zq=_vBE_|fyBiy%+8GNsmb7^Iz>xh6?XHd3(1%CN)Ys*EH9&{vL7pHo|O;i7E+H%b6 zYRlxi@I54G5k1o7id%pe$~gbkiNRz%W5#{~9GBy<4aGU)fdP?a|MJ_c?l&2s`n;~Z z9Lj4S`p2HM+V9gWkQAWB^ao}LV|On+xivg+j!v0*XCl4)fU3!0J~3X7YqaKl)qgh7 zVbT{lk#-ryis!smYyRfbpASN4G1kNoXy|8w9 zQFED5`Hh2BN9gBimm%op`2Hy}*$obdTUk9ko|=88@EYJVN$e6vJM1{Kf?60N2Da^ zwVywwgIYg+yb=yu68P*a7W8mUV+>};#Fg|ju-hR$NX4%zK`&UmExR&LvL9!m1y3cV z=wYVvR(^nUi#0X7J9dYAdF?{?`0t`el=xVzJF!t=7TggzeDq=M{DZedg*l>< zFjmK`SseQl+VT1AzL|Cn>%PBJZ?ojbu>+lnft|w_W1^!IXJz=)($cK^KqcgDVQy}| zG5h4nE;gTs4?mL(np;}Z5?H^u_PHQ-Z=bs~&d6(V^Fatf&n&@fZV2OvO`lDuGydd> zT>}3$a7D=Q$KK1`x8$L8;f=n50auU;s1poc|4FF@b@6xNA9Hz2aiSJ_v!ZKk|DOm7)DvOcDUq#;6>4OCEvY#s4W%JiCtMkp=)XUfdwl z@$^7qcz8I0aFeq%^8|+u2O3;prI1l{!zVwqQc$9Li~UNcsZ9?1LgxJNut1qTp~Hlm zy8c+nUhV5iRaJ=uh_$8?;7-^T%1s#*!RWrOB-9wv_#oK&o>%s0qqOn9JX|1Al>pv8KO zlT-AVz?6<0zM2^w4?=-?x0s<3%D--*{;n_<$`>3I#9%BSchv9r#vGAhK*WVXxt`ZN zKjWR(LW7UTOL6Il)?&k4gw-wh91|tA`TqXivorO#P4Wl7EGM7XOkT$~)P-=ctGC;+ z-kDMG=52FX%Z$WdwphLKSkMMU{_XS@C$4G!PSoPkQ$Ey4(Dc2cfH{t3H(pkA#?)(Y zcMH#$>0RiG$9!Ubc_7_{>*c)SACm?7Qgp-c?w-tSZTRsE?+cU&Aj|yDZw9cAMschf z*fQrxupsBPk=J}UyeMU6kZbk_*g=p4(f39ZDrro=vK!vV-78|`QkQIg6yE^z*H`yQIZ1ASi5K=qXzs@eU1U+!i9AwJ{A`gdAzR(^J$ zrE`B~DHg|CdL3ee>I*uENWQ24om3L&ecT={j5b&ma_@Am?|#%`pXwN@`4{F8=~Pu! zzkmO3Yim0+G(>G+!zy3sI=o;zzIsqP@*w5nk#u#ec9(B7jeIoVImIqWs_gdqIg#9c zJ^4 z_?@&Z^mSs>JAI5^UYE$MNEb6RGpj3H;Q4XWJzuO7XPsJVit{p3M5olcLVw|VM1%Fm}u8=WB{{FO_1|iF(AeRyVp(#!C% zbET+}m`sG_y%z4&x|oi7Wu!z>iH-9zI4P7dRMa*>G$&8emYZ?OX8NN}l4Y&t=47Ww zU)JWgXQN}bvurOVk+pm7QIey`uxXeKgxK)n3=jDUXzscV38f(fuZ$Y|Nd~-3lj^<0 zgn%K?T;xYn^rz?8+sfPNoSu4tPEn=1U_QIT-`8U}+2 zQn^xT(HUJ^S4Ri!?&}+q>nz5FQ<~A+NLhFq%)3+nDsHgp#$3tUQMH_ehwK3)&|wlp z4b3YS!;yX2Hf{?|7+j62a=ClKEn&m-Jo6qJC9fgrM&9%m?>HDdG=_ER?Gr=~GlVoV z14TElV+donw0wD-6pSIJ!+aSD(i8B8#eY;x5xRn*Rj zK0sXT=xoCnMCE*YF7m=;ci?pXXR37RXrC>FDdVN zo+9$+1iyZMsksaB%Eq;|tq8@1169EeGF2Nx%37wUcME3@@^FTT3(JwO-U z!_lDKsKV4{Crh+)v*wLQqjArh92sX>Euo{@ZP^frv&@vfA=xgi#1|Y!DLyUXg_61F zib7!@=hb8z@>jGsITT&q@<5SW+498O0Q5S}=kw}YHUIFdm9-5^s#RF`?PUEn6{h5H z&dXNj<8UHxa&q!Ughu*DGDSHitRn(m@ZKZj*wk8tK6+sqLOLrn<3hk@&Q)ZPPNj!RDxwGZRlF(OB55?oc zwm+V`5PnEzaW4!mD0fs{5_`6849_D1b?g*0Eb&u*rqcfT^P3?2vM^K%*&=wApnV9c zpAoxIFS8tw4VtXa9g4EDr|eKahOyG*9F?Ny5eTx~jW;n~O!(({EG1IA7=uO}_mAF{ z#3}_?vz;^CI=0IXt*S1Cls$EgP)R#{)F7apQLMQu(k>2C|8_TM@{->oAbyTk8Amyr z#wtTCs2e_OoqU=B2s}_}NZ{V`M^Y5>Ti5x{*Hr%JS zfx=1AmiYo+tFKzOe?QZ?A6>XlTT1f`RNw5>U}Mr3>STAaqtBg}^BQ_(aF4p#nXmiN z&J5a)H#!2vO(zkA-Gc9i#neljKbyflqwXOb509itHo4W-8FdHRG4CPF5g#9tkrFk9 z55>OBG;hdk$iU{G2sfjjh88`~MaW+opPkJUycWOvH8##0&fi5Dre3KRG0CFrFlvJu zp=ye&7BoDN$M#6r=2p`++qr4 zKSwG1$rVnmfsjA?h019{Fw>vAK#iC_lrGAI%yhI0u&YM-I61wmsHi9^l7&Ee?cXcJ zzaFg7o!ooj&5@V^+yUQqlJP|b*5z#+9c2=hzkYY6Ej{>Y-Nuc_Mn8i1#9kp!%l$*7 zEsM5v+_9VKsS>`Ue5`B`^?f?HK6CT(8i>6TLfxp%RX)@!XSv?M_C&(Q;8Rg?u|g{! z`9Llvsa;uLUM9WgcX^F0{6u1>I~O0C20ONDWbahgR{-Znu!o$G<;&vjcRqb&; zHsQ>bc(zLi1>%WJf*-6dI1r#e@}Fx)s+XugTwWmR34)c>V#Po6V;ZpcqN`Iwvyj)b zT*KLI@s0J`Kkv^Uzpxe*ZD^2kZ)OWiJ%#boaFz33>5Jk;{;3M4AF-)dxPs_>l*G)x zO0#~e=&dW_v5#hE?CUigfe2 z)=VZEacCyL7+f@{XJTTK&b_s~1l3vG*x2~=>FNy0ANFDF);npCwbw+jmKEwBTJ$u% zt2N`iF?hi5Pb##ItbED9S#YpMh^{kB1X+HE>f!>pNXG*tj8=m-`qME+E?a`6jD-2A zsi}stH|px@@vof+hMkRp3t+!=Q_thp%&-}pMU4bjsH$B4EAr>Z*vLEne4cA-9XG#!m9x*v@0{*$3f_v* z%dhkp!+iM_=RiJ>!=I87D=m2czWz%LsGhd;G0+3wri=2EJ#uGfW=?4u78MnRoW=O% zj+)5zJBp^RlcMqi?PfDvS8D`+kpd;Lq|C0+Cqlu-!9=zk#wN}x^L0n8kv2?nWe6^~ zh*0ytX`}C&46uHE*@jfK+Z-59ha{dn983!9>zPa956%^c`YJw_D`G1$sk% z16=1&JtfJGS!(ihmxP~LcnP}V9@L2knLQ<%e3@m3tF1%?*GRACOf*tm+Z8A&wvE-a z)rgv6TRERLmcC${S*E)*5i{}gi3VSHtO`KBX%ys}U2`205KdoD!za)%(+0WS^wVhlcOb)zy7M%uUlS?(aaZk~C z!IEOPq?K2Pl?4@cc&}>Qy-qdP#Da}o&^LQBIiYM2gEw<5O#2p>YAppNVkoj5Vmj8Y z*`S*b<#k67cP98adgficwybUw!(3miy55 z_vhT_&iCl`#-ijTju6?GffAK)NQP;zIXwA$xPLfnZA=IS_^M{xj7lY>mfg)Ala+l< zI_w!UAf@>t#(m~8DyX>eh)-raOL!duwRu<1F>XF=X0jyrOSd@Id}q(EOZcI(rKT_z z<*(r~Rky0~dLOb75%YF~e6=P9c6Nt|3OoCin$bW7<%%(hiA|y>)Hc;LJkoed$973{!KAgW$?h1it?|>5V>ciCGv&F@_uS`U!`=+G2 zw{VB1fcaz>7UI>pjp4IpUTnh`7mVNoj^PZN1;^cCA`9n^2H5erX)GL5e!I_scU25K zS2FlC-SBlvHVe{}1uA>kBtj9&vy1-18%0(a*~F_xS6m2_&Ej+N1o%u*%AK(ieiY29 z4dy%qw$reIiHz`TQttFbgYJe*9WQ;zA|Dg_3h3S)LM&6WnZuLtr+m`|G({u>z@$Ie zVC3V621FwG!@_k$NmR*KHt+`}wQAI|Uk!+})=2ZLMzu=k<>Ukf2R|Rd=@I5GFzPxs zn@V77#YnZaP#h7C`-;QQ-&nHSOl2IrfunZFW>T8M5aW*hXuq%Ghs;pntq<7PiP@km zi#wG_X?EY&TKOv|D72Sl$NHb21WoY6D+V}^VS$bQ)_6Tl-?yt&)GHv4b_9K|#%{Fw zJdytiE3Dy8oWu#E95yjAv`;VjxevK2b1c86`QDN7Z%;i?m0t^_2OH%!`HGyZliT|9 zVD0=&F;hT)Jv2fX7)V^J)Q;iW?qW4HH9@zCo4kHVTD7%N?IL8%Mn5>NeLp&IofP>d zAX|~2=)07iy|LN%>%`iYoX=vF&g_v4cq`zx(BvqS+1}FcO>8Ac^_e>wn+zSB0k<8= zXrxS!h|%NwyMu-5I6AHWIK2<8CylupVg0N%AV%yOC=_meogmn znWulfejgpHL^^++{nR{L;_bF@CWX356%CtFn2}NAm*&vPX9c4_0P>cOQ2TkIROyZH z98BBM9uA7J?2Hndr`mAG2g~(S?e(n7e#~j??CcYUk%fVZp52!gmP^^+GwSDcS-7Li zjkKGa45flir1+bH_+my-f!3W%JF}VM6deu|=1Q<`VpuyHJT@vmK4^U@U3v4dsQ9J@ z0x?=jia8@A16@DJ%)H38zP2{#^G`b({OVN{?Lb3^$#FBs{m9&ED+7q~$`8j!2NHo0 z8}Uu6a7nNJ*1n+|vMYv0d0nB`OG--tWdL{?ebdg)PV4DT8Vg9ELfhnbgX*$$F&r>^ zmNxNV6Hr#_Q-9`)-(evNOG>)Bx{i&F`5)~4_RZ$~_snU>MFb$Tsr#x>v;CAT6*Avp zZqeTH`=Zr>`cNNk0nV*)uP!{fygUW{@6LuTvM6 zL_ACVh(j35X`R~A-5r$=bqH<-u+zi=9fYeN$F2pp+&3Hci9372C9wPv3coD9z8g}u3*xy8DobA(45JrYwzsz! z0^^>0DdT{^%c6^eGyOU|4N?nWKmyzZyq^Zm?Z=1NJ7qC>d#P6sL}l1v(2D^Pga&Qu z%ZFiH5_8U9v%0;uzHZAPtjws=Spzzz4_0y?tgPPRZQhdCUQ~~~s$kdM*5LL~F|$(A zmuiIEt2bd3^=(^#yJk<%)fb|wvq0Tc4#-;k3kM|@J|Df_u!piQijEX~O}@C_R`9Pg z_Y}bR1y&V5PZdh+9A=P=`g?Ay9}{AD$1?Nn8;D+IJu^=7sd>C7;5s!{ zLSUDa{avPKZ@`0E6M?%BdE4DRI>+)B+oe;2NSEE)2VLX(aK`SzkGmGy;mK-VKJ_FwU3hU^f%_Mc zEkYisSLfm=>Q#%*AN2~{H6UO)zU{RPtf~j4D3!D=N9-t4k5p9N2e;Z)pT8rhkyC!d z#tisKj_VP-fG)eepe|(R+b4e|K$lB8nq{mAD3Qd1s0C$gs>4%PRB=6ZzhnwN3}py z;V%CjRjL?q1qGK5FR!eu2Fc9eeOz2r4(J4b36LZn`+J9FWn~S1zdAeh%X&0G^pyh| zs5q1ygw!cAI&JgjRo)h7a_*=oSR3F!KfYMzkzL$Uu&&(fY&&~<9ko>NFsR@I55SXd zH7bj}2n|sZe5;;l{~p5?{eWt4NOzDipr>AmV}QfY^i`dxvcFlcsg@1r0+AwGl@cl3 zkEu0MBE?%5iTTRF?MQ*4qh1n*fNVOMiS(N)s;V8zA>9*BWUDk%1C7Ec6GtZNh3HBL zLdW)F1=2f@$a}vDtsC_4WxD1cOX=l+$8i4&+LM;RyEi%vC?DI;z>Cy_X{6)ZlF1Qq ze9F^Sjh!`3a?aNuE+{yACvf$SQt~an@estA+x6kRpnSm92sxl{@K6^I(Dg6Oc{R%yXZOmyj{Dx7u(Ji_)*W3r z>-?~!!j=t|x-Ec!2krGGl%DSr7@w%HJp?QGGcEzf{nx_fyH#dwplKi7e0+RP@3J(j z#igXz(>)($fPv{pi!sqXkC95^^1?&3V zP$QG}ZU@6p>N;%5JA!{-svkm@^9H;B^`%ET5er|O|C(v#I5+qG2M@OEruW~cHPUt0 z1}`_Xi$tNe6$r56_XlLZ`j236S%=hW_se%R^BSs%1T|RJ&VByln8%l^f zcb=>nKU#r{9;e#LI9BYP*2&FmuhertMRUQD+`YZM@80EeEqX8BENwd?h?E6H%w2R4 z$2D^e1!z3`EU}qz`t)gM`S>4Rx{J@ag(hmA_TgR67~3YiE}#UBd*T4c6L>5LlkN=Y zKu{+s>VZ|`nu1@jt*oc`zzQ@fE%bZy{Zc+_BI#E=lp?Oc3=B);)(=QG;nH6qYRjLt z(gGyTGYcsjc+CPUJ@azi84ee?;20yJtEXww;vJaqWkutul$S_a(1ZIDdvY3ndJ#7xH&r)wprs{o8<@Z|7V%9XDInyG-8!_ z6>xq@;)gL`(3%9hqI({y1_0JA;d8F3n_8ZftfwJbdwY4*4}0_XRp;mja^i=Y7Ih39 z?R$^e>bG74q+1F(n(5nW5B3^i7atdAVrY2VvImXuuYNhTM(fiM5`P+HCitD5C; zJySNM0jTx#qzaq2TD?0fLDbzM4JO7vfGa?d#W$W%uUsO&uBew{esYd}{hBR}QSA*J#lsFbwvn~Ncx!;n;j0NQ)dQi-0UZm8_i2TM?ed`^ry zh$r0-DVfr|@!sgPe8dhpp1Z&bo+}C+Hi6?L4m93uJT^Izn0S&4z}El-IgSY=LO?LJ z0!Z7%$zttxadMh4M+D}jXB4*h_Gy3i#&~Kx)Wd zpm5(8pfm=_1x!c_Dy__VH7cqc~9@;rE-jAeFCU9C5BuhDND)jzD zrktvf0T`p*`Q9516#WZOqfj|4cupw2Ca=G5o;9zCy8tjmz63|PHU_puY#c!kQC=&;4J-2 z91qKp2Kq*P4fLFppwX&*6Xe#SeEYYyVnr#Ils*pkH2UkUw>`!=`W0sAgoHE`Wkp5l z(8-V#1jVoeP$MWtS!B412WVQMMYsKx&Yyq#uFQ4TEDqH+ZNY7fylL2>gAvMbB@WJ> z1+=og58>PMrd?54S^4Z)lmf<#jk+l5P7_$Oagac}d8<59w+6fJh6+T4SUT-w#!JfR zJxWE978DezQEymuUq?pQ3~{f;c@HEVRIqO`KtSv?Mx7p+W^=jC{$n^43#eAPCL~&q z#NbU>i2{xCS_d@Dxb`CM2cVaX;O0(16zYso+}zx!A(pV@Hr}$zqSucP zA3iiU?=R#ye*A`pM0yPfSy(@jrU}nW^UH4oJ5vy&e$fmduDzS3cvpc?$PD>tMIScf zD4MBzGs5>5y*acSSlp6VcFG^krAW>co_Q9{)Tt#8te=5_L1ty-f>8H|e;v*#5?>i$ zeWX#jh3mi=m2s)8ht1{ItY1%0&+ro`TU#*>ocy@W?{n5FZGFv9hF=D8sT<{^e@IBs zQ|)5pyTLWx<|dCBYP0wG|(p`nxMIlx}bs*EO{t0 z*w`Im5sC%H?_0^Ib%|1r22R~KWL99d{Bk>gp*}1i0O1TMBO6$WBWt9P{y_0I5Rt}$ zNw3dS3L=gP0ODK>r(3)(t4z)FBO^fhqLtLzvafaI)_A@Oz1)A)MLb7l&2%Prqj8k_ zhsw#W5HCne-#T-x6RP@#+m6D|et$HQ3=GW{7By@Q_v3jLiaBwp8Y?-}fFmt~<|7HC z9$x8)zVpmjKg?O+c#Fl)mH0kQKmYPf6-VEJKR7H=<2Mci#}9~DF%wju9Ov-kfat6v zo{Rk@iHSm$D9%3+tSD^Der4|zT`dGp@j&uZAQkAvC~@-#ijV7&(xslaz4W3%1itm! z1O&Mm^e=~!Mx#LLPqtF3KGm*G+EZIchpMp91c`<6;A=|_X|NKZgzElYrT<_o`lTMvO=86x9v_Mn2n(e1R zI54AEM!Fp3fEYy2v5bX$KTs#v;zzpe1Kc@fFZZLxG~5ClQLa}|s-c%$^3#DQr|0Uk z)(#=X+7i(H_BWjXqrp3)mkuQinqW&4$y3f?ba7`ikus`NmKeq!1?GLfGw&WgFoQr@ z;%yb4|E;i^r$zAzfv~q1ZF-n;6@bA6K1@YZaq9Wy<;|VuS-dUa3X(}cQDb^)0B?$) zzIplm_aJurYft|DZU5FED^MJ=LPsDj1k^1)o1EMOqgcEqQo( zc*Lyr&&_FB7RfO<-M?IMt#87xu_)gu-TYI;L169PkO}k{PC+!DOoMs#2@|M}{!nml zku6_LWYC*ObWq_|0>=3e#6LyT!Gi~d_tn1glq>bpsQ%5BQbvJx-KZVzl`KsK58L#J zf|ov8K?$q^QG8-mtc8`861}*RnIVnz&~Feq&+bPd5;s8qLjQG}9!1!i{Tm+r7iP2w zm=U$alCWiWUj`-CoNlEb5Xqa?hdTl&4H^PoqJ4Fn4FN6rKM2uHmpKrryyTe9|KG_F z*~G7vF=l#ooX_MTB{|5DzE%>X2 z6ZZJKh5Iju1OONSJ3o4QfRxTI??yElq!+akVk;_?BKS5`D*b+2_JXtx{x-ZDZNI2+ z^ad(uVIc&RR5v;cw?&6`rA#^7TMN%5E_NsDY*l*xs3yHuFwJr*Gws16hZ-8LyHtc? ze!oiLkFK#I$B8D#Ks<#~fP;QygyOU_h@2otc%-W+Jus9!LJ=E^p30Lc-t(Vv>g5Va zv8e2VfKl-fdrIjI9%E2>Q^-=}hX6aLo})mnuPggnIeFqb2^h$wbeG|exs^jJFg&35 z+kn1dyDmrZ^mOiqaH)bH2I#qfY>RPf4=CFJH2E}252#M<0gnk;il*AS(Cl>D*`n=V zcbwtA;jv+7Q>|SnI?!<%W$tJM!`QGeeSV7hi;~$vi`h1L8^{4?cZY<4c(FYu zaTwt_q(Dw-=a_uQ_x&r0iQ4VbvcNcM6a*j9W6FE@9+(IKOLZj(rjJ|AE}{reW-U6a z11e(w*tx+t#qlOIvkic@9o@jf4FC^taf?>3MadghxUzC_UDf~eoBTuqv-{;uHSX*! zjwlM7-`yDOiz>`#-|03ffJ?X%a`)i{i`iP1-!zFzcru*wi3j)v1VOCb1}RD*->d81 z5C4sGUX=RE+k5i$Q5p|?BsmCu5j zn2xNjsjpwZhRFdDSQJ-r{q2-UqvD!Iy${fg4+28I--=pUwFAEuW_D`(t{nrkX1hvS zTwFYQ^k@mL!t&9>hZipiBPgZRkd*Nm4a1kZVv?aT>}+hps(Q;yv^xvR?jWT;Qn=Y( zAFm-)=w-j0Z=qm%W1ed@1#V0D>iz^^>e1BHRB?hH4Rz%J4oJUK7s*4crukZVK-uKo zC}c^6)W~y~s7Sh)ift?hxXT{X8-faM2*k5WAuDg)J2o}}%iKIXqjJkjOSQjvjvc!_ zPft%z@U8`Ql8%(+1+SI+R;NIor83Y9z?lW7&&$n~cVJtWgTVxZ-~CpRf_8lX=2YyCD`x z%sk->t&D>ya7~7BoeWCLHp-=`p@E&sG$C|s^9nks{!6Ma$oT7g=n*j@B~pwYrbG&! zXCVueNRbh*UOu}MDYE`h(Mvbi?uAm_wgMElZM2Bzxeu>bFRR!>{3-EZo&(LFF;rWZ`DBaEU6H$2n>=`3nL+M_ob0WaH50*7p(}z8| zvsvA@-w$c{7d>IUu11Llm;YL)k^3C6^V~PSPo$gi0XMBwdw9k__~+cyR{eTz6XeU+ zJN8&$V%7~>-7o!c%I6$e92fVq_@u7E$KLB+=B8)_J(C$3` zgK{DSdnoPSk7Ip`bS3d$AzT0i?z-HfB8;1!u{WbLC<}O9z8<6tssh4T#CAo zLsin+w1572FTx|zSxR|Ntp2b7QfIVf`P3zfsJ6Wg>%a`aBHJ}g{F)!Ngs}xg=W`*$ z5}#MPg~<0Bo#)<%ji2G#tTRk-*A5Q-_I`po=ePHh4BpJ(MRNndA zLn)dOJbx@t@77gt^*|sv+My7!N24kc)(L1dIw}euKYf}>ieLoL4tOQdDj@(=vI;uz zuCA_HPgzGtYELEP+Sguwr~Z2BnE|;4?&i*zbc<|?w#BIqi*dx&8{$07YR16Jeo~sO zNSBWQOl`!>o~5`pvO{O1!sST3B0rDzRa3CCRwt|e48eO3VSyx)1UoA^;CKlXxbK#RAv%!pySe^z_5pu*YOs}3+3${aj|m1m@0Jy z!rlfrS{7LLV6TG4K#2lz*YG!fUJ>>d7l>A(yfh#>GFw*9-8@tLHE+tLtQ6&s{_@BS zic{;2y4Trw4R{#=qw%>-xpJn$*n*tjiWQf0hzCGR`DOw!gj4Hw49;^D8^rj9^tnoP zeK-#*pmE6`=GRd6fdi-@Td zQiGP-gDCC-Lb1A^L+H6@9v;@#con#3SP}W-h2%#hQeS%47F!MJOP!~wn1ClA4f%ls1*kSsEZQRw(d1}e=)1O z(c^MK0UH2NA1{J~0|^hbRJP7}C5Qt>)C4RqigoV8X*GAk zvFiQ#AhF#wE?3=xr$#L|nFhvD>7 z%~?Y95cS`Ev;j*4eg|g%yMz&XZ-6|C(D=%SKiCqrPHSoW3@~GR4>`6fv1^`?J9Fj?cy;+c9X)+$XjA4H5VAhI{#%bHEyV30lYufqYD2fQ_Wwrq7r82fDh-k-Z;{kE&CoI7vNw{L27*#}Giob!&) zj1rezhS98_t~Vqc`JAft{yT8}P42PT7RFxey!k|z>a&q%GM;C#qT?WgDc(ipF~VI| z^-oO!%lJPjWWb*VjeCujK9;?4HZ>^;)&rOtWxba`$^^)K>XeAI%3sFcLMez;m3|l#-+3-BHfXsV+!oQ> zz>@wBo7@c@2QDtv zQv2QBg{bocc?Z?)(9I2LdeV4dL}t>HHK8*b7) z@M0;2pe<1dT8OyptlEuy_uri&G%(fTa@-PLX$emGP%4oa2@CfZFn0I<--pBjE z3=Q_eQ~Z437(VVC!=1xmZ%^%o=dZYdQOwS0rJyzCD9HB0D;6zaJQR!%Y)8L~tDkzb z)~+4_qnluqpG*p%NDW#L8QaiAT4Hqspk4@YH7QvA@j@mncK>Po!6NWB5-_`L$5~-? zOku-kU()SZfUN5Oe0BAE)uyp}XkrCme z4bAPtEHE0H{Cxr9G&F{Lcm7fb6Aca9B^3DM9fAKpzkW3l@4fseXBoW98muffAXn6z zS@Emd{)uVs&ujcCvfY~-h3P)Ec{X`om7ZT0mcbtl5e_fs^VEw?=;-WeRW4qOyc9kx zVhFEV>yKYC4~62bKm0l=XB@C`l7{AurWq>LQE6Vh)fTl$8tQ@o%lJvmr6jP&mOQid zezDWsG&FD3XQp?HK17}^U7P)?PI5JBbIu(6wf>IRd+z7C4Me?_!4#7AM$byTYp;)o zIiF=@9>gukyM1tLon)Y>bZp;&^Y-@a`6qh5thQJ|75CCSzHy5OY1(lv_eg3&Kpj^e z=8Ra3fvY01VW>l;Xnlr$R>(f8_uC50RO7q2iO%Ft`sD*PtTjN@uTJ8$yaL4Lr0wTHU30Qlo(`MeQGWvF^12m3`l{pXd4#QMIQLFy8Ot#mn&OMe zcs8>h%+-akVF_9~8XAo=;@AmwPo>!0IYfLem;EU&WGUUQ_bRU6YGmKT?g(|_H&G{cZoiFa9Dxw{XOLr6EVFW%l*b|L+?CapnnYw&B)t1m+GZdufb{Gc4+A!Hnq~oAjJq?pmmIf_hNf*=tzQO z4@+_wwA4QGbYVwnSfJfg%4XI7^QHCw9PfUe5Kt-a^%lPX?}gK#WvGJuI{|?bMDf8rt(WkXM5AYHt%<9l1%62X*H`zNbx*HfeqmIi+tj=q zY}6@rmJ-SAYxFAtYk{y9B)3@QHBjI^Yr<>HVyFW*s22SYNBENlL22koAvegBydGW> z(M-$wp%liZ@>YzyZC@xoyjy`oW+GWjC|^_C)%mfj_T!=WRl*w0%nxYO44(RFW zJ7R?sx}dq+y8;fp*Ji9~yOqnwetBZo>t+Mj7P1oLI^>(^ltyK#a)qM!Z#i+t{g7>uKlgXWxJcbp6!?}L-gHlgxhoNr*Gs$BE#YC zyB|U5D~F=`X8G{QcaLSbVGwzFc~QIZeua7QQeIhgOSJ75>4Rk19@C=}nA|28Y~T(mWe2aF_6vu-?4r3gUs(GcT{iBdy$lT~nED zWF>^-#^=-oguB@oJk@cpn|{~0?*~7^JhHOi znkZ0G?}j-$ddsvFM|?!V$A1iPX{!)YsyygBmY4UbL0{usL?MO5=r0`Gh>-h@$TIaIsNX ze+c{*=29RX+Tp`>+P$Xs_Mn$8*52N=16IxDYK)oIK5xkgBI$Z4m`7v3hrl7QB%RxW z7&slo5!F-CDJG;_5}4*)n_U_~l54o&nZJSP6fny74C|lVYp>dy4v;>#c&ROZs2bt( zqH^cO#B_$x`HgV3B1$ugxw*M#$;_72dz|JHED-`f7MzBq!e44-iyaBgbSh}FsG&BH zZVvva%uIS^7lcEUS;>}+Z5(9o>8!RQDN?`9*s+Cg&@9r?yJ3jS=(+YtEJWIgJZ$9{MB@+sMMW1{QTeemY0^MkGrNOzP@1bLHYXnqTj4#%)y!F4HS`k%``?N zcivVr(c^z;UyY24pCP8@!p&x_T|(A+v;k)&Tei z4GeM{x7e~F){xDNUkI(-$1m3SZrvKND$960<6)DVn@eR3g9R8VnBK(xZfm=E``sA5 z(il@GT!=+6L=w`$f@z}_kG(>!ETXWD4!ume)ZtqDzVz`{eR{INGPM+Te4wfKoiSsb z_lwh8yItJ!efGoG#g5lP7a`oA!*9SS_I4*mMn1;J2a;rLZ*N;5Xh)@-J#Fpm5UEJM z8A8qU?x1d`Zv1z(8L=-T0D+rn0$b@9S$-tX)PE7YHv` zmD~$>yRuVuO`B;iZ+&?9sziZu*Izr4#m5ijH^0narz|oFpI!NK%r@6ucTs#|kv~^_ zNm>H?-5A5_{%J0@4r}n8&^N2#fi(FOx3#s%fX<>3qf)di7HPn_jjU$ut{YS6f&}W^ zE_H~x&UF0y*BEiuyFTv+%d`U9>uqwx8ihmXJCed-s%mQJ=2=VQ4JYB@RZona7DLPnNrz6`6e0{)kx$Q2 z$~=@S+|>1Da$)s>$t+FK&Gn|wsnLkDpLbJJQ%Q6Mo*6c;E0*frIvNqKI^DSQs7WK^ znr`XEqoiIJ)+H+vGe+O-cn;c#VP z;oT595kjYOUmx1hw?6JS>~wO}4BiW0VH9yRbA-ea=D(%_HyZfXcb`dInKWt{d?#7M zFPs;}!TW?+WR6ip4O}I`x}kN)`+BC-MgCqf!HvxaBC!bW6a?kdlE4RZX;SfInIcTk zaj}z21zkB96u1!YWjI&Pm7>&;j)$TB)(rTBN}YK2vR0TIf;E5kLAu#Oo->eX_qhVje6as)#3Ir@vu&eKz@e;9n1;;1X$W_UL2d z5(*PS%^Qz;1pfX6ibk#`58bhv3Wjb~2ZZT1Amnbp-*J8Nqm zKEBZR@9`c#b9d^db2S6D2TgQjzDzV;q?!CAu6>UQ#ZrK@o#suVAMPm z?^`R{XV3@IU&S~)u)kh>Wp!6AcYmR}Gu4@AfuFxs8R$JTGgB`=rZmX2{rln~m+UYa z{gVdz^-f-7B&F4*D$xwF_?t2))N9nv>o%o5&hJIFo|p~=eOV^S{kG<$xyDsP75|X9 z<@F^R4x7-4Y6s(ddM1=K)>IQE;Zv3Sd;3;NSsB|ev;4wB(S)wyot$Y$503;=S??Rt zyYwOFZ(o|uRig>%+WR$Dr3i^VHE+!nXH93<{FPeQY-W(hnQ3|16=fubDfC)r?X$@Xy^p(lJMTL+;>{o@d8y|NZSf=z zT`y;Qr65#*1Clgy``z5m$4XkenOLXc^R9j!DNwb*4bQ!#N-)U?z2kr-Tm3$pZxm}* zkyB4WySI~RD9 z_3+-Y+u}mzOQm|6^>~ieA>&0kY@}tMM;SP^(MST**18J5 z>~l`#GB+bQIl^Hi{@1AVMt|2GyY8?Aham3UHrUb)V5fK6VU!km200v1oKcwW?AD`h zt;?+^PfSz~Vr^G!@=sDO<(l%l;KrPw%A%hQf8Z}KCbCgS#HMCOY^ifzTq2c9G3v^= ze;gt8hGwB;xJp(yhu*c_pY<(rH~13TDbY@Js;^KxH)SuIvzMl>anzN~23m`UU{48A zl9AKV%aT?|hKGF8Q22(mybB|aVh)UG997pCjJf4dHKypk8}mz^qxpqIVK6DU_#9b9 zC+^~>osxep-jK0HN@m{;7zklV3J5t&jp*I~ks*e{boZ{M6l*MpbzF+y@pbp`;67a` zj!3=snpq-w=wf32smRC8E0XB@1x{@@yS<3!T<%h_(0FWdX-4dA_Mpl5bssZ)%sUrg z9@PXJBlGTKN!IXRCr?}<0JlZA={f4i(RvR4octoRL5pgY#_tSj4)*70V_KBg;K1Y; z$Of(LU+o9%OHIbKwqAp6lV7AaXvzL+?_gi*F{UN+8a$eGy}dzO(DJ9B1oovL#KgyFK1uxYBuaVTnR{)d>@j2H9kNTtqI|2 zeAAtjm^iSsZTZ^I@7xY5JMA6G(Z+jE{{=96+8D3$VC8b^v!cF}10Bg<-b^}%JT^@h z07>z?8vkJLzNF>n(fYuIi|wydKzI-%AUie-1~26b%Oey_$cHDPQ7~v5jYO=DthnsH zksN6h7Zbb6!0_Y8kBsncp1WTBIv$^sAVdtuJ-TmHl2@)o9&%o&r5Kwa@h&K}>P1br zb#TzA?r&UN=|2DCXl}Z%b-Ao0w02Lyd;Gfj7hzsZU7@F@NPzj8R8^6BAv9MQYU%lF zWyP|YB7lMMOYeoOiPGfen4%j>twnfGsxtc$Di~+E4FXt*nzC{cyaPNoYb?{XYbEeh z#ErZ?YwfsY3wUEma_A$d%0~S`U9DPfGRQp`L@uG=B{bKA>|#_x;2$@E?=7pXxqUyG z@#=1KQxnI}B?U`^n{t-|e*F5yd#=I}qbj!HyL51Gx!H4yUhNS}Ko2r&7yEs^v$J!4 z{uxAG%GaUF>p&z~$VuciWAX}7B%`XmjzimO(!;^X-Rq;;clHI2qqd*3A51n9T1#t- zI-uZVf{==}so+&PPZxahn^{0FA%&KrVl3St-m6!WFS9;=DC&U3rN>tyBp=ko!>St02n*x2dN(smafvWze{M86QD6*}^bQ6jyeS!l;iU6D&Ysv~fn=}gkl*OL z9}^PN53lb9DNaYO+*N$i)ell%9To8il{?qXIha|pXO_b{AuKRPx@6y4QM z;YXK;Z4YZJ*$tHb#ngR;oROdxc_aC7sqSdPXPxFaGa})|NOyA5wX0VrX?C`@W0!AJw)I*{Nxmf#cI zG>lm;4aSTQ)oCS%ibv>w9{4O4784U=Rrb-dIU~_;VBm335dzW3muK&x!@i{u}z~_-oZ9Xv(pa7u6o`y5^W<5^>!%E+FSF`jx=Ur_rUHqD~?W!hWeh> z^xR2*5IMFtYM5VW7nz@b%bO#(xVCoOTIA7C2xI2x=%_U(ZtW+Y31`2Sto6jU&Uya+ zWf%=NJe62=aaAS8(8RrP!{d8ClKHW1SCDff${U0Ab37WMu`5~rJTzU~8cG-H#A37# zec$N)1ns@o?K8U*kG}luRY*ukvFTlt7cXAe*o62OOx=>1;#_eOUycy=QDJAmE?bd! z8B`@Qzw^ZQ8Cm*pb;e7r59aF!1O#wFBu&O+ zs_D13yE~)DmwC-pmHy6P%|<~6+jM3Rd&_Nx+naI?Vn=%1n(Vd7WX?egzx-tXtLy3$ zvHZlHN6!dy2`S`n(*Jx=^91&r@%yCoojc|S(y@ke5P!tc8e5?fxV;!q8j`Wk4j<4y#r5UgRLi7RzJZxc!0G?$CW?cuxpn zO2NmgT_W}5K{c|+s%-apUu0zDGE=Etrr1U#a|eB_Jyr(ut5G{r<>NcRcRnVA1>Nm3 zby>P+zt{g}dMMP=r~F&!JN5g?A&Iq-ZfmXgt1L^W8!hNmjK)>KQ+g(y`z`d+%~9Z& z4FhA@x#Jg&zP9%>vDcDpTw2gdKPkr;W7IIa7o}A&C#)z}V@Rijuu6X-CvEim|l5 zIdQ>x_w%~xZli-xl#7)XYlIi4Cq`)AqGI}r-V++}l}76XupyRKYD#VtzrYHer{<^8 zW&94ykIxg^up6&#BM((D-9xO-fNnmB9j$z&ck*wm#I*g$d5btpK_4MH*kCY&wY<8Y zSMq#5x;=;$z<3CaLeW7@BQNQdZ1VgnkdQw9t$TSt*knF1UCRk6 zUh}M3OXa%!oY+Pov-rv!Ge)toCriB|i>$)_WwtQxb2`E2T$pFj z`Ch>qb-48Xr(3UY9`h|XdagmjE?HH!g(~`wL$b34f-}Qw>ejeVL-+DiF^S9f+DE@) zR65*lpiC*2?!ObhGvmLk=68@%fpmzdtqR;jl&XCn9o46}ZtS}dl`b*mCMFf3Ff@^+P82OGXw z$+yDW{eCEKE5}=hHNrO4!aP5n_X%^x%D@aOyI~z^4jNx_rJl3Xn{A-)e@c;l?knBH zbld}>H=ILcs#jbJs5u@zkhf#>(nDt?1A`MP|KahIwM;KG6|h`d~F4Bd*0gy+3$E5?ir3?yV^ zwzjstNZ6H2v?SqKif*;D#8$FIrx$d#1;V9mZrBq zNC;J9LJYM_?a!sJRo{#0c))b7UNr3hS>KIdd(N*U)hWBki7^)qiBm zP9z;qT=f9Yo<@^Y-6(ZW|DFxarKF^sx#{8IK{xS3e3|$f&e69~>Y}*R_@W3BSy&f% zEDc1Goh?e5;Q@!+Ui;_&D~|>Uyl5FSZGDp-=JD(3@OX<;1mkm@UFK$Da)Bho=5X9U0h;XqI+Fk&U)34ezDtxba!^X|L_4I2>y%n z48hq5R?Ox7Jo?C6R=lVFr^k;qde{gHpk#=FA68-F`$U2*P+V3;UYz33W@$EjlRsFY zkF?EXw}Xsybt$^avNs5H6WN*L> zS=4gfYd3y1hdX3$mbG_BBt2u>+e_XBZ>o=Vt9#Ne#_|5e_t ze6JyAw>0_wr*y1eVrm2!Vh<$H#JN21H~T{dyoYaiKL7J9!MHIk7tIe7*Y%_mKrL7M zNMv2H2X`eXtUrC1XcnI-jW&Gg=3G198No08$k61cOB-a6D4w{HP*#s8VU#I(*E87dGEHZHl^KXi`$|4AZF2;$GO(gs{Y(N{1kVVC1}- zdCtu(w9FE%2B@C+)>b&}m}yCUCW2pIqb`ekN8WQj-hF1{sW9xb1DETzM+iRYE+&ud z3o^L;X9$pa!AR163xA8MOK;u4;$}{@+1qDbt$c7l>|$^EssshehLUqP1zZTDfJfFnaF^lvs9|Ni}3 zR76B)#sY!1DpNYTpYcrzWm17**yF*>&d!F1Q`9+$d=zpb!*)V45>!O$8u7Wc^Ny4I z6^N(i9gkzpi^VaHW@{MQJx`Qm?Yy-xY<}4gMS&I4-P`QCAF1LnjEwAKEgfB1Yqt6M z_|_K6Zcx@_?cv_ng7~Y60E7oNPdt2Md47JhA<;ilJv5*=)Zh>mjv zWcnzpsy-R9z0%U!YB~1$^(k*-H8r)})!JIAE5|J%^m~ri7#KRQyydu!!LC6-I!feJ zp1JAReTT;Vf*Uu4r|iZT=UG#(-C~Y}%3Jx+ToVo6zYDgMe-~_ZewL@<^4jYz-1%Z{ z>@ukLthYC2ctYVEu=%_{W5ZQZ^$cxoY`Qu-ABey7@~S~wx0I{pC*V94GxmP1?_c!T zw7)B!0~*o^$&y3Cg`7YE1Ol5ku&5S5U(e@VC@k$VGpzdh^=o;#+!&=tiCm`bJi%K- zt{QK~g+PPl_Y#bsOGj@MWnLPxWE|50QEmYo-UK!pG$k6xdy*Q0QerRocGwzy|S)O8Wxrz zQ)Ch>m=OlQ1uBdLIA}O?^E9LSfzf50RJJae`OS)SnOpa??o z(Np51^>y!UF1wA;Pt?o%Nu{cCgHj+s0id5mg2-r!_(zvrirSa2;7ohh>@pE39nCMF zjk6~5WI~WZm&f{B;#m?p&^G{#>_JQMqn#S0K9NCJ4RMwmwBN$F3-ar-=`cMa%>4}% z79`=+0yJm_{4dx6z|1zv@f}!wy|A*9e?i@A<~=S6I~nfat2V0?F)!A}pYJOIZ_Y6% zocU|OjA^~~Xw|E!oVa@6NlEZV4kLUoO7dT`Vq{*Ol%%<%5haQLEHY4(yQD~nfkWS< z&46;@pXFe6wm%B=;8ePXn;EVy=AvLtNF#WgPPPrdnz)iJ8HI!xO!n9REciX%rJt$c zQJS|tDX6(9WcY4s&7je`HBXYS=;-J?T@~aa;tReku79%3j18{#i+$sGLuu|4riYjReJGlnU{o#ox3kizLugN|&ktM<5 z852{H6Ixf9n6jJ+&!6A*yL0Ex&$@&CeH|>lsIA$-yPTYx0>D4-ujrv3;GZxk)ZYYB zkYe9h95K`D<=V*M|F>nq{)c4&bt~|A@zViiC|m5%&`?5`h4n#yC3<|^f~|pXCb;DL zGxak9wfn*?!*EcxN%;4SWSsAgDi4;O)ReR|i@%g)_p4;}8OJK^JwIoxQIdPsiL>AK zi!;k+NNY>W@H$n;KPW4=3KSwwiR+(d&us$2p@xOQ(!-2~%cI#tq`8u5PYMwS#@U>} zx}yC?ERAb}ZDmVZ!r_+J7gSYCLCyONzO?Qev}GHantEef|FVAm6`!ssL)xdKSOr-t z*_c>6f5k~qroio9@OE71Q!;$^`?Uzt`h4fstl>BaCCiWF&wO6K{!%0MWY_cSk_O#s zzw{aPr+8D}ZuHM@fNl7@T*JXOka-n-@$b8oG^4^>&`Ihv`mvz0bLFHxQz5PNK~h`G zZ`xZ~b>e{xmhe5=6cfWrF7Orr!|+y<Nfkw|12mEP3CBjnOM%l6KfJ@ zE&jjMJ1*TMH_?bmWu_fmyeuvQBOd;(8<+PU6tdlGq;3@z6@42w*P;qf<580pR32h; zvH(k{v!ffgOdSp@DZ>X@|HF3Vj4KW%?O1#`y>wapA=nw9%mQLwCuH9<;m-qH1D6K6 zK%stc(d1^&I@RNAho4rY^&6A|q(C(U0nN=}fGGy?bh?3p{;UBi$gHSRQd06QN)Eh3 zMRP#3QPN+vJiB@W46lD8C^tB>sH*DWJx&Xq@cQi)ArE8tE<39K@4%=-H=Lw>WoKoy z2Q3VCjEiUaLuD6pb6LqgVQJ|Jt1``@kbL@bn=Id(-ZzY*mJK&cjZ)}!lY~Op@BkX; zy^I0-Z!+6+tqthx>iWK;TWg{@Rz&LYz`d4J0z^5f87z7IXEHk>5@+$=psBRmC9tjc zwc>Cgh%2XLx}9i&Sy4Z8<_xw0r0dvlnNOcSnS8-+jh4X!@td(DtecFKl$L0mja@$< z+D!HYpH6R3M~ayImr1!>60JHWX@NR%a1{yjmm|kUMy5oM-s8n#@s+mL+txrFcKIjG zhAjF7saNxwI@WspE>J?9nANcdv2i@kSe$rEler{8OT4gK^+SjV}R+NV56hYRr|lZKQLG`hDLGG;)Pz4=pWw zU*&4=>wDyq>Y`^{`%u#?NdYAs2A4J!yNKI|Kg?g+l}yQYD-E_jdB;(Qw<%5z4iSgG z<$FQY@l?9wU*Dd*3RUEFDk3g=iXhVPb76W0Vvuhj2ARdhAO}X1^6#SZ@tfaKd#bpN zUF8RNIj2lEZilNp_>d|2rweLnWtW#P#Y!Fs-X2lcpbKGmsA(8vMRm>zL`KafMwp1n zfHt|$_q;b1hp5cM)ME#0uRDosz34&P(8a7zFRhPVht6~*i0;`23&%)Ds(h$GF1~ZN zg!SKp&0C*N5RW}8UHfF1v=|t~FKzVCjd>kzSW=NW`J=8BeR5P>n_eom4U0NGVe>Ci zjN6C+7JGZ%S@iGMyilcrXT>np#vb{*7y|LphBqj-`p`o8u@p_ByiqEAr{%&V%>k(J zKR*rFo)VJRUb9&O$zrp7uEy_oAvvS-YV3IT5v zK)`qnml155@f_W<-LMQ!UuIw@a)HI{$(PdSji!ZUMN3M^($3^QoX;ZzMRVjf>8 z^o!MauJ-HCK@Wz&JmFw&ro)X#>B(hjBwN5Rz(Dkr+TmILfD4m{1V90lYw+1$I6f_; zGJ2PxY8fop156hj1VRARqD!*jS9>Z4(;l%J8c`LTXUc$;+`~x1fxOC zsHQOsB+5q!wmhf#;UK&@T5r{*6$$+Zgla7T`;OKuJ9F>`l!|y@bh$jRXnb!JV3rY1 zF~YnF-Qpr>I9U}iOy;f_RALdc@6sr2r{OCyL9ERE4Oc`>k(3$Wn)?#^4K68sFAsKX zq%iUE@!!9H*GYWb53nP6!`_KMbl^?xt`tUNhn}Fz6Ujd9`gv-UxOVk<-viJxNe2fl zKXl=tWv68Vy9n%a#~)}3?mpp`7A1b2w#M{3?>>5JxQH`Ce@{j0HYZI^JYo_ADH~HF zhhw@KQn%o|(+A+jQtcCOO?R3F`1@~2TY#)7{0E3(unm|b4_?n8JtL!unHkoyiWk%V zyYFvP0~^*v_K7QN0um`o$XFT#5n?O}3CT_PhPStIsvcTW*=D!= zpP$_1z?iXap-^OXMGZE4Z9X~omanM2(5}?W4`Qq?Eq!qG1gXt`&mTT(br+)pmXc@) zE$E%Fyt5+`nE(PlbDYw(%R;Cm&7H~G#wL)ycYE7ez{0Jk3-XwBo`D$byPx9vEq0N( z5})QxpZx1QN-oi_$oxiDMCxLoOzQa5N>Y}Gm$x84|2sb?b|(Q~zE)Ib##~<7`IF7B z1D4=R+j%wa|7peIR@3yu^90Ua1VYrE$n(D8e2+K*9t5y668JYj2or!wdyqRYRVZB| zG-aK@l!LsBd6O_~9Njx{gN3VJ6LGlU$ysK^dtG*S^;^f;V_v;Z^)je~mfa(`X$O8UYA)J|XSrfoq7<*b$zn%1SEM=Gw zC+c*0R{>8I!s#MIA)8KtZRZWt)J3y@zy61b;pC+Ni{WTjU(!?ZevRcb|8TIAPoy<8 zFR3@j-8gZk4_Cf=dHYu?OfUT5n}0ed9D|j--e3(SA!K}_%Jkw+*#+^@K$66V!9KKE zX}zRq)uor{dR0Q80-*##YuaN$RkkvELHy*$NWJH+IRu?}AxGx$plbRJgO6J!zKnmh zO5<8H=p9s#)=GR0NlvcaIgRTfhkiq?aI?fWpZrhjIb3TwJyHC(Wplz&Mj)yLi@i*N z>tUD_!tL-s%S`zZb(d}yMF5JGg1F@gK-PhZh??xbMIuL;mrZWL=1CH7fmH(R3T=|S z!;aTU+NS5v|82Vdi(K{4iqm|6Br;CLw<(ECJMH%1f~v))rnB4iIQb*U=X#1SZZjW# zvbm|>(4GjQD)CZi?s_ZFVt6w=$6p7vxOD!7)%+g}C4!(fJ?KUo?7YYw2(n4myJIb(NXU-kB@0MD8&l`MG>v~DlNby*!{DeI!qbh% zRw7t_bbsU_)?-lycYZ)Wwlt{PeOOL#L%Y@&7jvDErT;uYuo%7xNc6*Cp-A&kf1V(a zu@(CQ1BO2#Fg;!R>)SVix}vNs4y>z@5mT_wbV~>pLQY0zLEI4e(a}4_@tipKjI}BT zXYRHxZ9pA#tYmDL+FP~OOw~l3_4PntmS%tt%s^K8n;q0cZZ`a}WwL6js@eCJp?WVO zRQ%zzidHjiCu~di4gg-Mj+X0vl?C%ckM z#3jDSl8MGeZ1HxIA|fpxTs0l9Pz)er5K1#hqf{ZM4=U+!afw!rNYdWLjqw_fpZ(?| zwarO68in+O!FVx3j5;BxD3t^!^)>vU7z;A{4@o_(I7g<2Dv;I316lnY0b$`NH)lQV z!rViYzOD~H(pYCy=ppGA5@btB8Jn-|B2`c*%MTUTl?!5YjS(V^g(+S@Rlbj z_1PuU#i!fjkFDW1N|^r!LTA}?iMF|&i}vsE3qLZX-w0xcAL3d11Zz?&cq2~=)VPC|!1DmplS5o6wJK^*;ug9JT@e!T@N5Mf3i1Q$XP33!Ud?>y zLp@n3Y71xQXy)bR zW3)l4V~=1D9)2ss7@WcRLzgUeZB4ym>Zly#L=ydR+G1eD04i#`SQWCLm#vAUL_eeR zJKLFj-U)Y3MH%RcrSnF!yNP)G{w2swzY9xn%{_no^T(NwPMfRLKz6IerWxTjhHnMRThbp_G8cl(qEi3iL1H{g5`YIi z`G*G?P-k`pnSIUwiwEVMR}Jd*mK9_eWW(=BAk{u|AiMCHnYQ4crG7n|=A<7^!tpnr zQi1(fxHC+{JbRC)T~Ld)Q4eH%^VX*hq=+MU@w`$4PQ(bGJN;eLPgsQ>~&V?nmogXRSN4B{YAjC*Vi z_6|M^(|_SyOy%P0dh*|i4LpV#vG8`+fhz$quo=YaNq4887 zkDf9=FwxVSwz4-(O-+rA&_zd0<@1R1(x>X%O|9Mm!Hmx|qWW+}Ga6UWG9WZiHF75Y`V zJ6#onIw{-Y&qr*+NI3B2pemA86=?OmZrlDa@%oG_-lnLks+Rclh!_od z&o6B)s@!cL(&+hh2E-sFao~_aH7*7@CdOU}FB!mZ{$EOxBIt}jkLD}p7aoHhUKfZg zj>Exax*W z0@H$so9V4iSzgwV22i;}pB_9RMT4Xfnv+$x%J8Z}<;Jrh3jiDO4<`!KBQpMy^KX6O zU6{U3PX+7l`gS(GmeOnI1QT4Rs2Km$-5yB9pP#vBmnZ9o(rpZZt=WBcd+}PafHVDJ z+k>&VV4l~}PtR&LHhIe6259;Sv!U)1*<~+g>O|P2Zgxu<2d|mIyJYB-eE+7FD)Z>Y z^a8&2lzH%CD}o*D^rbsS);zp3YbMz*jU)(wAs&$Mr3QNe+Os)RF~9d7u%!p!y`~0l zN96z@LxL=r(g;``flG6Oi61C)V@?Ry-*?mUvEH3J4K50~Qq-m|XI;x)6{LO`Ql zdmG-zSmQn|9>@=8;nWp%b#=wX#nsi4f`Yx)BKr9;Q^eu@H*GY|i-S%#allGNO8-jq ze-*`o1Zm7ups_s=Y21{ifv^ywCR_f$k!{+A3}oMUDW{vpc}wT`eXTne@yYYOA=qZN zF&R)2N`6lJcS(#<|HK>}iE%g1g+uNBI;v*nWoO5y|JmiK(c0Qt*sQW?^lTnDa(S@_ z0?y0GM4%#C%r|vg*%SJVU0q#smVf=IpoE&)dmVH>xk}?knFUo-KS|br9KZ+maF}fC zoZUoi7e*3DzQo1pauGp5N^}LhVHz++6x)_=EPKN72={1tUp-Y_7@yKkf!he*yS(gi zN^WlMDRlAP-X1hJ8e-GeG^gwwALaP@&)sA2jyVKMxjYPg%ewKJMkHUmYF6XolWM`- zVah+r*?jt@nQasaqywjx1J8o00AUV~U+(EqKWYV0-0g@15W^Vl{&4K}Q`1;lT1o)L zHW5+VAD5DgKQ(}3+{5)+vs)6djky$Gr~vGfj0nZQi~i&|j>>6((J^7Vt$X1YpXaPG zFlKMZPfmy3lHTJ3$E~Ms{!-HZQ;S1R5bqJOBf}5||G|XDK$*>969jzVtYCi%+FA~( zwdxDB=r3d{|3g>?_8sSmb`2*M?tMkH1{RU9?U?V8+yM*T?VfV zQ9qjQD2IXAX7Jf`%fFa-GN{Y57as&^(#*rp0yGl~sZvdOibvv(=M}~00q5w#>9xQp z@v5O9`CR&wx_p*%_41^HWC+y>TzQ9sD+8p!SW#l0xY$F^|G_Jljs>p-N>03AJ+G(g z6P-tI$>VcB5o)H57b1aP!52fkwdF@6z1odMvpX?i{|K(Y1cBx%6=1dY z-WauHd`H;UY7Kn|x6fIMcQAz#qldTKE1@xT{Rk!${DY{-<>o z-|8fTYGVSe!GBtxfXpd})mi3f!5Oq}|7oqowKloP+@OrBS${PlNxo9^zU9on&5%{&Yjvm;ZSHRjT*s0g3Wk^*6C|+yQ(FP%9FUrw>d{#n0pnmNs`1$nGpYJ3g zCLlQfy6rT|;W6(^7r_pkqx~&RWH8mHn>kSGqtzK&5!c(Ef!^m)j-R zs6$njuTGptb!sH*ha9l01yE1-Qk2Bg<;vCS&GE?1%L2Kcdq>Z=vd;gW$YNSIGreT_ z?S*sY^^Gj}CJ9gGmZY;4$~>v}qMrLSSAeIaA^geSaQTef4rQULQwtru-)wfNB`<=X zX|mmnnuDat98A(ep=NCxJz##w!Ev{6HAs-V+P>2)Qbl}6O;>b*L}p{*&F=Xj>#eB= zYmW|U-@SJ{M?etCX}DYI?Y6jZE;smC3Sy}5wvz73>QPcZ5dV5fyO?#UrQq^K59gmt zm4-nO$-}&MwF-+L&O!tP{AYgcf@kFW%?!-vI=?PxxuAT7fPmz5B0sS{{1oh7zxV9) z$5w?|q1@H(YD3i8)N_V4xO{J1>8 z@+H$QWudb5+@!2A!7ESBxaHYMgQVK($*Hrx51qONyr>{pzhP^_i#6TE_P##vAG>9O%G zD0%DC1iS4080HXhU+FTOTB^Q}zrx3CEKaW)Qr7(QJ2QU6nt9~fugMHgM#}{-~1mwZwE~P literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_57.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_57.txt new file mode 100644 index 00000000..13bf6020 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_57.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.png new file mode 100644 index 0000000000000000000000000000000000000000..c8867b337c67bdee28ef75d366117cb7e8da6eb4 GIT binary patch literal 18750 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 VSDeij_zcLj)by@@P_cgYzW^*^Q1bu) literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.txt new file mode 100644 index 00000000..88ec70d9 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_58.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,1] [3,0,2,0,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_59.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_59.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3554e6a761a0a5ecd9d3eab7c38908e4b5081e GIT binary patch literal 17818 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

*tokf|Zo5UJZ-Go_y2?B+VFmsYyb9|o2 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_60.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_60.txt new file mode 100644 index 00000000..c465d2fe --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_60.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_61.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_61.png new file mode 100644 index 0000000000000000000000000000000000000000..5829985ff03305d9a89582aa2ebca4e55cb13b28 GIT binary patch literal 18459 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_64.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_64.txt new file mode 100644 index 00000000..4284b836 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_64.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,1,2,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.png new file mode 100644 index 0000000000000000000000000000000000000000..982fce9cd38864494e4d4eea5095c2d84ada2d3a GIT binary patch literal 16589 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.txt new file mode 100644 index 00000000..ffe1407d --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_65.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,3] [3,1,3,3,4,2] +[0,2,-1,3,0,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.png new file mode 100644 index 0000000000000000000000000000000000000000..f401f3466a92f46dcb3ac7fac5591766dda2f918 GIT binary patch literal 19348 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.txt new file mode 100644 index 00000000..12904e0e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_66.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[0,1,-1,2,1,2] [1,1,2,1,0,1] [2,1,1,2,3,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [1,2,2,2,0,2] [2,2,1,3,3,3] [3,2,4,2,2,2] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_67.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_67.png new file mode 100644 index 0000000000000000000000000000000000000000..4d74aafed44313068918bdeb8d25d9b51430a159 GIT binary patch literal 18854 zcmcJ%c{r5s|M#zr%2tW87iG!5n<0{rC9-C+g+Ul(->HPM##m#BvJ+-P_K;;PLs=(8 z_I=;i`y6_IKE3bzdmqQ|IPT;3$NT8rHP@WiHRp9+ujTQ4p1pafsz838?mQ6@5xL_1 zdm2PUCt3;rojnPT^p;Y7Cn8d`QM@Ok<(4>)QhsXI8^0L-^X|ulmsi~*giy}N--|sAyr8XM?YpyPG_yN#S#rioHPnj4*uV|9=5@x(6>79&jQXYHNaWbrWX&BM@KuCnSHMY7=<#I`yXDl zD=KwgoAf=X=6oGO|KrVuKUby8-Nt~uNvB`ldqd&V3To8{!cdY&LAg+J0w9 zHLK?P;g?%7BFWlVhh|QKHXQE97o|{EAthH=SI)EbA)%?SeGfN% zGl(gfrL;ozxhHQZiUf^wQ|<`O#vG=-UIv0lN& zvulUeLMG*T6NQ{yXsy|lMb*1|CyQKSjGe6p^SgW=i%+!uB!Q6|eyV&V<+G-pLQ$CL z-d4VQCDuBbT(YIiGC@?rna_WVVr2ui{TnB{47`N25n;*scyEPzuD;fB9Rtm z6@`T{l&au5@Gy@WxR|v9j7`~SEWqECqSq(B`*}q)Los~M>Vc@lHMzm_4WBh7M z(Os1X4{nnD7#q9c%}4VrF{~jYBQPLfi;{$xc*_^FC1yLok-WOJ^sMljWGN(;1llX; zaPYIYipKq{I~Rnz=z2-fxT&Dqv(jsa3|==njjQ)2VzCq3z09>s-#2+b*)dhSGI(E- z;FruZ(jTh$(wub_%(0-=<(7E%&A2qfe0Gwmi;K$^r6srA zp%es?LY$=_TiWR7?`RIsQfITU9}|SgT39T9h1cmP@AG#SRJlzC>*^^oOYUIn)qf)w z^>6Fa3FVH8@$o)qs&*cKdY*!-)qT>=H8@NC+T@Lqlnj)uwFHvMjl!D9IUpFdA}{a z&jisp;bA4qXljn`u&Oizib)`2F!C_&F^KG-G5aM@JW` zWEIg0rx@nFVZTM+!?so$h1h&`v(-Gi{m=?Zrf^2gmCRHN>OScyH~wiIr3iPhzBh}0 zw)a&>GZjD3mgTfKp|#A)%9`z~eALg03qC<1whIwqlMz8Z5L*@;c^^@-!9)6!b zTv)>#!*ocN2eCd0r9Z{SrTpW3kvwh%mL|M5o*O-Op_>k3y%!!9785cj-hn4OFhgAO z*|__wARA>bz~zwLKCzQtl^AO5wiHM^YQ#y-MkP-7_JKu;?<#pOk+%t z-LV)Q6U@x=sjQ#zL}wz9qehZR>*KkUQ;0Kh2sQyf&jWF-7n8;Ce zgKo=di96_+)7!jS6+#8FLdXJ&qYw4p2i$i3NVEFNo z5#x>3v3|@@`kLwxo8MvBfFDw%NFHXG!=5K(D+P0raI$JVf@2b#ti;k1;``5(_ScFa z$!~hmu<2=!4J{hlUhBQ;5@tg2ny`Z1m^7!O1r8 znypQTC0PsBt=K{yr>i|5h9sdLyHm)YY~GC3&R&u(40=&2kxCPCPJzuNKmO$Wm6g6e z-JEVK5Z;5$ux~{UDjD`V@Mpo}53UV}hBgi#XMFL}w{?hA$l20cY@lyd#9aJ<@Tq}&JGVhadUHXbVSNa zVTiWh>?q@UC)tj#@Q$)>DQ9`KZHYNewC$bg(pV9al-+y&RhWhBg4-&7TBta8t}|bn z+DPm|d$70$z3<)+SYaa1-HaHS3thA8Z{D1vOZN2iR7zl4t^g9gEekaDOr*p{!g;VN{h=ei3IE zNW{_iT7r^y))B+7shP6jxm3fD(ozVN;*wpQh!p-r)Nrw4Nxxa+J(vZ$bTx(shi5sy zt$ZCjbV3p9c@h2HG&ZE!vQV`W4>mUFH*6w1`9^VEup7!bU!BWRS)Tv9s z!NHqgO&q7c)(Nco&v_TTjnhGritrYG@am2;N>!CTs8M=9Dl8*4vA3tE$@YBp1e|CJ z!4!vp?mgJsW+ooAbBfnSktf-N9`qV{?I+)3pJRxiKUfMpr1Ne{jH+S+)j76NEe`7< zwOBwx`K{gV4Xe@e?A!M3C56C2dvr1<-9xkl++K!hi@4?+r1$p@`wV#AE=;7cH zx$hU2cSFHPXY8uTtfU{hd`9{ybaeo_GCwME~^kFh}nJN0ihYy8nV+vBN)_d%% zq#a`S7->Nul-XI{jEL`0WVfJG~Bsl{l>vFurp`pzr#Pn{F zu6I+x#h)1y#@uEV!A}XA&0JYe)%ct%9=YgO*bu$@zN#s^BSpd2*O%u-HVzR||GsHu zkyG81aa7X?e)ByhVNc*)?hASukSW(T9MNTJ3sFhQv62j2&#Rgu?|@pDZ#431c{lGO z<~9Ot&YO%4KQv?nvu*}voh*RaJaP?hC;~%@aolM1RRalcPW-@3|0-8_aPt;I?OpD+ z-dDlV>P=#4Cl}^JLEeCRk`+hq;!TyF9$C@S(dtI~2v z7Sq7v@&;L1yKtd^>_z)VB(`kn{g)?uo2_7NF#R@aP!b<02my&QYV5lm6Jw?KnxYNz zPtz<~@HLi{H911$fQvbGcXyYbp1!4}#njaFsCTBWp(`xL_)$^G@uL;lC48YD+E`m@O* zDluQ}PDbY&n)MH?xqg0rzkmO3YkNSq-Fni*evCEv1>t%zh64DbY-(Cko$o#Ou1+wn zJ*=yNx!Q?FdTg(8ts#;x997}s@cUyvs$&_^#K%Fs{@!i?aq-CmI0?Br9(_yY{w-_9vrQy25pMwo7I z8}Y)-;JxG1dlskGUSVz1#kqIiZ3m{$kNv1gx(sQ@;UcfVMR1I1<>lp1vXdRJapqI!kc7OQW3LG*w_AWtdEP~@B1KNaF)2B@y&2*fg*N4YT8>MPkw~Mu(W89bO(TgZj=Dw1 z1LK5qEl#!9-ssdqR3cZcK=f__(}IKW~RcMQ3{ZEcC$NC*pm^X=>H zy|VB5H1!!p&G@RPW6r!6xHnAs@;Tj&(Ux$pDF(Xlc(Pv!+?Y2;T?ahV zI&d*!L&sasHE=6ZeS?chpi&#!9eEHlxb7jkG-tV_CE{>8dJ!ez+UL$y_~px&;$r!_ zuj9RTQ4TS*$pAhK?o2LX@A)MUhNc+xPV1M`zZYIfAuLp(EgN*jgVsa-DW4B5xig5R zx#Pq-e_Hcl+xDdNp~^3kc;t^>@XAYXZ=Dmu<0ct5hGpiqdD5D$KdJ&yCWPr?#^_l( zGNtoz_c$%Km$CBV-w~pCPX*yEH8nLn`SSEPN4abYQWWiDXVHL0wgiuB8xHf8`Q1L| zVge_oNy0%ZnseNW?r~8!nl{d* z68v+0w?tQ>S!5@#zH<_NGrJ!v*OO&Cck83()db~~@*yzWag`ny3~`U2?M(S$u^y?Zzu+?VL3Y;Ih+ z%D}))dm1{a@dh_xUvkJ|QpM@QrJ$n2X<=$PCJ2Sn?cU=LVxZkqg3QV)l27ShRp@$H z>lfmlao?HCr>aVKG+b(ja`ha0C;xPTS=Vdr0=LT$jRhqLy|QeUfD>{TpQVLkL|5j7hBfVJ$tf%^|06 zk8PwOY%DiC(&`>{A~eWk(Jz>uzD|eEtm`>$-5(O|~z34?qu!`xaz6T!)=(K7|$LX~zj{h15u1MVrev&gX zO>;08_TGfY-J)=|UhMkPPCEDYs^oj(T_s`sk!e@kyn!XlkT$r?Kogk>(H-iBbrR8hr}MbN{C8`Z1{9`BMlw7ED7oeoiv9~mT zItkz9nMYbMKdghLW zfC(~BDb%Xa5*^Jzne=ypEx%1juuuOa*glo#8r8#f{Cie=SGO0fnI+~6EFrEwKi-70 z+!UFrh?W=k&KTw1ILGA*4Kz~@1ikBlm#C;LitMxdQC8mbmox)ec|U@gkdLo7!3@c# z5|uP2yUfpY@jn+q=1oB7@|nIHJv(TIIQH?|zig$U8hd1^y^3$UTw-D*blAZigK-fR zay)4FJ!p5+gNV4ex>~voRr^ZQZU0_3Jzv~pfLMQ+7L=iWZ+ROt3fjW{5<3a0m2t-y z^;6J{$X0h3ml#R0qC!6@>qdA^SvodMJKU#LEzze9&V0BbAb}e%(OANNcPc4+wqcii zMOBY42-1>S6P7adF&fazJtv)(uxbrMz}BFgtto5u@qX{IiCt)`2fth+NbN!`lM}i=EfJEHcIaO2@4=}z`7d;@k{|i z4~h#YXpJ7#cYTM!vD~*hvk`akZN^*7Lwbk)lTv7yM6+OSFdw@Ie@zbl+?DR@>pA)P z`5P}^ym$d}@vVJ&G25>5M_Kok+>j0FyK|_g?2hKp%T&gR0pHfvIyx>KUU&MWKdH6$ zpnqy;^@3!0m8<=OjjhVjDdd(2ey2WVq5cG4U~PR+gi6WIN`jHjey`Rm6M&v`KYh}W zS^T?Ke(M3h?yh+RqkkO3=tCrr`ZbF}x(-Nmv$JT(5Su3<`L_L^$v2vpB>8ZI5=>UT zgpt<4q*h&EJX=C5Od}MeU!9(R((mWTd3^yZMO8&b(UMPKMn-B4P9)ulj@{33Sz2Je z_C)c2Q1Y)UcIdfJy~ikdj_PKhS*Wl2ZplZzh&*d=R4%t&hB!jd!d;|nkhi?DWeE9( zSh}2EHX{**E6V9oDpCzy94M{B>Ak71uLq9-(O#{CmNjQ<@@QO<7A=Bs1r!#FXK>$DpY z`YaWXKyQXUT}n<$Ler0QzL^ZtQjoG%kx5lpo)-64QP`m@4p70ZSlyZA&hEzF0QH8w zq)V&ePS8S%0wvKBMa$dL-!UGqH;?mm`Z#5Wye&?tgqgs9lVbORu$$hlnJJJ|VAS7M{ak^J@h#~}bGNst9Sk)dsND|;7t zOWE(#hql}+_U}nFUG!5J=Up8L`C=d6RNN6OW(&7MFM5L&cO8Q=DYw6ZG{-?(eZ78BM~xG}j$yZwnhmOY%;>HJBd&N8 zejT%8*wjTNdA>yOn1lgrRXI9j?&M=fbLw_B-pE{MY{MBAJq06NM|@*rB5kE9`gaE&13@&eutCV3PP-K#J1qP+Akvn8D6y_F~^$NqN;{*BTtc$PWO7X^(Hbf-0IILshmw0({xH zl7_ei@!Wx-ZHa8}3Hh=_PQgDRA)%{0H^CHirjPEckas7Jv$6wyVI?0hmc4MgRYz+7^K!56zOQDuv8hnTx%ZA#GjcnsyFcDy z>~`c3(;f03YLYQc3Sr~=`Mp^InYJ4n8)GHpok!ZRgWx0p!ZDcEqbmjSA?jIy2ow{Z z*h&kH?Zxv-#pixu!M|K@)j62SKcMtJ?3CU&%6fDTo^9dk8k?%F^2s&dVBRcvpk9Yk zJG+Hr@--e0%T|xKsT2OAajmwtw$AsLI9hbKu*5rpRM`Rwo=t{ehDXtg^qW4x;f6?h}{hL#3ZTHu{)H3r8?uCA`aAgdp< z)x{?VK;LP}t)1!U=6%gQ1q1(=tk+iA$DF6h44K5UpE{!!?OL{6*flyLXULmbTCOEop zC9=MEB!?#a*iMTz43c~WB-@yuZ~K3)2+;0{N45>d_ROxs)p>b%MCd|uAAD1w`m2qc zms3+!&6Jrje7tf!;Uq)|-Nk{#h&#k5reM7OsHS!Bx{9)apFiKl$G>r2+S&2Q=~l8y z))VXR@6WxrMY&Buaoj0NH^jaBpA=9>)?gsTM?%U2#MtO3x^M1BZN%qVU%7GxVAxDg z4ZfbHE^^fK0==}}Mb_J~!3Opjn$fBmALxL3x!+Lky2!-Dq-0C431oA@h%-l;su>F@ z2z8MViPvg`5y$HSDL*L0S{}xDq{&y=>hfJ809U=cj9wld&9)w@>`9EA8@E)sE$HsA zP`2IZKC&!avzSUuz<9xBa2*ga3$f)^cwI}`Y|Z2N4GygRuW-gvUb6 z#X31!^R6@vIzyV9PNG05@$;okxFOn4KUAaOF4Uz>4S~guKs%2WviBJ3CukOvGZ&qo z6=vw2SHM{z#0jDrxH{KYxa06{obxm7%ACs(e4i3-2hgx1^gcngF5vvE2po^MLkRpi zzwRqM?TNPvqrUs%Ex9ndM@;yOK!SUZQG9|%KdjaunVm9_8B4IFy1PLT@1#E*iFe>S zK)<7YJ1{;Imb<23QkA%V0@X%@Y8y6cpt1kRAsbz`hUNh3+_9R+vT)gq!yxvrU#9mh zE0t_~=0{8FE1W#IKftYnzvx7z+%xciMFHXL&zz713%2Gc^95gm(w~4PfLO~jVy+%g z`|rV{U6=k370&BJA8U)XWlOKE1V&%@ELjT-0=Ri#%1P?{2e(qzK z-=?IX2nY-m6BEl~fmt@IT{CiEf`|dkcYLp_9h_=}p1|A0KH>X;XelaySv z!jR=*yOeR7Z1roNI{Z^%I1Y1qwTY35DF#arr@$KE2byc9c;Cq4MGOYhH58e^K5Gu5 z-^+)snJjg)yB5Vy^cR#8N8HC22Fo9bTX6lerW}tw%=hv9VWlXE%P7<})2@U*K00l;+~%;w_Z)f3>0+Jn&WAto3cW zVs_zl*Bu5U{n#uBDDhjy5TsKG;v>C=qHEc8VZeBj?c2!6$UdNyzbZZ5+&D1qXpcVy zF4yaz$ibWM0bX*_Vr}$M+TG@u1cfafvA2MND$b zZP@MHmDlDN?61I-RLR@7&BUxSZYH^6gIcLt;)(rKRE{SeyiP(Fht{+n3;EH7hlDI8 zf9|(ANSX#-m|c?j)tg*`Tn-`cR_&UOo{}CYFlga1j5^sZH$HQvGYWd1G~Zd_S-f`k z>7fz#W16rl;MG0_5-t$@@Aw#RMml5P&oBVULnZUP1uRAI2F;HcHFO`NohlYum~(sx z_Z_2YaSiZN5X1{W^dFmer$3GeS#dSKo2x4)s5J>Mcb?VJ8SO*Z zWlsg`gGnTwn!Co2pFAIxbzeT0w_Yy38;BX>tg+yQIsuh9tFm$TMK&~q@AbgyJGiO0 zrEdQHf4=j$h>?c+Rck$K6%bVPGyi*hoU!5j-Iep+U0@_$ts8{jJGis*5MSEZ#xZ|KY}p(ZLei!C^s$Mfb>ZAGII75&%NGbVAXV4ZwN27bb@}<4<)jtRh?=~Ax z!&FyS7Zw&)R7i@7_E;7DoG*THCgQ!2llfWzPW$^V+pMabpvEk^HdXR3nPEp6$P68j zR1$*HAO`Eb6&aDMY_Hy6?n%`Fg!lT1r|rJap7BdcR+N@1Qe%~bfQb%$b&3q-sW@ph z&4^6v47_%BW*xdtvR?D+S5g8s_KCB*n_H7ZQe4~<2q|5Q79~neef+!Y&qIuwZYfgy zPw{2JS=mtc9CzJGbvPeK42tlZDR>Y}{-Apd3vE*I0Eq-w+ROG&BrQ;?G{GjFV~%N;UZ zz4~O?Zs3dh+#{fT%Yd{U6b@a@R6Wb779NKHl-y$gDM)_CHPt|d5+{!Lu{PMK_JtiKc~N~@@BI# zLxtWuk^wOyV3RE&s%T>G@}=xFenCN&p)Z5BtDEk4)QRHuaP5y8@F|8^u~V5VJdX7dyit%l_a?02a|3jBu*Pt8@~!iM9q=^M6lx6SNLP5YFN zk?|B_VzUhJU{L(u(Wzp0piihVq4Nh^LkYx8@k|0JMtsUuS8Ea$eLg50lyw574bsfB z2jn*^1YooN)NL)V4RXP!Wj5>j;(os!!V^ykr;#l_gfcOhLF%&^5%1jzdlAYd}^ zBv`F7N6N4?;v$)NpQgI3PFh8g_l}An+2!V_6J-eT_LRGn*JK5ejRROZPRM9j9mU_j ziu%YuX~Q{Eh@C#21``p7FpHWt&>I|nA{XEeI7K!gv0`;(vA>FbklX6OIkW)WJquzN z;JeM6pSEqE6|>YKz=a4k;8%EyhTt+!ba!`0Aac8{ ziu!F%k+MJxBa9z|P|kSt)nLtZS0KCn#}UN)mTe%vso)3g%zF&*Fn~LgXXpy!b zZXf=KjcVWEdf=1vnP0&1U3B7u+AC&+cJDprD)>erRwqrqs80+ZS*bj!spYLGWst&jPP0Q#YO&t$KKD)NOW<;(Ym`I>{8d5iP&rA86zI4UZtmx<#92nFu#hO?@T z&K>eoTl)>aKun1q1o`*_h$@S-eIwR|+C0%7FFj&;4wwXlgdBG_Y#O;Vq%3H`lmN#t z8I}-_u#TGa5>ptT>cYm2c_+bokoj-wm7u~%0h8SPMqrXNSJ#2o!kbuZ`-e%MM76#B z2TP7_(t9ErnKY4n%^=8FakyLPpxL)XhFB*iCZ-<6V)eN|OaORX6Fk&ReTzC>A$&wc z#EJz+sJ!18u!{bc_L@$MP0i{fCMITMXU}R2r5B5&D#G#u9PVB8yXue`%_Y`AJkP!1j(_5g+JQ2;#->|j;E#2W z+xQw~W#zHO=)H4Lj<*PJub)FVIE+ik{ePV6RRmy7cFW?8} z`VaF1ztdJ?W%GP$D%|zllvZZv^pYOu`U#OL$4Lr_WEPsE#_H+St8V-0WNW>J)|{mP z_?|#vz-rCZv8V$g+wb6J)^}}ep3DJ3D+EtUCQ4OuG4*jouE3c$KtbDQCnx6dRY_|a z@n)WNG0|Xp({FU`t%y(?UTzQ8%=MErO4UdQcC8xNb3*pfPuxFl%Ne@-i0L+l$}Fkhl4zQ&denDy8M zom?&)3aVa87z$Y=-bwVi)hF7cD=CZ8fa@LMAuxGcagHH|{P;f4W_7V9$@c5E`fO;P zwQ(|(JGdLKR){=b9Kx-VU03Y>hRlD_*C`NO0Q~~-|9US~7x{|!wazcP@bbR~y|);L z*h*#Zdj*a3zJ~vD2R{4X4~0Ht0ITcVxf$YZ*C#u>yVmDy(;s-GU&dej>%w!lk>qL2 zD;&>${2m`=EoSCdx8Pp%7iy$N3_aO(M1*;H1L0DL(69(?y^E;K~7DmZA@hK7=pKGjR7=+ z!6&K~6cl{zF><(I3cB?v1QFnZzmu^#68#C!RWqn~2IM`z|Hm#dW6;x9D83TGbtC=A zwU4}GF{KaL`4@mX?x}X3fS$^{SnPz8?cK`zLzYI(QpV$|prvB``BZqzk!HIIo0t`# zi(Baru(ZmY;AV!z3poYgV36{3jDeRR%w7(CW|r05+}w7k3MJ96M^jF4FPO+z(i=*r zKlz6*f!+**(fS}r802ybj13Jq0e3t`g}@15f}pGh;$&>9j*iYqFM@X$B;}0a_B^KI zoN~ z;;hBtC=QK7`-78?dNxk)Iu2UtibBiT){dTu{APVqRfn zI4-DsLj*)7Nhq1%DwK4sl9~YJYue`RFjMt_F=Z7@% zyPA5*XXOZ`m#cE7AEESm&_4YQ!&+}x|7Kj}l;S~3{NHBvm~a9`oSc|rONvLh;i-V{ z++QriW_&iCP>!h(%CSS0jZYe5SN9a({-}GSC=%tM6O?<}DdseEb*dB3auA3Y)oitbGf@Z!E5pEWn+*aw?XW&og6eh zz)_xa2krD(9+%w$^n}O=MiN3VbVNQ(zHroqlxZo|{l!d>-^@KnCAK*10?M*k*k?8L zEp{AwNC+KO@kte(d%4$ADR?)Wlz%tDLdhoyW^QnG;2)>(V#ZK>$_A|KA0zm2hwhas zl}_=g7##n{{0+{(8kc)HH$2OaYtbOBNqw}Ll~C@2rurQ4$j>~QdBRx9_1a6w=5Eu$ zfe&c+fam-8I%ILVCnL-C2Z6DBw&x#gMeugBgk3hv)c7|ILZyMAr z^#%z>W&R85j66{X%W>Ka6i=*#xF1_6H^ANeQ1@She_WyX^}mO-@}=`Duz!E?*4!`% z2j&WQ)Oi##)}=UxBiO#Tw$qU?Hv!Yko_FTA$TjVa?;k37}KSYDKrzO4-IH_k9opWT31&m2+=!g$?1vN5>8Q* z=WUwXQx>qEbiSqC7PSs zkUtjXKdfhF-2?3x8xunp8sJu!OS1oWlvzy%QRY;QA#}654w%(XA1!ebwuHK#9-8V^ z3rV-7_uW?Gwh51K|AU=V$pChKJsLbKC^EUe?i`0OqH0I3uM*e)ty}9;vy^5YuORr8-Y?CH5&y%>f?o4tr3rT4fp;6pT{SC? zrR+I@+DrsT(JsGMR7OU|oc#P}(6_-N+)W^zPu{+mb1@FkBNr?0RhP?D3~TUJ-We~!;6eKGsVTIaEvu1 z09ksZoZGI&6{+r{TAakEM7ZqSHQ@K;@k*x7xgRi-h$yigY_?)Zn14X+9nk_hDk2o) zX|`Sc7lPE-*WGDfI52dx${&Cr0A47-mR?{DIUZ^Uf)c>f5Q)g;BcG){0#)EUdO5{) zsW0D_x_uJ^K3dYhj#t#_%G@_h2?rz9`3D`r8;TVL8}w)8xy3~_)javi%*%o6-ef`C zhX-Uuz3O5+gxx#fP6i2XTIXaZj@!LF?r{%^yd!QBIy4*(V6o^Y6X-B6gAJ==>P0Az zR^lq2@xo$n6PPhrc=lj!ZcNxcXznswJVrl9j#j_CKxv0rbmJfN^8%oshJ{h*k+Qk8 zExG(5h1x{xfM=;eT#{T#>B=pHZ(jYhbvxg)fuw)Ui+uOd|kEmUFcIga|rDBJ8~Il)M0PTpof z=1%^Pl(}J~NrC1RD#ej+TAv4KrcOH-jy6LcyqD_h?{@@bCzls2Z5W{`))lDs-M z$KCx@XLMi&KRB3n?W3$##9tvTF zsYCf60_{{>A4aNmB>r4?+R(HRT6>LMv93}$lFD#^`2hQe{%u4f@0T;*j}0R6(YeZh zGZ!a8(1U3tSM{s%AiEOT+1aN(9a15*e|KS3Q$wdto#H+KZClVj5YRY5SEjkFZo$-j z?)v!jMI@oJp)fqEZ2llAJ?6jVukB;`E5d*50rlUP274H=jMGPA7XjG-Yh+K`#)c@D zHK_792)h`tTPt93%T6V}AW$BFzTlOA_g|Tw`aV3sgBV{n?NUzIu9tu9mXb^Cb033@ zPIa(#)B@~|GG9^$lkyTPkCq}t8K?LSyDmj=mjvr#nQ^oNVMm=58TI(|G-tWG1j_A~ zoHH-cM&{?$#J>AoJ%>#lW`B7 zDJUpn$WEdh!K>zDa1)x)ICwBh%g7k&%`#=65TpSl9}a+JNC^$nYdWQ^2zwQn{UY=S z`Cm>#4bv%oadN&TR#QVfe6e9dELbEx`JJL*0MMnPfP1Os6l$;+e^F8h-}NiBGK1R| zL8fQ<=YzIALxQi69ZB8Pym`;oR7h6^SOGhZkTJ=z;V@cc=3IOOaY2H-fXI6c0VsUR zN_i#5#>L7tdk))BR+uDz0+5CipubDhkUdAK662x|j0FT2;LaNBtoQpUj8qihJ^tV) zKD$S*tuKZ@nL#YlPw6i13}wv%VC`aw)Vm-`<25Tc4Vqn;N}adw)9+QUV3{m`GrY~D?-d6N4Bv6JcG$vK3AMtNf|=6-Py7g2^W_4Q zl#glne4nY+iX4941x9{zu~li~boGSiH{e3spAn3=2F_}eKR_ya7ID>@O+rvmQ;B2vhfe{rVLsJVm9z*zJ%iN}HaZ9?1xdqeIGU`IOKTDif_v9Bj3J z_hKZd6wHZRy%1{ePSKy$%i00m-P)Htj@{ey+gRT$nHeUvm4{_uH?xGBrRAHw%1CJ$ zl7HhW0BbyyHPp^R44 z9PbI#d1ol24_BJh`-UUYOp_p*{rpKse(F^IP!uqEx$xW+J3?}VGO&9Fakct^sF%9? zJq&nf>mI5n5$sw;z^-Kg3J8((YhcqaP|IrGkB4Vnjz7YHFany&!6;UU!BPob5i_3J zo&c%gnGSV4cw-S}qiHIF2katnfdT~e(86>p!{OFvy$>k*zqK&nw&E?^4AP*UN<0JJ zyI4rS>U)z+C9PUe9cdS_X+%fBcIlc z`b>bX>GBaH2?aY++U^D5C_uHKXtJ8HJa{L$Q|(ND16{C1re+X=^vGWXULrs#zLT=i zd#XWZh~p=O*Z=CXu1C~ocIg{711$|mt`_l zl<@!hp^gWgVg$aqwbKa?70{G7=&!s+F#h+7=4(;dfY{qIgVzozR0w;0YT7<4wnwo@ zy!`Kl11l}iDQmJ!XH=mTUS8ieKFD?8Rp3)|+y`cf!75^x%X3G~Nc0GMdk9Ab!BJ&f zvCCD@7R*Tc>Hi!Bn|l(2ztA@iyjw&2@sR&PW?*LzPOgLeCfFE`_Otl|(g@pna5r=4 zo23mW%}D5(|BOIN7}rWnYlR2{V3Nxpn4~~}Nm$#=8S0AwCJq0AN!0|HWHR{hx3Zg| zOF`D32T-i}5csehf0w8H>`erai4{O50IH53Ci_f4GkYZA8B_XzG;E=Hd^jWBMo^ef zLU$F6Oa`X&$UnE<_4z@-gc->!*iH)paPki?6tO|3xZ`V}VE1$wA-5ip!uI5Se6r;` zvia^uM%@>6xQ;AxV3|lw4EPcL`Hlr5 z+#EY|kJX}~kN1}1nQ8&IjE&&U5+#H~L^%Il9lt3`_tDP0;JC$}PgPo);9o-FTv2hE z?G$6N8{Apj5B8;grkE7Twp+iuxHm$s{wjp{itqgf9eCB1V(_cFkrrr9Vt6-PdV48! zQ<_??>FE+yVzFxZ;L5Zf{O~Lhky4~*>F~(scdOSHxOY+4Dx5eDs@utz_b1sW9?=^z z+()Z@V&He~cm1_pzdCz~Gr?>5fPU@6^WDW@qh&9P3)Wu`sUN{AR~1JT#KX=IP036& z^!mrz|B9MX`W_g|+p4lULdQ|w^=$cizt`-((GA|`hW#7J-(Pw=sKTMD#gz>1=QPMYB2a<(XpL?3!~AbSi9`*=XBO>Br{| zzjzUcWfMG2M09)X*VayyG*N}*RJjjFbMDg2FYk9)bJXr6BEi}J`mTeFhhMO-k^W(* z(YG%lA%r_Z-5=a4^YNUiC(j8!l&aR(^Bk>nJ*|NL-5vd6*0u0-f4c1@Qcvg6*)oIl ziKUTVgKFF7gzx1Ihw}YDEvC#?gKKdGN(Ennc^qO-o+2XJZ;G39%yF>9We;$kcRV^o z#SxdQjLDxci!8ri&t_x*YmdWnfE5@5vsD(q92R05t`# z-}Acv*Ll1DZmv73zn1!`hiw@V_hn)tj=)z~L)_Sk$@0tK!>U6?9nESL8dCogM4yq? z=z%rA?X?)JNeVyF9m^FJQOM9n5wjW3kLcUy=GfayQXla4U`ijC&dT{&x474Ty=zQF z)c%$q-->^HCfLa=zo$Oc07t(&AfKN%5Ur2nI!PFJ@559C0=FZuLW*q?ZfZJBIF^_( zC4vWr0KyGr62HkHsI06|A@gLDnPbnaD2|iukiGZb z4!`TrdwqYOKYq8{@Amusk)zkSUf1h-y{_wej{EcR5~!x4aQPC=B|JR5%MTRqKgPp5 z(}w$Z@hmvfS5Df2hbRB@!TozrT;rD#^j{c0@LDeIs#ktvasj2}a{Uv@^L0MzU$P&f z-R`>T$lRfW--3|i=d;w!Zo|} znv#vFX-T9f7rV@&j^)BL-D>WYs|$x|h0#h2kFzavHIKgxV6j)yJ*;v&OKbQ0N|%di zu7W{X2^bLJ;k~+dff0OA-fN*m?(lkuudFQA7OP5Ct}HDZ4M>WKIB)&xuiqsDk|2;Z79^z(o(rr^kspKE6LO68U47-eh%6h+X#5=`!F1u zeb28{cf1?K6MtC6AcrvHl8F!y*z8*ITw!qRT-80$JvKnxNcOhKU;UAfSUes)Y7cW^ z%e`;iaU5lZQH0UQ*j~5LLL!l{wQ;#~_cD^4vhWjbdsGiE4VGH;|Eeu2UEf`Mu4iv% z<|iLZ&w6=I`amRdcp$@5b`K`DJdEu!-0wjOCpI;Y%5&3NwBJHsW=37gbmlcE zTiu&MWO&O3SS&eLVyqtzY2@13+CodD7akLdJ%2@lXHf(Og?_&)+uGW?nXQ$5n}K$| z)cT8PSkdXAdWaENDZ4B3EtIzwA8P3ZB2*u@&ZmtHOD%WIqigphBDC%j)Ot%3Egtq{ zlL@rylA{RMf3qctl5e#jVqzk~2GY~hUl^E`r0_pvkaWKvsumZhehoI$PN(eTtn*n|sLrx=J%Hc8UhZi*JsOYJW!-bh`9Xr()cRF4>Cvu39Q5}S&b4PdG zNO_qOKYczZLY0e~I}QB~)!y!0In*{qq>$CmkaX@_75?l+^~KgtB?fv(<#gIKK`QVY zKYW|ooKfkndLMcw)YjeQ+!&|q#y z?Hg`ru{i0+g;k@8vW2CtwN~M?>9d<~mKfW$Oj~)?_0bqF2)eVz)^@Npq2h$Q&RM|W z@kiW!qk;pph)*KkM^%So7^L~sG363M+$FDKIwB&%A++V1WgZFKcJhT6cB^lKILSKA zH_eRA#&GHr$(eW_Hpm4A)T4ghTCAD-+V}>kdeKgE^Ng^I)bCKK2aDI~1;WsF^oS_| z>+*Ogo$ybKDE8mx7D91zb+rWrzbuQ_wbWONhibhMdj0+V;ZmtzuO06k9YMIm%Y~nm zN$KbzZ=ypvVtcr?JBSh0w_k;aUV?2;{QkB-?!!ygYB@dHuKI5062fbxCp0ba+kofH z?)lkek9;!JO_Ru2;iE%!QQ?O#R8r`Vv$L~5eE1Ofx~Qt^_naeNH17?>!otEcwx0|? z&t(nScAcHu7F6&`oc7pRp0bGg;h0i1T_4p0)E7Mw|;lVg+|o4j zgYM>JVPxMBViX@nF<@tn`Mt1c^<#a{tC|4~0fXLOhelKrv-bATQeEhK5f3*vCJ$5- zz4o7+*IL;~EPIP6qxzXSC4tI*e!S&jcUV2&`1XD}t$Zv+X7lmDfF3+pWJ$p^@oERws=x?! zofwF51qFpiwMxXf*;0_op**;ap26#@2kdj|rri!__nvmmvivFn;|$dkItw{aeahHM zO6RjuQ_5*O5vBsg>-RK|-o9*gNFKBmrdOO5!t>Net1{w=XW=o2sJt zVI_Bjmn@(@ZmSBS6C;Z9;XVuyBxoc=hNSxbTJz4tvs~^Bm=;~(wt)WayV;2n;qwWE zY8?*lhuO_YN!0c$w2E}g^!tltRHd?!Weg>HtuaI!RwWOgjW(Uj`fYeWO}}0LlP*$n z6iI%ikYloq?6s!09(8fNQGXybyXE-<;?xTH2=&%Ezl0Yh1n_ABMt$jc-8EH13$t#A zXC~UQxnyCtX%x5KF{MOJ`O#T|HqZ-<`XTYUTj`o6tyz0TMu)Rfq?8ZqFE#2UzkYJS z#%C#NRJI)@c?JS|6W;TNPwBkYl0}-WD6gp?f&iI{;Slh8aT9Z0E-0#L_R$>yfz;#p z_qTEPVSUro$)rYAh%{y9+Dn9WWK`%fqBH|TzZw&;dabhlLwKmN10|#WS2OGy!{lfH zn#(t%pW?{ZIyC`#5i`$i_3rp4ffO9dDAAO+%3;b}9WU3?+gaGYOX{%NU`|=Dv3O}j zMyRtz*Vo#Ro9f?<@0g|};~MuDx*rmV?vC*jjj=oXAsA`dVc>dptwH~~p3qsV72|E^ z;gRwlog~E2j+e#_+awGTQyq zv)tUbpYhLE_q-wA>sZz~D)#N+MM>JAq+Etv)Do z=(rS1#@#AfxihM3fof-$3@3w)Y`ItOrg;?wZ0)X100SKvNkOy6bas<(4-b8GSly6K{qJ&n3scHDbp|GuVJ^#B=BRO{yW@|F?j!D6WS{KkcOx2p=YeTh}h zIx0xn*#?8799-MLJyMemprgJ7ukH*+sAVtEz6C&TeN@=^%litcW|@A;M% z-1*ox1Tg3k`78KTtXpKts;XUH;qFaUYwXUSuSGxF$JX?-{uF=D9bZ~h1PwUtXE;a7 zRGUV;yIXN0I!Z>X2yvh>7uiM`6CWSajBaUBOyTQ$A?5vS{BUn$J;1y@K5N*a4d;J- z5S_k9PB!K|t1%3|Iqy4u7wxYP8guk&NZc&Ic~R3-FPiwlh92=j62foQ?;wY=#d*)y zMJL{~n{#?d&F%Qe)6(SmbJ?Q;#wC-bm6fiuLDfn13KB|I&KGg!AbWf--}?iV4z2f* zVzsRi&GO--tLnzwj?oZt+(pcg%RAM9<(g93DYbAU!;HUm5;PzuFYl+g?i=6?ox~FA zo%j{z_V+8U2dxLJkJ^f2vJf8Q4}k==Wi+zhd3~IB?n@rcl@>{9svyZn`K2ymtS5taky4gBwLMho zP9pF!v2Ekpo$n*rB>lI?1r9sHjs%a?Zn0w}_KrS)NSuOk@Suv-Rzhv0HqCaA;`l~n zZ<{K7?zxQ(cTH}>w#JKNMep{*O*RVVcpU?SYiPQTQ7I9TD^!iF0?V8~t#s3apwJWB zOKm#BQVd(4?IV<5d6nch;<=+ObvP!z9)R1lBYC2_Ou1=j~8}S zK6o+K(V@Qg!M2psIF6oyf$I3)fmSTDRKD3(J^efH-Nj43*6+t@)m1YSb+Nfe%N~{E z9X_+By>EtGoGrXd-fW+hXwyyT6W6|>TH@GCUWFBethehGk!+cv`ZP9H0b^PLx+Yeuljg4_|Umrv72B2;C9tK#C7uKlP zU$TsO{_Dlqyhsd{y|p#hTHsL&)nsUzW9ucFs;=PfWX#1~uIFfT<|~D~&(iMKU;2r< z>$=eUaJoKbgQ=I~xaw`7y1Cdoe$PzJbNa)p2XN0-Om2vB)s?Xz5v_-;IX4q@=f5Ri zr=$6)BLXwJuk^_>@2$b|lzh!M$K}dkD&A@C_)nT>`uL5lI&;z)xlI{gPNU!An%pM% zfo+cow5IEeTM9DDne5B8srTMA>O3Y*t@6umy;H9UqZs86L(97|)>ANP%?AmIA}^ie ztiA)QkNRbRufFVbS=5b-f+TgbzKvN*)&KI}jn`5+oaFT5b;Vvs>U@$i;WyLS=X|of zMN;m{HAj5Q&4iU%io2l`@d|x4_@sA2N7qE*h)4?!wq@cb z*p2#oT2xyKx*>3tmY27szY|?OY-E+@_s;YP(QCC**l@e^_09&wngW&n3)1xKmm0HQ z7W!HLtqpMGgr5*bC{;YIz%0h7q;uHTdpcNg?R7g z_zcExwGw%VJkYsk0^Or5RG*4>ayn2M(^u-F?RI@(q?8=>%PRf9ofV z=5)h1sVPEllM;A8aXxG?*D#pM2{Y;r-teVh<7-8Shd!Lj8I0gn3%M;t;B5*y8iR?( zPv&G8b^Eara=zqiekvE@&>IlJ+d``}Omfs>de|_-u{x7eYxJZ!+m~V$eOHGL6~ARZ zNd!+k;2}*|BSmC4#3PM7Oyq@wc;q|$J|K2d8h(uIMirbDMQ+neFr!LoI5%O3K^U|_ zaBI>Xb5Gj6vvxBz8lS;aD(4Y_^}6sn?ui7|B*F=|jfEjwV6`zJoC%DVbNI7M+ zPdpL^3r0aVwwDHh^Nx#)^Lht=eO(EJgj;U(ww+ez-Xe z*^N1jlj|EV)I|&r9^{(G#HOf%5iqu6HfFq?C%$Kld%A%HB%0TF8#YO#IJmXY$9fAS zsBA~F`szK9Wqom<###y&CE_01Fwn*AIpPcpTLIQ(%;!%$1T zV$xBYmo~*Dkg;4s++6-}E2H!d-nXT})hDTszO;YV)hc!^1-#0@4?D zQ?o4!2z(3F-)_Vi3}RP8(U-1po!{`^egaE1h{e`ey{2Xp$bX0JTd7{#i5fnmk+2Iv z6&DNINBSJ4VLy6}fZp6<*$d*)Q}G0F`a5SyFl`yo+Ec^&`;taDHg%=_$Al%Tjyr*} zQ>RP)!SR!@{bkP?n5g+#1Oe&D0dH898zDTAKpMt_PYM%)U2}u%Iwgj!+ko}`x^dyC zRW?Fv*gvPkTF_|9dYEn9ZFNEF^*qix`vlcusXnwka?*1nE0mArx98&>2Z_fxc@x{Z z=_(Ge*d1o*=MnAZ*t&gNO+M~!`T9OatJF5vRE1WN$b0>V_bQP}E1NLGb)0=(%b}M` zB=%xPx!pnc5g;hIN$JnPt3|Z z9W$HyN?*D&1s57bjTzu1Rz{6M=U2Dx=S-$)GWmBCc_d@rw(;uZ4}2>7&99*T%r%n= znj%l_W?bNmGq;IXzV(rRO;+R-^}j^5eII#sj#nqT{e1FoiWEh9dOxBKwfvAxs-iRS z=`{@b*mHm-j}j%(YJ_bMV|tDLQWODP>(la-YXy%rN|;rc5-J`4`vRim1!H1}XxJ~?D# zcaikS-?}_o-gf1KS=lIbPSlS~;Z3`Xv^B&1!7^`pNCx%p%r%M2m`;nSJEj<0i%d!L z)=;KWAHb-4Y=w8}go^6BUlYA?7*F+Pp5}N}7lk*I!34DifPND76B4|OZ^&~y&a z`vQNs=z@An?|ZE_#)ZRUZthMQMAXan2&X>y2dgkc}3&Ix-*2FY!S%f z5T@z6m4?fE>EQI}=ieN9gTr%g=WZXF+09@R^g}83F`jlVJDqtwRB*TV1!q&@b47wm zN=oPdnk0GM?W=`D|pW7PhZcklUyhyrS zTkIX5YPZyNWPK~)128}Xe-qA`%RdcR_Hn-Bx5ClF_l%m`InwaDj_<{+`E)Eh3*Mbd zAxzA|vt^O;B3PvZ-EngJyzqA>(b3U!+PPXvkVNjUv@+SHgG*54gFTs;!t(ODnHH+I zyk*tZxhc9Mmv`fDqRpG?Yo>CL;kh#sivV*9y8_C@WRlYDm+vzo^%>v!Xg+cdDq8tI zqF~&7-Hx)=q6D?SIXrA9+1h=0d^C1^o3ht&q9a8?pvoKy9S50I&CS1n=Od%m%yElJ zjf3@$waLlJsn%%hjlHv-&e(mYM<_AdZ!^lB5YXbv<;goCU$V<5;qC^fUQI;wUz`Y0jAdoxkgt6IGPXQon_OJ_A@zbkg=ZLLxf-I z*X|`}qCO|TtZ5nHQ5Z{1thu?l(m`8DTsRg0tL&-x^nUe7bOj4EdtZK{VS;%|{@5zC z78Td=aBagaC64NkSL;i7c1ze)=^%V#O*`L=QQtJ74mfU}rBj5~N z({6Jxz498gX0#AudK51TV@b?iUc?|LCMKTj&$K64eH@=g#l?8&Z01|Z!jjG{6+y>j zMalCz!atqjQbu^*(2TNjhD~=fmfJwH{{Z;w!b*na?}%IIA3|X+PGK&tw~1A>LZ;Ju zqDPJjm+dsj{bQYemw6vUC^o-;_dhg|9cUOB8Ogxs+u;)6{UQ*D+LYGQ(Rop<*JO;j zdRriS=oLDqdzqi#Bw!H-I|XpC6IBoxJ_KNA>JosRkNamGS2v80S$GR-c1ME;YE>lR z@w9~&s94*a{QTg;D5;MG-jze?_+kkvU~=?~4GkZy6maqKW(;l;XrTOXb8op56H_2t z@`q~{^NN}_Y384D%|=#vLQcvfxrvc33%RehTlR%tst^$c7N~vO%>z&S2YNLuzk_=Ix!i+QMx{lg z0SZ#jroLYjw0M)g6te~|TYonlfR)!rD}`Lg&r#3B%&tE#9gNK12;wAtHo|dtJrJaB zT@ei4oiDNVkz~LfR$i?$zb&}mChy8)-Z?UlLz2t0K`K!06C`P_BoOIxB|&76_I$Bb z`VhfD;1w5|NAVJmMgWkM%69aLsigN2-hK2M?RGv3Q~WA6tE@Il({T1tU+Do_egG80XVH39&1RH zdB&{pcsz zz842&G}a|RTa8X{bw&Dk|0TlgFOHNQCfYk!Z5){`zERab z`c-g2Sa8PpBOx%8RG>?ro1ja+=V?(2iC4gP$l#29n-K8bcDNrp39w|rIi0M9q{q0+ zg^XuS$*xp!?4x#of)3>dkO$*>x8}WMC>sM))6&A`=b5@9Uyz^=meE+iH3DT?8VzSOy zBs=kq?{sq*Ls&?N?-VQvijC^}Hlqi3R(#5s-5=65CR;f~`PJdTc_Hj**4uo!fd#6f zA>GW<9lXhFqr}W!Ge;Vz9Z;gjz4uA3cFK1ecuT?iPRR1|tXkWTQ~p`F{$lNZmoW+~ zw0+6AnI!5?&3R_eAXB$?stCGkFl1ipd#!Lj=o)Vh)z|d^?_H_6k&&aN<3zV8=?r&z zPzTIak9)k5C^pDxUVi9Hp6>g3ZPTiUj6*l!3Sb@0;L|D zr=%-?Ym;NqYJuVdWm&gaGrl3V-0}jmVknK0;QoySdc}L7xN~v-fL-&L zpYX-brqF`CtthuuU(QhS8ME7dHC4vh?2(n=3RQ;O7rkaVy7IZY;WP3SsQIYu7eZU2 zVv^x+R&|Y$6;m9*FqDcA>E0DIHT+%W#=qR>GJ<_e7IpL-4nMr*-1>59Ku~YzFBTbi zd;lC?G8V)Mntc*{e2??4#>k+0A_SYi&0K&_ukRK283ptE7DkdqMI{wEMLrkv{mQCe z#%%*AWU|4DqjJm6++kTBsa55+wzh6z5K7IRJuTry_E!B!_l4d|q}3G2*3V0(hAfmC zfKYEc>W+*M$CuWgo*wX^?-TIy@`6-Zx54x*MU@HE=IR2ac>4_5NTYo7fkGL6Y*V&& zzO9{|RbCt@=0X#qD8K_t|NE1akR8{ffxdpQoniWt{&Wltw&H5FA{P%&khxN(56<7n zp#!_CnWyNR9=u3@o$B4CJaAb9wa?8d&@dzO_oo+`PK!LNj!mKYJYXBD74 zSyBXwSyX0E=1pj+=}}u}5pJ*0hoIP!lt_P4z)EII`RT-7@C8G*8bh$#c0s21mE)X_ zjc7hk^Y`x@C5xgbhh<%Z=;{qVs;d~%{J2=i2C5_{g&ElUPfL%MM-!5%=jSa&4WsA9 zkS8@8g5AaQzBxhn?={jHEH6iOa?fzL<=~1rCtp~fabO50$;);L)l=bJybsD#{G=y5 z_^v&J20`CoB`Ew6iFaF*?zWx76`ZpDW}nZG4tVrsPPvW^=x+n0e+~{r5ZOdqoK6Ly z!lMD|GxbLox4OP1E8dh}AIf7Z46K_?XzkCUs5Z3Z-2iRkA>wcAHMqb~>I z5{}peJlxu7yJ<@FdHf2mcUTN4upIRoNE!-<(Mu-FXQIlOQo07s*Xqmah3&u0L{xfV z-7Qcm;PIT)GVo7y4FadS20;E7A8@yf|GgPP>G$w|}S`OM7BbAbcO<<3hqf=)+= zZhH;<=Iu}HM5jTVJ(rxyk>PDP7(;}cdQh(A{tUp9xT}dtQjcYpc3Wk~$`SUUyZ%qu zyuNZ$>d18*O9@C56h9Byz(ec-Jx@VJ1&7@sK1f#=9L4+=pjv29ykNV!CtJ=2pgH$v zTVum$O@Yd@f3=sU^Pc)iVQ($dhDM{?+6=1Qojg4B&9@x4aPh61c8%5*sW5n%{?#o{lb33e*_a1-sVP?AI8IP<=TqRZ%@e9y-w{ zTMg6)gv9dc^7@+{3rPtM1TH%YEyMUXf{J*@vdT@Ix_lQbJ z7^LAdA7&}x9=>y{wxlUA17wIPb|1+YBPy z_^j~|WBjBN5ZWJ_f)7E;tp%H`qpN%o(a%ixi^fr)~* z=o(jz`fhxzf-)Rvd{p;zB1H6ncaQ{oi|R zZu@yI>Z{B5%#%SD&LP}henJkrnUDquFU!e!E}E#zn=Oz*;=o3K8Ht3ro1819U{~Ax zijbp@>AMZ*0fw*cLA(3BT=lM6#G5L}b_pBv2XF;VuY+~P_W;$>B~2c7Q_*P(2CwPrd(>sARc4` z2d&8pm6Vjo*)zj{j>F2L+|)8LA>pzLKRgeN>w;`MiDJvoQ!7yen|TKsNb{5aY6I99 zzXawiEfYnO&R2Q}^6P)Tc+O@H)FIr0keiHy)ME&`};`ugH z*RXS>@c~nrNR`$O6R+vHjk64-w~TfWu~oxc8CiioM#jSZ)X~Uk2r6so6iq#rLu(z%+yJQ-GFNq88ENvcC3$H{oePX zk`d5yunXg$p^%J`^|#8Odvi!d5@#>St^6F)D!W6v^;6ON9_=^t-FSt!5D%H_#$gpn1uhe|UAmuM516$W z7erkEq5DP1%$3t_Q*3|D8FtwG7qEVt5n$Y3Bs>F`9O%7#`Lf_+wVhO|blVhT(R@V! zQ|}Y9e2%jDZFdnd2BQZJNoxYE1DQYiFI-Mp@)4)qacYl~tC9U}{nD@XOh7q&g#Gurt|yE!0|Fj0f` zHizf-SE>Yc_B;~O{ImD2x5RJpm}c+rc&k@bhki9MtT)#H(Sc7i(#y}9ySmljBjh)m ztzPtM`3(>ZooUq#lPP(&V*5ws_9He?$;=BEgGk}6#bHWsKqlKOl^*7#aS z4od=CYha*U`_9$Y76g^~&RKVlKr=AmFelLL+y|r)uG!L-`&#hei`L`6MH^of)nfxy z9=0*hfY_mYR5!OF?#a%R1zeE|>}Yu1(vl4wAT!@)&V##=Ku{1JL?KP2zV6I+FmqJK z#KhpdKh>q>-{rDIIk~w%tf;rnYu+m6Whj26qGD77$Do6*g_i)$g_UKm{W%CIXSgXI zNC*nb#l)2s*oo3^lY2ZHR3Xq<4{%WL?1<{;Rm{m8AqV?^4*9&hdC0c3$a?UTC6D9j zsV&_S;^O)P=FobtXR6ly_ zMX~zoRg$xKcXD-i)!Kcn`tmv|X3&UeDGAs#G29Llh-u~BGHdCb(=vCzyTx~o%E0r9jSoJJ7!EW z*>HJ>-#}nDmM5Kpoibg1T))xc;DJxw&*&_Q(kW`K9O`ncG~C-y5n<*j*$WH` zQRXR26VDlY0Y!6U3ep;S`Jyj@rhh1wOq}3AS)lk+7L~+xTOjVh@(w+nX0cxl>b!O` z6vh({MXWiqy85z7ew{?@&Eiw>*fH2y5Ots6Cx#T;>$J2=@MMu(a#I3*9Jm3!-?Mb) z{_GV}!T7acztJt6Zm}8Yy(G9B%t;AV?PD7cp$@{oK#{4bBG9jgzni*v@sbBf!-(Oy z+94sZ#^h-B=Aq9psQ`DNT&S#1gzjY%EAWvr-CWl* zfuhmQ6~YN%BENx*rn3pa^kzi5lD~sB+d3VH6Ko!pI2d?hQl6_j{Rk+q(Eb zF1vb-D!J?Ol*+<+Oq~jluT5J}Lk^T(gNWD{{X1FPeHNd(_%J{=iii=CtP)LrnUzUD z(|+6(@9+5YK#su!VGOd(blp$@kLejux+O-9!LImbl!aH>W_o!ThSRk{fTT^ebyf6Q zy@r7zRJhyW91I*4|8w*v?q~%qht_0oZ*M~YDNwF?%yp)zWOOY#OL{XtZUmXP!fH(L z6~Sg=uNJMWmVay0uuAmx>C})0^9wTF@i(i&b6rY=Pbm+rjU0oN7hnQ~|BLmE;ygSq zT`dULwEjM~n)H`)OpU?X)^@&aJN?zWN10S}#sg77s`tyg7|8NTY>M^P?*;=pj44|kjmSs;hNg1t|p#sr$q`PbB|VBMWg#-G4+nEqdP*TYLaJd zTP>wR*(wpFHZ(oD!ap7UXBy99+LMtS6&3Y<##&{+4AfnCjCCZRi9aA<0oIG4DqRy2rcX=&F3E?aO`)YhsJ zncAia+7$wm`Zpi)NALepP=|zv2F*J-IXO8v@O9Jy<$Zz*D}YuNy1=^KX7Xlpd5NnO zbS^E7eE*cS2iDQQvDJTQ6_6x@C=#LTysz8&y|;YFD{!eW*jMlO9e@9Q*gDBu-Tf#)ea6ImMLN#h6=eF34{( zeJv|vOXN->f#4)rlB|z+-hK4A#+np!;r-DgehZ+oUMR(3IikNm4<0-P%y_eLcJ{?w zkA)$&;v~7!us4&omg=gu!s&}|w#-g9{;e;zI*Tw{+*=G^m5HJr@cewauq@7Wd@>N6 z_Gqxv{Wu5^ldJ$6Q&)k$zY^0PKX-Rm*Z#*7fyp5peQBq{Vfs;i+Kam9I@6vPPgPai zpry_3FPs791sFrXA}+$z2hU1`%Y9sepqbg(Q;vpT7TSO& z8F$8s(3cGVs>{prO8tkW@uhc=|9pYp;>jgemNzVDDOz1Xj+5PCbID?=WJ>;C8R zAD2fPu7DVAcC`zko3tvo6*XYt{{Nn=C0U&3r>IF zlc83};-$ZU5T4T^E)e=k2m&D~ety{2d=H3T6MDLU^k=7O%5YEbp25d)jx*SD9JqBD zFD**o&AoPU*B>P$= zqgFmm0e%oXoa*e8Yi2Dr+llpD9UY$>r4BCr>{D)TZf^4aC1i|b+R)SDT{HnX0@#C` zR|+w+RnBG47`p5!ZNi)A?vS&px|I&v3>-z{beAB(0CPw8CLASw+_YT0dG{nlilhu# zJa zD3CxlT3(@T%}mDu7-<<&%VWY%hZP!Dx!$!KYqYl89*qZ08q5b>#d(vdm~N1{$VLWT zyS1+~ROd#d9c|(pG0g!|x;DJH6AdF{GVMGEet8&?xCl^4%1!?$I0FJ=iPc?eUvRR_ zkeVHPqi0T6-Fm$W2j3s{BYgTzojEhmabB7CA5glt`4vjgOjP-$#g|xVsbS`?pW0_l zL6b`-SzlU)R?6~SO9e;svzEHYd(?V~1p|KL21f zQDeIse*v;F`U7^!$hD3XO~{OeY^SoNQ~)e8a|YqI%4qJn_J+J&V?EY$5m4Q&)5Op1 zB~HUwckWnDH372yg)K!4m*WB6`7#da1+(dbr{}Hf?E@V+{jmyeiTHo&;2roxm-Ow&{*k z|C*Vd%{(zBgQa$86w1cdc3(H*Y)3PY63T3Z(hB=R`zoH?0wE@N?}WbJ0f$4#v~b45 z!C`%UsuiSkuZj$7y$pMCDVX5AUUU$saao@OJ4hABRd~3$AEkbVEIU^Mq2Bu}w^LPM zIgnt{0%71yM$S_!vEQB`4jPx*|u@pN=_#ofEF ze65ifWtY`|Df-UDg4i3Rvt)%h_1@*V^>v4gE}$ulRz?BPN_2{QBov7iTb36W4RFft zxGO-}O-e8EId`_BBLd)^RKdUL>L6e%IQ!%le%&`bbcF#FTgc5vK&a@oec;*G>F}dV z`P`4a8x1%JH@flaD!e6q<=6JH1^JfYRQt?zT%L$`BD7O|1YL1A`Y488+SNLtr4r$; zL*AC_?tL@K-QIki2rwN0(cEhqIr>0-vK40yRf9SeVJvP=F}A13rQ#KOK8k>tcRxS; zenOVVDVHJG07ON%!y)vWxm>G{!gXWSWq-#NBit^G72J>aYGvkot%rofZ?x3?!%ujZ z{o95gImWr02w8rN*ue)Vs$oV#W)nkRzw4e%d##$&MSrYbqMMT$i*Ez?=Lr!ZG=WRb z`_~VLRz5N}xnLR1=v}8rqkIm*yc;k37nZq~;UZUR!DCHJ%Qw!e^E{4kRTmG@o?T1K$j-9SUBUHZb?@6>4WghNV5 zm#u&IT}E_$GrtEe;Md2fpXV|}c^f^4bU)pIvYQy;Lm+CaUMOG_AnNfQG5HlSh4Z)^788H>VdTHyBZN^6F{>b+;x=O z-LHaXrF{!cytXOa#}mzA3i9$=T3VS*auzIN?03WBLF}Z~XQqd&p9I#2aVO-ki?!IPbI}9XY*8QrBfi~iF%0B>qc%Y#FtoG*DWUoK(psF*tR1S3( z+C2Z8KQL-+fEQpa075tjl>BOi$rvl)_#^tcN>yuFQ&R&mu|b9Hf#?M0BoaKivN+Pq;UhAS%%)jgTo zw3A!g{(SD+A6b-PrTjvol(*5*YFi9H4*mm}6Ju~EzC@j2hpOhwOYou!pZn>HDmHuU z-WIRhxD%)I9RJvwvr``2#&s9|NS?rBJQXE5gOYGRw>KM=**_X4hz`&&*(m~TU6;+i z&mVc&-=t<~=Kz;~Pc4Lvhm`eCvvTn9m5)X(7x<^dNM?WTwRYUQ3gN^xo#m$;D~~6%>3uQ5 zviu5^cz*(p*R@>>1#`<~knS0I!41d9gTM|tcWE*imhNKZ)b`%RNlv-#t z^X@{<6Fm&Lbs+Qs*7%V`#tj#rcI=ILzwDy_6UwA?NitU4Ly}&i;u$KG{pZA1VE5%8 ztEvgl?!0cVpVD&<#>srZo&vAAf2t$I%$ljbC3F%vkcN$saf>(q4RerBKg$S-%@NLD zz?wfj(dh7)K5~b47qXt{f54sMbUM7I%u8_+4{tc0cRP5ypdUPnLm?P_06pHS2!9mE zQ73V_!_}A!v)x7hF?OER0@{ZN5z<1Rq03&Uj3yq(XqNpsqFDfqQTX#fus9mSR*^K0 zVgQdRxQ-Ozrst2ocO`LLX1yY5f63{d^PPiJMl+*!5ipvVA+^@aZQ$t2pQAv0W6wBe zo4If`;->f~`#g-#qXcMC}gc*zllqh%*_ zPPJjc^aZ#H6u61!f3FX(85ghSPSY25HGAoy(AZrfB_7`4nLmF4;Vj-OxhsWu zcu%kTa^d0Wod5s)aK}ZAK7%lgl;qytuGVGmuh@GNR1CRVI#W7fg??4|q*2%WtmW}UFM})9VmoX!iA0I2g1V{TYaN5U(MgALEobo-)m$q^cR%R` zW$a!#$Ot7J=y>4z-%~p0pryEVA7`fYz8co z6Ukma<4yH-=-jG!oVYd*qXm`*ThkunUg{+hl%_!PLTQdYQTbs{J4fYH*^bRM`_ z_0vP2ut<->PLJ=nof%d~4hHxCVt;lJW3)AFIY*@VUv}Y-%9-H3vV7sY_(Pe8*VyRg zVJ*YZPkn)$@TTB;JiK0ZVqJ^zLU}2lNJ&` zmw!-JNy#6}@re;lven_PHmtE7zxXPE%jnt#yi9^nu<%KiG+d}mYf?GiabruJWPX(xXLRUXN;u$V8<}(jfeiwLSz_)$Vn9sf9s!ruayZR>M--&z+?d18x=S)A2WGrH1 z$*lt@qx4l2dmmDUzK^+aw`e%Snr!yyTj_ny2PskyX0`is#P<*v>(%o12F7-E`nL}j z?`NKpzIgVQ0*Axt^Di0Y@ntEcFE%h?qS;tdn9a-zhdI-IV~=^N z%--K7`#;8B9aPevjh1%IJ6^ZB=ykRCEVH%M+$NRr4ncyT*Eg?kwDZ2QD{Ko_U|zGP zvvDcWwYPmgGMAh?R@2o}cDW24Dr|OY%G}xco^B!0&R3^pxo*a7tZui0<#-DGzdu zi_pyhYcUUm6qzd1bMyQDM(&Z4f6Q~tQ~Vhs05gPCbP^+s^H+smbe`gF@vu$ma|*ZbV1`gfBLxVX4BJ#K@a=lSIK@86oH zK0Z>pPFa1v`01XqulN0Ogecw({}iNnbkuGYR+KCct|j+1f4hiy^s)l}cf}$^LupLM z*XU)Vr7NySQr*0#rIeRXX3!lGMyYBfM6J>u9!%*w^On{pT^$s4nvs+tL zWl*3~@%m$FX}?XW%n(~=S9SGm{woXnjP6)!i;cUm)MSo+&Ou7;}|b7ts` zl5`*JxP)VEP3&6UBxVF5k5>!^MVRheJ%9e(#f9R7^qlgogk3@ckEy7Qrlx?wcth+9 z**g1e{qXiKuU>aJJb+G@)rRuYNLnJ+mjCIRqIGOe#~~%+`-IDqI|b@=H22uimQ>)u zo~86M(QWbv5#hCmNn=~$2MLKHV+Wcrf?5ffV(#J0E0#T@oTX}>ilD9$qD<|CrqzkE zq}PcV=b!mq=Qxl&Xp`+$lMz;NAzocS{_01tLFqIYe*QKKtCUo$9aI0Dn|o(hS8L<+ z8^`dlUma|r7J}dzl@=1AA$dp5>JtLrZR4Ip^B~t7vm!|LTGucRHHV=NpXsm@?~jFY zt!g$hms@6kmIaJf?{qw_Od_oE-QYFT=Xe00+^OiL?TYihdfcQbGa{NIe#2z%-L`In zRoH2TgN6pV3lGk^7abfVCnuYS3(k*TJdjV8SBa^Je?%r6b8*C~Y-nNgsdGQO3i_VK zjc&{BRc`Z}U#1!9{E#)yD)y6Pdm5)i5xbYSNYJ_;ih{TGE#xxbecii+Rg%S%vP(a5 zHfj?_?SxH{H#{x28oxzLU0zJY_`+t-2P_DgsTUZhu7>QeK4@zDAsZXz!GI-AU#Ea; ze-rWI*CBnX;eEmC8a=&`mLAcZOU>|H#B}f7`H7gOwi%i4h87Rnrunzu^m0fU#gN?f z&WMS*gQRbeYNRn0P!_tG!k7?(3L}*-fWVA=qQh$J5+tU8FCW_A9si@8)-mOy_C^ zRJ2j2yT~qgXn=oTc@OX2*ilosaEX|*4akjTRFZJrdDPx+8@x`Rm3haeZDY>77U4=Xi%6(a!hHP9nCL{ zG}wIFrM|l%B3})jLr6WtnRN=`8bM2g+7PsuBinda+7=NorTfFB8(fP=1COn&vad%p z&R&i&h1V6Sb!fOiS7c<0H6Xu&NP3==Y9FTOLg2>18TZE1_7Zr&k2pGmYzb*Ei<_q; z?n*mBmxdo~d+7(ZiI^KD?Mh2S+eD8z)I*cNHbHaxpG_LxSyt#tn={iWe6U~6wI)8jw(P?WP9j&V&&g=Sf zb|a>*FQ<=fR)bFC;k(_#UeW_i42^u^dF=lvf)Bx>ViM~)GdVdN>S&&i8r~aXmx-}n z?gzh{$!gd5o<3QuJ?irrcaA`iKe8c58prFqYzG@vre3{KI@1vGAlJ*usmDr?^Ngyh zs->l+edmEYIEYR1!JG^6Rg~CD_HGcj^*Nt9rFUmX5*{F%m3+XuO`A#(%68{_Siw;^m5;C~}=y!H;QWsllcByZf>A>aGg_onU3 zRH<70s$(W6AIC>aNJ#Jnw>;&HYroZ1qk4DZ{^nc3@bGYSVuiS#V6(;%Hz<3QMzEoV z{fNcSgB5C-R1yn6_=>Z3Lu+@~P&2NxWZsJ5Un#y{A)6jy+~KaR-5u#Inm`(7zfV|l zc&U!cU&!c^>Maxl8bT$9pAN6i&R42JNcE??afjd2OGRv61Z&#Mkj#rId6oGr)P=qWK_&(U6kT&)4Q2ecN4gv&ud3b*H)1`G)B0hzTF{!%l%~7i< z4c6}EnV>YPJqkCPru*ODTfU#UtazK6Yi8CshyKb#YTHrHYWn^!(wKCqg%L9YO6zA+nkX8nqoea{)8m`L z1eZ%9;SD%hI|4I@X2Qg-N|Fq_zzZl_4gDl)v0_#^K8Xee=hxbc3F zEtg(`)zQwYyd=|#2u$|wszmKT;d2LvaN^&LW;?=QYVWow-8s(RcsMpPQlOJJEcfHb z4{}=-9k|f_!Pez+AUKoZ?K||S>WtCGxpN0>#=H+2;u&=#Qi-LWfAf+vR$dn>(3S1I zz#O%26YFL1@8k~urbZL(Iq=kGX|rW|Bs7%7X(x({)@^Bc-nGa`@AOiW+x=peq_Q%H@Nq4~XuyU`jN+?r>Vf)4&Obu$>& zQvJe+NNKA+tm}F?O6BpM#(dA=c&4mcJ>2%4cEW#V@+!EnAXV+ix4eXoSe4@dmp%H_ z^>r6#rwZobjA;9O*-IV<5(`;h&QcDw=zd6~4aM&vjy8#d{}_ybZzR~}>!R;UlIkUL zjL~>(PY8t1^UyBf_tq9$%kT8Y)kH68;dRA~y4P&f$K$KSXk@9k#?{O{I}S;#cT?5a zGdb){rw&-2n!4`!O<|k+C+{%#8CF(S;@j*RInGrh@S?lXc{i{^dFt@YwmE^ukuXk<^Ce{lfc>Ll4nxWOxuKYq96hm`7<+hXz=A>1*cmC}J#(c_q`OkjbJ9M;3-AnkoYHx3k-zuB$v#E2l#aK}$IC^3acF)QEVj-T`Jv5~kH=jcFQ=Y8|L&HgJ0}hMyLEq@->c<5{jjLyODx zko_L%Pl9Or`KS4xc;`RD>pJgYHqVJJW}^Ltzi-$eHzDNm*eC}j#>2xy6RIHp$lCgK zp-bjD`!&mi-PObqwZVzqeB~lNXHvZs!XeU^t&HXU$Ipe%!_-*(z{sGbKoL_N5PH5k znc25m$5QX;M-KivKt&hwXC*AK_{{|WT9y|npJi^UxAxxYl)cz$<2{)vGWSq7H~-QS z)@{T-jwgb^ldHM8d2({{&#Z5TOwZER^G`XL=$K6%pz_P69&NGViEE$dw4Gwz>F955 zoRwQ62B)-df6*&;%#Fx9LK&aV%7k@3m>!i%GBV~rX@4@qzmal?SYaUUI{>qPdDF1V zrO9L7WcY5)7u%}!RMf&S+Jm7Aj|x;oRbB%q3v~Ip3m6Np|;HQ>;##nz2@Wj z$LeUC&bk*hp4&X0-|(%^taGl0<`cWN(bLi0xs=`7$?Pf>#NEMG=$`mcOu?m8KP5Gl z^a;0ss;m&2A2j507?pJfL|AVJc`o*AGKS4u2pM=&@jCbQ&bUd+2O*KtTMx$XB-PZt z;--5YjZlD4L;HJh@H=b@+3?I{BS;H`-Q?l~KET1IdXP^9OytgLzKZVfX8^686O!m&W9^)}t3f9M^qQ4yuidnCTGh+8-jK zJ?K^wCoQeB;W`Q-a0n`(*;%yE;V`uMHkPy^g$Jtn8H>g*d4G{%Q+f&C((oP*YPLk} zX-P!{unNk4lBxSp*mW2Z9v;W1s7jO?Z%>td8y=q|6n|bpn_3z6b;olukgxQK*(D(7+>i=Ug5&T1vPxpsureYwzja zDqv)`s7bt%7yx9)WY=wY5lab^Y9ZroYVWn|U8T~sD@6g<^Rx9}1k&q3m0W&at$m3$ zIPt!rxBs|=fPl+vCq4hG*tj?m5fM`wCGSIpFOg zQU{b}T69U8gMA3v70qs!E@p2_I)y@Fi)>DGd}RkE`PKfwq>Cm7*&tGFOZ?ct)& z2i_>{m&ibq=R1IDvN8=-58R+y^&8wTo8U58MKfxl59DPWC#xo1-v4kg7JWCS9Ne4l zu^UM`MnHD0+n~Wz>I|!2#}MHJ_YL$pD?yqm2}!=)t`nrtfRNXU(F14IrIAaW+p|pH zXr*)a;YLEAU7e+^I~^)r!t9UQxZKZ3QoD;Ot6dF^!%{)IgDQLOna>*4Aj4bb!T7cT z(RrUuE}Dd3|8JoVB-Ng)3C-F9N})a6KD%0UHJKm7seG9!C@2=V7G0C7h3^)^BMvXO zCNMnEBXlqFB2`ycM=3TxEfUZMG+`sbtkW`ShX$n;SUH@~xA5iG&OBGvR35>9)Jb>? z>1=>2CSBru4x0~qaXX#_Y^pFtIOgig&fY%Vg80iTyHArsg7;6Y!%%E>23fI9E{n zR5Tg3B<3Z{2aGOv#C#&g-;U$O|l0Mc@L&^o$C!PHn48Vj$+qnxY85qZWn3T(H(_I69On8^O-gw*d#Qt zf$f`9=p+(B6%OD*kQ?-k3ME2X_sb})gu0Pnnz4t3E-~mw+W7QK{2JN84*C9IKRz~~ z9h~F>#DH3fS2OM7D=8rdK%gm`n1A?jlemN`1uYju8ai6I|o!UX3|jf7>a)Pmi+?8okd{9SEC=AYzyDYbZxUy3Nb%g*TD{Jn&ioN|+i^B6v=z zHSv%Qt&PGRKR9I^ZA74Zidw!^MBC8bL|n$b6czd0Rbv!(ql|jz7(mc z0iqG3iMtjRr^;zj^M#9-H(`2xRKxe^iednMh^)xa-AKqBv?OE?3$Xj8#$k?=DNby) z_X%m!x{fBzTHvj3Ctl@4+~Mh3Rc!I;y#=YxS9VQm91mN>lZpX`s0Ew?+Eu3o-u0IG zRX&6s?ANLiaJ!Pe%8ym!P-_uSEe0f_7HAr1SCy7uZEwx|^Y_87R%=zsxLwu#!LDNe zmsUwQS2K0%5=zcxwh|4(MTJ7pk!FN_YAMD zkzp4S)^-NM8N8>{%h^pK1krir6~ZH({54aawwTKL^3jf)&tcYaT}7lm`n<^Z7)}#I zLqVF*H(z>t$&GxJiD=k-KEp*QC=onY#RBcN{1KodiXDF`Wm>e7*~@DmGYb2ICQ?jX ztsXDUze0WVd&JMU-x8mVt?JPD!?U$qM<&ho*!2LCFPexd_*og52 z0BhnpqD1z)UiyBLBE5ydG;>Ks`I+~I6&$MTe)7v6`3@Zh1IYDpvvq|J=0@?Co zCPiu|#T7HM{H!9ONSpe^mUwzd#xFna9>Gly00edt>sex(81M&EJaKiUoS6lX+)7}# z?HzniIxjEJ{1(h8k;xpKx_n%|Ok zjnOIX_(7=paBV%c8^RP~|D}XkU2p&9SM77YDd1Utn z1?rvM#IoFtPXL|b~$CXu_Kr@MsJ1~s}|@*dA7 z?7^P*xAiX@TD~zQCmsjgH@a09A$O1JRCjHq2)fm&_tyv(&VH>ifcpIC6xdSP zLdj=dpa>QdZ$=NzzvM;COJJ8ZJi!0nij-)PQNfqabEnNOTqpYIJEaoIB9R%L{iW@p z%jb>BYbvrpq(1K+H7)I96FNG& z4RwLNd?Oe3KXOA)bboJpzP(RGeV)r4P&(rohn(8__B2P78ID?<#Ze1IAy>`yy*+W_ zxx+)mRwFq&uz&t(n)F=itEoka|7Z_jV#J7H%pPwGQFKGUWYVoA)oa@45h3@}7)>fEDxYTxhby!0H_dj05+M9d& zkxf&noJ#~|Df{9H09tt6@;EIIk&Py5A)mTDCc-3Tmm)=;Wz>Mk+!ULx@X~Na-=cAq z{RhGCCt%`VzrucQAlaPrK8BW-*6i`kM8Bg7sX=5f#4Wmiqb&fH`)SSjwX42J@?b}o zAv$7l^mkP7&eu)P^eNu*lG7hg^u;}rwbe48^&#V|=2G3_ZH2sA8-x~&9Tw!X~}13?;6N18+*;%>LniWb0x*ZTCZ96-YySGlvgPkOTCvH0&7m|v9!I+ zWbSu#A_~F^(~iHr?2FSd9pjVdaOtuf=d}Gscg`(9T%vgYl*Fa~ih_Go9|5aaOq6|% zJjhM!(wf`Ek{)q{u{n+1yk<+-e)MatW35QGhBbnIkxA8;T1Z?xu_S1E7X1Pau?s%I z-5yI)V(fv|n=6GSP5wfVZ`qZ|~bc@?h262`4g2<(3r}>3E=kq<_!IL~E!)+3H{{f7^sJ zgWM%%TI-oCA^$|HU-0$j%6pG*bUcW?{)%>nGoy?2UNYoP$(YF>CF!P1>0R@H7os@V z?BAbK5F>WmbvR2xLK1TpRb^U;B3H4G&kKQ7DW}T_M^p(2#yQYUy(HRh)vuv|@m?R{ z)1^kZQXXG!j=stz!e)v`AhQ+Falp77A&)d_l4@LSXl}!?j)-b80jU-t^B&9QRShS} zTP4mA>JTz__|`$TMx?iaMI79x)6mWzhDZkyHc5EhFIk2Xv2_LvO+mwj106D3_?-ug z;b3UQS1@!?iSuI$;T9HihnWtt{6Ox#g-hW62@Jk+Q_TJ8(~s5Fh+2)jew(r(jZ{e| zNz>Qx3H<*2ZI*`dR44C%z5Gm+STx zIQhYHQVVO};|K*(3r2xC@g)F$|1^mfJ0QaD%qI0jgsMDTYPG)gw92T`k=9Ng7zg8_ zfGtE6`)pYr6L6A|9d|vA5vr^BYRzi@0)92p+^UVMV@JDs0d^mn#EmRM8}^A40h8#N zU5H;7QH3qf5HOTZdfGr->Nx*^N7<;tUV* zI%YUtH5q(Nx!aaJqhEmk_`|rko#f8>8W~=kw}XdwWPK$PHxU z3sv}MdNxZP&L8KUx25L_Rn1K}lR?*%-2oj*4l_(`gK9}B_pmaXzKZF$dFJ6E{?W+> zsYgvjM6|R|XE-({hfG-$a|8N#he82NuJ29eGak02!mH?O-ndQ7F%2n;@}(C!&N8&< zuNQ|tDB!k%>lqq`0J`uiAUlBw%Z_;+GbvPW*gGe{R!@ZV`wh%0*Jewq6&7;}jn=+r zzpU$OHotS*C7T*hZN~2O$O=a-IE;C%%WfUW77gT`SA57HBah);O(fK^4@#_v2<@RW z5etStK#EZt@6Z_{59ZJ;FbNrZCe>>sIl;TT&wmt+9n2U+6tBcpR8)8`d>9v&v;N!H zub8N0&bI!ijR*gIeOF9hcT0kX|5d+Q&(iwOpNxkRdm%71FKoR-Ku{J6A*7SMe_|}g z>c`-TdOg&uU%*P*784WWQGE@ZaP{lW&1c!gwY3cW;Nw&QABW(H^RLnoE2ZG# zH4Rx&yKQ=ayLC<|w%{vII=i`*=@&TDfBtLYhb2Lsx7@qGCVnke^MQbBHf=uqf&_bp zAe)YQ0X0G=_au-p3PJ>eJmY1>nCnJWpFe-Ds307n@IWcRhrgUYU!h%DQogb4=Op(JdzoXS&-?TN!bjR?=RE)jrnsdn}26qrWxPz2v;>fN^rj_y3 zZ{6Hb3q2@js#XGXRBSRdhoxQ_AHCFnNtp%&8DyUN+1Lxx$O#a)UB#@$=yh8Hx)YED zn+>*PqTTQ`Gc#k}92&1)n}j<%N8LX2&cJ#nc(4js-{S@<`-4P1p{`XJGN_n@U-GGb7Xa(ZXqah>3rbv$&bo<$4FXKK&uk4w_T6#II!Lq0*(TKcdLz(DcA8 zUezcuE{F9AF+bp<^45F@?G0Jm9;W+hlR;|v9k&(3Z0U{{s@x&3dC!hu11rsEF6DG* z8TxRf;N2fzdhrEJ0{HBic&y^wCHxW|8*O~LVnQc}_!@DO`WIh9+tUrJIM6tX<4zfv z-3I*MOrv62=Wa388%|%wohbd3LLj#tc_7r`bq5P`)d%^SBwQ7l;pFm#4V^}~Mkmpt zW=O^FY4cp!j-}eblFp&gJ6R8j)I(d+%KgX@pYTqc6xE@Yav0xpd_T*HZ?lj1q7Pve-3s;tzX=Phr#h8_+!Vi3IS?uo|c_uKFV zJQ}9EcCAekj3YoT4nQn*r$=?6>iWV0cMshU?qJa7%z^Ap3b1P=%*jYe(}e~5JGVWF>=Mt(uTgR^PjLyN9f`%v3~m9|z|pO|=Oj5!U;$^JYf zG4)W9Q^V%r2#;!GdC@v%rLD77GZN=q*?(qajFOvxLrSnCKpHBeODmCn8?w^us*MS% zBvMEb=j;wQvZU@ZGzv>fN{WaOJW)_kXdozU<&%=)b>+(eL8!%{vhnJF&CP2k{Xz&# z(TQvQ#Nr$n82Acx0c#qo2e+qq1<#L6D32E3%j<6-HP+Mf^$Lf)S9O8(2D{ynfe_db zI1}1lJL+0lSKvYp(#sA0fRJEb|HLT!7(rE4RliNl@1K9=yud5^w_&yl$VFhg(zTyVqwV0e4 zg$!xI`m}GE3BtmVqNd5{g6-K+EXz{br9cTB);UVDqq=g*y0Q{O&^V9GX)3HIRfiqt+V3BW~iH zxeecR=^TA*GVPoI(Vkrvip4&@K0IQ2kGlxwXs($EoUAZwaMg1cf@o(}c+H<|o!*`j zRL4IMj%$OQI#6pRV%DAOX;NS1Ps4uJoG#E(i2dJBV6W_W5MRQs{o}K}gbn2+pLlI9 z3wYulAKR65|2YBY8vBP|k|Ho=WG$dHvB+Dv*r#=YJXA_sMU^QHnGEG8XIWWUVTQYu z7l_a7Xi~^Z10x8s6*sWz7QkA3^PB1SHzzrcWdmdGF+wC2D1sLj(D#88SGXx%Audo&;&C%ophP19v?C-lsC#+g3u>{Xa+GvH=@iwrOjqBLEhQxZ7 z`;2kY&->usFJMFO9s!%o1=wT^0F;V2&JfI@Z@!sAx0hc*g>CyzOFtK|#O=lhN*{33 z>=@|i>7O__jMe)1*x2Mk)oZc4@fC`Zv@OJ56LTsHS6L9-ScD;=o`~X9W21aVPxg84 zn>Twl<34^NY2&tU05>t#=UrFLKICd8pVw1VxW29S2}+*W`xVRqwzIRd)7eS7!7~rv z!rH6E$PY?$RDQj!$b+vX@Hw*IkSDJ1!T0lfc7aJh1$5b{kQA*_=Fe_$L&^{Xl-}WK zgrmEAycRxPJfsRCSo8F!UkiWorial?{EZnYrN7?MvXM`iA@Ltb6LVDOnh(Ni@8BEM zz`U{hI;)A{@cMM8lPT|(DJWf+uTFQ5xupG=H~cAFSERmCtgWSTEF)@cZ}gJ1)X8ZMbNtI-8#z+xQoM zL?r!N^MdDtO}RQ@1H>*IDlQXqg#8_DLA~5kJUz4Qpu*X;&&pv6r|keV+Lq)#scMf5 z;?(i6O3sH3q;1AUx|hN(Sa4eQ&`Ej703*swP&G^yvW52Snk{1&U_(r05h?NU-R_x0 zq-s{RVd3Gy8tV6_w-$#qZS3qq5KfOCF?w3G9UOcXWuKjy`PudKoU9P2<-N6JWMt7$ z(gO?l4)oN~BTtf`3o!IB|CVFp0k4;Jx=!9}`p+oTy`q81v8$zx1|}wf7xwq}7lLoV z+s7av@~hyfIA+z8A{k!d1gs=Hq7A)oA+W6P$yLB;QEFLQT0%*n{R;{}@*-wuw7Umg zR;Czm9q}2HqXd>#oJQ<*OZm4A20PoWVyQ*6*P&3Qs0z9_NDhg& zQE>-0lzyH`^$B9-=jrNa)Sn!>mDl7OdSpE=L8e624L)|rl#uUw({RXhVoHS5;!KJ9 z1}mME-8lhp@6W8X0AGRu^{xOo3e_+Ebrj$#ov7%=tf`=o+RUhEr$%hivl*)UFXESwmCq(Yz`vF9U*J!T5cU;A z(tkxqkSyXYrAF;QjeYVt7jTz@ibWdM!WXE)MB7KOFsEz>HTXHVApS26EF{3}K_>Mz z;*Mgt8q|2J2Z~YSYBYhOd3=3RM9e%MzsGf)8E^q-27pQ|%3M!(&7a$D8bJE%40rL3 z&eihwm;(KlJ_VwPP!XMTISt|q_vsYhzVU1iuE^lrNB~)N*^(}D&16#SQ-tO>>3Psk zcUu~Od1A~-#QgrYG!sFlt$@@WgP$7K){eCK0;l~V@?KCUJ zprWaRGe(H83kc2k((?=d4#s6(x*=_fpV|KJVCfN|fZ#i600?d36KVxmo{{-Uda zv-I`nAIVgpT!4hcdXJ?t_-(MNa4x2#OtOE~-RnZ4_vb?W_>Iv?0t|>)0;rj$61{}d z+e`ab-bun>HE1+mwQA+=)ZQD1;l9zgK@4x#KnJ&?paV(1k(PG}H&$~zR1!hmfR1C? zV;6lOD?F(~N~)GdHLg*~bBgK# zP@tB;VOoEGzlu+!s8OQnFa?GmfcD-H7{Q#2KM;H~UY*(Cj`b;8`uX!z}J zzJ$;N-&(m?96Aj|5C!OmulPc&xr+V=ti(Bc=7m#z1pI0ogqr7E-p+ja+@&XI(6qeV zA4wuH%PPU{2?;-aCP?_H-##bYxzeNM@VW@(>7Lb7VSv1(%fvb%Z$=xmsH>@&*Zz1| zH1KsvJ*&QEr$eBto8SWp8Ce$wBb^i(d1=+jh963{(W}{f;Bw#Jdg8u3ICyn`;^)sa zw?qPb{Lg(j9r?EcT9|^|TFB_wn57B#Ed%cs6RV4rjnTs~h5a^W1V#DzcWM-?Z`AN- z>DevRz|R1|8k|_Y0x8gi(a~!qNze=coI#q8`Zt$C*AT@g5p>egzX`NJVOK+ebKr_W zUBO@Nr?~Z5g8uDP$bO21TjdDPK2Ij>MU#MlfTsV`#kIAynHg5%obIAAkk(BU5f*M} z(ibE+bh$TW_{JDq3W7b5zJ#QLFY4b2gw1{=jG$eZ1292Ogkrd$`1qy>go}? zfDfT^^MdL3S(TA5Lf=L0L959OqFcCXf%XIaoxf)d^$^L_Tdxk!iYA)o(0?(cI(XEj z-&{luZ@;w`X(2xM54MDG;-WT$6wd>sxJ=kf5`{?n204-tGyPMF(0-S%o8x_8OQW6I zzk_3z?Gc?gW+{Q=mg+6|8lEpDH5E~0Z)t$(iMr15PtkRaka=a-y-YZVzw3}oOhS_2 zK9^AO*T1#P0v;}_JQ4QJ9xGY9o7L>A_x}{}&I#m%oO$JVKu8OSPl5lG96%;ReBMwf zF9akBF#8#T*fZ|?P#pSt4XypRAYzc4I=LGApjC~Gw=cJ5;cu~C%jkk;1>>J!z;~77 z_+c%K;eQ6)e+dR8TntDOW5$E<5^kCRd1y9fSJ@^fm;XVFPo0=76|eV83JEn@e?PYe z(yO0}f1<_SFrf6BF#oE-l$4YTG3H4j+XF@*w?4fPLSn{ETHszkXhFw%72M25a3nT36-+!Tb{&~GpCJ+#p`tOa;=QEn0jHIQs>Vzpwh8p()r1S z(0=^Tx)OKHoXZPX)h{&B&L!0AtSRiXUmV3w0Z)v8Gp0xelwYld#fC@q8%KZ8PY1)b z6yCvIHJkn{h2e%U-Ue3BnFwoes3`l(4CHMVeuCKUj)2kEp)!Yh&t_;<&;KWPa{}xL z`z3K1opT7D^e*y5%(S>a<^H(4-BN& z9UXaVPpW6(k;s(wMwQjQ?^X+P_Ult)zh!WA6|)+H2A5^}WK~iy0~77_(DoDS>ew@9~=3Q$0y=2~0=!t#}{(N%?+-?g`YHd~C zIv-@8InHag%=us@z=31&F|V8mR6$eX3^75y`PzWfi9I`6t-@=*c&C}f?v1IR+7c^R zjB;xPEJiU%tmfZ0`z1~N#uWo-v2DI31m(UnJv~|!F{Pln zJB{d!OS*=_707w*w}ov1_?aLUaze)-FgL!ZHV~v;V7Mdw8i&L#9$)_bYEdARg};P< zn@+6I=>WYvaZ6W>=r4RbY&cyFedt#9Mggqsusn^UWMGYC9BKSqaYNg}Tn`rjaNkZ2 zaaQ(|d3L=yXJ1bSw0LA5cgg_m*|lm0D(kRjH2Z_Z#eLj~f(0VWq)$W_91hb#nA9}|NhM?yOZ%MoJ zX9&nanE-Q;r{}&m65O5kW%Cmn~1izkb~Q9FMRaTaT*TGC zuUB6>xwyNtuS4UQ&wU|?v=IHhS;>PzqtS9MR%q_Td4lw=IkX#?z?UO#gL=mE*>k(F zT>lca2=FAXn2tQkOnotWBe?c{ZvU^1ji+;3F>2G`N!d!^zM7>g(4lrUBR%xKEo&NX z5FoxHZa^NzxN(*N9Az(I_qYOo?RLqhPdb-g!0gM0(ibVX0&U;~nM@e4%GE;%WS909 zvT(|yRUyhH`u5iRrpJ}>^TCW*iiO1G%Y*4J!ovV4gASRt0haUu!e;F{YzZarH$CVV zmY#}lTq)k{LmmktE)T7&tblcjAE~LSFEM;$tq0xf;Me!?%9mvhV*%S?p`j(bq{PJT zS!|K33m&Nb8FD5 zLtxnZlcT5IOh6N@2>vSJY;52on7Lgvwf$qhduDhsEZ}l}g??q9J~bpp#pq!!yK0I9 z=lfFz=$Nu_pb_dt>46NBGiasWmT+4FzS!2Ye%OoHsn2JNPb>ym&W${7{+Jy2mi}q_ zxB7yzlL-mb?C*>O_Bw<>uYy}-Vz=^5LRbRj|x?eE%M(-iHllXl?6nY25?@9Tg z`29K1&O$*qdeldh?`<0|hD%f*a=q!^6Vh+-9aTXx?{S`qyvhfE6JiQZFU*$&kmTXsVY0)FYdJkyu!{ zDXEl9>~Hkvy)Ti{)*ucq_Tko^T{e#5)kc(J3BVH~O1&~(wgDR$>m{hi&UgN&>|LM`|7C;pPW9}Cf%*5FFJ*pqcwXYg z=4A}N$zI&0KK`_&@;kvUX&Ws+j>5@rVuglD^a%DDo28$-oKUz3m_!iB!owM+gxDbm z7<8&664)f?~|~WRU8i} zO$jpR@VDtIuFCysN!4}rSitmQ|FX+4#n4Or`f)^mOtIrmx1F$UDa{7K##a!QQlNHx z1QoX4O{tb{Uoz%)$M3(NB|MIeKW6Ngl#oyr420C2nDeb5P`z*lEzwX(;xtzAnz zLZ3s*3T3Te&xi%)H~B-Q>(N_TpR8CXu%=5sjdiFBSG?E?8xsB}u#MwnCxPurV5jtU zwB148-KWcdQriONLa8?%8W>D=VYN9y;aYT+NFhe0_~TJ*$-8PsmCl&b=IM(W3v^@x z12%(ATY!s21$}^Heh@-MQV3PWqAOnIkFFR0scKJ*#Hr0$S~n^Fbg7(gbCQ7@a{~H$ zxW#aw529;&sC~P@VHsBtG?|Ry0q*aiI1I)E6T2G&RGVy0Ny)9PMqgiFu;?0!F{LFZ zCHYD9T_Nt56ctrEhDl1Q{R$5WF^5nQc;)It8~(;g?JHSMC4m z128F~DFCm@QICFibaa4@RcU|+=TXRPD|z3Pqq_~ok~uB9s`{jrJIm`qEZL~PZP>w7 zf;U4CKCFpL6#?+4!txLJWA^7R-Gmk-f43N{k!EY9x}-=pFQ3+96|o%qB~4OFijC?v z7x{LT+yi)I54V(kHauIQmW(1p?-|H7L-&3?3z(1*EpI->_QJN#yirqAD=zvt^kgfM zL#$o>6Ecd0KNm&5MnwqLEj5~k|Ck%q1c7o~VcZ(Q)x~t$!f$^3mj^G`<0t&r$(U4} zds&$d)oox7d`$+Eov3*RDai(@$_1#Q&3@gcfBqSspd!M6_3`v61pE%N^l_)}RS&lTerstAQj? zWlW>EzHsO3L^S@30_gZ1sMINnK?N8bfu z+zK}&|uZcu9(bVu)|B2&@w+_Kb>e^aeMd5|yq=mEvNcdU3f`p&= z=H)@rdPRtlIcLMalb8U?1OOkr8SzQYo=F0jiib9j|9G|g69Qe5vJCP6b!wY){(qfX zKR>@w>uXo9u7G4GtD4WDm(Wl5W6%k68C)@_ zD}YR9oc8>B0fA zP8@K9q&7+F7BepVX!=Mq^?!mRApBS*WG7|%s8KL>fEao$!&B=IR{^heN&D;6;@*j% z=&X=zCsi>@qRmsD;~IZ&`lK&i(lh_YeecboPB>WL@TXbP@&}o?X6|Aqmj5^rca6G- zStE767lK!*NatMGqdNzIMAsFNVe9TYF=wwvE(E9PfrgZa7_?Ohc!&=>b7-xD`^iD~ zMBai03RjF+dJQdZbU+`1a)TF;Pr?2SZ{Xo%IcPP5Lp}ox1)(TX(BEBJ+J)PRMBHDy zwLDE@O9#Rm&C!kjfod`>&SUpKj4%pZ#xXT#NxlCtHD-T1$7(hu5v46(T-Z-x@AF?U2i{$ve!Ya& zzB7o}Ipq(Sn}opJj(xcn0CNt1z#J4bku$3t{}9^3nDqzDdHR9@U;hfA6=n951TQYY zkv=GIa{VK%J!o_D!TSb)kGz3pfiC_aiHNHlzU$uuQ-S^be+MKWyxs>HKL4^DFM#_cV-QFO zT{ag z(moBWWLJM)(P0tp-kzB{c!7x|t?qYb9>W9ZWld{iT&xT$5g zGRlnidsLmSMA6(iTf1=@4t|rX(gkdUQkxJMcssKU7L*t9?dRcuvCn)#_*>XD>5JEe zUS|>UkbO+hHVdmVvBf{^FgxB=W~|w4r4GmwF@Y|}7~jyZ`(0f7Yy4C-JZR#&rBcx2%DTL%8PqT(PmG&YXw3;|r)nK? z8{5+wB<#!EhGC|Q%kF$_Z_7WmBca@XMDR+m{A388UN@?ZZLa+sHsb)ZB338D!DETf z+nhfN>Gu_DM5b;=Y)&Y8-Fwf={q8g#?wI@+${dZBw4C=}>&7+8;PD8XPma;9#Rf^7 zEtC;nr9304`+_m(2|2G9!tt5jaWqBRfSbJXWn)(O(-sB#eYVdczldcw=3lPhBM%Ny zf6n0^RZXEus)xtdUm)(CTzIp3W6AcGC+cf|g70tL60=d-J<7s`{#Ql6Pt)Z3R;UDk zTZQPLiR%Bw?Gs~3)gW2->lYJmXGHnst6<3I<}%;EW<9(C`^e|S!3XX~T6X_@)vm{P z??s*LaOGZr-A=Eu27|79srtYb4F)@8HUSvr|`Vl;U37dbZ(bik+AFG8~-}~wjrkG;#q0C^rz#&Sg}yUR4(oxg*u6Z zKIgWAU-j3^5H)$Xv0X3Pcm;kiNoL?@ zuE?Vsuk5Bc$I97)8I_LSU%-}6SG;?-XhU$neC5igFFUr&O-rr(ze7yH131CA6UzJl z;%SRw^4x4$9K2$6VY~d4Av>{jgq@PV-LW!{1{H7l!K}fuqR=Lnxl=m0lp)bqQ5};6 z(HuH06EddfUz)RWm^aQoG1-6cjoGM&%olMS?e^7xX8>KHU-8@8&$j)!(@$tW_W-#T z1z3R)JhE`Ezf!66$mOxr>mFM!x7Y2@|IY#oKqmiDemgJc&@aPJ+$T?%bObbUw<>Zx zvdKJuQp^To^%sT0a>xG{;&$v-D4D1y75!;-DeET1Zm>GVqVFe-u1{ZgNF!z9y4M?3 yw?|DcIl;Cg0GJx?HQxW>M4OTaclq|u-rR86g`OpIvw&ylF?hQAxvXA8{1em$IM`gUawp{#kgC~d~vD1zQT*#hkt!M z)|y#Gi2r(^>9p!$zx8)#iM#8>7q(tKjjzv6f1LtNhBmV9rK~7pBn%kfpA1;gE=s(a z7w&NuOrqZ1O>N@I%(@k$giddv^^By})=k-`zbvv8`X>80Qcf%VraJTCMBQ=2A$<4^ z7*wx9tveVTf72h9#6-yoW(8B%j&Q$@6805;N~I3eFp`l)lVvn!huhIP6K%z>;Z@V)PDCMo?%ClgLba2 z$B{>~0UDQRL_RVt3hC}0U2Z3z+P1CUALFB#)m5+Fy*o-a0MCwbW%stTnKB~kTe8oq z+?vZs`V=5vZoBAFJ_yqsd6Kidv}CQ2+@X0oMnGEZ#a)A0j&}VkriJkqS15-|AxrC^R5$^YaZyb?0f=EAkQ$KR*ZPEL6|7bSVLfa|#8NaK3Y*w|}! z?8K|2(E)XLQH#n5mcb&aBM<89<-PM9{QVOfw5_kjJl-3tAvym*fGX|wbbpRvui5kG zh9U*}Sle#9xT)+bgWS;B>>Zlivwv7BU;7Z(>|&)xYCz5}0>yG?!V*U%&ST0+a0>u)OeW zac;$S^m5=hLj4Vi#!ZpCZz26VjTNMmIg?*$CWh|~9-xxeV;XdQB1XNjruJ8z*QeVz zq|2NqNDuE`@IqTpU@*FQCNV#+F*AQS<{6I+57+AOhQZpn->BGP`(9!rP^jwF2&X#c z2ct?9$_`Bq#=CLniLdeA{z=Bt;r^Yk>QKJSdv`VDw&(!{Gm${%#8S6>i#@op9sB`R zgxq6In95EK*2fB_yMD07Aej%cva)h?xRzP#F-2mYOBzA@+smy^-Fon2KQ}iyazUtU z`nt>n>WsIYR&(inml&`TicgyrJkIQ>O0w5Ws^0WY%}J$PI$nV3>`XqVqx-;q5jUm? zC6lHcEqQjAJR~9&TD_|&0hPaZ(M9cv_)&3D(e(866%tzui?p6O%OXCeBr!2D^V=;> zEhL#Ej!y#JeCrWTQU7^oDp%PVWA+vj=pE%fqVMl~UJ5*{Ji_EjMR%|^2eVecC`p;sSpadCMrkETD3^43tX^6h?`c%O|Y>E|1= zclR+eCCz;yQ!-i8-?HVxZ5GB2ILr&_Dv4|3+SBL1(cbJ@H^BLht#eVef3f7 z=i{8JuV13Oq7?%+KL@-Q*IdssJ=EzUOQXw`%WIVKI+#r3`17kz(pKH0gSu}T^9U<3 zlf6gfcW1-}`#M`nUyQF-S5`8a-c(zE)5dB(Kk+1-*4)8C^+&BN$=uG49?B?D)i^Cp zY)#%G=I^hMeio(-Ee^6Q=qkk=>@-#%txFw0b__dQAO5_yi}gIxtbck2SjutIFFOWj zRw?5tKaD7{xl9Lb+eZ{vckQH`D+wYAra=2(XQxC)=hR;I_|C1ekz8L#1JujQ>+d&i zYeu4q&Ur(hgcSlSX)oV@N_1b{jJ=g|F_5Lg`8w}JBvzN`{!SNhJ30A-DJIQ_*C07> z>rsQrcPLeT>$Jr%GoGJ{haKWESIOE?Z|EtHRI+Eh*t6iPzE3osb@rDvH)ypD zp1Yf>ps2`2+C1F%O>D;^d$R4Kn>7jO^?`<+fi8(QtHTl(X2fM6>t=3#b5*UTrY@c| zAP0dX5naDz(tv8pqH77(E*m#bbzXf<#y@!4faFeB$&MR2Y4t_7=^GW{gAcP!t}^O0 z!^37iGSV4&5k;$Jf8n6~*d0Se6%nTXrg}1vMO2K?(I{;1z~%Ng+*5LffmMzm^MX)& z&+(TZU1$*c7P!*_J1H2dKU?Fd2BEK?-Whc^>-_Gqw5d?^R{W@5TC+l}C)t@PNN^`b zNa~kWo5})aRe9Ao z%_lQw15HnfVlJCBi_7_wiHelqU0YG9F0uPQwSyVJa(8!<5WENg*$bYQ;;MhBZJ@wv2AVKe0;za>LeLz z<4>C`dx>rP!}7vl+cUk@`2F&4N-tIE9=lyF)v=l6#- zuav`*3Cpw@^V1gzE!aNBkr@6w70p&uRMZ`v-66T3-7}|mKzq@DwoToO9&;nt*C%7O zys-ADD1ZI%cr9}E-Z9O~W`&uVFfecR{#^M51qCG~JEPB+C44rT#*59s>hTBP3fb;Z zcY0Fc{?GXf&n4(32IF@Ej&~D|g{o-3?RnN%POR4t4-b#GT|E3)O0(F|GVoAmhK=Q* zbMPGagrv9n_V;Is{n61S)79exm6Pm-zVd401{?5-Hn0NAZ&rlk6jqOJhe_@WCSR4;W-Dq%u;}54{YAUw!XA#z0 z*^sQmpj{O&Rlw_>=a&(qz~lw2#mPnIO)NCHBIbW$>Gfj`2C90LYFmn36@bls{?Lnl zICTKm%9Y!~H=^O~Or3}Gd8ATQ^=-MZ`)eGLx+PCC;Sx0C6JL>hoOg0;@O_e)yrR>+ zJ3BiySYPL2%|CM_H_Z>YQ*4ceVEwO{H1s|7nvUuBJ0Iv!;GSoZ=YDuVMCm`f!1K$> z=yFlU`7iqmL!QQvQL6o1 zAvAG0VLKo#m=Aj;wI2zM3|P5;xY9V9Rms63k$I)`YJfsj@}7@hJqm@&&dEt<$*ZiW z@b&Vt!5MZ-Lz&S$g3|265vlf%H->g`?X#9k%0I8^T;E^#HInfj6X&Ff?Q#+t3fTFz z91^VM#Qc27e~1P0e46#}BXR*3v29|1;B%a@Kl$}fyU3%(CTM3u2r0=f{p=@ku5Ec=!oxE`2Vcp|MBjC%r26+R`3zikTbfaC1s~vnN6Kc-~ zb-WeHmGYmu1(`b7Uub}fL^Amu&$d0P4vGG~#GJ%@P)~d~KPQsZ&`93KoFx0- zfPW9NcEB_-jPzQdf~D^7DzdXnwgntzOcp+`?i~ml3C+Y_YLOVuBp=D9K+(z zHCtOnj+0ksujS9S)k?=L$Q9KlLa?4mrE0un?I`UZ8g1I!0i4U+ME)suGMF^C zc<_5h$J={H0(r#VT##(%1M%o|&WxnoGwrWE3VQ;N8zLAtFi-0?aRYNFv44fjl+wZS zuU}6u2UuFxEpR!GRv;nKudyEPAG(Y$X`)~953U*&?~MiA>18@M}FV;T{rOclU37cD4tL6;~&XeBpCgv>5fTqr?5R1ajM8_meRH8Jr`J z@VY4j%?djF*R2wt`W^Mpue zHU08a)0yA>*j zD97hVP&MD>YVkD>cPhmjm9HFlULTnpk42C;<7C{b>}qNvDQqO|ukpK5drR)nv){X` zn${d&(rvSK;JD{euDZ@W@uCw#g%cH;a6g`UJf<@mpB>$2m)(Y2S3qX6rzrHhz7~Vfm@v7;z0a?dTSaocVj3=%sMe~0JBB&g z+59SR?#^`_<scX~q zu@!WoUF9mK$cl0GoBbj~6_k>aq5yA0Wwy-eV(pE&X7)NY!8sG53}rj^1=i4rA0`~Q zgCN6G?)NTw)G*}oeOk3E22(L>ba}?^>X>aqgX2`ErJw8fhx+80$CE`rDj9YW@eG}% zqWt<|TFzX$?6{O#1v|T|kvBu8mWG=mse4~wbzU?ZB&Qle1oWktgf%tNT5h{&FEPJ8 z_zWHmb|DU?{iU3yy4eT!^)ZrxMiCM1vh6yl_}Wey8uo`J*VFo(IMse=NW}TR&yw(+ z){$WZ%TyLIdht~By~YoQ&hgnZ6pT|@Ppzm0V#_;NrCJ`7h#Hcy+rObH7CjiKJrvoN z0cz!HKj&Eg_{FmuYRU`Wd|D`PQZ9HFxjZC#KjGWtAc6?d4l6kU5hOJc7$t;E@!OX8TIoL*)pQJUXfCk=A;YERxq48Ha!T_=w=+ zmNtpxRm#zTs$61~>NcwUN;GSvlHWX}S%_?7z4%ohvhClm9DbAMp3Ohr^}X0)EnG1K#N^%q!ub!- z=Qmb8%12V`%RJmaz4>Qv>#i8t<0tn$Hf+DXr-bVE8iI-+N+g||APBXQX|7V+k}Wyepv ze{CqU@9&62){E;Ny$|kCvn=mJVgk02&O@82NDQ38oI+kKXDwlEEThsu;8@95qjG!z z?}%^M0!RE>UD*@vh)u`eK+x61z(BAcNiV{_4{%9;i-4-Y3lZy#meGf4Cda6mpy4haN*9B|-{PR@%$bz!v zxjbGLQA@otj;`kliwjqPC^Upc~Gh`&a?9*P=f*lDu1 zkm~q~H8I&RgX^wS3HRMtcb{sBX}Ay^65{luL?&HIP_UbSe7ZdWDa5@uXV7V6qbP>P zbk?W@;qKnDhUS@6a#o*1=ipF}{91*BJtczLekGxqq9wfculsX&s}y+)_emtIDA`=g zzS`lQ1$f-+#p;GD@sO;~&NEmh&RGIq69#c#SJ&lxO(^}_iCVV833D$C%gToAzO@`% zDgq~+P3nfNE5o)0ITY+mi6z)d?vB>ie?1p1vC}muGaM+wYov#JwnE6~@C>eWQ>u|- zc_tnv3OJjGhliYgt5Zv0H6Ev_Wkl~J`{exXr03#}k`r7r8BSaTRZ;WS_8vZXliX%Y z$i9zr7xmpMJk+X4oBEo%Di-lGeFP4x>>qCavSuAz`^i;DHw{qFp7J#a(rYCQBT(2n zh%**d%F)L4dinSmEEHckfo*K%PfOY}&u)RFgsxEfCNBp&l;x45}uo8A2tU2+8`L;(Z?8?_vnBOE+ zjl0gSo*^ozJ+Gx!Vx_iP)$g^>7-8DKM%Jrfi#5n#DF-YpQ5WTX$u+C4i39j$cSZjL zHP$*qjtk(CSzlpa>-8cdR3tga#f?XjWmlanqP+jGTdl2q^Vnw-<%D&U%Lr59}tigSH6rYf9Y)x54;(wj@f z<7mWIz-8ACahCEjTH+jNrxwY*GDx#IbrEg#pba9k!p>;yLHm>oo~SwW9gM@ST|d|B z@e=%-3E|J**Tl4eN4f=3KG0mHj%lz)jA+_po$H^JW(|}nSzwwRGx_k3XO0yhF)!${ zf_4%>0Vdzedo_+p@`B5C$UXg&tXL&KN2@gM9DBlf6HW03j@z%U zJzT=ivYHn?-4in|8a}$$&7WS;(Wu8f`2)NGMfMBmLyn5@ux3omJl$li<&zrMu#9ne zVbDeg+5)fR+X`v8ip6U{8zwAc&ng_Wd4Nzq1t7Qjj}G`7SA5Q6!-Q zmMN~%L9xyP=M3}5zdnDC&wi;8VraGE;mw1W4=*cY=UnpcugPPJoqi^wP#2YF3|xb; zkK-VX7YmwoJii0S{O#Mle9_7`*YdRZ600X~z#tr?0Wk=^8Ez^#_S^JDbYLq)#*5vs zqDmiD;7yUB2g!MX_n0L-i8PLmj+)DGM>UY7!Vp0WWsodIHCD=_ZtczU4<`>+e%0pZ z=YMtMZP%A@VVH%W^Wx+_ zqR?3*V*(wor@6zd#|N8IKbj2a>X6zAJWlj}FP-kgEbb-Ub^B9qdFvtgEZ*lP6Eov*xD|SV)<;=Y7 zzB{U@#CzTPN1oKtYWd{XjYvijN7Qicxq&>>j1H4ZA8r5jmKd(p>X48S`2z$3F%OB1 zh(Mk}+-WZrb-@aBmJ*{&-TbFwbj>MmII)GK3r`m1`l`I zFvh_;w3z4ZKM(h}r$iXLbv9;a-!ND@rql2h2sG(OWhlg;07`DA7tK=4eJA9$^?_eS zm@}(2CnpC)AaZ0*FqoStx@{}n9RspOB{}~mOJg8^A@5%8MS*j>!oRm6q4Lji!qUm+%V#Gu0wlh`&1@6T9y)O zIzR9Hr>2wQYR%w3zkrG&3>G;!BEyM0fCs-Udq5SS-~L zk(#fB_5KKoO8OE77u|xf-nKiL7{gOSgR>QQXAvQ#mZV+HmOs4MGNV$DB+frn+0F$k zcDF@L#sHkwqR&-8+c|h2{}b@1kiNCe6BR~F=X=cyyG)>zolunCKrF;@wm}{lx{0EH zffXlk;x8KNk#FDXTzpr2!MgbNNvUL-SQJAX-6x&p#*T-X)Ym4zWZt%qz+-5#*)~}( zdNH}IKzyNtHTkv`0N|a-kQKq{Tlqr?KWg^-bUt(0z+$h%uZXS_q0#ty%B|cxp<;Sd z^R$?T{&T6fQ@|Mn8XImDn;J-y$8y)kh%AMg%?;dloyw%)pw9gfQ?~!>qQ46ppg{;U zs9hp7P=^0g%>d(h}lJ&-Ewudjl|8GwIZA;^?Qwhh@ZW@ z@b#wDAS^dPZh#lw;ADbnAmE7hvjt#47YL8w@z9nmLHnbUrNt|5rP;Pqgjx@i=8u{N z8hwV+^D?w-Zq{Ik;E^cq%#Lx==wBtR#M9dSsD_7`kB{CgcBF5^PN!zLEO>lnJmWWdbnOl;FBU$d(^#J?e(0Dc@#M z9Eco}zbugt2-yd#q;*^?*@xJ#<91R z=<$Oi;Q0%+@h}5hy~gN&_3Eu;Ptaj-AA59iCp_Udwlj`a7OPhV)a&gRKC%1G0 z1LIl|uX#|(OZM&L0id8*A&TlatC`*U62FkaSWzp2xo3}`eAk+HSvmPK@gYOj*gPaQ z-5p|fGEFjIWjB=gy?f?tOrc2_Jb|FoONwVzCi9YgB3vDE9Z%a?I5nemWBZk%PEO0C zmCsMYfCV?v5y$O~jou~Qk1v7W;lBz9`HE_P5}aDgR53S>5EXpeutsyEK!PvMcb|IGKak!_Kay15T~s$l|;5619GC zAl_$VGSNNny)s68<_6O^Je;@Vj^jv~Jb6)ZF~EoTtIS+V#fo2i)0~@^mk~Ln!2)pG zK<3mtvd^v+r?8|p~_Cw z`TvdMy^P5NewrP)6J*e5O!(5PsCh6>;e>WKvXjak7^iuZ>uP4?Ke7zrk37f!q>V4J zm))>8_VpcvM+zuH49d zft09jEgy00+4_0^x*PVisN&Q4w(x;NT@{n%J)`$+(3?4$YK05TBrfuVB{_?|!xfEpDV&RK;$ABcABY(esn=QIHCeDWJ{{Vc16 z{-E13d%uYC-A_N)ZXuKJ&+L6pC3Vvw6W!0laDb2&S(#9xURol+nA`okVcj8$&%+`YW+NY-=hX*yi^|2HNgVPoT=>-iEDcy0z#kO&o#Ax@ISn-`t!L&7T+3@UC z4r<1Mi1oV{0oVhd9CL-HY#5Qs2Vo;wSy{MpG-7XqYsN1b;6@v8W&}9XD>az6Dj~Zj zSEhDTp4ns(d;1G9n(GwW`&n)f!^2PL zA^up-<8)7B_rMSu`WSFs2fPPr9!fD^7M&xN;u7T40?_X?h!mo~NpFr$Et5KN3AX5x zhz_5@AIpKqj9M*`CV^uFI7m1qS3f#3JPZKf=;ClO2L}fsE3xvr{%(eb-in6JEtdpX zJe7VFXC=N`S5zdNVD9a$FHZNF{UEQYY5u%>XDJb(M-*q}Fm7|4thnpL@vqtt3k!>c zgaj=_>fI^#?$q8ETQ!$yIo=k0*6{*c4<-z*+W&#U!`Z2T=6UQ^#^<$J4u|7HCJ@y#dtP7_2`6Z6YvIbv%a3#|QR{7ODl!COpaSA0TeMID{pT9# z@16@1UMnwJ9G#s7a+_w?iqyn?c~-TQa}twBX($6CkzhRW@oN<~`&@Ov^FzVZKb#Sl zl2T7h82m1qM85x4BHtkceP>s-^me`Lu&qfHU@+?0cpLQgG2RAE6yg*_W;6j8VFv+D z8!Gn0hj7407R0vdf+bQu8NJ5`{Th31+2-oMeSUIY?mO?C-)IQD7c*n1H43?~v*WcX z@m?oO-i3vUsoAM&t%Yk<6INSWE8_SgS(ufTb?)_$7Cs*+3j}}~T0e;k^dRbiTwrRG zEAc-R_1l{7%UVm&%{2mU0ZEJ#g=+pRh*(nh)&2#FM7K76hxQ+m4q`!Mze=6a-EJ*3 zQUf$&lgm0sL8AOkrF!JEsB>=9H7B$RXt^FZ;vXB}k9)IjqM?*uwrlWVhHP1WKH}{h zWf>$EELI_~D)k1C$giqJc%Jljt@KsN?Rx!FLp1Z7K5H3;doLK&@uie`Q?eycOL6eJ{z6Jx%=tw{>`Ngjsp5DrWCy@d`K-=I8x@&x{1XJJpkkMnRA7(wu*LD@1<&0qKR5bK+sAtNadVu-topVbaYS6KG+MA7sVeO;`i2;d03V5tdZ%wfioJw zUxoZZz9D&7G=>RnsORdnmG_YMgUCWbkR$sB!T~I?>W_?To`Ef!*Xkp(OtG?2L~jWJZ!l$v7k0Z+j#9h=N7?ciznGfPS(0IZ ztf7sHUNq!^7k%uzL2?~lGm3&hZ!#&j>ClU45)geVKk}5VhyVB=M(Q^@>4dz(8Ugs# zHkJU3fr~>R`i6!Hs`(Wa+$W$!7CPG|4QBpqhvj1KmX0(&6#AiH*!52+^uNLp5;VZl z^F4z%fKIu_8s)(%Zr*A) zm|bGMd_LT~%jsGrWQ{cjd3xzqY`wyKr-$YoB7rT&c@B2O8o~xv(FT4ByhXiP$>|7s$3+vkx zM0%KfCmP82Y-v~aHgOw+S-N>GP9~);Y)9KGD_`FLDz7Oqlb8Tj6sq|C&B3Q1HNVT+rVXDH{w-Anxh!5} ztilfjt9@*TABvEv_PRPcOQV&_BhlVp71AAT$mCF*F_GnsOx$lvdUBQW26`g6MG_Me zY4^p_AsLUdo_@e6O@eZUkQ-K|RvnF|de^LA*2Msb7 z7M8H+L`!bdLU?xAeP&WPTw1Jcjc#yQM<@huNfazg2}JuL6zk(O8}6IDhBV zHtx>=<+eRdoenI|N$!rirSm*m%&U6ny!)Am#Vc|rSsGr28C`de&6zCAXvDn#yQs_w zkie@rkqDfo+t=~UK+*`@_4ogzuSq4mnSp(Io&63l)+hZ<{e%HogY@WJD!yU)WtW2y zj|>?CM}$Wq5Rj0;s=@K=?Mum3?zxN)M9$LPfmD!rT+U)fZP_KRCl=lztQNvHw5? zZziMsn-^~Ca{Rj|lF6v@=K4*;|C~NYQKX4LA{;JTf@z`!h8>7LqvXhjzck^MlK&p& z5}tinbwP9yg9MPk4E9-|5)+Gt7p*Z6At6jfMMZhJp$E!(I0=DT$G^Wt8cM$Lb_*alarVd zhKu*Zn`8$NQ#SFZn$5TB#fWUca{?jYAY{0TdDUCw>&Iu#H%ME`ciK$@- zt33f05l+r@R~62=%gz1=)xYS)S%;*M;9!P3pFb9kzqz6!jp)l0xwdffXi{LU8}?RK zmG!%ikQklZ5-0&-XA(K|J`YSK1Cj>5#(fnpdfkw9dKtJo1iz30sYwKwkLFjv`2;0n z3X_vB^BA~q8Y79Bf=Oim7yMliV+bY9J7(4|~`U=;EK)=!TPW^H6<&w#H z(KC+8%Aa4G@AjEn_#dJHU<`*2;deXfMK6%bLJcogHSaw^yqd=~(YO-wh7bM=>uYOk zzka3UI6VR$*0qgj7KR`e(f`S*nOy$%$2a={YQ9s;n?9=~Yc{RNCuIqs+x_zJaXfyj zO&BnZ-cfEvtz&WAi;{)-@8Hp)jNjMtavW6tyqvM*zXfud5`|LoF^W>Q`+TF9r_{z_ zFj!}vLC%MYB&(H@%d^*HW~hJ7xBc-Vj{6)axZhq@Jy8hn>LX6IECy0aMxA)zc6%cO z34B@p`bSwKMAsCg{y$nbnVD-32*_a&znSGR~3 zsUItO1o%25j8H;uZRsLpipx_gLGV=skFqWF1T`xS`MhwEbjSP>*Vv| zp@!?($53WKRBWM~BQ+l-58coPyhzB;66ZkwPjvB5e*JI!uK5;?h|_2ga3|51ehbiu z1qMMSU}=m{377)oyy(I!xrwiD!=D`=`R%p`7fwluil&kxg)Y=bbK>JFNYG~?N>JGY zPIZoauAxC8qsJNCAEX2Q?O5#F+xCAY4G$Z2^B&^o_4kbEzjMb|menu+1^icci!SA$ zwC6v8%;8D*Uzr0Cf#qd@eL+xlywL^s0y4JzY#=yZO>ZsqOH*?JH#2}_4McnvCy2Qy zW#zqneYw?ov7d51yO?%6^@-3_;5^2f1eig8@V4^9*$;mLpXmeM1Xt1w4V1J_Sn4st z0FmN)YW5mcDi*af8c=V!l{+Kf{53y)jzsll9SuL&2;mJjLJS=-k_BOr(lfVJ(8$%Y zV|X*pI4SI%w`cGd*Wc2s^KR3-qFkcu6Hdp?CpF$#V|BRZU-BVfA6DeZdH!s=p8|7U z_UR@!fMC*7`mTyHW}N(9KK;~^n=4^yq;AhTv|+B<0<{A#M=&SfwgzT`(9x2lv7+wHVo9bwE9apPE=Du zK>5WBEbY%;yqroKp}i4gK2heJ82l2D6p*P0>H_5PqPaWR-p1ykv#p?JlK)f%W#M0% zF>t1OZ)d${^u6!*Y)Yz{YO_Y@M1>{B91KS}pgS5xcn@3(#eb_s;doazfYrlHq2PN5K`BlKXu?oJhUd| zyYmd#2C$=#Q}g|&3N-`3oZ25@QBCstWnWB)J4*q2l06X=EvXinFLxhNYcn5yT&(s| zbR$_b3{^D13xlL^J*`|BnbIsy#l!8^(esIRex9BK$MA61L?rS~lfLmuvV9}R)mn(; z-qo}FZ!7U}{~!-9Zvzdz@o0Z&NFH0FU1lFuZ~6GIWr35DW}@!L-%=kicXI^st*a2@ z^I6Q(pZOer0nl_WN3r$`S6H-`Pd3yE;BAmS%41}9+UN_AqX6a*g~z7v@_{VHuQBoa zSB~EIVFlnLWKc>%YA>Ao?ejPKv<35M@Uom2;0u5dylfq0Cni7aS`(Jty!*oQEDu>RzHt zzppG^{-DxC{ph_8i^jy?b&?;I&trp$YZpbdldILPDc@<=2hv6q8DJy11SL;bSPLsy zO?8L-TJIYh8^`4qVe>w8BXH`7I}d^6)IrLYzjv)sPo53xju*^;wO=mkdZnWI%7~+` zQ*W}OsT}7h?1Q|NO`qbmD=DtTpl2A^6_nV5?6i&$b{sz+2Lvb;fWSB$ zN03-MULni74S=IJcp0zS2Hj76NSVLJ#FTUOmQx066GbiubQT5T;1h-ssUz}Ragt4C zNjC5SC@sL8okn7Crx()t$N`5S!v-#xNs*o;)%Xn*J-7NrqRU^7X8fe}749nWdM%pM zl=~Sk<^V+2WU72;DVQ^Z9n6R#*m8m=9Y-KeN~d;{tq+rWwO~f~`zXGE zlRoJ#yV;5ZN4LP%6Yra{Ga6_4CNu@hYg*2<$$0QDpHLBkyyMQC<5%~vhfz#z_fM$E zHCj9sNoC|74FaUY73eAPq@!F-CIJjheu=ca7y^dI4Q?m<`z>#Ume=e(xB^JjAvmho zi3~d-Q4HUBf@#646$jf<{(kN1X+`y&uNKBc0W5j@_Y3d&>>yAGa1|De*8-Rhf2 zV9WPe6;fHPx+&ZPS45=+v`TiEPK)r8lbf56;%slXZlvRJi_nflTtl z<#;A8S3`Y+Pze9N4@djsT!~H>uaFBKUt8rWRjqF)B_f(kbs5L)=C{tQSHYCuwc}pf zCNeS72-RUk>Ki+@+Jz|MOnkRq^FjTBP9@5#?W8^HTjy)Bd4>!N-3^PJJdy|FCZ5W= zfSrk%$&HmHXG>CTiNDbe<$DV;8rtqSgf%EO;d)G0#hbj%A>_AAu5mRrQxOrt(wxr? zgi*=G=B(`c^7o9LS1sDX(6cmGJdhS1M3K@NNxt0j*~o2Ag(=4mJe z5mCiS^IGE0MbMZ*&Va<@-%+#brpH+~}p9Y4jHnJ*0 z+@|A&TlBKrO6$JPL508Dn8c?>OR^u9tI7OCFPNxvdGG)HrfzH;wHuZD zy{I>-pC&V&Fp9I6zTqs>*Olq4->*jHwicyt74lj|N34L;q@Rtw1(W{UG2lSwgz Ws~i53?gyU@(Ia^^x!eb4ul_#{=7CKB literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_70.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_70.txt new file mode 100644 index 00000000..74c32eb4 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_70.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,2,2] [3,0,2,0,3,2] +[1,1,0,2,2,2] +[0,2,-1,3,0,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_71.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_71.png new file mode 100644 index 0000000000000000000000000000000000000000..01edf634a75c60c17cb24a400f31344347d676ea GIT binary patch literal 17349 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 D4e2sb literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_73.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_73.txt new file mode 100644 index 00000000..4184a8da --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_73.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,2] [2,0,2,2,3,1] [3,0,2,0,3,1] +[3,1,3,2,4,2] +[0,2,-1,2,0,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,0,4,1,4] [3,3,4,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_74.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_74.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2a99897b93721e0d393a28bfe29a197620369a GIT binary patch literal 17447 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

PC`qqX!7*j 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 I%6FgqKi0BMUjP6A literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.txt new file mode 100644 index 00000000..c0b1a746 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_174.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,1,3] [3,1,2,2,4,2] +[0,2,-1,3,0,4] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.png new file mode 100644 index 0000000000000000000000000000000000000000..c984bfff39faeb6ad24059e41a248c829f1bf87c GIT binary patch literal 15877 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 T?gIE7HI1(3jcX<9cc1<*eJ=si literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.txt new file mode 100644 index 00000000..3c9062ac --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_175.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,3,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,4] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb40ee665ee0c73b0d439617c5451f1d7822d5a GIT binary patch literal 16920 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.txt new file mode 100644 index 00000000..1429d3d8 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_176.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,3,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,4] [2,2,1,3,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.png new file mode 100644 index 0000000000000000000000000000000000000000..e182bc1862bfb144f8ca2cd3c27b6d1b42166635 GIT binary patch literal 16155 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.txt new file mode 100644 index 00000000..f44e2d21 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_177.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,3] +[0,2,-1,3,1,3] [2,2,1,3,2,4] +[1,3,0,4,1,4] [3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_178.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_178.png new file mode 100644 index 0000000000000000000000000000000000000000..0a41ea95d3187dff3f5013da116a4641d487e351 GIT binary patch literal 16885 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 D24IFS literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_179.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_179.txt new file mode 100644 index 00000000..37ea2431 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_179.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,3] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[1,3,0,4,1,4] [3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.png new file mode 100644 index 0000000000000000000000000000000000000000..77deb5fd10a60d13fc1fdadb782a283924c9f845 GIT binary patch literal 19779 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 kmdKI;Vst0D-Ht_W%F@ literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.txt new file mode 100644 index 00000000..54edbe0e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_18.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,2,2,4,2] +[0,2,-1,3,0,3] [2,2,1,3,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.png new file mode 100644 index 0000000000000000000000000000000000000000..df4744f5e7e00008097ee2bb525b8f7c4a4af6ef GIT binary patch literal 16902 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.txt new file mode 100644 index 00000000..ab3130d2 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_180.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,3,3] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,1,2,2,4] +[1,3,0,4,1,4] [3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.png new file mode 100644 index 0000000000000000000000000000000000000000..585eb221ab18c740ae7a1f4d609a966ec0d45ea5 GIT binary patch literal 17083 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 AxBvhE literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.txt new file mode 100644 index 00000000..a7083d7b --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_181.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[1,1,0,2,1,3] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [2,2,1,3,2,4] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,3,5,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_182.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_182.png new file mode 100644 index 0000000000000000000000000000000000000000..8cfbbbb73c015b40124939b6fa09d129a1339fd7 GIT binary patch literal 17458 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_184.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_184.txt new file mode 100644 index 00000000..2497ecf3 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_184.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [3,1,2,2,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_185.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_185.png new file mode 100644 index 0000000000000000000000000000000000000000..b40cbb9d50ab41fb5d802c2aaa9475021a87538e GIT binary patch literal 17107 zcmcJ%c|6qL|M#yHm8}igL&%aP`<8u+2$9JaCi{}Tu_hs8ogzykB-z4@CHt1l5EHT! z*>@WI{yQ`3{ds?{@Ar@2bzQgXc57}mGv}PwIj`3_&*lDjPT_a8)hN!!R z)*~W1@eThva}s>gS3%WDM5LIkp{#K4N$S#DQ(I`?>lIBS5jxu!apv)?=as(rpFJV_ z2KGBLDeU3N6LdJY(Mjc`G@O01EOCcf+3eeSQ}V`-8^7jX ziLjSmkCo{9p+0{`R~?x@|0y9a>o#gdZ)rKxbY{O0Jl6=V#JU6Y{FVF9|x46!4NcG6}?Ee1k`VbXH z#ZtS`YplV8pd_*@`R+1k^V{!xM+fCWPN(h1mQW14lCa2-JcpK-0J>ljYg1c>NuB!b z!rVQdSZL}q+&Z;i_f|g`b>uqoc1|WTb6UYw?#ZgWtiADr2N|x^{Sq3@EKE$g=OgCm zRQQj6vm7ZF(Yg=;iq6QPzkvX<1CclL|RS(x(;_vuAXd+ulc!w|{5M8z6rzI1qlfX})K7^y2}$ zr21f5SgBaSq2Us|h@`Oh);E^4L~Cq}bZkOmqFowWzIz6*+44)}mtg^Q0$btx_u-eK zIbeENVlW{g9t&h)STf&1EDHKKwq}s7Kw5Xt(})~xog_?<=Z#% z0_j_~KJiz3E+p)_&>d|q4Gr9~3<&rsx1COxEE~)1fXlx9W)b?)*#BUp@Sxqd=5Wa6 zDB97|V?9t$jwIA?KQnJF%;^2Is6OR)-<@3MlhNTMc(mLa+G&5a7`fv6dw>`6qI+?;u>SB{yQ9)+fv zf=|H0j_?d*5M3=w)#24y8_uZc;NUPcG$cZPlBG^VZ{Z-o+$`R((B(6+hS`A8g9q~) zp`XxMOe){W+d1^8;T(qs>vi3UhMq!Rzk9H?^WJ+1&br+m7PxPO2gfc9Hx18DlY1T7 z>DpzZKs=_^`fIH`5N$Yu^#`!{AL)gYwq%NmbTDeq+-% zZf-YW1?59d8-pd)$*f!YGMU$%pthmYT{+1ZpAN<8u;>Qq6|YIBealsnrybHvgW`Ov z>=O1guEg9oO4^j9Z{a?@4QYVSMNfRcr5VJ+`i?HSjfgYlRsTWzx5q#DBAC_rMKZpA z{pz7i^F5!a{p(WFDK0W%F=#?w5vnXk zCD+U>v$Ejs)LbJs7bdqat=z!^+5X9%ogjT9yN>N9n{b39`6lNAtPT^Il5lh6LuN_{B@~G&@6Z4JN|ECaz5HMfO!BOX>Kd3R;5&!dEHj=Qw#U+qedv`+Zq? zbHY&OwQq50H2Q_(E#wIvOQdB#;l=t&o;ud|ieS8{kVN1MR6# znY|b2;@Z`EZ)a&4u2#>yvVu0Oi7_dwLf2OH87b77#;-tD8P)OE{FN<1A065(gdCHM zJrDXc>9~q8Qbd9d?pIlFvZaKjjoV7l)3l(U&HP<|=VKAR=(y9^pyyy_%mERZzif>d z*~t*ZXTjZ**}ok2d%HXa`%}8gd?+)mqv~ykM~g7TP}}1QjaoYw7Z)(}3=9n2-Q5L- zdBB!vkG~3QB)up?da~VmEV~~&mByb|z4Jwm+v3>J`_SjPoYYdux5$e4rn}bMtb!Ua zSuL)t8scVz&4-|IlJ>Wxq%zWRV-3XKm&1SgpOeJA zwb}fBk6I`5#dw}tvZkh{$fuJGT;cd>pRK-QxV+UFR95xH$_ThQ~bzA9%@m=8@4D%lAoNs z-n&19-^^>?o15tw47-0HZhzqN!-!r^W%k%kmpWP&Wq!w%1Z88ZLm+yi%UmLavT(B|RRl@qXYl4PZR}_LTc{baXj2lf4DT?(XjQcFSExKRqH?`B>;T#}hWz*0v+SiF&e% zD7jyOwkA79lw)okcJ}PFcZ4x{hcg~62Nv#^i}n99P#2o%`NtW+m8U<#92_Fg?XIrg zH8s-TG^`xq7d8QD0bCh*D*Dd_9W>rZS-#mQapC9E{r+F3nMWa^c&! zVmR|Q@6x-s-i1szdh(wo)*ZROvGCtHOhkM=%f8U-=jou(nG8%i6p}~Q6ErD7DQa8# z;HN;!=iaTYEm~SySzE`TKRdRy<*^qwWXH<6T21|5yIn-GTcD&ZFJ8U{L?$uy~i!`l$|~?Zy+Sjda~kje+pk`(lVO#oc#XR%I@o zwx?`zFB6w5*^`&P@Ncg${glK@_FNyM`udm-8IDo47$!z6*WCGKxk| zaL@D$qGDnR!Y_UWS1F2wrQ5BtW0@Z!r{JxIGEthYMs?&gaVo8DY01erKJKaYq*_*c z4d~>6;x_kYW^JKPDfP{E?5#cQ3u@V@J5r9;?HsC`vAM&tQEip-4X$7;YqkZv9@U2=r(8X-4GEI!>!p)U!jAQo&V!shSKAc ztaHC6*z)rtS7oV|6MW+vQgdB{COf|g-NZSvF5WRDmyRrX{TvaWTg;KH`I0Y`*DS%e z@qtdyXQP`Agt20I-sIm+Z9dQ#=gy(0)fQ`?Ql+`wtY5)ZxN$Fvj4Q=DIxfzJEawH@ zWoc|{-S6Ma`gVq9PITxzq&ok}&UnW2QbcYs<;~-n#m>LUzajxHIf?Z+eK_komy|Y{ zycEtyLaj4}*oS0xc7nqIhtY70y1#rWGo%6B)3qw$lKef3rjMKcNJFM!jvs`%-`Kyb zcFBRaOfvst3Fd()?liU`MkXaZp9;8}@G@#LCc}GuP$!0+XES4Jh<4>(Qt;@M`y<{` z^77atX`=la-2dL)aoa}6<_BTa1|kq?wc0Vs?Km6ZxQzzj=7P#BQB4u8N%^Jh=BteR zXjBqY+I;Z<$MeQ!VDp2{C@@7B3K~sf)|Y&W?^+Iy&VK3cRYAB!1sxj+ zxydX9!!cj03kz?2VPf4H`Qkfn`5Q~l=w*c3wu&$yM*aQ<A5Aj zw?ikHUoyDNQh9d5c+ap#2FkpTa9sD1_12RcY?6|def#E3|IkoooWKove`)hvbZ2th z%r_YS1u;$rl<{uP`O)>|sssNe_dF&sb<}pYa$e}8OuQS^7@h4p%)h%CmzE}%sQ>HM z-X`kW3I6#Hl<%+4;n`s%OwLr2ErBq!QWsCtEy>(V;5i=IJJ zQ5eUEiJj@P0C{M(;h$6|@#_XBd*1X5N3?$rDlM-tj^*Y6S6v|6mOJ~n+6upuv-2)C zy3@$MoZUuK;I(`^FE6i#2&uKwvQno)Ugce;eUE#*TXkKk(Y-HaBG+MML0wv6ixft5 z0nELF7NHyaz3#e`j6=;rLhn)aGSvoqUr@sb-wrj*r>`x(R9HNbBcm{F0fQxNa!2Us zDnNS~6DTT(rz9CZQXYbYNLFZ3od#yunP{W=@fl{hr=wA8bH1fRc%qQj1$mR|QmOgg z;rcU|AGMu%rlu!+OE>LrTv}UO3-UEuuUdQ_sz^Hc=?4gD9L-H0g+^bcq50a<(i6hY z&c4H5broA0D^rJSCx`4PiCk3dO_P&)O3-fqmz^F^QI;x zPm4PPP4iw=KdxF*Q68`2;X@=_hmAns(TrfzF77};^8%wLbGyZW#9ng`VzHaWWR!eC zXrM#-K9>`S?Uf}uCjtWl%||Ta78e&w9uz2>SCQjvDZhPfXb38y@=TZ7W@HJOD zLuDtJIe8o3s+gVGJ$8{*-1|b=is(W~L54r>v{ax6I%QCJ>`qlkW3C*Ptp2R=#a)Rq zGBzIi`SXLt!!?cK)Z~MKcftBFI@21?3CaMNXy~m^eUTOPPi69E+uY}hgdph>Z90Lw zE^gsIIsQ}G+DFp#T2g+*2DHf@xuJ@o!bnmC6*(j?A&ts+qKqQv0{ z+2t5!SvQvp*#~D*fMduQNTZN!49ELW>5PUzybpaLaILoR4F0Cgxc!3SLwmU$442&D zZ)vtg>kp^~t9xY^Kkk6|Yc%)Zrjm##1OMB(Xuny_!*zTAE!D{9l)UK?X{o6mM-E4C zR|EEw9Uy7SIB2kK`Oy5vI>?%Ls0Pb#i{g$C-vw*Vg~q9xQ#=;QvNqal-Ewo@KbO#I zRA0slPQUe*Dv?W(d?>0~ix%1@P9G5&guuP&Z;&HCcr%7=qHdBZBZ#?Wu%Q-qNCP*c z^aiNu%@y{%d)AYY8KiY&74`l7Mjcnt?tCGW12W`Vy%P$2jAE~?{W(*_a6f*$vI#$6 zmwRn}Cs@u2Iw>i<3w&XaWe>NJM85jFox=m!txrTc6SLluU*oylqK=F=GDMAUZpY1J zK#QIRS@v;%mdJn6tz|7P<>SBgy3TdAit$pcF!DhIpK9%kZoiohrVabjY}a*Zl1$7c zI+%8JE&A(2E96T?!!LH5!&48&Xur`76g=c-H^;xHz6aj_*Jjtg=T}-3n+xhdAq_8E z?}N9|U6yqZr_pG4o^=&5Vg~r5$s)ES>plvyqi0F%`lr`;%;U6B(zn6e0XBB5T_^1T zQCSKf(|l-+N3Nq?`n5j%fGM$#aXHUmuM5@lA<=qF=7LIK@x);9U+v+ZI-DejcR#h! zT#0CN7oEKd#iW5QD4i;=p_u z2;GAYFg**`N_KcO`rx_DjIue@-zax`S|Y!w9_oTd(>|gKn3R+g9I*VXOUc_RHjpBW zQ^^Ttf$^Vu<9K3NB#b&Mc`=H9C!-p;TH4cEVglmdEmUBfzTK*|*YSbR>67sG=5`Mw z-FVE;`Z$5sEBk2o;(92`-HOTZl?77VeUfYfKOEy5M^)$ird!9jZ@F)C_89kZd+8zN z;Wa_*N0XCKZ*OlaD=QzLN&@n0v;01w zB+S#tM@mSjxV&7A-TZ<4m{zd{+nz2VB*25F4*Kc|MCOzWc2hebluU)PhC8+16ySb#nOjA>W~r zuuo5s!1lIyjNL|CAAeTUxlx6hR3afu>wz~vLL3eY0}l&5%tx<^L@>)ddB<$W&(9Am zp7C*3QOp(nFcL4HIY@t%(5c zJtAys>d_!ogqe_|Un|pf?0~%I>einBoPdQIvY50pNi^{c&Joe2O^XLgR#i&9N0NDVnHRW41;0 zeq&=pHSx0 zTXiqZ#J^Es16)h9ch*V!#G8Dy%GNr1G=@5=m@X*3#0JpYBa4$Yp?D97i9hy${hq{X zbHMvCM$9XEu1ZHMQDjW0#TD@6j z+xQ0&_Epo46`d7LJWWyLyS0q5lDBkna`N>}33YB%3*FBw8C_}9?3x#)^ImPs6Iyqz zG5ZFYpZ%>9n01ijn5=n%aIGsFY=^BnZx6k9yK?_Y4CO2s`zQi;y93>6Z*yg(0bmc? z-O;y0)`ZEzCKT2Wj635BckahQP_SW57J?Ua$UeACUyljiR?A`hrHmSQg=Oj-larH6 zr2RsBarpja8VE;>b<Z(}IeFv6+yv;W9PBcXz4z3fhKjHl&qlc z%d3w$-wUi(h4MCc@9i%Ihr8sOqlX`+I2pWx-+u^F<`)zb`@oJY@&&eYs!_)^=!wkr zT?-z6K-=6NeE9G|Mw881p-((kLRI@T$kz5R)4rHj2%_{oIz;#`{p^<5WeP5S{4$jk z+y5c}9X4^k6bc5S!4LGA`SNTLR3kI9Z%ciLfway_@B}0Kj4~6$VO${I@g*aHhsvFi)*P##6|HpTkx=ajmliv@RUosqtSqj5x&;lBN8C8Yxu@{_L=J*_ zNP-#+r4SwUA}BpNtN&}x*cD0P<1t={UF}1~i{QH?r59h2791{q^`0;w37EckA9U`j z)S`+ZA|cm?dcly9-6r^}YJ3oDi(VsP6k;&S@Lk~J^ns5P@EL^LVC1NmLA&e_FIiPJ zHHTaKFq+_E<-jhXh~rzrCEf`|nVuPcBA!RFg|U|SoF`O$Lfw4w`BiK$xDDDj&FyDw zL$XpF%erkC!)z;n^C_bXh**oAvF406H2Q?Gt_5lKiv$Uf^R)rcDJ|Dh4w1oq={%%ifC^-mSQXtz@b;A=K!Vz>^=s!$=@a&Py(JTMSuZ;vtwr`Q z!Z?F=o)8EA$Eyt8i{R|RXHMqiV?rhKXWH%JF8C~eaauO}_46n5#-~MVoz%%V*)PfY zA<42|Y7GP`rU_K@?49IH(z>_F2C+86F#d%3H+)RDB=Bik-RF$oeSrso#9J1bHec?g zTV0x0*}XHQmu|%BADbGA!i!FP7H2crZ_+FzMgm6es%)Z7`lv~8pwe`|JY52rV`>iM2_F5YH1F(JXH#%vIe zHNQK?SQFoCfrhKaFjtiGcW*{XVMaM&ENHW9$?YHf%AQMY@9&$Kt(&ZlNXHj=16eJ- z!lb=2=N0Dm58`uja5x;Z_in^FuTN_V;#G05zV7^ISP<+FOTh1tIYrn7^Q~|~uE+>2 zNl-dzlI@>40Te?@k(ADSsyB{$AG2Hj5o4I&4XET<``1H(gaQ7Df|Jh2D18P0@3tsB z06KW`)8&H~@v+>(ev>Uxg<7k3EfqOLv9mHG4^>v3%vBXrr3QN0*7L>Cj9nsp*F1Xs z7J{U&pYl{H_J4{7+J`}u<5R$^o(x>Vg-A7To?ruG-4{hV^E^UYe!ujCLh5f%2(N)K zq+xCI0uWG?`Nat|D8z~sG-r3KAh4wWIzg*n{S9FJ7beblDT$G+g%b2ropfUduy5Q* z!b=c;r9=h@%l_q-#^PZ7IxB_=?CB-Al_Mh~QBhHIb8`d(Ld-?ms`QJAygf)B^>q3? zV2_XgBYC&Nf+8~NDMP2vfX&(T6q6v2*E5_m3uZz0FJHd=u?rirc8y!pCHIuQAL9s* z+vJlqyht1(C6;dXezfGqYfY&5ch`v2E+pZ|BgC^gf(*SGL4J?z=+GNsWMLr{)5MG2 zKt=0uy!eyT*TX~EbQ@?8<=)M!W!l=c(@8xy4Rr3Vv|>h06A}_W))5~|5QN=J?gD>3 zq#-4!OPkBYH{+D;ln*op+2V={z_)K_I9D!8UI|u=-9Jh^5-1 z=V9LE!Bccwcr;&_{pocs)yLm8zFXH{EDn~ImM$$h@#NI2LE@Fg-a*JaG%)VmCL#b0 zgV*#gC*=4efs4R3+%i^V^25^sAO7uSCJo~_q|j+sm+}uwT-1ij6Kpynga(M zlGm>{HU(glYvww?Ii}zx(Y0O0*8qR!#4~8H#p81sWTM)nTsw-d1C-28h+&FZuzT%4 zoZn5Y_r36xjfygWGPg5=udG4hOrv)iz9Eyn=%p0TrrGmZ9!FryVjw#&!_(?3%V!5D z&hA|`n6Sj;Cs_g9u7yYLKp$0{J3Ajb=^vZx`U~1kz{rFt^aw$IBe^EYJTGo4R~+wL zl*@J+o1u(Y3I{NoT&}tJi&wA{HTM%54xA%i2XF(}n4^+`FJHX@1=h|07PkomR=x`( z4{cP=AymR;5}D~>)+a#E=bpi($3217m`oxA_w8aoh1mV~V~|&9_izB=RlzkQ>lpY7 z)zi~Gw6(RpyuHOifSH|bTwqu=LYaD=8^n6@2&J(%HvacUp-YA8y0*GzCMF^&?WbAt z^77mcvohonaWjGv)4=j*^$wQTOtHG_`XDU^W^v5zK&-r%dG`L6%>;-Ip54_dXKP-)6_PsHA?IuBIC-WWjXDJ@ z6T@aTeT8O$im`wW zMuSEb!0=Fz!S~(!j-6#>b+y)z6kJL_4&rVkHW@nNo^bm{E1;|`_Wc)VaQV+`5ZjcAH0g5xEnmXjYgfr zr7}vdITAZ+87lX3+^F_mLCAPr?d|O?D=*LSb-V?E>!aitJicEOSjp`>H=Ob6{@K|H zg2Pv_<3Bw)K;AoD;USTfe&p(IkR#D<&w4E>Sy5yU#mXClujGJT;b~o4bBCpS zvHm{b$6u5&atb_6YoNHv3Q0=N9rhhcmmF-1f>euj0z=a2T;8)#4Fp=C?zQU}#1VR& zhy>e54sMX6suGc5{!yWds^k*u%2N;wOyPrpBVjy7R6v}@$}of$V+=pAg_O~L*7b~z zikc#SCe!jv#y4Ro)n;u~a3Cj#8+&n&_a=abDoJ8^0tPl`yo~Wls%FHuLGw7aENjh( zi!lD%s<~g$?$&gCW9dfie322CU6WUaD>BVgHbkNWwoFA};2>fY5KCAThoCTopPGAI z#CO?{dzEY&9Aqw1nBkGV4R{)G%+1?*>hB;0h`-z~)`psF&GD?GR>J)UDmUAmH!dHZ zMyaSGx}VA9^(WY90>D_^#dFaip(k^K%=*Pk85<&)VKEOjp}rn!*CZ+>^#B#Ua)9v7CV!A70Z(~Gr*H?=%>V^_sSI5 zfdJ6*O@2g8gp0OHgkB_A>M3x*mD=)EZ$j(Gx!wJabudQ$S5b3H6+vR*U{U*m_FYky|() z)9zJC3LBs^xTR9FHucCzOQ$Hfb6>?;e^fd!M>L^2pWo_wqY!uluHXr?jM`U0u^f55cL;g)d*8A33?$C4s=?E?Dh+V_aO^ew^v_ z%*=s`hJkino3_n$a5=z?UIqSYbDQ6&tPAcV6rrt00L#MZHt^rg2rmd1w{K( znG{k^hNi>A+RERF|DdD1nXxhXgcp@}Z`{U*E*|@{mESTe_&`#46+0b-`6|y8xbjmL z=BSuYs20%I;P89ZY%Yth8{;u3r2eeJU3l?(%Z5))Nt|q8){>uCdltCRF%3Gm^=cn) zL52$K_B29X%e<)bflgh(M=exJDlmN1@`L}{=TQzmaoC=8MiBxPreAGe}SwL>^TB`tndi3HJvIWHqt1#pLxgO(}Mt8iuDS53=zx!oVMz0-g$45T+I_KPEQn zuA|{GaSzXEfITHZlERzkJ1y*4TEqyHgs@WMGg@UdLl({~Ty~&jH4YVopK96pH;y+n z!Z5eA`|-d9mdyD}BCrtnaV7UJ&s@W1X+&q~8|t!QLBAzX*CjJq zy%P-j=^gi@S=CQX+Ar^O#F#UY51m-i^U(wc=OYhpSRl1PRIzmeweqan+7O6x3m6hFTfk^pwPtA zmXL^pLRjAp>+c{AkuLIg)Il#@V|w$EtcNney}esZ%xTgVuM;o+iQq#V@O=#b8VXN~ zJmszD!|FbVxn7U|!x{c0)YczgV7eM!)dhn?Fk61q?xOML->J)Toy$li$HZu@zx0sW zH!K!p8A|Tq|Cdl$epRT`>KVV&RkTiyKcHv0#JYZs8?MQGHl~sk5AHP0I1G##s;+ zP#NB>m|{72wXI5nhD1jTu<)U-lX8mk!XjbB?bad-#GEOY=jV!xg_z<_i}1>$NNv43 zb0I8(5PSx&3XS?-vvNy0#8yhqhd?6 z`B$1?_AcXkQEsyj2i?o#fRT$s5$2OsO(|6W(i! zcM_uSe59Qdcha1?I6&c%%9dT?C_+Ck6bWdh#=9P-mYlu?plAKTiShV~>CkC6(Uj-q z7-mqmL3``TYW`B{TLv{=c5Fwb3qq8$GH4unh`B2c36~0^^55x$KRlDGKN`v4%wbcn2Q{5XDn-S`)tsD1YeBL3{(f~`@S}g%8v@>U z2EW@=IvLL-AvsgVosan;DuW!LKkhHL{5MCDsN+AEzlq-Oy z0Fu{Tz<*D=9~69lw=b39RbC&#G?1wKxh}nqYT5oXI&_kWK*xih?~!0mv(oAhsmj zB~439Yl}pX)%vP+8NPSaQuyP;sXITLwDZ6GW5u%Se?r5(stU{kU)g+_+U)MG`T{o9 zV1(9nc6=q^!ADYOuRliePc;mZmyZR@6yq!YzLi_Kf(-RLjm4K4BmiYG!`MJliz!&5wVt80kJo3=^7#0{`1PFvNAi^qqnS_j2Zxz4x zP_V!QJdIEm?}x-avjOfsOHCC4sRunRMjkr-!3+#^FuXS}KIIkM{s%Ky0?cp$TyuPd zq>We4_WIlZ7WWf#DYp{i_+n?ys+IAo7k@A89J1g*lop=EwPH#IQldMxm))t4RB9B{%HE{oi#e!Il#&1yeh?kTs zjDO6+4^lwsHt)YTchBuPFprJS{)n3ucRHH72w7fNaGU?Gni)4KL59zkFIhSv+CtzM z)%*Vn`V;QIS6l1qy4Yje*mE!dqA0w^U7#*ht;5Pyv4&;-QwFAhC}_u5@(j$jZ%v-RB@3?a7Kf!-7z1Q;)nY^pmoFYMN!rf#{>wP7fW`gP9-dnHA7q~*k zL{zB@X=J=uZ|3V(H2V>c$!I=2n8Kb z;#+xCdPM0Y7tmgsuY-PqR44&I1Cd%89!}jSbz0LmxQ6ecR?h~u4;E^Ws~eXwOKbmq znRrPVE&UJ#12B9raP;j&+>CszO@lBfPI5%P&QVWaI_-S#EhssW48DpjzKTUmiOmei z$Y^=l+qa^=97bqmLG*P$M1hQ*1Z>W0AY)f5=0btZsGc(rk58-P<8p;?sSpyfC)W*y z+cMZxQm3W8mp|Uum5s_A^{2gq0ExU?tj!+41K+d~G*u!b+7VR-=k}ldfek%%gGu0N zK#?y2Ah0#e%kCF=BMA`3IRalZKFI)|dTj{mhm2)I0vjCT;$})f`d>CRaIyalUtvka zm*htqv)j+;fK{La4>!LRpbJ6B;Nz(1=w3fiGL%4bo2UJr&^i~BC!A0lL?9zW!AqQN z%irapT_(JH3AB@vTxitoIat}bJnGTdh|7;?IdG{g#{{8pJVie);|EwO*$Dzc0JTG^ zfFKkCf&jQ7o*;Y| z9%{g+=STcM<_oSkaP?ybuxS-Jo?;mHZ^P2|@wyD~2JBdi$KQm>^6#4LM66fC3;Gr+ z;O(6WN9*ezmX?+-E-^fM3DXd?R%dbC!N-5v)3)As3{>f2jUm+8*uR*c-rkmQQt_eh z{(aei`QXD+oe7&}*e!MKrU6@#ct#r)^kY#Vby$D@iwBg=dnj*P0O)oD^uBoUaD(AG)VqesotGI_78k$j8^cW3;(AwZK{a$k?I zFu&{EFKd(YBV%!E54qeFU1X`B2yqVw+(RDGuAhtn6nJo@=oFJy#Q`W&`V}~2`~V1% z*MDqpf3AECgm{i+Bz`5(;4?XW+! zD}NY4QC(f3^FD{Pv~+Z z*)Sc6glLZAT)OOhKt!aV0PBq+#Nd8mu46>v%dfffghJru2~Y}ZWj*#g26FB*aP5!O48+U z%t$Kh7^Ebf-oI?ad9>uosM+Fod_OBdU?O&|A}Gmf?g~GMU&ztI>|k(t-Iy1T`Iz9x zH*5N|T(cebDys|t5BUH*+=-LDicQAYyT362Nxv) zW~i4QVEJBpytK-t+>+-59>6k~u%}wWRcs|ef4yewLr34z)%gHSItUFQ&_#j{o3Y{v zXVg?P|05@95tQ3Dz@+qE=V=r1kM2;{DEH~#GFg!BO>Z2)}kRI5;+M6KXZ<% zhn^skXBUJJ5q&@N|NP_ldgw~vgFJu1?Va_26KS*6=6kaf2aI_pbKx(~_tsaXHny&8 zxcxe$b*VGLDJ(4sblIIEdU|zSYqQnc%xB?{mc{&lH&`=wQe;3tF5oD$Jd^E|*fwsW zT<&AdQO<7X*67jLQcNA={z5lxLT&(9)b(c)a8HWaWW76^huJQH`zrUIeccS9y>;PY-WIxveUkpg1XKJL|iH6{Wg$p{j)F=}C1z z?}mp0E@M822MV4m*omjXfmJONicg{sl=>))nq}*$&I_KW=^CTQ&OJ*^iCTzKc&JH4 zgw~EQ{`_fkMP@I&k4uP{g1-xz37V@&>Zdbznx{Cb2RrOn)nA<2ca$fzUJNM|_+eVt zP`tnTX?BAn^D&%4dNT$hzDTaLJ@;&k#NxKs>kSj4r)=sTzZ|x4KibF) z?;rWY9;_|tjK=iCsrzh5LJKWb@)>g& zPoFhhGAAN>ci|1#fwreO$%u&P|Ng@M|KGdjE!>~lV)5QXBBF=SE^|6`8yil%`l5ZBgosELZHsKs_pR|W{k0)u+GkRy{#`uX zaO{hi(upuG3Wk6^%ldmUox=Vnh@MKiA^5M9DXz$v^0&SW>*LLJW>{-nd8g6jCqU^P zo-_xh{4H+2F%jubFC}|Fwsa?Zkl9Reueo-h=_IjgKr5N0%`W&K4cy;LnXblvoU6Dk zKG2_3OGH%9n4~3U@AFB1FH+WY>_M4Su;WcQg#;JFCq^)0JO-NiVJ6~DwDe-*{qLtH zRs!iOxbnUUlYs4MM2^@7BmSQsQguamO~91bB)Q0IUsEE^bHqfG>_HgHpOZK@+_Su+ z06)2WZUK0+vIP;*5-7mJ?KV8geS~~-ot!8(MFPH2=i)o7V*&RFsXMiK7+GrjI&a7E zlg+Zvz(ZRp0V;g6`j@9T8FtHhUuaY|+APF(lB`7eTVyH;d+%hgxi#R&4S=muyIapwA`TcitZ0RB`oUIDC zsae6F7!IGllhVkJdIFi};Y0{+YbIv3s~^al#$TFw@4-y1P7~<9-s9BfGATIOeHNIJ zbvH@?`16FAg$x9`_OO|KeTOnsbyR$@Y9vi(JK>d6*8ahQ3nqhlY<72N$Jx!z%~}D` z_1a*2*Up)j$ywl6AFnC1#E`J~B0_(6BA-@u#Mu_|8JB-#d5B1oV3ZZU#2^lxI5?;r zeuXA^YG~+ju=5(TRObcdx7k=o1GC^rU+cUR^v`$l-BE7lN^)Og7K9;>y_pZ}KAE~q zi_s4;srk;{TBMQK?TQ#lazj)Lr5A;NlRa)l{2H_qSsJNwb9Mb>-s(|(jDaR~d`(Fz zDz&w>1;d6gm=twZ{|MDvRrkc|3n{eNOqtKEK0Zdq?L>LzCM0xK9}XTHWTz`#5ot$0 zO7C+kf@Sg|CYP2xmpk(l;rp>pVI4C8WgpoH$+x)A7>Xs>6vMG9z7= z_`_0u-SG`i{RhyJUlX$~{bkJJuAiBTA6%ojrjx>rm|OMt_XqAIQhjQ5`S@tLsBUD$ zP}|Je52~Cg(>xNOz^xR&?EmBOC({r6aQkG&%~*R@-fg-7Z*Puj z9B(ZS?n*p=^@>+$XPhn(uEt@BLMZtxn40RsH;41zW^eC%myYb+Z1~X{cN{TrS8HuG zlot(il$>={HZ5>I7PmA^9IX^A0AKF1qM@ncCH+jF;;p@gJSUmg5t$>D!drphBWc?akU$LTH zjB92oDkvx@D^sk$zJU{bxwrT1PFT$69vuCMRJe}7wP3kw&&5FfUiGu+75y7e&O;`) zpRXi%1!b+TuJd^wVUq<{a@XQU57^)t&048_5rTuSP)wEm@_h4x7 z!s4P!>ANnEvlM<~B6IuY47X(}hNDNvQ@rdQ9ohMK(IiV9KLrEF=n`8}!7QRvQ3E8S zS%)I#zRU1s=p28#Xit<;@><@0i)Z^$@+WQK$TGJpeUw9QAE~HhEaUQUS$!GU9`drJ z33^#b6mU0{5f&^sQ8Hl>d-4%Df*UqTTYn2=Kf2V3H1=Yy?I={ZrT|GXU>aEc;I#OQ zvO0E2=)z**yP*C$LaM=;w8h0~HqU9brRFpgzmjt`m zn^8H3#19O=6h6FyQZxT-MZU#?b3^`o9~W&qe1;V3>^@4eUA{lN-6}T!sh>x8KhjCh7f;ylgMdW4nhPHXKgYq0L28@ODNV z!4O4+9<)y;H(Ot^W1wuRnaJdEzQ78cB6h&gRDbuY5Eoe@;dzvr0HtKpstq|$2e~qFEhC&H@VvpyHWlB*Dv;+q zLNSOZB_)*(F7AR_T3T$6(o;EXfQIBocId{jnf@mJnb`QwK#xwtalK+mBxHYQgBB5~ zeXqpTbIFB!Kk@9xD?0Bgz)LVgmAm^fVNdRH+HDLiZ&#gPdjZ2vO?@`ZUtU;f=LoM? zgfk_a6HDQ}v`WZ%Dz{%LF(bID7A@B*`F%ey#wl&`m9Q+X5GJ`EQVUllc(i$j(q|{b z(^K;RRjti#7Lqu3HB64|@H6~MnT(^82vek{e+gc_+qZqn@3#*!HoX*x@} z8sco=kcgLbKD?xFIRld3G%;~wkwmtN%@DFAwd+9!%#dk>Wq)B1JC&Znu(RI`2S?zw0U>vo_4X!oFn)~Dn>!KmL|N2KzhGSJn3S%8fpxL2IxIlP59(Yp z^|KJTO&c*WZq}-vHV!6V_`a6Ij1obMNV}*P7;_r;i*!$oDz|-M!;!$#y1cyH@+y~C zizIwfs0fVcT0Q>uWq=sv?ms9hF5E9ya!_2-9-8JDlVTq%zN55Ry zW2RzDH;2QDQr~UBA8=RQQ$~AxRaRyjj;;`gR~B@X9LXPMF*7-1bac@25H_aA7I9A= zZCiA4(NWLC-=DY>gNd#DF2?*_{+5x^Evn@b#{t!pGYtB_bDyu2kksEAp7LA6!|~F- zJ6-9TzExXlQ5^zd!S{%lau;kA$%&Nzn3^(OLK?n5)K+B&vX7b0FW~0D@w?9333-)i z%H&C)c6f#Iz8{f?&+@Oi*{>U7SKC#5DlMTNJFWIjuU{mk*MweFB;@2?VIUHV^Gcd@ zrrsX5)pUO5Vzcq+x2m@bgpFZHPCwmfAdMuPC>NoOOtCVAFds0Gs3-Ly8kMRgccvna z-`J|7B!vFR;r@zvKKeb)^3iAJqZQ^9vGRg*V)81BOGWV>WM&-v8Un=oVVmNkQw@u1 z!b`V(ZK;vV-fqM2jeT>xKB5|*F&9j@7BoNQWYtV&kXc+UsG#lXOTm9+o(XOyWrI}e zu*4EzuN#IUmJEL@IDPUB7Vf-T%3k;n3Yz--D0#U`P9uVYW9KZS$FaBO=OBWPS1R~jQ&mIUuLR25JRNY zc-eb+jJztHA>`rXYY|Qh1R^#@EFLT{?gG!d=;S-(R1u%I$(P0@X_xr(<#&AEj(oB| z8CM*t>iJsfC7Vh1_KYE$xH5Ip%^0`qyOH~cNWq6pi@EXf@!h!1gapQGvbI8BRLi}g z&TTVgGW|YQb?bXfzti>}1yog^Tg;aY*U&8r--2qzreRxM40P1viYIwnMxP23g(Y6OsTt(CnVFcv&%Ja_Q_vr! z48OEa1QqjzI;+f;*-Qe@M!| zg2Tm~9j#uz{OK@!we_mmNs2xXcDUYwPtv`BrH^BXmB=8QFA+D968U8o3N)F!=8KaA z@MtV1dv|PS&3|b7OWlZOBl5>alc6;5wN6y%j%xX1?J+_WAw$a4a*pv8pAJD8Z8Y&L-B$h^P8>`R8cPn z=z$pi@uM1TNN{j)-ohDlF{umk^`u`6OJr{3*P;vQ))3)nVqyfD`?|Jo&Rsf}*~1>E zY82vNM?Pjou!7mXiVay+S2&H`ZEY!xf3nI$u+B*YgwxupsGgo4?QEJ!VL2BQ6Yt9x zE?nsLeP9Ml@56PF-gT1(#Bg;lz5cqXtcJP4!CZAJ0q*@avKisN*V0l|hmibU{;iw# z>2N8Z>Kn(=xxjPOwp$NPo1h`ynTTJdhH#0M{vy1S1h>Cdr&`hK~;y+UL*~z`buW4TPiCEZ6 z&%h7R?lLKKdOf?TZ#a+S;aoL}Z9aV~JxRoSncP$>AvDQzcb$)*l=#Dl)E?4sg++^)4gR zH3cXXx;C-qKJR8f(Ij~jooP3o*y5|%9B5o{Fm;Rhc&7>WJ~J*>#os9H+G9-GNel?j z_gHMGe(8C~OjnjOyHaC+Ot08T4+|l8I{;Fw?NI{6xlPVXCrLffJ67_ABwH5;Dc61` z_K-dNE;_T29nDt9V=5jFlev9Pgm@X*6;-hqoWua^}CVTQvuX^N z&#_Pz_r$;8iT|?)euAKMExCl;C%yjZA=b)IjpZ*}Xp~q?ktIss556~VRahWlWp8C% zM@p8e7Exe*(`bbuH2{@ah(+yvZTpsRo*NYcevG;j;$Ca_u8}*fZHpUM&)d|?o|E~! zc|drL2+eXWEl8wLt=C^R#9HO4dRbVp<4NaAbPm(0Ih1+~dWm0Cby+Oen`y=TUu52! z|D^z7))p#}H1q)Hn`gz&AyH{3KRh5(o zJb2JEXRqJ)Sa?;-^=+a$l;5EwX^pW^;pts)v!8^?$|-Q7j#v10tb06%P?dJj;A(O! z@tk@OCh6SWb*UImr2JZ0$ukqgMVbWd#ym=Zs1=wnoySwB=EK$&PV?jN@!S;jRrhJJ zh%TEB)qx0j_EwXiC3DizL?pGgob@ug${n?u2nlk(TPL+9zMnU`>=v=t!PNWnr(%`i zC_tG$@ZG#_Ay6ZObp|#^tcYF8qb4!xEw78C8_TdjqjXoxZsvZsDyP`b`P(l%wK?|V z(CEaLmu5-ueaL}}w@;_9%hGWHY_}O9t=#nbQ|t7vU*y5)w6wHGFiJUk#?sDnh@_$< zwttCUP!ll!Eau23S1y6yg*T=X94%kBX|J+yo?>wgf*u z#+qGHqFvmTJl>V$Kip(bQQw&DxVfoN*zuzMyVCB~*p8T(7%Nrhh8*%cl9~0^v~v9F zeUGVqF+Luip$aGTnoq72ey9Xn{7}?RH>jiW{^aiR`&~jTa(<4l+rP?)40FrV^~Sbc zAy?>ZnSO6ypEq&5|l#bJT2Oiwca#}e~-BnPhlPB+qH7Pp%_liFPN>%B~3_i4y`xC#rp zmSjtUauQHuJn*iSGJoFv!D_G@Y!oio$^kw3kEV;H zJ(A1l(HTADnua6GO1h22k2-A zeH4roP8Jgo5KtH&8W2xf-eJL$6RO8FG0&p)yi^wh-D%Pn5@8+<_8~QgYDk|nxqD?I=v%BV4k%IP-OMs6_ z$pm~%HQvWm0+5xt!48t#HvO z@i^!L;vHAgjD{3`B^2^i@2WR6q5sOL6uwNRkE?p_<&S`4KX16MHAVnrIErQPxRMVh z_O9BK+i*8<^!-p`>!iV6|KQ;ID@(-Tn9&^4 zxtyMJFA!Rv+?M_(jDlrD;ERq0vwQXyj=>_*PjdHXljPCr;C$VZmX61qGIFoj%ZX6x zlTWa^_RmEOYwi1%;>yu^mJh)8bqK(f&lk@DgmRa1pj1hCEiDp0wPi)#UBvzHai0;S=7Ln}DaX3jN?HAQ8Q@q@njNaT zz1mQbm~)a%x&dW9Mn=!(21kp;Ow(S4b>9!;AZl!Ca^N7VAd#Hc=RIJceaGiLQT-^L z58yjc>`839TbhicS73;r@Nnpkh0h;W(&PMu;o)EzIhN=THC1 zi^ZlZKnSQqzxHybyZq^|_@*y>K0p1|@sgjAXtfWns>i7k?gTb-hXM zSB+Ye#sn&MEHj?I8w0*ru-rrv76W;yjqhTpyc~^2LR)qrt{FmylCXSObLT_* zZtom-%dFTZR=TgX+DL+f?-NRgq(^c?-=^7K0EXH9E4EH?yO$YJ>{dUm7Ko=IkNrPhT}pBc*Czzl#>yQHQnw z221ef2rud`sWLf6o%f6#L#i2tM>ob}N4TwNR&dHLsICC)_#@6r=t74EvE=+O0*??o zwPu|}Avt4C7STQHAO`=;UEqe>0UkH!@@Be5i24f&Q?fGk_{ob8#DF2>R_x*fz|>nO za(FO%{Lof0IpmOfKlT>Rw==i@{&=2T)a5 zaiu!n3k#)lx#KX12t$ng^Jd*yjQoV=W~ZBku<(~Y+$XUnN)J)-?Bq7{d3~Oq^AHht z8wLc%%EM6+2NWKT{g&z*(eJ*1o7lSpHzG>X!2#gC>%tV!>>iC!NGJEcn6lZtpuD_% zN;YH`(hG4_S=XxCNNi|f$*N!f^(!bu#BwtT__2Bu=)*&!t8ygaDXcj?G-qJU7kKW90dgGXK~ zR#8y6`yyC?yNEM`qM$O))MF?3CBTgIbjRe+0jTN47zS_$*G;>?x5WW7APuQ0BoNzw z1EmDK0C1u1MFOlQ7}!|Vf3bEge+8Ct9?(8{?t&pT7taNbwOms{Pwo*z~{TX4s9XW8B)vuc>Cj;r~rP2=V zjX(HY4TmzaVJFJp{d`Dt$3Udyt(t+`QjUgpRK>>--z=H(VU8m&ec{H zH(wPOzD=>=_$N8tj02L>_MT2|fQteZuf)f7qNbFTlwZyRWz4DKyzj`|h=}}M^WtCK z)ZOK_YfhnZX%80}%WbdWOPJ2QeTBx({y9S`on8UuYSzz$VWQS1aM+_!Y5-{iYXI`a zJ_-X#^^>QsWz*^^z_bO!krr7LVgS@|e?9jo$Or|16C2Y%0TK{knwSXv4EbQ zUh5BO4%9g6Bu&w)j700ee(%e4_fS`5dSLZK~Z20X7Zbr6@4{pL2hXsv)lXg6$K?{ayik;7rD8)&Kb;0~`Q%(>Dr|3jJo5OSL%J^T}`#`_)^Y1s{B$RFe( zNpjkVK8+Lrsii(veyIb$cU&tVeKbnSYW$Z6iShd)I}5KmInEgBH7}8dlHWTHm!SdF z&~86$O-`c#I4+0I6A1ScG61h`QT@-h&kY9ptN2Y_hT0pO5uysA0Gj>p?^e!Ax{%P& z($dnt-rkIi43UHopt>GG7EB;U<{Sb_^rb@YNi{dV{u>%C3&NvOVNz#-NnrPb1y*;> z%jo+N_+nPT;0tb7TU(9%J|{=VOb0XmY}ID~@AQMliN~BP3=4Jqg@G=Up&>y=O0s-?_IBs`0J)N!3VV$#Ok(KddCRq=0v|VeLz!kiT z=WbdNiUIRJA3h(y%!GdvAh!j<18hWo2@66>V#2cA5D{H~RpO;X5B!pao0$S~8E{R8 z6}`C44kDo1qiBII_X`2ur@VkftZz)1z&TIW`9Fh1Cbxq5gG(v*fl`jPy@Nw>j|En9 zq`&{V@9%m~;FhbnE{i!g#pz;8&N8uZhYvVAIXM{{*Y?%u>FFh?+)7$IIzleomlEOT{04ZRZef3ZO1{VVrdc_C-o+{33rpv;_Z^6NgM|mT zt!L<5AooF?4y1kNG01Qy%YeKyLBn;KtvDfPLwv#{{Ua3fw7 zzO3M0Z8}BgATUYiz&m7Dc83gd*D3&T8Ozl~Dh6|!>?dKct*s5^*}lcEi6f4JXOcX0 zbd^g`pSfzre5JQcX2&;2$xHkm>A>YKV#vR4Oj{?E8tHbBi2qv=d1IFZih3baiVX!C zi@DX+*N-O}9F;=BVrgvw$!!u=d4(>{J_`w=PVUO&+X?|0c_yI%?vXnMWnv8bTzX2O zo02dYj zR@$66zlY78ez@t@xMGl&WrRSc!JM>1Q63urpy+_^z-GAsBhzNQW>a~WE&caQwE=u2 zT9PGCnrLtfPq6Syf%+Uc_J)ar_GNu@j~ z1%>;+bE(_z#JkDRZaRl(Er5`jyf@i*`^-_~g+`+X7q{HsV6kSxG3x3&z^%zFlqUkL z12;qA?1$$*#9QJKxp#^(+J>OJHFEA#Uf**$@tlQVrY>}vqS`Aa_5 zwom1Q@egkS#v@^gt65sgD_@PVI(eVx$F|>A;^842Birq3fv{)r*M8R*x*U_{%uCjd zA$;XOegmbs5N_^STa==5QNr{hoLA+pw3a=o{ej-?W?N&`RX~H9h!z@Z&jGh?Z zOrP`|M&T{3xTQ3JVL@n2TCfF*pCf3SfeEkQF;CzxF|;K+_A`k0~Bi*`2&r^R+@Vwar{Ap~W|8@_Cuv zObATzS8m7NwU24G>}pW{EkRtT`Zmjbo_)*!~=)EogTUklwGOlu$`<; zd79b?nS|CiB7?wdHfeVzTA3LtR5(x9ePaFj_ZA(1OR=jGAOZ|IO(5B{%P~c49%9gB zbJ~#qZPFw|Q2$LJar)Pk!B>@6%en9FnDDvzAQ5F?d!}Z3G>3HF{5QF{+|PO9=+oMm zXfgp)FJ^ivY3qt~_2@SHtF+wNzqoU6RO>>QVm<>aQgdJqLgXNq@Z@`6+0(2`1@=2* z_%i6{tz-cq5fP>JqSC9g{XV)MJUUCXct05UODL$+V=RihO`7N?ILE$K4dyL z3rNd?9pUg{&o=Y^#*>#*`l)S26-n6fu^FqsUKHG##jx!1@?}5*z~h5}LYd8pjm`R< z(wFeg-(J1V0%RJaCn>*aHKif;5vCDu8};)}eEQrouKpTeBW&>ROqJe$q^jEGc8i_8 z+tGplgyjL zsn=ncFVF4sDqVBLl<+jyI9ZF6li+v$isE9R5CQH}wetR>6NI86(%fe^yGnU~y8(bi zK<Ne@246#Y)+#ZrvO6uXE4G;PTB1YO}q!Sj#1{>NSanwJVv0R3|6DLpD9OT@cwj<%R&W#Fzh?0g{*D zpHj6oU@2l6%XJDs`B8hB&zcE9Z^W;go&ibSJO=@R+RuTnfI#=(h7o~4!T;|MbAq?V zy>%B4$8ojw1QH!C`CH@i6*nufovJzDZqg$xEB7&P(vHozUXt1RIS|O0)pubD3Uk4f z?_=a+j!_@Nxo-L`&@xwTkL$fAP2qN5?a*898*xka*r?wg@x-O^`5n8i+|b}V?pHs$ z4+5=3TrMyK8K_${OSrG}$|p5&{>Zfv&lz>yg`s-KN1bUZKp?e?0SGeQ&@WN5s~5h# zY-*>ff2MJ~f1_E#^>sUZv#}*XrfiDqj5P52mK!rth>vRRijv%3RN6sbso=aG%TDP| z8+miosONIZ=&sFq5GY9L6PZ!H$zt}<`QSUS@jJd|FOUk~XvwgHPLg|fZ0a@!+>EAe z`}Gu7G$0S8j-ww6A0&s-fF)-KM$9bI$a;FU~f!voy)s0m5^C z?76hSQ56eJy-h2#^sK(G)elmgvrb-Yol-yO^gy7iUO&i;lD>#K)tl_%DpHSdYsM_} z4hu;uBbof<9SE{Iop*cNE%2V0*PbpR{hq0WAduXR9^ZUi48qXxYx%))OV=luxHF%* zsM1gPn5niFST!9mKWBgrRI3&*MEaUf6?$Mgmaanb95K+sFUs zkD5X>l=g>v+Gt&X9yNjhn9||r^B7unheH+~Y`BpB;|Z;2Akee7?GK z?tnmdz-?g^Ndq|SBx(NiT=~Sju{TOnAFg^W$n{Dttn({Q)rdTH{;o#`A8>BdI|Nyt ze2QlxFQr*yeYRlM%ea-A<*$nM1e6!H6+X@Z-%kGZVXiKw!0wu`xX#legVy_(kUm@Q z2@CywNgF*-WYo|-V2yUBA_gnr-{;DdC^0``ksweFLm61$m1|!6j4Vrw2|+<}fnkgiKe5;;qL|~uS>x`kO7N9SzGpy15myUPlOz#ew40x&-T~D#v-(=C zxD57r&^%Do*^qw5jC7{0!rDs2Wye++=Gj<_@G*bnAP3b1U1p)*E$aQKSe^>SgW$crw`!0+890!oVVJ01 zdcS6vC?&$)*mLi_y@frB4H?tb_nQ#wV8GMn}eg@1BB)Sp| i+_e7>I<|IvCONV|{&3s#0Qis>`3Q*f1Xb@~N(7w(;)lua_n07Grw%qKN>SmZX;@eB@u$6!PHc z*mm{M3&Bx$ynZSG#1`pP)2_v8cnjB^Z%&V6+c4o1SS5oB*HoMqQ?C0BwW=@Wq z%oO4waDlaWdFn5z*?j*Kv-*=F`wJdlWonaBz^vYUdD#kUR_v zB*$eo#Kpv1bDxL9FNfb2Nj@)%jGLo_+N5zYA3pkEcVTzxJHMaR%5w7Y)C_Lz1+NCI z&v(b1s{xteCG8|~)5Yb)BjI>^Sr2h!x~|_HCJ{5Vg^HMekn{|_J2V;@5pi4R@MkFh zwD;i(j|B8G$g;doWgJ56**7wB9hW!!IXUZ_{q>Ccb6m+ojv$64>GSesJKvw>&m5 z@DWoRjmg<@tpQ6By|d@;yZU7^p(~#Zv7U@ZlEqy@x?3A#t)^#&juRMP<>j^;{u_X^3U*j#xE?>-jo_47`@{GK9`cIXgSYdyfRZba($eEq3o-I$yop zR`x;NP?Hm8J zEY|a=wP!17ilXkAGLh#PjQE^@65>ZV{L-{o*8N~nM#uOhKR>@vn|qbFT4L+G=RpE``qf{rVp3Pm}zpB3uwmXxwx+G>$VmIoMiGysZ&zs50%o2}Ioek^`gdMOjaKoMEnh zcfAB@X;l?!=C<}s7p1XD6UMS~OUeVF{IG-t_W2r;G*DuJ^e@vBCd(U3CaB#TqVdP?<(;&!O zY|)8}ZRY64uP}X4EmCB&ZfAeG>H4aNfg61jt@ydLL)(NMa?+zq5m4FjN8O|=n|%?H z^;Qt?_1?D~_ODX2nj^0O>%jb7RIeiX_*dVXZJrRuCz21ow0Cqkage%dzk`_GGD{aP zuP%ZUm~$lQj1Yl4OomX{ywZU+k5tc1CRIK~5m1Nk1z=-P>O9C7h21axIg`5W$8>Zp zR$k|NI;t~oDkXl~*Cy$r;s{dns9#={#X6mCqWgLUCZ%xwMC(cRBayI~`Mf%siBaI3Tit}YPdY;| zUFyd84a*x9-~2*DRxql8FgNolO?I=kTe@ZiR7sqwm!%t$YwIE!FQ49rVwRNldOa#O z12*fHbU8NNn$bHVW{&nbL)=BgpLb&>On6=1{F~#g$8_Dl=1{_P5x#9|y6X&2@F(9B zQ4TaUw%5EaPDJ@%J3OMp$JO)Tc&T;#azpK!Q=P_Cvzac-7nYL0BwkN1>GNmwThStn zobt~HBmoqxt`QfYz0E)D7q$-gj@>sF3fborh!5?yQ@sx!sIzCly8C?F`W;zODAbCx zhvfIoO<1x|9tR1-llA0g?o}jhGK0Ki@mk{6Q)Nq8ux0Uj$~e1_l5+Egtb=eKBBLjZ!Q!_s zuw<>7trwG*6znmFZVa5tL{wwuGUlTKL9lRW8^mt=!Lyg-4|-(=f>z#dJ_`e zBp7&=o?4E$ozS_e+~Mbd?$geXTO7MPx5T*Z++qK@_t%dfWZ{U6j0}bdeCi00?`${k zo}ZD(KKa&$p}Aiu^BbhAe1{gA^-yd7qL`W`n^CG}Um5Gn$gH3F2vW!aZm0R=ynom4YH3p`p>XaE5Mzun(; zlNdUObZ`w?R$hrcCc=)}J-iq{#4l(@?s2)^Fuy^&2k~G<0D(|>`ZSlcqrE*aD#X;* z7S065x_iBS>>A-;2VqjQIndSiTzvm+>3ws(7CM#jWPS6Dalf~x zELkMZ=q_E7wvi7C6XJF~eLvPyP*5;enu&oSm(;3zTCsREgPL-O=Vz?f=UxlfTZKhM zl`nW*15tD0dguM3s5iPC4nlhxDsyI+3Y5~*@!(1hIkIPQ{v)wo-JH?p{t9WoXkv5 z+TfN3G;E~hj#|#=S3d@*h@jpFnuOXXp^fz)Qa$-KVVl%VG}BcQdCq?+ zd4NP{E+fA@X}@jNqKoURTPZ0iU7B2M-ZVpP+1ol(AZd`CfayyXly_w5Sr&^ zkz_{<>>2#pX$+L3!)|GKi9DD^3I719#bavchuZ3?7cMQT%?d~1H?2D|yn8?29-c3j zc=TMsjq+CPmLm#&6Wd)pKBbYWN@UJ4k!?-3!%Saoy4|*-nx~@X>)?IfWo&Os0$Yay zbTHsl(|@|dI-hg0YNRp9t!%*RXok} z3#t*({T^i_`rp&w|6K`x`@MS}EH3GFvTb4$WH_~3JC$eK-UYkg(qGosHx(HfSyfdv zIx>=-oh_OYfvF8p`FR0x9vTi*=LH9>&6@wF*(DBq=BrTIbb_U$qxvaZM9_0X!+1wI z>Wkv7Wo}$lu%at2{*x|s$wk<$4_fC{&OiNy*Y4K;OuK)r?6Y+daIX8;Uic3+`{G*| zcdLN-#3L=K9p5W6msab7jR;2-6BQ0c8-zR(^0qA^cgO=^O$r@T4lj_98TVgIekgT| z<-|-V*o7enX$}AJL)8c@DjK5C>-I~HT9h!eUkYrQD$5rw9V_`n*=787#gJ+1ayJlw zf~vt$Q^AVd`vjex)w|2-MWD4`xXegiMe zopEK`d#$a~l+4e3sDd$vj~!k%HizZZv{Q<=I@W03HnZ!4=Yy*B=en2Um3T;I4{-@HJv^#FfRyr}!EkrHQZr zs`wF8f_$T`7d9E3N%lH@D06N519N)lUwo?89Rw=NI8m zW{c5}HpNv|uLTs}fiNg-W*UNk*fj+vHuHg8*If-p7JW;sLc`szVP~S6nj?p!P;Lmd zD8gq3#QYM(h9f&CXQ|=ZwQJ~>($ae;yGcTJia5P0Tk_qjj*gCV-zX644DY0LH6*oe zo3Wb?qA_cpHw`6vl64||T;06O4oyalZpXBppmeu3kA5xc!jl1SMA~mH*h*mOI zx~+k2Uu1`#o<8%T5E1)Lt-e^lJvd;XrljXUH?bs8QmHT^t~>8Ud!)P{fJ%xS8g z_zrvRZeDn`+mJ8QBV;t^Hx^YfT6U$bu8x$H)YrGXqGEXI?HArGEEb3J z5}_InKtFO|2-3cUfiTGeuY9pZ(#-tnQTEQ-T=|!3V$WVqk8IbDX&_spomd~1EKp~n zgi^td&_%7rpSTbH6_Wx^Gl#otLN~}o{I#{U1%-qxX=S`|ca)5F#Z?SHY8Tt>5hxfU z(;_ju#RkzmVj-`djitGn&n18{(f81W8Ry8?kTpm%vm=~^8vzmMYn5IW8 zxv@v*K)UUuMp~GgszCl&TGcaM$jg2kKld!+~hIUYxPQ-1yZQ=11&nI zN_}0X5s^v(6IrBMt^%?pn&0(uzZq~5Z*#A)#j$aJYArHdG5N+>5t(bi?OX>=-&xvA z%*{mu8;QW5ydAg!{aCC?sAY>~z2744Ibj*f|m2`eir4GoPH1o^$FuDlZ_nv^F%)BW}biwV=Ejqusy>^<}Bs&*U^0KoWS zwtE>@5G3Y4Tl+{yk;3INI|(I8yD0Tq4g}6Q$h`L~6-!t|K2}QT;{d=996MT>rRY74_*G zyG)*crKy&X(=>HYyv+Km!&lVFQNqa&Y?Bai_!s#|#yt7Y;c|ZMTJ2Rq9jLiE=HRGo z@MaqpcT41+k!$;)=HdkepqRU>Q)S{N+^Q&js8UXH)M9kW_mxlnS+PgcvMq;{$9@h* z*liTLb-FlUIR-2deOTibC%>)FhrwXx1l*OBl!}ssTMyrLZgB3V|4!2~$i3_>`Zey* z$Sp2LVsH=fvxbLD0~H3CkK`yEAbOCf5*gf!Cv6fGJfnCYqHZ@T$tT0B4Bo^Z{c==W z(ElZS8z4r{_4PAxX$wN_;VLx*)WY<@SrJ=iciL}uWi#$ktklS;LbhU^YiH|baCs}l zO7&`aG4bb#x{*(Y!%7=B`CjEx~Qra@dFNyAMB zu{iLrOvcu9?=Dd+qP?Avli|#nFlwJUlfa*`^1J%CbIaVWz!dcV%4K(&g!sr+eC%s- z_O}mpgjxxuDi2o|6(#`qaaCFoF8P5Rsfl2N)z#&%nkiIPRsx0u?ZG0ybbQ>%5CXWn zb)c%|X2q~ao~Vf@Ttr(l`djmCQV!a^K4Dbm4(a4E>J51+y*5_oij!*C$qFo}M+1*_ z3j!~z@7AejiY}p(NVrH|0;IDZ(?>7O&CMMhV*+j4i^&4y^8nxSvE2PxJJZqTYcenW zrc{S`QMaQ(BTJvx!icPQqDe%|^x^JTeU{iGc5PJThWGdOb-;(+7&khnqX$P_D#yJ> z95Jzfp(V3J04;?Rb?w@*aT{%T+$)D{?IlR=?Ccy(j9Y>O2;VqIuXDt)B)_Vf*z}Np zu!n%d7cOq>lkHNsaps5pMBdGHurnUB{OK|=&mjWr(jGix?%~5)CIDio;kz5efK$F zAF`nuo;{I~XOrQ%z5+QJ^EW+!3VAc1=;iv*`_(#w@l@V*7Lr|k;pnP0DzT_n2|>=D z3n_AdqZ!0I8ePEAlz6Xaz}Z?5rP`FX*ioA22RlN%6v%3N)`#S*ioP2g_BXp*R=-7x zCXj+VE>d=;E%0kBk@7@zyVacLv=-jq2ZWUJi~4Es>n#X--&{JX#1aao)xFVG0&aG& z>0RoG?u;w6^j$`qbHXybbVs>m0qc(Xx4a2u@9@YDgwyNnJ_*o?@NPFI6y}QjAS&3x zasp2gLqA+>?(RY~Dg|b2asa1(ABDTM%JX>EaA+aU@tc~P%u(sp8awK07k0Nr{WqG7 z7lDL%1;)gBA?mYk9yfsAH#s^>qwn4wDvhmm;1lMeAV*s>UqVuRB05w~S zpR@ssfy;d~9Kx6TDT%;nYmp-cirx=Zp$=g!l+w{727yp>6}MMQ@QZ)Tw?Dk}2wIG;gD znZ6K;2R#N7RSm~i23Q9B^8UVC-Bi4adxGyG7;6AG*SypgSU`s`k)zxH3W;lxpb_2+ zce@OPU!J3{rl8q8rQrHPxlBMK*gmOAr@E|6x{y0bBrV23_2Wlags2rZ4EVEt z7vj%D{X+Rz(nmz&*W}Cz?j-%q{zMbbC>lZxEB_8;9);-af!fg>p+$dt-$Y@@iqbVC zIM?pMjUjm!oyy)aL`zFcgU7CV>emE-7dJ9xwmQx^3C_|vjm#m*sELtSEcQ{$bS)Nf za!`DN0LlfdhMtry`%?3FBg#uWBBSCqrdwP=68RA2g!uU9u9w5I&P#-12oz#aFEQ5b z0%-keh=3-m8BS#8WP|C1b2WAbf7|=zo9lsT*WcDw2N$1HMjL`;HWv5~yH8lPKxL;tJo zLtH)H{;pd`LI?of9Nf?#aWY~)-l)bBFxoXu2%`>muH$XelOp$YcD}>!4i8$rNmt|q z+{;{zKB6{Hvr}=1AmnaLObl|O*~tL=IZwQYuPW7dq!&;1$q?FZBOTl{Ft_w)_iUmT zr&s~?dd0Hu<}ox z*Ay1K3;bu%0jT{E_Me)!dWS617Poac0P3R37s};tJ?qi!EfD4nCc^Lbm5V-u1Ryk3 z{?>tC#zEbxfeu=6y{ges)QU=~0#p-(s)6@o^S@fZL;DxFA}Ke0McXRRogIkDR%hlW zfZXg{#b0cZ3*+~{PKS$uo)&+Jnp09m9YGEpCS9X%?ggj; zNe3ZtsdW7!m?VJQ1561{C#<8(bi|O;QtFGpzl8h(3h#({;j=#J-yu350MUi+ip!q| zpp5CG&iK|-iGWg+*4Oi(E^>vOr>BKp16pbk1k6_NfoFoRSncU;WL1=v(bxl^mswF{ zZGjcBtch(Un`*|tW&I))rO7YhBkN0|g6Z0sspY(JN@fCm_94jwu;JI{A{Gj+=nD-~ z_Q@7yA_4-^xL?12U&1e3IyXKVWoCL?KY(?-ZUHLF{X*^{JIum@)toM`Mx0l!)8fLK zBv50H)8lv7b>+J$$V`tUbP!V@x`URg@LjB5DG%?>$Fpcjrk9qMT~4QKwQ{nIeEkx# zS`Y}mW;&({UkOCaL_>8(+z>?Lt7GFK4E%&zk%0`+OG}nqyWhY2 z*S@i~wtj1#T2mv^WPrgQ{C>aAKrB8wD?&J2Mv*0m}_-3l2o#G>9ZffdB;&sLt z^!g2p<+)j{H_njpA5nN+98a2-k(93f1s^Pf0brnO>y$p;95LTVlA_FB3`4B0uC}yD zrTJD>R(^bl4*(<~La_OcnXIOgE0mpI>?>*tM;H&8Tq^l8vxd^Td=&S$@KZ8B;v&Ug zA^}tLRyd&G!)sz>hzy|jGrZ}9l44>pG!iI*NioWt0;$`_D%Qxg_)9{&to1?P2{iuF4Qp~>-&nr3#{Z8Hjg10`mI;S3U)J`&f<(AQOTs(h7h zBl1o_reI>|uoO%Z5D*w5Jk6jNfg?dTlT^6}RL0}G*mxL?a!rL1k zTmQ<7G6uPVCCOIM%2GG{7Y%brN&qE3>HIUcD*0A-;s|ny9y`0A?bx$f zKrzj1W!x&8^m6=GPo2UqqM1)XhOW$N^Hy}o`JpriAhjo|C}E!BG85XMf;nk|)8zN; zXPdKPs+4#JJTDD?&bp|~&DDQ-Wul5eNl|3~OCDw{1E3B7(Bah_A)@H;?T&YHPcj|t z%KH20Yx8G2oy{?W=LLTkQ)>Y8;mCjsa?tzfcHWr&MbvoCAdOrsP7NXe@FMc=_E{=e zR;-rI{7akXxqqBRO^^T}UZn-z^fb1ug62cWFaUH#!p@EPTi2M!*%Y(}Y5~X60UNl? zr|w?T9e*=bZJ%-dr;SbIolyVrI7v-;%!@C7O(|rB*=jibTnD|zeXb0+1;CN4;;<$a zrupufvq&cxFgyHM5-?V5I&nIt{>StdPjOa&g!=ljXxAT?#FMGtV{k@JSLc)qXLI`@ zbxN@+9h?8*Q)0v?j1+DMQ=gw1O7d&p=ofTQpaAq)Uj(WX5fnSFiD{|=pqqfeoe zTngK8ZW(Uu=h!hLCyCAM*4CDDodnZMH#c3N9H%;m$Q3{@Yxs(mHIsDkxM$L)`w}3` zFuRAxW{%~H;L}Q5OiXNu#e7sVbtPU&1SxdEQLJxA zaYD4@8sg4~%Uo&Fzg>6PD=Im#44;SLiW~-G0%#sp)VV*%k3%QyceKN%OR8MP3RqrP$ixvV^_@$bDZ;u-9QoJQ z17&f{(EpUIYu@B!8Y+W(_#iyMO2XqCpSd0fpn3aeJ-kWZR4pkK{dbrW-!zKpCn45b z5?<{8>w1@vRL(9g!{JS5C2?k>5NvmOZLNpz3!kP~7Lfj=VBQW*3~i3OfbV&f((4!X z%=gCeG4614%>VgW`;{+lBcEq(dfp9Muld!GdtEH6Uhxsr=-TcU7tyie#QvOk!uhkC zyM$yt(%AIy@c1J;#~H9rdYB=B)I! z)Obp7=0^16XjX3;s6cj_fG=G}Toi|pWVw#P>yFm%s_AzhJiLpA|G^lPgGH0hIq}hW zM}#i!tW5Z_5m(7!tc*`xbniP+y-VPZHp*9J3;d~XmPO;=o}TEGCGfmX3h-D+5px-` zO7V@0N$rX!lV4N=9v1!}sU6vix2yJjJrqBlI{1H$!_E_vXII*zyK821#UGr$M$*Tf zBkJ@&?B>r1!JE@(&U=AbuV=s*7A{bfOd8QG4Y=2HPL)wQqGpycu6WCT>2=$B_fXL` z`^~~0H4&QAGl{u5Njrb=yBr~u{aXWmwzyvGiSYT)DPw@?FFK!1zjxhHTvR$$7&Ydk zxEymA zDPA)JE~|!%x|t;p{Tqem%lN`kqH$x30pui?;>D$kI-lp-nJu}(>+9XLrZOp~*AF-* z_lCy5x%Q_HIpu?8Bxj1@SPFQtrS)(4LR?|xvCSKR5-(cX5%-l6SKP*B+T{IBE%G{e zka4Y0h=oNas&jaGJ4`eKZV#m!MuMn`b-BuukES3dCUesb9(gJrq4VqOQ8G^k?F{U_ z4tdzaNPm1!%nxsc0$-V6`#a+b0UMvR5hjXRKTXHLcY*84y=mbFr=3Z*1?P{KpAH4Q zCg=eqgFZ<|1i3XZKq+>XRUPM`c!Q;d^4!%0kgbgY;A#PD&Pw2;ML)JBj$CWi5fP}o zcUA)9y}YjIClaCcdpbCn*lBKT?9<6%Z<0{faiLyS;Nb_Lygw~R z`pXm-2$)IJZ!=E-+?Bk(wiamL{+#~k$^GMR*j2k6uN2XGOJPDtz+eJh*wc9dUviMI z{jjyMaS}}dpuvPO{%en`e-`*AxaC4pe7SvAOKFqATlxew1Xs?!vwNtrFe(Kr_XW79 zdY=3Al%4TE*7+an{Ev11GhzQ@oxlDEROlb;{Ev11$2$LGo&T}U|5)dLtn)wC`Ap;BPTN*(BATdCuTehtTt6&x5&1co!IW7OVCx>LLi_ z@#v4=GlD>ASN(ZFpjQ`|NkO0+fBwwz|K9L@|K(Pqig6;pQNN&zo?jfRc9J5U5DvwgtMz7tB8GmILLyxr{{RnqbVneQc!rv}*v3?XG&zU#x8l2lhGU7q{1l+uFx4Oi`gYYu#q{JEWx9GcSFN4N^}rdOrKarm)<9^K0|1^cV@%4fk693%Vidm zjS2~C8XCOlZI&<4X+eq{qpL4vCk1h&rb`K0x)=E`RnPNz%09d6z5DnlwBSC1R_Z#) z_}*SSaK`_GxV#^@Jj_yc4U(2OIe-4H8ZF590T6t%3Vi(R{MAP&d5U@MMQYe54l+<$ z%21RRBlweYh1B(H0p~z+cX-WO5fhC&In@faKbg)SuD8|w=1tf_>i14!9RjQd-7YrE zn1DbQW|xp-ITd%F4p4*j5;W<>g?41a43lcO#ZwX}?vN0G)=kGGkg@xwFcsDq^8i|Q z{KbqVTA?w8uAMKx+yyBxU^me*hGP BA;tgz literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_187.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_187.txt new file mode 100644 index 00000000..fd1fc407 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_187.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e5db1baf43cdb242ab4e843f74f2578b9b8c40 GIT binary patch literal 18071 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 Kh5TEOpZy>3*j{7+ literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.txt new file mode 100644 index 00000000..3c97bd31 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_188.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,3,1] [3,0,4,0,3,1] +[0,1,1,1,0,2] [1,1,1,2,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.png new file mode 100644 index 0000000000000000000000000000000000000000..2919ab5d825d2d6beb93b3e49cf16ba9c39c414f GIT binary patch literal 17846 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.txt new file mode 100644 index 00000000..cac9f5da --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_189.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,1,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,2,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1cd917a38260525e4840918c9fbf4293024ddb GIT binary patch literal 21239 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 W3Ube^lmZ@T$>8bg=d#Wzp$PyHze-^M literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.txt new file mode 100644 index 00000000..e7553c62 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_19.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,0,1] [2,0,1,1,2,1] [3,0,2,0,4,1] +[0,1,1,1,-1,1] [1,1,2,1,0,2] [2,1,3,1,2,2] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,3,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,1,4,3,4] [3,3,4,3,2,3] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.png new file mode 100644 index 0000000000000000000000000000000000000000..23cf7036a8d4810ff75b27381270fcebacc52fc3 GIT binary patch literal 17013 zcmcJ%XH*nh)UJynphQK21VKR&0m(Td0+J<5kSrM#5VVOZl4Fx&Ba%d#oIyZAq{%rn zAh7|-(BynqgWJ8&`OdiG+#lC5>>pLNLd{yW=A6%bi@+x;azyyl_*ht2MDmXxsbgVX zXvh4&d=VTOsv_yZ!g?qw|42&nP4Y^LqSZ5G!dmzmc@_=fmDW20m(-O5VHw!eWMVBD zzonR|tJS2K#56isGDJ4MZDF(Dp`@;^{J_5OP-8)Hd!=+;vOlBJ!D!JGUzdb_2x^+s z&c!X)8hBSGpf6H^qwR~?{-fnX`L=Prk*+fOC4F1_WADo*FY=C4PWJ~ZP7cd<#`#FF zu-@|9WZ__8NyfZuxrp^v*0^|q_UQ2YxVyXm3%cH}lbXXr#>0DZ_p)TPB34#b?y15= zMbm#dycSN0x{j*yh_JL^PiYyittqY;(y}|6uHb-qtu0tbvY)&%S`$B9)`cP@=l1q0 zk#;J6@kvP{f`XiR`NFrlWIso=xQeb-&)2%_Y{KR}>3UFos@}hbc1za0c2l*+)*(xf zHN9}|NA=dKI}6RKB&Rbk*Y3Ha3L9(|>h~EedzYDq3XCR3M>VXGE3Rw5YUHF-y!z+{ zJ3EQW?&1NPfh8B}Twd{t@^XeG&y6O^7q#25 zt<0G|+SF59NjoJM=}W(URr0psrABYS-B9qvyo->0!Wd3u408pkM5^D&m#V4n^|alK z9CaHElZE1P-me}J?VRjHIRVipTnB$od0CgZGB=pSA5?yMFz;Ne7B)YxI?{nbi5+G7sj} z9qi~#&HZv%Td8;v*|)uYEbyfk5rOCJ>Zam)dhF>P$SHSPFSp(2T%2ub!EEk>IAaH zF9(NvQ(8VX8sFpYe%gb#>*ZFRy}w*DA7z5gRCC(7AU}Hiy6c&sPa~7f_})^7-9##M zU|?WfWe|;as`(XWmntkiG&I!oB$~3-r+&aj&F7^@6O=xCzb9SJG0`3i7^*V~URX|I zTaRBuu4_Iy$mT-7Y`<&hG2`p8qR6l7IIx6TY}p*#ghQkFybbleH^aS6R+Nc&Q9pnF z{K0jLOG2W)wDgg*06O+|%m#94`^R1D{lpN7y{3U12bB)H4RZPlj(j;9-|;ji8OYb6g!#PwgCY;=S9~UxZ%gEg(Lfr?1;lMKX8ycGkl;tl#mk#9UfH*R7|LoQzftsp{KkF)!#&$hE+h;rS+`1?;soNZ z;O^1YmHHYE2eI`|m|o#&r}#?O+~v&A$cL#N!f0p78tc*-Mhj|X*e~S?n=&g2*4L8c z9p$0ksH#Xo>tZ`%*3Ipa!wLAY=!N>agdgH4u9Xlc5x-Wvp#qZh< zWNG=?7&T^S6K6d5qe9?>BqVsToZ%ktJO)H!rW0p=dJ8(~-s)vZW2+7jAU@VJ!S!S3*7xSQbWv1Hwy-$o?BOobON8uEA*6hAt%$=E z_4T$C$OH@LI(G}RnsahUuM`Y|w!1>?A!foV+u7KP8z(PYmDtD~^hi-Mx(1rA1DSjt zsg^%iNO<#BmnfwC5?&qb^a;6zKlvW!(uG89?jXF753RrY_oY;+-z1nv=j+C*DSYEZ zlr%?LDi$6u^;~;B<^vz*Mc`(?QPt5+oSC*t9Fm!Jut5?0_||qu+TX%RHjwLi#QfV3 zQZv1P0i!O7Y^r_fUyWHGJhVMNABa86v=na|~2BUZ%}!tgkY;`T(vE!|Psx@^upA-*`i z6X?7-%W}zJ0z8Fy>24zYT1Vy{+?R1ek>=_~B2Xv@fQpa*n?*LsInh&G^vQZ^1RE`8x?IiN0OL13yzwhGyQ*t*X{ggfS#UMMY`nY84EUC+(Uow^x2J3H%IWB+$xjyLWKFUnSxD| z%6qy^{ij^6(fda3P9cEB2rz&h{zLe#PD*tOS_T*ED)X+p|7Z3@9-s#iq$d8@c+ z{=MS;g%()M$c@D7SIrnrj1gw{%eYAXJzIQXAC}o0e*rvbOEX3n<2^I^OfKy6^NtYZ zSmIC5X(GKZK6u{6y`&8uN%!y*svD+k_xT5j&Mc#3pdPiYsv&#wgadaZ$}&(Q!R6^Z zFM-uidO<+}1p^%HUW!}yX3{SwLSCvlYqO`f%+*{qckRpxPQ(!+UbV@}UN~DVo$uU( z2qF*FYor>TfbAz1cuKIZoV5`j(=hnJ5S5@r1uTqH#qs0@?YVKCXJFG~WXbF{KMKLB zWOlkT+%NeavqB9n?UK!>?|ty_!u0iV@(vB-pT4BVG?IPP9U!LsnCBRzYKEde?<*Me z1&?;oxSwrO^;!2x>m$dxcb71$qKXVO2~;0joSY!p86U;$BdN!)cX#D>%IetKWIEoz zPq%V+KWvG*M?x=7OGRZ}F`A;{KXq57o3Nugr?@3c{0e6bWxeOdmb+>r$KB<+anBuO ziR6qDG&e){i8eV)Q8xvgGi`prY2KpeTF0>A%SWnJ76gp6+|h*_^!ScJ7;Jqu!y=Y5iS_}L%tRZ zJa#*fG#G{R=^os+Y?->nS|+CVx^O4B5*MX`(#FB`(`mjoRwZ3;TXln;KHCKk7Z>HL zlW(wb>bbqBb?tPd%ywVg)YOzgbPw1N`;oXo5gCg~v2>Bc_CQ5FzJN|bfZMud_PoIE z#KdmgWy_6IcTEYgdWc&rkD0kYpSxkLAqh!_udlCc`n3uL^j1o9IK9S)&`=_XiSmfP zkf>+|F4SE*=(^8Gs>BX;oG8zYjkRgQr8XKPTxwRg)^SzUUHnwfT@O?1Z-qM(LSh%H zPgkqbpVtIVMm>!x(r~YJrCw%qqUd7KU3ybg4uWdHf5is1nUl%-&$t4L=^^(R<{t-fxKcJ-@IE1G#nrCw!Iind7yI z8bL}H4V3dqhx6kSqdHq#+Y>U!k?@b-Bf16o;5QyTDnXL%u6Iic3k#D{#@&;4euWNY z@aJXhYEN{TDQuBl3s_0{B}?8#^Wy07FFddxG!bc@xOi`njL=8_Vv#dX_~U6}Z9Dbq zq@|@7Lq$@;JnZ!hI<6kxf2S7B=k!)@dPc^sJ47_87fzz1Tn?Yt%zW59dAPP3Y<)D2 zypFXqfz0-7B$Z%zIaex}X=^bo_3;_q$i}r2SEjC2r59y-rCsW)*>^}z;L-V1kgyMO zCF04vy8Qkz^1mk9l^2+nG=ePVq&cb8j*pKM-^YpUc`EdTh-QD%DiNpUM83tNavUxU zQIMshqa$YHa*9;!yIOXS8*OJ|?kV{3sVlyPe@yD78xb1|+4cE`C`p{8>X6Cls~u!i zkaEsqaoQ)#A~+?DxUfq%VmE-NQf^{sBX7sV=ASXKxi%Z1TaE}|iJc;e*;!iQ0AZ4Fr-C62dduUTh0AXyw z4Mkz|r{v%omSP7uzwW8IDJr~9F3R_I7b(5oL4K(i)EX}hY&)F|@9Og;Vk~7aG{%%98f~6h;&e7=7$Fh`nn23qMpJ_FUuKp;w_q1z_DriV8N`^|I zE)Tjr%2J0jXPC(U_{U})#n{BwiJJ95CC8h+xv89}I>_V05?E%SAV?6sriVOsKQByHp(R%G8#p}ewm*F&nPpnCWEzR4P;5{BwEc{vOs zaQKp*J34ZC$i8rOE$@@}Xgs8X&S)%4_ekY_eL{EiN|SY`zF1aeP-(_UrsO_Ll%-4u zzwu9ViM>f@JlfbBUyaoryRh4~Hf8dp)5gCX7e`w;ZZLYQy@*4C{PLX zyX*r+++<7IMxKYcAGR;9jYOWl!nif_Gq-lBt7TBNs|5y2=(th!(W0b(X?tB#@99%3 zUg{QB-0=&un|m8(L4`#{w>jYQ?oa*w{rhj3ykKT`a_qpBg6;n=sfUuGKqt}v5mD{d z-ca}00dDOVfK*CGsZj$1T9A8+gm2 z1y1)UdqnCfB(d%6?38G+NjEn)6%`eEUy;9{!Vm8?EV#!m-!^1^^qnLBXLqwp&HXF# zbf;T7BdKV&TQ`i?H-EF7824Zdm^BE)Ql(J3-{V*LXU^LH0j+Rm)~Y zBxCC43m6>YvL|u6UgoVJ++s|2+S@!bk|>dvvZG;zm5X;JT%D^S(4yr2s>rAB-mhNW zVGmGcX=e=zX1m_4kkZ-Ea)` zbnJ`UTNrc$_=?>15fS5w)S-3| zqXfH?lNmv?1lkTi-Y%jt@bf#K?4||#-JOYFlofPuEL9&2dt0XNSSlU`U{M^{p|(=S zd?ZLml+$n0bM;xFmmLnYb7c;7?|MDDG5Qnqay5P#hcxRT&Y@VmY8UEk9MknvIfCu= z`e6jY*6!|70BxWcKo$ah^@?(1> zmg#H}mQ8~OzVWO4| z_}8+omPZ=f7ZYXjcYdft;5@fFxTUswMOuZ9E+>>Hjl)TbN>~zX`pH*VAH_F#e^z*3 zw$Go@i|K_Dnzo?vc}&AUSwd8k8Z*)u80ivvxdFT2q4EZF{w<-#MRWMo@8RATdC~sW_qt(YPmXe4(f3md zB~-5E|BJRhY%Zq|ksL&YZRBt`T{QiS_tEZm{7|6iCQ67kuE%`yndz5yQKTU6uk47K zLbatZSQa9oo6DOHLTuLJiLZ@%A2mj~!TO>YhMU^)+B6^SGr{V9#MtFHJXunXdhgHB zm%;AS;+A<}x2i}VXR_`-3+Sd0)r`2U8v84amkf({xpWKeq&{$R+>a#mDhSyK7tJ*u zv|MTR6%SI~t`}umBHuy2?|aSOHMtuEn(E&45x0HD{_06dF@4UeUJC3OzI=U zanRJVDY|PUKG^C0lIs9?qK53L51!*6Jf}G_+yQ6j8w0xZ5`&AGn@lPyDpExu4Ddos zdFW;nCBuEwycRbq&+%OjH|Sn1 z0qa)k0sHuKO?>_&c=mFMjBH)9WrEY@GE!_$tPG4s>5sI`>y)`RP0PQoRQ}`gv(qN~ z6WDTVE523+bB84DHsS)CfUfFyOO4boagw*X&K<8XdRbRuueKC)5Qmf9H3B1W`5lps zN%^+jvw2UpR8L={#NlpE3vYs0!oB)-CZgaG;*Y=jm0%J+U7>1aD+*}NASnOz4?UON zK~_~|AxgU8XwBM77a==_L_NKmN{N7z*+XEpIz}&FzaA>EMCsz$iR)jB${Z)>@Ro4b znER1>)N*=9Wbb(5bPZ~GMKiLds!BeMIZG2txg*d-Fmv(6bbG&joyF;+AD|30@VT{G zcHPs}cyhktg*Q{N7#|;>uyEpmX02cYWCu9in0QP2Hn7S(zw1{xv?M|;Z?5mz$tbx3 zM><(Jlz-e8!+Aj;L?lB+q|Vwwk*D3NqweNK6Umr#A#r^~*u7Ts1Fgd)q~g0sXLwSwD}0 z?{c$F>dzZz&he~-^QVz6i*Hd8m!sXo_O33D2M^TbWyV`SsSDH^sv5A=zFAp%Uj0Ms zBBmtMkkO-by{R#A;rfg5uT?cQxy9AM%h5&5v#8-jZ7Z7C+jpcoD37YLz(4%VF_D?Q z)?uMBMj|Z(!MLY>6~DO}^E|}k4&I0m2{S=rR01BV%2e=0vF;i-Ej6|Ji?M}QDBG;* z*0;lRcr4r+DD#e=sa&*I(Cyf01FJMy46+nyfT2sNOcvrGl)=h z<-skVlf*&?-NZ(h7M?vQctw6TiR!P=vA42cRe zLpakSN`fKfMDEIiW3Au}t$qX>0EL{-8C`mo#e>=zlt$4OeDk@Az-=ISNCq}_Ym^4(g0@V9 zdO7PfR4x!CD)&t6qj#1&^oD&tHv2Jki1#)!~2efWm6-0tUdA5GwKe*4Ebk_ciX(-a?^% zl$JjIn1E+B_g$ugn-h8GDAyTKl<8%Wmx zYj=|O8X4VQ8k%i}<52e*K_1}(yMZ}U@>yPFI^@QNj&^;UVT+D}cRH<}#AZ)=cyM5I z`!i)@XpYf>>Q8sdv!`XypB&R>TP#E@3>bI#KfO3l!lu;`ul1Vk{?2<7%zGLo?&whH zllEu)Do0gEsUU+y-huDk?Pt$tj-fKU@-ogn?;HQx00Xm=ru&xmL~i^U(SQ~MzN4?S zx8EfEbA#+S;Lu0oHHQ~3Bp_(iRHHv5Bjbu|P2U3NSA)xmX+p$Sb3FzW0|H2fT6YhR zF+2Xo0!G-G28H?A7ZP4+XWH)e^r}ZJ4#hdDDvBRRR}MHF((`_Ic6LrqPJ)nPJOB3_ zCZqu1v)is@&M7CXrFTj?ci_v=Qa^n^p1!_53uyN?O!+hAf`GkZ6RD$kfVdR|l5o;* z#fvhd_|r1b0++?KIQsV)0lt1tfT42CEMi3<0+3?Pny49XidrS16a9z_7MU)iG!L(I z$=yWA=YSS=c6Qt@q>_q?swxoNAa-)ZZkI>BGG^e27Kslt_`%O_Yi{LdVO9PJywhB| zj?+xvFz$J2T3degN)eRsNNaTxq+K@59x)n4;Q+a&A>kHuU^1_aNmnP&gc$1@{hI%; ztoC9eXh&od8|YDKdSCO0`O>yqr4J>h940%)($c3uC*h@Zjh~+%<;!Qy>h|W%V*W(msH&?yzf_YZA9Dg|o*qT$>$d5uW;8GL>K>Qtqn%~WjOY`&c z_BG6%_>#1Hn$MBq*?{D_0>trb_LT>i7k|8W$Ex`8XQKsam#zG}0NB9*o%4m3 znbx%ExmZn3{~&8ZAb3>GQOFU*L7`re7WqPzt}x4=3p)VDD=-~p>2)r7rOpT*5;)$* zxYVfLM4_EAZ?SL(@IuU-cjN~BLxWb}kGnd0HYP}A3?7t+P!?^leH&xYUdtQv31mFGi>bK7iTS1yo zzg9=>hl>rMH3>vKof-lZW^BNH1_qIFc<&~_U|A>H24Y7z0s;c}FE?$m_SRH-QgDP2 z)CcnLIlZ6D$;s*IQA1Hd@?~K>*8E}eQDqY*flWj_y%BvK_is@efXNjB;#93M&9 zDsz9FPxTN-m+_u$R<&l29X<#*T2Z=cB}AZNe~&gcVq$+4a53r8c@+6f-N)fVyiWBN z8H}LlX{bnpg7Py53~z!+!uGi=iUH-{5n+?Ud+SvXN_l>%PvT-WHXQN!{zU5v8whcr z+?x87!IC|Z)kj5u2`k&f_X&(*H426rZ+MCWM-Q{QP;&2M|$5l$zjes*Jc zfVu%M-@jpIW;Q+iAwD(LNKfxmr25yGy9Q!s0eMUT`JT-Ed{PW}`UQt#duOhEEl3dG znCnQYsi|Q}41J3UcmeiOZjiWJUtT_^T9LJKk37~b;^lTgD`R3uRwcb(5c>D;#|EEM zG~?GuDRr4XCg7^0r4pntvAiYYH*>QqMqBXN+R+d135keW6oo-iq+_cyMP!=3v_l7u zs6@1cK7cD?;&&t&C(?=`I|jwx`q*ms9Y4Ypw;hFiHV*Es{PYa(ERsS%n!$friT{0N zp!+OECW)4%w|9LQ0y?Y_2cjxOi7tCh3o%BLbVn(4P%~POQI1q6Zptni2hHXq8b{y_ z<8eeP^FJYK5lGd{Vy=y^Ha~oiD9H+!hIO zhH_A}Prl*_C1~xw09tN-i<(z@db{CPKT%HRw& z!uI_TJZLygr>NyDI?*nykt$E*Rw9Gt!{)CJC?P_0yU*R-`%j?+Ug#9gFCJ=c&xh`! zY4N~eB5_+qcEJ`;g%fVFOdZ2#3|%cCgubz>8|?I58X63X%V4hM2FBOE0K#E-*GLS( zFS2B9CrD5)t9BfsL>QPJ*K@Gi;CK4ok6J~oXv1+3vzNRV-862sv~Tw%R!E@sLv;94w5GJ$PmnbKHCKs@mFPR7;dU34K^dNa^T`N_P6*!#ghU2MQdDU=}g}UQO=m zx;v{;$grUQ*ZqkgDY#byBmq@|VDxrzTNn1AsDsjqOVz*fPpA1u&}+-fgv7-8a5#v; zdkKH2h132-f7o{nO-68ca$1v&W>+91@XIV;oUpJYjUlC#X3z+#YqVUKHJODDkN9C%@`NQRX z-=n`iVOQA5hm3F_sD*SlmzV95Eogv6Bw@&N1aZ{)8e{}iBjU|@k;w){CL~8%?5!ZQ zSrqqpu3a?hWW`T>w&esmVCLBSU9-~XtPtHuBB^2G;gLLe^Tv$`O2aCrrqf-ZHQUvCAtE)Yt3q%6e_=eY_@`jeChz-xUJdnMr`a+KOxMYTh zha)HlGaj5yP2J`T7*k+XDQ-zaVx9}aIR*r5`T6;N0w-;4Z7Z%K#hy05-~|Q2q)@OK zBmY#7d4Ha5TS0)l{B5LuKLjHMy8cHBq`-pKriiIt0F`0&9FM$j914yxZ^iRRS1dx4 zKmNOA<o`D zkbWiXmOUQ7nKRR}`fV~LZL>E5aI*a~MMbX8f+e3Y03_lJJTfYSc1Ki=&@-D1G}=c! znALsM(!GjpAJIe@-%?WZ6>t&zQ)fKjSMQsIb%>_Hd*}@%S7b1_qGwHMcO| z1a2~{@tiNHzVd;lvs7XDf{yc3KjH{Wln^oHrri|>53xmDjrly$9L%|AC2Z-@Z%rbA zZw~u@-ZH%UyQU2OBPsL9H0ctK^dIru2xrOvsvNP6!pmJeJw2!7a@BTUwtjs7kwmK= zFN>_>(vd<5r^qOY18=o#%-pIy+(cwqI_A;s}Du3w)kZ@t*ih5x{keNE`K!Mh4$4%@%UEsZK z`AG^p{kT_6?DJ1L-B_6&?~kCeh<(lZ4^|-ECF8j&;6F4+?Dr>2Z^nQDswV-pj*&CR`iDj^85eW#T&+4L6z$|b z)7YKo=1SkpRe2)1O`Pbn`7z7{Fb9zRUx~MSP}X=Pu5I0p_0Qz4b0QNJ`~$_c?cg+j zJ7q6x>18T9lOwosjm00toS1)o{SOMzt@_H8H1jdt!tLNMIl%*y^!3PgX?OiQZ+dV@ zW%c?z?q3#=OtVWynSscZ*Z7wOymt=@e)1CS5B+Nc${%7)Rrkef!|MOShb90Y#1#_0 zwU7OU59%*f9f|RGR(E!GqVB2EiF*igbN4z_h@=oVw)uh_b_U#W$8$B$s0Y0@&CSgn z7CcA7(^XYfpq$^Ec_7Kd+YES1qGHB0Q_=yd^dFZTwEEX2uLU^}1D6aC0$~TgEqmNz zJljq2vur`-Sjw}otSl1^+Wj8>;0E>TE7xSZHt+M>CpIo_K^5bSE&jBOwX*ogz@!*h z=Y3k|!OL}44WNd6_|$tnDJhBUgXux-(lgP8lgaPcHihNov3%S>X~(PoDZxJ|etCM@ zbUnEPh1%MBmE9L;mpXFYR74(+3D9ky1%!;9S&1w_2!0ldyqiz1MUmfgxY*v_-d)ZP z;5qCnP0Kfjbd`28AmgvbwXU}!*x&0HFo3?9=Iah>x#@iDQ4jIu9C2lQSW8%r9# znQbLMozN*TB;P1_Ruj9%$i&2S1_M4?Bq01*V;{;Wl^YiLi@Y&0N$ar!I%v^6)W%FR znTeU1wBggJ@=s?KZzt9~K@*&RN2|fSd^~vfaD2Wm^YzzQ4 z_3zZIZ_>~t!C(~6M9#%lzpg{{0~F}D+{7GnG{x6eUl$6_sL&6sxR%Jqrp1<~ynYN& zKspt~qOV<&Txn2s2~#q5Nhp8OFMlOeqcOm5njd;i{kxe^1-8H(5co8J;m;1pUW+e+#wjT5!Woj#&`lQSS zJgHq|ONmGp#*-?x9Y>=+wJR(nLgybx%nP!0@$e8Qv2CVZ*nS0~{;Wxm0I1#vCp9DH zvH0f`=>Kr}ABYx8fuH61K;BfDCK#cskzMhOEk)^X!oEG_XDU>ZOiuO2Nly~@ zxXkp=86qh1WxIJo#r`{ykBZSImVded+9m^TT}JDe!^(5H5++NJeKhwS;DUJV`f$ZK z6a7Dzs+!{hvQT18?g^Ln)B4k`7Sv_tZA-6TF6PCbeqbNY6#U^JMqE>FO^@_1*I)$> zQOh5fT}4R^NRTi&e_kk@B$r%Y3zPGw|G5yOK-ys`&pXTc`Ob6xa#4`;YuTB|xH-hC zIQ^N3x4Gx==i$zvtueNg4}YLUAb=7oMP+AD0wXuV&@=VA8YX&usu2o>y4GN{l|})Y9||o%JVBueV1-$*=^<+`Yne}Ycz9CBoOwW1 zmCy!zdhuoOe4&=9_$cHR_><*FGHy7+f}li+QLEa8l^^|80BJ%$@y=S-JP%5SQ=Nq` z7JAy|oHySF}lLR#w?^(eT6RB_Blz~C# zZBRl{7Bhd5JYlMJVoD0A7=mouORC5|+vh$e+n#>5S!xu)=TvO*MUlKC3lnZA!N~bW z-*QE{G?-l3PgxVkh-*Am47pYbf{5HF*l;a5Vg24+0y3JtD=xZJKqdO*e-qNMEBrSgKZ>tke=hW&njWNygS{>ZG5_B!XE6dN@6W(vO0|Re_Wv4<1IbHuNdM9A9>((<1Ed3ZdC8j+ z{QOK|$^rZP`oyGZ0W6ZKzOVPrD0-UZ0+4Brc2Eng>x^_B{#(`iguILi z>3JkD1p^H@UD^!dd^>sxo}qp2>P zrTZ6^_+!^)x`2X2`9BI0rE>+zs7F&!NO1Dla07_tKx(86gl$Ytdh)BELO!_CTluhA zd{ct`n*9a7c{((jmithY#}37i37>D~i~&iNI)FnyaoPE!3pp?FCCwHmEw8V?G?s7Z zw^EkL;d8p<=t9*g3qETCk#5!cywLTyU*^~Y5gwcJ&x3k{a}>)t0z_>O1W`zM$Yc0b zldDxU4df7@@TeNS7#fw@5*t#7Sp2XQY1x0f3sFKWxQWqY-1xEPhX8rS=()~A-8`BY zZ~~rhvFDuN6Ah_?)M|M@Mrcv>5%YZ#Fr(->V0ic|LJ!}oB8L|v`lte;kIN{eG_1-P z;mm{?eGxZC{pzo*VT{aUJ}T|LIGQ%%{MSU`Z3sDolGJE*U0vOJ`oL%RhR~eR->Slk zvPP&&kFMZi6d5l9L>arPr`mydzo2DKFuA81`_p|VrdRDtvam+5jGj8Bg2a9D-o%yk zR?18rSCHvAg2U%3jHt0}6o<5$+bk%eCS!<$V`>>Qr6^g|Z-_jg1?j-}LAPaI8%B*WR--AiFq`+M!k6VS_|xF`$LO4%xIE_CWpMF4 zh{3;~DJ+2gVlGPYX|!Q1c>KYDRh`Qx*c86jt~pU;W&=Fo><9*o_Z(a_Aj=-3`OIOj z=4K80h{FN7F-G1osAi0l5Pn#`@w* zvh2m57PxGg71m6_wFltEH(uAZbV>`W!_)o5jPr?IM@I*0nFq}Adq+3UDGeid%4&w! zo*XO*H`s*2ue7e)7S#HQE`hq@J8q@AwEJ&xlqs;VmM<_7U|~`J^RY1&*2in{Y*<)U zm;Qf0tj39~N$t0h5INjOIb2B{u2wq)3*%yL@}hjm)uCIJ$qhkkvm8h0^a{nJEG(=D zo8sKv@tvEN+v9TCr>#?w+&JJnlyC=+Jy-P)2wclm$jtTq^tJIl4yB?C^jKI=B6y=RYwLNiBROq~UrRs^)7|B-MN%W^l}~qG>olP?80&6Rv?KwO zFiS2jyzeu!DQccS-JM1Hlz55(rS<7yZ=tvw#Ba)@Nn?~$vGXRU(=QqUaSuo-T@n8N zt>c`#$GZb^U&n4-qW(~?n9+joPIOd;@VkVCW%$WyYH2p1HO?KG@uS$r8KIvNnfUUEP;5?EYxmV2*uQj$d^F>+PdxOUmRG z9axp&9(T0IKC_K?#GshO{L86f3D;i%S_q0p`YHX4*K!NtO2L-8Vi>$umt8BFcFS9c0|4}aV$ zZU|O1O_iZ}V?ErI%^~}Bk!xSs2sD-Z-iJe($GHb%r(f{Zn`doxNJ4*G`yA)zOGmpJ zh0X%=pJeRw<*=UT-Ptx!8>H|`YHPY%YDDYi{?z>24^@c#Vp1LWsy|#Qo4^pd<;Fe( zGL!RGaV<=>FxFWyJ@u#iuim{t7Er)czbWt_1DuODTEQcaGhj;Ea?AfPB?f<={{)b&ZSryNRkEwWIE6>tVzNPfNfEAQxTx_Z81ldNv z?>qH+C6J$^&lHR~Q5t1a+&hEUmlNAEEn|Z9wjm?IZVxg_c|x`unZM`%ZQQepBG2hS zJZV$lb*;_IDHp>F>z_EW-kLGT+b#F$T{r9{KP_j!wz6DR#9_bHkW|x9u!;U2+<=9( z3Vp50KYPrz$PuY#eKq|O2R=5|Q`K?jVsZi9ugrv4Pl)kL2s(*Zq)P}GjCyBBV-H5F zMYW=uFl~uH@vCZA*S&I(y~eRnZKZGXVo9A}mju&=Al~X8`1=n39~aaAFwy_Tiae!% Zqx(KV$;PD;{5c6Mc^Q>Q`45fX|36-U>!kny literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.txt new file mode 100644 index 00000000..8e626dbf --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_190.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2c340a4074ca877bc894e70ef2574b0866148d GIT binary patch literal 17900 zcmcJ%cT^K?_xFnhQ9%$viZlTMDT>lGl%Vt?AYG6m3WTO8p%Xx)caSEbL_t955Tr(9ad{xu5%Y-m~6y-gVab!{u@&GuJiO%w_hg!~wi%BXLH*oQ}XmgpnXNX1Cen`*_rZ?Ky zc++5PDlE-SkY4mXBbbGrauMc%Z#Sn%ZvUb^mtIC!VsA2&tc+y}|0%VRUWWX>k!GQ_ z`&BDr;{ErC$C2;5Ia;JXb2y}Z*7%CnvZUOOQq`Wh$)-9Hh=O;}e%gK*kf}8hXIr(J zbnlRzhZ#)jg_Z#+5z$)#?+9WdBJb;_<#0U8e{Xq#rP4!2lEjvUk&G#k8TFk;TWV`- zi&?^TVGo@SOaS_D2u3cb8`2r&Vj714@-EiRdT^N4G%4=e|zlCcJsw} zwYRjibai!^2JGzY)YnV*&$XUGI7$Ud70&ZvqXQJ7I}`ULBqWcPoQ|}) zE}?o+4zKK+S$9>e3)P^mb{od>dy+#LK3CP1k5qIakyG#N)~7HB2kuGS1B+XgZrc`L zx^4CAUH9>KE8n=gC&^U>ynVoQ(5ib1-;OHuS!hb$jv3ia-{!CV+Sk8*w17R7PfLmM zlh0#G;+UP6FM{$`d$=N8S4v1WGGKY)>)Q-BG7}X9?^$#g8s+I`X38<)y>|^fe}M3UcL-H)XM6eSkyacRTM^_hQ|46_$;_;=?9|Jq`K$Q zMn|iex&~05i!Rqq+{2FcKXCp!@(-qY6pL0ATKAIcTv*7iNP|d7sEqU2Jx@~qjz&w% zeldSGu{T)liQ@b|6LHo6zMt`Pfe~-OsYF?r$0Hrd%1j&I937X1p9WKXzML za+?^^)6?tD%yuM+ZIr(cDk!+?YHMta+8^7T@1OJx-o5u~P+^;rii*kv6V16X@GVJc z1Rj4=wwe59_gtH;2YqtI&{D77_t{er!j(E2Gkx`IVKosukG#j-kxx%5iduwDdm|8U= zzW`a{SrN6c_tf;o3-*fl--?U-EQHv=azjgsiyIzC8%L9PRvKkosM{2luTolHTPsu& zBq3Z9qB+RIt$J<#wZ6K{x!ag7Y;A|p^iF?rTT|6U#8vr9)jSk5OHx@MVzds6$?30N zKQ$11&7wIpBqZSFgXbnDCJqiUey=7tq(#Tk-LnDGU2AvgJy(KL?{2(V+~SblkoWj( zzT42**{PG2w(iJ9xU7YUnADd`{+k{5MAtE>Zu6}MEy&nH%=8AIgOe~c_wZ?^JBCD~Y0dN#j&^=dccTes`QOCuiw%VV#y zCqB{FztYdtIU)&#(vUQ8Nl#zpVA_d9a_7HKK5KOeZy<1yv9Oajd~Z5V{j1C3H6{zanrWNmE6d*-qOJD*d8dgH zVR_&pX$oVhbgJA;9{k`!?Q>3rmRW?g>!q?X&^f5ec|4Iz3GB8EV>}8py>S|v5vwk9 zab-zzLke@K2GWBq-tD?9VWOvP<0CtY^q z>xAEP3hfElWpkfFodJKfT<$Z*4rkEsNTZvOS6cN}KkfG0Pp0T;H#O{_i&Q(iyEQME zbiHt{9Tkq$G0Q%3o*toSMzo0<~2EZ?~fvL zs%dQf^qsV7RWHkCJLM;8?4~)E9TG6TP=uQ8%0Or0GTtA{)0%{4l#Vs2a~+cEE1Y74 z#||`a3!ST0!MKEa;u+Nf;jxCzYmc7ri zN}Rk>*wLNII~rk@0+H>oW8O)Az5@T5Xul8t$tZ1!FeeX=Fnh1FdR8hnW=aOqW%+>$!v>yy%W{bd)WsoR*nAG4Jf~3;MdJ6Mb#&UU8IQGik*3NZu-=p~dvIkB+iP z1o!L@cpl_fJ1AL9U^_Zgl^&_6T%w>@XWTj6B?5&S@nI%cTwGm|0{!1^8xHz_lf=@6 zs6N?sIb591ZREb0Vvc>Prx#E5@WoeLhb`aC8>+(P%5A+KiMeoM}w?Q`jF*gvBFhXlbp# zA+0Tyz#L?I_`D-R$9LpC9~1X&g*zE!1#`-+)0R}d&QWdo@k7qp*UZJGtka@2HvNXi z`tRTRqeAtt)a#}(0jcn1T@NPJEG*B{JkRMf(%82xQXx|r!|txGh&la_?+*?RA|oja zE-CQw@wIn!goT9_>)!&C^AXO=&F#9@H_MIah+^9%3@-;gGWl017dhv7l%wlmIYWO( zFQ9X9S1}9T^XAs$K+oi=aaS z|19eZ7{G`3v?EsPVgA%=1?pD}IcjgfUI+)S(DET^any}iA?bl)5C=UqD*ZFPxM5R9s&K+$W6H$vXG4Uw|L`&66dtg76cBs9*c z?6+`L-(^+wH(1J~g&bl+zsn%w$vp7w5o6pPl#<>8f0S7h(KJ#b8iI`$YHB`Yo@2|N zN6RW-x+2^=E%lamsF{x(&v`ys$0Xd-7MO9^&0^JFt%3PnH}y#t6dC)(aw+YgR~-J8Orv(R|+Z&Hh-jvhS?Q44rml zEs~1LU*{$~jN+=yA+RK_Y$s@h9Shy_5qhS5QKUOPqZ|}r-hB0vp65NY2?|W3Os|&1 znuMpwS91_Wxu!2DXE94iNW@%LbfyU>crdqVg^hinG*;T8u zCYh5@w;=zN3cfi+T*OT2YzTQ_ZMc)iLY|2AB){lL?^_TzU0i^+Iqhe3FF1l**+H%L zhK3K-9; zFWIP>Nbb)yk|NyI3l4!YND@)(C*i1Qw(B5LZ+RNW6jcpc)gUtDZ$mpfDCDVW9Su3fVdx`r|DuJg_qK{KJ& zQ`%YEcua^5;l=Yqq~&Y-PFNITSrPv*Xi;}SP160^hx_W2&UkR14m>txXJW$C(vo}s z%iOV8sV~YbKZ9DtC$e)~#HCLUZB*Rr@cgr?ntoVw%Y@jjgE<#Ep9y)rUFV!k&?|`& zl93+W$c2QM&U-x7zmI029N7WCQ;$T~xKyKnIE%8xO!fi6XdieT~B}GxZ4k3i|Y)WkIE-l^0M)F@CukN*) zwdfnhr!DGS8{J6gLpSg~H)f4T7Z=NUX7*aGZP^6X%dFtgV`ySf%+FI^;Pps9v~2lS zYEf)XPH{97pKgv365lV8cHLXglc2pY?@NwgI@-Cbl7B=&d+UP`?CU2O3^til{PpYC z(NU9RcH;-Xe>61-3(tpiB_%QONI~)J!{vwvQ-=q8LbX#<=3TAORX*Wwt;3F}kx7~| zsKv)Y5$@XbPhgUK2y)7-_^vy$b2++Ovy}%i6k1e|i#6)fbMr3h&DrfP{(j6+)On40 z-)U*^({PMdNN8xM+urW(1Z|#S`P9+g?&f^TVJO4BF879p2AK(cRzycXEdKL7pPmeA zR)2{xu5cTvzB0)5RAPY3tr#X^VurH%c8ysfI5_y5 z{;gW466K4SRsRpnP=vzO;*yd{T3(PpPK3_6440LQP&XY!u{6EZ*1yu2=1PHpX?5wQ z>@$4~2UnbT;U#Br>Ms9=hv_EdHH<&{P(Vfo*f>#9f|Dk z>(fG(hhcMaZc(zV1+R_d_0J1EEUh{OAustVSSftO)w`=6ll`MbyV-@CyH3#N1Nu8< ztEw_}8vk4MgY*CGWNIp7Q*worloX9dr>3Un=57r{9o_WiC(64-=lZBV36k6 z+G0C%=FILmnjnX||0{>;r-}R!#fs|EI&jUB%MgZNaAXn?kRyv{-pqPAdGx>YE+MyY z7jbx)bk#>H?$$hy67^mXzFkL5UxXF+dcnostrXc*srO|HZD);5$cMV#wzh5)zU# zc{hey(g>+s^^OoeO2-dN#+#5z6g2r+!F{`~InjZxa82Ue8RL~GHIMO3yN}-8OmYE? zM~{A-J5KvLBJ!uG_Y@;n5A#P89j+F7xsmx*k8D>TZL9LMF(pnucdxu?Tc7Nd10g{9lZ5%OeXJb!UH6XVvDtH(4T`)AGYI@;ptw z!%bKMV6Kr?eJ?R z?d;AbL*aBpNHiP!lBY1Nuq6NNq$C5zAJqe(jDqNjkjOXoUC|j4hYk5U0aHZxZH11$S1WjA9mwXy~4K3DIz=fn<8*?8eVt?k_Jc0*p9Q>rEmpEgdSCinEb} zI`fc@f*CF1+gY}Q^f!ZPilZdl#l|ls4>l}KnJ}#aqY;yWYsBeINB<>@ zF01WdD$av?!=`CkYUIh?dY`M!5Vz9Z_VQU5+r*=aaTgTF7b=(VTG%FR?5+Vwf2PCP zAyw)-y@zVs+$OR;%m@AI-&<*gB)a(eBHb~Aa#h!xR#{574aAt>! z*Amy+!tr9qwi)aTmR?}@lq{HbU@!fEeE#8?)tlKr-)j}~gC`U_G&Ce5Th}Q!@E0!z z>NZ?Xd--Iwv|B$X9WB8?h1_ubw6nE1ASHxt%6?`&wXzbP?0atx z>j9lzGwP-NAL&|TuJO#}dbQX^{T<@t^zN~jSFN&ja7#+s8i6qQ)0LQnRzNcALzhD1vDH;IMyp$A+<9_ zqRK6{lHo4K?X=YMnR}8kwp$+DrYOXQO!hQqPNF*csg90Lo!bVGCP<8V|F&G1S^>E% zLk=NvWc;O*73SBDM3IK-*HFU3@EVoos_j28VudFuM;Z!Wm&Rjerq`9Clq%JCv~Txn zZL)g;TIR~g((mT?>nrUuLI(F98~$<)^_-YzitRPayT$gi&!1qpd&$?HhzHOgkw2DN}o#`(m6Vp;i{{w0df zjg5`^IW$Ldy${#@DOfao7Z+ddGzJy7%7b(C(KD--sX0P-NEZ zj`h*5E^DWa{y$R4Gindx5)Yox7Y<1NQQX*kSy)iOnrC{UudnY~s2pK!yFgODOFc(3q=DIboJ%TQkesru$d4m*^l+kS6`RIO^!*A1T1^f`xM)f>U zJ7MRr?{%t1k^+1VPSW>lXWKPri?{!iM&?d&NRO)jp0#gawcPm-B8hM8q}wfZEDvT~ z9Y-B1&1+WuLnKpi7gli4^EitMZ#-Nw+o`IPQr)4;t?O90c4m)fj8b^wJ@;v4-*;i7 zmL*(vXEiAc7qJ6l4c_?mk}+Q66_(^|mlrGB!>*HYZ^Y;m$5?g&9^X*2&e){BR+ZGbsFix5e7N)vjx$>bxG66|ok?|LooOF>Oe{HhAl#gSo0OPpjF#N(mGh10GkPG-Bpil8BRW5fZk=ve7VA^nm(SJ;+d!F(6eS`VBWcB z`zP98{@EDbZMgA8ZXtAZ)s|~$L{O?vg1;k4V}av*!{hyiz&pB-ax!VuWQp6vckO4+ z4Qh$!;W6;YNHGGA415L#Vbgh@q7wEgmx`;-U@}C2%ss+l`vWT%MfiWVJR%}!vGX)+ z2BX7T9Gt)R>AK?YQ%>=~B28vAzYLX=Lp+^l9udx~*>-1xk{~YNY)=ASpMIH~^~&_> z2aT{#2>4Hf$=okh<)7BSe;IP{OQd5)9*<`)K-TMzJw=~;wmJW@35zF*1yJ9~H5<`> zV`^p7AIn--!9juRFw3NrjEsycYzt^7sQ8Q;=Z}oC*1G|pnBNZGd1J(dC?1DvDEHw@6^>V2%9oY4o)@xU*-H%u!N?L^vY zCwT?%mEu1n5q-5UJJ#0f7;$Qw)uOEPW*xYYjAetQ+GR66+=LaF*@u?SvKF3rTz> z;f0y@#UxHH`9h0YG>;KxrJ$APPTY~09h1(m!SCdhj@03z{q4^;KT})@AI%1$*HI@3 z$0-!t+B08XUcS5hEhG`WzOGyc`=mFW>w5PrV#|oUbI_d=Q(`-8zJ%UhBL!ft8a0Z( zkUeRmC>1-E>x|#qi4x#C9OFOaYOF;a&U%IqDt~;j)X_m6lY-QcH_{)brU)Sw4;1XQ zSr^_DV@uD-_$u%4Xa1}tY;V`&&E8f<-Quxg9?f;?)ui0Ql~*uFr(&V)?pqzzBY1pi zHa#?1`pdaqm^P+<>e zH;_PMv6&?e3A{85aV%zUxJ|{9!e;hXBK0u1DeG8i5hFBQVg1*yBPz(AHw)rRD&#Bn z&txqs6)Ujsu9`^?&G=zYn5gB8R#cu4p4)^A+h?_$DF5Wzj~_o~D&5`P*Mj?V4cCv{ z4|W~YkA8$Q%tD_(f6iw2($}NBSTk@X-fqkGaLTh&&if}B3NF6{W5L^yx8l6KPDwW^ zUnwLYS#R27Bs+I&HKR@(fsf#^v9)dE*ZItGbfR*j`@~x~eL+7DCPwIey^k0Is+E5q zC{>UbCpHZC%&o1Jivspj2BU!(;ymBqFBy9GI4=?!bZ90*k4~{!gExfGaHIO$aMR~m z)1XPJnza`ldptY&!kB;Iiu{F{@!yNeT%nwz>f+h)&^Pw>MS!qW41okkzEbumn$`3` z=QuT$q)&1Q>$Eo*wgq*t6JCVPJ3Y}&O-*AD7ENamai5v!zs8??zwSns^%m>+7R!;k z!kVzbQx7isATR-wj%e3nq`%y@|3IEIlQ9psBjLyHMflxh>Mz!Ww#tC9PrW4i*MkM0 zabokr}Tcn$h1FuuI=??#arxZ%=&3)lkRQ$#`Cxb_wLU&ANRq!8F6ucTUe3j@rn9! zl-xi1qhQ{cFtWkLTi3l0udV;75c1#a>Hu;Zv8YS2aXVgq3WUxT4}IAg z@bUz)?Y8?oM@ZadNVL&zxfH1&SB0z>0MY%wyO5W1x1PFaNZ$ahDRVu!+r;%XFbXK| z%@okN`q7_?8_8rRPGP;$a_18+F7ky6J)SY*zkm5rkIZ)#=4NDYA*_Xw5+Y`grGJ7p z)0wDX^Uimtz7z(oUm6ue=%~w}c4{O{nOOBPc85FVXM*P)m=~!)f zS63BFd3crk1(bHpG??|JD%Q3fc8SpRqOXuVu)wP|)6aL>FQ>D%<+E45Qn56KZ-K3% z;MoIhB#0j$Hf-a0LRZWbA2`D%xNA4fItoekikW7=CUoUY*@LZ7rvW7aZKJD&iDF%v zLL4L*#l835Q*_`-R2mnA)A{oGmocc7a_?C5Eh~c-5#iLJOZ57J9u$7h?}4UWcXoH& zppZP_G^bIdr-CCUMVz#oRa!LR2;;RL#&ZCI%s^?0w^`fZORb>7@0;JW`sTW~wFn63 z(2!vVQq~y6v`;&KD&6*lNx`tKqiAcx3$Gaq6Q^_EifV}G|AARqSvfm@K%4(<-+%}F zUmY9+KfWU$4p7;1O8*ppC6bVv#_eS;_5jVqCXB^k-t_T}^O=%H=KJg?x}xIaC4^;p!6q%7?>{TfH2v2+!^nSi$uoX<3JPxdyB#<_0tDO zj7CuRuU+kB+=Len{S<(3<8#Nng`B?Dw0(K7kUHqzZPm*I+~c~>+c zjKs47w9fA`w0LVU&Jih)y)%VL;Gy3TJ?M?dB#`0}LFvnd{EW>W{Jsy2^(|UYx)(I3 zP>V!_&V&T~dLBLJJ)hb15JCr|f}JoC!XYsT*oWcEatVc5=6dJ+!%n8~uvy0rWs<@g zB9aznZv4;YvMyHT;D+SnWTo@S;J~>67nZj?3HOKZM4HdZ?nbSj94rp{8`iF=^$jjV z+(Nnrs5S6B5}|OQvs3mAR-#(v98iOW8{_)}n!olLOZ&9e2 zFSqd_4TX+9jo$Sa z+7L=tG21J0gAoJ8753Oy(j z_s>}{_(`!+7ydXIg_0B(f0XrIY=s`01tJebV=ZE`FY+C}ip-iEguG*lZxa@~|6eo^ zMx8_dCDjYi&!Snq0h{mu4B0)jHqHOpr6-5A)huCQrysBGOaDasm z`-it%ZE+yBM$qrrc5VFM`|!Q|Aah%GwgjA;O&EwFe-HoV{q*`@zvwDU^77O?R)2r9 zKCI3&uD(4tT>6H6NdD2IM>Q}!qavkytPA_-CDu)D#b%wX-W4(<0|QW%fe51b33B+e zsotOBYu(mX@&0pJ{WTUQrp~jG)-*^G?SEg~JrR*Q(yqzLNx9Tf@MD-!WqD1#%wYyS|uV3F;QR+(K&#WTTb$s_J z{gFOBbl@u)iXPzDyVN9!DkW}Wh5YgDf}DhR3!qd2)1?bCgP|E8kZq@BxzLnyJslzK zGEM^f9C_+t;Vb+|=uN_G1VO5GLWQ zk9YA}q;q#5aan%b?8Dx>-I!5y5@4{}X5G}+ zO)YDCySt+f`b?jb6Mt;&z~1{D#>&CD%c*XLx5)rV_X+MM0NNYrr=r%sV{+bF05DBB zZ!ut(`UOcz{EWL@FExSDBxY1_x^-$K>(|uM%W3ynLMS2(;$jBBqiu6Ulrm6d-wVR9 zDge*bg^>F^jt)V7^;PzS&NvJ zY8DYMUXbHS8wW)-B3>AuTWaZhRdV2u>3n~*I^G0a1oQLrJ&`HGo02`h4L93C8h8vv z1;2A^6c^LDz6;9dUPAI$l8|vnmzO7eQNWXSZBaWgAEZxKJIfZ4zkC|l^ctkuq{VEy z`I$wjb>IN;H7CTOD?0%6J!SOgn+~InC|+HC<3efy92`?6Qv>zJuVFC%AYfbAWtufK zf(DcP@I^J?04#L)?EI_}+tbstvT_IEhn-x3M4C^RlIa~@P|nWI_SqH!kxDoLle-+c z|L&h~6a>R`yFTn{T}6K7cMvK+4ayfGsI}G9TXe)NnYt@$g2V3S=H?bVi~yz4Qj>1g z81a;G1C>ITm3b>Ww=b=4;W8mv+pzq%t{~c&w)XV̹N(laomYWzorv>D-GKzs~F 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.txt new file mode 100644 index 00000000..5d673738 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_191.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [2,2,3,2,2,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [2,3,1,3,2,4] [3,3,2,3,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_192.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_192.png new file mode 100644 index 0000000000000000000000000000000000000000..89960cf2907a4b13219eeeeadf6a7f254ca0dbc1 GIT binary patch literal 18403 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

~N@i#dkx480-gVUoATh|gf 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_126.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_126.txt new file mode 100644 index 00000000..2d3ff519 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_126.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,3,0,1,1] [3,0,4,0,3,1] +[1,1,0,2,1,3] [3,1,3,3,4,2] +[0,2,-1,3,1,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_127.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_127.png new file mode 100644 index 0000000000000000000000000000000000000000..361d5449f15efc70633410e6e562c4e08ef8031c GIT binary patch literal 14514 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_129.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_129.txt new file mode 100644 index 00000000..4936945a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_129.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,1,1,0,2] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,1,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.png new file mode 100644 index 0000000000000000000000000000000000000000..397193b7192e76e6c2dd03987db10f5a36e7396b GIT binary patch literal 18199 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 OPhR@rgU^yiFaIymN!NM+ literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.txt new file mode 100644 index 00000000..1854a7fb --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_13.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,0,1,2,1] [2,0,3,0,1,0] [3,0,2,1,4,1] +[0,1,1,1,-1,1] [1,1,0,2,2,2] [2,1,3,1,1,1] [3,1,3,2,4,2] +[0,2,-1,2,0,3] [2,2,1,3,2,3] [3,2,2,2,3,3] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.png new file mode 100644 index 0000000000000000000000000000000000000000..a371cfac5b1736a904a6ffeff7fcb75df153f911 GIT binary patch literal 14369 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 KY@W2?^Zx^z4MBGR literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.txt new file mode 100644 index 00000000..0158ec12 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_130.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,2,1] [3,0,4,0,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_131.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_131.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd2d4b823a33c19093cc37f492a86fb20ea9430 GIT binary patch literal 13836 zcmcJ0c|4R|81@v|m!cAi6p=N?z81+ETF}T=ma%7N2xWaGOGIIiE&GzO#8~p$#R#Dx zTlRh5x9>cY-uL}}-#_2)Tl!_ndCqg6=bY!h?{i((eI{5-Ly4M#i2??LQL8B5z7K<) zXoG&pPJ))ca@tN9Or%@o_N|BR=!FCW3j>7fQ~~{yYsS-mA9P(}s*sOI%?M8?H>=g0 zMOnPM>B}_B@hrQ{ZZ(}WD)!~e{FgTw6rxH=noLGN`&#_D6q3aY+q!NspT-7}t>~yk&)KHahct(GK!Vl8#3VjG9`$j4!^3T9DE*1T zu%-3H&f3&^V|4U6CPfeNfZ6c^Dx~<{O#}H&`t<7aL#_|xs5MK9igvIydveU7`YrNO z{iIpzI2v2#xPor)t==TN&TvDoHSI!L!^|RMBzH;8uw7Yv`!&9;;@pCQf+mg41_qvBe6K??^jHN=!tUrrjIfjhqZjq9_*%c zrkB+WY@2lvKNFGVHZqEFn&!En{NTZZ;=6CYqt`hMpS@0d9pqh8P!^nmjB*O&@X`_> zMvu1L;gjE7sEnf3XPW*=W$BXL{uRrUt=Cm^A~(z=I0NSM9+ypfnq1B|s?k`g zvLE%``GvP%4*J4x?5h8n87 z@$d(tK8}Uj+pC^U3^9Qxt>=PBNpF_Pifa_hTXJ+EvU+-Yf`fy<-PAKQTy&OPQAK>+ z9cv2T&=NKhCcTdx{79a%u@-(sybjM-LWXd0e`Cp>$7Lta>eQNa{Q!B;XXIm>s3b(B zmUOFM4ttb+kZoax#|0^2Ee3AWChzR*1kti~-T3QZ`);CH)$r2XgRaS)P~*!paOS9} zsH&l0xTB)d8T9CUM1?=^ie~mvUUgV@)tV=>PkHC?OwhHRoesHX z=`^`R3^HDHMhTVYv$eobs(E>Nr{4Y5?Mh4?I4!*M&P7J=uZ9N214b4mWh@rEJHF~Z z&XiDl2O8uRQ@}hM@PyqvW610D&!?n(V&oo_^4rePYMq)o*pRdE{HC6Bf?Lf^htut6 z%Inv!$BlZigZU^sy`=VU1J{%9JuDUiX3!M@Hq%_DC=1r-bAEhYj5U&#L|=Mo%Pa;8 z|2AUlM3_;hrF^?aYr8$2o4wn z2VrgdP{&^M1)P}-@sQ>7=ez*Y=zFm>MKa@zN`gy$$VSzIzN7VSqf|%jXa(hq%9*cQ z_nYA~XDW=0PV>}msK{;Cf@?di+>WdgP7WD;GZ~L6jOrpZV@&nJ!dlCuX zrfU5fs`g#rkb!9YY1X1y)1v7|S?mwABwm%*&oxwKn_YrN7NT__LzuCvEo-ZM{NVW3 zI5?xBs{i;Bkq9}$MF_#&cJ^Ud%De5x(a?}=gWh|L(K|c?A7$BcXrdIGR7+xgTklz1 z&uAEIEDCGQY%{`hmrx)$*5V!nM@P4Pb=Csi-yqRp^-NJHtVu}W^PDGmF> zJ7(VFj2Tx23)yvagh=VQQ-$PKUw6N`@Q99wCzgmDJR~csaYmVn7qa)#9}E#LJ?6|# z5>wx*I(bvx?BS$Rq66K)QDxOmYP(eEx!wLKM<=hoB%XRS(&l$#?8n|l)!|m3K=sj;U9G=|2CCjARlUxO!W6Z9 zdCAc!5mQxF)zHweLWaR$c6ZdY?~UH{b)v}l8B49w_-Sj-v&TD~)lzZTGH1D}vBZtJ z=I4IST~(e-kEM=^;EyIuDpW(SS5={w|H5}zFXoaDD&_ahouX|{&5NGuNTQ{sEy&IN z#?@8VQpswN+2DyBAct>EEV8U`x?%@yM4t^+s*E{# zc~!j-1g^~^BrkgXLFtiq{Gl%h?YwSPMc0UpI^tAK%l6#o^}jQ}^>l79|D0x$Ykitch|qQwVn`um04Y$At525GRFN5vMG2{UXbl<4paP|j~zs?LwaTysVA4O}fIvZ%J8VLwjlq`Z85is94kZEen21MxbPF_P8( ze9`2f2I(P`*lR`x8wGf>VjjwEM^4*#FC-1>W_6s>)a%`7RGw~*lZe_uObz8418rkt z4E*{xjHI0=+hFODpS|{6Z+Hg=1$|}kcjE0zAmS>S!RBmp`@g6=l{}>rE7yOR3Uc;i zR@+kr(;vtWu>;cL)hPS77~_encj&rjbDsHV!;$AuiTA(wkkv@|d5 zyb9ClnwxVq>4@f9jHL6DFshG!vC4VpGFY!EI$bUqu#NlBJ##kiVqryvq@ds#CgrWA zVa)<^fEL1EM`)9`bouo99BlMWqS)bu>x^j!n7xAjf>%1SlS+b?8>q1rshXpZZEBTK z9JgKY($?PYdOphg>ILQ9Hj;(v4G+eK?k2i}x21R2Psb%CWemG7^p}K&hN?dSI|Q=c zKUXMnqDk&ht~TU<&DnAXdYS93P5V)^J~;(B3kk!IFCByr?@bPWTqvY;({WI%WZ|p- z^(*C&ik3QUaL~ZZ5hdLuBB>I6H&fXjA!VEKZS&r47(03tol*3dJs?+7J!Wh8XoB@< zg|?lcjF84>3JgdW&%UsMM zscpviMMah9ZccvT!%-^a@agkKD&J(cdr2Sf3VFM@lfKAfwd*WRt{Q$Mj7j;+d2!3~ zs=QGN+lpM4}DM|%y2xWr#yObiddB4Z;@MNK_%gr-BU z*;6Fs-Oq{8p6^3nyEh%@6O3z(Co&AkR}5PF@_h);V%Qc!vBF;X@J(CfbZ#Z1a(440 zUnj=d1shtUNk#2#`bXSu0E_C#QnN>U^46BKi@25sDXpc@RZ{Rq3t-qKc{)fUTg75V z^b;#22kHt?_gIEcs!cTWf^lkIra8Xm5Z9IGOIR2ktmFy~dYN7%q?UqNb-bLF`-yle zJ2MF*^Bm1!whS+PXax;ZO~W2735>CcIF$xvtUWcZq~_Hglp&E&F%a9vF0+RMb7~3b zh0&$T3sgx&YTC}>x6C8^s0{_AWrz3p$;H>cpfQFWAy1v7nI5S6#iR$44y_BPuG|zaWZUVC#!zLt39H;&C9)sgZSAi1{*>wXiVk!SPk1 z8BfXJ?YcIJtQ}Lf)Gyaj^K0x1Wfp6s9#=!MrwdwupW);HI z*^tp7;CW%J5hbYY&H{y3vYG)Wf^l){LE(}$0*<@{^PKk;L}l}?xJM&^B^1lj{J>0))iEh;~72uM+Z(YevzC#K z_lq61zerR$YAZW$5c2#Y=UxmkuIM<>x#S* zu6{%qg^T~lv z5}o=5uOLm02rTY;_#Rr}Ql&Q^`$5>VkIXa62J$}Ev*d08d4ehNURstFZ>>Z^_xwED zPynx!o~5dJ%xxs~6j#?AG&xKYGNM0fL2vQ%CB?WDu#5OPFrj6dLLxTU^MobfAQv?T z-Aikc11TraLuxO4FJgl`PdGM~qZ2XK!PPa+sAkWvX^@~eB5o?94z2e9tx=X>`jE{2 z?wkJj?ND*##!fA9b?BA5yC7|9fA2t0@GJBV`1ee=F_Ol z;;)1~cx`QLiU$_VF{rJ@K>%PjHeBSCs!4Ft>=M{b?iZMd4e2K$;Tff6K6Bb!dFy@k zK98Mk88lz5)f^1gl$WacALo*5*RJs!RnJc~_kD>C%3K>CXE)2YE~xxWjyOZ^`Ncy0 z;Y>l_u-AefKX7|hK0dxsr4OIJFSufc=gGv^PR~ih;bRy~aD2o8V2BJ6h4uDNjUfnV zD4j3m3j*Fk?1p5-$B!Q;CnxoDI8Gv2*d^n|rSz8*miA+p$ki$nE<7SN@@5HpH=TQS zp}5iRNvGSN#Bgm8zAxMaln^XK*QVnDh91mQN4-rt6) zz-J>q?aS`!uXp(izuru%=jP|%5qktQ6RCu-|Ma`EJO8sO)F<>~&)21@pTmQ0d>4R$ zcJORHIl3FNmj&hIj+RFi`t|TYeTx1P%j$0FK*y;^zHqOh9Z`%B#;; zP}#YcxX&^_FK-5O5g_{qyI$hD;6;4Qw&$h-Ezcl3z zL~86GD)?hwy$)TMigXu>fEH^?z8Rh$aoO)__p2+G7Sr3Cxt+m2%YHS1PIe1p9DI_m z8XFti2JivbJ|?Xy2fl!k80E`|gBzCNQqIit>j0gkdljcO*k$qp{h4QQ3&yL)Ke)t>jarxbuuP4xek6K z?(HX|?+xG9-y(LE z?C5pSm_SjPz`#JJGby-Pd*04)G!RFi#o)>iG$oZfGrkE}E-vnb>mpOWK=(^%Dx^0P z9aKnUdlqjLvP)W%NIjo)y<7`zL4II?sm%Dz9nS$uDngX>!Cw6La=m_kJEv!+Wp3aZ%0btK8Lvakfg(U&B3)x6|mTv_`; zbmJ>MZ_d#kEwh@Gkt(=psJ-00n;Ej6(3{>WUaeANfkMT4f43@W^NQJzwjNXey1TpU zktp?j!cFH{7`B!XM}?#M&TeXX2W-W2(E~uDI~t)qWC-}Ww2wRbYj6zL9h{+=bpLv` zrSn$3N?LijM4Yj$ZJxzMzqs}9e1s-E+w6D?HP{#u;j|*;cpyD$=_N>Qi5)G|9+eF& zG-@Q_$*U66E=7$*YZ-SYh8Q-T&(o(xMzyrGP$cxUfaMh*aDoUy4(-p=K8I6%&Uyyr zj!uAn_PVG%Q(5viREd+LKBZGL-1k*$ofnB?32_z8>O~}6gjl`|kniY9Y8r5g2bW854|?$5e7#;%bolVUJaBz3vs1+0Y?W& z#@7$&f1(3MK+@_TIo1wi*1xKJ0Oi+uh1H9>>Zb+?U0+I#6{%`FSYY~)q6QQ7WK`Y%L8h49iA0QGD}}n-`}riKO>YkoT<`j zxw>`J?ad>7{qIS9$s|jQi?dOQV{fdLNapy_V6QL3m1b!-TeV$!#dY=S)g8}o3$E=> zA9uO1hCYE6k0CXV3R!?&aF~@Zc&?~A&UAm79(ZzmZ~D1Iic?5&P9h`=(i6yT z@(Hp&hn1nN6gU!lniEs79Ngy3<`f|yE^$A;o#=3lj`?*fkjCtI1{4w<-hMl1Zxj7C zxBdW#QQ)sGK#K}V4`}+e4n1g~rhIEN(b>~LLgRF1&YnF1S?Mbg0uF;PbN21mvZVzg z*S+%mXvR#<=4`QqZ(`rGN=bqFO#QxAXinL68d}UY>#%5`oz3atxm_rMK(=}YGVS^p z&$9X&{^p1A|LfnP+&Aa(sY>A>wB2U9(g`7N!pi?Ju$7q#=w7)aXqbF2wWp_NNJz-o z8FM6Z!|7#q%HJd)zlzsMko)tJChx^>cvOwl+7_SpI^5q`US4i(rEt+L!&hqRK}wa~ zjo+`0=8XBpDly`PcrAt*sXVm}o(k&Xq!d<5yj98SJSOd@i|-JSMdRBi+vCM7%MnIK zL2&daZ!?}RQeL#*4~kMsP(AQl%#NCqJXkK7e!vIkA=Pr*s2e7_#>tsA3^}2qxRjE5 zbK~aC0#3`O`sbZCh2C~jc_tw`G>`Q3n8I(s;lK}ogNS=B&JzJ)D~r^FgHiIAiRfqG zp&N!>L#mTi*V~cRr0RF?b`}7Gqw^RHr#L0T%epyIzs5Vkd@F#Gp^c#fE%Bh*@yo(M znO`*xE$ur2GO$)ZUpSro=mbj_^>RCB6cF)=!&=to@9|ncQsLC3|0%>;nFO*NZvq`( z)cwhm4XV(7FZR+r( zNY>NzMcn!H2i`_WuEOD1QtDo%pO$4QP-I=)y`Bemv7VZmnh`T35D+39NF+x%+?%t| zJryAYQN@N_#NEwJH);K1hr@#MeKUG)I(@slbDDb3GL}ZZKo8Y~=lfe;=aTDFQ`7qA z=>rRKQ>@PhE7Ff{&2^v$?`ETA9g-*LAkzxSpk_+^Ba5T}9lKqt$dx)x^|Aq5y?1&C z=^UO^Q)pmK<*#OZoWBjsWp{sP&88+llBG_9UVP2o3efp7KPv?)M%1WgJ$N&?aya9afe2C>#Se0#1`hPGmH(+o9G#~}M>UCiq!gCqUT z?QS69a`f$~_bi@@BTpi8vSXP7u5IFDsRh_uO>p`$$XINA8gy|Aj05BeQXo&Ty)PF= zCOC^_L+uPF3GG0($d>QWkHh3wFn4hY3!*~+YP4FiVFvyE&H39AlZ(~NZUc?U$;tak zNiUsPM%wDGJC~{s%Ilz#;L@ z+f+xAlgm<9&JBzm0Qq1Hs1ZrjI$6Me0D#YN5(9PJsCy*Om~$h+`db0}E{>%^H9&xP zZdbUvmuLf#%0J>l?Q&&p>zHRzIt&TsK!n8Y$_lJvYJS%Pp?E|hk$ruA2F&Tno|T_I zoj~S*o68~I9~F`A-$Uy|`yP!>^Tuwf`guGbYorz*0O+60#T1jPEn(G@u2 z{T1Lw|3(i`Bfx7UKsafz)$8i&rt);{Z7sP;UiyvSpuPdc&#T?ckf2IYNLk>#DEAxcxb48(#`s6X5YK&6Jhm$U3xrQ{M4tq z>WvG>&(KCjgWsoh-O6aP|BX8*mF_f$g@pwgwhSBGy&s+$opTa5bNnF>sB<$J{@Y!z zSFXBs&oxEGGalxjCVT_~!FQ|!K5*lan+ST#)DMo1dV$H^yApG|F^Qo#S=~(}nFY@K z)?UY6mKnsf-Q=f!!>BQ+ydrtUFw z&*$IS`Y|g{jyyFbK9c)sVV?Ztp|oBfH8r)!6)jJSp3ViTThX@qSW;-C&cn!UvlR6# zCg1+#5Go9)FoI}`tK{mkAbi|3|$#b^}p|^F;u# z9CGsBl6vsT+Its>Z-1g8{;R}6`#7WSSCFZvqu*+(xOW*J-^w7L=uqPC z5d)D!rayflns*+9>|6{B4UH{BP~KISn|MQY;@Fb>Wz+Dse|Q|J z)8+Ih=HYMxc_RdOz|Ce+A?EYz;=c*oZ#qVXzmpg^!!m{bA$q*d{PkHh2t5uOf)g{O z(myboQNm#dIh7FL^K`HTaC+fyH<2&RC(G<-; zQwH=)KT;^;nt{llWig9D>IX(L_=sEHKtoPVm!Ni~!`-;m$gpYn&x*WLN?b91=y(F| z3-8|x z#8H2gVWopkO4b`M<4;3pFY?tq)I2!XRfX0cU}^!P5m4yFpd~yB3?UEVT!?)ilA8HDhpoJE7H%Aaz8 zQR3Upi)$$q=R;S(#Y)aqPY!ZCYEs6#eTCD&yvA! z8X}+bRF7>gM+F=+5F7*u(m-#tKnwVd5bzstqDoZY`wXZ-4P@qy*ubVv+tU=z+R*y* zLS!YiNO7DIdF4|r#7X8$38xLn2Z!5ih^jQ?6d}s<&{gr0yy&{b#0Tn$f~lLJX`({M zJe7tmN5fUVEIFIy1F+&~zyt9{?K_;A)IFQWY$o>Qu79paH@TNWf|chBh*Y`c5#}U0 zPh3)a=MOa^AVDDk)?3hMWzh?49pd!C)C9Wq|MItBB+xiK)~AQ6Jm2vf%sNW~Pu(1q zH_NQ7wGTUmqrj10HXSS^gr7Le6IWLqIfhJbZkrpB@_~-J+3a|_q6SgWN6GT@j&!ztP?z`*POYA*7B&YKw%k#TwjY4F5gfNaU z7hSo18DmGs$X#l%Gb8*lPWApaHni&=k*?}(4DBRyQ>ERKr4|z}fKahQ28Y83?HHh_ zp2EpqzG@of@j*8-`KqkB-`+vB;S$F}p6O70*YiowFW!6ZCEO;efIoj>{XxO%Hsh=R&r98 z78t9>X!0Pjw_B`RdbLUQ*ZUs2(bGQN$&n|26VH^3In>KX$Bzmx|!bwm2 zwkLYXSe%vw*uQ;`P{>uWm?Uu$U4wT@1Ev$`bj`jrJ1z?_nIu91S9-Fo$0?>9t3tS_ z0btTX0tys%>3n0=oO)H0e*79)L1VQ`gt>Lr+AiCbw9!&-`-v}GZ87hp4> z+xG!HOEpxS&8X#e1L%wnP$LsSjf4fV|IQ)FdHxTCTNv%D%p@KL)Cj=CXaK#fW^8De zCKXZAHifOTf@lDsrN4LJS!8h`k=uCV=zbG%T~L_IjK#=ECxF^(X)SkolYRbqV4oA| zxh*9?(l|xJQ?t|(LrmDJ+a%^TK()1lIaj)x^DzYhIQ*`h%I)p#{fS2>S65drufdXg zOchPc%*^(s08mHFwMAgSZlwC?V0r5WIL0_zW?dkh*(7H7^99BhfFmtrAoRldq3XnY zLgDidM!c1RdD;T_Q0`9K){CsHEFd-h%RCS!Qb=pMBCyeRl5`JIc)9&chlse4N_Xz? zo-0sk7L9K|j-KBo2LhsKQ@AVd>f$0&ai!`%MM?r7L1n5m+u7L}R(WVI#h+eVTkG!b z?#nkA`0>O3U;C&`g=Ug)o5znIcPkA8VMfkUw_)eNBkCB7!I^(4h#n-r$1U|S129am zEAi%15sF1>{&Dy*s%d*Y648ES?B?Tf4EvDYrvCE;gt$N0!@eP|2Y4#l@c4sW($n`f zC_8@7uy7M;1JuSzb%Nq0^zmkTo?Pfq8bj^pqFaXoYzQb!;$JHSo~oGcqi!*`I_uKU z3f2(_OBBFKKrz`zRZvf0a|AtYJd^$5fR!A#ehYE}amhwNUgBDi6XZq1q4cG{m9)osc;QIGK_|G_OGJ>k0t(%A_aXzBi=5+H~T{d1oU_M`!Vr46w4>=f^*Ew(wNn+U;m ze|vP5CqO#Dqc7olfQ&IaKHr}M3sdNwTC{3jXbfc@Bl!*U0-Z{Le&8XlsiARyvSPC} z>C!R`Pw!uIwKY|1<$oAr@Ho=ejwSTgoJ+i{7qL3 zKZl*nSo%*i1n3YK_lc+y1{bGo;2}xxB=tg<%F|E*m$jxhr#;feS_2;Ax{6kd$7gEba&Lk%rZ7iuLa>JL>aX9s-dv;spd1{YzlR}trm za@>X~i(EDqqy2oSBO`rvn(D+6lHomun z!9K7f*wjv}4-H1ejtQGCJzpJ)##)~1x~9C_v+hy&#&ETO2=;>Bl!gDpx1HrG9;3J; znf|ZUKRzA}m%IO}QDSqMu+ZG!4kdkDzZ*S9{Mu`&A%vCn(!0MH+|M!nZpUVi;?fx=K){Ye5s2|KDJFk8mTuD89w zIkb1}-Pn-)DO&FMlO9*s+do>g5r3+gt{*mI2d6MeVKAb|y;g{%pLr~;2nNyb9R@FjqA1OtuIpYrCvjHo{m6U&zHnWV>r1C#FK%(!llR3B&PLsH zKdbra#5<;<8PGYzA?=s=yY`5?ps)03NW>}FLzT(k0&G*pMmWuj#Ghw-?zu<2Z()ls zUP@XSO1nzc5=8lnvzg)>J?9qih!@-~F2Cl+XR^dNb7>CuCJQG$ll0Z`k=jj4BpQhg zs;Fo4kLAt6HJ@K1c6hEu62$a6^k?b=(^{Td5*G_57>tWjcI6b|nJw*b8T|7&MNU|e(Zx*@3bpyEZlP?jW zKE-|U1Ls)eGUncoF_W{%G)}f(t)yeIaY`9!2?|W8+;*4j%9MTWNiJA&R<= z8HyW;?(X|{;I?qP?MqwV3Y$agh=dXeea=d*nAxDO$tLpf_lG43(;rdTGAJdooPT^{ zqwM0FoiqU$Y$WyDsIOR>OyXBmv$^aH_{z=p1uoNWmX34GKCwZRVXQEx^yx5j@0@WSk6Nk1hEqoyN0cX;9HW>SYrCbiF1D|-~umzZ9f ziwZU(OuVpac5ta3&G#Cg_5Bg#eCkv5k);9mGr~34%W`Z)|B4`g42uIY-?PPSw8<%_N9BLzaMw=+;tV{z3H8^XBlg^21*p&>oTykg{N368QF z>T(c&h#niurYL}t~gX~n|P&%P>_Z0$ChCItBf`WpO;ybjt^K1J0`V=o7@5@Jj zZ3-dHZ`|Ma8ffdfh>TRf5JMl~$mNu>8Zx9pV;TL`*CmsFE6s(KC+aF(-l7otGCMo_ zd;iC(sw&l7@?q(ZUpuDA#Lv94xn=osU60ikcw+W0(k<@=f<%Evr()pX;j%;9?b2f( zjm55xiToqs_l>k=q~TxZve7$J#P85(sCdpxPF0_%1OjIMsf@uzglXpYvFTXT`$l~m zXOLZX5#TA4qgj#2B?h1zwECMp9(gQlK*WwakMrW(rJW3k9owly>9G+vC1FBRr;r?tqppJ}36g`GG9QVg(!GiSk^^?=mwu#@x#l^YR(DQKQ zmpItjwPoblYZGV|^k?EX?#?S{{8)V$s>H4PV<_DnA|j%Wjtl%I#-|)0FwXnz;sdG`_S!7?g&T+4Gp6eVRXJAIQ!LK8!z}tTL z6Z;3lGqgvY)>MyueaDiSRKJozt~`Izv*RlE@TCQuqoGOm?ELPo-nc;;;kRyt zNSF@{@!`3MJl)_cN!lJe7-7`GbPB_<((y`&3^zYr%c z#EfEy7h1$+)%TlL&-4+FxtIkbCicsUmJOvj$;!%_4|M#7zivn17Z#X@TGV=yJ+kb( zj#wRgl@hF;uCl3O3*!>pm22Kb-3T-ler+l7OKYiVr&b!JQ@eLx=J1Dc4V9SG?equ{ zXco*D6|Gex@g%oF{EC=V;~Jw(nwZ5|PaeE&)!~`H+^ zA$^y(R$?f)ZpVhA0;bzK{QdWq2vE<%FS|`FNuO+1m3-X4@maajuJq1VXEJgzF)?f5 zWUVu^b8|EMO4W`&*C_psj3wLP%`Rz0jcOmGsEeqb?sM&{D3q=atkh~9EFYt`5s$L_ z8IC%l2ZwfUeE#I}qVoDQ|2q0IJbm$m;-R|lw&R{$=BzUMr(4Z9uBXe3vYHwRNy*yk zYDH$_htC}NcGJ`oF6=-*#z(Le}qd^zfLauG(cG%Xa+Kik|bi6D}z%6>Tf3b03`M zyX3Pn(onN{_AiXaZORt5_IGzhJ=?dp-S!8E75qNe)zv{@y_RP^w;!>ignv9K4LNbV zm;QZ5#7HrOGJxEyD)DW#qOEYcA+fXG-bUzgR8~*~x~WOVBU;nB-OldGlkQ)BzrF{E zthdaV5>~aPI&5_*OQp$6x9FlGEiEjp46;3+K)VQP-B*nik=CUFk|CK=sCaOnbv@S; z%LQ~ZON{S!jpe$iuI~f}{CsV6lp_vie|y-;vi%YD@wRxNCo>p+nW`MsIKLZKMF{-W$iA6+^G( zuCCYBWS#?QbLwre#Pf4t9sJ$gRJOl2oplI5f!Q4`sqZX3)4kpV(`Amf-|Ba7==tL! zNze5c;+wOxIn^I?=pND2(`y8FF^9*ZK9&qFHU@mEtQ@j}ypeIbKix%_{vSV$o$R5b zXE!Q%Sey2hx4+lH!^;U)jVm3?AK+mUEwW)4a|5!Xy^dt#{o$N%U|$6<4J^pJ{;GI* z)27S5!k1ThVsLO^;5h+z6r&7Dt4oMFl8cK=14a(wz@J5~OC9fUsMTKe&1dCW^-498 z@a^`xUNH@=*!p_ie#`U8)UwR6N~IKrh1yVT?Uq4W!xko|A|J6}vn|4kEs*U`4z-JUvg{1q7+2fzQjju^ z0rd@Yij{Eky0-#kH!3P>hIlRib8V)NZ|ZXot+jd4ApAEH6}*|htXZ=zmfy#Cm9WmU z{DOB33rQ=HW^IUBjIAZ93+|2C2D1H_7yt_wgwS;u?azZ7|jd z4pe=?D@2$dcHH(4Z=-ZeuJOZnjK{x9R1`?|?Vzl-JhV)|=)}rudfoO5g4&?zzLq4^ zrH^==WTw$HODY4FjwLycGl``7+)h@eDvaH+vxU3(Y1o{Kpb&fi(VPwuT-6qbf(s2L z7gjED_vn1`P#kD$Y?T`yj+`yblQMF1H}sX#nl_ozbi6@3%cLufa?AUjTW_Yl5h^Wt zy5^1wsj@qt{Z-3-aAZ(WPKVakbH_*Y4Y6}HSGpyUcC%TFxn=iH4r?X_soeL?o`$of z*Nt{O_P#UK0n273ALY-8{jr^sABhNawu~;%9MrnZtdL|^wPA@gmrdCLshf4*OW91U z)#u{Hi?Pxr@L0RV@X-)YVa04^9ldlm+92i$t-KydG&^0A%<4ViZ*s*xX~;&kr;?G0 zg^o>@2aRSyv{MtQ;3|V<$>czgTu1q#Kc1nsLlJ}otqodeKI*D3p27q&Eo-9YrI~i= z%ZxFU=28BG73o9ed;YDY~81PLRlwP zD#T?AbBG3fZj>C6X~diMMqAr9~HYLH{@AoG2;kL4j8i)Qa^j zrJ9d>EnTf6Z+p8>{11t^nS*$swLu=KaSioF5j@^EGxGGogb_1Y=HDQcyORCU4svBf zEj^?)G^%jW5^1d(*xKmtYKIkG7ds zz-J!H@Y3wbEe08gzrx_pnlg#iKEIk1xUUnJwZ6iMQ!I1o0z9OH_a5A1?(pkXCA=a75Q5ujWmY_7!mP=^YU`td zcB@Z@R1TkHv|*C-DGp_iH8m4ojaT|nzdI1V>-=kXjw!NlMY_go5@vD#o1o}VNKwB{ z|Kir#+S7%_k&%&n3I&B6=UX&4HCA}6en%~v@kA-f!$9g{>-grV z!@tn!WpJzU;o;0{6uq=^lj|Ro4V3vR6>YtcpVr3fylWxMC>o&zlCv=?ezTiaFPh#= z`J9;7x2;!3seY=vDc$6S$;ycz1z;>|sA&C%4+)LvlarGdUBvnMO_{JzRa@l!+0f2Q zGaoMkj7EawQHLSqrK&i;qNvLvZ8T|2>$MJwl^ER2LQFk@vi?!PX)Mi_t)o?2># zjSipao&O1*5-{OL!sL4N9{wAcmWXk#gWO6N26F4QGLTy@F*3q3(B>YAg)iNxJehwE zmiZG`Q=(O1^NJbK-V${Q6CU~F3Yx@9_sDjX)_=d7B)eEG7z zE4f0^qf9P`$=oEO7H#;;D@xA73TD+zRIj)dh`Q~BXWTukuF*3xb|iOb<sgFP+o+R6DKeoX z>yyI*;}#}wKv=c$sw2|vm-`#$J@~Tq`TMy$y${>kUhWu2D81NcB2QISs1uRm=f8e( z`zuG1JQ+k59>^yMjhYV4gS~bB6}Uq>4e@(=eC}D`4$03UJ_Ytj7z-8Eqa0ZV@n6w! zx17#~BvADJOk{DtWkrGqTW;zxE2@fX2gFGO^gwPU!MTt7W9>Joh`h$e#^<-+ibdD= z+cDy^F4o8yh3VsA5Z4_+esS@Ik;k4C_idmIp}5GZ{8|eIlec=VgdO&-C&%yISI60y zkI1R3tf&GQ4BFWV0i3%6bM9#COANvc9C8K&<>DcHj{FLo?97Lu;dVmd9a2NH?A1@F zg1ywx;OZEh46!u7-lg+)$^*w&D;#)iSg+Cv5oHtTORKIS#}GHp!g_lhVDteIh^<`4YP1ACS=Nv@cSk+2p|Ql5_oUZxx|7p*!K zPpsU|4XVVex@Iwmo2vvaK&?l^vMeraeRrxUp~G4r*}n^C7JX7W-qPH~*j^^YG7Vi< z=@sRcKwcKVb>+&HJiHJ2(3B_^uin_K^Dt*EPvpw?Vnn=91tbg-l1V3|lp>B-ke!@! z7KxYt!6MgD`=hNri{=$71?1&i`RIEhuisXQKImVf;o)@aD!TjT(bGQer%xzCDb8Mi zm8suHl1!#N78z4)romi5pb&kJ=3ZA}_=2??c?E^Uq7KvW2T_~&O0lrJOShg|L})9+ z;iB(`%quRF1-EFxo6#CKG6^n27PA#$hOLw>ku`DW1-Zeyz!Swp#{c>)R3ff>NmP~H zZKCLfpc?PDyLkw4>9D&)z!bT*Ec_t0Br!-oR5RTuG5IZ`S|$t(>hCxQ89Bq6e3ikz zpKLO?(pW#6an1Cpz)|`VBpih*|9C|%vo?2u@(gSlCkBa68giufvV>^j%h*ZXHiraq zEZv=+Q7$((w@9bJs05UdC=|-U!J$TGJp)a08)?qfe#@G*qv?^Z?5N_g@=25hdXh;m zqVLe5VZWlZMea`4&&EIkEkXbiD(uIce5PgLc+X(~PqjIB48+AdDaVI2UC#PpFDJv> za8hdbl+3Y@ySb;QM;nJmDOI(&zo!TX>2|(fQbc5~)FRGFc{`!uFeRYra#M7$tJkvj zw6W>P4e)}kp)J$#2zr*5mH>Cz5l?jiG7^ww5!b^*?X&9b|D(F;vV%O$02<}z^z8EY zJm`6GYhtM{nG@zp;pbq>pEclw4f?J+S3_M2O6m_DfF}TBUV^|$cP~6VJVHLp&N>>) z9qR-jTG!UyPp+El8IK>90!rDjPr0zD2#-`xM@I+1b#xC?fQ5u(UmMx3qPg6!x#mO{!JH7s$H&Vf6*FSjK7RP{0o42oT)DYjh2&P{q{_l{uE$NIY7gsH zH{U%-y_mLic6h1KHhS(d=IP`-;diYG?~KG&lzH6 zOW|o$baEp0qi-WLBIZln?(RRsI4W$NSKTgENw054nFy}NqFi96fQj^@-Dc{YIIXc!6-=D;y0ty@v6Sf;ywkET{BhIJjno zmV$-k2KLrfKXOGy@N&cBG3%fdHj2w*d%6TXxH2t!?9$gK>M^!BL=ic$r?#rD9a7BQ z>d;N&rUk+0&1CPDWzthyEx;C6b-lJtFDCj}C9&Ikp4u7!wvxIgbtEJt)Y7Hng8S_& zBvK>0TY|ta3OYH>jZ-G-tr)&lc@~uVfiQZ~-W6NU&a6M_`7qruH#bL0N?JxlB?;#E zis=EI5JCX908B^|8WZ8fH4)SMnAxQ+XrwmlOMm}^_r=_BUe*1!2R+>PeeM`~A!}-C znwpwGn}Nk$=<9 z36Ju-t@7r$=b3fo1-G`AmzN=Gc}gYF+WHlI&>^@D#{=AA>`zccwxy0VH&3S@B2HMH z_nKr5jWaAqtvNrImC0qW=V*>8i9|C<``jZQ7#xJl7r(MVY;JBA=~rA%S5Gj4SNb@g z1r|KxcCl04%jvG!p9haSC?z6FuQ>8!ZP6{9WY7t>TjN}9z6&jEj zK|1(z=}ZvqB=5<3q)S1RG);PHYPPRopVB1Pb@w+5#=gOzs5WCH9G_8!nhwAoY}!y^ zHli$C475yMB6>nYbq5)belj~1~Hl>F$jGNCOKozl|M9{UQ}5w-ynQ&U+tGS{q!-*pP)h@Y?Z z>WXM@Onr?)Tg#^{Tgj)D*_O-7DeI&d2W9x?a4(;hZgFgzw%4s~x)!&li+VbCqK&eZ zjGm?^CC$6lK$*W<{i}aK|GS3}iMR~H+<2e)aDzrP;Qt42=|p1)j2ag0?^9Ezp1sbT zeC{`lU43EJ*YJ3UB#Hq|pLNw!_#GM&Cjbrgx&6>g^46Pou9t~+}fOk5rDGK0hIl+l2E*wU^OW=8;=VCv!!Np8U ztuqu!fAjRAepsHq&6#Os4o$}gWn&7t+|LXA*GupN5O+!5)9Q364DM8YCy=Unce4W& zH-K87We_7wz#`bd-86@s_<-_WWBOMqX(kP?RxL4HvvX7mgZsK&1ZQGliJj5aFw`91 ze;D^~Ql(UYK(7(g=ZXabDh)0`@ePFlT7C;C`7sp!`Zp=3+hBm8lb*)a7)nK!yo+A8 zCOl5|;FvQ4dm8g|1Ds}wp)BFL&X|`~fj`SM7ZaV&p9QFyQD*E<-VjPkLFiMX3!H(W zG>PGKflCjh@$vCBJ4L2XpY2Kt60Y&yqBQfNmeCyqq$C-`ov%a-{D;%?T7f=4l{C9GlT zW}Vw<%O*T1;ipm^pGNY)v{=*TgrAcPobvQ+(Y3YXvG%r@xG^LH}en+l*$Hg*QQLA-Ou;emX==576UJeGdu9` zr#ZAhtx7rQDeGr1)ZvzBwbz_;;p|&>>(@0eI#U)q$nr8M2+!-Qg!{_U^0M{*CHY_0 zMn*L@$fazjYn!<9 z6e#@YRX!^^#0pk;jve&n0DY-4l+4{d@6vY=wH{VEI(Oi8gI_@4O%47+XtGuXuW4S3 zpDe2u7=8r||A#e|40p44!vEH{S5b?JR3}^Y;U%BB_sxBBzY(s};epN|pl#0r@=Se| zj*bpOA*pAwbC8{(8Y+1JCX5r~itB8CK7tM#t%wnAFJ=G{_eydkbhHA?xrGj`uJFjj z6bS?xUqh8M?O0;B^reXnWS>CSZ*CJ|f#o&@)?Z0_pYS9S+iEwO`O<&kl3m-QOJY(G zDu2ZcNIVdY$*a~q%jGGRbqtDMa0eFCn1#{V84yOAH5r&qqgAKd=P(HdnxXx?{cQz) z5>r7$S*^D;mI-Zxr()Ppy!WQ1ldde&XI(c3uKi6>GNaru6lhLXz3YIM;OZX!m0l@k>wX9?KO!97{;Qt|FwFLE; z6dBv}fmP*xJx2&E@S#Qjj#tN;B+5HV81#(yQLQ&Bj5kkn@uPvvcUzkuVU%r`{rV-!HCH;fyw1~?qDv0EB zoXOua9p(7uk22Lr)I}SJf9ke+CuSMy896#Wp4O-A+vbbBJdOTjabdks!@0^)0KLn= zL0!0$n3R;^H5XY6%BtJ!Il6{V_Y&{$I8hr&LFz1qJyyr1j9_48z+VJRDI@~XDl=hc zZH@3pTG-gw+ZXrFPlt2w#JD`pwAUt5w&ZbQBtn9cu+zrv3ze?eNv>xwr`nzT+Mr9Rxml96WQ4#opO&|&2A^y$ZLtLgB=X#{!LhpMW4 z`$7)y?yM|kn@jKnAhHRbbrO=mC5@rHFJyE|fKhswn`e*N&xO~1{CK_QWwpjlM~p0E zZ4FR>8C3>Ip3kjja&{5cQyAP=b@n&zo4N1#k@ZTF>aFQz!>#HXT@%li)bZkxHMBKK2Bbz-Ji5+RfKYmB6dD~(w%QOX zBIT^WiYBO~|A^@@w{*1?m`L+0>d%j%xU$j`DL zdEwdGBJ7}VZ`FD8pMR+U;S=&$2rgXUJ=IFQWt6KXzt7fp+gTDUvIa%>()n-71MA1V zBDpsJ#iL3Jp^aPU#*joYi1;@;Wvy6R2%sq6Y&6+WqFt!xmYYPgOs{`zgEef-UNR;rH**=A)WRPOfryff)&4 zrrpYoE`&nD$dF9O#7g)KFhc_y`%2leqN^*q@u@-?Tm){gm`}{ohy^S@;Doy1&byJo93#T`Bi_E^7as#I&?}*F`GGBJhtoF%rO$=_>O@MWrOx z#rmepN=iyvXYyK8RdY{C4RC!1Y;JbeV4zSFhA4H^yJNU9X6oj){i7-5lpX;D44@UV zAu;qb|N>bo4}xBBRe5{NGTo-!StOpDi5dit#= zp?mQ!n8A9TUW}nPybzn8L=*`B3{AP<7q)fz=Wm>8@r0Y8U0{+}Fyh-h;^e1JLa)UokwYUlD`@rY@WB;vD_VGjIB@mP;y6hC- zJntP!<=%T^8H2zMGC&?OGBDUAECA}B4s4?C!sxJMyGcM2U{odlEpr`AzKgnuNd-K% zf3pL*Uh0^1)hqcIGtho>-Rsi7sR4jyW#P=Qo9bjS*>`0;e%+EvKHVESKd&mn6oKSJ z<5JlC16_mqpU1y`$l83UuTK*KGCe_vL?#vlXJ@mV2qov|CnY8QjrSMi%RalzGVOeX zGXK8CGPp$?wY|@`&d#2Co&}b*xYrW*Cye`Xfp`ub^4wiaYv2kDWP^@=yO6L%?$pF{ zM3Vgcw;KZ0G?bdgYTW0`{&!&h0_N#iY;-R8R%TKGPGieUO7DA1ON)FK+18s~YZgr5 zd>*v37FuDY)KcQ&nfMvr^ReVQZ%Y?B_6^y3iv*uVzUkP^z=Xhy#B)P<_#5MpfIU@@ZQLMhmgCZ z67}tyOU+nev?-)lV!X=P(!n7r+F}|V3I1MN5NUrk3&r$R76g_j^6oVX&)Z%rxCcpA z*&Dme`D<m0p-038|)EEvcBOlS%VODYsCITzP> zm-w4p$G*X~=UX~EJ9~507^S=*!omX>N>cUb^LuiRRi8DEG;1(x zU;eC2QXg=t*Vx$DkQUCIpAQdf4XE!?M^cM^0>$$yNziweNbH0Q?Q(2)FS`K((hAk^ zk6=wo(@n)V+DA>b7)4Pe z?6^9u2~E6@PvX2SrO9)=!Y?Q&yEU*yrhJR>7ieR12;~B{2BQif_^tmsa1&3`6nUSj zSv;cp6%PY#L1RSo*TN81FxI_x;nnL0&W{07RL3Ai6x`e+xp4I3R|A^WEib1A>RQ3% z(#s35RR$mf+Z?Et4svs{iUfSoU$=Myp^04qm96Vke}QgYZk}O{+mpwSpAQ=}_(|=) zDuaO5G(M4XU5a1ARz7)BS{jK>yk}d&iyHUU9@~)M;JygmVgn2aA+ka_vzxUCZ*B;q zG3w_`5fPF82qANn+OZPxogEL3^b(_z!9YAC1A`m>gX?6&^T7EsMc7H z1>2YA)5wzvqTa#NvcdOo_bFeF#0wiEC^WR^R3Y~tE&@X>YHk??406mE;)+u)xYaBa zlny+5*uHof^pA1trcx!`x3{+;zUP^DA-uf2yrO@i(oip7ESYj5Bk(EO-@2Y?5xGYq5e1~ zQk{5BwCI{p9SPKHS>Sm_;(C?`j-QH8^V~^DNN5NdxIY{m^{D6GP4fj4eufYas1kS~ zABl}t!DeP(oPNXDm620)yX5YkkdDwvYUF)wsULkHh~3gJSNAMzu3AYP_1~E;M41VO z5MiOZd|I79^|xS*Fsq*AM_k6PPo#2m7L9)EUyxZpi;$IzNB2(rZCzpkITB$WJOv=h z!NS;?4NNvGROh^H-lZR?9Npjga9oPlqzZnuLMr zK%UgA-EP+62`Ecen@i--f$^`OKi`_)AXdW2qA;-9H_6=5O! zskVqI5bg{$%TzfO zmlH5@A}nM-l@zf}n&eWs#I;xLBK+y9o^sY%AbQE=OFt65>Rn%@H}-85K%x;P*FVDI3dW|Jd5T@OIK-9z{}&w;!u1JNWqpQu=( z0q<|$zNyza|IynN6j%BvU#G4jDrSHg2|fYhR|ekSWr931yQ$S|D&3*{)2HbM3qc_v z5s|@pmvy=LgZtwA8Y1uUas;WXqJjWowy+ec!6A)N@p=BPTD9)$(h~RbA{YlsBud7z z&viy>D+O7de@d1}puP!~R=p_#M5acDK+F_QQ0u+J6GTHpqbXtp#Hb!-q*leZozHa{ zgm?LDEj&QUw&^1t!SgnG{V+K?`rkPUn#R)Ti-7B8XM#KP&=vWFu3f7f&XZ8;3kBb z+}(&eqPahf4fAS@Cgs0YLvda!=TAE@RR)Qe1m29%k4!Wtr&Tdy^&^%*u>|xZ2Pox! zj8_2-PG0%;*=5<)#E!4VZ%i} zyus2_0aPSSW`M}`)#ujL%^XK7pMyD{1;rnbg?!H#NkRqTp8VZQO|6 zDQk2LqccBu72*M_EJ6}5v%=^Li|=vrK^AcVNR~p{Pi8(ADd2hx@F5L`B*3ULa);0h zVLx$Y;YPslgPtV;dk(j%Y9@>sdSJ#JA`vMYMqg5Vo{JBXjDyA6D^p>QcM7;tJcspJ zPmx@rovNO;ZtTvd3Z_%Y$cL7!G#&#O_s@O>4b+N?iVXBQFj*Tb9(@gbMPVpae_VKj zx3ZerM71jsYzsp!1kWZVU0ok7baV>Q&|HhjXdQK`VRn?x&&!EOyr6IB89o0v|S+ z1W;2`(?-bueJ%jO`k}m>YBajIu<+B!^4~TwAm88r1iLL>{N5IIKj-JI|9ySykFivJ zW8(zfiFuJ_8SgryzfNzTiHW!&deV60ko*T+W8@1Y8G_&Fc>jU4?1vQk*K9~iI{pEx zkYLl)xn|zOvTP2n>w=BUG@v`O(BEq8Cz*^9OLVnv|A7 z@M45i(L<1bcz~a_G1-QbAhX@XdB8uExS;6ISy%n%EOg#D2Klr{gUfsW{2wbMK!9Dm5@6d2+PM4=fssP%7e=HxJzxg?#}gP`fE>H%URLZsPN05~J~>K}Ze-c; z`Oh6OQUJz>tbF=Bf1C=Z+U4jBC@y(9#Qo199&jkEmG=h}yxi2JZ}6>n7;X^L3E2XB z%0G`_@Kjt7Ko!m)`JfeD$JZ_pfk~V}lHG!X0wpL^VJi_BS9&XU9-?GYT5R(3k(E4{ zI78RcS(ubbsjA7!)0kO6KyY>y;vzXgBNfz5{F{8AL?(QC@9LdFCInbeTIulTqUk6h zP#hdbf<$f{oGa&8!AGO`0SH{2XSYpCad1p7{eM4vBM32mQmJ$B{cvvTfM)!oD|~w~ zYJjkIT3OBRMIL_rGIjc5VDipP4zG;YUs&D@5r%1q972 zQ@yw7KE?DxSkxVr%vj)1SH3+{;GbHxyk}W^f-Y$A(#OGhd*wc>lH10LWdd=Lc1+#L zS`DKw74`Mv+kN`IZt2-nhp%vOeuXu6;F*aq)*f^xEchFznornupR7*QZcgZKZ*~_5 zu7y*l(UW!Dq$attKb$P$f3(0ZFwNp}OVQtkBVy9={QFxzu+#%eaB+`;+}8 z!;@k#@AcQSt%C(zaV5N3!4Kmq)<%P}Ee%s#(x1fg$~Z$#I(X~0%XmZTUf`z5>EN{m zb`6GPUMIdY@v~=cU1Dj^%>aDJYju5V>G{S~yYu3O@!&TE@6t5hlXx7jDiH)HbRIDq z)2?4$um7%JOX$SIo!N*-Ho|KhASF@1J;H;7Gkv3pqIfX3KcVPXoKz5vK_Q~GL3o;_ zJuZyMSVu(|3`fk;I?aQxnF(KeOf7B^?}QV*O(2!arUc)veL~2m9a4*EZT?_P7GcwR!ezfWH0?R;HH zaRmn_ku3tj8Fj{G=K6!sj;0$tc=$Lt!fhs{JVicn?`}Nh;KRZBa0m2tjfWSvrU-cl z=BuxL7~WoFsb!)nucG+1p7|&tz5dGjrJ>!pdK{e340ycM2IY57#0?qR!$PQewa0{i z1WY^%55{AlTZ#VALydzo#M~RfJM$glO(|NO`ty8GZeZSQFTbmdIdon_uNr^Xgsz7k<0<;7oQJI8L0@oig6<2Tzi*WD9&y-2 z7yk_TJnp~6>4iXh2~%^q*V#K-i}5n*v0udb{EC8=cJI?bqFi;R?&6#7&UD&?c6r{S zQA&f(jt@h`A-aPG^g-Yvdk^89}RfI>>M literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_132.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_132.txt new file mode 100644 index 00000000..363c063e --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_132.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,3,0,3,1] [3,0,4,0,3,1] +[0,1,1,1,0,2] [1,1,1,2,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,1,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_133.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_133.png new file mode 100644 index 0000000000000000000000000000000000000000..389e6f0770b6152f61ac73a67704f981d10bffcb GIT binary patch literal 13831 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�Hsx(J277O@_Su(hFW`wkSSj|;fch0 z7loa+FVGBgy>TzuDA4#iVeOnB8I5?NDtJ}GB>5-o%*nVp1Kbg6GSwx+LLt%IRF-&!6Ty=rf#)BO^)GQ)1^zUD@>xrs92@0!rAmLBV+ZvHpg)dOzT} zD@J^9SqHls?aUj)MxztGWkLPlK~L7Zx04^cjyzn#{bHzB^3Or^JvA}8eV6ng zA?TAY1w+s3V$_8&e22*zU%aBJWm4>GTb~d_3fN?5wT9y#E)ZCgssfjp#=C~j6U9On z)en!O(z6;sWuFSG%`T381S^+3c7H13guZG zUT)?PNem+Jql5Vo$0VO%gc@f%L?1T5Ab9$o>rj8#fW0@th@{PNSUqY01YfLEXk=&z zUNYEjvD}-hx4gUzfk5)AQV%j55)|U8)G=>G>{J==sHr`yG9Xmlj{pNW5f6_Mo0j9%k0gLY8v9xn%Z?iSAxr`+kc`}mU0n~dd!7&s(Ia#N4}tt7 zx_WwgR5LLD00(|3xQ&fLh0EQJyRYi&>lMRT0Qnso`}_wyr7gz5XI(0Aa}r(|J6L1> zeY2G?w)AO)=JOyE&Aslc2Uvmki(h^-f5~Nd2sAH2%dx>PzchFc55fj8iI~7Zicxw! zXAScs%C8QZ>5bYiWkKL`hguO|)-H$@qSSQ7+laA3M>gUibTroZe%r}daER#)LH`R; zUe@@&dLAbfYJ&$v0s`a3O+9^EwnJnC)uC9yYoN&I(@Y$2ec?l_t55-_qt_Ps!LU#ut4|{mdmZ!+*9((Na`3*MEb4m1d0+}j z4ysG~@lG0teXzjoXL&NRJ^ubMqVYB6wuzdm&?6;{3InDf-4hb1<6*oKZgDuWyaQm* z_Qvm>t#v-5>Y-^T_bQgUAF>Bl1^z)1JZa_^!P6sqb2%wFc@&NQOTUK%WnT=y8A}|& zfXGa;i^(dlPTKmvp^tF#XHt-V%UV#>fGyLWNSl_c7`7FDt4@$<*@A6+cZat!eO#E!qqP3T?ndLh6B1w39RNj@r?;4$87K(jIHU;wjQqGg;jn z!wmHFA8(cnzQB7t<}mCl3iOo0kCv9#dkO8|zk@WJ-`CoU`~!CI_EZ@H$OMI^237Hu zKnN?a0t)l--IQ^tjo1?`RHQh&CSkpO3@E!KN{J3q3=80XE#dm>sq+O0q;+&0pw7qa zL#HjO21X;=HwHh35(-+DSg6F9lbds0;Vw!kbdEMv4tHSR`Z?|F{ao;E`ALX=;Gvd`qWp(w)V?oao-iu>5GrF65m!mk;R+3+pb#mKR41XZ)+`;3s z3s7!f{c~Pt3sl|Sx??Z^E*~0=p6$!Gv$eIDjk|gg_aM`4WSHxdG)DDdw08~7{(+!C zZ4pQ+d@0g7Zq2TcCOB#A)_P915;yQ~J7VtnuCJ}F$aiFZT@M8+1|A;L+lv4n2 zusLKgZMpvf&)kH%2TSZ`eZK8NH4cEu9i{=ui*$a_W0E$|Og8uToa)?&y& z$N=9z!ST8-c#|d+%KItTVGdgwbmD&jbvy*-#$OZ4d-p#|IUa!*{%P602g8>W?ceAf zWdiV|?2ED?X6A?+Hv<46rLfk|Ji-_@{BtqokZjGvi;XYixqa;|eSV~XxIvdIfebfL5K1X@O|Ksf! zK{McsaK2Wa%aiSY`Att-W|a^sZvR+d=H}*{pNEF@^ZOkC#ELedQ7NEz=;`VIw7mip z(rCH)+cl>u{zR#7pnP`1P*)ci9)H?$bvT^6y<&NJ`M|W(e;Fz_H`lr^Z@P@4ptN*j zs`K(d5DPPN=^r|ZZY0uX*j6jqD`TN>kC}?}Ut^QW_TIL?-!|hjaQwiz1p06Jbore9 zA2%02v0s`ZMCfRvecMf+l0lcuP|B>r9K5A(LEy_tMQF%uID+yZUP;X@tjv^Xg zUy9o<>HE`=2$8ilwm3p-{PR=N*SJ^Yu){smr&|i{elYfOvHv6$b~};%7-~~O`S~q? zEU<*vCNh(44~+>|nikQMx=5zX52iZ_Y^9vji0IT{#nrzJj76=-n2)2F{NWncrXM{{ z2hyL#e(e|x5Tz^E7965}0$O*~Uf377t;J`8!@}OI@E5L+c;pA$o=Z?8ft?k7`!`mf zMeaO;i0Iyh)A+wHk?RlXVsDeJ2lL(8vtlDprp}`Ma((T#n)mt|-~7@oCL+2a{X^De zXXK?}ao%W!`$j(1UzU+jvzl`E>28`dcXFG>o*o*RJOf0(Ko%&l7g65Ca-5_BPv^l;vzu&S?^WJ*oy*cVVQ)TBU zHplaQ{87h;XVMd%9%GDM7gxv~v6tQURg5ZP+cq|1~LF6rr*b6BD*$H$X+WhLcf=$E>$g)eh#ez7ha z4lKqKq?xG}4y<4L`V08?CH<7&3?AiUX2)VNAsiyc^)GUqrFfZ} ziHU}y{xVC8!M@g}?R6RFg8TkfNtS16W||FV12^v+Y4Qf~|LiWF37BiXTyk0K9bqK zgVL*!HW9pAa>ffRH9;d!N|V}~TMXYiVanCvcOpsY&*JC$D5=xYOzqZWg8v`^_R@;6$5yPR z6&IZ%c=?JW^Lx`H0|?(h&W`p%G_0ma@t@RrKkEd)qL<6%(8P%!;xw7`Z*XP6FEjmb fW~=?tH}|?K(@BmY?t)ZFM5HXQdMi)X`1$_w0&+`29Jl|)}&hIC_o1iBOQkU>4@gWe%B^hZ6B?#n9E9U=; zXTg)+@+%z>2ydB;#C>IF#8RA=iMEF8O3PfsP5lq3wN5CZd;q6Q%!{i5^mo@fe- z@-|c5YT>ztPL%mqfrR44+*J2k4|8{wBU-;Or(DeqWR2#Ldv1w2=%Sd>PYVJFq>j!f z>^$TZ{{1E<p;WGBfR}wSKkK=`$e~+Q*mmDhxmzGz) zl)oHnZT;c5*cO`|8(aN8SnqJA1wQKO_*+WgaJG8b?Qmy}K^QKcWY4s@xfvA|#dNl{ zt!JV?Ww%U=D;?6?Jqt;%e#mtMhp`q4RR%xdF3maC$6_Q{4Jvw{7ccnj` z^UKc8=6=0y^JgQX1`hkufBwQPLs6A^^FvF%4HD1n?(Q~gkF^!^66I!b!2#UN^=j$? zUhe2FkFA~r%Z{gaYgQWuaoc|)_2Khop0(X(Jd~Gqhq~bI?(V|H{Y!&oqwZV7+zHMD zXHq)EMNMPBZ9QaVWnEWB_H%Dt>e?cN!z$~75sHRl@PUZr#IjP?>r=cew~9(G2n z(p1)#$z9?-n$AG5EIV?TaOvb{C{YhylKooxJxw=qX0Nwc=L_VZKM zoZ%7$+Q!k>>tcUlU~$sd9V_Xf6dAJWVJX1@#T6O13D;Oo^LFpJNKIYc%QV!nadBXY z5|>CsS6$tF9U;k-KWLIhqM8Swh;hVh>le^9X+!-DvxCvR1L|ASJ&jA6(Yl9LOVNs# zMsnP>t2{N(H358KY3b>vu?$(T)dc5iPGTs{?m^866Mp<71^%e@`@*y~{!l6$q9SW4 ze>UOU8g@6E%q$~x1(o(Bm2tka$Yy&VwAh8<_b>G3ceQJB>&lru5+7O5#VBHCT7 zcH7DbkP4-VA($gsIjBJ*A6ybI^Ph0@hayPgT&@R(9dL6M&>Tz|=ncM)DcYIz$!(Zf zxuK&zPmq&Kd*cRVcz5h}2UlvOG(5GZr-zA|*&SzYdAM@PQBa#@4te-{{DClOo8PpU zS&8OPx<1cc#dC1jpb?$8Dz&a5rF8aPvn#b*d$so-Pp7oMKa4nR$*<*ZXN>VmZKqpG z81n3J4KIQBqXVQWO$H^dB>MUJ#l*z4MBlZxusElcwv)59=k6{$AXGbk>887}ftguW zub|^Yj)mLaPy{>IZF;%=H}js^`N?K0>mvhwo(Ic(hl!5+DLd^Ro07Zo9hnlL;4E(L zugwS)xR$x?-mDSuU{_9yHxgv+o_kRx_tjL;yOhV9nWEFPXTyXZ9M5$pXA`=m<>mQ^ z77{P>7k`2oz`-HIAuamY_9b7Dn%LF0)2U`{W)5n!upf1JHqvQC??`;m$5?Y}R-YOO4|D63p=vz#%VcY~D&`A{oFP-PM=VL*-wFL;7~> z$toJ?;ZM zjN%pa3UQp={dijuaVRUNPiqXM4OOjsglzZF$t-v`m&1TkN-L}v4I69qk(ilif}$VY zLr&nd@R5A#?W_DVSH0zNZsv)%0gH#lws8iOs>{x`6ki6M0eeY8#ilGV<8QdCCX+9F zqb|oH@!zIydy#g3*m->erk3?FBRsP(R?XaxOPfABr18l_o>Kv*rzW0*YGZ)ZgsyHu zVIC z`dooE2raVyTiT_j!Q8@$v>r1J{9;XM6=acIa(u>^*RD6WGkO6^Rt`O$ll3Mj zN8J0EDP?_`7pj?!@1Ek|VZs%HgeLDuM`+}o$Anw4mGd5lb2mZr0>8G}-7B~$kWFgP zTS>F5m~p~);3 zqmcW?ppn_aUw_2BG0T`725%Ls;lHrN(4i5@xkW8%GkrhF{`Q}@F8843dxr!(c~(8D zbG9~b`tMq_NYZs^7$xkX&tq4X?$6u)A2B?dm46n4g^#K$J)diFoDD+HZ>SIS^_i4t z20xq}C^5IUw_jLTD6O8r?izPG!%1gYb@hSP-F?$k+Jye7H)2Uhfg5sa`MPoUK48+e z(ID$(*cx3&|2cZ97Ik%HY7t$JtyIhMi#G*WORB1bi1ZyDO9z*jYWs*WeMRDl^G1a? z)eVT2=Vw(nI_iQjhlQTpF|m*F@$m@>Ww~T{nDJY9hXqe9HPs0?lU7vQ8cDxUHM6th zf`ysnhj|RBzBz|k0N(peC@#tvRXz7T);Zs}V+sKW)P+SMy8E06TSm$D85)b3F}9-WT(OT=jj&`~n% z=r7R6M)8@`)~f7f9tw8}>$8D%q&`x8oaPpx4#pJtqLiKP!l)300l*_t=`dg6^>sP$ zVG7dn4Cgs!En86}*ba4KO2jCzORmmYXo(RfLN)nC8b3+EuknT{ud7p1Q5l5GLXO)S zYcv+es+=3EbUhGOpOop3PYSF!Dj+VrD_k-2f7y&HRFWc zVmv%os%ht<>RXGhsT0Qqt*)+S%q^Pm3ojgW#g(sMXNy)r`g71-{}&frOjYuamLge6 zR)fb8#G}7|qb{%~POV#fM73fwlL#Wrh71Y<{nAvF4PfbwH)vcfd_$5lP^#Ds_6WSE zxa(gfWuocFYpfdFd38MJ?f88IMq|?RRQ9qcle%(&n*wey`f->spAua4l=LkeAG(OU9T4u=Sm)(f}j|u!eu~h@0L0BEDh5@wG=x zY}r753Pg^`Bi${dh5Q29gA~rO(ZtlQ?c>8IymbLar~q5w+D|Z zs&~dg`oAMwD$+L~P+L-4nUGA22BG_aP2gUk87jA*+22_^A*M67s&7FjY!oEan?9~> zaIWwF5!DmfJ4B8>!gI6UiuXJel4_qaR&_u#5%O1-m6a72lU6OQ4Gj%#ZaUV8WYfsm z^wjYa$j0wq@p5Sw|=iCD(R6f?MN<29{sGZzBtEhc`ZIy$D?es<%E-#tXT{4 zyYgZ)5N;gLw2L@LFkNV=YP^WM02fzLMTKm#^p*5=A9~wmLD-dCLu#ukrOZ@{(If4;G<3LM1^O)#)2 zcAV;`a?9g4_qMnBz%R&G_S1xW*8XwA2KY}I)gjy^LKjT7D>KOE8YHs(aL?z2pUNYx zuS2(nQK*O6-QH_I1OghOkX+)t^v~435UYxcwDhlSiduHH=y@EZDzILI1r_hPRsPgp zvu0o=UD>yBb=xb`{XCr$^l_@Gr5_6Sa9tXhaeeyS%9xC7hB_8k->Ru| z-OPr&#@gy5cvjb%bZSMmdbDWw>>RP_6SYp!g&d(tq!zPJ+!M_HK#NpGr|!kUwg+> z08pf(BpT_iuCC%oM0(2^@f)bX6-KMeDIT@?WkE@s_+2nuz)u6}`ERMrEYbl^Z;4#5 z>vRwK>7l6D^hcm}qRhN@IGY-A#tpe?%udc{HS{TzXKFFwaPDZ=M|9hIM}V_jTx*hq z1dc{2`i@n*7S!QX4(Iqt`y@`O@a4{lX->b&z$oO_{CD%eArFGoN7Dq}l5alZl2jHMF%Y zcw;%yoWi4(PNA;O>$BnI1;!S+i;Ig-d_LsT!@ls>crIMLs1f;IUU z1SFOJxFMaZ`iAoB))k<4-o6b}>1a-Re9m2IZ%bcOaVVu+o27W>f5&<`_0e}6**Y5J zqB-W=xt~9KHhy@p$4#h2LrSnIFX#$|LP;9it(|dX68b-tEo=~Tp#7kTI7#`YJB%70 z+h2~7qd%k%z&-o^vR{;*<+@WRO(x!Ej&3@!aJ>6b|5|&(Lf!oE@?6BWX`UbPJm7cl zoV=5|=A5GgyBsCb7@yb2|994#ncv|BMGQ+QHD!G&h^&aF znLH`#+>(zqn9{qGY5`D)#ex2t(o6O)0M~gsar?D5uZzjQd2hL(ul;SCX(_{|qSVOd z*pkrEtOM??mRkbm*B^%C1!n+-OTKsx9YmN56+J87k- zC;IBk=Ba5~)%qRtF|~&`yT{Aw!uK*bXblP)xRi~sp{W|5StkoGE)?0B5-9<{TJ}W`tb{;S&MD?Hf`F?ItuUTZXl|OSgkihEPm`rnsibW<(4Pb< z{okN2r$x%*1DK-heHbpw88)Vkk2AMOho-2EQN6FUebF0}VQ8sc)~ z%~gH@=yA_y{@2QjV&3*agddPdnBk(GW@aFU@Y*_(X3lz@o3W#~36Hk@*0)-$^bEsz zC;!}5A_7b}6?zXHGU;2mXPSzLslG>&NWZXsTj?2iqjK*$df8x9T|$#38%aLRbiHUf zlwqnh$2A5ph>QKLP14zUN|W=(mXS2`4@&rUsBF>mZ+wgx9)=h3W$O}+wc?2LQgIP) z0)$C>$+vvCQqum7f6HUY{w3+s%1W7L?!#o;rGb+2^74%hhb<`)gv&*NLEi7LO2Q(; z3$p0}?Tt7xXfD-0mmQ8iT3tITU?;~5P6B!r&!@S$nSh)FCh}*zRqTfgfC8@GQZ>y* z-<-F;w@?jTuW9bq?sbAMiLv%X{6#T?%)vH?vKM4ytq(HR78i3`&`gfvn{d%Raj^zs z#&E9^PdmM-+D6Anz-8xqa<%HcxP^sSvZ!SF5VH$QHzb*?q09EQ#5lF80AFO3yRDiMaD2`6Qa5;XV2&7xMJd#|17(-SFV(TV4P$?6Cg1)?8VGm5F`-^z2e-{a z-5ea&Vn_GgH1nXWHJpfuVmgdS4*L^=Wlk zi&h+r5<=klE=sMQ`DLW~5k(00MSuaLt-iAX%OiseSY0PiXx-GQP)zY)`b%$TD_f;0 zI8_e}7~AT87_b;kW_e*d!q? z_g!GGfQ}=%-qOdeNQ4cWD}bzPw>Z>op_hhTfElrP+xvD2W@Xngv%GUTp`ThBt3O44 zQIID#eUmRe3sei!79Rc^aBeYzI#_6Oh_p)krz|Elkn*3mFh5=v$uKw~bb|cX8ZO8^ zkLur8wF!p#=H#avq zIl0|UOM!y*6`*(r2M1FLSYyy18Iqe`@Os%_g{{G&o9g^6lr?vZ72Yf*&J2HU8@!{f zqmw#6&$YKJGrC5{Z%z!)kXzYbpX&+_Cjv%Kl6^U$LR07RgY0fIZpyODCWjrg2P;38 z?vJ*ba{j2nQwjIztWc(C2bbG~)y|oR0R}kIDv@{7WC_`076H3<)ax zO0Hf!lhj+N;YLFUkI2l-1o~`t>;#kf%0Asmy0XskeA^Zmm@;U?m#fZ$jUpv~HE*qL4<+?G`DK(UymgZWm z+Y>*IvAHK(>&AT9IxvP}wCTaag}Sl&m35vUDmSryqFhE@Wo6}V%8bO=K={jUK;yPD@wW_@a`np>pSRQEnK#3U!LY=0pNh7(Ty^Fl1N;5Rj2fQV@Ea0F`EERgUwktfO9yHzk{{shLbCl+@|LnPJ8u$ zv?$TA;-SFQoiZ~3-p47>1(h06gIXrNelngpfCcAS%omlt#!o_sT~OD;(@=TWPD4z? z;M&wdJdOo*Cw)Rz)$0XQXzS204E?k>DTpN6ws?G2GM^X-2O$ec2(1$ z@$Z8tzbKGIIfZ-Y{h?Q|x$mkA3NcFwjO*fmGl@Z6TQKuj(8d+#J(IQCovp@9n3k57 zF>>s#VZO$=VO~>HQ$Y|U5;<(uTdH~Uq_e==V$vU38#Zutb@lKV`S*)^{QMMb_m*;h zJU#|!?5~`oj}=SqxJc$~Yg^cFaqN+ug8Vt);d`@oRywVeo`U-6H?5$iV;Yw!S6NVS z4+^#4`7;$9eCZ#Z$DxmXt&pA^TGRDd)3Y;AcDH=U5^O=N4RlGI7iYTc5!W#E3j?;_ zSpN!dRBcz{=kYRxqf5`V6&h%u&MZQI+8-R zaGrFWy`~IicVnVZ*8uyCgutMyLC`P35UVoO=_LKh6K_`2H!3-OFzqQ<{)?laNbU3! zXl;VYYf^QMtkXs@X3#Ol)yD}sp%X+$t;#Bgmk$p;YV!KbKt2L_VHzRXgep8Sb*NYW znmT!$2p*fuXW^IZ(ccL)M)!@oH-;8As;J63Gy!_0Gcq!QlA*GW&h)yZEF$6(8d&?O zXc3sbs(KTu_0s*yE4ixK9VSnNGcEvY_`F-1J4qJ9L5f4BZc-?22Ne*+@hhNS&GY z%5lIW*&Hs&Y__wXL|w|y0|WmiSYP6{+NyM!aC@6~U|}gHf5vTVS@B9JjW8E^&)bq& zH2N}6poScPBY-fA7rDe$Z*@CcT3XuKb*ha;Mn*bT#^uihT%ny04J`k`W|Q5WbYb=2 zB>L=gan)}jQvg zu?XpK(=X?BMxoPK6-MWCbnUWtg@4pm{CR^p2{xROy>o?>=|r0Bw4}}9j2uoHicj{xtf|m ze82oTbU8R(I4fX2-nx5guy$VpbsoZ*p??W+|H7T`DivqHl*2&KlQ^9(ItIO2*-8MGQUM5F z=2Gj?D#e8z=%cqC)Y2U*#9AM_mf-inHjWziKwU zmR4`5nyGADUtizfuR09?#hT~rhM)jC{8-)FF-^R8f4%D;cva{*(P9gb6TL;li@7{DbsVvODFQ%=bQwpJLFuw?o2C4%fBPa53iruzxr^OIccSM&7xvB7*0 zLFUR6V%>V-qz6C~3U3p9C2h^IeQp3C^iFzfXuTQf}-Utt$R0C-TNrgjZV@w*PVvOnT%TO(>Fw=mMUdev#Xh+<$DAv- zLF_IRIAUUC-?nWn{&btlpZpx*dmAV_e; zMZ0yuq5qUgb8bCsHb6=wB#vpI-vcIu5d)ZJH3m5G$hLuRx(d z93DXFo0s}jx8N)WD)X=%GdDM{5AMg(z@;CXK|IdezY`AwKM=H?Ez@K-ySgaq?tsxY zgAUW+2UMwP{1P3~IF=e38d_Uhr&^-Nh&*e!v$5T`k=+))$i>q6UcH5dLH3|-U~e3xH=AqqO*gfq9tS|_y` zd}xcZQr=8wbf!N};E-b>I-zXQ-=6s9yv|$g>r>xVXobcSo}7?!(q9xaOvR`eGnAhG zNh~?2#uIt-gyhFqPje$V+0)_KVSiPZH=!E1?+`pma0A?MkR>{~;lPO?37^&WO(f88 zsImxhqpe4&0{lGIIYWd7O?Q$lOfRo~2xeC$KM^lG*E_>h@>`<*z$$wCtp1*1A9{QZ z9eUagSK+A=H)S=mcI{JbMGgm7AKuINN~dd2sa`rwCiLx}Uv&2N#r>5t!hhao(-{TF z-MM!X@)TS-VCekWSMoRH5(r@|L|rC3J-I;`=WLs@QsZ<68X4O^n>{yMv^Z5(;3k5> zg(R~@yT1?ogbZlJ%@>{jK6ou;!0XN9SbLfrFEg}%Akmo&4i5e|99d!S3Si~po>&u; z7*CDs#=LL+&!42-gQaRWPUt;G`V{=<=D>eZGOcbkZt{;Gx3{+Wvi|Jdf7qUX0cK!8(?-&DYkAnQ((+&5M3lSl@#aDuOv%Z}KuM27 zucoT7@Y#Pl??z|%6bS$I4yRq2g~tObGNRFy>?i3w=YErM-F~S|nwv4Eq7U{ORs)Ui z$tDC+9!u}e{?b=By+>mmYft$xYp*(hO!7=%Qx~L8%^q z07g8eQ_#|eel!k_0`)-A;TS;Ij}<<)(yrHE^|6CkQ=vW0w3YB=6S#xoIhS$&i#G9W zs_s7g(@C}!Z?LTb+UI!|l|?HHMe>=Mc`Ql_W2)#nyjdDA9o&OmhKPB_v{|r#io(Mq zdeWa^oY>txwXT@oo2yred!hsV!rCO#t|c?}N}mpJd9a0HVI+Xyuj>1@MJ5&UK&Z$3 z7*?>g^YE9A9ZNl@LQ!=@<@OGKPR`#4pj;k3bY686s2j{_l7>%jkvs}N%PM!;D0C(k zZ>l+h`3jBDXZsoS&e{wR3T1=CqoeJ;*R+Div3UW31RnSCB~0%!#`xIS!I2SkFJOZH z$P4KEV>!>z8ZPt;v7%1H?ee%u!mLt$@?DIU+qRn9bq(mrMWnXabeu>Waqe_x1a_Ju%soas1l z3^3VPZT<$%WAtmh{_UMMK+g^uEtr^$;qb~~DJ{+vyoB&>E7MWyTiq*SRviAr|R+g5^K zP(VPlAmX;6MKe>L8K%a-UV#OrwT+i6Bf|6J9m!JD4Ic~1hWq;yFL0Wh9-DO3_a8Q8 zrBLSQ<~~wT*u}3ZD(bWW6812KCL%juebKcF7)XMGL{Bbh4HWy zRw(|+`k>mhYxXYai?uvJPtEA*<*Vq#I*odM@6Nawq8mko-8_l12_o(l`ph;8=g_IQ zZ*di)_nW{)R#1i@o}M=YSQJ!uqBp4T`xma=Py5kEaRE-Oz~O&>-MZZ;EUA?GKv zMrUZxkW}$~#KKzgR3zbUWmneLj+&KF2BS*Mdx4?=RPnR{ODdx}yQbF}c{MwgjlX{V z@*^N0)8@do4UFE~_Lgp`-;A3o5(>Wl`SV8tl4V;qSc1J&23k)<1H+C(Fjk#Fg9uOV z!`90!U_Si4zJ^Vtk8=FLb%u;RJh>le<=Kx3C)d^hAOxYAHXpy_SNOlUby%O^-@ruD zH#AiBV(#4tA3Yfv+45-ZWAl!K1NVQqfK&laj(J^kv&k##5j_b99;5%!Vw+xJ!8e@` zeD+3pPh^rkurGx`(QW!)V16MfZ``5$6wO0G^{X6PT>tt~t|9y{mmmRJ=~kD8^?#8` ztH|o$(9o`i4AeSXC@_?d?P2&?`n~zPS1S%vJUhknQOA|9V_kE#2-nl=gLe#%0=D9X zojjnFa&M8fX4`_A*QuZZvP$!#_Z(%qg*ML#ilM(g31G`521lM9qQcqtVP5vJMn1<0 z@FBUX=wl7ila2R)gg-H7Bcwf#l*l<{bTX)9;(aH016`{afTYUlRUS>x%``N7i5PdWL4Hh;;M5q&$1^_B-- zXfD|KBQlg@+Eo$U(l0oOTu?E$x6IK(K!zcbUqQut*ku!>y%XzfRBb{aXngtwQWg2` zrw(4@Ihf*<`PHJlCmn_+k)UB3o6R%uE511-%6!9y4(I)mc!)=1;PRw{H=xt6nI5?9 zEtO@@s@CtoYQ9H2a*jgH*Ov<>QVh6{{D4Lt7`t&6Sky!BBB<(TtZ^K%MeIRvkhMF z!tng0;*9=UhJA*)5pv zf874fqB$#>5vQ^J`L`r-sMegPAA`Bfz@k{KCAW#D63}5Es6(CXCXH(jBcOB{%O+x^BGn0 zU+j24Sm^YL;`7{Do8)^CF-|4l#c_F#d~02s-|cVsl0SaO*BH7@2zkOEL~kxH`k__d zkIjno0_3*5QqzT*L6J@6pN}e%n7yiZ=2h0;`Rw)I7%pFM@G&S``{PCBcLw4c&S1z0 zHxDkCQClCbcwrr|hN^kpVc@ikKZ0(-;lsy)G%>D3Su`9NbdE|hJ@UCog88*EA(znR z%g#*`51&C^*-6_v)Q{)6kIj4kh<)Kw7Kt%ec2N0AZ5CVkWn_wuR zNfSen-UUK0xhnzO`#bmixMQ4eoO|wd3>DXU>zwnQ@AJ%O8S+r$KE*|biy#n);(@Zl zV-Sd-6ZiW(A@F3VlCl>By4CwY;qFs6=t_#Zg`r;DTysp5Q$RZPP!{*i9H#G>Eb!gX z46)KHwaRMp0T*BOOU)F#TUZDW{5&S?bV>N>`xODf&xWIWE>jLg|OZJ02OCTKK_OsB5=37Y57vhRIngA&tEYx!AW*}t05I?u&D|Ig#EzY33XAi0eYvJ_HOtEC*bf;=@z;DW?__LlZ*TW! zYqD%viYBkP9L%3beIbIF^Bcx^@7jOtU&vxQ+?E@w+ds~mlIz=puO6U>>b+%@UxPU$ zAwPfpvUhfN7Hny1Y8o3$wW_w5=nPPp1Id3g8&%PYWmxh(QvN)yNM7l>w!_ZO;`^&n zpwB5zEKIDHM`oX_*Hxd#Yb#mj09!Y{mwd^Y2VFLwwio?UD*K~8%tbOqn7taky1dM* z&bY5(#Uo%`_lefl+Pa6gum5Ibj4VCMo}Z|>&rD8dG2+i9+r{k0M~sXqJ7WiWnbEn3 zo}g_9o&7Oc7~?)m_R1={{zqo^nAcKRIYsJCy+R?y>(@mX!t`NEYn~o(I~yCtO9py+ z^o)$Eo8j3Mcar!pDT8{1^%maVDXFolpB8vMY9mBTrhK?;LYACc^O1k1#OfOukgZ)$ zPD`^ZAB~y{TXU##|4x(M7AQQF3GNT<2ICQpr>o zV97g_v~8%4)g~T;tli4%bnlnw5tS^)D$*enj4!iyr$-3qskO zoBolsd{CqwSC@mBp1;8ud#To?WFxPF;9GW%0Y!p9heQE#tll@RPUp459O}BqN~zV* zA?33=uMsQ)RsVWMrOtSLqA}ptbg&SV=;4#HZ)rgp$nZ9oJb3-4vzuG_XtmFgXlY1P zRQ*RuC8gD)z4hZRw5Ch#eJ9BJvHL@*v3mEKcp=l`=a9@-rTT7cd;$VPOIsE3J>SpO zdRum}ZH%-M|G7M`E7&ZZ9XM zzB?v8qW;`#(c@?Dv#)m!B3}LSkEHy?G&6=p?Qgb(ERHJUPdr9z%g5c8OECeRn1iCbj!&e1vThHLxln)Lf?A)jyu#6<6rmnhl zUytgL44oi{1e2@Aa2{)I)uH=gi@z2pQO0YSZBKtz>~2K8>i82Uoea3nxbN0}Io!E< zvA}8Tu9x$%VU8NII3*Ua(b&zOCCqnYSf#;7o<`j?FPxpVe1n3)eT|L&vK7+wlJ~jB zdH)oG8r@b}n6usl5bocW_cGx6pTiRM8wB2QM*;Ic+nx$gtn>v_l5KrX(8s!Kt{ z#}`9T?ZQ#T_wuAmetzu!p1ABQSPPg@Qq{lyUL!q<|4xj0sDrnV7*&c^FEuj2{M$gD zjtvKo_<^4gqeZbY>bmVxSAZGECfBHZs)HaEV_b_Frz0CHJ@W9YkcQHW=IDfcGYt+7 z_Cyx%oyXUH3%1ADhPeF%l>i{faBsL1zbKGXDE>_sLI)U*Y;sG_4fBc!Ly zI7E3vkSenZ_XMN&q9D-sEkT^O^^j0yWhFtmjrTE8!-X7Rop$H%p+&||fp_4i*tLK1MCZIvL$;r)BB!$#8jo|G?EJYz6jxx-&v%FNPQRk{`( z>J4WHe1RkW_PakxCs~4XhuEdT(}YHcGA;qjiMJ7*#34y_+}EuybWxa|S#n zH^MDHU>4iysKE)CIeX#8|L;!yZ;q(2vf`6Fo>^OT-fHI~8l7BypY%TQtg4eX&DiSb z=%{9ztT$%9w<}pJxy!s7Eh`CRg$NV-vfx7S=*spg`oO!%?*|2s;NFUFjrZ1(PMhzi zO=I*kL-gGWE>)Ti#Lbh<5@nK$zZt< zw<_3Etp#VXE%r1hgF+m*B7;`Y*w%b#}6f~BvUj> z_0{PjJ=ut(|HF;Xbp1Mdc=&_fr)=sl;65RBa(SBoUfTK#xIL;JA%eS@IhCVF_GtAZ zrw`LdYbz|SnQJTkRp}cryFQnlRpZsZCw6sPV0T8t3`EdawW+Bo4-d~|wuKO^*W%l& z(rVYWK2L8eE1p;fFF_lkKI`y6D?~}iLdiVDwWwe0H(VDS|9yOz&6eHr47nWn2 zS-(1?Hg+&4cvQh&d$yr8rbyr_Y1?xTi1~S&uTtg zZpWBMN!Bx$R8%Mv>BDHClhE!F3BsiObb~9@x6$t;QLf{&s)I}3CFv_NR2I5$pG_6G z(4{a0*o5Yam6g?Gt?B0G=8B6Hs}QRmJfer>1NJUfA%jn$mY)bBJ_jHnR8oE_HqZ<9 z^!qVb>-nti%n-3h)$8r!+1iyUbm{&0h@abZ9Nld9)^3p95)zVMx{90$R~_VG_m{Cc z4*9mUg^_&pLz@*kX}BRn(%fSv#+}l{7>8nl9kxG?nQ@k#q~!MPfibZVc$RP2a?(;V zOaGefo}agAzuswwD#p!NGy>4HKL5D0>Z*Yq%dc@4d{@=5Wx~ zVSVk__#gi%2q<`WHv=KqmD$zR_4)JX28I2N4gug`6gwJjARyhCrx>~UH03a*01}Ql z09w3MQi{=PP2KwV)^@A99kF&4Z>$JcPKx&Y&tQQ3Y`&UfNNT1twM<}KTpSP)w&QiR z2t*8&K3ps+xEBCBVZPzZAk-M z>YNI?FCSy|wbfPX2U|BA=xh$BV+r#X#CIJ;kof>B>hi?I{vQ zc&^S>AggimKa9~zPmTRi$VQqBKO~%!^{@O(I_f70qnv;-uYFnWt8ZV06Gq%G^J@cF z;b^2ozm#-By}<=%?YZn=2Oa_GVI+XMD5+8$9Ve6WH%ilm+X4v#Qk?P%m9iQOps{uy zpGIP5S(fc-8WTxFPMyvNRsySv(Kzwv@0A1;3qSO?ma?ZTfCS&B|A%j5xzc zP;a~s<@E06)@+WR&oA!G+)(4dKbP5fPsa7Kn_CO_{Bd{YWA&5goEz_LBC{Z|Fp~#P z+6%LfN5E9LNuVU|t#P-u^QizNh2s8V$UUim-(uKTp|bn0ySX8_VbmNyLr-k2p_E#r zMdhJw$rz^qi4~7mk&43e!*kR0qgjzw)izc0s++U;*xV z(q-RqAyl9)0dpJ2+}cZZsBqzjU=bcs0B7iHVV721$E)zOKL+x04D0ON9B?G|zJ&YX ze0}r*2^M4+Eez*pxmmq4j0#nNWST=D&D56W=H?C#y`}oRzlR%(u+eQZCPI%5Gf<_( zCM6|Z)a3Zi{b{XW;D!J1v6x3;b;qcolchZcGN9(CnVA`n+Esl%8k`45D3h$I?0h$| zKN$vf#Ohw#(1s~MUN|}m)if2?)s0z;8s&W<#98RzZcLcs`1DqMES7pz8!qSO?PNc# ze~T~#m86lqIRZ&ru(|WX(sBVA!&OrD+UeXJo4=5pMRD)0-A5Vhl+xO$3_AA`oO$(d zOT(^y4&RYsZO{#-t;#ah0Td1CpT@W}Z?bbIyP!4slUX;5^IL(-~AjD-)I z?Sc3HEg-h2M__+(Z#jd2S8R4`h8rRH7{AZfJ7*TfIIl{6rUP*R*zDR#q(L4^a5v< zns_f#x)9?d_=0;Y@z1RfUu|*6e|mW%f3lIqXO~($dr;OhI}q}yR6nd5dR<1NdqbH7 z?@}Ru@PWe*8rKQIVPwFhb)T$zwqil{Iex|@=>&?C!(~y-!XxtX%&caDQSxouy+Dsw6f z1EW&O%y^w-61~c|>Z0TRH_GRrDo%sb!xecIvg)MxwfIX<5g@&D&?dNZiY!0qTsb+v zo2=b#mq{cNk@!4-^!95yJ=l%_tr8?g9v8L7IU${kw z#hkc`@~!j~)76bAuGt_UPYLZ>zW+z!)w{VUp9!T<%|K*DQh!P0!Y38O^BeDl9x0c9 z9~<-8$9%Tc?J`H8Z4GKGBNZTBeh6hLISB$2@91Pzot2&t)f!3wZN z*ubkvLV?p-4o8~y#_qbQirevFCARUM-OZ}{dQBp>_`aK(y8c4Y$>l-(#L3CY$FX`{ z`}-bJ$w%U|2(?cq^1x?+y2nN1opLr8+MkyJ444k_ovIJ>8xekEW; zdbBvSb#%5MsyPj$q@?>F=FH}QM0pJa;#V~y3NToaV~TgTrlzJAta@zAkJ{9>p1IT> zl0Ox*5`<2Y&pnnHooW&p$?wTXp!vFQ9Sy*pECBBCsgfODyNI$62M!`?8>oViY3(l# z*rg4T9+a^Cxx z-jDai>;M3P*97KshK&gz#B+2L`MS^*e{gckoS-D-5-Z1y>5zX0cr!!-tptpq!%)RMK0^jTzA?5Oa5+L z#tFl{NrB(BBYz7!-ff zwM#}0Va9{2#wdvN`AG(@p?rNW+tkj*eH7^EYDoy7-x~&x3(G;bcX! z{1!1<*)LTqS&#o-wy!DF3~G8HZo#)b~ee#$P5e&3TmSP!{FTl64oPnIwerI`=YN6gApDW z#WN>71l|q+TRpe2u@P)JJoKtYyTEA3P7MmsC5B()n`qO2u%o}byn4lL`24$m`Y9ti zB~E%orTTn^6aQdAc=rSRMx?N^lKxp_0UR!ttUmOr2r%L)MauU-<2cl39OtTxq~z;= zSqXR&T@0XCIn-W?47NnmGk-ojzd) zIOv@pVdxISGiTsvi!K-pCX8s&(uvJFa|sIY^otAMc+;yU8w<|t2cD*<4XrnyT-44R zsOZS=ox<=&n1N2c3L#YAo))-Vc}Q-E5_G@Ccos4Mw^%p6k^cOcfsqt<3Qics2c-6U z;>}l3^IJrJH?-zdZ*&TKa;c2sbh$zf>B+o&RQHvXxLI@FO*TH&@o0BwL*Vh3BkefyT3=EG1K7@b9RTK3J&L#;U(8ybEhfNArbK*VVA&08Gm zE;crN72W2qUjvZzpGY2uZcAn|;*0cRCdnb<@hx~L?9ry~mzYSeKlr7Vqms&lmELX8 zcmhxq$K@wKLT_3D4S}mrh*G}K%(9uoaN=NRt$*j2*0(Cp;zU1vT~kETohs9BcLf`8ObDcOhRY~Tiffq30cdOCcEJ6dG zBU>9n579WqT?nc=V;w;@WQMpG`a=K465;{)AT7aGn4yH1@0ZRWK;$q3kpqBnQNE`O zc{=d#%G&nZ1alz!?ZQQCO5qdKTK4vT2&DdZ!^^2#1FuT^7u>Lzcz@<>2#!Fok6Z%; z0Ud4a*4EY<6}Ojkhl8;=0un5e7-nKoyy(U0ME@@L6l>#XYW{}SpY0E=DF7LkgVIWn zsJY*4z>+hEJa7mEu$T=%Y%k$8xWOaJNxhB`uq=KEdOrv{yTVB zR8vP`ZS4_eq5pmaGrGndF=Aady7KYk#}~fD&}&drKg0`%GE$%{7#tj&mzNjAN<%{f zeB$$NpYJ#Sj2tqPIu+fj8~mqj%cZ2GRA+$V##L`1LCnw3x3-dK>BJ|t0(i}yW^(zm ziF({|)^GW2GyP0HdrVPQRz{+hWka3I=AHfWvyVc(^Y1h%(N)&HWo0x!AVLxna&qIg z<(r&KGaNPvyDS*mgfc^nAPp}2TBdaPy$2^78r@r~xPVi&I;sFD&q_Z$H6>sVXm=fp z6|ie3m{avn1dyf&RUD+gLkWI zYyEz2GKEie&3PA4jItQ)Y;85v)rl`2&cqvwCUKwactl9qhFeDv5fYiDhINUmo?=!rA# z&Z%~Gd0PWcj#U%6BtObqa%T_{qqZ$~8*L$Mp{Jh@ppvuO^_Q5Qh<%s{K2OqQnw>iZ zu8Izn$w``OiFvk6&?>K1XW3DK(LQx%$^{ys?5BB3_j;h*g+YeK&Xn zunC8T#5VUkIB6xFfs0n$ws76?2T;h)%T)?f1FEnJ8Jjl@E5LcE_^yhrE6mHEexvR# zMeE{roigESx5I$z+O(%D+N=1WuALIcH{;_3C@PChr%;#_&`iP=jSL;k%s7r9k1V7e z&j1i!PEm?pU|RSq)Nu3^N#bM_GA{41jwfdbFZ+IK5yj)dil@K9w8}KS0h@YQhxYF# zcT?oS}GY1wa*vwlYNhM&$JFtz{2#94vq1Z9pIqx~wxLNPC8~9B^o}xb0OGp6 ze|&uW(pHsKsqU%!mr2zJ8)j$C-R@TXLz=*0O9-GekVvMWAZgxN;LA@Ju7P_+$lKI6bx?D zbmloEHIo0MVXQE5zles!@NY`k5@=goq6`qo&u>0(2a!H8TDUp)n|5mR+s1Si^*(a& z-amgjuH%jFipv`-gAN8~(Kjcbx;`;I=CE3LW&>0hAOg@&_k7Ab+pIevn^HFUaruhh zJj3y%3aJjZByzRk^=I91y6N5@)91`*&${8&)(<%mZ|#2*0!7wtaUNoy^AWHHduC}4 z3j7~bDP+KC;CDv}LYn?Sg;advJ=lQ%VtwQ}dH>1$2__=wwIu7$g$|#YM~Q>@eu5W-aWgL_Exg(Wi=D@I6N2tsNl4-q`7j}w(holPwYgMo9zzvP(sK05g9+H%bKoIXvq;OInT+3xQcorrMm6bFys9}9wLGCYmYs0 zClBTp;Np68=SbdQ1+GNcjqT5bG>okNc{h#?1hQ93A~HU*v9W7=>6Ev@yzFX%M$~lu zIu6*MX}iw1yWt3zS?PErklrw5R`2)hf{f9%FuKcop{S#J4TD4aqw%*|`k*@mpJb~) z)W;32c}zAxJT9%jL%NJrgUgK0+1rlFZI@mVNKd6ZzQ)DsU6eooX_59RyLBrJu+w`p z@xUb~#J(4gw54Vg1%D9|Trc{QvrgvPG2cD{%qTSR9@9k&?EE2lE0Hk*61=79;+JZC zZ2b$0D5<0z#qODoUK8rdmX#! zR6e`aZO4(1%tgo$%|*Q6tP$Pd^dCkL8MlRrzm8}bDIghFSw*r6u3fPUWZ(kA>>^3p zF7Q?Oez;THGh#z!5VfAa5Jx3a*D zbz|F=**|UjuK8XW4(5Vq#50X|&n}~kvWZY=6c5PuDhcSa(mODtXX)UZWGCQL4b|)| zIHPBuQa8Gi$4g3p5;yXVh#ITnpo6wg^-*d`1h>HzkLW-jFwk-CL>#euDy1Kfar)mOJlw>ZPr#TOSKrTFzeV_(` zoNC7WckVQJ(o;&(27%lwd-Oo!v1`IYqQ1GFwtHTa#WU8YvSX#Ogm@iHtO61E`oyKN z@vKx*hk{qXtgC5$qvGga|{0>C>|nNl+o#@#+a}VP3xQ@RTSNu7hqvwtU@26 z`5#4TEok`?;n~0Q>M$4yGOYNEE`|4iXJ`#UC+L06X0^YX&dyGM8L$zESESkE?Jh1VVvhG* zsik6sF8egR%fJ(l<6Mv5)IQBvSXrs$ZTVg2&`4@6DTO*NTbxtUnT0KP9ch+QWZF=$ zrR=f3*<Q*M zqdoquq(t_@j{%!*j81k*pi`JN_oiJXIjI0^L+aMvw7AeB&y1|z5|8Num~6VHmR60~ zpUJ5yj|v0hy-w2nEtzS^oxD@@OtYS`IU-U#ycw30DU?h?G_+3+>V~aCsxrc*^`um?dd}(Km~YuHvfm0!v#2j9#w3 z&z~EQSE( zI{f;f^o2^kR#hk0m6v-r`g{*0k{iSh$EGG@Q`G~!44_N3O@>vSK3(Y4{M)11@GVJ` zSwW?>$!+h$Ujpb9yG=>&310TD1?LLg-xgx8S*1!scAoUW-#pRQZW|g&32=P*GWj-_ z@|(rB27#c{aksu!Q$1wMqZSovpO2$?GfxPdY3JdX8R3P)WfF9d+vj-$RF`4$YTn+Q zck5xYSg!p#)ITvI-z)Kwo0J9xA57#W5f4AVsc5%HMH0HVure-XOZ_zbrWKOV@3y#> zIuCTR$2$7Q8|z^XW4q}q&@Gv=U4Ad8g3~`2Nt`W)T1REh)Ne_1hzZ9<-0;>k7YK2N zuIme_-xyM`E$%BsK3`#}zFgk+R)z=4B@LIpRPZ@%kwrJnwZ$^QvPfu0#QdRtxoev= z^8J(2l=e*1?fG9hD9UrFRgchXTxL8CFSAf><1W1p*X-83q0s(v@&KEkW(?!Els@w_ zWk0v)*YNk=kn|q&@?J)nReige&mUn}+l*G=zV_o3%q=|QUhMrhIf0ERV``r+qKdk~ z0i7ZA;n3f9&5VZp)JgAx;GbFUhjr`s54xi6Y&Va=g)S9LY$YgMHH$ELz~AB`X3fSI zzt6^tjxhPnSL8)S3Y}a*(PL((RLhu{$z2_ye=R3#Y+TDM!!axPr4bbmqv+c9{6#5PD2aU&|iY|HyQk+yR2^~(azylW%y=f^q@T9=h)J@pS0oZf%Us*EtKNNo4# zF0TtU6@^~pjf(two=NvjlDZi0zL7neVGj083%>W9J-xYYLh9uV4Op;=<4K}VJhu%EP-2K1hs#-Mx9_# zIA`d{e)KdxbW$Q|)Y$);ain$&vvKZIZuIqI1C9`Cn}oy9Y3ru7cps}Y{UWKEKEWZ` z&D`)Wl||ti0YK$<`RaeEyki`h?nDab_5&M(JXUaV%*IZv$OJDa!dCw`Gx5~87Jv6# zli%;8+@JGsq48T6hrxJ@3103n5>@eC%TjXSg>@@(#mG*qxV5TGdg?c)S+r9{rNU1$ zk_=Held>JeC1}r%i`JYd*Dc3xtybvmuc;7pq50GzWnx50LSlD$Ma6(kaXeyje0;pR zy1KhNDmQ5aUYCfpen+A`VUL{*=c=o-?UIYZS#nJ@RI|{*C8*_*UQ1}h*^`Ly5-+*ZI%4?XZ}Pl@4R(_dQ{t!egsC!rR%|+0L#_4!x{B z)@#<&dBZresrEqcHuwgJ_M6)ott_$1cHk4q6Z4-lGHN1Vp~f@CxnZx6fwg8CoovQk zUk7h^_<#HBcQD&$sJ)+%Qt`e16DC5Vu@Smp`_^*oA2XNwmnb^F`8mS_elFvx^8NH$ zlIroH{(j;mmz%rWCO2|!u9G2%_?uKjjIbdkx%v-7{lN1UwC}t)UJ~J+|LA~&FHck7?XCa zoA9g6w3~SRGyR$Us*J-Qm~#WqqP4USZVRD_vZ-Lshe%!pX9{o6TbxRBEsWL&ywgG}-ShlkVa z=rcOp9LRgb5ktn@Wd{70M6HZDk3{O2<`Q*6_EX+dnJ>A!)wwHs_3G15Q(O3*+smQ5 zO?wU|at0#`jb2de2}iiBoZo7gWchRI#6apz;RsI;h$KJ3j?&H}M?BHBtIBrV8$>8( zfu~Hy@DF>bfycH~hlg{z2C+->lS^~y${&k5okxutGK<&8sV~=EJvJ2xzE%@fI_I>d z0*BmhwO!b5_7$#e=wvZ|;Ymu#Wc4~SzVA4GP*Z&?*vj`1VqECQoZ-bVXP5l>Ue70* z5O%_*WYq3U@6CDCCz-Itp(^i*#z>`%j=7C145N=DUN@hiD-OXeT9_`_`d9ebfCc}r(Qz?hVLfeaLa|M^XV0G5+9JC%{BCitp?GVi z)Od9tsMUYY>FH6ol$`Mt*m$o7qgvR}*y|duUV)#R5m=z``dhLhF%~W4T_I(WZe)cX z+RQcA#HPp>GrZ$(J)^hiPRnD7_E;rwU)Rs212=w=rIR!#1eK_m0=dI6l$_8xs<0B#>unDl5hx}q}=qZb$R@+{)w*2WQDI_|E zh8betbvPr8q{tDxTHhygc&Z*CmP<<}?cb9Y+_Lyi8u@j13Z5XcbkM<2aj?;2I9I5a zLQYEH?I?c1`H&Q^fB%kewm!6%k z>>C|r=9_jdqvTUoRyM3~=i6$&EzJXM$t`s}<7d5V(YO-hm;QUFWezGbcOZJdb<=?G zOgF#|t$V@W+j1TaZamS~zW}3;hryOM+zCBd*K;rlaw|I3o4JiNbuju{b}YAig6Vbw zfDAV|jmI=28dpGeJVkOV$kVHJJ6$@_#9~vJQCLV+-^20n=3=nK?5{*o3CgF=&QY7U zJ~Ywyzz3-b6SUWq(|$cop0ey$Wdi7<7I~$U$yk6!s2fjyOR#tQ&8P5*u6_S}zRGS} zI>S>Q#Va-}R4$ACE0f6SY4b{@{r#IQNCsNXG*|D47FiEI8VXA8-}!HfKB8C znNqkXsl}MWsRwnn4Ge6)>k!6~yL)XfGi@x7H;|))E({Ge9v+JF$^NB%ZECKxSOpB4 zBZtUQHo}{0Fcd-bthEf$FHuxN(d%{X;!hV2hqup6gEOQ-Ovaa8SXx+GDkvgCA0tb` zAUy4OzaehS-D`jQTTdGMkJbG=CnqQHi-8h5BM%RuQe;WejJUGl zhfTwwW!4Xs1rl%l4!i=HKvEwmtx(TqSg^nS2Q4s)M5p2p(M*52U+!8WcnI@eMtIBK zf2usEok4a`zC9QO5Nak~Hd@-y@V7uImE0H8NdD*_19>h%_ZDPYD<7`<7~3P=i!QOV zv+oKC^S-}$@#1>z#H}$8$7HaQfV6Op8x5;9jEAd8^gh8iPG_achZ{w9jR9?iNg%S! z-d34`d5s~eEWBIqvwr(!B`&@c?y0m9*Ctq=>(o+}hyQ$8NU^e%kJkQJl z!r(19bBfXO0OP`J-*#8Sc}SVq-*iu@IW>`MmYUR4YFF;_r_nQd_Ox_12z2x<@Grps zQcy$UQeu7L-sTj%*N$_cg+V{9@B~$pg@4heNRp?CQ>D6XPTp^jf%f=UsD7C-Dyt7nTCM&s{_gEUNIp zSozpVeDs6Y7#Xfm;o4F{Gfn%as@Fn-AMh$^SG=6&%l=aOQCNVLm35THOh+UC9N3W1 zE2-fcDa~>hbL#7g7>Lzv5p2BCA8x4W8L^Xa+$D%hlv9j+pLrKP$xN(Op9R1B(S4fU zrWvLw$(If9VA;5NyT9b4_8EjQpb_Fzh_okym?GvRed^NFG@d;CTxVjTSvm8}o((Zn z^7}|CjOje8q&B;`O1BoKNybOe+EKIY{-&p-|7aY~FK5Oj+tFyU@WU5vq#uNZg=KPR zCuOr4ehx!Ql-`rNT=0y0U=8Vww73R*J9sOVcCohv$5@cBUhbP_Ep#nFv? zFIp-LB~W1P)F#`hU~OaL@A9O(r$;DJ>0g2&(qiKqQz70Y8C^|Vh79y{k(_r<2gLCS z2?_P&8}|Hp^}D^jy|^iIY*Rt$OFrq0a4FOo&{a8>qW6WWJxH_l!`sGlx(NTDUtj zi=FaC7UgeN%pG!>a`|{*RjjKkEfg@>)@HD&@9Wj)Kb91#QCtLG!}lI8tKq>cfwAl# zCgpF^r>Q@NYmU^JFsbs~#b%~9l$nhRI5$+NSGOkh#+UxwHBd(Tz6oD#3@N&Ip=$Um zF=?EJxy`la)R$ug*ig~pCtORp!hMrF_vVL(50#?LE(jbRZlUqxLQG(xh07dqF){CS zTS5&os#f0-L$Ifq&~N^aolL)v$=3*4DTg>f_;K2cUH@urZg0eobr2q(@Pm6yul8dj zd#}Wiw>q#qd%iuTW@*Im(5@@8&}=2s68v&J@QO2oEYvAm`@|0S=XEpWWF5XOX7 zPEHqtH!8A&#q$a%u=*#-`-kXbk3vEK(*^A%UXyVWjk~Q$-16wmem{x~ZK*N_5DY>t zJp)>~+F)`pX{;T!sp~*K%k-t+L+QF@_xQaMtB;=X7kSsNsybX8zr`iHD8FzWKk5M@ z4w`{%OvKrKCp@F%oV1N88#_43-Q$(ws-w8G*%AWc<}KGU^IJaGRpFoOuMZcnl3{g` zj^ApLS)pCs!2_{E@mIXHTr5u4+4mXu2sA5Kf75}WV-+}5S1*Q(B0((5cAD0nnIAFX zqWejyYJwYXgLMIfR(SF#8^_qn5@=?0%xt(TF>+l4pB(0Bk6Xf~xD@6}z-GLCsVz*p z!nqeoNVGIH*T?!CpU!yS=HQrLSkR`*F}Cc!94qaG@JbdW=3O%{l6@h?&y{&Xj z>lQ=*B=>vpwrgDAzh!i%5+zPcg zn1LO_>JNVXY_uS3{YI$q-m9bN@lK0vI|0Ca9Wb5TD0ED1`Bbm@=WmtYznc_DCYG9R zY?jjkw$axV-;%7rc)h$vt8Ml?47Yznr63c#CdqjI+~>vC7qp|_`)@*xb_dk&}-g*}S5sptsE6C1q+_!J*`wKKk!C|qn)Io7wsDLww)_El!5~!)Pc$}w_3M7HWq12`GNI@ji}G*!8LsVB6Y=VYyb5DXdJ{ zN-fo`{OZxp78VvSUW7D~?|i=$K|_p>=b5=a@02FsJj1hyp(4G+09O|`LvGt&@~xtR zQx>O#-oi9llu6#POn<4{q_UOCoyaU zPN)WT{?q!#TGM>XhrfQ;=0j$LtpZq7ZvRE;vTZRS_xJ0>qBT==kGnBs7<-!ow-07C@7qS1 z?l3?rGJKw34n<@l8KaDrSne)ZcAFUHpe_L$@Cna-fMj)*LOk%V`u2&G5Jmyz67Ryy z8OYP7zKu&E&c{B-3mI|HWShVcg^|;O7e%s82L}gV8MKu(dfzKV^L`nHCrYbka-=Y} z-qElaz-#z=5|1h=Yyc2dY~L9_vNe@_1hhufpo3=CFm{P1SMbxh8KN;9MY~6f#EfW} zRMO~Ue`6IkxE%&w18YD(&f!E|f#{WEQN@5GQA?Gq!ede9k6?bla3+88)8*)nM7d;d z9f`hF$=W^^9bE>-cMDXfZjs2e&S8lr3=q*hCAxOR!j0M7<+W?dG0~UdBFC(3ZMf5n zAFy+n=K)PQ7KpySz6Iwpl(mwQ5*G)D^@|s%S!z)$K+P;dO+Q^^%GTrZXSIvvYj>XO z&b`G5e3kcM?m96{1S^4cag2mb?Dwv&uFOkoYikt-`L0vPpTeIdFKC>2Ze9?jy(X41 zX!H+1h6i(dxq$Ui%=qgl?f9gmizIUQt5b)HL{E#dZ#SRyMJi?L)@LzQPSj#JFoKB_ z4vZSC4=}yPB?*MYjR4*(*Liz-R&>lf*}n|j!EG3@v)pg+aP1~`XU*8}oa_O$i&iPlUxI3uaL&K!YY&AA zFUwVLIb*b>ZzTi-0)`pvS>{19alP!JY1)5zm=xd58kP?)1cktAa#euasS-vna0~l# z+s7k|66m4+NX;+rkc(gZnw+UWNW|W$ca4JkB9~F;DZt7jU!u5b?%Y%-psulZUe^9) zM*H};nG0aK%7|-{d8v)_qJb>Uwq7`xM5tVeb+kK)TyJn#a4@fAYdw*G^AGTW%~#0M z%uwXw%^{PyPFI!5dny5CwmceQy`JFuB{l46-4pl?oYJRBO1}be~p`k|? z^a1-7=;H`iFxx&Vtwip)F$^00J~Lv_p>%)+DV~&#L8OW7FczdzXhtYNKV~n6t^wyI-b! zRKv`ZMu5CrE8hSi!YmI$u^V8+`s3tf6zW-R$+Wbze5b5Gf5ufVE0Z>yKU`GUzr9PO zAj9QOYo*15xDJYGm>U7Z%!HE`WD?Nt{#Ja2y>=(&v~929nL+o@G7#gt6W7w`g8N;{ zp%fHMEts;S{R?Zs^;!NSG&GcQX?YS6-`SNeAH9D&NysJ770J-r|7!9|aw+MjokW+x z6>h(RNV2G2mENdGBi8!A5f_A~ZYaP}#J1A7o3=8EQ4}gGBJ8&M8~wbdm||dPC}ulzO1m2S3tmJtS)3>VF4=Aaq3;=<5{t#MT#ddy9}vFuPPD*z|$JtdiOto znnzbj--3HFSI1^Zkxv7`y#|pvHZlxRQFi_Du&*zkXPZOg_8{rev`WtrX*;O}U~bU5 zSW7w_{SZ5dr5}o5u~|eI%@dYfq;5>{kqUelrT%afN_4wKC?rCSK=rw!s57q~0z~Y@ z!4?EzD1;Fjt1s;*#KI{o5Tld=i?6I38ylNU+|IY=2Khb~d|}ej{s-On)Dhc6#7EDl zWRgai{j3u7-~j;vC3QmDnjY+@!KTr*Hh(I;T0>F5_IPak^dCN@1BPP#WK?G7W9nEM zDF-$(KB{NalA4K}y0dLEC3d&E-k9QWfdfx4Q#RCuN3eFxR`0n}N-O~uQA3F>>a&VX zc!a|i`M8RIv^L}65_kWb#$xYu^z4j{fA5#w>`W>>8L|UIEDerfg(Ivze8=*v;@+)VY;HOqQ?;PeLRVMUWKQn%(ey693Rm>8gdSgikC$-Z{TLm8{`%v`eTwH^UX?v_ zk(`{A$IArZ`Yf7fNW|34jEah?DT=^XfFw9ERIYAr zrCpZ)rR)vnn)7$WUUMJ+^E+=66BFlp^5=}mpX1WZqEs0f863>VS{MV*t38Z$i~G9F zhGqm_h!OZo;1D?$8RA_vHX;V7txVD1hE8=A^fG&4M1{5X@BaO$ronE16IUtRjhb@ zrQKEgJ?bYd+@*JEPc&UB_;c~vcw$npR5-EP%g<|@nUkfj^6_Xu0RL%{muJ_C(c+4 zz$l}p%~MmZVnSrA zM@B{(8|Aj`e&afUy3^f3sQv>;q&QBswQxm!K~5j9swI(T`p(te5FpykJ)maPlU z@Xh0wj!>d&i>alhsp;pQIq4$hT)#o3b|27G;_Wk2FKuh|AJUqz62dz|Lh^k-N{X*( zNrJ1%dxOgL&XwuAmn$1Bo*3a`G8RJKze7m1y}8i0E>s>EM<`%Bn6_o`!?6K9TIw)W z?hO<3Hu$Gah93K#DjZf{OOXqp+zbBrk<+(t-!9h41>YIcTwNZKnjL9~xN%5DTbVnJ z;qu@0%h3*gJ&gn2ED@Gy@F!yY~O>w3~iTB#oZrxasW_(iMY%8LScLr&COC)>vVl zPl+3CCq&Ba9N|@|uq+IZ?Y~9a{v>TP^x-v3=Ij3$bp$_Ixd(bUafzz}CW!{cXSoG} z^hR#3qZ~Jq4VTDM`%7d7|4GNC!wxDxaOp4;^~XkQJvp2;7$jg7u*7|&qukfbk_dI#aHC+53oVAuMiA{>ySu!q-PrP zPXk4WD!WLH83|Ux4R9%-hax3F*Yw3dJT&{D;PIz?cKvefORvP`m~`(WGq++A6ZQ4< z3fsk?-Jk(TZ*M*h_$X#P*`yoO4dMGC^y@UX8{)jE!>?hu`YdIE2cGg3L+rt%6gw+gW5(c$ZG7PIktjXtaS)b1>T!rd zPfyp6X8bhUZpOnlI)Ii1sET_}P}x9U<#X{Wi+Hgs#PeR4z!!+Wf-N}3Wo8mXV6q)b zhw)r7GLNFO8Asbi|MC5nFm7j2=bKOVpl(2e3+FG#upB@=FOJ&B% zTZ-Mp&NA2aikj{aH+D+YeFZp9a~XyIFHES2A3FzR;rOCdXVNo7)q;yMoe zl4k*+j3IfVe7Uz8yl{)mPy>_<=8$jDew60QI64Edmbf#JiAv^ht--V{0A7XsOAgMc z_b)V#7N0p14P`qC9)?1 zX<~AH|K2F5yi`<(=)%Z8*S|CFIA*lomV?W4h+`|6c)fpVtAe1oO>_OEC*ZNZzA5^= z^;tdwn)tAKGHks3TXJ4B`rX%X#hX{?MGN~DOyPopf{!qlDcfHj`gj!zkYCAfu)CLZ zoba*@cY^{0niCZf;hoaM;>kpHZLn+g;Df zZdp|4;NnvAwJEkzU0YvY@5dzTFn?uxyTt9rA$vUWah|IQ7!`r{d@YZ8{v(SlIX6Oc zqsRLBbLPAirKqmKKnS9hjsTPxxawcN$vNM3uk@!~hbq#J^WV+#j)(LTz>qBW0LzP#2B(u0oDfspH5i+{d<@d~Wk6l`N_UCc zNj`nyJ*eoi^5y9qV?9%HOfALH+hxXGy_{8uIXr7@rav zt_h%~s!~+=;^wf%Q^>E#13*FZ?LDf=x62vA2PO=QljUvui!~zTX8F#}N=fHl*{l8y~+#GvpsZ z>zcHuKk9I0O0Yd-d}hzTNJa4nVDGiZwJ(jb*bg$-!GXo?oHq4fIKr;A?dIMl>9NZb ztX|e-8nQ^VKf$+CfWaRf7qv5Ze&R9x_3C=z%+ah(Y{w{0?+k#5D$A2$YUfWVng@Wk zxm;BdT6N-#cA!T2Hj*|b_Cz^`+oAir8+gv_Sh=Y#NG~aZ46BXU@9%CsS2%3h)sRwLwn(X?V! zMcTuhf85DD-dSC8Jy=K2jWxMQ-S%?59sdvldB@CYEU@G`Z8A4mVf6>y`2K^}dH?z7 z9xn8LO&S9;E!1tHCX6;(Y{Pqfax&WX(1|YR20H8y8ZLd<1A$zX)u~s5oZXs{yMQW# zdATkasF6InFe(~nAa)T|7AwzY{=_(e27G{#5Vf+=mx?{OpNs9 z!<`wzGZ4tlR}F9SBa9Y0`U8U5mTDs|cc;wI`@_n=40$D(|0;&LE%oVzx)V7~r;mKz zGDyt2!Fajt>Z)(czV{BxVU5+P2?#{x+*lcr(k8pI+HEMc+)}u^#EkOK2=5LLWu#z& z;AWVo?Qh+idpCibh-Myd`;C7&xmL#&a$K-5!3PM@`lBg%P#`5<0q4^bQe7)!O ztW^S|oRvHj8Kv_is2Kc=Yj16@8rz*EhCKD@Br@FE7jn7rXVuI_+UatVL39{s7&1bC z+^S1__D)Ry(!kZ#p+oc^0l82lDS@&h1R~B9%mq!X5Z>5)-L>LfDU!Q0k`Yb5Y1}mv z>jT&NMm9*h6D3}pK~)**dv7)P_e>`KkkVqjyzwBrL6ZCJ=K_?Frv%V3qW>qa)9&Vy z-G1nOma+fC?#(;k$68^J>MH}X;6YzM%Fpsxt1+I%2l|cAp{kX)3S{FxbjtXgfg*}yeZe_?5Rl1G-?2~b=75+P^@Yalx#@TtJ_MMCftJn;f-}X({AH&v{ z@nIbkBOaq8GqeX5@dd*!ol-TDL~lLPgt0R9jw4OQ4m5kNd0)(hJlhr4*$WNn+})oT zzYTz``gh*&1m9(hRiY}tKC_~i{?>Xnq7njm6{g1&zwVk>zb!AKKPNVy^;_!5oLq?_tx&^ zLtIs^K*X=$GtrjmSXE2?7=?AGdkAR@Y$^sPx!G%N+ZixmB^cbcjMbAEjSjC;N8sO; zTgGUgXz)-fnq&$hcykIe|MaEHuZ9%Q>BZOeZynvfnH&~!na~tq-@R(O)v%j)JJDbD zx73f8x+qk~k6;DDOdbj5Q literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_136.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_136.txt new file mode 100644 index 00000000..2ffadf90 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_136.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,2] [1,0,2,0,1,2] [2,0,3,0,3,1] [3,0,4,0,3,1] +[3,1,2,2,3,2] +[0,2,-1,2,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_137.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_137.png new file mode 100644 index 0000000000000000000000000000000000000000..b782bb28fc40d3987b7bfd76281495f5c46fd33c GIT binary patch literal 15457 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_138.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_138.txt new file mode 100644 index 00000000..172d3359 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_138.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,1,2] [3,1,2,2,4,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b33fdbc26fa4d353bc30d4eda6fcd778148205 GIT binary patch literal 16673 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 V#{^MPuq&u;D{0*-Qn>f*e*j#~wY~rV literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.txt new file mode 100644 index 00000000..d01aa16a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_139.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_14.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_14.png new file mode 100644 index 0000000000000000000000000000000000000000..723aa627d2c217c96a032b4f3694c875a2271208 GIT binary patch literal 16426 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_140.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_140.txt new file mode 100644 index 00000000..df058461 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_140.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_142.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_142.png new file mode 100644 index 0000000000000000000000000000000000000000..cb97b954a322479b2723b39c998e24870400decb GIT binary patch literal 15267 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_143.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_143.txt new file mode 100644 index 00000000..4774afdf --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_143.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,3,1] +[1,1,1,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.png new file mode 100644 index 0000000000000000000000000000000000000000..624d5e41a2d01c772d4457aca0995177b0a22432 GIT binary patch literal 16171 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.txt new file mode 100644 index 00000000..2da23a68 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_144.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,2] [2,0,2,2,3,1] +[3,1,2,2,4,2] +[0,2,-1,3,1,3] [1,2,0,2,1,3] [2,2,1,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_145.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_145.png new file mode 100644 index 0000000000000000000000000000000000000000..d333ffdafda9d9bb4a17b17c2389caa952ab86dc GIT binary patch literal 15606 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µ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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_147.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_147.txt new file mode 100644 index 00000000..d5349dde --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_147.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,1,1,0,2] [1,1,2,1,1,2] [2,1,3,1,2,2] [3,1,4,1,3,2] +[0,2,-1,2,-1,3] [1,2,0,2,1,3] [2,2,1,2,1,3] [3,2,2,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7e52975151d82c2ba5e1190c92c3a2512b737e GIT binary patch literal 16959 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 Y>5aL(7&-Xg7jT}+C_m1Vdimym0gFwh#sB~S literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.txt new file mode 100644 index 00000000..c7c6021a --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_148.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.png new file mode 100644 index 0000000000000000000000000000000000000000..0355bf26cb9208e230e9483726ebff12575c8a9e GIT binary patch literal 15912 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 XrRNnIHUnRPlig6)y;gYD>e2rI+K3wU literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.txt new file mode 100644 index 00000000..b3f7c2ed --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_149.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.png new file mode 100644 index 0000000000000000000000000000000000000000..3c604b1d1d0ca42d8635490cafc05c440bc9a1db GIT binary patch literal 18801 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.txt new file mode 100644 index 00000000..63492503 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_15.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,0,1,2,1] [2,0,1,0,3,1] +[0,1,1,1,-1,2] [1,1,0,2,2,2] [2,1,1,1,3,2] [3,1,4,1,2,1] +[0,2,-1,3,0,3] [2,2,1,3,2,3] [3,2,4,2,2,2] +[0,3,1,3,0,4] [1,3,2,3,0,4] [2,3,3,3,2,4] [3,3,4,3,2,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.png new file mode 100644 index 0000000000000000000000000000000000000000..617cfc411b35d075d3f07306610127d9cc277988 GIT binary patch literal 18130 zcmcJ%2{cu0+&-)nMQAW&E+SLra1<&bb13tW(1}jSF^`E55t(y1#w27WnKI^}V;)Y% zOvgOW<9BcL4Da)<_5ZK$Ti>%5t>+B)zW3huef_TM`d!l~+%J1;c^uH#>ynfBdd)dT5o4urI;3tVhloRb2%}AY^N7L_m z+tqmjLxRmY%Odjc*j@?L%QaKhoAdi7HQ6(kB>u1y|DYR&*GicuzC6>FX0$)$;*Qtb zS9$mlnpfAS4HfWD!x<%N0s@}np|d}eJlyj4v3tMieOHhRYn7F&UZF`B2Ia$p%gV}# zDVX|hB;gQ+x|yLDCQwo>H~|{0sa3!3;NbjI5%)E8Gn2>qV%j~thj^A)W~<=N&2G@2onVW)_2tG!(d?Sm(K%R)caL?)h(5T+~84Xon|Z0_&x?|Fju z*xQV;Do+zqn2ZmX72Ex|n^8}bnVH#&o?89pdNZ9FCk)rTg>So05^C@c$-TJzrcJY% zjCps2Rd)y19Vf#eGCEPgq~^7|zn6RBr)$?0xMT~*HzYpDH5n!(Bt61an1ki$$Ket# zQ3?qzNzV3IR6f1>QnfhMn^VeU}6QE8T@p)`yw-0|awz`q@r;FJ-^BO|rN3ZODF&(Z8q|cuj8j9cfJ=PdG<`J-=^+g}EMkQ)B@Bqm!nlM;CrgTC) z@{M{F;(BXl`A%J=#j;B3c9)*Xs4XGkzLy1`$Y@f9n8a0=g@M}}Z}@*KRLB*yBXd*X zPsk3gRDrHC)Ub3-ikxQ zMhfOa3=St4HIw&lFW6MusB~KN3W`P{k)OYNnDxMfDd`>2BL=G6oT` z7~SCDE_|yJ|9H7T0VdNCV|6)gJMrM={8x%#s^j@PW;%| zSTYJm5Zie7x3Z>oFLC(bXGE5@`HLOGONs+; zUi36`=~=mMcO$GU;xCJei*p4Xd-MAB>(0)Hbl-A{&P={-wk+c2m2d1et*YevQrFUL zCyqbS%Dj2pLVjDr7`qZ^Vq!9DuZMiGehV+Ch6oMMd_E@^IM-cL^*JbusmSBk9Fslk z?4ZZKkQ+0lih|U;itP2sLn9{wicdKp-LtCC-C%IASXH^J-8AYT`qq8&zTvC=47w36IuZvaM);~;t zxLcR0saP&@?aOyRxAgjY(LjdVlDDw@xPfCW#jcc{rg;o;@WhgC3CHbQea>f55(Ps; z#KiehF(X=cv1@`WIK++XvMrW$vm1WVvKnxQc2PRAU(F5cdZU%h3-tRf#bK0frm?V$ zx1|-)eCI;RqBb+ULinV4tyiZWDps<3Nev0_B_MS;Ut(l$)(2F7Htz{SjpnVjUGnku zWkriIZ63Gt(+xxk?>)S}bX>f#r#<@gNgTR}sq{XcVfd6gh*4x|<<9lMdAIqj=W?2EUD23t44WaTQ!;Jw72a?;yiK=xTwno_42D3UOpXh-z}m!qoVZx!yjs;BmLt_6ffc+gN@?_A`-`pf zXtG_AfJej{ClL`57YVN&IhKgYEscy&;SG6Nra*_+zb&QscL#=PBikwzl z=XAX3{4nPmY1&{<-Hy{lhWgevWz+{AQD3s2D8!>mxK7~C%b!COOHBJMus1f_JaVCC z6WPbEhLYK=>R7UZ+qmJiQzvDsl3F9#h&6Q*M|^KG^+LHu{H~{nBHO$4ZjmC^jw8K! zNl>SdoPI$F7jK0ggDnxddr3`L?MTDj6ejcDDn;Z~6Y(gEOjN^hK|3$UhA47_JSGqd zo30T77(s`gm+2UyXxE74dWx^)d*5Amr16NbCb&)%kB2YWOw`O#ZOv>D-(@Iuv$o#7 zw4^Sm{MI#Mvz~(I%-&IjEpeFNTAlv+B(Kw=wwy)(~sgr+~F`2g`=N>#gBqb?nsH^)yJqnGcnJ;d5iQVwUTH5lS zh*K`SNZw2G>X~QH;7zyM88}fuog~eo`AC|h-NoIH61XBR6Dv*ky!|{k8*SqP-+lY2 z%eep(HPPzW${4s5pABzKJ;m0=9k4j<#A6py-1B``7k*bKBqXe^+R<%R9e+!{(~j<@ zF+UT_IH6DJ`T-%p@K^D5$&?AzTv!OK*0}0661)Z{G-uu%ow!>{vObxv+TKi`EJc%} zTfDgO?p@M$z0^EE^QP@n+*4tTf?qW?C!qRkkW~BdS<;9m-EY7P@@lSDX-)*xaO+O5 ze#0&z8kV2@5qcc4H`ElPn=*P_d9U%!h3c$Ycl4xT}{!1?n-OB>r&h=tItd0mAEFOwPmHyTDp`|KO3xU-b7Fy zmF;1w5dptY=W|csaC0dRx60&2PWyOu!>gUM_OGw9Gh)_mE;OU^AoAL#J&~ z@IgG7nucb2)p_fcJWc%kV1??r!lI%v3hp+huHU~eU%!W=pK>z4fy6R-V&^>qHR&mi zS^JV4Jje zqzMu!gz8e+<`jOp>h&qqE1IFQ#u>uXVigVrFRBLj)O}^Gs;2QyIkE+%QS#7yh+)PAKprcJ8B2ZS!uPo-&9&~o)!KwyqR4&xXEF`H<(nv%(+u`RD0vC$HYt|>GRxk zgGv?A4RM%X0St=on{|~<9391$SoEEL+&!& z<@{7Sq;9I6G%%Y+$M>*mt3|qps+tpd1oQ93W?r(jN6GT=ykC%c3cjHDM3jG_&8MSo z>F^uOo$%P`4DqEbgA#U%clS&-aSk7Q0y5r-@AZGBxAnnn;WzuzI(`uOh=dLFoN@`- zR;_Mxcs&-kBvxYWm@Fz%WjLzeR?i64K3453ze$a`IlI_E=U_5}37=_1PSg}H2v z%vAku&C5Br#Za;At+7S0MaJ9O8V$oJPHM&r>_OW_43mL=)N<%cV4@ z@hIW7qM%U?Um1po+Et|YO>rB=-lcg^_Ckk-^7QkqrKQ@Fd0%0OinkEsip(^|3&fj& z9uue_2eeu8>*rf2Kj+&@BJ~*fcJWu&+u&CH0QF9MV^zmcwoZI9-MsaLsMVe{k- z8u$Y7F8FH3J2|vj>T5Ea;^?V6(TEn`<~6C?OLqVbmS}QBKIMq(Yg!V~qzWOAI3||Unax${atgQBW8tSuel9+W~Zw^s7LzkR}*Da!i z`kO1m38Oc2R(r~0?JKD?AAN7Sjx2P@4~ix4;%@yKya^LOmlf`|HPyaQdOM==?h6>P z2m1MLCTrHv&W?JfW>SvA2-3kp3!mo9+46!r(0WUGTW9!!z}?ADk>7vPhH8L_{0}f1N2_5(bYDg2R>K{eA zUr6UU#3&tk4rcr~IP>mhOm?~BdcZvs zW#+#9&B?g&(D_o-8F~Sn7c(j@AE?3yT6$^rD+-xqL;VgmR-{AwpIXND&WJJ);`P%ZM>>Vud2+Nir>*On+~+v z|J8Qm(Uz}I-^9cxF`_Hf)YO_fzTl;hdxiWFuT+aDGXtz2k#Piz!8N7d%D`RF@@Vks}0vmbk3P*hYL zE@!3Nk&}}fezg%Mm{o5(`eR(lXKYsoD}M|BUhPq6;Gk2VR7oILbhpud&Ytuc@-NJO zG38aoB)?A(;EY#U*PC$A8U9$Y#99=59{hSx@oT9r=2%hDZpwzVBiHtL@Y?anO^(l) z@l`}-obCEIVk>4pJ&IR(sniTRLoe6hLf&mn(Fx7sj%7l#A6tXoMVSlR*^9a*wZ`ve zG##_E85aSXo0BscBaYNQ@&p>20)Qje0B3ybN^9epu9dY$dshlBIl?R+8GbwpF`8RW z>*X?_AN$BUt%Xi6lE)wx^k);RQcW} zFJi7%DC+P>qD0xt5206%BBbVuKR*?FOGcM|AEkcy%3+a*K1s^_dAP^;WI`ov zN{9lzQ2+Snzm- zv&V{zH%r6A+Xhp=cbFE#5b?&jSQ~6Vq}Fd)EtFtjgHW00C~CG5*6|^yUlG*#0mDz^ z^~t)&3v3vSqq;$vn+)rL}m*PP3^d3$MSJqB3_4z0|I zZnhE7nYZk`&}kYyimHUe-tAm6UO?94Y;>$lOFu6AAl%}C(QF$MmmuO`;?-EHBq3r6wFB48r?CbA&7(v_g zi@LY1uYG-}lZqaS9dg{FxQUE#TWg)tXn;8`&){P(ZOr5!D^d&dzPaHvj*{GS8qZL- zjSYCE8hXvA+8tEf(=2>*doc~EH<8qmdYOHWJ3oGepl$%A%pfBOD0iT2l4iQHl2TK1 z^ZeZ05(6+~_IiON-dvmQ-9b`^Ny7)7Xor592K>&R79i(#|G00Daj;qZxAq;xvE5eYj(XFdFvdK{8e~( zIOj<^#RD;0_6pU1HfFi6j{%P|+liXlp7+os@MZHkPc{uX%foj4Br;8~Qxp968Smxg zQ|q(Dkp z*j5ZsY1+B2e%)=iU(cStQF&3_X5ix9uBg#&c*=U$imI3@@B=jT$KnU`(QUIf9Xi2b z|59o2s3VoOrOfksL+8adyeK`^c(UyJZW7kJ+x42iTpN6Txm5ME`1Y%khB^5U)zceP z#j;PaH=a!7!RN0pNXOC$5l4KLuJq5E3-U^xzJ!|>{e-+ z5nq%j3x0!H+pnp;f-d;>s=B&5L{(k(Txg|L7?MYR#3&F&(*l#orP2O06A-7$S8Df6 zB0u5Yh^pjf?6!BOaBhDr!*rgea@Rzfvl5X9uj=u)jQeYvXT?+RuAL0H;(G3vLWW*Q zAo-cn{L2N45VH2!bjhviz}eG-5}$Q{!Bn%hMeSK|rrRz#pN|JRDvAfvQF1*B@AYI5 z9AyHbs6ao1O4mHH(~T1LlrlbY&L;5DDA_iWadKPxq`Y%Ls=dw*r!0E^{1e=S9Y&w< z<&mM2?Aft6LH|)mM$s=ROB>v#zXdQ15=KU+^yD4VTYPNkZd_UyX5sGf_^$n_&m}0) z+HpeI{??p%J$IDiEvg9yu~ytEYI#S`ps!}rVIGi>TAI$@f~{ZS3`%h_crYiPbngts z&$_~#5ZSM*MT2eH7fa<6rLO1 z-;jh6k7)}oX?{X4<4#-=(;l`7OiI)VVsx1{d+$5FO@OhXbv7%wrlk6jAqS_+99iIY zw=d4+(bSu6+j8@O0fXL12^D5KY3OpXqEa4pHQguwo zm+I*jLMrKAmrh+A_P8XgQ9PI}a$jr>*Y*JcR#Dtq1YN>~@~_wWLJf?JQvE4YXo2DZ zZM^v-S#&vZx!RY)*T*Mg3Kb?q+y-et(nv`?rqC4WIN2n%^iE5(`u?)izEqB73Lh_{ zs@fRPU3{?b2pZOIK$-1*5!1+3Cp zNaEPp_+X=7jOVcl=uGtk57LipX>|0b)OOy!vi-tUk0mLSeg(O{*jPpq8G#i4n-0IH z=lV-J9wCwKQ2P&db_?{?4x~=Bs;cU{w{KTmKO3I^jIG=x72KTa6N0nfw*-3T156s< z^mP&UK5C|+L7^t|i~eSb#~yya+oIrc?>eOxqIdEU*Upv4xwiRiYoto7aBMVTXy|fQ z>5^d$9RB2qO$SU&Y6ID!!_EdLj~YJ{D>U*QuJ|~2*!04pmdADWzNu=8tC0J+jmp3G z?d#)e-u>&3bNel|I)a_eH1m1|M`sutHtPaCXe76*ncX>-nzislJ44NCaN0fb7-&3` zUT8eqN9WhL$=q$y)7m9!Flp^N$8^5lCZ5&M@bdCn@{Qy*AlY}@TrxYi-w@7?D<2;J z8DoKcFt*ZLgnDx-76Y%?-}Ojjv<`9gw2fHL-kAQUE;%2X*=b=x%m)>U)nu7ARm@<8 z2bu+8W!1>6nS5;@av}Zt6`sY-GzaHFYz=CgzQI@`5TEGx56T5CPp z+xqlA;q~&pv5p>8WMpKh%{YOrJt63gf;-9ey0um91>z154^PIIFY5BO0}Y89qTq7q zb4hs2P8aJBa~%WjAkwn!)1)_*g?#Vk-}YefSC^xMdtrQ1vWtspRf;~&UZv7h7>P5M z89N89diRT54N%)H!CoPH{{3@>M_1r<_Xf}cs1pZMpnWZ>)2{wWGkq&iFEhgR=L3D( zv%Nd_WIo6SU1I*~2_wI^1!alzzWf>HH%aR`W zoFFzKFQ(qo_6ZpF-M7kar}SG~etn=B#v_Uy>wOrHB#1STv5yzJ;Gg5%K~~PCeu<#E2~grdq|z-SaXC7C6oE8JwsU?a{l$y-nKNbkM+C{ZPHm~v6SA`9a#Ws5 z_6gkdf#w(l<|t_`s`F0nA(y7Z^A-BusBW^@hw)$*DHW=o1(@8=^)Hpxh@86FY*mhn zm%P!pM2|ho?c)+0dJuNo-R^X3yC>F?C9($|{eh?2|4bB>S+JbJ9XKO2g4wE05PM@D z3!%FV?TS`piw^U|47&}dTSP1-H?#hwnHrJK^m*}^BsdMyh6EvxuTebv{%35i zH2|PUNlD>+y}9YMxR-KfqJz!W2YZ>VrTA<%Kkm*0(-t{3*|@c?N!zN(pRE!5zpH(v zrKP8*ryqnQ3I~$kYe%y}ouCBdy;eJ3l0D@J51F>hs!6S%IxQ|-xbQ%ya{yU?FkSvhwz3wPGaiDl=>p0xUK4@OG;~8+LH_2x9w3_N!=+pg;1f@-V*ujzgNXK0lax zs<*dy$(PE!(ZkX49+`S!n*?9+6D*Du+PM(DWI`Yi_4FQpbvqEN|AHp3m5oU|+L+~~ zrCb$kIoNeCp}xx6OL2Ew+XoCWXGuv()6>%*sDCKR{nXh$YhOENu&H}nJM0jd+64j` zHo2eUt5K8mKkDj0r%eTG_-Bxh=i=TE_Vt}f)oWi1B~g^})0IeE@`K_4QfH{fT3bWD z-oKF|Fv!N4s|4W^0&gb`7rh1N`)+zcjn7##ci^)0?a!T`cjVJM-)BXusHpgRw1^nx zv4pauiaybfJUBrbz@HzdhMV#>Xg^)|6sdnq)YO497yxaY!hM+gYm%aG-q0yAd1C5< zg|J;X%*v*N=*;0b_kwNc+RqDDp( zckg=gpsV_a#53oo+HfRy;EG1XvAZA7kp^73$>QLp8`Ay7AhhIKo3=Z94CfllbW&GJ zj2bb(8Z!MU#0l`B^Y+pWCS6sQidK+`UYs0q1MI3B-=ndz+4rhg6Y1NS^Qi6h{#g1V zFM-Y=v$Pd?C3BuB!E!=}#JFfu7-|GGnQL#6OfcMnYl*cSP)+Y|w^J$a7MY7c?;^~# z{V9NMKm5I+aLY&Le0luy{_o#kZauv|#Z(|*N56}a?FYvHtAB!2T?+Q2zJBOWYcUf$ z;+g{se%c4i1?F(*!n@?g@^iWU4N{(7%{Hx7Y|*M1Bk#mBOX-ReD8Q?|4t#g|t>Ou% z+x~*}NuVl_gCX4AA|j~^Cy~0CTF!>}3UEWV0Izmj(XoeY_%|*zpEjOZ4qnYW7TZ5m3y-!4;d9d*9T*t!BBlV$#$k7B^?(Tq8~G(u^d_EB znmRAOP6#I9f*wnkF-3_QYihjfbv$&|{iqN{y+ApFs{vf1KYk zUl<;KTxO`Md&P~b>93@fvCOX}<^$_CGk^R_%o!+YRdNi3tpM|^tMmD`Xr!n2Oe6** z)w+ImbwzNT+mtTmpbsRvet%?I)#U9@CnqNuC!8ECBq+XgJ~T!BA|oT!5B8d>s;a3e zuJ8vlnLOfl5MHII{~NDR@BihhLi|Q4tkSevz2`5e;)Yz&|3X!hgFt3|56b)!#Ei~^ zd)ZQK3VdMYdBKeTP$)VXm1f+wkdFyi)Gx7PNj>Z_jd^};3H`*sE(Or?gTRp!6gb+0 zlYa^oIs&Pb`e!I2*^q z^K>IEiKIa37L@6TK3%I_mQBxKwaj|bI7~JOb~WVyqOPjl1#aZq&I|oRW1kdwPbCR2 z{nSyeCIaa7=dC2m1-k*RV3I11z&>O|dp%n`i7k0N^7!GP5>rG*RGeqQp#L@&H2{lh zs~2GZUs=?y%Oe|%PS_(z<(6LtGnA)P`-??Ul_`IjMLlmiKq#I2cVl%bf0^n$G>z8^ zv$Vk$0cvx;rPxm#>6L}CNw2?^!~yI=ErUCF+jwM-?UPd)p=R14x3dy$(a3$Ux$Qu; z0`VSTGsaQTCR3*XcM#Nt3<_I&=|4Q`QZdKwI0_=UoZzO9E$bMvHx{#ac_)qr=b0PW z)Wc3r%=kclAfQqS4()0I?^Ur|c9^U9D_}bu5hwJ3@@4ff;9{gHTEc#Sl79bqEa@@Q z(6O!(`Fa_Q5Ps#`XmlP4IO-86g3mXgP$*%#K;29c0RaIisfv=4Mi^Wz65>9t+iTDF zV5A4b=gpU%SwQ5XT(oXcaT;nfAEHVX4BqhE)wNU`25M@UG(I|-c1eHGX>z#Tbn^yJ zPHwJX$}P7(ivriwh*LK9gf{ll2rRIdP{;@nj(KgZeaBtZ4S>ZAKw7uIK638h-A;?} zit6*W{8S}lse|PjiYH(t$6zH1ez3-kiiKL#-&=nD(2hH_?ugiXy#fQt?4-XH7Iq;- zz@YaK*v7`j*NwE|cu+hjlnRMKa5pI_X}HH*8~kTrkdirp!MvI8IIs3UU9&@GBV3h^ z1aZURnHvCp;YGcWPbd#-zxDV=7Ci(eF2~qo{KWTfFWWIP$)ocsm-lEPF)~9s$Fy|nJ~9f@)wM}+ELq;Qby&C;Zh$L+xWPY7s9X3G{+|v!u2XhiD)au9?Fa-ty}37cl!+4U1kXz> z*Wu6`uL|u52??oA{vie~GIV1H#DEf4=PEsM1{m;(N5sHeeX-0q-_06sVkl~>>4|;C zGKKOawaCRecU!4_gSkamfgN@w9(m3VTPGuoYbu-0;V>|auTKZtQM{#CTO2-K6^)Q8 zn@;EGH#$C7@fSB(dmN2GmrbW|xGCpOLf2gq>@naO9gjxrmra**?5dbFX#%cC32vQ{ zq>Gx8NaTQ>ei#G0e@qvfEtUvWd>VAwS@vG|{M>&U>y4G9Az}}bZ-K)hr9iFtx{h0l z0kd!cJ0m|oxje}6FnwN}N>`Q2a#9?ug>6uWDs!46`b;|q0&mVTj;pt#{v(GoH{qx79 zZr)5L%F#3b8M=GW%sui+a1d~eR2%?@N$+|_OlIaaHI^k`8#NI+GK=`S?g|tgq+o2+ zu?z>|!z>YStQ3AI6|L-dn2P2~>(SG(o%#s)j$+DE!K-YJ+K0!tzNw^|(CPT-w%JQI zMVG%oATs(bpYhHyK{%n$-tZ{bm=j@X>C>KRzAgVc911k6In}haz5mMWPCVKw^o||$&p%i6*D|h8n0`cNLqM6QSBt)e}R3jp#9`Z4SwVv3L35|(3 zeo)w%YejU3*F#(82%iVno{37!D=7se=lTBfZbZW-{_+dJtf84GkRWn{=6jM3q)W;W z)mQ@374Th%Foi#knps$|9=*V~em6bEzPJ zeX!&#H$avd(1}(u!=TTjuj)m~lIkr?fL9K@hg_(4`L^>9C167o<3O{7 zFitdiKh9vX^UCt4^m~;Z0`kh)FM>|j-@@M;VYm?Ni46fh%lF{p8BEWoK?=A-E?sT? ztCAPVtMZPz@AuyDDDWRoGd`pQg{)wX6n)BFBWmIPod)!~b)e}e4X1(}kjZ(CN6&LJ zxC9?*gxwwhyE+ss3zo=U_~r+mBL6dDz(X-QU<8l_vZnKqy)m1G@QDoVs2cE4h@la5 z+#-@NOBwYqjns&CJK1cz04%)GS3sM=a}nHvk95LrcL6Q&5v=ZzMm*GJM9L892MF?K z0VzZV4S;ct2*H3p`u96(|HUQlH8vIT34k3w*jF|n!pqCvSi$0@AF%ZILotS>9-M>_ zAOV}?G|1@kC>5TiqFqr73rQ`5GPY*O{4tM>h2JeLEn8dS50g2RlL*^Z@bxlu((nm} zg9f2T=$KK6ZGHQntZe7cxw$W`!&4+}|Bx&6i3V!!-H>Pzk^Y zYv%C9%EGp5^DxwjEVZQ5(g0XKRa~dh(z5;=lC~*_*&L>NrCnsn6DWY>8bhU~rpn36 z#tYf8>HOgVHQ zI0CUBV94(=80sqH)0+~jmq8ma-%Z7c-~42)kA%$!dEN%_Y(t$z+c{0uNkRO~IcSf} zFaakfQxlMz+r%%8D?m^wjlx1`3_MXnX<==Be{Z2JMR8Y-yx3{^qi)!d6?}kA>;Hqb zs2cH4R!#g@sDx$OHYoB{ zRc=q=pN8*29u%^WK+n=UbyO6DI3~ODcay8yC=xZ_eY$y&mKOjtSY>M>>Ek#;iw>Q9{+B>6<6_C|BT$a$jQ+hxCDN zv0$~~Il`vxvBa1IYzhraYmM-4gW{D_>JM4LwK!vorCArJf6=N8M9ZWoI_x8dm-jc@ z!dET0w(i^T3iFyOmecR*`{Ol73!Zh4S_TM5pfOMU%j&m2*-bv_xDB5`5Jny}&fa>wu7*p`fLE*m7N6@TkK8pxaAU_rfM%Gd6F@%%SpJTSIv+uz5l!`9 z_xIXQ8kWiGLJq=E$TR`0;UJe7LbLl|^q;ZANHs%i-iBM?;K+S2pxByDm+p#cb81;i z3-EtwivFkn%lcx4HJzWYAs&)sz+dH=`? zU!|iK*Dt;EH*VaZ^nUC^MT;7g44|o#8K^Pucy56O`TYk;;*DFcG_74-8N_>u0P72c zNRAeiyjSk{k*UdD=%)IjwlJ3bBebI_=Rc(G9&fLogf;*C$u`z>>;QDm5JPTE_~0g! z;EfxKy?D?ss-*(%uhCfIjD1PsTqk$lhyIAm@c9F%iR@W}C?2Cy8skkEOunL%IDXQ4 zq>fD2{trU^uHZ8&=NUFCwqfhl>MM29_!<2f<-Q#ubck^mmq72+g40o6sSt$X7)!r? z)z0b$ZVs9RxxeS;pIugV%|kn+aOdz5HttLqhFuyva9}||l&B;pC&6;3yQ}NN&nJK$ z+T|4#uqoW#yU*Kj_&nNH`^CRAZimK5jcFRCtejkJ&gq=&?Cfvf6xgU-xC2!BA-qa^ z@Nc|I9aS0>6A|eG%}VO^Lw<7sgz>T|p}g54R4JJE31$2TsyLSol(+>&{@a@>IRlKO z|3RS+qhxP?YeR?%(qx60@g<%_+yA(~(S%c@P5teGG7dKW}}a zca1F~Nq)tzz`Bka6Sg`1>3A&R1nSl~yQB7%mJG>VFsLyroU--ep)q9;pll+~$2nfZrBDacrbKDz-wLMUo5Kh10r9Zf3Q396JB)N&@E zHYaR(6R~|m2mPrQ4uwb<{$XSb3_R1r6H8mwVG0b)79jBOeIAD$DtZvXVo;8N%Mhi> zOmgGh0h~<(IJ^IcN8RI9sDQx%$wffU2Y6a45@YkF{!#)5Y!smz$zY>$?4Zvg~);8N_`C%iUr;u*VOEpSi(Dcr%6vKR|U~#-FC^2vw}H z(MP!_$PD^N^hsD}k6bY$BSVSvKJaC)9cGMP{v+%JT0fT=B7z4sm;qQoeYU?o0ws~a zyGM;7rCQ6)$s*u;+{Rko0`Amftl%D>t3c}CTmD~`4CvN8GBJ_v5B`#wc|ArM40`@R z4E+Y}G2kTh6Nb)K?(OYCxl@tLN4ZmOXB(SgkZS5c&G!`x9qd_X%p+za61XtcH$MJR zY+D7uFK*Tza%(dlzIUCJa&*PD)*Z;7?(*C z;ttXSYXE4!ciEaa8u_xuVvbcjPK6{C)N{FRV|WX{a%iu( zc)o665^(-SADY-ScG@n-&fMx`0#ad=!4udkZXlBLE?H`J7Ch{2QzS#zZq$E;_Hx$M zjx<0H76AX{(YSk9;j1kDX8Z3IrHIa8w?s02{{Bfo4q%=vhy9#8{qgN3iM_(~y>+s5ze&a~0zVV@ zaSDgN%wf;vmW<~SF<3GTfnqy=7|0X~44xI2#$N#r%^@*Jc;ISv@i}uJ?x-&u?bvlHW5zp6cmv)`%aE*qUh+|kL$E zRo60iHK*w{+z%ty4b7lu;15PfD6e(AF%-kr%~GiDhgY(hZ3*M}Bwg3NirQFeM8uHI z4pQ!-7PTCy9V!d1n+GRbH`boVIk|Vdm~|RNiuBz7vARt0YO|6^7r&+bOYYSX_1K1-Eq9C zN?5ho(|@;c zBgL+5WA#zP3lT(Zy^Oe*Ox{YsCNgv52%h|^DK2ncNCrmMO)8#VZNwPW|zYirty zB;7^LR7D(}o(%0g%m_0xp?Tx&=Jb2IgW9C|UTL3VxV;V9h$TSjeYnOq#=Hu!&c=s= z_y`EHPaXXQjgtff0pG#2zq9b`{NKGCb+hEs*rW#^^HP;hT-I?y0)p*{s2OCs`2Jby ziWS#^XU$rk#|U1Mo>7WuPs(sHYg>N!h=5?o`z<^DzC{+zJ8sv_xG#~VuKDpRxmC;P zE0O^sOKsW9szz^}I!(4>$_WU*GrGm`idnsGUAKLG&+4XYar{i71k(oNdK>>(gm`JGfk5t0!zLN!tvY$NEiO z$|u3u_l00g+YOtko_R>9(s)Pg4p&EB$aaoKG{JDAP2ehAi&heuUDfBb@>c$~K(+pA z(LqY3KQw$mhzQ&-ej*1~aAyDS_vqbrQzJ>68>?i(DK7d1hLl7E6BJ~j5-#r>10rcq zd+XJD^2z~bxsGZV3BHR=je>B(pjX3g0sBVlJp}h2_t`Mm>c?M zqo_mKQ|mc9!*dIX`~t=*1huTw zafo;8KPD>f$)?`E!wwzprG!p12AIo>&=8VOn|Q@;WOwo#djQSr zV+16A12=Uhx7rki{GH^xoqF3`^dbu}M9>iN*8g8u*8lA~T-ra@N4immr@D{^{um5_ Oyo}1-FLxfj`hNfhA!*hC literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.txt new file mode 100644 index 00000000..6d40e323 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_150.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.png new file mode 100644 index 0000000000000000000000000000000000000000..5401404590c57a9d68e9fc270344b499ee9c1010 GIT binary patch literal 17920 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 YcR=a2V;1=C6rww~HE(@Tc=Y1`0Vu%h00000 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.txt new file mode 100644 index 00000000..33191e11 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_151.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,3,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.png new file mode 100644 index 0000000000000000000000000000000000000000..6b2081517b437242b5c75313a8be4f9c211eb920 GIT binary patch literal 16376 zcmd6ObyQSe+ctuLv;_zVI4VjbEj1_zNJ}?}G$JV7h?Ei%5|Tqmhrkd5(kji+FdzaF zLw5}Q?HT;V^L*cb?|RqzTuWG-bN1fnoW1vbU)ObC=iL(}88Tv8VjLVCGTFzERB>?5 zbz=Tszy(K!t0;PLaK!6nA3aoeOH=UK^`v`WfI$*4@#0xz+#UVbuBUd&}~M zfnFDyn*zyaX6sn&t~kRt{E#&y)KMfPBKi`~3@&^y`04_epfEQK%-=Di;vG4d9xA&k zZ*tpo)bM-M(8u?)ujEUA-0GlL*}F?$qn?+iW{|y@G_kL-aQN^-jfU5O-o%#3MBbvX z#^42TU-vVn^uVtH8h>{1$9agz$7G*zq`S-Wy+VTnF%Zc{QPm-y-6JC7$KC`VNqiDM_74bVQmsgJsLr+Tz|aX^XY@Qhux~z$p*?ymq2BA zZ!a!3_Rf_~1Y&J@8Lg?sI0>h=zFIndCVGGv2XUuoO1JR_uF|b#kuvZ zyP@1p%b`M#>aCP_7YLPIPG7hzwdh3`vsy3If7cc0(^uit|599D9%Io~TU(nbXxH~7 zd!j68XQu6n`}F82ZI~zJxf18iN>AF?h|OI2R_|-)eXdVTke)#521ZARU`K7I)_nGv zQ>%J4L9z!!oGS=vBXL*f;^T>m1!cs9D}%S)(}B`RbE}>-v+RDWa$P=6D^FWn+bquA zg=|>e@$Q(LGz)!M-vux#jPfwmV{f$=HoD@x?JD5Yk(D5I4)$DwP(!8b6<+xSTf~!*rKdq$VZ&>Av}q{mz|JS3J!<&-s)Odu%gwsQ$a-1W!dD~>^?m*P2p2N%+nJeiXHB!NXa|a z?~e_!qH1bym)oSPt*WZBtxT*wYEa4BO`A{EsKlWk%sb}lk0p5?i{n{zrThZY_{Gx| z{)5xZjlF31EOD4X_4aNhUHuTpdgc$0*)io~q5B>eAB*{9)eVGj^YTg_KCG@Z4OcD4 zi{TDDJgytPE0=N(A#_4wxl4Z5pI|veUOYMwU*ct9iPRds?U7t1ju{)1P1|m{xGF+W zK~a&3u&@02@VraLMXe(Jw7nE@ALzkvB-|q7RCA?%cl7yp=k-2-0;$uN!Ym(UwfrySTVm`3}^k zEys48J%`f;BsJraA+54q}&Zo03s(UvY23^yYEP|2t)4#q88 zxhC&E*YzPmAEw=O0$O_$6O+Yj5!%|?Up)3W$;Jod12;nv-u0iAWMvR-{(eTuVQJxG zVn7ls8eSa;gVz2P@eypQ9>bWUcbvz&F2_nC9)F>L`v?J-yhz&NoCzKy40`WYbHz-O@`Lz zWxZayAQG-86Q{DUe=vN?<3nz1G^$DM72rVGM1<4p&(UKa&Bg!AqjrOLXYD36fALe{ znS?I$lYp9W+wGra!gv|Gh0ktHl+9l2#hbzXutM`1v6GPp(VJQSdhxjBc!kj>U!LMk zMh%sXk6q%f1&8;e36GkqfAt#zQsvq*Y;JI@w<~nP&peTlN7hZe9-z@tQSj5NH?R3Woe4^hGq*y zXuh?!K3=Ari~RhUTqT=h>4#4rnO*~mdDW9j;=4qwka30!S7;l0KI8P|xV?3^Fd1@W zWSwX81J5;GCHhkvo=NyE8i|~S#ekBgq~ekq>N{qhC=s9O>RHq7(g1c;YxuYZ*B!r; z_8xotqb<{mp3yC}iv>je=}uE(-o3j8 zH%ad=@r3HW=g>dtS4*?s+c|!Ek;ZihTzlPMq&@qtFXCJXLL#Eh-SJ{!O(bPvpk)J+ z?7){}X=uFnD<`Xq(JiAif)o-kS`dle)rk5SW=yOlW{G@rD}DUCcZZ6#o`*IaI;ctn1ZI*$%Q zWDRgxWcnAZ`;&bNw0Xj8!4!V*~=`_fUjHj5X+DB6$ zl|q)Z5!o z43&rD2A*JUqw2CNInw&Jjo<~&^VU9F>zClLYhU?y>fRzm5Q7=b^MWgFb^X_TYBrV% z8SPY>@^Z$HE5~s;WE`APs}6nFzj|$N$vH4ddp~)$-m;okSy@R99SGkoP7!tE5f%Mf zQ6YWHNa}U3ug~uB!84L(3j$dF8$?8*bkjeXcv#Pg?aSfNs&Q0Zx%?sgp(*43B+}RY z>gtwYiiM9|gqP7b^Xc|}@t@&qw@yu!(XH8%9ZK2#*5yTpwQ|!A4i5eED{Yn;)0(tX z+ljmI0XA06dB1^Mx??NODbvW%!<`*>vCQ~QDXUmm@ypeJpix8p4f4Uo2&#&(TwY=Ef-7Ou? zmz|w$r9bQGVebib-+oJ*CeR$onDo;{jpB*|G}Gy62W0#Aw{MTsw+03V=I3+P{R@2& z(h0TGcTMvni@&|SW6Z)-zj1Tgi-s*{SEJJVdM)qKy9lp?MzwO-^HF=*E^i$j9a--T zK|#Uc6?5p+@!NroTukcbKX~T2-mg+Pddl-cNRKz{R5Za$g%0Lm9s3#wej1H7NN+>wq_I!@1eKu<6L&oAN2BnM^Ek5^B z+{KxZ9SMz9exlBM7kM`>tY|+iAhFAQJI1z>PE62iWt4x1VzjbdXw!+qf{Xnnh`UBN zOs8j(n)RUYgYd&K@e$29hVwEm93v;c1Xd8SJy0B9p+wX{PL#>J_ZC(yGF^NLqSXm? z04I5CmJHe7d;z)$zhSEU)G@}tu=7B5x^|dOobAZ@)}vXQ6SgOXp-ghV4yf)JtHujL zAe0}@st4IDmwEdx^*F{;K1V(dd|qHFU}kE1dpCH2|D?Jk+D6DP5H6CF^-KzWXP2KE|b3EUq4N7WqKD}qk*yt2R(&();O;>HzVYHmhI^?knQNqbZ7o|L11?p)NPj@nMIyeJbEj~fPGUOudRxm@JF zdT&sl0NptazjX5v`Zq|~bT0Yt%ru>!W^#7=^k2W##YEImdz6f0f@!rtWnKqKi=5+W z02wdrBBY6$RntaFj}J~jplNT+RmsHLr%#}>QW=gd0pO(K-JMWTyPL@CsOqFVziC_g-eF1 z%?{&X1qz9MFPag+;{lk>}gR7TrqKWEp z6pzzZxvdq4mAaQ22bww$i_Q2FB@VAjN=k;E&w}O~U-8rJ_DR0Xfe_u4w-x|<32oDE zMXD31rXcNb5|3(IeCe3{W~o^^qiSBl`GtNbEC?a%ub+LRi9~5c={E|&4uR0!Z`DcR zn%fL#f`DW!b}|JgClX@&PQvgpTXwdST?m`TyVV$lTB4E~8As?&*M;cTgxFe1hF#s< zO;S29Q(}_&taw$D1^YYNBj2zM3fR`9poN*+6nQwJh5n;XA2y}eWv!83m+vF+d18Ci zj5>1d)Olt2rQz^OE1XyUDJHQGO`mUj+M|8>KH4uGtg*!3Y!*!J#?)&>`K_(&@esPJ z?K<_hj3T*XP03FhJV77NT-$Wg3`Zm$H?e;GX;OS!T8PbfhRxALc6pLQ0pwjyJfH6N zopjOk%bJZo;fNc^a$Co?o30c+k zYG=TjWjeio>m>#H3bDPIVf*&$kkfA&Jm8DQcz9oJYe&$-^_GpGr>8HbO{|FWpTrN^ z=(`;R9d1~-och_lqD>bP5w9PxF1P*lRY+XCzN(7FVTNr$dvV7-St*FmsMcM>YPXOr zS1w*s|#6rlzKrk&(e8 zQ}?D!Q9(gL`eRB;7W+Er=@aM)HwDwv`%ib-kH4aSkWBpMQ&(}gs9z&+da$(i-9Gk* zYULRHk-2g~L4m@ZkBN!-Nti}~m`3E!@s_X|taq3wFGuLYe9umMjE|Pk;qjW0CZ3hK z`P@*UUR|aYq^qrwqH8EO-8^6k)2=R;te~0kv{G0;BRIkDHMy?U%#&{Ky_!?UmC>D- z6d~S+u~|}9N~@F-a0AeHn@jk(X8tN;sF(bzP@!?sJE_|p57Y}G(kYfV#x|DLzejQZIFe9D6)Zq=Pn=g9{hxfSt83B+Pg zm}f;no;#wbA@LgE4v(}P+G*r_IwdLjx72(i!p1-4HPn`)*SNK%y3Y7c|I)0J2@A56 zBUPxzOix_}evy@`G+@oJ)ib=2)f#Gj^hoS#%`Kv>+O<@n46_jI1;y^h1<_x{ZFu0< zBq}5l{65SY&ZQ_P?bZ32TT&_EYbt*ajuCm;!qef@swwYqk!5ewWiTX+DGq(aAmx(c|c9RH+)P z<#oItn?&wy8ED@2*hozHH~9yqU6ax1BKjqVPkA}}gCOQjco>B-W&1HE;8{|I&JU8* z_bdDfbnnNjax?}CQoVxH($b`H)w--lzNN+*bVmA{TgHa}j4*Q@D%cS^1(&=$K4PYJ z=uHzM;v;!v*;*>rHTKM0Lk0c@Mdan&a+z=GwYk+}Qk{x2RqeI{Fexvgc!NXQZ{}>2 z;O4$>Np$AQRHHjFC)UNys*k`4(IllVo=D14!#+8c`|!LRoksECt7bng^Px~>R#YLW z5j!6>gK;sFMQoJuSjC3@A)F;!25$PvzhJLS^_rO`B|qEI`#Rs2K9+Vg9;kTR3Gs^ zN3Cv6N?gPMf7@d5ox^r3a;T90gHdKxQ_x9;)G?nHJ`BPpU`)vhPY7dEK7A>^JGol_ z!c$+U%R?M_<$my0YxW)YS}cVBkLZ&cPnc{zQBAr|RoZk#bK|MG1&Si2rBCiy;dngC z&S}Ba@??d}XGt%aidO#0l`9`EWo2ba%gC6$_r&MhiWm?T6H|;|($g|L^0#5Syc-c2 zouewwRk!ii4rXIx`#@yL?o>10Xt#SFw8(R_wN)yeWA>KVrLISR!X=U?{VT}48b1p% z_wETrn46p1j#tm>B~W3vRfg+f_2iP#sr&+w{8wyni8pG|0%5G@;qyfXs^eV_MH0R( zu(MVE1$_Ssb!EDRGY@q2^=&H0K&Op}Rz%ug3J4*O<)L z;l#F_Q9uWx?=G1ke#N;ZU-sM$aE#mU?V55rU|)@zNpfMoXQ3t&x!wpv9WYyg4D0cz ztmDY^Q_M&Ne|4#(diSDq$=&Kl^MN zdK2O|@z{a2dIM&Iq*@2ji0kc3Bz3R0tYSW$;84@GV2&f8FgJ4DXUP~DY|9l|;xjdw z7V@}CL~|sa;PmOej|Os>`*^--8&9t zq5P8>LE|t!i;U+j|Hv|r2NjzAPG-Dj=&ZUQknLO>C=GE-#ypFfl1VF-$nzPO6!vB! zL78EetM@N&*Wvv>xH0-2td68dtxm+*oTen%F)a~hiG5GSEJDI=*89Ow&*f^sbT36j zz_Zy*J3hsHjxbB%Gv~G-3BMWc2itlSQ3xOnd?N*(&1@>46%!Y+!^1Hw*BwhERYxFx zn!CFRTB926x>I5!IAEGbkfn{LpeP|d`>Sp=M|F32V`u;-6lZYQRrfE5DSJk)vlbUi z*^S)Hck39OG~R}yr`e>CXuXmfJ%4lb*XmLSf!m&wd1=+iva(~&#mI19Sz!{ zq8p+IEj%lH3`~!yx90gEu+gyNewWYd~ICz88p)#*faEb0#tr>8$Rid3jdSelT znHtNscJUm`0Ti|*d#1xfLpe7!tbUBPO_b)EuaR~leO(4SZp>|cxT_2}c=AC(KfCW= z;BSXWM|ftzQMgcZX%4a?eh5GPkf6EWl{w9lCwibbc6wtoncb_W)?;s8dBs`8JxL>V z%-%Zo0iOj56&Gzz3rkE)bX(1fd)SGZ9CQhI@7dkMe!l!otsz&qIa>c3z=E=^s%t<7 z$s^kY3jXP~@~PnWM#kgbQw7C*(K(DBl8`QNi_-1)x8Xv)N=sjWPB7Jo*asisD8%XV z;$V2pW^Qh7Z*MPni2g{R^tnm=C_>=zllWpFN?>}qGJ3T1xt_WM2`VQcP{O-}^-{15Q_I-b zxtMzf08+L!k1O$Q{Xzb#7|l2?qvZJbv=#U&2XZct%wzj=NyN(DVP0UAg}H;X-np({ zkS?vFqndW)n$KxzpWQHOa%Qq}-r?##G|@T`5%4M*+?s;qLaFn~)eQAnY&9bq5e=U>UKQ^p|8m&~0?Y8w-t>BZ z4mSQ!Xv{`{p5O38#0yZeAUDJ&3Q%hCVe&zB(_2qXH3#)l(?xQeuC8)&L{!Ig@0gJun8jp6nv`PK;eNkaz3Otec4gC>_O@AQMQ^IKNlC*5}!N{ zbPETz^hi-6R?gVQMu9%@A_)nJ%i6EZD7o5bCgt(%LocVi?U}02an8B$^V_dHJnr5J zOHk5IW3m!qw9Zn#j!hv#6WtV^bLXJL?}Ytrw2A5H=%yT>k9w;bn_(&d8gAeE`l6~C z0)sa}ZD;Y(is`dD`4Sdi?k>KFuM;NPgxIE`?Lh@rEPRPwMQ2cf|LWk&+czskg`a?C8N>%rkJfcXLhEE z^EF~UKHH1|Gu~i^?fOow#zmG3SgD=UX14!B0}2P~P~JHSznE9zK0sE-s+vaJ6hN90 z+Z@0_{1z8x@^3XA==!5WWMpJac7@X8%`ASzZ=eI;8(J-OVxE%PH-Gn(M3ce{Dmxe8 z*FOanv}EMnR&sf<$+i5|jRS?Zi55lr)by+8e%t4!AKL@OS7ugs^?RiAN~4 zkKUL*+*<>B_hDbAJhsRzxC2pgYc+~nr-8C9PQg6^syzxOEufk`IXUU;>oa|`zwfql zl!-f&D-Rx3(t6T?>Efl*n4H$sM=C#7cPlWOw9Wg9BjprP8U_YKJ-v)z^-L?r2MJz` zRU=KH*C6$ARNkbx>8#dm`b|gSWX*i1okfkj#I7#IjLN%O5%05eHs=LjoDQ<({ao-H z$dJTJ%LSo_typP!(a?8%pHa;HQP`72 zV=02Wdn^Nzt5M1n^dt5cYVUJ%Um6tU=jRs|CWcKphsI*3Aru2`swN$KFO^8snFS9xM?*-@Sm@bz9RMriooyNB&InIQN!^r>3T6 z!bTOU>}QGjo&HPA{U9Z)p;YfRmWz)G8T%VPzvb@(K8$P(2?+ryKsg^Gophw(T$8*MK!f&Q z#>trmI_5wL(SPZvI%42~l7EGzuw4jIO=e03CC)M47ec#Qqutc~%lPO{JkL2oNTL)v z<_IH$jwe*W%Er6JWrTIa@;2XMijrcal(TRP#K61Jw(DC4jvO*98SyljcDuL|n)17{ z${Ej9ET_!jG+vowE7FK~!y0GBW50@hAvV=v``sp7u%N-a@bU#}ErJvt<)zS~Q}$4k z_vxMRqRmwhYmd2xbd^30GGSh|$9YJi#EH;X&4Z75TR*ED%yjQbC}Cq2+(^lz^?hjQ zH$(1PIf>zxwpd=v`!#S2R!u&-bFhpCi<v*FGT+83NZ7=zZLe zC6`XSO4lpTNZz>q-?(o z5|7;0Poy%8=U{l~PJBOX=a&`m+#|_9G0J4% z{bKjE0sE6B3rn}TVD?<(1x$!)UI3(3(A0pj`&w6|ZR^NP^~Yf{*axt_&tySw*SdS{ z6D<<|1gVD--Etdmu5^E%ao8#7jUE?$PB2*LH-7T+Zc^ds(PqxuR^d7 z28aU#G$g^(Ynj8#g4J&yYP+fs_<`eNKoV`hN_B|F#)nvQiJ;xDBp7Vs=g(-JNaDek zT0>>4I`^HtzGXcvD(-7AtHKVp%R_ zkwe8Dh&-WMuAcY73YPnxOK{6cpS#$OG>0$bY$W*GfLe|7`tRS*YR1nvFHV=Jx(Y7^ z0B$=wJ2QcfZf+d$QKqW))-|IWLmf-dpL#pHBiGyrT z@=0g6x%sxv?n`{|0x~i(a)d2w_|?+E{lCPj2M*316*=kV5cON8CW1RG&e^1M9;FW* zq&uj5=R#vSRHeEwxm~Izt+V#+{k1lNuATzCgnTEXZ&B(dJ59FCK9!Z)jJ#Kw_y~JE zFI&#_{z>pEm4j~=%~s#ji0VFw+lr=8co8nb*$fZM7f85 z)VJ@~tuXx)TPmp@E?s>TRIv0*V`Rm|a_Ahm&kSr1cXQV=&JRx$q64xQJ%6`O8l(eR z6TIm~+J$*nO4;V|K#My0r4hYgV%bf>xAk(AFGNbe^F0dlf)zZuET9NhPX;q{^9R%u;j9hE`f`L>DG;nSc%qB)QdgNbF_DjQb zkDG4{7c3yy94674?G{Pwy!t%6bjDJ;61TRt0PX0pp$3ajDZy)rr@^6BZq)$0us??0 zJIjz=&Ok6(OmlO0Pv9A@Ec%Kj)!8SK$7;o?&{gM}Gerg5u6h^9n^F8S8`zBahFm#{ zUX+*DVQGltOjpH9nV7R(=4#$emmTlLRL^El{N0?@`u*?IZ*ebm3pGpqsQ;0C&vr(} z4O7D6y1JB~5x;6&?9LW=ZbDpK99uRGR1a)+Or9GW8X6h-C@cV>qM};;RV%O8>*t3D z2EWaZ_?N^BLfa&-_yr_;6Wjp+=fyD>z|VkrXASJPWOLfb&rnXy;1W3X#Zuj<#9OF%>X5=`~^&xm#Vi^NT!S159Gp{%Zu1!{ecU2gAET9p|&t!m3Ms5iV zh#?H`oFz+Lxb(kVT&ci_9t@G(rTnP7I&q?YjL>Ejv&J??KoGs`ENQ*=qng9RSb)8~ zr!dtCWS}7xDQpqzRvsOXyWr>xJnFf|qR<)QY8)sqW&CLtHURN<8}U7rRL{DmE-R$N*hW%UWjPhb zrF}LHBc&5~pDFM! zixxG4Aq(Zv1$a=cUevRs9}yfsYZyYJw$29>R{JB64Jhk<{f}zYrDpEKS}L0`Tuy*W zg#c6`tQYdAmZ&gYb7zq=`e4&O01^?PMU5uiDd`a$6E#Ot3of)KC7_QiFzKGN%T`1> zY_%Qw(Utr0E7Zk!d8Uht}UP}G|MY1 zKugHrI6adL{!>vPG96~}tibo2^X0Wzx>D-c+P~naTSzr{aj=WU){w^(j`UXu4=g&GM4%JEA6e@D^z z+>36o%Q?lq#+V5ZWwXp>w_l(nySCp=Pfr8Y1~s<-M;{1^Ad@#XF}amwt2n02S`ZpQ zD3H$@j`ajIKT&~t>?$PZBr9~fum~{S%Zew6YVjyF!^6B}{)|n?b6w&tbKcXYaa%$6 zZuMlECu2w2QVA8;Z@Ev-ZKT-HU}BlWagK8csbzA2(+z>dMF2r<_F%UBB?*YKme@-0>!)zu2s#w6(L_|UNz@e{zC z2GX?G+)~k%PAMA8#VAFvaU##b=-V!WM9MWvmPAQYGp46Na2%61Yih6=N`^s}Wq|x* zn6$CrJ-aOvd}EAJt~#I)55Ql^4jU**8f|`dbz_H$M%j(!_IuVsRmCJAZp~R?y>KQw zIdq<0c9f5Zo2mf=&mhs;-@d&r^ctbh!HdQudj==J&%x?BZ(c$Gw|{9If}7re8fl`! zf8>iO0d)Q1V|>l<3MWt(Z_~?H*?ZZZ`X-gaiTfUpt|o|2KVP23r(q6<19rj%pkL;& zzUwzgJR+(2gML$DpZg@gnUA2o>JWgSxOVNzv04h$1q2dM(n$KF>3tAr-{sVf;^gA$~w`XiT7j>c^_MU~Nl-Q*> zjN8p#ia<4l=iX;|G;j%k4uE0pNh|T^)`o{F&@&md5?In47y1?#t-%)cdaK5;32rP9 z5$uj;XJmn})!)R+m#X@=f?%8UqV#m{@t3RiXh^S;2&+#QzRWwDb|? z6Ed6?_du@@jlC*XG=76{rss9O4h(cM5#XJ zEc`LJ?iz=j@Tlq`einzt^Q`L53?%h>e9$O5NezA;*v^IUnQZKjCD)L z^IEi5UbjC!*fCX6jp?_WaJI(mbl|vxp)V`_gU-9XGgiONCyTh`1O!nqN*mccsyM2t zsVRH#L(_edW%%#$&VUWWIGQasE)Iy?gmr@D?hK-?sdBe5x`RkEIY-2}x3fWP?=s0B zhAo1#h{jZ}Z6y9xy{;9tQ`S@l50veafg)~7SGORVpWfZwRnU8X98!;m1UQC=tyvL1^Z#7Ce#rRmE|MbJwgmNx{w#UB^0j7}9Ku^@xobQ45pvO@^#I zEX}<#SP`*t65}|+@OO8X9B4PPajL0~mFG^g%Hg`uUq9nsGXqo7n}1@|wepN=UV`$Z z(*qjal&YIp`%bgP@XG_6_60JX;UHdVhfj1o0#(41+l;ym&<|vo!^O6^xtCJPx4~V{zpf2Md&;|FZO&vn}x zps||K539f=VzSqnBd2-#TkX>)j3n&ssg^)JQ3D94&R#Q}nsZ$*GB^|(s}t?(20D5M zI{G?O@PupmCV))UP%6D>Us-S*6<Zjo*6YgAv1g<(7__DEhD1&mO$~O|SvJ0v5;}}G7x*jYtjDQKZUf04qk64y47HF-5dqr>?0kY7-=B0pbj+9G zwOq{%`1FSdyx~9qz-0R6UnTdKO|rq&JxRoTgzSIu_K_MO$S8$e2DT6-yadW3ev&lY ze3>!u{RyywEHY#`tGoQbm_f#YdnM4kK4JETnCS{b+U-}|GPIz7IBvp+ffHf;UdU3l z3#Bt4(cpdYE#+WyIAAs-i-3C*B&6xcggIzhw%YF&rF$|;I$+*af3D7*%aXD6E|g|K z-q^we+*_dQ*(K`II(IFVg77rtRm-`lZOhouf{2~58sdJyy`O>ip8XL1@_ayn|1XW1 zH4{rti~wWTwHbN2)E-dwY(UvX!E71uYvEpkuob#cBEdXV06AbW8=Gk3YxAFY{ao4+ zP6m0T+HGqN@Qb;*JA7kcndN-Inl!GLMtNvq7xtZ7XG#=sP=Wh(x5VgBoj`};f=X%v zdX4p60kO1L}Tmc&m_|>m9vbP+Wf(k5YgHBv)ZZSUuqHNEF2jPD?U%JkZHRQ z?8F$~)gKa$7T;h>(#(%pp2V7k|E*9lUqGJ2I41-@oqd4=7Px#K_}FH)9mw=USib`y z_+*S<7)(jUTWBVgoh793 zx6VlF>R&PX(fcU+4p6bcNX{YpacEjX0<0RCak7_t7?j6U-n1q2srUIG&S7sCC=BSvdVYl7;X%vRTpteC+gxWWQYu4E+`6Jk}84R?K#*>J6q! zr6cpF;S)j9>$PBgugWqnUCqpvqukp0cyBeGpIDrfaa_&H7e*(^)CnAdgA z!9M)y8vk!8D~d#|vKRJM>r><$sX7sM&j|Ye8E1Ao(8l*xbl@6U#*&{1^;Y$i!)0_q zPC5erekMe(z~z{V2{CNp3`p?OYlOyj)wOJHQ6XhsODU^a`w3=|ZXJ1_Es2 zf9+^QA7#Jp0I0MZ6az38fg%jKHVp0?zMaSe^8Oa!HtQcT#)6JLP9K$nI6)v8ORaqD2#pJ*;*-OW>T;^ zrU<3a0A|&pdq~uDWtUS~MK1rblruIn?5FN#)8d)F@T#uj&px^SE((e@Yr$-w_24ixb3+UpSeMKN-smNuV(o6#s1{dwU zyy&sSds5iq`8A+v^{cGa?aw80CXne{JD<<>nhq13gg*z_@>49Ii1pV%2ni03{exCq zoY#^UOL1@}FaG)J6C5Ug_`iPG-hVlaf-VfkaO~;Y+;rEOQ{Y$qSHs^NLGC|jp0qOD>CLw>sCV06H^Nutk!y=MUf%q^ zH_>Jdaq`XB{)(RZ?%JC2)8^-w{msuouWZahaB=RhkP_ILs0$SB$vob3J$X z&8+~AZ; z8@Q_s#edd&S6PtZ;FxiLY;yY2LOrG|dZNqAKglC0a9GP?_s&!8lGqP%a-A;R7E*Gg z))M&g*ZG?3@1;Say=kro%B#V7%%TbkUagDoj|snO?UDJNEWO#rS3RZI`5y8)>m_hf zcwBOolL=HzT8I8GC`Uo8WOYdYoPL5f*5qe>Dss4iO1J{ z1}`Gpyxf8nL}aPd%+BFdG*BA-kCq&FmCM5)&A9LFHg5*{hU4Pl;Oxy1AzNSIWd8hQ zJvnVm03{{`-!R|1pd+hXNBhZiGNSOY&9%{#wp9M?_QX|Ov88@Z7;p}!J@S@m`0C8&;uL<+X|1PZrDeGU z6$LRK&V7rgtIn2W0Xr@Su zB*`^Ni&T`E6z2)Iy??>3Z6OV~O1x0M+}UwrB#zttcbh?5i(A0tLt~uRiz<%F&J9~8 zo8ph}AaH4!T%TOSc_1oP|Dn*W^*6WxM`Y%s!AnO=*hhnigNUMg6`SIPY^`*qnCnvC z%p~5W6RLN-F3m!*AWWmTpE499Vv2_yTIl6>YV61B|Jz|~|J2`D_Yl5+Hx+y`k0UFk L^r%SU>6`xp*FUR< literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.txt new file mode 100644 index 00000000..df265180 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_152.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[1,1,0,2,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.png new file mode 100644 index 0000000000000000000000000000000000000000..57c7e4e27200baa6ffe64fd4cbde77c0b1646136 GIT binary patch literal 17543 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

hXatSak&>dQAM=@Nf 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 F{~y%@?)Crx literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.txt new file mode 100644 index 00000000..28e02615 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_153.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,1,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_154.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_154.png new file mode 100644 index 0000000000000000000000000000000000000000..844d24bf79a5b11c6d87addec0e8fd9484382b2b GIT binary patch literal 17478 zcmcKic{r5)8^?`nk+PE|AtA{wYqk*zB~-TTDP}BV-@+h-BwMy@O=Zij8Dtl-H^$D` zmyqoH*q_hPeSh!Y?>V01w>-!5$K8D#pX+m7*JrNfJkR&*d|yHyYN$|P%q)qum%%& z042r)3iGZT&7_R+j! zen+{7u&BW=I0o=PopbDDL`0VrnrEExn!$VW!}6YcuYD*-0Ajna3@Dk_pn2WFAJ zhwU=UuYW!sv`S~vsIijaTT`^LvDwH}POV+WzR`>8U7%Yj6Vc`{?~m?!bAX^V)a9q3 zIy#K}aJZHu#Cd_)X`d~^%J1L^(dq9b#g~d>wPe7wx3766c6WD+70@y=B&5s8$Y{T^ zR)+dC*9TKs`C%~XxYhCslVmvk_9nSp5&7hm%W0gV40heJ}A(ZhYR_8Mq=7=AmNGXMd2r|$+uIgD zCrk>ONPR?nXK`}C7KZZ8>oE`9$_bTqy>-@oIF-j%c)zOhBSy)+VPlOgtLtYq;4F+?xq z{;P$D)&|}?VM0@(?iE$;W31_E^YeT5JzgPPR7VR7qPPGm$~u)Nw}Ou3@{!)xy|!9% z&8MFwvVH<9P2dMs?&|ymV)bWb9Jgo+sw-=$u|-T$1kU*avEH9w7F5? z#Psj4aI}8v?KmIWjPjQ%Jwl@eFtcM-x0oboQ6$SL-j-e~hj&TUuE8^A7TK0ntGuG& zaQF{NR9|18L7wj9TG_g@jZLWf-9rVRHOVA(gR3T{4l|inCMG5t-3zBz%I<^bB49oG z!E>v-G)z0zaW5#hwmgMucHhZwH3aj^{BiX>*tokM2%m;yki8|NhwZ_FzFB@V%(h8| zJVk|th2`b<{NiE}jF~y;1Zm5&~l%I;d>ZkbRw8 z!=)pozTUX9T(dJHG_6rmTst!ZePJMDo7r(TT!<4Qk0a-fi;ElB4!2xmV`D>~nT-Cr z{>B{U^BGFYkBh#IIfKkm2vpokmb7L=&Lo9;ISmXRDP|j%E;l;`N%H zR;zX27cZVflk<$Dm$li=cWlVln0gksAUnU@4|O$u>c7ejZw*;DMIKLhakRzJe~Dc5 zhHU1ay|E)3U%n>izGuzK`QA-f3eV)jKd#gG{cqws#turR7VZd%ply30TBQPwB3_5S z?3~z(jDlO`Tp+I>kxYUs=`>aP81 zaQH#t9m~3kBkJ|=LXc;*D$K`r3r<>WR|-mii8qqLL`p{88y|`O9&$e8v3-O{s6}KQ zOOc_JfO#HLUadP|CTMWS>Z?f7ADZ3W-CSh<1tj0?bVZ3T9UdsF(semvZ|1Av+HSx0 zJyeD}^l&uDO~1%Zut2H#X1ZPjT;R@fIP)%V#W)&5jWW@7V~33-d^X@SL>_6Bf#2bJ zJiQpTne1x)#ySt~epoRRRNbnB0oS`Jc5x=xMoZhqB6NLB0bHGY^L7sNgM9c+7;7>( z#!%vsUHPX1r%fjY_IYm$L#g>0!Wmol-TT1r=8Hr3UclA+N)I1R93BixAFx#VItV*a zm(}Xsb9t4^i@EOXW^cdT63rcPMeZ^alU1?7qMOWWqn5=($PT@=gv8N=vxQS1I#Ru| zar|$do0Q~QsP6SXoLm1P?H}tw8l207Ip?(X>zBEem6b^2{=RGlEQXg(!-qA|73+)t z`Q<_TE*&bQ{}RY^4i}F&*yzS?UiNYKVwbZ;Pp~kxz490hv$VfcR^Qr`wqy z_!J9gzM5xpJZ3m7cewRvqLl1@0Aqug=wwwj8m**d;pQfhe7AOb@v7VNYCNl^GhcAW zwY1&+4>KDZVi-R5hB&eAfalMj`&d=`Lkyb&A~DT$B_k>_gA<%l-#xd6VDO|zC2M>^ zTC{PG*M@}nG7_Q&=HXti+=zBac0%rWy@neqmpC=Iw%*^rSXEY5=2k(0=`ebNCVN7L zE1FlkcYrXl>6Uqsxy8)Y+w~_{9%4P?t5JYFmk|7;%QMCHt@&_b7Kpuzp+!}7!#SZS zs!ficKYw z)$wCfySUjT7}Dv!u1~|?w8)nsr7Hh^55M}{`uF0Z?P2ZZZ^ce7E_cYx;rhR>T+i>H zUkxcLEgi5F`^c0SYUOs8N>M^pGwuMHVp}YCwA2ui9`#-N#qz?Lj(}|{e>x|T`Kg}o zgNLi(?uj*}n|DiQuBK0YD=B$mxK6cpF$)LpI-RGh1}C6^ zV4`~>-vXKpPlHmpkJ|W~)xv*}Fv$43{FBwleBMXu{!MIUv->jX3D1mI=FL~bmp45Z zBE@_WoXM&S&F2=YT`Q!5%&}a%e18+)?Sfm<(t~p@vR#!R1v+x##kp0)^hROxFD{}^ z#q-PWb{<_|GtasskFDNb*vZ7|KXsK~Mg`z;vx*ja)#JwrFn93YQOn=FhIShm=^oy> zm+9Wqmd8Z9{6fO;b$UA27VDKn)uyJVh4Hnt?^4oMu^wMkPg36bt zkq2^dQmgsgY|B~z+x`spXkYH|IK2_`ZguBv)&J zVjpDp8CO(Ma_qZLnrK}~@^4;)`)pUPFbI9tL`TG4EJH!&>*X69m&Qz~&V)zA4(BlP zvfqR`cdH|z&+XpZZ~xd4;;L_Ip+aJ``+|Mna6WX{*fc(Cbcs(&Pe}W|EDWuri-hLc z4OehjLu%U@6J9^c(tov81@~c#tPmy){qG zw!|s?+4t}U8~N`}dlN1h+VPtCnS|uK&2e`ShkLhnCeR73yDOTG5=*b(SCi4_ack$> zec8C>5fWPZY==DUjaiWtKR~w2IUBXJJoPIW3*{x;B3vm0%I`MFjXF^>N8ZW%E4T+1 z-uTR0%p^(@&21o)DxzjsJNvry78WBjA#jB-Eg|^?&L&ZK&Lrqdd`<49a=3bUEPcsRjM4^Ga zdV)l(He~kB+)6q?E@{=FzR2y)rap_Ex&_$@=<1(u`#7{1B)OR?kejKAq@<+GFDU5# z38SIT;xv(>L`Y1bAx3QSk06x(1$VxU_}3KY@e;?Om5M8{hb!0g&^_@@;iC{~wXSaw zmR=I$B~h9Ynz%d%)5;x={o#)Ti_Vskc{q6A{O0PaX2DV%lhhndM|ySl9*Ye>5ZFJj}Fofv{7&ZWgF~!C8_%0j-z(t}y1-n2(jA5$U_cyIqmCIZH<|V>T6ZD6G%kTie-I zT}pj|aFmuf7LI77C5=9&45&S&P7S`JtMWTm1#z~%ExLlaIAX*GjvVOF+Me&yRX&$3 zD}`QM=n{9gsXBVNmsG^(WwB4lpxt9x2iI-=fCz}mV%xdE-SzV)xvkcKgc$wSCzDrj z%!!g@`7^ia36~M{Icwx_$k+jAW%HI$;!@no1IONTted@*kjO(pmNx2Xi~Jz-WKY=k zRIBd&fx69Z#klfhpCJjc*sQE9{4eDD_aDcK6^E<5;y=g;3xAh?u{c<~GS**U3fr_F zE`7AXwKP(}*iVj(-TSHZDYqrzf4b5(R88SAy4ky&@_%yjGqR-*3yGH7GuK5qsaBap zXr?tZG=Sn~brkdXw)0l;Hk-W91NxG0-*!lBh8g-gJ81+WONqH(==kDUF0JCoLBxr# zIoK{b&ZM@kE#{VolYNX)fyB-ZM=+Qn3R~mlC<4D`PBkjC*ReHz5K0$U)il}IsEi1( z@bD<>wZ2#Bfxc#KVrZz=oh&0yNWh2{s>paQod^0PTz}{3EJ|_EnAh2J5IA#m0pQq#Qa1V+6CI6x4sq?{it@o z6Mclozh|XJzD?1)mQ=Ws@TnIh3Kmog^D{zrmChV!*)nM9O>X{Hy%|5bJtuuh>Z$22 zDOTsaX3_XX-4Z9aJ!w~A$vbYX6hLDN4cmR&nVMTTPd-%g<|iVnbw$emI#PYorkQl< zk8~`W*bN)nIW*5&>HEFflRDY7cznF-%-{zBqle}UWfDge@SYCnW!v1ZqG8vuHR@w< z2`iZ#2L*icYbPYdltuIX^jJT~GzhBkk!fyy#MLbV!U zDl6B`W7Bl5!CZrLcQh~1j(seBTNu!W{oK4SDZE2rZS9IdLW09;6dajy19Xaoe24Ln?k$`jeU)2RMEYFSy*W|yiSjRs zH*Fs&b%&}aHaett1T>@$!N5x_if$c8V??Dt*sESa8UxQNl5WM$KmJlCjA(yDB3Ho> zHMnKbtu+7Zo6K~bB=YBl53a*{tp(3a^Lss7U3S^r z-0XeUYz-A*7f@z9OZ3m1@TpY64b*}{1x;&e%!`-)#tyi)4>$^Tg9C?#>nZvbT6X@%zOS_cE3 z7JZV764Ye+(P-7)eRta#lG7l+@||MOA>y;r5rK_77`T1a9E1J5wmw#y!1hbs2cJv& z3a-zep)--}Dq$8-8CfhI+WOO166O;r1rom^H7dREgD$aCU-=ANM6qv)pI722C1pop z7o5~up_!p6s_0#-zKR$uk^v5U>eaK%uKU8Ul&)muXU*lJ zp+9D8WD>hyYx=m0=?%fQzZMMC7PVsZNyNEnsr37yQO*1A>dqWdEz5~B*}DtGar81t zy2q*ZUq-8uaX6xmiMJ$4+wrkY@lkbN!Qr0UwSQjNSsU>{EL;RK0ZF~?)?V| zzMh_~Vi6G$6$NGYAw#;?{E8!8WzCojMT3KVS2*73F2MfO2;y|(>pT_fP)Of{3g2P@ zLHfiApar8@w6wIo*^jv)W#?&KU(%31 zo;q_CP|}3A3eH(0?Ujb*Iv;W5A&IjyGe&(spL3i00yrkC`sA6gcp*Xf#o6Ed;2)6~ z@Y2nA>Y^1CIx|rpT#}xC8UtNRq6*@zYFG;qn8d3B**sC*Sr?LaL8&p zJ3B|SPJbLLO6i&}`z^|;E=nA?=5_JQX^7z|_N3dBOi=qC2;N|k(Jjy-5}`YMxT9Co z{>Z0*Rp$rxmHUyQ91gZTUrO@8V;n7Dp`T^%b}JTbg>Ig15jv#Mb|-8Ntq^3s`Ys7)HLcow-%8_}0IayW zc4A_pnUe|K9MvL}E)`X@!&Z<>icdDik!qB}$soG4-G2@bHid&Y$b8pYmVc6kx82xU z{PiQb_cH3S-f0)}H9k;hPVV<_pPO)2wlKWKUdLdTdo6>$!P0c>E_nmv;ovGI2{HwmX`&!b@`^Ss>!C0%(NVFcGd0Sd+UZgmp>wR6afNUtg zhEFt!zc$7fpB%QCT&2ivD3X`^DmS*q_H>RlmuRLrN*zsR4$xyRX|$AKN@Tk62Pj&3&TUndJje@Q|CBlvxGVSk^t`@y=iySv`6Y)_^;2uc%Q z-7hV(xU6~j%l9$Meka?(_Kzako9-}J z@cl>X`J6(mcu)KayFg)C84sab#dzM??ddq<)D%)=`Xq$6S7n=Ac0>lWk(l@FCg%L*H;0689<>=%^_-?_8#SDYR#;W#?p0pp1ld#=9u>R+OrOW7C z!s12ct@5AP15_NSU6vg)?BB#xej z8LqRjvUZ*hv9YS9+9R_p0n+viXcy97z!8#0tFNtXUavKmAaY33(9kgVE}mp311^zN zbi1+|KhblXNURc#i6BX*K-2BbE4V{-t>*j#i6SyGGN1^09*3A((99))Y(*Js0@>PZ z6?BVv=@wW%qQ)K8`k|1v^TA&}cNS?!jEA4Y8!=^HMExKX_vPYw@>yRe+g@)|%*#Hr zvI_BL3rbug)bw9c-li-+UWobr8k(ruS8y|#?0C)RVoCLt1=dlFN=izT-rb;Jf1a_> zOk_B#BK^3;DF`~>e~IBNVWE5Nv1I!Cmg|1H%?sr3Th{G82pzX0zLTy`^(!p&CAK;s zl0L8;{co?w8w4gILOW>QZn~(N<;s=5Yf7Yq1uw{)*U#kR-b#lsJ^l_8B{ZGthC+>^ z!`MVmIyf&(2d(cjf~E!ey^_9*ZhBU6dP&sI|?ChFggO%Px(GLz_=ylY!{v**t< z{wT(UYljQLi3!~hCO}*kUSpwO+K0%3!x|sxjNQ^nFn!XJ!&pz~_Wa%V6z}HNKw;;5 zo(1Mi-e595x`#yn*||Jxa46L*^`_R4Bm*Cs;VocHumgnB@g+Z%&45xU*6_IZBWk^z z)e-cX@bC=K8=61EK5t>cxZB10_beyvmulUT(Rf1JMFapPTse04cC)7u&d#))&~gFL zXgYg_U$Jkwm0_=o&~70tPfr9!gBsN<>5V6}S_u1;2jr)a_FJ(mj_I|O)i(rT%y zs^SJw(R0Jn+&rzkf`=Aw4?I_BLKLAwzdyU z>H<9vaA!rq`IkYR0Apva`EzzLspCeMy+J%m<;i@94`~GjEVYvw2Wu()Kr9D1>0f4( z1ei^{IJ$blMf!p0X4PIIP&eP8jr1EhK}aARLGI?}W_cbINcEi*f(1w%#nhzxE}D@&fM1&8PGC25(NV{UUikV)LQzD=Jn= zS63GRE)1r4$ks9lYUyTl49l&af7g8%6#>VeS^^}bD!$~~JFi}~L&zq(sHo^hR|h$! zV*v$KDP%x}Fv>+w1CC+7ecU%Mw&`!xqbze@Ho2AmPY0pHC}4)}1%^FlaAQapac`n2 z4nC;R*c8DQ-8nQgv>zaDC*XP99LQaDqA~@S08b<&C@686;&?&&XifsXZ&iic+TN@H z-I7ywgb`477D6+KM?(Vmt*gTdUzC2M}haf+H2VZ!2xSKRH=160*B#lW+c z$hV9(mLsc&7bSf69f8B(AfONFpPHmAprqc~{M67W)=jtbPI6{Sph=g`Wd#REcwBY|MUPItKC0 zAP1@rwsC%+rDpT)d*l1Y`KBznmA90vEWgPeB$SPh`!o{cU~x=xoo~vMhj{Y<9-i?E zTdk)tWxY#4txaVf>(|Gq_l19%EUMG5R{vZ&cg%k&5kc5&UglI%c4n*B4wsy2F4`&s zbUiJ;_e4L0JS))H?F@;SmQOb&wmOXdrg z&xJn!-Uc{#9#|A(9D8x0kR6CBd6qWlXmBdj zKYc+ydaoS*+|(3_--d}1&T?)AN3Pca%hMJxKLgWPiZHxQ%KB148x1p^ zTdm&s$}@ppj^j#A0(pFxW+A5I3_DV3D}8RW`(e=;aYrDR~r+h6(Z+xD-PXqAX7VQ=3S8RWTD z{wFzw;6h_qN1XN-lBFF z)jjvxl0p7L@>b@T_1}_tM>x*hkro!W`3{0l2zJjqEcg`i44$Rl6hy(ONUl^IW=ts~ zGt;WlcD~jB@-sO6!9%p_Hh^;vY1Y^mn#b29h$~u*e=U7_3?khbe6oK8q3O?FfkM$9 z^+4_H@<;53;^N-q&I~V^&ASaIOtSq-diTF-2&DE}6>ztrBBz&ku84?=D$Pp|bv@?! zC{^J#@J4Qm8oa$pvSZb+*%Ig%)bK3dXXyx-7d%n~z)BRow=q;wq)jWX`QSmvGCpwT zPN~-IpIu%)LQ9;iE3XnZ|Re9Un)G{d1hv21|qnN zOHudSKwR8?qxC<3c#E|s_4M!TW}FykzWNvP;2xd!EVKK@XDFov?(26L0YcL&N))*| zJB!M?CiK~heP2T0S=rS^#dRC&$}IF}Y1Guz7WRaDVhGK`+l%H42u2)0qfCG&MnIVB z_aZSRy;%Wo*-?4IVq({-9V$ju+6jvW-C~Z^c>~kSPjFo` zXKe2jiarG~X_^p|4opk0A~eoINPKqTmm-vO5iTQhYV{SOJt_Z?MDW(eYfYj(_JJpi zAaqfwNqzCFt=TsU^e>1fv;o*y2VQ*DorUv0H^Ofj!d+ZVqXqnFF|FY32Sq!G5tks0 zaTCNoH)c`RVeRvKL2O2n^3c)7z=Iml|7KuD{tFQF< zV`|q1!sNrBC!}$xHAvk?YtS}u<(L2xzr;dsjDyorqlzZ~%+K@rT8T&~(tJUMuT$t) z30~ObsQQ9;4;y#BIgVyZL%5OjE9q|M`-QKUrwpcKh1d>$pM3{@@cG>ZIt@Mv(Q@m( zuB>qKABnV(coI-Bvggo7r{-h}8P7N0{s`g}EjS7_s#RFNe0r~|Hk^D7Ow0ib2NTa3 zrW$4ljVv@@MT3co#}i2lWy%|NyKv#;T}fafF=3)11EaEDiI8zevcfa1@{gdxo8ZMS z+@j=hgSj;9b+KZsek6f^LG_2G6Tb~9notPyx zN%5wMq%QU2+3PsQ1wJ68=ECi_BIUcRQHVjcx;oSWn6mW4o;s-bvz5bqA$ zFzRfaQr|%*m+gOHn7*j%wFX3>hol3-vr$VpnkyNu}0+~Sa!qM?-rzLpj{Zwm?}5+`7V8v>umv?A!c_43~*JjyRwb8o-?{e23QKFjos-8XX;t=GMF-=P4#4 z(sj&Z{Fph)I-h3P-=+b~mKj8TzyQ@C$yLEn#Jk-R});8?0$5IS`kbAoR`WGC{05i}YEBbsO zNHh|dgjy=F|F$ikQdd_WsrHs}bh-O;1c&>?p)E?N0{r}gso1(sCnY7JVhMJhE(r;V zb4XXh6}wJgFnoM`tD1?RkoYedS*2Q2zvpELuee>}WQGwWB52?+v#W&p3-uZ2fzT-O z(eS!oQU-6hvcoqP13I3Y5BHmM#|!B}OO_xm;k5to4Ls3F2|(QO|DgmB%1w^9Me|)yy=;GoAgIB(h_N`F#J+dG3p==uJJ(ZP}$r(6ea0ADk zV+mf4S?2wsc5|hQ6YH!%EMA8psv5MM7asEX=3a&0|BEs5;nU=pjW?;OsVN#ND|5QX z!6WvQG`kwy&Mqj^uzNT9GGF!E7h{F(oX6f*voAcLQ-SjvY#G=QY|yyy)-of+d^Hj7 zf4pAnhgp#pJt9J0H$n0rm0Wa7l83g2lNY-Bq;XpC!7NK&s7nB6DHAZ40{?t$pah#` z;LrA#39?6V?r2=vW=&oE`Dck$zt#RB6OX>g0JFQRHsw39im`a`q^#iFsZmS18uM)v z6K3inX~zo&u*0?7>6z)DXm(-(O4&-`t*mMm$Kh|LHq8~7=!I{m=ViFm0z2fyy3RW8 zlFkdSC^NFA+#v*gs0}q=bW<^QW@P zVZidI_GXw?>`q{8rRUB6?)woqM=6-Y66&fQvz?*m-5|=@^c>Yzy zruMwIw|5^_@)+09f3#+2)}D`vzr!L`F!UcPa$*<#BsB8R3dxSKhKM)!>56avhiW_{ z;L?$yA+NPxEvYII%F4>X-CZ%FQOW+8DMm6~5z`35RQ;?ND3OUkum3-vI4qbbXFnW> zkrta@Qp5jziFE{1E*%EKf3;eT*hyA8GUwez{_ERJZ41&zL^>60>6Y?@S?LbMuSlhe zAhz0Jp`hYg&C%$nz7WQ7km1VX^{SY1F|%;U0Z8>I@3^<~`W@X#7-*FVFkoj^<3>hY z^+o5~G&1YOw8kn55>6pqZJtjFz zmp|J$Av_cr2msdus6GH=jyeV0`0e>~A7_e-#g|Vo0`M&YBcVc<>V~JB+n1Q5VL6tk zTOl%wx-J#QxYnqeF6n5B#k#uFRg=e7iB(mCj!-{STQGL(Gbs8xfgvz&3K#qF zJuxtNHYV`t6a)f+lE`rrx3k{M`Kffbt~<}_;NBU2pYS5iL@SZkJudf;`N3| z?JCdybp^7WxB?G&Zk1cbq8a1W5^8l=WD%Oshv?K5{{pwWHl z2Bt;8o&M8OcPIw9{_qPxK@r?zVqHKlG@59%xaSmG_w|5nC)y(qc)}R#>m&Q(>+9<$ z?-FcyP8`n;I1rbUv7UTc#6gt}0+;0{n8Z&5;HJ7RQXC@rxqx*QxkZ1jOEa zO<)wUfFi`l07kKQ%qR%@l%h21qgmmtbCm#b^jd>OnE}MHH+hUWh>A+8p-99$dHKdqPFRQVE>VD5eKh7G2lOwv>$sXbJTj>!1{dgA` zy(IlRI4Jyj4LgTwpa@x! z`VxuVb@1GOGx0*}TzUa#yu!C33VR6^o5O$2Z(1s-zPCLz1uP_xdYG~}qAz%Uikor~ zB9?^ltOAd$#`D683LC>m47oyoU2Na2eBVe%_;l|g zt=!z-#1YY7&=*M@*_Si-^h|6VD#_>n!VWCLXT?KZKtrCAo}H~OoLtaet1xN!?$QB z@WV0zj~3;lK^y#ZBDx|tZ$Ok%VZ*bkWqmOeAEjRls@Z<9X{gXH|T#XwXd}fQ0Zy<0vvK%tyR^Chnxo_4IV;@GBRh~x(k^`Sx3_uCNldsVY%6i-4IF1{gxklja zUnv89*1!p8GbWSq;Af+ts^{}kFA@3D#jggsq%=$${cmUMV2XV?u^alhaC%#P zeDFowa< z&o^LFWE{;8VnzeP?X10`Zdo3DphzNpME5-KN|ED@h(K|48k~-VU5zgvD66&j>(4pq z{CMYYjXjK=dG}DLEA)+T|9J=_h*t`&Fn0$zbJyj|zi$-`WsM{x4rEXu1TTOe{1K}$ zQS?kSHK#-<8BiwI_-n`3<;?%<*m(&R#eYd?GH9lxpeREYo?U#v zmA^Ch4Md&WXeMw3@Uh2N-|;r!<@H3oWMpJy4h#D4HUgvg`jy5sDnBo;*gyaP)O!TY zv5*4A=du7_A3z+SPCxcmUMF}fL6wkq7dVj!aVOv7KO~ZrP@hWx8(`?l@8Ox5>w6n1 zAi#oe`fz|!CW3xwYe7Q6abprr{0h#yy3RIyRB~@iidlL|{qdD!K}FVYTyl5vxAbTX z2dts2??e@FXjH&Mi#lD)cp9)WZka;hZjPgkhh1^xAjwCmh$#0*WyEwPs~VU#@&VQb z)6*qJwCBT#xs6I*_t5`gvAWNt*Q>Um=50?6J|WTtZ|D~|8K4N)_DEeN?MHtF3!sD# zdfzsm&(6LYKK z?-x%0&%we3$(%?%HnDJsk(Z@1QzretI95)=H^H=W*YeUG<#>vu@w)O(c1}b9smj8QI8Wvp9)+$e(R`D>U90M9A*^p)kOs5bQE=4eqXk`&!|Bczo-VhBw(0N%8N@;xA%7<{63@fJND6d z;1vM}0d|pH_8bS7F!6L5))wkHFq?4y>yOPRGUd=j5DU!B0ZajRQX-%wInSw?m(BQ$ z`W#e6qzf#Y04i&rwChTkyS~j|%5W*;WFoK-X#%o{M)#8ItEc7^^NcL3o&&;CpADQ5 zI3xVobL?F<#nXjYTb_ECef@e0Sq!l4M;RF3B@{>oiOSn~-$uJ0NpxiCUrgJ=NRGY2 zmIFF-wKz>*Yn3#JpNOdRj3W51T+Ba`n20Fss`)9R+nne1iHJJR|35y=L5BzdKB?~nIE<|Swq3ec`o zwJNY9-pF^dTuNJ^5q1Z=Be|p@WQf(y3i*POUA(TC`BYBW@GcS2RRxpgE+}hFtb0&z zWYy7X1)E%Rc4YBwQF(Lcd2mGXGB(DC!Uy{!5!K^Id)AD5y3vQeM}6r>)ugBh6Yn~Q z)gS$PGl*AQknO%a)0$l)jtQP3h5NqNPDkDcv<157qKGG#xmKr6+lfle&w=xWHTxB; zdoK=R?MGlo>OViO)UMM(KY46TTp!Yw^@^19o=P=sf~;0<4EL8MZ_x3+&`n^xeFXjb z;!yDd*|q8puJ-v*Sym#VG#W_7IHF=%c5^cL6MnH)_4J3Mqz_)J3H9mTM?JIGWdl)= zL)wBj$z*E!nl+p9u~5*B`B zC?$z)!aCKL{0c~hXJg@}hie%(LhH~!9#G+mypNJ+Gra2}4;>ZOPKO-Lj85jYWjdIt zF%W&E{B*`No=UR{^3-)}OpmRL7@Q`0sZ5Rf|86*{%uS(Da#u)j zZIZlHhmq*}sXK~WI@-q7=R=L13MTvwT~84u-{vqkE|=B$Ks%gGMl^noSV>~1&!j*| z?}Z~WpG;6t0RKlqVwklo+79lVH9nmbWL&-btS;}0V~!xvOTL)>(s3s`<>hYrx{=kD z$q>ZgjM0kBT!z_Kvf$uxU1K65SfunygKcug=m$QY!AZ%n>izS!j7>{d;+_bv>zMcv zmcXL;XUf0deB?u$XY(XspWqvGDE)7<_utkGN08Mu`y7lnTzKNap0ttxFLxp$5?1>Z zi7A)UYh*R+rbKX!Jl*eWN-#tXdp8m;OmMAaHPQc_SCZoriZOn;z4DCuv>@Y4=D<@# zt?bmOSv@BY?{$Clk&lbK?V}n+21(L0M3&r==4EYEGg^6(4PkXeMCmPLIQ(Xb&;ifl zb>lfkzpA4@`WrFmJ)F^S+5G0|c)MBpQ-u9q1Oa$&k|#a|X1UKl>uoP!-s4pk8Y$!R zktv`azClhj&UW{kx$_bmrw=Dn6!GJjab+_iqFJ8Z1i)^OPyIz`bA+TL);Z`O^uBEY}h+4#q#b-bqyKzV5jI zy~%z&5r4DvCCe?_D)X2^k58`QueY!fzG(EqwaOp$%X0N@Gh69`a|NdLo5Ldu$qPH4 zGpXvpthX#D27!5RkydyrDyvfob5?7+4tJ-5<+c{)x}DakYidk9B2&4^OcUqyQsps= zqwj{!%BJX64qlU0Nu8y}AQ0cR*Vg94Q&Iwxh3dB>}o+S(ebV3~THOv9Ckl0GJKRyym$!?wpwM>YrL zU4CWkWbCP@iK{KRpWmA6Z(rNP_)m#?G+W2^cKLsTio7Hnh?rNG5eQf$DKIcl&hv-9 zNsg!Nd#}xvi@x`4Z3DgP@DFb%Z$}3o7>6m;CCmjYFK+!DBaPnu=H!f;+kVHrU82qx z&;FyH;6L{gto0|#eWPgFLbe5IlVbZLMu@B^5DD&f&8*gbH~lwTMk{W zr?|5+)|!49>vgrZ`@Zp9XkUN-v|f?1ke5P|qN@QZLn*cP9W8c9!%b*)Q?S%U zLHf&9&9%*6pG51!WKhk^d)vvz0~;kdI=vla<+uN#Y+FVsidL}R|_a~AyA4ywRh+ggR7 zlT9UDWk@QwO-;2dI+N1U7CdV5W>3y#&9H>%-a!j>z=~vdFR@jXA&&F3D|`(iMmV0B zebKq67hccbFSNN?)|nMqKlm%wB}i0qxP(h_745z&80EF6ZQc_qCMT!Wq+A^dU%!c_ zitP;E+NqP}*Bn03PTte9ub}^J*Wev&7IT&L@v~p-=Q@zr+3S0Xl!i6wO~vZgF0A@B ztgN`>`G($Lu*2+Gul;speb>Hy4DAe>YEO&YHT~#67B1c5`?1KhG6qM~`999Xw^k> zV8=)Z2st_~KHjt_?gyXyVYMb@cZuhl{od<83?5&P?;ed7+?HQ8**rx)c|+kMkNve0C_vC*zbTnKErF}*rB*siem%gqi? zoyL_LKwbLNG>CUr;%>y=q|@D;I}d*Wx_hu0Yy*A$H)tj3+nFSdEw{YImSsf$^STX&`WaHa42>vwZDeDAHd6mNE# zTs1z&L3Ii}a3&g!`?Q_=?o20^bl%q1c4G@!IT${iWbA3xQ)*N=#T=fTUiHDsTZpH< zcr1z7Se$H}v-h%oE6{wkJ8*P7??}zaVAdF!t)4fV%$P>{u?z_0t(~ zshqxA&{%Tp3@+vSUNd3#Eqqygk)=xF21)l9sy0ROvDxVRAX0xO<&@C#fd-mM;^(6R)e|p0q&b zDKPrgdQ2&j?gD8cRuTQ4fSex^=3|P zb7!p6#+vKjmJb!di0Rcn9bWJu)i-kyvp0tVH`T*;ZW)f>n_xTgTuDQ!70MKY?0!&= z8Hcq5I<6?!M5Fnge7A+sCui7K*YrZ8jZ7lN#KmoV%>g6tbS0b zX~55oO$EUl%;4uRQq($KCMNVjCqeee0Imu z5KLK-igbGmHxEY*A)#o4%;@*|i<5hhbanRi`rY?B(RN#==+FiutQm6esPE-h8A z)j;QLr&y2PTGjOQlOjp3`H#!+;kgxN!-zAfhhOit?UoAF67-s$D33qDw$=2O;YEkN zqJ8NVMyG?o4ZP44DIHjUIv=(%cYAD;Fmg>e2Nvy9O`US+=G}BpS%iU>A#>KUvgD9M zL2rwjOTy1Dr#2td47o@pNxOV`v0GJJYpx_#gXrD!u1)RI-sQC<*c@9%F-vP3PhIr( zue@%$xb#Uh*7V3Tte4~g8&?E5AlkAtdh*rGYP3G-ByxStZwe|y3W1yYZ~qcQ$5vHU zy<$Fsj127g;6r59qgJO+*VXu$iNrx5ke(9Pixn>unRIn^tFtg*7EWqysfJrU_qkK- zgSBj)tOC5yBWBy#T*A_SRk&(g+QKUv7X7)e_vf(`Ds^Ucxicx}@@*3{qE-9)`eIC0 zCa0!qhD0P(-5f|~ULo++Q(BB(zMsE$F})f5WpugI{bxgbC@!-kbNRaR_T2&OiIq0|vPsi*=QRIWcPoe1 zS044AJ_p9A)QeFUyJFEeVsv_5j`%I4nev(w* zm=vXs*zh!Pi|YFZ5JdF_&f5CZ9_P`>K;02~`lE;2e`u|k$VwTQ+dDWstGjPwlhHqW zf`N|IAiQ>5RDe?w49?Dzj%S+^-yR?;uBZ91MWZ7EWDPso>Xe)0X+$zONt z*81A+FO^s3^a;o_9}HX}Z4Al%Wcd z`1IidxSx|Jwnp}P)3%B08MGiuOv zkLiJqFVe>T#t*T$EnnHE`k5Z!(n=f#msUcSN1nl@wF~xb#8Zxw@6KXRY}_2%k!Dw% z*eI?}C4S35%os3>nB^MWmMUMlV9(Xu;V2bym!G}n)?Ky~BxB6ijLFeCPWVxGUk4u_ zdH++tTLhov_ug7lw`VfQVfnT4{*K0KVZf7#j7gSO&Wjx@St{Z$WKK5ZkvVwP3Kdb17CidGt&#ji`sdfw-;%;VvkUL{Pfa?)^EM{ zas%`XtfRkTCwV%bHZaLAR!*&EU=8f;?75z<_*n%X4M@8+j z8tDb~=l&xI5w*HgRcy4~w~ zns)@U&fDv36BZUWzL#=FV#@lMB>P7p?1_P<|*HOf`FM+`vC zGNtA{s3`$8XrEpbJ*+A>LZX4j^+8-H?huCaVsmHwiz=o!Jt+G7Rk=@<8fcDUC^gZX z7g>5hjmUO4ivC$u?j!968u4qNfNeby3~+EPichyoB&phqX!7;FdbF7;)_h~KPT6Iw za}`uEr-3RLk(P7hSC4R@D$H+$r~0Rc-&zX2{bT?c37yJd8RB`(@WlnyG5espPY*TQ zd1|$=c1tw5n}aN^aaZ0Z%{Tsl#PZu|LYG@~{K>%4^}t{91OB$Au}3Fhw&Anwe(N2V zNi9fbCSx3FGMrr+FuRJ%N@uN4Dyvx*CH*dy>12){j)+B=sI~_m$+~xzZ}78(eDcuX zRtmF=13d-yrwzaUdH*Ws#Z{rfF8qr+2^kp~#sfH=(OhtSuD*viNzxA~KfJ4Zp1FHvc*oX8jpidxczC{sg^^-^(RP zP-g1x?(T7GM%Hf))z@Q|jUO0mEL3DU7~pJ`C|zV8`*@&Gt@`)C%Cu*VEqzvL2fs;x z@?$s>0?&6@RJ8KW<-x8pCCEt;;JDOS-;LRk8M@idNbW)7_=r&4GZKk3e&Ey0jAKrB z>17>SiRIA@1Xr>&Op-V&%C?7d{~IQk<^6H2%#uPL9v;Q!HQ8+ko@Hfafot*Evu741 zNK+h>{p33+N&dAnzSE&>%D?A_e^yE1%s+8&NpULe1nB=h?`K6tMUOeXSI!uN?1i#j zGdO2QYhWmjd~X1r>4KJ3?rS6J)$0n%rqLV{aWsbODLC#_HRt_a!3QI(j%UH)40&+) zLgc&Uv}U#TJ15@ng1c46syszj<-($Km@kflFhntE`>GYbG}w^QRp`hbe1 zpwYLJK@~SY7ctyux48lXK8{TCuCjPJ>a)fP;^{q(0eL$i#v#qq%fj9KvvHF=U0(`T zc%g-&V(xzS^eRgy|69XR~U-)6DWP!`sK;9%4zT;px?kaxM zPv)5@NABf?3ralbN5<;!=LaXWylc20zq?l+MeBY3!K{LUur|{KaCn(Bxlu0kJ`_A7Kj#Wbkkw3L(!u){Kb zHx9`~&JX#YHlumusb`@`N1x+An>;y+9beS^KXjv*mxx@PDdcg10e<*0m&pPvPOQqV(t zZAx+P!-3!n>L6GEQRI}Ex#vL;-4CQ3<(K;>w7f{9W|q8O>QOa1Yq@u8nqKQok!0am zeCwy5AW9vSbWnJKtfiK7?Fy7LVYe6smPjr|R zyh0YX*xjs@ZP=V!LRR!W<0BpwYcDq-KJF75+}o zP?e>`uH>{afOyN9Q`akwWJjfMU>h4e>o&Ahm-`HnNaWP#a;F)NsN26)1g8g2KR4*E)!Gap~r#`tkx zDB9y|XF8o?=O_L}vyjNNX%{S**1O6}Oi|nu)t^`aJYK|=(5lobO&HRAN@VIv4rxP% zyNv$&^#FB4UGz-X2CaiGw0{p9J$n$-7J)i)8dd@AF}^u81BA?uCpJR*~7Bf>leNb<6Qx z5>o=x1QdVL95i0UJj5e%pk>8GH6KsxOHPCDO^LzAS^1r~?Sy12L&*ATEh-Ysyy!!- zM(k&#)_W`%X1T~h1cOYvp`(5DORd-`m8YkyY3+nqT^P&L1B7Th&7O`Q?aP8Zas0tr zEBN`^(c)IsTJacm`-9_&0_{Pk&b?=9F~$#FDod9ag6P+T4IDK-nLs1C9#AVd$AvLQ zyzpS{JW+VT>dd%|718aS+S6ADQ|@0cf^3Eqv6i2!p--}0R&u{j7e1RYnVQ3#_aoZP zt~(*>w2M`^SSC+9O*cm5@v+m}kNYKVSsJDeY>pFV^gK8#q9#%9_qD^)vTQ@5qodUy z8IpRgeb?*r_B%&n%`N7lguwo1^2_5@f(`cgi63laPJvJN8b}=r44TQu?2hc+v*fs)>bS?by5YYue*xp&oLI?RG6*6!NV4sGUBZXnbGDl>d{weW7~V z<)Khv55G2cW%MdwyX>OsElm9RMPNdKpuTaWJpH=py9d1lpBs7ha23z#8C_$%hQ}2`J7HZYv!^p-wJ@e&$ z&^=>d3AU$GAyWBG0yaxuAo!I~zQQ}%CTgwZ*9nw?_=b>nFBg3I>t3vY9+&)s7uprw z)9y9qnP+*A-@gq#msT_oYM2Uy1@DO##wYSZ=U057yP%&*zzEV;3Rs1H@ZdEbpOJm{ z7JtEREl>_BD@|%fl@b~*xo(1mFp%6B+%U$?(;Ff3z}jMZLc5m}9-N|U^Oqs-m9O46 zeQ>@8$N-mbN|GqLcc^1Un^GF*FT+|o8;sxP%Jlc|xt;Q}5?VYpzzlIM<5-?C1-sA^cZ+a1L!su? zs|<--dtZi!+m`o7r?;>al6XEvM^e#eADCTTvR6;lYM3OXCI}mOy13}hM*&8(8tnh8 zo=ESvu)d4TH=VfgW2`CiBE!e9vSx^M-MRwAkJID^(%-S4m|1_MOFMoyEQ??%5y~Wk*Dwx~t0>Nh8>RmUT$ORX_M?Nk)>fIyjD_sf$K5lyqColOhw@vG1^8>K zsuI6!l$4Zs%BJ+JQdcAepXAQxKV#0~{CwUc$ylSY-Cs`9XnAHPUzcz=3dt3POk4Z_ z55ykw`;5%*61jYNsNO#fXE>t=TPjQPt1oehO|4yDy<|Qkav+6Kzp z*oO~lCH}&G=B*hSSep3cnpBJ2XwgV9Kk`QSq&84hA54`4hv6AHgK=goH|Q&eC|*Rh7lkEuka zBGx~Wu86awCPmU^#c)-~6TX7l7N)+!P20Z5YJEkmVNs}r&@lOBH6W%+$&=sMlMP8T zUQt<5&BWLup7ZRJynOBQ(Lv*h)c#VU!tA|;#U6Z@T-_(`)YWpR;H^c(ms-!lG*Vd? z9hVKsxd_P$c7y1KSSJSkgXi|=oO~vHzCHV=^KvfAkl-~K{;@g#cq0odYpKHUDT@7T zR3q9_i%!j2msA?jv=lwL8KU<`lqEKw`J9#f$G*6zKgw&Zc}UBjX0!X+?bl|H!K|`B z&DMI6)_9le6$2tiC|WDHcz&y}3iu+Ai;zFd*;$4q6rPMOD$^?cW8_?7`=%}a?;B!` zXNg%=*R*@}kjuM3Xjoo3!guO zX?q$bFBgvty^6pSb96hZjvGY}J6Pt&+y8Gp| z@;t)Z+Z2!J71`G_=Pl|GN0v}`ev6v%+ETEuUvO({tA6bTr|cjQs9YS>Q!x@Jty7D}!id>@O7jBKAI?`_xnm{SFF$V^s!k6x zHBHjIqNq4B?*WKOI_x##_-ku?HCt{9d@e?(>@5g6^Xu+Np+jk2tSLDPa1W2TIyM|= zdcle5kt9~f_dCp>*s@-Cy6$g4$-hotg`PFO-QU^SIddRghSA|PQG~T^t==)An zlJwnt|BhV<5{-@~n27X@1%GNkvS7=Zs=*?8V+=q|~{&E3v@7)O1OBu`g_ z0Phq|Jmrl+a3wb`(DW-%aZdAIa-HtVvUkl)9AaH5tE|@OyIS+M!;Iek34#+UNjRsX z2DKrcfXFRMcgl;?6w#3m1t2nSQnv_};o&6I(^Cd1_O3>V#Dao-(X8z_kOyiJTxw5q zgRWFPhY9uSfR^GC%zy|jT0jo*s`UhEirDoTqiy#Gg9aeDfM~^bn%D7hj8>vu@sApZ zNM{aKR^r|kt9{!ciRCMgapB*Rh(~QiJ}|KHogiiX?m>~cn9m)d59wjS6;P4ne-)8A zZn_%qxzccq7mG=l90v2YE!zqa3(TMmF>4G8bcDC2@7PdwO7rl}nS z3<-yMh~NU+k&1$xloUenwE+JhN(y_#VqbCx;t|;6ePXyg`iuye6~E_8@D`k++f*TO z8LaWQ0wga+PDx2|>Mzc7J8R?M;P7t-_GkRoz?1y!y5x%T@~q;zZn=5IX~U13%UQ&z}J670(rfdmRXYa-3e^?wVoV%G-GQ!Ja96sS@Ix>HQMO|6hsBv z>or zq|}fga7?TcBocA%bt%U1Np*g~F(*`+feJ(-=OF1o=$~S?f&zU>sn3GxG7l#uUcjvH z5KaNz=W~B}SeV2aeGJV5G8r%fW5PbHU>J1y4FbN5P0K^dqfuFmc zG#NU5?r6r9mHfTtz;LQF?2YEP8fPt6sbWcR2SgE(y{7&pa#^0^7BoK5+B-s#a%MqE zRz?8|pa6i4A{Cf^&ljpPnB?{p&iP&F5uIem)!5Wzt0kT<^wNML5)_;BgJZvx%vmK8 zH8t04d@9;5^uuSE2RcZig~I$Rw0<-H;?tCu)ysfAYn0IuXDq7SFW#x3(0s0FF}&oI z09gbhtGE;-gHEZ1`;7>29s-rXQ*k6mE zTy4>Cd2u`nISvaB-DlcN>Ed*SF1IUwllkvQ`_5cBzQn=P&i1G8vDkBZXd|*~F^cW1 z`1=!uVhD!6@MvEPC@W!SWpz0JV(Gj|Hoh~hu(DYN2hrELaug~h2Ed_uD*AQ8R0drM zG486W!@#f@PN51SR?LpkeIzdgra1nj2mZ;Z-z9Ur%E$O_jan+2r(I;SiUY9ttOBP} z1J~gfxdmW1$vo{Y6IBwbNW4+LQ-Q(K$id=a5x}Ng-if=(X6Hp&# z{+HKzy0g4D?4v`r0mv&p2xvlm`{rF>#c%K!lN|8?IMLm^B_4U_T<^T()dOoN037J; z93eFcg|9BnskOUz@7^ihFY4aAIeKXk5fLsZlzyn84una-e>?+sA!-O%T&inO-k`Q`>A~X+2kNML%t2LBs$rV7N5@=E6(|9g>oh)lzjR zHje>9J@@(Zoh8lg)>eRDbjIzK zR5?$P?e&f2DWh%a;Rl&tOek;Gd5L#qY6o?5n84D;fv!p}EfrIJ2S5~pkSM&kFJX51 zp5KbuuJv9Qe4lweGJ}>q`r6*^u0l~%b$lD9wEi(-cArrxeEoAT?#|B6rsxWwcLL@o zzcvKtKT~5?XSbtZ&6uCdBf2`hZ>p>FyM+%>W+V%MD|2-GVcH)wNr@@^v75KzF#=D z-r*_*GK}9z)$k>-;2HIKLz_2RRp$c4NIlWQ3fRj6lnof6(Rn`V~T%K+Y2R8-z>~K$)bbts@a-@O?4BquKFrYY(yH&EUM${GQWx2v0is znFkQYKpT2(DbXHTQM1=pyslB%Fh6imF-ocC)ciuy_+s;j$Vm1WgJb)v1{q2jd^sQ# ziT@cs0;C3c^P83-%93|y+{fWHWxawID0w&In1SDkLqevv2{Vzfvu9wH;*ft)O7bEc zT;I1O3ucw$RConUDjxlds&Z|U-@F2hvifuQe@h+uO&$?%3rM%@GI6~FE^1JElVSs< zI>&eYX||siRLx1YsbNR}Nk!4f)MkrK zVeP(+=8Df*t$!(NJD{uzY871~AOBKTq{3_@@qY;@d1rY+x{o>xr2BwRvmd4*hZGX# zzJC4M($Zr1C@AQNWW0fS&w!wgy%Y!zNN`_#_y|~kDzPy&+2cHH^{pp6ojnH@&E zhc%@&K~_$M7Pvdam*&h;FMmrQ@~6ovPw^Wfi>?quNTQ*v@0u9_AZr@F<3O~E>v z_A^i4+#fqyo-{x2OvD-0%&mH9Ldv~2aE#3a2U5tnR)V>iI2nF|3&fBM$w^7H1?k?xctI-eOk_tecO zppb1kf_C@7vJ`tB|Zn7Vp;O*9}-;5g6jlVtn2hY$+0%=jG@W`9@* z^fG$N7G1r1735g1nfy_-I;C~BwO72Z?JuQ-EGv?TiZVWK1l`Yatawbby}jXv?smJ> zG;rE{T#(^Bhl|dZ-sihh+<-*^t2`tJKZ=38kxOF#$pqp4oe8qlp4{6DZL_G-uK|fN zPY|KF%imIo*(y`QWp1}JZ-A5!u_2IHW9hh}B?KU<+d)!CVZ(9CU7?!W1(H0hwyN(q z?h{3>C&mN=ivNt?62H~i``}M%$1#9B%W%M3iUNArm}3r*D7gN~ErJZ7jm=qF@fpN$ zga@*tdw7NyHa2%q)lG(i)fswQpBy{Q`0Rpo>)hKBwdH0Cu{?Pg7p}=E2(l<*_Q@(b zgJ=Y3WbvN_4S@F6aTt)r!SsIoCZfnt`cF~@0J`2JI>26;F9DWn+8a*XXQ>qAYC&)S zW}F5rHLj|9A^TdzeK`F5-U1RlSa!5Focf)%^0eyIEqegjo=>53(%ML6*h9LF!G=u@-bx zaF7cAV)k6!HQ*4r9o~IlpBT0(2+1-}oU#~IT7;0r!B~K0>88b|hHi6ka+dEa>0^!I zK|w*lSqDS#`*6Mk#Q>}|C($X)J|o67QTtyei2-7-=byX-ou~gJ@8CC)JgJa?x@tGr*B4j4sk>0N z_wp9wZ2N5Q@2wJXL^NQqq*R7(z))}fCBSaqDu|Pb9=Gp=r&Fjr;HRxuQTPo3k9fe2 z{_s;pmxQ_fmpVYc+$DAYrVMmYV7Xb3@L_3fsWttyj9#NFir5pBWPxK6NVVeA6rvhV z3XMxQLo+4=o(fpq0g}r#=2Bi4l*R2QmwJspIJS1|GfBc<-kDF=TTt+{Z@@hhIHoQj zQXuP~angWwCcl`su(VShyxS+!NKgy^DRwL@R_PtE&wM;dh3kHZ2yy@f*lO9{Qd(TR zOG9bmBE$7q2nAYu>?>OHj&XtR*rIj13(ua3b#){k#xZszf7lwi_*4qk-D}iiYD=*Y zxcc3+SSP$ZC^53NZ#xR~zu+bXp&qzQK|!tsD4~cp$v8XSPWT2W0UptI5|p5DA9>s0 z&PFB%#lRuJ5wm_Ep`{*2{9II=VGsO)131?ekcr5Hjny}Y?t)Xz2#ySRy}uqpY{@I; z)%%anq$oWmY8DjpQXGpJc#%KO{9PTfg|gPy{jxT&eB3r-Zm znR4&;BVE0iBdIAV=4NJP|2p;|l2}f5cI?8d!ztQXKQ^X^{?SV&1=sHS9M1ud<+N|! zy!ql-4qm_iiZ>Alv7B!wClRjKtN+KtxZ6BW`!QD#E|tGS)J{V>9K^xn_KNyBV^?@$sWPv&!RRp^xn} zid+g&|9WT+lb^l!hpOh&vG#_?Ighr;_XzP-1@J4SMk6@^={v=%cKdP5l~>i)n@DAF|$E061CIC+N8y->SHSMT#fx}-$KWxF8 zCAO&hV*$Q&>bNDQrqa@sdh_;Qo@bb}UDG>tj1WELb^1dx!mlCZPAl0$+Q zDm9>ZFeUf`n9-jwMV&rOxSY@9~DmmUDq>pmpgsG^S5Af4cQ5_8+ z9;AAx{O3ntpqS^ZowAv^c# zWYg=uWbcjC`ApWAgv|w-n6T(7{@T=*pLv*_7kf-#suQ;7VKr;x&3L*RKy-m`Jzo75m zxB0A%Y?p{A}lV%O6igr6l7TDRNb&Mecs>xO49J zPRrHJl*J>y4O@6W5B0rCe>KCa0W)yYS8po(htbg=CMakj2LSlSl$^71%&GW6S_HVq+sQ76PQ5o_D6I11h6RYD#n)Y@^D_o2!wVBQa9iR$> zbinx{xjDit`9q(*r=p5wh2x1+&S@K1ml%;9Rja%8n+(3=4-}HR6KgC=?jdALSP}&3 zs76_2w2imQ`oeBhuMp6A_5$tUzIK^N#1Bo~DaJ>XfqodQX?VQd7TXYrArc;`AE#LH zG-pl{)~>TZ@yxlV?~kyzwmy7+)N`X+Ww1rj)Fi4OE@r?&^;UT)92@?{QdTna`Hkwf x&&GA+YS$#xL&~si0hT`CX#U@atEjz`pT;U{;mmQ#;J30=H=w#|#VS^h{tFutXKDZd literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_155.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_155.txt new file mode 100644 index 00000000..c06da6ab --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_155.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,1,3,1] +[0,1,-1,1,0,2] [1,1,0,1,2,2] [2,1,1,1,2,2] [3,1,2,1,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_156.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_156.png new file mode 100644 index 0000000000000000000000000000000000000000..7807af49d83a8d10f57324eded8e4a073e20b68f GIT binary patch literal 16750 zcmcJXXH-+o+wLg}B2A@9M-Wsxgd&Iml_Jta6bVf!QUp<&^kzYdfEa0^gd!kai8K)q z5lDa#I)*A;I)q+xCg4;4>pkx&>#XxZKFppyGkY?7=DvRSwGF+gt3iL9<2V@^8NKFp z)mvm_&Fqq3-c!x}-?hKJQFra+rpl@dsY=j3 zp#@K@uy>J?38H%#pIBuujC~We{1UV9{d>z*KCHC$_)AInFGnGDHXA2|`)9Wk5d~4= z?wX&vvR-S$3>-91rt{~Ry%o!Ac2WDfbG^~uebql@V=QSUscc{Q#m9Te-ZS@bUaiDE z#kCX!H5r)-r))nMTx!!dYjQFb0ZF`D%KljA9`6Egwa;~BYF-{LZLTD)99GrI3)qOKXxROE-c_QSqv9P`GulH%WIlymgt`esUcU#Wh&|Tch#)Yd= zNjEk&Vr^W7espwnbY|;4%FAOwqgaHki@9-?GhU0yd%JBb&?q|s=3EUs$M&>G^@_Z( z(`NcwdO)Tgd-|~3*`2vw90PIs39)f!{NwkB(=}WCwjFcl?-rR44iDe8$Iq@ocjh1* zGpmV_A5)aPu1c8RyO$j;AEjp_F>>KFI2#`3>$78De;BRL|1eW7_g3VAk$e7KmjQ$m$I6NaNx@S7&G z^1j<;deajUHT%-PK0-B!%OM2i3m6SYHLG7n9Js-VG z_In=&Xcoq;O@$l3GT%3!zw1mtl<#+2$$uP&nP7^V-GeymOMKhiRpO?uuR81XE{yWS z3#oy{je05lO@{K(OFKoXoBw(T`#`m%FRBQ4_8yBYSN0*X6@!{^I zpAx#nI%{~(Zzb=^ig^)ne+NG9cI_H5`JsgLc&D;rm5|R;dr*y9d;?P$iEMI)+4j2(O%+ z+;?giBaf0@S%37rLE}_UPweS1g1XmInX%Zz6Olz139fdNWCT+|VTv#(wQ@9wA*U9!u%H`}RnC;|0wl9FJ`o@-hBL)mlh@#@Pv+>E@B zUlaQmtM__?IQNu^TT?U8^GWagQ~WmYD|$#;_`F{`6B8rFN}04;>-&T=iHV8(pPwq~ zrj2DRMVwq)zMy`w-BGT7Bhqe(mzz73a}<*1r3TZe{$k_AhwDzgDkSn#d55E$J(?-E zdaXcNf1~z!DCKgdL_py)Wpb6LKe?hGfF-nQIB!dX*kYrU z(J&|)DeFSEbwr`j+GmyzCw@x-UUl6WH?z0~=J&+C%S){(#!r@N$+>Z{=cS*Nlu1Jq zX%vx}l)O@%c9V1cs|AMPk*Fq?3yl6a>~fUSC5?KW9uXXBd<^SC6Q3{t0V=}BcAAGr zThb_Of%LN3MNj|orv9bI4i&u6qRdsPSl*Jp{ zSErA`*DRGpx<8I*vo%HdRPCQb?q-GX#GtoiOwPH8KH$IwQ`g)LwproB72aHqI>)r0 zZ(Vm>sjBVq9Ij`3Xk(urd1?&}lZBj7ihWCc>sOAqi&dX)0JcE&vWp?<)k{tt<&{wR zhI&gcQtX_v^|79`(Y*R*bc5%*bHoakzlmD`ZX?8p+s)Z*q!sWn%(ZyQ$>sqj6=Fa6 zTq*Vz^{sN}I zq9!QM9HHfA6oXci>Ay;sNOtYowJ_JS_P_LZTr~V2jz2>b1S(a2CrfaQ*LK~f$H614 zPE=>7F1867ShG#x1aNfhcJQ@gPgW-Q8r3)31iHhY%GIh(r^jGj6e=`(XV7-*PbrE* z$R{k!_LDTMr~}&kaLLChGGIJ`Q4)Xmy*H~od@XktH9%D}HMyygl0XK(d=8H~jmW>N zk9=@(^Rj%SGNFY$e(vZgrSNQw_nlQ(%JX4Y*IfZzPY{MmYU_1vHgVI9_-e<)VRqGZ zX{5IHM=eJGNw*J+@FXgealfjnsxgXpxF#UL(lUL}$wM(24p;J8KUg$o_lr+52Z&n= zOAyy4P>WDniT6K!vNv`+r-B-Uqw~g5f(-j(V`DZb1tv>-d(C{;7)mxU9LJOKjxxoz zm;F}1SI&fvVLJtFl%wo;J-scYC5$D0bXb6+%6hm+r~2+r_kPp{#^Pl+&wi&xB-#Qy zU}vtUs>_HH(?y}`}gndZN&&*3-X|gGtp+G6)kqZ_|q{QN8X_K zdV}-Qo0Xz;P7$8#Jk>s)Gw&C9I+pX#aSI^1l0!0|-21xsy~gRy1+Zd#Pgv#j&zBk( zcvnGXW!1)9Jv`*oJ~e&ISTW=n0mDN5V6_l&V-Sh8dnCg_*mBG|!`-I6|27qzJt&s@ z#hQ*-Wxs7+^A~zEdI3-xIYYO)?0}tj=KF+MiI;WWX|yLT+ts~f2ehGyU>Vwp4p#e_ zKs%EX6EmDydM~=aTbP@>`R3)zqXFYSY*B+hET0A4F-AoOxRX{gmJ+UGt<;p;>TmA9 z^Ps#Uj5Extdylu-_7R)*`v3NPYvP=!)w3-b-4t;cA3!JsDkV}2C8F)}E!H0H6?N}R zFI<4pDBtT+TqSHgtO;{ivYF2qT^0xc+peeSZ}Q2hsp*U77X&dGx4BdV2WFTf?)% zp&I3z_^n}!zGLqglKE_FWcOM#LKTBFuGzIE6=N98UWUV2 zLeqbJzwQ;|h41U@rC&b@aa(Zn@Z5Ti&Nx%QM&V*t%0O`BiFf4ZZRF^Q>#e5yd}pTUIPa$dO~vpTI){OQw4DB9S>#Nod=*sA%p z-cM39^8By|#~Y~&4&~QRM2gYh?xMQ`?0P+# z9UR^foLao_&jH7K*<1CRJVE4|@EB@%Q9@L-#q{gBF-Cu9`CwfIpDJ1!%$LbKDv+wN z@p0?2{yV-EEN^V!T6EF1RQDcTC)b#!&@ME2-5UXTf_d(_pKeR@O{g=ZeVlwKR) z=62R81ovW+Wy0i+WNHFkIC0l&9Di04cIU4njsCwm^TuQ@tyc9LkIF|kG&FQI+Gck~ zFY1I}k{tahEJ;AA>$c4`ZM=J93;AY!=fWPj)Lzwo?JMfhJnA950WAacV(J+F)G&W4 zo&~AHvkObBlTlnc35l?2t=1WSSn~T~-jA}StBB;&;KgUZU!42f^LQNJ+Gz!O3#{&@ zW5x5~SElzpJ&iQ1C2l~7;7Cj)7s?BR!ezPe<0!6`H2bB*C@%SZ5Q@uU&_@W4RPm0d z2oS0Vj5BN7NM8b{hrpCiY=)FDWb^VK?zAWcsKLtbdCIdPb@9r6QtqPPqQpQ1*E%d* zh|_aDSxL_B(q8v88ithmz{r4aV@uFWq5OEF79L1ng|LgU>JjcmM@OtwJ-$LwSI5h_ zHMuSMnydGxq;_$dgfv`<`u>?`V#V|{jKT}g^Z8$KvU$z&qwB7{ju;(--x+^mB_fFl zu10GUMC+~|vGwI71cdGI<)MQb>W44O?=Pi(((l={W`Q}GHdRhN*OXgTvw3UF%gP@w z(0>yKwY%&xaP8|{>+Gqz=MCziph4>z=THilZ)Z8T`5_oo;LBtCZ)`!=?bP$?kr3GI zimkn8+t2eJzQ(UbgS`XO($37TC`Q{_fnO=7MG1d#(^v1xF!?b!T6+=)A&twF;J7i* z{VbH_VMNOhaIWbWL@T@wfRbiGEk&%l%w*})RZz4kiae7mTfDZ669zr^<4^_iPZf$!OzN}%_PE||bC?Nrd}iF9$`V{rtobYlS%cA_IHO`Q;=Y)j%=AQzgVCtEB44j6iWH~v( z60<{7PM`hh74*fh=m#!|`B1DhmGAoIW;x!m^@WkK z@hJ!O7`4#n_g>iyj`4c2o?eH=Y0FJ$2L4;;NpNhb&Av1W4)^cWAK59vfW5enxD2g` z`B+dFpeU+_x;QkR0pnBFC^SXVE2S0o&Ti3;x3@RJ&*`aaX!Q2>+B1iayoa8?h0Klf zS>o(89R(o)ljJn2HQuoaPNuy6b(n#t(ktN3c>+n=6|Mql$LZa%ER^gK{@?*P2l=tK&Le(ya>yMWa zuAW=7B>%D0RIKa3`XhpW*j7W`Uru%{r-ti7L>@Ef&*SOS^JpObl*7J;H(s%{s9p-o z4ntI-$TgQIAUgX9`?2}{vcZlPIUG&=GK^YVZqL4FOv*_ua%Dbli$8n}s@T3>c7*Og z{8=?L*|DBg)^PIno-QbZ9^afh5P+H?2`6A&QEfD-U-fyey9J+*eBk0>Ze~V*ul@NX zd3#bAIkLp2*jX>AX?aDhKp^pUsMK)YUao3#smzYT;$pIS;pGb7Qy%qvYnsV!Gv2d3 z%CyM6T1KakAQ@$4y+&rtAU7L~>-AYtY}bJ#9Dt>TO)mX2iKg0=H@C;MfyRIcK zdeZgtx|WWRgW-xuwc(C&(Nk~gIc#5IiRnOv>#HV&@A}R#v2vKWM|>v{(junFflOdO z5Qksfay+eh(_oT{ipENOG8&fZE1ZwNj`$q&5>XH>Ia4NPr!kJQva&k*{Kv?*iD#=O z{Z^l{he&$SHyXL$KD~y09>uUL7L@TF$ip>kXI|2s_PGml9kXlRn|2Q#JjiUfJ8P#K zvb!{LE$m}emDuBaO%0I)SvX>M43VawQ0>ko36sF0%=fp4$LMC89qvtrePiIi_^;*Ecl2fw@fq|oC?iFHSZP$Fu{Tge95LzuXb;J zDXjUZQF?^@<00lLyB`DsAwwg|?(}(cW?GFbrpwM+#?>_=jAxx~pAQxGY9%Dmg63Im zwR_-66B^3f%9i22d49_p1^e>b-*Y2hMO6k2&GY7(=g?@Zn^&INQ`%WTO(CId!QDIQ z=bT3KT3))`MzKL+cR86!x{%pfF%s>jCdvhS&6K9;7A@;jNcqTH^;b>LIm1f!{ zdfvlp>iX|DuNZuPSf9%limt!RVcK7kMjvRS!kU)(ToV-nk^@wnSRc4tETA?xYW zYSJ?4!LMG?QUy)krZPl%aY^F8iMfb4vBXB_d}2a`E-x>CW39`$ezTe2dD5;`XF?WI zOI}}WaQbOprAP0c&jvaBjGly>8j3CVzDUM-Q2_%hyH+vq_nZu=Vl}8JQv5zGZAIah z1$#TFX^8Up^h_r*J@0N2IPfW@yO6omSPUJ)M(Cnd@g%OC(p4XVd7_Uxcjx2C*t>57 z$=cGXu;eS9El0p_)+DQgM@f?|Z+v-H@UBQHRvHsHsZICp@b1AIzkCdZ*u@{Nw+jEX z+}gIf0H?ESZTe+rL*W6>G#D&@rOV#Q=Mx)dQt<(%!s1xwTW{2KmJ;DA$%jbz)@QvJ z9vZFu&cW&i8ucSF_hP;);;37oq>RjMT8mpK54qUiIxHF|Wu~$Sh^=qE){n4a5!WVe zcBx@0472acme?z{nZ7yhU~|-)sGjAXi>eQrM%LwUo&0t8a8R&5K>usir zG3_l}tYKS~F^!YcFB3v!V3Xhq$Mv@S=MU{Bqx|Z1%VTWUre9XjB#ILC$3J=HnhT}k z=_K(jQ#Td(uhJ--c+? zSz3O&$4Zu1Q?nINT3>%P!_LCOLf!J|)AjAO*%l3`3@2Z{my=VZQg5mFow@jYP6n;l z8kH=2Uw7BF`bRCnVwfr@ENp#|`l)Mr+*oYzSes+;b!>Qec#>@MPboYp@TKO8JslyN z529`Jec4j?(R3T!&KwH&ozmXle}AaTr!=#k0&4?WdR@|dba=Z5`NYF$G})+5aSyM@ zc%Ph2)`utgvpSDO`{Vu&%OD#_`3G1-m5IALd$@aEQT0~LBWJ1d5BQatHE&P8g8Y0L z4*I|AQ3)mfXue1ENwVAZ5D7(zKyXmCW6%NW$ggkb(wpi=)cpI88qUiB`ypb~B- zd9<|I3TT{MsVySxop%B;Q0cK*(ZqAL1wRpvS&yH7B;d>Se|RnB1yIJ|K-e<>UA~zL zy}Ei;NXTS2G~5}Qw?-Km6-8Zo_BFrIb7lDC_0fiai!Lxe945Np8-H`@bwBTs!OGcc z`lB2H1kB?WT83uy#{BqoWcS13gp}My>!mot*>C9OqD4x698L72+N&?bd`&{#M2g$f z(p))@%kKj^^(@iG{X5j5#kwxz_e^&lVd?yv-z0sw^4F| zG#5Q?wf&`=_Ktxa574|H-vt5=hr6Bv0T00P`?X1_?$)`sTcu|z8S)AhV#+TfCf)Tb z@?P^xDKT@-s=uNmQpTP(pz>n<-Rdf26e1ZFpaUVi`f{!<#n*5bQ&?xyk)&U26cm|c=+ zjFrjS{Z18F?JE(uf-xJ+RIS#ol`(2?S-H$KHzZa*Y>vSn5_h4Qn}~Mh;_`j^QM)w6 z1TPJ%gE!n*#SdhlM}NtC34F*0n(Um_pe;4pn)XW!3%o>Htc)2cCLQKT@4r&k7akQb z4m(;2y>wp4WT2oWF~42{%DjqymVs{iRVJH|g9huR`_pd}rA2XOd5i_TWWT$30BYjP zoWQ&LG&_6}#O$tyj$4jvI;Emz()PtY+=g%JY_-_cf~l2X(QLs0luBY0ftonO#p(+V z6FH*Vr6k(LT|mn(na; zo#YZNx8y8}M~AhvwDgcrF|&`2Efz<^peEML7_Zp&I9qaLw8TwzFdApN9mfYca$ptd z`DndvTVZoriLwR(d=9^wJ=N$3jn-VeVh%KM`*zh43NQZy!u6p?snLE?g#ezl`TKjE zVWai*yX@|V-Lq>rUHjb;-u=bvWw-RillAl`+8_53eL7@e-Weq&vfBn3?Qd`>7q`T8 z8wNDA@^cq6!rpgbVIf!Pjzo}3N>y*~aoGulD-fn1)N@ZOg%QzH1E*K;Vez7CAglK5 z=NUb{;jQP&oA<1#Yt~GN0v!dn-&Uef*V4{s-Hv8+@*S-7h~jW`aa7I{l%1VgkE_=7zu8VrPTpuic{ne{ z#oHzv!E&K<*}YmL$dLshn6Pl2AISab_fPUT<+A{?vL|wFyd578+_PVT zn_!c8&gkNjT92da#1!rSiN7(#jfv(swOx_Bh2uWqmpm3;$Qs0SKJK4>tu~%;5Vv1a zBx4)pZbJFKs8`03zp?dugNuxaus?2o5?;_dJHlZ87pJ=mw6o~2b6Vxlt0}Up7tnqG5GU5(|`tSO) z$=pkwPy@Gl5E*~}{{4Uy(U;xMN%XIgaEdYiy0Io~HY!e@e0E}Va>E5dc5QFE=QHvB-qTI*Qt!c#CIJLCYZFSxGSS{1U9NwL39_EnkG*7??eTdEC#9bLbLU&&RL2O(|6|V2<-EN)?S7Md?g!! z>Ms2H);ToZ@Hu%OVG`;+o_|0^L2u8%b;%&o_40;#-e0jKE==ODq*N(LO`NKTGPrbc zpgdp0+9nKS6POMrx&>q-!s`~TVi;mM%py=*?ya`#`?Yx&h}u(Ub9sQB z#uLswcPciIh1%SDmy&omKa*72>&*4gNrS&jY>sNLvk3dOhJq)bVo)Iesk# z|CAg7NrAUJ@fP~tPCbGLO;bwZ`DpxFP=D8Pv6pcX%D8P6|?H~Q|EWcn^ByGpQa zc5SzQ(hf%)$H3d$+t=3IbFb?o4#0iB7HQ5%>|Qejy708Jz%b9eNKZ#ce{gPLK}g2% z!ZAf;dQ-;mXCj-4YDH&7jFIB!c02SGEa8S&YQhW@Y+?sLhhZQlOU2K3XZ_I@ogD}r zw=WesKU@PF(g9wt;japBWVVd1{5F#Yo4sZB=cdUZOxDLQUpT5eK9`sOoOa{y&o+!Y z*oeOBi{DV}Kh<~?CNS00LVhqtulvOp(6e1TEjV1~z5?Ll-2zYNXv+Au_o{#1eYMyk z-1C5elr;s@Lt^dUL3+3Rc{T}sZ>BvG9{A!OZhlExn*Z@vx9PXU#pXDP@Xfo0rkD*@ zkA(pmhb-aj;nGfaTGH=ABJ0c`v@Cyq*U*q7LVZB%Et2MczE$`}`u#_z4Grp^Q#GZf zJx*l;{nq&VLra9HX`zcP?e0ZCIh1xw-%9?~^gN z$M3>!&t&~YpYQ%+%PiMY$-Y`;F5xhK1iKmuhr|Fy%D6BL5@aSj5*$tlyF_V;aI9 z{5p#1@Rg9G1kFvbW-{KHT3Y%Ti8g;{v;VIvh_DXd@$xTRyu7_<1(-;C9f>o9y=@n$Ts#H1V0YVm|wk{Enw@no(#Qc4VdJ(R~vx~pwiMKU$BcPU)P(b)gv7o zPYVIa$?he`l%RQld)X`cRgo-3oQBbL5d{Z;RRCv0f~<73CtH>)BewJNzgYYm)T*ao zRS#k9rob0)`3Ja+e{7l_$aO$`(WnFx^}T=QJI#mw54ffR&hTh88miMA9L3P#6Qs@1 zkuKhmYIXi}f~t*lQ6h=`lA4@+Yg_qvkyZPKhJ!VOJLVkVt)zjV(5U*2rwq`{41i(3 zSjPZt8f^=So}a?^a8@46>uBe|JDIsO1EfppICjNx!i@W+$+TUB<0o-;8`3P`wXGAq z9?GL{&WG z_KS}2VpVLz%qcJRl(8pLIH)B4EC}}#v6I>%nVEv0V)bF~jNU2A%ob{m!vd9FIZNTl z2O#)odb$Qt17JgW*>5MY{r844W7dwHNq(2B;GxgaX=-Uk3izXKbr6*CtFT6Gxe@#c zx9zrvB{OS^Yt(DC3ky!QXg8;;Ro83m?+KTNbfn3jYJPG6H(6P*1_lPZvf*DqXoQ9k z<_uE=q$W|~363s{VfDj)larGlYFssj4jd_+i)M?X`!LbdZ04b;zQ6e7Yo)~YKaA2= zTW)L1CND3q)h7Z~SjZh?P!XI1ed* z_M%GWu-}#=0McpAjzvU7;PH4B>Y{>zlKy$$=(5sM)lf9&1cOtFaTlKg^iOSaz;CqX ztol4xCUu+_R752tl)YC&zGy64>Rgmg4h%8LB)EIjJg;Z*@UAp3qQDkb_AWy7HWgKP;GLR+n1D*@@_qk;|{X13%035%#X%nywkM0 za^x?&Y6vL;TLsR|+uL~e`8qPen+=i1j+lQ~8sZ})Vqm%0aHZ0+?@T!UEW~y=9t`)h z1ojY?F(Rzao1rYYHyw)1`%?QFG!Dq02;=nf?}sqg)jjy+viMAPv3p@W}!|~s(+^ZojEhRR(hGl zG!nlWw1y>fbaiD#skmMNAcv)=<#W3p~z>1QL*)xUU=5d?OQEA~yV z??wU=S>v&o^2q+v;dsO!#(uIX1}uG-J2n-bgTAc1S1KmPY9~i2lUS>Um0o}BE0qmi zolBkv*!*WKE3Hf-7&)Nc?D3ArIXO8;xTg=8H@GeKIu@b8gdEpKUdn=Q|Z}|;LA^*g6FCWKZ zC81EBpKseLwZo)I&}BxNt3ve6)HwPjJr zV#<$py=rX&@JIA`c9mI`_nn1O6|3z$_Gt1Z@2h6z;#fNWadxj*u#G2x6OG?rUUl6m zwf`+AXND@fGw(;YH@4#n3~Vb&G_3rh{9n$bc}zHIJ#q|odGJCxmEqqPuMWQHtMo6+ zk&#oGmL6v`y75gCje4cj_{;Kukf?p&yzPD0Ez#0y@b{aMfN!U)nt*yAS9l%n)p~^X zWNE73U|ZWwu_Nw!A8hx*UAx75KE7?AHq9fPHegnH6slS0q zj`SKtyPh70fi7GnQ-u>u6rN5(xJGf)4pNCQU0C#_Z(05e*7KL)6?@?FGBqq6xY=L zC=8Ln2fbg`ua;6mdb)U=;ScK^4`A#Yhopj2Wwy6SW4-W(3n>?PtbSFbqtY|u7XY?h z_g!5f4&%Ov1eHFg;pzybSt>9I>?8zGSXdZbBm*#}yJ9kWJqN?G^Hee6t$dT3rme|n zIp1IY7cld|e<1^sx#e$C;Pb1E-t8X9d)zGQ*DJ+a#VRMF}{25<)ZK6P}|HdqRacdRmJ z^jKpqqTEEYQC^%59g{J^10SE0;D-l5A`KOnP{T>cF zK6(^-DjGZ){$a_7D;KM`=ezz=v84L2#koM_dP2HG+AIz0mLvy=lg^G_-{V(Bwt2k~ACwNVTXi?}c}SMW5=h#X_*T}DT)Rmsl0>QC zxZPx3_hOL~kd6NuzEh&lIk6%!v784HeE97F>#Fa5+EcL4*H|I^GJ{cHR5Ulj(PA z*5kKiIKc`4K;Xo4%VKkFUfWzqo!WFv8eZw3wYwjHTkyof*f;}&(!7q7cK>uyMGOhE zB~Tt*KS#RG^c!4{bTHi|cRH{)9}4&YAmI6MAMh(!YgfA52>bsZCeF4(G?| zo3)<)oE7w+62ouS_tH8V^TRq^QHS&78;D7P_caduQ=%P+G3Tp@VrR{qvH@>8Xj*{` zPXD&8Q7QcIyMQrJ{X}nLCfmf&(9l?8)FJe2cPhJ-tn1nBqh|U?r33q4yXv}gsG66r z?|`G6?Nw1RvCy?RmtUlK8?-D2(inmRjTkj{&ps21Ds$XD$H?_vy%Z&OZf-MRLJwok zWDm*U!T$vjD1;JU{2p^E>n8=~+g)AE-B=KrU$u&Pmb!8wS7}>kC*YIXyGzL?p_$h> zftx%fCZ~%6k+Z-=vSyOx&rxvBb~Tng9*)HY9t7rN9NC7r)>ek2Fe9TS(%zwchP8q= zp9fJQ-Yxs*Cg9IH4kGdq5uL+$9K2X-A%2&VwK1F%>F-fu&Zckvn8N=k`Db5st8l>Z zJ&znSe`|W#vN7ceZTdk(zS){@X*PLah650TbgF|)ckm@oZ*PSEE8f1W?*%4hze@xJ z1PBdUapGIVYTvEm|8REay8Ll=gV`hb{nGx4Cw^3&-AY(u z10dk-&H{U)=1Uf*40HK(LI^2BXS}B7MT*e7T3<|7j+@MjrzTLHB7y^y^fJInqFZY> zxaEJ!3a_9Z=E#WVDdiy2Y7i%IV

gv-^WwG3`oknNXzgqW$vHysOnSrM`7-Q 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 IV)~x{4{d-{DF6Tf literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_157.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_157.txt new file mode 100644 index 00000000..b29ed789 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_157.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,2] [3,1,2,2,3,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.png new file mode 100644 index 0000000000000000000000000000000000000000..4c94ac124e2c528a1ded29661e26b409185d4b6f GIT binary patch literal 14842 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.txt new file mode 100644 index 00000000..5e97b681 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_158.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [3,1,2,2,4,2] +[0,2,-1,3,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.png new file mode 100644 index 0000000000000000000000000000000000000000..21f7ae8dbd6be336a0eb082a528b8e92c46ae1bf GIT binary patch literal 16996 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.txt new file mode 100644 index 00000000..1649a548 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_159.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,2,2] [3,1,2,2,3,2] +[0,2,-1,3,1,3] [2,2,3,2,1,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.png new file mode 100644 index 0000000000000000000000000000000000000000..9571d30708971a4499b34d4360547d878e508a3d GIT binary patch literal 17156 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 z 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 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.txt new file mode 100644 index 00000000..ae31c8ea --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_161.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,2] [3,1,2,2,4,2] +[0,2,1,2,-1,3] [1,2,2,2,1,3] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_162.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_162.png new file mode 100644 index 0000000000000000000000000000000000000000..85c087db522f0cf048682e432875fd7617bf1a0e GIT binary patch literal 17458 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 RPnpTCtLa=VQMvWxe*s1@(mwzI literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_163.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_163.txt new file mode 100644 index 00000000..c5ecb058 --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_163.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,0] [1,0,2,0,1,1] [2,0,1,1,3,1] [3,0,2,0,3,1] +[1,1,0,2,1,3] [3,1,3,3,4,2] +[0,2,-1,3,1,3] +[1,3,0,4,1,4] [3,3,3,4,4,4] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_164.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_164.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4df2983362a313801ef72f46d2d9e05a5c9ecd GIT binary patch literal 16977 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≪z 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 J#fp~C{x6k3ZuI~F literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_167.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_167.txt new file mode 100644 index 00000000..16f6a94c --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_167.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,-1,1] [1,0,2,0,1,1] [2,0,1,1,2,2] +[1,1,0,2,1,3] [3,1,2,2,3,2] +[0,2,0,4,1,3] [2,2,3,2,3,3] [3,2,4,2,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.png new file mode 100644 index 0000000000000000000000000000000000000000..f45c6482a221c593132ebbac79ae9777604d725e GIT binary patch literal 16570 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 UP8R%|1Y{4C)bHlsdG`AM0#?<1TL1t6 literal 0 HcmV?d00001 diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.txt b/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.txt new file mode 100644 index 00000000..fe441abe --- /dev/null +++ b/extensions/fablabchemnitz/bobbinlace/templates/4x4_168.txt @@ -0,0 +1,5 @@ +CHECKER 4 4 +[0,0,1,0,0,1] [1,0,2,0,1,1] [2,0,2,2,3,1] +[0,1,1,1,0,2] [1,1,0,2,1,3] [3,1,4,1,2,2] +[0,2,-1,3,0,4] [2,2,1,3,3,3] +[1,3,0,4,1,4] [3,3,2,4,3,5] diff --git a/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.png b/extensions/fablabchemnitz/bobbinlace/templates/4x4_169.png new file mode 100644 index 0000000000000000000000000000000000000000..2825ee268e37fb7013a7bb900d629517b69dad7d GIT binary patch literal 17784 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