From b61e14a122a6cab6f7359d85dc8754011f643a5c Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Sun, 4 Jul 2021 00:53:16 -0600 Subject: [PATCH] Add build scripts, move source to subfolder --- build/.gitignore | 2 + build/appimage/IPENtool.AppDir/AppRun | 5 + .../appimage/IPENtool.AppDir/ipentool.desktop | 10 + build/appimage/IPENtool.AppDir/ipentool.png | 1 + .../appimage/IPENtool.AppDir/usr/bin/ipentool | 3 + .../usr/share/metainfo/ipentool.appdata.xml | 18 + build/debian/DEBIAN/changelog | 5 + build/debian/DEBIAN/control | 9 + build/debian/DEBIAN/copyright | 361 ++++++++++++++++++ build/debian/usr/bin/ipentool | 2 + .../usr/share/applications/IPENtool.desktop | 11 + .../usr/share/metainfo/ipentool.appdata.xml | 18 + build/scripts/appimage_build.sh | 10 + build/scripts/debian_build.sh | 10 + nbproject/project.properties | 11 +- nbproject/project.xml | 1 + {css => src/css}/main.css | 0 src/img/icon.png | Bin 0 -> 17890 bytes src/img/icon.svg | 89 +++++ {img => src/img}/signature-line.svg | 0 index.html => src/index.html | 1 + {js => src/js}/crypto.js | 0 {js => src/js}/drawtools.js | 0 {js => src/js}/filesystem.js | 0 {js => src/js}/kbpgp-2.1.15.js | 0 {js => src/js}/main.js | 0 {js => src/js}/pdf.js | 0 {js => src/js}/storage.js | 0 {js => src/js}/svg-to-image.js | 0 {js => src/js}/util.js | 0 main.js => src/main.js | 5 +- src/nbproject/private/private.properties | 1 + src/nbproject/private/private.xml | 11 + src/nbproject/project.properties | 6 + src/nbproject/project.xml | 9 + package-lock.json => src/package-lock.json | 0 package.json => src/package.json | 0 {templates => src/templates}/stamps/mt.svg | 0 38 files changed, 593 insertions(+), 6 deletions(-) create mode 100644 build/.gitignore create mode 100755 build/appimage/IPENtool.AppDir/AppRun create mode 100755 build/appimage/IPENtool.AppDir/ipentool.desktop create mode 120000 build/appimage/IPENtool.AppDir/ipentool.png create mode 100755 build/appimage/IPENtool.AppDir/usr/bin/ipentool create mode 100644 build/appimage/IPENtool.AppDir/usr/share/metainfo/ipentool.appdata.xml create mode 100644 build/debian/DEBIAN/changelog create mode 100644 build/debian/DEBIAN/control create mode 100644 build/debian/DEBIAN/copyright create mode 100755 build/debian/usr/bin/ipentool create mode 100755 build/debian/usr/share/applications/IPENtool.desktop create mode 100644 build/debian/usr/share/metainfo/ipentool.appdata.xml create mode 100644 build/scripts/appimage_build.sh create mode 100644 build/scripts/debian_build.sh rename {css => src/css}/main.css (100%) create mode 100644 src/img/icon.png create mode 100644 src/img/icon.svg rename {img => src/img}/signature-line.svg (100%) rename index.html => src/index.html (99%) rename {js => src/js}/crypto.js (100%) rename {js => src/js}/drawtools.js (100%) rename {js => src/js}/filesystem.js (100%) rename {js => src/js}/kbpgp-2.1.15.js (100%) rename {js => src/js}/main.js (100%) rename {js => src/js}/pdf.js (100%) rename {js => src/js}/storage.js (100%) rename {js => src/js}/svg-to-image.js (100%) rename {js => src/js}/util.js (100%) rename main.js => src/main.js (76%) create mode 100644 src/nbproject/private/private.properties create mode 100644 src/nbproject/private/private.xml create mode 100644 src/nbproject/project.properties create mode 100644 src/nbproject/project.xml rename package-lock.json => src/package-lock.json (100%) rename package.json => src/package.json (100%) rename {templates => src/templates}/stamps/mt.svg (100%) diff --git a/build/.gitignore b/build/.gitignore new file mode 100644 index 0000000..7bff32e --- /dev/null +++ b/build/.gitignore @@ -0,0 +1,2 @@ +debian/usr/share/ipentool/ +out/ diff --git a/build/appimage/IPENtool.AppDir/AppRun b/build/appimage/IPENtool.AppDir/AppRun new file mode 100755 index 0000000..d678b9b --- /dev/null +++ b/build/appimage/IPENtool.AppDir/AppRun @@ -0,0 +1,5 @@ +#!/bin/sh +HERE="$(dirname "$(readlink -f "${0}")")" + +cd $HERE/usr/lib/ipentool +./IPENtool diff --git a/build/appimage/IPENtool.AppDir/ipentool.desktop b/build/appimage/IPENtool.AppDir/ipentool.desktop new file mode 100755 index 0000000..d7648a3 --- /dev/null +++ b/build/appimage/IPENtool.AppDir/ipentool.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=IPENtool +Version=1.0 +Exec=ipentool +Comment=Tool for performing in person electronic notarizations on PDF files. +Icon=ipentool +Type=Application +Terminal=false +StartupNotify=true +Categories=Office; diff --git a/build/appimage/IPENtool.AppDir/ipentool.png b/build/appimage/IPENtool.AppDir/ipentool.png new file mode 120000 index 0000000..8d1b21c --- /dev/null +++ b/build/appimage/IPENtool.AppDir/ipentool.png @@ -0,0 +1 @@ +../../../src/img/icon.png \ No newline at end of file diff --git a/build/appimage/IPENtool.AppDir/usr/bin/ipentool b/build/appimage/IPENtool.AppDir/usr/bin/ipentool new file mode 100755 index 0000000..c5ea66e --- /dev/null +++ b/build/appimage/IPENtool.AppDir/usr/bin/ipentool @@ -0,0 +1,3 @@ +#!/bin/sh +cd /usr/lib/ipentool +./IPENtool diff --git a/build/appimage/IPENtool.AppDir/usr/share/metainfo/ipentool.appdata.xml b/build/appimage/IPENtool.AppDir/usr/share/metainfo/ipentool.appdata.xml new file mode 100644 index 0000000..a83002a --- /dev/null +++ b/build/appimage/IPENtool.AppDir/usr/share/metainfo/ipentool.appdata.xml @@ -0,0 +1,18 @@ + + + ipentool + MPL-2.0 + MPL-2.0 + IPENtool + Tool to notarize PDF files + +

