librosette 0.4.1__cp314-cp314-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. librosette-0.4.1.dist-info/METADATA +80 -0
  2. librosette-0.4.1.dist-info/RECORD +74 -0
  3. librosette-0.4.1.dist-info/WHEEL +4 -0
  4. librosette-0.4.1.dist-info/entry_points.txt +3 -0
  5. librosette-0.4.1.dist-info/licenses/LICENSE +21 -0
  6. librosette-0.4.1.dist-info/sboms/rosette-python.cyclonedx.json +2563 -0
  7. rosette/__init__.py +2953 -0
  8. rosette/_core.cp314-win_amd64.pyd +0 -0
  9. rosette/_core.pyi +2066 -0
  10. rosette/_design.py +117 -0
  11. rosette/_serve.py +736 -0
  12. rosette/_server.py +367 -0
  13. rosette/_webapp/apple-icon.png +0 -0
  14. rosette/_webapp/assets/core-D8n9Wfto.js +1 -0
  15. rosette/_webapp/assets/dist-js-BgjaShVQ.js +1 -0
  16. rosette/_webapp/assets/dist-js-Cd2gRR-p.js +1 -0
  17. rosette/_webapp/assets/dist-js-pgMXdev5.js +1 -0
  18. rosette/_webapp/assets/event-BTCPJux0.js +1 -0
  19. rosette/_webapp/assets/geist-mono-cyrillic-400-normal-CeA7eGSt.woff +0 -0
  20. rosette/_webapp/assets/geist-mono-cyrillic-400-normal-DoshcOXv.woff2 +0 -0
  21. rosette/_webapp/assets/geist-mono-cyrillic-500-normal-BgLpzsdg.woff +0 -0
  22. rosette/_webapp/assets/geist-mono-cyrillic-500-normal-BkE2O7RC.woff2 +0 -0
  23. rosette/_webapp/assets/geist-mono-latin-400-normal-BXAprPdR.woff +0 -0
  24. rosette/_webapp/assets/geist-mono-latin-400-normal-DKaoCDn5.woff2 +0 -0
  25. rosette/_webapp/assets/geist-mono-latin-500-normal-C3sF8Y1B.woff2 +0 -0
  26. rosette/_webapp/assets/geist-mono-latin-500-normal-YfPbDI_o.woff +0 -0
  27. rosette/_webapp/assets/geist-mono-latin-ext-400-normal-C1xxG8eb.woff2 +0 -0
  28. rosette/_webapp/assets/geist-mono-latin-ext-400-normal-a1APXIwD.woff +0 -0
  29. rosette/_webapp/assets/geist-mono-latin-ext-500-normal-CDyCFkgU.woff2 +0 -0
  30. rosette/_webapp/assets/geist-mono-latin-ext-500-normal-CzSM7th5.woff +0 -0
  31. rosette/_webapp/assets/geist-mono-symbols2-400-normal-B5fXMCGq.woff +0 -0
  32. rosette/_webapp/assets/geist-mono-symbols2-500-normal-BYvOiszX.woff +0 -0
  33. rosette/_webapp/assets/geist-mono-vietnamese-400-normal-CyOwoevh.woff +0 -0
  34. rosette/_webapp/assets/geist-mono-vietnamese-500-normal-Do_laDd2.woff +0 -0
  35. rosette/_webapp/assets/geist-sans-latin-400-normal-BOaIZNA2.woff +0 -0
  36. rosette/_webapp/assets/geist-sans-latin-400-normal-gapTbOY8.woff2 +0 -0
  37. rosette/_webapp/assets/geist-sans-latin-500-normal-CN2lyvyL.woff +0 -0
  38. rosette/_webapp/assets/geist-sans-latin-500-normal-uokXdC-Q.woff2 +0 -0
  39. rosette/_webapp/assets/geist-sans-latin-600-normal-CA1yjETN.woff +0 -0
  40. rosette/_webapp/assets/geist-sans-latin-600-normal-DFOURf8L.woff2 +0 -0
  41. rosette/_webapp/assets/index-DV2s40cE.css +1 -0
  42. rosette/_webapp/assets/index-JZwlh-_z.js +74 -0
  43. rosette/_webapp/assets/preload-helper-zJ_50EbN.js +1 -0
  44. rosette/_webapp/assets/rosette_wasm-B4JbNC6N.js +1 -0
  45. rosette/_webapp/assets/rosette_wasm_bg-BEOl3dlK.wasm +0 -0
  46. rosette/_webapp/assets/webviewWindow-BJGrYc4W.js +1 -0
  47. rosette/_webapp/fonts/SourceCodePro-Regular.ttf +0 -0
  48. rosette/_webapp/icon.svg +19 -0
  49. rosette/_webapp/index.html +22 -0
  50. rosette/_webapp/theme-preload.js +27 -0
  51. rosette/cli.py +1806 -0
  52. rosette/components/__init__.py +164 -0
  53. rosette/components/_curves.py +372 -0
  54. rosette/components/_tapers.py +179 -0
  55. rosette/components/_utils.py +21 -0
  56. rosette/components/bragg_grating.py +396 -0
  57. rosette/components/crossing.py +360 -0
  58. rosette/components/directional_coupler.py +318 -0
  59. rosette/components/edge_coupler.py +255 -0
  60. rosette/components/grating_coupler.py +311 -0
  61. rosette/components/mmi.py +379 -0
  62. rosette/components/ring.py +367 -0
  63. rosette/components/sbend.py +328 -0
  64. rosette/py.typed +0 -0
  65. rosette/templates/blank/AGENTS.md.template +36 -0
  66. rosette/templates/blank/CLAUDE.md.template +35 -0
  67. rosette/templates/blank/gitignore +3 -0
  68. rosette/templates/blank/rosette.toml.template +105 -0
  69. rosette/templates/generic/.agents/skills/layout-design/SKILL.md +80 -0
  70. rosette/templates/generic/.agents/skills/spiral-cutback/SKILL.md +96 -0
  71. rosette/templates/generic/AGENTS.md.template +37 -0
  72. rosette/templates/generic/CLAUDE.md.template +36 -0
  73. rosette/templates/generic/gitignore +3 -0
  74. rosette/templates/generic/rosette.toml.template +81 -0
