Commit 60529a2b authored by Daniel Wolf's avatar Daniel Wolf

Updated license

parent 967a7177
This diff is collapsed.
This project is generally licensed under the GPLv3. However, if this license doesn't match your requirements, or prevents you from using
this code otherwise, contact the developer at daniel.wolf@frostnerd.com. A license exception and/or purpose-bound modification to the license might
be granted then.
\ No newline at end of file
......@@ -5,20 +5,6 @@ They are unsigned.<br><br>
This is the source code for my app DNS Changer, which can be found here: https://play.google.com/store/apps/details?id=com.frostnerd.dnschanger<br><br>
As this project contains many hours of my (unpaid) work and I don't get any revenue from it at all I'm sure most of you understand that I don't want just anybody to come along and reuse my project in large parts, presenting it as their own work. That's why I impose the following restrictions:
1. You may use parts of the source code but are NOT allowed to copy my source code as a whole or in greater parts, unless given proper permission to do so.<br>
2. You are NOT allowed to present parts of my work as your own without proper permission from me.<br>
3. You are NOT allowed to use parts of this commercially without proper permission from me.<br>
4. You MUST give attribution to me when using parts of my code (Visually to possible users and in the Sourcecode).<br>
5. Additionally, when using part of my code please inform me that you want to use parts of my code AND inform your users that it contains work done by me.<br><br>
If you want to use parts just wrint me a simple email. Any of these restrictions might be lifted then. I don't bite ;)
For projects which generate no revenue (direct or indirect) and are generally available up to 10 people or less terms 1 and 5 do not apply. Under these circumstances, if you want shoot me an email about what you want to do with the source code but proper permission is not required. Attribution (term 4) is still required, but only in source code
Have a look at the wiki for this app: https://git.frostnerd.com/PublicAndroidApps/DnsChanger/wikis/home<br>
This app could possibly spy on using the VPN connection which has to be used to apply the choosen DNS Servers. It doesn't. This project is open source so that people familiar with java/Android can check on this promise.
If you are not familiar with it: The VPN is only local. Using the VPN you are assigned an IP-Address which can't be used in the internet (192.168.0.1) and connect to the device only (127.0.0.1:8087),
......@@ -28,8 +14,7 @@ NOT to an endpoint in the internet. The relevant code lines are those: https://g
Feel free to contribute to this project, it's completely free to sign up and I'd be happy to fix issues or implement requests.<br><br>
© Daniel Wolf 2017
All rights reserved.<br>
© Daniel Wolf 2019
This app uses the library dnsjava. License:
......
......@@ -6,14 +6,23 @@ import android.database.sqlite.SQLiteException;
import com.frostnerd.dnschanger.activities.ErrorDialogActivity;
import com.frostnerd.dnschanger.util.ThemeHandler;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* <p>
* Terms on usage of my code can be found here: https://git.frostnerd.com/PublicAndroidApps/DnsChanger/blob/master/README.md
* <p>
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class DNSChanger extends Application {
private static final String LOG_TAG = "[DNSCHANGER-APPLICATION]";
......
......@@ -28,14 +28,23 @@ import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* Terms on usage of my code can be found here: https://git.frostnerd.com/PublicAndroidApps/DnsChanger/blob/master/README.md
* 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/>.
*
* <p>
* development@frostnerd.com
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class LogFactory {
private static File logFile;
......
......@@ -31,14 +31,23 @@ import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* Code may NOT be used without proper permission, neither in binary nor in source form.
* All redistributions of this software in source code must retain this copyright header
* All redistributions of this software in binary form must visibly inform users about usage of this software
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class AdvancedSettingsActivity extends AppCompatPreferenceActivity {
private boolean dialogShown = false;
......
......@@ -42,14 +42,23 @@ import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* Terms on usage of my code can be found here: https://git.frostnerd.com/PublicAndroidApps/DnsChanger/blob/master/README.md
* 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/>.
*
* <p>
* development@frostnerd.com
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class AppSelectionActivity extends UtilityActivity implements SearchView.OnQueryTextListener{
private long lastBackPress;
......
......@@ -19,14 +19,23 @@ import com.frostnerd.dnschanger.util.Util;
import java.util.ArrayList;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* Terms on usage of my code can be found here: https://git.frostnerd.com/PublicAndroidApps/DnsChanger/blob/master/README.md
* 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/>.
*
* <p>
* development@frostnerd.com
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class BackgroundVpnConfigureActivity extends AppCompatActivity {
private boolean startService = false;
......
......@@ -25,14 +25,23 @@ import com.frostnerd.dnschanger.util.ThemeHandler;
import java.io.File;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* Terms on usage of my code can be found here: https://git.frostnerd.com/PublicAndroidApps/DnsChanger/blob/master/README.md
* 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/>.
*
* <p>
* development@frostnerd.com
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class ErrorDialogActivity extends Activity {
private static final String LOG_TAG = "[ErrorDialogActivity]";
......
......@@ -9,11 +9,23 @@ import android.support.v7.app.AlertDialog;
import com.frostnerd.dnschanger.R;
import com.frostnerd.dnschanger.util.ThemeHandler;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class InvalidDNSDialogActivity extends Activity {
......
......@@ -69,14 +69,23 @@ import java.util.Arrays;
import java.util.List;
import java.util.Random;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* Terms on usage of my code can be found here: https://git.frostnerd.com/PublicAndroidApps/DnsChanger/blob/master/README.md
* 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/>.
*
* <p>
* development@frostnerd.com
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class MainActivity extends NavigationDrawerActivity implements RuleImport.ImportStartedListener {
private static final String LOG_TAG = "[MainActivity]";
......
......@@ -39,14 +39,23 @@ import com.frostnerd.utils.general.Utils;
import com.frostnerd.utils.general.VariableChecker;
import com.frostnerd.utils.lifecyclehelper.UtilityActivity;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* <p>
* Terms on usage of my code can be found here: https://git.frostnerd.com/PublicAndroidApps/DnsChanger/blob/master/README.md
* <p>
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class PinActivity extends UtilityActivity {
private MaterialEditText met;
......
......@@ -23,11 +23,23 @@ import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class SettingsImportActivity extends Activity {
private static final String LOG_TAG = "[SettingsImportActivity]";
......
......@@ -17,14 +17,23 @@ import com.frostnerd.dnschanger.util.Preferences;
import java.util.ArrayList;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* Terms on usage of my code can be found here: https://git.frostnerd.com/PublicAndroidApps/DnsChanger/blob/master/README.md
* 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/>.
*
* <p>
* development@frostnerd.com
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class ShortcutActivity extends AppCompatActivity {
private static final String LOG_TAG = "[ShortcutActivity]";
......
......@@ -20,14 +20,23 @@ import com.frostnerd.utils.general.DesignUtil;
import java.util.HashSet;
import java.util.Set;
/**
* Copyright Daniel Wolf 2018
* All rights reserved.
* Code may NOT be used without proper permission, neither in binary nor in source form.
* All redistributions of this software in source code must retain this copyright header
* All redistributions of this software in binary form must visibly inform users about usage of this software
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class DNSEntryAdapter extends DatabaseAdapter<DNSEntry, DNSEntryAdapter.ViewHolder> {
@NonNull private Context context;
......
......@@ -24,14 +24,23 @@ import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* Code may NOT be used without proper permission, neither in binary nor in source form.
* All redistributions of this software in source code must retain this copyright header
* All redistributions of this software in binary form must visibly inform users about usage of this software
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class QueryLogAdapter extends DatabaseAdapter<DNSQuery, QueryLogAdapter.ViewHolder> {
private final SimpleDateFormat timeFormatter,
......
......@@ -19,11 +19,23 @@ import org.xbill.DNS.DClass;
import org.xbill.DNS.Record;
import org.xbill.DNS.Type;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class QueryResultAdapter extends BaseAdapter<QueryResultAdapter.ViewHolder> {
private Record[] answer;
......
......@@ -21,14 +21,23 @@ import com.frostnerd.utils.database.orm.parser.columns.Column;
import com.frostnerd.utils.database.orm.statementoptions.queryoptions.WhereCondition;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* Code may NOT be used without proper permission, neither in binary nor in source form.
* All redistributions of this software in source code must retain this copyright header
* All redistributions of this software in binary form must visibly inform users about usage of this software
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class RuleAdapter<T extends Activity &RuleImport.ImportStartedListener> extends DatabaseAdapter<DNSRule, RuleAdapter.ViewHolder>{
private LayoutInflater layoutInflater;
......
......@@ -23,11 +23,23 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class DatabaseHelper extends com.frostnerd.utils.database.DatabaseHelper {
public static final String DATABASE_NAME = "data";
......
......@@ -9,11 +9,23 @@ import com.frostnerd.utils.database.orm.parser.ParsedEntity;
import com.frostnerd.utils.database.orm.parser.columns.Column;
import com.frostnerd.utils.database.orm.statementoptions.queryoptions.WhereCondition;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class DNSResolver {
private DatabaseHelper db;
......
......@@ -3,14 +3,23 @@ package com.frostnerd.dnschanger.database.accessors;
import com.frostnerd.dnschanger.database.DatabaseHelper;
import com.frostnerd.dnschanger.database.entities.DNSQuery;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* Code may NOT be used without proper permission, neither in binary nor in source form.
* All redistributions of this software in source code must retain this copyright header
* All redistributions of this software in binary form must visibly inform users about usage of this software
* <p>
* development@frostnerd.com
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
public class QueryLogger {
private DatabaseHelper helper;
......
......@@ -14,6 +14,24 @@ import com.frostnerd.utils.database.orm.annotations.Unique;
import java.util.TreeMap;
/*
* Copyright (C) 2019 Daniel Wolf (Ch4t4r)
*
* 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/>.
*
* You can contact the developer at daniel.wolf@frostnerd.com.
*/
@Table(name = "DNSEntry")
public class DNSEntry extends MultitonEntity implements Comparable<DNSEntry>{
@Serialized(using = IPPortSerializer.class)
......
......@@ -8,14 +8,23 @@ import com.frostnerd.utils.database.orm.annotations.NotNull;
import com.frostnerd.utils.database.orm.annotations.PrimaryKey;
import com.frostnerd.utils.database.orm.annotations.Table;
/**
* Copyright Daniel Wolf 2017
* All rights reserved.
* Code may NOT be used without proper permission, neither in binary nor in source form.
* All redistributions of this software in source code must retain this copyright header
* All redistributions of this software in binary form must visibly inform users about usage of this software
* <p>
* deve