+
+ ipentool.desktop + https://netsyms.com/apps/ipentool + + + + ipentool.desktop + +
diff --git a/build/debian/DEBIAN/changelog b/build/debian/DEBIAN/changelog new file mode 100644 index 0000000..265a3fd --- /dev/null +++ b/build/debian/DEBIAN/changelog @@ -0,0 +1,5 @@ +ipentool (1.0.0) main; urgency=medium + + * Initial release. + + -- Skylar Ittner Sun, 04 July 2020 00:38:00 -0600 diff --git a/build/debian/DEBIAN/control b/build/debian/DEBIAN/control new file mode 100644 index 0000000..accd360 --- /dev/null +++ b/build/debian/DEBIAN/control @@ -0,0 +1,9 @@ +Package: ipentool +Version: 1.0.0 +Maintainer: Netsyms Technologies +Section: web +Homepage: https://netsyms.com/apps/ipentool +Priority: optional +Depends: nw.js-normal | nw.js +Description: GUI tool for in person electronic notarization of PDF files. +Architecture: all diff --git a/build/debian/DEBIAN/copyright b/build/debian/DEBIAN/copyright new file mode 100644 index 0000000..5cfaf3e --- /dev/null +++ b/build/debian/DEBIAN/copyright @@ -0,0 +1,361 @@ +Copyright (c) 2021 Netsyms Technologies. + +Various open source libraries are included, which have their own licenses. + +Mozilla Public License Version 2.0 +================================== + +### 1. Definitions + +**1.1. “Contributor”** + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +**1.2. “Contributor Version”** + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +**1.3. “Contribution”** + means Covered Software of a particular Contributor. + +**1.4. “Covered Software”** + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +**1.5. “Incompatible With Secondary Licenses”** + means + +* **(a)** that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or +* **(b)** that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +**1.6. “Executable Form”** + means any form of the work other than Source Code Form. + +**1.7. “Larger Work”** + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +**1.8. “License”** + means this document. + +**1.9. “Licensable”** + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +**1.10. “Modifications”** + means any of the following: + +* **(a)** any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or +* **(b)** any new file in Source Code Form that contains any Covered + Software. + +**1.11. “Patent Claims” of a Contributor** + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +**1.12. “Secondary License”** + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +**1.13. “Source Code Form”** + means the form of the work preferred for making modifications. + +**1.14. “You” (or “Your”)** + means an individual or a legal entity exercising rights under this + License. For legal entities, “You” includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, “control” means **(a)** the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or **(b)** ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + + +### 2. License Grants and Conditions + +#### 2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +* **(a)** under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and +* **(b)** under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +#### 2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +#### 2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +* **(a)** for any code that a Contributor has removed from Covered Software; + or +* **(b)** for infringements caused by: **(i)** Your and any other third party's + modifications of Covered Software, or **(ii)** the combination of its + Contributions with other software (except as part of its Contributor + Version); or +* **(c)** under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +#### 2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +#### 2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +#### 2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +#### 2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + + +### 3. Responsibilities + +#### 3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +#### 3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +* **(a)** such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +* **(b)** You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +#### 3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +#### 3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +#### 3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + + +### 4. Inability to Comply Due to Statute or Regulation + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: **(a)** comply with +the terms of this License to the maximum extent possible; and **(b)** +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + + +### 5. Termination + +**5.1.** The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated **(a)** provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and **(b)** on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +**5.2.** If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +**5.3.** In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + + +### 6. Disclaimer of Warranty + +> Covered Software is provided under this License on an “as is” +> basis, without warranty of any kind, either expressed, implied, or +> statutory, including, without limitation, warranties that the +> Covered Software is free of defects, merchantable, fit for a +> particular purpose or non-infringing. The entire risk as to the +> quality and performance of the Covered Software is with You. +> Should any Covered Software prove defective in any respect, You +> (not any Contributor) assume the cost of any necessary servicing, +> repair, or correction. This disclaimer of warranty constitutes an +> essential part of this License. No use of any Covered Software is +> authorized under this License except under this disclaimer. + +### 7. Limitation of Liability + +> Under no circumstances and under no legal theory, whether tort +> (including negligence), contract, or otherwise, shall any +> Contributor, or anyone who distributes Covered Software as +> permitted above, be liable to You for any direct, indirect, +> special, incidental, or consequential damages of any character +> including, without limitation, damages for lost profits, loss of +> goodwill, work stoppage, computer failure or malfunction, or any +> and all other commercial damages or losses, even if such party +> shall have been informed of the possibility of such damages. This +> limitation of liability shall not apply to liability for death or +> personal injury resulting from such party's negligence to the +> extent applicable law prohibits such limitation. Some +> jurisdictions do not allow the exclusion or limitation of +> incidental or consequential damages, so this exclusion and +> limitation may not apply to You. + + +### 8. Litigation + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + + +### 9. Miscellaneous + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + + +### 10. Versions of the License + +#### 10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +#### 10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +#### 10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +#### 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +## Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +## Exhibit B - “Incompatible With Secondary Licenses” Notice + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. + + diff --git a/build/debian/usr/bin/ipentool b/build/debian/usr/bin/ipentool new file mode 100755 index 0000000..8e8b41f --- /dev/null +++ b/build/debian/usr/bin/ipentool @@ -0,0 +1,2 @@ +#!/bin/sh +nwjs /usr/share/ipentool diff --git a/build/debian/usr/share/applications/IPENtool.desktop b/build/debian/usr/share/applications/IPENtool.desktop new file mode 100755 index 0000000..7b484e6 --- /dev/null +++ b/build/debian/usr/share/applications/IPENtool.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=IPENtool +Version=1.0 +Exec=/usr/bin/ipentool +Comment=Tool for performing in person electronic notarizations on PDF files. +Icon=/usr/share/ipentool/logo.svg +Type=Application +Terminal=false +StartupNotify=true +Encoding=UTF-8 +Categories=Office; diff --git a/build/debian/usr/share/metainfo/ipentool.appdata.xml b/build/debian/usr/share/metainfo/ipentool.appdata.xml new file mode 100644 index 0000000..a83002a --- /dev/null +++ b/build/debian/usr/share/metainfo/ipentool.appdata.xml @@ -0,0 +1,18 @@ + + + ipentool + MPL-2.0 + MPL-2.0 + IPENtool + Tool to notarize PDF files + +