@@ -0,0 +1,80 @@
1
+ Metadata-Version: 2.4
2
+ Name: librosette
3
+ Version: 0.4.1
4
+ Classifier: Development Status :: 3 - Alpha
5
+ Classifier: Intended Audience :: Science/Research
6
+ Classifier: Programming Language :: Python :: 3
7
+ Classifier: Programming Language :: Python :: 3.11
8
+ Classifier: Programming Language :: Python :: 3.12
9
+ Classifier: Programming Language :: Python :: 3.13
10
+ Classifier: Programming Language :: Python :: 3.14
11
+ Classifier: Programming Language :: Rust
12
+ Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
13
+ Classifier: Typing :: Typed
14
+ Requires-Dist: watchfiles>=0.20
15
+ License-File: LICENSE
16
+ Summary: A fast, intelligent, and accessible layout editor
17
+ Keywords: photonics,gdsii,layout,silicon-photonics,eda,pdk
18
+ License-Expression: MIT
19
+ Requires-Python: >=3.11
20
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
21
+ Project-URL: Bug Tracker, https://github.com/prefab-photonics/rosette/issues
22
+ Project-URL: Homepage, https://rosette.dev
23
+ Project-URL: Repository, https://github.com/prefab-photonics/rosette
24
+
25
+ <p align="center">
26
+ <img src="https://raw.githubusercontent.com/PreFab-Photonics/rosette/main/www/public/rosette-logo.png" alt="Rosette" width="200" />
27
+ </p>
28
+
29
+ # Rosette
30
+
31
+ A modern GDSII layout editor for integrated circuits. Fast. Intelligent. Accessible.
32
+
33
+ By [PreFab Photonics](https://prefabphotonics.com).
34
+
35
+ > [!WARNING]
36
+ > Rosette is in early development. The API is unstable and will have breaking changes. Not suitable for production use.
37
+
38
+ ### Highlights
39
+
40
+ - **Fast** — A Rust core and GPU rendering that keeps you in the flow. From geometry operations to live preview, every layer of the stack is built for speed.
41
+ - **Intelligent** — AI-native from the ground up. Agent instructions and direct code access give LLM agents the context to design circuits alongside you.
42
+ - **Accessible** — A clean Python API, a modern desktop app, and documentation written for engineers. Professional tools without the learning cliff.
43
+
44
+ ## Quickstart
45
+
46
+ Requires [uv](https://docs.astral.sh/uv/) and Python 3.11+.
47
+
48
+ ```bash
49
+ mkdir my-chip && cd my-chip
50
+ uv init
51
+ uv add librosette
52
+ uv run rosette init
53
+ ```
54
+
55
+ `rosette init` walks you through template and AI tool selection, then scaffolds your project with editable components, layer config, and agent instructions.
56
+
57
+ Run commands with `uv run rosette <command>`, or install the CLI globally with `uv tool install librosette` to use `rosette` directly. See the [installation guide](https://rosette.dev/docs/getting-started/installation) for details.
58
+
59
+ ### Commands
60
+
61
+ ```bash
62
+ rosette serve [design.py] # Dev server with live preview
63
+ rosette build design.py # Build design to GDS
64
+ rosette build design.py --check # Build with DRC pre-check
65
+ rosette check design.py # Run all checks (DRC, ...)
66
+ rosette drc design.py # Run DRC only
67
+ rosette run output.gds # View a GDS file
68
+ rosette init # Scaffold a new project
69
+ ```
70
+
71
+ `ro` is a short alias for `rosette`.
72
+
73
+ ## Documentation
74
+
75
+ Full docs, API reference, and component library at **[rosette.dev/docs](https://rosette.dev/docs)**.
76
+
77
+ ## License
78
+
79
+ MIT
80
+
@@ -0,0 +1,74 @@
1
+ librosette-0.4.1.dist-info/METADATA,sha256=zH7KUDiLoURFzoN45uDnZ1vJIMjEWC5ctjyeSjjkBH4,3171
2
+ librosette-0.4.1.dist-info/WHEEL,sha256=TaIKf5lAAGEk4VpBZdZm7x95yHEoG3pvy-lh-8YcCc8,97
3
+ librosette-0.4.1.dist-info/entry_points.txt,sha256=4BpEfReUjEODacGewvf2vlkGeS6Vl6PRxlhmrZf4KQw,63
4
+ librosette-0.4.1.dist-info/licenses/LICENSE,sha256=F0hxu0QpQAyiU3bukdmtqXdsNqBvPf5I6znnlj0J9iI,1094
5
+ librosette-0.4.1.dist-info/sboms/rosette-python.cyclonedx.json,sha256=wtIOYfR-jA9r6jmmueTyWxgRjrxJWxO7DEmISbm8UCs,80048
6
+ rosette/__init__.py,sha256=6-Pee2XZmEkETcQteuBWR8Y4wdGGR03vo_dPsWvbpGg,110636
7
+ rosette/_core.cp314-win_amd64.pyd,sha256=kibd3Rfsdsij5_bw2Qg6YbIE7kwszAi89CSydgiqgy0,2216960
8
+ rosette/_core.pyi,sha256=2onPDyo5wQVvpxeWHeTJAny_J9Di4CHwTOMC67K1sZE,75464
9
+ rosette/_design.py,sha256=cBUM3fLDC52hcSLLGUlC_ypp8G3PpXpYaHpxOf2Fy2M,3828
10
+ rosette/_serve.py,sha256=sPm4MUHN9QrqZ4eeKiCB5AzJQ_MzODAcTO7KNI-Tv5w,25301
11
+ rosette/_server.py,sha256=oRr33byBAPoc8n8Sf1XBu9N_k0oadw8gnN6jnuBqsyI,13738
12
+ rosette/_webapp/apple-icon.png,sha256=jvMcPnLyqIBwCvhflEPnyQC3LRE6-vD5EPM2p5pClwI,8704
13
+ rosette/_webapp/assets/core-D8n9Wfto.js,sha256=bwZ7ss_Oy-gx1IDUabLG5ffOqghVhdF8KrHx9Grw5pc,1927
14
+ rosette/_webapp/assets/dist-js-BgjaShVQ.js,sha256=wIQ3OWnS8XvVOmeWP58BVfPtHutzaK7tSgNiEnD47Bk,119
15
+ rosette/_webapp/assets/dist-js-Cd2gRR-p.js,sha256=3BEPGnceKce1LyMAwLj8TgvbccR0jyDLNFM8nwTNSgA,1041
16
+ rosette/_webapp/assets/dist-js-pgMXdev5.js,sha256=b_CbTewQ0Z6Z6v-q0E_1Z1dsP6J9KDr-rJNGIWK4Pa8,880
17
+ rosette/_webapp/assets/event-BTCPJux0.js,sha256=QRupT5cx-5NUl5GNcMaX-SoNr3NpkLeSTJuyNAfqXok,1363
18
+ rosette/_webapp/assets/geist-mono-cyrillic-400-normal-CeA7eGSt.woff,sha256=FtcS1EEsQSU-tVQFaLXdCuLNOYFDjBe4fbRfkMTBv4Q,6980
19
+ rosette/_webapp/assets/geist-mono-cyrillic-400-normal-DoshcOXv.woff2,sha256=FohKlGP6jymk6_3KUX-dnpVW7AeM-ni0rM3RYrN0ys0,5552
20
+ rosette/_webapp/assets/geist-mono-cyrillic-500-normal-BgLpzsdg.woff,sha256=S1FiYM9H3qcKs8-giXExssq3ZB3V-Fl5zaAXZ97LwTk,7180
21
+ rosette/_webapp/assets/geist-mono-cyrillic-500-normal-BkE2O7RC.woff2,sha256=CujUQE_zohNHhp9J9_mA2vYgZa5MP4BELU2YWLBR08w,5712
22
+ rosette/_webapp/assets/geist-mono-latin-400-normal-BXAprPdR.woff,sha256=yOgMBFQV3SihnOTf9z0D-5cxjjsndphSg2Fbc9JG0AY,16896
23
+ rosette/_webapp/assets/geist-mono-latin-400-normal-DKaoCDn5.woff2,sha256=ay43GaIT40zAQ3YOWltCDUBn9Hff4GuS7zyf2RQZLdQ,12792
24
+ rosette/_webapp/assets/geist-mono-latin-500-normal-C3sF8Y1B.woff2,sha256=U8tO65LqKvACeWdfaZkXrpbZaCsfpbVj3vfALoyaK2A,13380
25
+ rosette/_webapp/assets/geist-mono-latin-500-normal-YfPbDI_o.woff,sha256=gqUuJYQwvuyg4XkWQzkRSZCvwvg2GEDbbywiCb77RKo,17380
26
+ rosette/_webapp/assets/geist-mono-latin-ext-400-normal-C1xxG8eb.woff2,sha256=ToQ7DP6ndhGf8S7XCGC1j4y_qmB7sqRGNkFzbW_b7lk,7028
27
+ rosette/_webapp/assets/geist-mono-latin-ext-400-normal-a1APXIwD.woff,sha256=DJd7f3Gv8pugqLCfA0n_g9Fej3hkzebqlR8kxzlB7F0,9384
28
+ rosette/_webapp/assets/geist-mono-latin-ext-500-normal-CDyCFkgU.woff2,sha256=M5T-iU6HM67TNuwE7XULgVPPDMySA0xDeRCH7R3ZdIk,7084
29
+ rosette/_webapp/assets/geist-mono-latin-ext-500-normal-CzSM7th5.woff,sha256=2RN2cB7yku7NlJKLe9nEzmnXfQaOLae1dENHRvecb90,9512
30
+ rosette/_webapp/assets/geist-mono-symbols2-400-normal-B5fXMCGq.woff,sha256=bOVRBEbzbK6aPzs8o2plSOQqucfpcN8kM9Z-RVNUABA,4736
31
+ rosette/_webapp/assets/geist-mono-symbols2-500-normal-BYvOiszX.woff,sha256=VfsBCfkzcKGixZCG_uNfLQIG1lceyOKWVFwTX9TNGCA,4700
32
+ rosette/_webapp/assets/geist-mono-vietnamese-400-normal-CyOwoevh.woff,sha256=uy5isxxhi0IvLu2NZKDHw16dXfTOOZYFw4cY64etY2o,5152
33
+ rosette/_webapp/assets/geist-mono-vietnamese-500-normal-Do_laDd2.woff,sha256=WtjIh9r7jRXBoVPW9A9QtKSPKfe9qdy-ckUpXDzIsts,5256
34
+ rosette/_webapp/assets/geist-sans-latin-400-normal-BOaIZNA2.woff,sha256=svWTHxqQO8xkr5buQbP-1TqM506SYRgZMaaApQVgSFs,38912
35
+ rosette/_webapp/assets/geist-sans-latin-400-normal-gapTbOY8.woff2,sha256=5u9quznHYu0iWcyBTm8WiIxUDNhINZYiJ7VqsjVPJ_E,33400
36
+ rosette/_webapp/assets/geist-sans-latin-500-normal-CN2lyvyL.woff,sha256=XWebh5bu1EDW5-LpTDc5C4L523eqks_CHpahze7Puj0,40520
37
+ rosette/_webapp/assets/geist-sans-latin-500-normal-uokXdC-Q.woff2,sha256=QAc-kIFjFckuT0OBvVC2_clQsisN0BCkF5BGz1iNTxI,34716
38
+ rosette/_webapp/assets/geist-sans-latin-600-normal-CA1yjETN.woff,sha256=OQPtdjPVY940u79gnoaah45LQIGiUBGhlbeoAEPsr-k,41204
39
+ rosette/_webapp/assets/geist-sans-latin-600-normal-DFOURf8L.woff2,sha256=nZn715GWhJP6UHrIRt5WHO5HsA-BAMI8rTM7PLeDktY,35292
40
+ rosette/_webapp/assets/index-DV2s40cE.css,sha256=Hcos9Dwwy_PxeqGI3E4M929cVVe0cS3WZyCVV7XNjec,83311
41
+ rosette/_webapp/assets/index-JZwlh-_z.js,sha256=WN3bBeNvBSVOMCi8HGVI1jd-6bbZyLsjWjxF3NesONQ,638793
42
+ rosette/_webapp/assets/preload-helper-zJ_50EbN.js,sha256=DIjGqu8HsZI5ourJ-u-CWE-eczEU-F3BkOmNzqYLF1M,1193
43
+ rosette/_webapp/assets/rosette_wasm-B4JbNC6N.js,sha256=N5yBsl3oGilaS0hcNKMtfEUSKP2PKg6ZMeHUIzLpGRk,70171
44
+ rosette/_webapp/assets/rosette_wasm_bg-BEOl3dlK.wasm,sha256=xdL1o2g17ua5qN8EEjKbFmuYNx5VJMBejsnwyJEKZIw,3445451
45
+ rosette/_webapp/assets/webviewWindow-BJGrYc4W.js,sha256=RuO2MRDpjDMVREblIzuehYJQ_0UCu0BUcEHnrPa0HWY,17461
46
+ rosette/_webapp/fonts/SourceCodePro-Regular.ttf,sha256=tAD8WE4Qr_JdDndc4YG0_BxeobXcN7ga6yCEN1uUV5A,212340
47
+ rosette/_webapp/icon.svg,sha256=HMrxZlGw4kpfE6G-te8R_k9H--NOzcX893lbmAA_rNo,28737
48
+ rosette/_webapp/index.html,sha256=69PjxKTveczCJ1JQ_QiWsPGkqpoqIhE0igoUwBgpvDs,833
49
+ rosette/_webapp/theme-preload.js,sha256=GLmeUxKVPTxrhKKiUi6Xjk782XN4mYxSoVb822CFqrE,1056
50
+ rosette/cli.py,sha256=FmiZhy1jjSnSX4oR7NLH7NGSDEqje94zsq8Ocfb1Keg,66055
51
+ rosette/components/__init__.py,sha256=Bva3I6Wya7bHCRUadk56luqGEpcluFTZr5MTVf3-l70,6377
52
+ rosette/components/_curves.py,sha256=QcdPl-Wv1zxdCqMycsYw5v48rod4jikTYBecuUoBV1k,13486
53
+ rosette/components/_tapers.py,sha256=A3wz3zkUEzcHPZZD9xymshwd2I3TJ6c3qNGm87akm1E,6947
54
+ rosette/components/_utils.py,sha256=F33wRqjMxaYfVgGDED1t1E-2e9ae7ncBRSt5biwdj64,805
55
+ rosette/components/bragg_grating.py,sha256=dCrGqnqeEcOq7nYDrXshCZegaXtbMwzOWwjKHuupx1Q,16982
56
+ rosette/components/crossing.py,sha256=gOZkIseKN27FUFgqh2MYaHCRBwI50GaHvhk8-Uipnt4,13811
57
+ rosette/components/directional_coupler.py,sha256=-ncLKrb3udyBKY6H0VTToNFn950PK0JYLOur9LuMfdI,13360
58
+ rosette/components/edge_coupler.py,sha256=8OS7EeK4rotn0gWEHKZSouLCsKWBDFPo_ZzK4QTzNjQ,11338
59
+ rosette/components/grating_coupler.py,sha256=z9R5S3M9di_U6NeJQoyhB4E79l1XoMtEZb4FsU1lZAw,12502
60
+ rosette/components/mmi.py,sha256=xBwHBemwBdiq_VyA6teG-FXTiK5Gwm9x6gfvMq884nk,16324
61
+ rosette/components/ring.py,sha256=t_0RcRUSRQmOa5uL5UBhvEGHl8JDzcJldKNIm4607Yo,14560
62
+ rosette/components/sbend.py,sha256=YrCzILD7VP__kQWXBAKzikzOUGVHqo2wcbfzd24aNKE,14537
63
+ rosette/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ rosette/templates/blank/AGENTS.md.template,sha256=T5rtMEqgvua_KMmd1ABSiNeMivmRfLcMhveVhvQwbw4,1678
65
+ rosette/templates/blank/CLAUDE.md.template,sha256=u12bR4Hl0l-JPyt_FCWAU-TUwODM1Ibuphwb4Pe8fwU,1491
66
+ rosette/templates/blank/gitignore,sha256=DL8VB7ejx_rvTq1pmMEqi04kowTqwRzWB57Y4dJMaZw,31
67
+ rosette/templates/blank/rosette.toml.template,sha256=VpYGAjzZb6fguk77HDUlccVKS72Bm59gBWC188mFors,3522
68
+ rosette/templates/generic/.agents/skills/layout-design/SKILL.md,sha256=8IjVP6WQQz8y5vIdBaE7a1R3shSiZdDoVfH7VlPJces,4401
69
+ rosette/templates/generic/.agents/skills/spiral-cutback/SKILL.md,sha256=AD7erAECtRi8gBCUNx0LuSrK53nF0DiNEMvufAdpJqc,5808
70
+ rosette/templates/generic/AGENTS.md.template,sha256=rw-TzVz073E5ti-qQM6gH6CkUYhqJ9A8c8oSOimU_e4,1724
71
+ rosette/templates/generic/CLAUDE.md.template,sha256=TcD-YGtglYyxcxD0Yuh5hz-gKNPL1XSOMSKfKL6pQYc,1537
72
+ rosette/templates/generic/gitignore,sha256=DL8VB7ejx_rvTq1pmMEqi04kowTqwRzWB57Y4dJMaZw,31
73
+ rosette/templates/generic/rosette.toml.template,sha256=aNdCRsPRJ_FDazzuinHuP03XZ_AGyXDWKkwMq-UoOHk,3213
74
+ librosette-0.4.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.14.1)
3
+ Root-Is-Purelib: false
4
+ Tag: cp314-cp314-win_amd64
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ ro=rosette.cli:main
3
+ rosette=rosette.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 PreFab Photonics
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.