+
+ ipentool.desktop + https://netsyms.com/apps/ipentool + + + + ipentool.desktop + +
diff --git a/build/scripts/appimage_build.sh b/build/scripts/appimage_build.sh new file mode 100644 index 0000000..232711d --- /dev/null +++ b/build/scripts/appimage_build.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# $1 is the binary location, $2 is the arch, $3 is the version number +mkdir out +mkdir -p appimage/IPENtool.AppDir/usr/lib/ipentool +rm -rf appimage/IPENtool.AppDir/usr/lib/ipentool +rsync -rv "$1" appimage/IPENtool.AppDir/usr/lib/ipentool +chmod +x appimage/IPENtool.AppDir/AppRun +wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O appimagetool +chmod +x appimagetool +./appimagetool appimage/IPENtool.AppDir "out/IPENtool_$3_$2.AppImage" diff --git a/build/scripts/debian_build.sh b/build/scripts/debian_build.sh new file mode 100644 index 0000000..a95be0b --- /dev/null +++ b/build/scripts/debian_build.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# $1 is the app location, $2 is the svg icon, $3 is the version number +mkdir -p out +rm -rf debian/usr/share/ipentool +mkdir -p debian/usr/share/ipentool +mkdir -p debian/usr/share/doc/ipentool +rsync -rv "$1" debian/usr/share/ipentool +cp debian/DEBIAN/copyright debian/usr/share/doc/ipentool/ +cp "$2" debian/usr/share/ipentool/logo.svg +dpkg-deb -b debian "out/ipentool_$3_all.deb" diff --git a/nbproject/project.properties b/nbproject/project.properties index ea44320..49696ce 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -1,6 +1,9 @@ -file.reference.IPENtool-public_html=public_html -file.reference.IPENtool-test=test -file.reference.Sources-IPENtool=. +auxiliary.org-netbeans-modules-javascript-nodejs.enabled=false +auxiliary.org-netbeans-modules-javascript-nodejs.node_2e_default=true +auxiliary.org-netbeans-modules-javascript-nodejs.sync_2e_enabled=true +auxiliary.org-netbeans-modules-javascript2-requirejs.enabled=true +auxiliary.org-netbeans-modules-web-clientproject-api.js_2e_libs_2e_folder=js/libs +file.reference.IPENtool-src=src files.encoding=UTF-8 project.license=mpl -site.root.folder=${file.reference.Sources-IPENtool} +site.root.folder=${file.reference.IPENtool-src} diff --git a/nbproject/project.xml b/nbproject/project.xml index f48d529..137a9f2 100644 --- a/nbproject/project.xml +++ b/nbproject/project.xml @@ -5,5 +5,6 @@ IPENtool + diff --git a/css/main.css b/src/css/main.css similarity index 100% rename from css/main.css rename to src/css/main.css diff --git a/src/img/icon.png b/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a20704f9de2c86ab64a8f2c17a1b7057a7d84f85 GIT binary patch literal 17890 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 + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/img/signature-line.svg b/src/img/signature-line.svg similarity index 100% rename from img/signature-line.svg rename to src/img/signature-line.svg diff --git a/index.html b/src/index.html similarity index 99% rename from index.html rename to src/index.html index a3f1f7f..be0263a 100644 --- a/index.html +++ b/src/index.html @@ -11,6 +11,7 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/. +