commit 45d819a5ce0f10dc7093a96b466c541bb8260ae2 Author: Harrisembuaba1234 <104016146+Harrisembuaba1234@users.noreply.github.com> Date: Mon May 26 21:27:13 2025 +0700 first commit diff --git a/app.py b/app.py new file mode 100644 index 0000000..82cda92 --- /dev/null +++ b/app.py @@ -0,0 +1,175 @@ +from flask import Flask, render_template, request, redirect, url_for, jsonify +import os +import base64 +import tensorflow as tf +from tensorflow import keras +from keras import preprocessing +import numpy as np +import cv2 +from werkzeug.utils import secure_filename +import time + +app = Flask(__name__) +app.config["UPLOAD_FOLDER"] = "static/uploads/" + +# folder static/uploads +if not os.path.exists(app.config["UPLOAD_FOLDER"]): + os.makedirs(app.config["UPLOAD_FOLDER"]) + +# Load model Hard Cascade Classifier +tomato_cascade = cv2.CascadeClassifier("model/tomato_classifier.xml") + +# Load kedua model klasifikasi +#model_ripe = keras.models.load_model("model/CNN MobileNetV2-epochs10new-100.0.h5") +#model_fresh = keras.models.load_model("model/CNN MobileNetV2-epochs10kesegaran-99.66.h5") + +modl_newgen = keras.models.load_model("model/CNN MobileNetV2-epochs5newgen-99.41.h5") + +# Fungsi deteksi tomat +def is_tomato(img_path): + """Deteksi apakah gambar mengandung tomat atau tidak""" + img = cv2.imread(img_path) + gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + tomatoes = tomato_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) + return len(tomatoes) > 0 + +# Fungsi prediksi gambar +def predict_image(img_path, model, class_names): + img = preprocessing.image.load_img(img_path, target_size=(224, 224)) + img_array = preprocessing.image.img_to_array(img) + img_array = np.expand_dims(img_array, axis=0) + img_array /= 255.0 + predictions = model.predict(img_array) + result = np.argmax(predictions, axis=1) + confidence = int(np.max(predictions) * 100) + return class_names[result[0]], confidence + +@app.route("/") +def index(): + return render_template("index.html") + +@app.route("/upload", methods=["GET", "POST"]) +def upload(): + if request.method == "POST": + # Proses file unggahan + if 'file' not in request.files: + return render_template("upload.html", error="Tidak ada file yang dipilih.") + + file = request.files['file'] + if file.filename == '': + return render_template("upload.html", error="Nama file kosong. Silakan pilih file lain.") + + if file: + filename = secure_filename(file.filename) + filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) + file.save(filepath) + + # Validasi gambar menggunakan Hard Cascade + if not is_tomato(filepath): + return render_template("upload.html", error="Gambar yang diunggah bukan tomat. Harap unggah gambar tomat.") + + # Simpan path gambar di sesi sementara untuk ditampilkan di halaman hasil + return redirect(url_for("predict", img_path=filename)) + + return render_template("upload.html") + +@app.route("/predict", methods=["GET", "POST"]) +def predict(): + if request.method == "POST": + # Tangani data gambar dari kamera + data = request.get_json() + if data and "image" in data: + # Decode Base64 menjadi file gambar + image_data = data["image"].split(",")[1] + image_bytes = base64.b64decode(image_data) + filename = f"camera_{int(time.time())}.png" + filepath = os.path.join(app.config["UPLOAD_FOLDER"], filename) + + # Simpan gambar ke folder uploads + with open(filepath, "wb") as f: + f.write(image_bytes) + + # Validasi gambar menggunakan Hard Cascade + if not is_tomato(filepath): + return jsonify({"success": False, "error": "Gambar yang diambil bukan tomat. Harap ambil gambar tomat."}), 400 + + # Lakukan prediksi setelah validasi + #class_names_ripe = ['Belum Matang', 'Matang'] + #class_names_fresh = ['Busuk', 'Segar'] + + class_names_tomat = ['Matang Busuk', 'Matang Segar', 'Mentah Busuk', 'Mentah Segar'] + + # Prediksi kematangan + #predicted_class_ripe, confidence_ripe = predict_image(filepath, model_ripe, class_names_ripe) + + # Prediksi kesegaran + #predicted_class_fresh, confidence_fresh = predict_image(filepath, model_fresh, class_names_fresh) + + predicted_class_tomat, confidence_tomat = predict_image(filepath, modl_newgen, class_names_tomat) + + # Gabungkan hasil prediksi + #predicted_class = f"{predicted_class_tomat}" + #average_confidence = round((confidence_ripe + confidence_fresh) / 2, 2) + + # Kirim hasil prediksi sebagai respons JSON + return jsonify({ + "success": True, + "filename": filename, + "predicted_class": predicted_class_tomat, + "confidence": confidence_tomat + }) + + return jsonify({"success": False, "error": "No valid image data received"}), 400 + + # Tangani metode GET untuk menampilkan halaman prediksi + img_path = request.args.get("img_path") + if not img_path: + return redirect(url_for("upload")) + + filepath = os.path.join(app.config["UPLOAD_FOLDER"], img_path) + if not os.path.exists(filepath): + return redirect(url_for("upload")) + + #class_names_ripe = ['Belum Matang', 'Matang'] + #class_names_fresh = ['Busuk', 'Segar'] + + class_names_tomat = ['Matang Busuk', 'Matang Segar', 'Mentah Busuk', 'Mentah Segar'] + + # Prediksi kematangan + #predicted_class_ripe, confidence_ripe = predict_image(filepath, model_ripe, class_names_ripe) + + # Prediksi kesegaran + #predicted_class_fresh, confidence_fresh = predict_image(filepath, model_fresh, class_names_fresh) + + #predicted_class = f"{predicted_class_ripe} & {predicted_class_fresh}" + #average_confidence = round((confidence_ripe + confidence_fresh) / 2, 2) + + predicted_class_tomat, confidence_tomat = predict_image(filepath, modl_newgen, class_names_tomat) + + local_time = time.localtime(time.time()) + data_date = time.strftime("%d-%m-%Y", local_time) + data_time = time.strftime("%H:%M:%S", local_time) + + return render_template( + "predict.html", + img_path=img_path, + predicted_class=predicted_class_tomat, + confidence=confidence_tomat, + data_date=data_date, + data_time=data_time + ) + +@app.route("/more") +def more(): + return render_template("more.html") + +@app.route("/faq") +def faq(): + return render_template("faq.html") + +@app.route("/about") +def about(): + return render_template("about.html") + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=5000, debug=True) diff --git a/cert.pem b/cert.pem new file mode 100644 index 0000000..39ff75d --- /dev/null +++ b/cert.pem @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIUBBUH7GVLZnSlzG8fGUoKKpI4BkMwDQYJKoZIhvcNAQEL +BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM +GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNTAyMjAxMjQyMTNaFw0yNjAy +MjAxMjQyMTNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw +HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCgArV1UD1SVwrNLyhMJWsMKxCPVLXwtjytrcce0Zp1 +lAH4tzuRZSOZftMQoINzy1IjxqWNmcID3vh9N3sZLUExytlDTQ8/eUhlzT1Ob9j4 +76Xjm/xTI3enmH7+GJSkeRicqcCdJ11f36q+XOOQNrzz8JUqLiheNKbF7aBMpPGB +5fBLQPFaSp7O0a9VEsVD8f7fZo+I2X0stpkU+laqd4In5pBjt9PIluBU28hnewJX +4NU5ByLcy8miKIiKJX3ZV0jFzgtwgSMp0sbhwKgorvZ0cJFD7hJFnaB4qE0HMckl +a82x0sQ/TQ/BSnuGD339zoeiLQdSclroiwNFO80QcVbfpOIiZq4egA9AR9B3jPCd +XgOxwffFkTyuXWmMmROBCcVaAM/BA33FJFupktvWSM2YXsy2m3b+/23t35/GwFB0 +ZkMQBHkHwqZgAlB4xAl6LFzvM0g/wObbtHeFUpXzZ+g5HO1Ou3THhSU9TzE6IVyg +15F1uHQeBkGW6CBGyq9Vkggqh5rF6vwLgQhKFFDyFYDihu3Z8e5kvnD2XEoVv7fK +yHCMSoY/T71FtSgclknQZmgkYnyjY2d2k/SP5yRy4/BdPoeQqkli7JoUu8jWoNXo +YPTsrhAcj5FBrBx6QhhroxWF5vFWlKtmj65UkEI0O0Otqb/waxAw8+WdwjnhVWHm +bwIDAQABo1MwUTAdBgNVHQ4EFgQU+b5d0PkP+HLsJ07q4uMys8KojxcwHwYDVR0j +BBgwFoAU+b5d0PkP+HLsJ07q4uMys8KojxcwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQsFAAOCAgEAgC2TZgbOYO4mNPLdK/YU7JUcPhzuyLsC9ub4w7HL2brB +VKCLf4i+3yvNdaXDR2VAhN1TluMjILTJi1P4ognLCrvchBf0Fa0wSCUoR+fA88g8 +IBsbMiVdjSyfOwfyByR+45/Ma13uGjavC1ArPIGMX6qro40gsYoBYY36IhgxS23r +LKjDeAo44pRCVX/r+2i0NZpwwckEK0Gx8v0CYAojGZ1l7SrNbGSYsX/lzB1KWkZA +lVYNvbMG1V89UhxHxj1Ye7Yc21IMXuLe2Eu8WgV9WblndXO4vupVqr/iwMbtYx4f +zy54fK8MsNYGbPlEK9ZLHFgs3k6jT+qLSKA9/PiSk3ZhJTrgjsOsP5Hh2x3LDGEy +WoLA8DuOgyr6k/arz1jeltZPSVjeJNTz9g8XECeHJyQE+fVd8ByJKdQj9qwKgxxl +YIuccwru6dEIgcqlNCLl5NplTBHnwVwlEUaRtoAnsnEcDQB1Je/4XFCo2sSC1y8l +P8o5zbnJVKdqJ1CmZLhoEjQxas7IWHydGhGVoA7/t0yW7HRHwvhLzxtNbGErPMR1 +ECQaA+2zImiBO4oJA/dXc54cDi+P/iLZSflxgHEp/5r2ujhOQ0Nbiu7L/Do7z5gC +aA+Ch5W9ESkdQwMjbzkXFRiQdyUQkWw3oX2YsoO8l6k7xJu9moezdyPrBzEkGPo= +-----END CERTIFICATE----- diff --git a/key.pem b/key.pem new file mode 100644 index 0000000..1efa249 --- /dev/null +++ b/key.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCgArV1UD1SVwrN +LyhMJWsMKxCPVLXwtjytrcce0Zp1lAH4tzuRZSOZftMQoINzy1IjxqWNmcID3vh9 +N3sZLUExytlDTQ8/eUhlzT1Ob9j476Xjm/xTI3enmH7+GJSkeRicqcCdJ11f36q+ +XOOQNrzz8JUqLiheNKbF7aBMpPGB5fBLQPFaSp7O0a9VEsVD8f7fZo+I2X0stpkU ++laqd4In5pBjt9PIluBU28hnewJX4NU5ByLcy8miKIiKJX3ZV0jFzgtwgSMp0sbh +wKgorvZ0cJFD7hJFnaB4qE0HMckla82x0sQ/TQ/BSnuGD339zoeiLQdSclroiwNF +O80QcVbfpOIiZq4egA9AR9B3jPCdXgOxwffFkTyuXWmMmROBCcVaAM/BA33FJFup +ktvWSM2YXsy2m3b+/23t35/GwFB0ZkMQBHkHwqZgAlB4xAl6LFzvM0g/wObbtHeF +UpXzZ+g5HO1Ou3THhSU9TzE6IVyg15F1uHQeBkGW6CBGyq9Vkggqh5rF6vwLgQhK +FFDyFYDihu3Z8e5kvnD2XEoVv7fKyHCMSoY/T71FtSgclknQZmgkYnyjY2d2k/SP +5yRy4/BdPoeQqkli7JoUu8jWoNXoYPTsrhAcj5FBrBx6QhhroxWF5vFWlKtmj65U +kEI0O0Otqb/waxAw8+WdwjnhVWHmbwIDAQABAoICAA8x4qh2y7P3hxOQEFwWy5EW +v9ZUnYhzzdRSZc/T6L6UpRFI2TPH7ncDl6iDDaif3LeABDWrrcRvVpqRe7Oa3A+N +607cUP/elRTxxgoeTfTp0Q+Jvw7oFdNJBHo9vFPYGhG6fwuNcu0JUO4N5SBLSmtB +4/Bi/LthdZrjI29T1IlY3BZRXvoLjwQl3mgORcRbhTASzbuZp6zo1CWtVjCO88G1 +P+3wRYDNbxUv39qP0FunAqiNOG7OPWIURk8UG1zZ0JPUKrru0HeGyBMlF/LxFn9d +NzZDs+F/g/8hQFtYC3ltwNVLpg46062v1IYZD4ZcJ/4rF4BpUp+1n8Rh1uniUXT5 +5e/LN7qsD3RjnuD02wcXAXXMH003bl1oF/Td0VvcxNH2M6CvGiu5d0XFM3m33T0G +QbJjpDYhUEhFvbnfuaUfhBPP8Zp3omnRbq64rPC75Oa3fFTMoJQxOER0XsTmT/QG +Yopu9u7vyR27QtqIZYSiMywLGF/O3eOPIbMFlb5xuxzsgJlRosNzGR+7jsKayrBO +dSpdA2tEBS3CBZK6gFNFcYLxiTJAXhC3mUlHF14V3aP3eEOiCxs0kfls/onA7pG3 +yDsuGas45hDzgFDvyg0qUJ0K6WYqvZHq3qWxf3A0Ei9sIaRMKa5YPvV6BJh4SDdB +Q1vfxytVWVmDekCODR2RAoIBAQDaqumrMYvF+S2IoHk87DnqLD21xt4rVU1xiM0K +yOtH7abiqLSp7+1qbk1EQKwGv/4+8lP6FUKgmg5nG5HGJzSFfFqgMAVYx+KkDgBp +2yJu0hrRlxrvhkXVipKFGWoH/lZIyVOPsOuRFhlI5va1vxEPpkc40eTz4jOrbTC4 +BI3+6sNCwh6hmwCl/4+3iQtFc5jwwJts0sgmZKryFfIIj3kqLsEZTOctfrceFuFx +ERWtIwKj0s9MNRxXCGdxXfUcJ+FrwLtln0J79Oa+55bTQMjkDZe7hUgpo/BD/hk+ +uyMJOGHd+0OwAqFGI3GZr2MG7oE7TWk3GLdrdp+4yuvX1s3/AoIBAQC7VCGWgX5F +bH+q6vI1nAhhKh76b/16SFbN1bnTrQMg2wWnMCoKFp8pLOIJPk61rwnjBth3cOx/ +JG5e6QsQMBWGBoPdczeMpzT/oUIPiTZd26y7kZT+PUdqSmYOPk9KHlGMcMlbYjXN +bofc4oKiOCS9f8UKHbZgub4PoE1TR0DxWfeqoekx40/C7SI9aopXJVOThlQBXQEB +aoWnJrgqnpw0UwNb/39aUW8oG2q47eYMmVyFdN0bYe9NRBqETBsz+VMbPK9Jm13k +XXKJGJkfQWANycMVcn7VNNgf18Tm72J+qHKmgN09zGSKyi7rN6nyWHE1gz5eb6o2 ++trfwNsxaseRAoIBAQC2LrOkSBFWDjbboCeilIXkDpwTeO7dV6LANuPuWlt8gAoM +ydZLx3Qcum1xshghP5DKTQeeUlxChlf9m8CmQT/G/0ZaM+gggdjYKjo597MGddKW +ULjGWy6PrXZJolTu9/5XgjU2gIajSLAkRxnBbsD+MuEf+/AvKYU3DDANAO51No8c +bbMrnYK6yuOoXGuhn6AK5c4YqrzLEBBExffzHeYrOOz08VeiVfKnBRUrKLrQl1y5 +tQe1TIKiGIRmtYtju+5Z4ie/kSLJN8+Puk+1DkLRjmmeeHsZBldFrszFsRCNvAX9 +9jv8xxQq5ZjeHHv66HePOv2wQ819oUWNprM8DuFtAoIBAElQbujJe1LOWNTaqLqk +e38TjhYzmD+wahCa0eRvNOc58Ody6TETk2z4/OnjMcjXXYY1mqh8UIKeDngkusi2 +GOZgTGFyA06P7iURxpnv+JAZNmweWPJ7pySJQ5HVfxCh9waA6b1THX1uAcxH9hpo +4LAtfj8sS8FlUGYrNbgfDeKndE+amHqG3SOLzTe+J7Bdkm0NSHlUHd2hA/fcJn2/ +n6C20HzD7OK7Nka7HDSOHtfVealdiF98H7zcp4gZhRf9PzJMuMmU/dUvYXEYaG0c +F+ythyUwr0TgLqmft5cuHx007dIOYwgZo0vSPzSdj2yigoQP/mvVRgfIe7rQbrjT +cpECggEBAMgKQS2cjNkEaPAA9mj52EPpO5A4e69imD1RfTMpYGOJsF5+oRG4jLiC +CkfOGo82FSYc+o+ze8/ER60xVnsKAKJfYTcrn3qMhS0mcRCaVJ6nBkTQwwTBZF2A +9h8tIkIWhGwz1vAISNzoQTUtCl4cbZeFobfYMVcJdr3KzXHw54HHPXYJc8Gc2+Ty +zvpjTdeXhnzsigJmyurn119tR13iBj1T+ZTIEY8Aun4N08uyu/P9LUtdEkbS2z3z +X3M7Bsna0zM6Tl6wNLjVjQ2eaPdPQBZr/oadVZGkF/pD5Zu3WTMvYF4ETyA8evSR +EPmju7tZZ4jK6tFhrXacBTGOFfdVbZw= +-----END PRIVATE KEY----- diff --git a/model/CNN MobileNetV2-epochs10kesegaran-99.66.h5 b/model/CNN MobileNetV2-epochs10kesegaran-99.66.h5 new file mode 100644 index 0000000..ff8d67a Binary files /dev/null and b/model/CNN MobileNetV2-epochs10kesegaran-99.66.h5 differ diff --git a/model/CNN MobileNetV2-epochs10new-100.0.h5 b/model/CNN MobileNetV2-epochs10new-100.0.h5 new file mode 100644 index 0000000..bb7dbf6 Binary files /dev/null and b/model/CNN MobileNetV2-epochs10new-100.0.h5 differ diff --git a/model/CNN MobileNetV2-epochs5newgen-99.41.h5 b/model/CNN MobileNetV2-epochs5newgen-99.41.h5 new file mode 100644 index 0000000..63294e4 Binary files /dev/null and b/model/CNN MobileNetV2-epochs5newgen-99.41.h5 differ diff --git a/model/tomato_classifier.xml b/model/tomato_classifier.xml new file mode 100644 index 0000000..c052340 --- /dev/null +++ b/model/tomato_classifier.xml @@ -0,0 +1,2689 @@ + + + + BOOST + HAAR + 24 + 24 + + GAB + 9.9900001287460327e-01 + 4.0000000596046448e-01 + 9.4999999999999996e-01 + 1 + 100 + + 0 + 1 + BASIC + 14 + + + <_> + 5 + -1.0598268508911133e+00 + + <_> + + 0 -1 93 6.3974158838391304e-03 + + -7.9347825050354004e-01 8.6301368474960327e-01 + <_> + + 0 -1 156 -1.7986114835366607e-04 + + 6.2237858772277832e-01 -7.8459793329238892e-01 + <_> + + 0 -1 53 2.5509158149361610e-02 + + -5.3881770372390747e-01 8.7420386075973511e-01 + <_> + + 0 -1 30 -7.7267020940780640e-01 + + -9.9218326807022095e-01 5.1083892583847046e-01 + <_> + + 0 -1 0 -2.5649776216596365e-04 + + 5.4622817039489746e-01 -1. + + <_> + 8 + -1.3518035411834717e+00 + + <_> + + 0 -1 197 4.9783745780587196e-03 + + -7.5044882297515869e-01 6.3235294818878174e-01 + <_> + + 0 -1 140 -1.9561337830964476e-04 + + 4.1674700379371643e-01 -6.5786147117614746e-01 + <_> + + 0 -1 109 -2.0335553563199937e-04 + + 3.8367107510566711e-01 -6.2924414873123169e-01 + <_> + + 0 -1 76 -5.4478389210999012e-04 + + 4.8753556609153748e-01 -4.3947711586952209e-01 + <_> + + 0 -1 24 -3.3164578676223755e-01 + + 2.4427551031112671e-01 -8.3525586128234863e-01 + <_> + + 0 -1 188 1.8223994993604720e-04 + + -3.3466309309005737e-01 5.9176856279373169e-01 + <_> + + 0 -1 113 -1.5829990152269602e-03 + + 6.9834184646606445e-01 -3.0073723196983337e-01 + <_> + + 0 -1 173 -1.8313252367079258e-03 + + 6.8930208683013916e-01 -2.7047535777091980e-01 + + <_> + 9 + -1.8680168390274048e+00 + + <_> + + 0 -1 195 2.0063754171133041e-02 + + -7.0216453075408936e-01 6.4210528135299683e-01 + <_> + + 0 -1 7 4.4641569256782532e-03 + + -4.0418303012847900e-01 6.8469220399856567e-01 + <_> + + 0 -1 12 -5.9132277965545654e-03 + + 6.8510925769805908e-01 -2.7504459023475647e-01 + <_> + + 0 -1 117 -9.9523235112428665e-03 + + 4.7589278221130371e-01 -4.4639599323272705e-01 + <_> + + 0 -1 64 2.6767868548631668e-02 + + -2.5764209032058716e-01 5.7081949710845947e-01 + <_> + + 0 -1 97 3.7198350764811039e-03 + + -1.8161067366600037e-01 7.5483864545822144e-01 + <_> + + 0 -1 135 -3.7021232856204733e-05 + + 3.3333343267440796e-01 -4.6313804388046265e-01 + <_> + + 0 -1 47 -4.1358903981745243e-03 + + -8.2776916027069092e-01 1.9585053622722626e-01 + <_> + + 0 -1 182 -1.4477524906396866e-02 + + 5.1876300573348999e-01 -2.9384234547615051e-01 + + <_> + 12 + -1.9668887853622437e+00 + + <_> + + 0 -1 82 -1.3254590332508087e-02 + + 6.8000000715255737e-01 -7.1130436658859253e-01 + <_> + + 0 -1 115 -9.6908614039421082e-02 + + -8.5800373554229736e-01 9.4327136874198914e-02 + <_> + + 0 -1 94 6.9256639108061790e-03 + + -3.0149972438812256e-01 5.5897116661071777e-01 + <_> + + 0 -1 137 3.1247087754309177e-03 + + -1.9692343473434448e-01 7.3242652416229248e-01 + <_> + + 0 -1 16 2.7262321673333645e-03 + + -1.9832551479339600e-01 6.6042912006378174e-01 + <_> + + 0 -1 50 1.8181549385190010e-03 + + -1.0735511779785156e-01 7.5266635417938232e-01 + <_> + + 0 -1 192 -2.6606924366205931e-03 + + 5.7344865798950195e-01 -2.1617864072322845e-01 + <_> + + 0 -1 43 -1.0595647990703583e-01 + + -1.7929221689701080e-01 5.8193337917327881e-01 + <_> + + 0 -1 1 1.2352833524346352e-02 + + -2.6469084620475769e-01 6.1921358108520508e-01 + <_> + + 0 -1 92 -8.3960937336087227e-03 + + 8.7886697053909302e-01 -9.8691299557685852e-02 + <_> + + 0 -1 65 -2.0129746198654175e-01 + + 4.0331792831420898e-01 -3.4674587845802307e-01 + <_> + + 0 -1 35 -1.0981890372931957e-03 + + 5.8642709255218506e-01 -2.5506359338760376e-01 + + <_> + 16 + -1.5752023458480835e+00 + + <_> + + 0 -1 74 2.0468980073928833e-02 + + -7.1555554866790771e-01 4.3999999761581421e-01 + <_> + + 0 -1 183 8.2849286263808608e-04 + + -3.0850130319595337e-01 5.9982472658157349e-01 + <_> + + 0 -1 10 5.7070553302764893e-03 + + -2.0648923516273499e-01 6.6448396444320679e-01 + <_> + + 0 -1 201 1.4791111461818218e-03 + + -1.3015501201152802e-01 6.5213561058044434e-01 + <_> + + 0 -1 193 -8.7306480854749680e-03 + + 6.4041638374328613e-01 -2.0259933173656464e-01 + <_> + + 0 -1 164 -5.8051734231412411e-04 + + 5.4560053348541260e-01 -1.7930766940116882e-01 + <_> + + 0 -1 159 -3.4578977647470310e-05 + + 2.2767010331153870e-01 -4.9291035532951355e-01 + <_> + + 0 -1 102 -1.9502053037285805e-03 + + -6.3924151659011841e-01 2.0408214628696442e-01 + <_> + + 0 -1 27 8.4672041703015566e-04 + + -2.1347069740295410e-01 5.6992250680923462e-01 + <_> + + 0 -1 26 -8.6396868573501706e-04 + + 4.8921489715576172e-01 -2.5807002186775208e-01 + <_> + + 0 -1 101 -4.3156200263183564e-05 + + 2.9736325144767761e-01 -4.2133620381355286e-01 + <_> + + 0 -1 73 1.6094546299427748e-03 + + 1.2419487535953522e-01 -7.6580291986465454e-01 + <_> + + 0 -1 169 1.0821870528161526e-03 + + -3.2538422942161560e-01 3.3886820077896118e-01 + <_> + + 0 -1 38 -4.9580976366996765e-02 + + -5.7179498672485352e-01 2.0224615931510925e-01 + <_> + + 0 -1 52 -3.1487867236137390e-02 + + 7.6760864257812500e-01 -1.5663687884807587e-01 + <_> + + 0 -1 118 2.5548508856445551e-03 + + 1.4661426842212677e-01 -8.3414208889007568e-01 + + <_> + 15 + -1.8041814565658569e+00 + + <_> + + 0 -1 80 -7.0238849148154259e-03 + + 4.6296295523643494e-01 -7.0052540302276611e-01 + <_> + + 0 -1 178 -1.9309797789901495e-03 + + 5.5827915668487549e-01 -2.9973280429840088e-01 + <_> + + 0 -1 83 1.0862007737159729e-02 + + -2.2292983531951904e-01 5.7251280546188354e-01 + <_> + + 0 -1 172 -9.6978776156902313e-02 + + -7.5242245197296143e-01 1.6543816030025482e-01 + <_> + + 0 -1 6 5.8374525979161263e-03 + + -1.3670139014720917e-01 7.1169447898864746e-01 + <_> + + 0 -1 98 5.3701079450547695e-03 + + -2.0536106824874878e-01 5.7397550344467163e-01 + <_> + + 0 -1 90 -2.3936000652611256e-03 + + 6.4870285987854004e-01 -2.1307837963104248e-01 + <_> + + 0 -1 139 2.1040001884102821e-03 + + -2.0571845769882202e-01 5.1046818494796753e-01 + <_> + + 0 -1 196 -4.0057133883237839e-03 + + 6.9900703430175781e-01 -1.5375715494155884e-01 + <_> + + 0 -1 58 1.3705750461667776e-04 + + 1.7537170648574829e-01 -6.2824374437332153e-01 + <_> + + 0 -1 44 5.8879307471215725e-04 + + 2.0275563001632690e-01 -5.4979228973388672e-01 + <_> + + 0 -1 31 1.3705418445169926e-02 + + -1.6353903710842133e-01 7.1185743808746338e-01 + <_> + + 0 -1 133 -1.9136129412800074e-04 + + -4.1099548339843750e-01 2.4878852069377899e-01 + <_> + + 0 -1 32 -1.4022039249539375e-02 + + 4.8589426279067993e-01 -2.0431892573833466e-01 + <_> + + 0 -1 13 -1.0536734480410814e-03 + + 5.7817524671554565e-01 -1.6265411674976349e-01 + + <_> + 16 + -1.7411637306213379e+00 + + <_> + + 0 -1 165 2.9674336314201355e-02 + + -6.9310343265533447e-01 6.0000002384185791e-01 + <_> + + 0 -1 105 -3.0049484223127365e-02 + + 2.0353905856609344e-01 -4.5840129256248474e-01 + <_> + + 0 -1 103 -2.4616834707558155e-04 + + -6.7990714311599731e-01 1.3162218034267426e-01 + <_> + + 0 -1 161 3.5106251016259193e-03 + + -1.3449537754058838e-01 6.1936920881271362e-01 + <_> + + 0 -1 72 -3.2896804623305798e-04 + + -7.4744147062301636e-01 1.3933072984218597e-01 + <_> + + 0 -1 144 -1.5110280364751816e-03 + + 5.8535629510879517e-01 -1.7041978240013123e-01 + <_> + + 0 -1 70 6.3875812338665128e-04 + + 1.9317094981670380e-01 -6.1391317844390869e-01 + <_> + + 0 -1 121 -1.5766736119985580e-02 + + 4.3706774711608887e-01 -2.0944073796272278e-01 + <_> + + 0 -1 21 -1.3639741577208042e-02 + + 6.8090695142745972e-01 -1.2076047807931900e-01 + <_> + + 0 -1 33 1.5954223927110434e-03 + + -2.5089821219444275e-01 4.8584073781967163e-01 + <_> + + 0 -1 167 -1.4887601719237864e-04 + + 2.2792269289493561e-01 -3.8891956210136414e-01 + <_> + + 0 -1 151 2.9314737766981125e-02 + + -2.0310249924659729e-01 4.1878342628479004e-01 + <_> + + 0 -1 168 -4.4798152521252632e-03 + + 5.0474834442138672e-01 -1.8823893368244171e-01 + <_> + + 0 -1 41 4.8746576067060232e-04 + + 1.1040589213371277e-01 -8.3184993267059326e-01 + <_> + + 0 -1 15 -1.8696903716772795e-03 + + -7.2012782096862793e-01 9.3941099941730499e-02 + <_> + + 0 -1 1 1.5180515125393867e-02 + + -1.8260955810546875e-01 5.4511731863021851e-01 + + <_> + 14 + -1.5817297697067261e+00 + + <_> + + 0 -1 179 -3.5859037190675735e-02 + + 5.5102038383483887e-01 -6.9791668653488159e-01 + <_> + + 0 -1 106 -1.5838606283068657e-02 + + -7.3693650960922241e-01 8.3034954965114594e-02 + <_> + + 0 -1 56 -7.7713176608085632e-02 + + 4.8292347788810730e-01 -2.1988594532012939e-01 + <_> + + 0 -1 59 1.8175625882577151e-05 + + -3.8123923540115356e-01 2.4533081054687500e-01 + <_> + + 0 -1 2 9.4315661117434502e-03 + + -1.7849929630756378e-01 4.3593320250511169e-01 + <_> + + 0 -1 34 9.8988413810729980e-03 + + -1.4341324567794800e-01 6.1564743518829346e-01 + <_> + + 0 -1 42 1.3446996454149485e-03 + + 1.0816907137632370e-01 -8.4271442890167236e-01 + <_> + + 0 -1 110 5.9202280826866627e-03 + + -3.2291814684867859e-01 2.6434558629989624e-01 + <_> + + 0 -1 79 -1.1114287190139294e-03 + + 4.5482006669044495e-01 -1.8617470562458038e-01 + <_> + + 0 -1 123 -2.2326451726257801e-03 + + 2.5308236479759216e-01 -3.3205306529998779e-01 + <_> + + 0 -1 45 -6.1708257999271154e-04 + + -7.4000579118728638e-01 1.2218055874109268e-01 + <_> + + 0 -1 3 7.6554138213396072e-03 + + -2.1627412736415863e-01 4.2356365919113159e-01 + <_> + + 0 -1 57 -4.0928833186626434e-03 + + -2.0417644083499908e-01 5.4047822952270508e-01 + <_> + + 0 -1 170 -1.0295391548424959e-03 + + 3.4728658199310303e-01 -2.5356608629226685e-01 + + <_> + 12 + -1.6208729743957520e+00 + + <_> + + 0 -1 147 -2.3791594430804253e-02 + + 6.0000002384185791e-01 -6.8205130100250244e-01 + <_> + + 0 -1 71 -1.9332624506205320e-03 + + 1.5950426459312439e-01 -5.7163208723068237e-01 + <_> + + 0 -1 141 1.8097884021699429e-03 + + 1.2333754450082779e-01 -7.9474043846130371e-01 + <_> + + 0 -1 89 1.2667368864640594e-03 + + 9.9324025213718414e-02 -9.8902136087417603e-01 + <_> + + 0 -1 90 4.6673719771206379e-03 + + -2.0336109399795532e-01 5.0476443767547607e-01 + <_> + + 0 -1 127 2.7690962888300419e-03 + + -2.5880119204521179e-01 4.5048126578330994e-01 + <_> + + 0 -1 122 -5.6354142725467682e-03 + + -8.2470840215682983e-01 1.4847569167613983e-01 + <_> + + 0 -1 111 2.0276866853237152e-03 + + 1.0920821130275726e-01 -7.0365118980407715e-01 + <_> + + 0 -1 119 -9.0227718465030193e-04 + + -7.6565343141555786e-01 1.2456116080284119e-01 + <_> + + 0 -1 85 -4.2224678397178650e-01 + + 1.1966525763273239e-01 -7.2125703096389771e-01 + <_> + + 0 -1 149 -2.8204470872879028e-03 + + -8.4743422269821167e-01 8.1034734845161438e-02 + <_> + + 0 -1 84 -4.9251858144998550e-03 + + -6.0054230690002441e-01 1.3028827309608459e-01 + + <_> + 17 + -1.5535212755203247e+00 + + <_> + + 0 -1 194 5.9156599454581738e-03 + + -7.0714282989501953e-01 3.2307693362236023e-01 + <_> + + 0 -1 51 2.8134048916399479e-03 + + -3.4259495139122009e-01 3.6358290910720825e-01 + <_> + + 0 -1 29 1.8864520825445652e-03 + + -2.1137918531894684e-01 4.6073621511459351e-01 + <_> + + 0 -1 17 -7.1073404978960752e-04 + + 4.6905022859573364e-01 -1.7933738231658936e-01 + <_> + + 0 -1 126 -3.4468510420992970e-05 + + 2.2158823907375336e-01 -4.5275855064392090e-01 + <_> + + 0 -1 107 1.2903704773634672e-03 + + -1.8411105871200562e-01 4.1727778315544128e-01 + <_> + + 0 -1 163 1.8192101269960403e-03 + + -2.9315307736396790e-01 3.3266869187355042e-01 + <_> + + 0 -1 130 -2.0027451682835817e-03 + + -7.6434308290481567e-01 1.1959962546825409e-01 + <_> + + 0 -1 125 5.8189127594232559e-04 + + 1.0355526953935623e-01 -6.2068319320678711e-01 + <_> + + 0 -1 18 -2.5282750721089542e-04 + + 3.8922321796417236e-01 -2.2325353324413300e-01 + <_> + + 0 -1 20 6.5809197258204222e-04 + + -1.6434612870216370e-01 4.8495137691497803e-01 + <_> + + 0 -1 37 -8.7616103701293468e-04 + + 5.6121635437011719e-01 -1.3476663827896118e-01 + <_> + + 0 -1 175 1.3376235729083419e-03 + + 1.0941879451274872e-01 -7.9700249433517456e-01 + <_> + + 0 -1 67 3.3253598958253860e-03 + + -1.8542961776256561e-01 4.6045705676078796e-01 + <_> + + 0 -1 184 -2.7729733847081661e-03 + + 6.0431009531021118e-01 -1.4104470610618591e-01 + <_> + + 0 -1 190 2.1854664373677224e-04 + + 1.5144667029380798e-01 -5.5970782041549683e-01 + <_> + + 0 -1 160 -2.1206322126090527e-03 + + 5.3107118606567383e-01 -1.6468608379364014e-01 + + <_> + 20 + -1.4875119924545288e+00 + + <_> + + 0 -1 114 -9.3501377850770950e-03 + + 3.2727271318435669e-01 -6.8947368860244751e-01 + <_> + + 0 -1 190 -9.6873473376035690e-04 + + -6.6675865650177002e-01 2.5261188857257366e-03 + <_> + + 0 -1 112 -4.4630738557316363e-04 + + -7.4369966983795166e-01 8.3142973482608795e-02 + <_> + + 0 -1 177 5.6710755452513695e-03 + + -1.2375508248806000e-01 6.1231660842895508e-01 + <_> + + 0 -1 180 -1.8512526527047157e-02 + + 4.3009281158447266e-01 -1.9518370926380157e-01 + <_> + + 0 -1 61 -4.2646778747439384e-03 + + 3.1045347452163696e-01 -2.3117899894714355e-01 + <_> + + 0 -1 166 -2.6259123114868999e-04 + + 2.4149633944034576e-01 -3.4159618616104126e-01 + <_> + + 0 -1 134 -3.8649644702672958e-03 + + -6.6594743728637695e-01 1.1983088403940201e-01 + <_> + + 0 -1 187 6.4865010790526867e-04 + + -1.6000953316688538e-01 4.1350230574607849e-01 + <_> + + 0 -1 23 -2.8735138475894928e-02 + + 4.3879640102386475e-01 -1.6368734836578369e-01 + <_> + + 0 -1 60 -2.0414516329765320e-03 + + -8.1119674444198608e-01 9.0748816728591919e-02 + <_> + + 0 -1 136 2.9563647694885731e-04 + + -1.9902709126472473e-01 3.6927008628845215e-01 + <_> + + 0 -1 88 7.8609678894281387e-04 + + 7.5100630521774292e-02 -8.7606590986251831e-01 + <_> + + 0 -1 96 -2.2747905459254980e-03 + + 3.7085020542144775e-01 -1.8357053399085999e-01 + <_> + + 0 -1 187 -1.4223495963960886e-03 + + 5.7845723628997803e-01 -1.2233733385801315e-01 + <_> + + 0 -1 95 -1.2385027110576630e-01 + + 6.6920638084411621e-01 -8.8843062520027161e-02 + <_> + + 0 -1 129 -5.3676258539780974e-04 + + 2.4112111330032349e-01 -3.0648946762084961e-01 + <_> + + 0 -1 63 -3.7546919193118811e-03 + + 5.1108187437057495e-01 -1.3913317024707794e-01 + <_> + + 0 -1 36 1.5942661557346582e-03 + + -1.5403926372528076e-01 4.1273397207260132e-01 + <_> + + 0 -1 25 -5.3900987841188908e-03 + + 3.3606275916099548e-01 -2.5050988793373108e-01 + + <_> + 19 + -1.3267387151718140e+00 + + <_> + + 0 -1 148 1.5120977535843849e-02 + + -6.8476355075836182e-01 2.9629629850387573e-01 + <_> + + 0 -1 158 -1.7649805522523820e-04 + + 5.7045519351959229e-02 -5.0628417730331421e-01 + <_> + + 0 -1 8 -2.6130601763725281e-02 + + 8.0993115901947021e-01 -9.2614986002445221e-02 + <_> + + 0 -1 40 -1.0445246100425720e-01 + + 4.5914748311042786e-01 -1.3693013787269592e-01 + <_> + + 0 -1 100 -3.9934337139129639e-02 + + 4.8825702071189880e-01 -1.4144806563854218e-01 + <_> + + 0 -1 152 2.3203073069453239e-03 + + -1.5831814706325531e-01 3.5638540983200073e-01 + <_> + + 0 -1 143 -6.7897036205977201e-04 + + 4.5109450817108154e-01 -1.4811104536056519e-01 + <_> + + 0 -1 28 -5.8865133905783296e-04 + + -6.2032908201217651e-01 1.4824171364307404e-01 + <_> + + 0 -1 153 -5.8650365099310875e-04 + + 3.8303762674331665e-01 -1.8964144587516785e-01 + <_> + + 0 -1 189 -1.2203099904581904e-03 + + -6.6491907835006714e-01 1.2237460911273956e-01 + <_> + + 0 -1 176 -1.2232332956045866e-03 + + -6.9133037328720093e-01 6.5745726227760315e-02 + <_> + + 0 -1 86 2.8828569338656962e-04 + + 1.0351332277059555e-01 -6.1002194881439209e-01 + <_> + + 0 -1 9 -5.6301604490727186e-04 + + 4.2116749286651611e-01 -1.7370279133319855e-01 + <_> + + 0 -1 87 4.0612678276374936e-04 + + -2.1549633145332336e-01 3.0576214194297791e-01 + <_> + + 0 -1 108 -9.1048218309879303e-03 + + 3.3037775754928589e-01 -2.2917945683002472e-01 + <_> + + 0 -1 131 -8.9691102039068937e-04 + + 3.5395362973213196e-01 -1.8705031275749207e-01 + <_> + + 0 -1 77 -2.1763547556474805e-04 + + -4.9827361106872559e-01 1.2725095450878143e-01 + <_> + + 0 -1 4 1.4839143841527402e-04 + + 2.0854035019874573e-01 -2.7698844671249390e-01 + <_> + + 0 -1 155 -5.6979311921168119e-05 + + 2.1280145645141602e-01 -3.0112728476524353e-01 + + <_> + 23 + -1.4689903259277344e+00 + + <_> + + 0 -1 200 -2.9980393592268229e-03 + + -4.7619048506021500e-02 -7.2522079944610596e-01 + <_> + + 0 -1 49 8.0140377394855022e-04 + + -2.7349799871444702e-01 3.9106845855712891e-01 + <_> + + 0 -1 157 -1.6354606486856937e-04 + + 1.6829317808151245e-01 -3.9847749471664429e-01 + <_> + + 0 -1 49 -7.2271062526851892e-04 + + 4.8273399472236633e-01 -1.5221785008907318e-01 + <_> + + 0 -1 75 -9.7729973495006561e-03 + + 5.9050452709197998e-01 -1.1009192466735840e-01 + <_> + + 0 -1 194 -4.3727615848183632e-03 + + 4.8207929730415344e-01 -1.3895213603973389e-01 + <_> + + 0 -1 99 -2.0938746631145477e-02 + + -7.1920901536941528e-01 1.4623524248600006e-01 + <_> + + 0 -1 142 3.6857672967016697e-04 + + 6.5169326961040497e-02 -6.5539407730102539e-01 + <_> + + 0 -1 174 -2.5566974654793739e-03 + + -7.7422147989273071e-01 8.7902687489986420e-02 + <_> + + 0 -1 150 -1.6991250449791551e-03 + + 4.8328623175621033e-02 -8.9968734979629517e-01 + <_> + + 0 -1 162 -4.0731480112299323e-04 + + -3.3564025163650513e-01 1.9405926764011383e-01 + <_> + + 0 -1 124 2.9308174271136522e-04 + + 8.7193951010704041e-02 -6.7727470397949219e-01 + <_> + + 0 -1 144 -1.4637403655797243e-03 + + 4.8259687423706055e-01 -1.3944844901561737e-01 + <_> + + 0 -1 138 -2.6914877817034721e-03 + + 4.7683465480804443e-01 -1.6799855232238770e-01 + <_> + + 0 -1 46 4.8279107431881130e-04 + + 1.0849416255950928e-01 -6.1187058687210083e-01 + <_> + + 0 -1 128 -1.7352341674268246e-03 + + 2.4397887289524078e-01 -2.7676293253898621e-01 + <_> + + 0 -1 191 1.0218786075711250e-02 + + -1.4659097790718079e-01 4.2143100500106812e-01 + <_> + + 0 -1 5 2.3267942015081644e-03 + + -2.3536746203899384e-01 2.9641088843345642e-01 + <_> + + 0 -1 22 -4.0730815380811691e-03 + + 5.2147364616394043e-01 -1.3475845754146576e-01 + <_> + + 0 -1 146 -2.4946131743490696e-03 + + 4.1652169823646545e-01 -1.6857364773750305e-01 + <_> + + 0 -1 116 1.6768599161878228e-03 + + 9.6078328788280487e-02 -7.2781735658645630e-01 + <_> + + 0 -1 55 2.9639720916748047e-01 + + -9.8477728664875031e-02 7.5409716367721558e-01 + <_> + + 0 -1 132 -8.7333197006955743e-04 + + 3.4324267506599426e-01 -1.7001558840274811e-01 + + <_> + 25 + -1.4651404619216919e+00 + + <_> + + 0 -1 81 -2.2025607526302338e-02 + + 2.4210526049137115e-01 -6.6926407814025879e-01 + <_> + + 0 -1 62 5.2232155576348305e-04 + + -2.7196395397186279e-01 3.0665934085845947e-01 + <_> + + 0 -1 14 -6.4705507829785347e-03 + + -1. 5.5171351879835129e-02 + <_> + + 0 -1 199 -7.5660378206521273e-04 + + 4.8695829510688782e-01 -1.3191930949687958e-01 + <_> + + 0 -1 186 -6.1223853845149279e-04 + + 2.9740074276924133e-01 -2.3307214677333832e-01 + <_> + + 0 -1 112 2.4659343762323260e-04 + + 1.1934581398963928e-01 -4.7974175214767456e-01 + <_> + + 0 -1 69 5.2959728054702282e-04 + + -2.4250689148902893e-01 2.2791884839534760e-01 + <_> + + 0 -1 185 4.6741734258830547e-03 + + 1.1037635058164597e-01 -5.2269613742828369e-01 + <_> + + 0 -1 11 1.2670135125517845e-02 + + -1.3160738348960876e-01 4.7664791345596313e-01 + <_> + + 0 -1 19 1.1765072122216225e-03 + + -1.8008701503276825e-01 3.3509200811386108e-01 + <_> + + 0 -1 78 7.0660677738487720e-04 + + 7.8461520373821259e-02 -7.9082167148590088e-01 + <_> + + 0 -1 145 3.8667544140480459e-04 + + -1.8222546577453613e-01 3.0173763632774353e-01 + <_> + + 0 -1 48 -8.0784171819686890e-02 + + 4.3073612451553345e-01 -1.3189022243022919e-01 + <_> + + 0 -1 91 2.0910205785185099e-03 + + -2.5391769409179688e-01 2.7395603060722351e-01 + <_> + + 0 -1 154 -1.2462527956813574e-03 + + 3.0874782800674438e-01 -1.8933363258838654e-01 + <_> + + 0 -1 120 -1.8246303079649806e-04 + + -4.8454743623733521e-01 1.2327595055103302e-01 + <_> + + 0 -1 104 -7.8453926835209131e-04 + + -7.4296480417251587e-01 6.1993543058633804e-02 + <_> + + 0 -1 66 -8.4214529488235712e-04 + + 4.4385617971420288e-01 -1.4113025367259979e-01 + <_> + + 0 -1 39 -1.0110640432685614e-03 + + -8.7247473001480103e-01 6.9047711789608002e-02 + <_> + + 0 -1 198 6.1785156140103936e-04 + + -1.7649804055690765e-01 3.3240365982055664e-01 + <_> + + 0 -1 184 9.5400848658755422e-04 + + -1.8877421319484711e-01 3.0010125041007996e-01 + <_> + + 0 -1 171 7.1474525611847639e-04 + + -1.7243483662605286e-01 3.3026084303855896e-01 + <_> + + 0 -1 54 1.4768686378374696e-03 + + -1.5536749362945557e-01 3.9870518445968628e-01 + <_> + + 0 -1 181 -9.9370544776320457e-03 + + -6.7825162410736084e-01 9.3313768506050110e-02 + <_> + + 0 -1 68 1.5568366646766663e-01 + + -9.1032467782497406e-02 7.2477394342422485e-01 + + <_> + + <_> + 0 0 3 1 -1. + <_> + 1 0 1 1 2. + 0 + <_> + + <_> + 0 0 6 6 -1. + <_> + 0 0 3 3 2. + <_> + 3 3 3 3 2. + 0 + <_> + + <_> + 0 1 3 8 -1. + <_> + 0 5 3 4 2. + 0 + <_> + + <_> + 0 2 2 16 -1. + <_> + 1 2 1 16 2. + 0 + <_> + + <_> + 0 3 2 2 -1. + <_> + 1 3 1 2 2. + 0 + <_> + + <_> + 0 4 2 7 -1. + <_> + 1 4 1 7 2. + 0 + <_> + + <_> + 0 5 2 4 -1. + <_> + 1 5 1 4 2. + 0 + <_> + + <_> + 0 5 2 7 -1. + <_> + 1 5 1 7 2. + 0 + <_> + + <_> + 0 5 2 13 -1. + <_> + 1 5 1 13 2. + 0 + <_> + + <_> + 0 6 2 2 -1. + <_> + 0 6 1 1 2. + <_> + 1 7 1 1 2. + 0 + <_> + + <_> + 0 6 2 4 -1. + <_> + 1 6 1 4 2. + 0 + <_> + + <_> + 0 6 2 11 -1. + <_> + 1 6 1 11 2. + 0 + <_> + + <_> + 0 6 2 15 -1. + <_> + 1 6 1 15 2. + 0 + <_> + + <_> + 0 7 2 1 -1. + <_> + 1 7 1 1 2. + 0 + <_> + + <_> + 0 9 2 4 -1. + <_> + 0 11 2 2 2. + 0 + <_> + + <_> + 0 11 4 2 -1. + <_> + 0 12 4 1 2. + 0 + <_> + + <_> + 0 13 2 5 -1. + <_> + 1 13 1 5 2. + 0 + <_> + + <_> + 0 15 2 1 -1. + <_> + 1 15 1 1 2. + 0 + <_> + + <_> + 0 15 2 2 -1. + <_> + 0 15 1 1 2. + <_> + 1 16 1 1 2. + 0 + <_> + + <_> + 0 15 2 6 -1. + <_> + 0 15 1 3 2. + <_> + 1 18 1 3 2. + 0 + <_> + + <_> + 0 16 2 1 -1. + <_> + 1 16 1 1 2. + 0 + <_> + + <_> + 0 16 4 3 -1. + <_> + 2 16 2 3 2. + 0 + <_> + + <_> + 1 1 2 7 -1. + <_> + 2 1 1 7 2. + 0 + <_> + + <_> + 1 1 8 12 -1. + <_> + 1 1 4 6 2. + <_> + 5 7 4 6 2. + 0 + <_> + + <_> + 1 2 12 22 -1. + <_> + 5 2 4 22 2. + 0 + <_> + + <_> + 1 3 4 8 -1. + <_> + 1 3 2 4 2. + <_> + 3 7 2 4 2. + 0 + <_> + + <_> + 1 4 2 4 -1. + <_> + 1 4 1 2 2. + <_> + 2 6 1 2 2. + 0 + <_> + + <_> + 1 5 2 2 -1. + <_> + 1 5 1 1 2. + <_> + 2 6 1 1 2. + 0 + <_> + + <_> + 1 13 1 2 -1. + <_> + 1 14 1 1 2. + 0 + <_> + + <_> + 1 13 2 6 -1. + <_> + 2 13 1 6 2. + 0 + <_> + + <_> + 1 14 21 10 -1. + <_> + 8 14 7 10 2. + 0 + <_> + + <_> + 1 15 2 6 -1. + <_> + 1 18 2 3 2. + 0 + <_> + + <_> + 1 16 11 4 -1. + <_> + 1 18 11 2 2. + 0 + <_> + + <_> + 1 17 4 2 -1. + <_> + 3 17 2 2 2. + 0 + <_> + + <_> + 1 18 4 6 -1. + <_> + 1 18 2 3 2. + <_> + 3 21 2 3 2. + 0 + <_> + + <_> + 2 1 2 4 -1. + <_> + 2 1 1 2 2. + <_> + 3 3 1 2 2. + 0 + <_> + + <_> + 2 2 2 8 -1. + <_> + 2 2 1 4 2. + <_> + 3 6 1 4 2. + 0 + <_> + + <_> + 2 3 1 2 -1. + <_> + 2 4 1 1 2. + 0 + <_> + + <_> + 2 3 2 9 -1. + <_> + 2 6 2 3 2. + 0 + <_> + + <_> + 2 7 1 2 -1. + <_> + 2 8 1 1 2. + 0 + <_> + + <_> + 2 8 6 16 -1. + <_> + 2 16 6 8 2. + 0 + <_> + + <_> + 2 11 1 2 -1. + <_> + 2 12 1 1 2. + 0 + <_> + + <_> + 2 11 4 2 -1. + <_> + 2 11 2 1 2. + <_> + 4 12 2 1 2. + 0 + <_> + + <_> + 2 12 12 6 -1. + <_> + 6 12 4 6 2. + 0 + <_> + + <_> + 2 13 6 2 -1. + <_> + 2 13 3 1 2. + <_> + 5 14 3 1 2. + 0 + <_> + + <_> + 2 14 1 2 -1. + <_> + 2 15 1 1 2. + 0 + <_> + + <_> + 2 14 2 2 -1. + <_> + 2 15 2 1 2. + 0 + <_> + + <_> + 2 14 16 2 -1. + <_> + 2 14 8 1 2. + <_> + 10 15 8 1 2. + 0 + <_> + + <_> + 2 16 19 8 -1. + <_> + 2 20 19 4 2. + 0 + <_> + + <_> + 2 19 2 2 -1. + <_> + 2 19 1 1 2. + <_> + 3 20 1 1 2. + 0 + <_> + + <_> + 2 19 2 2 -1. + <_> + 2 20 2 1 2. + 0 + <_> + + <_> + 2 22 8 2 -1. + <_> + 2 22 4 1 2. + <_> + 6 23 4 1 2. + 0 + <_> + + <_> + 3 0 5 6 -1. + <_> + 3 3 5 3 2. + 0 + <_> + + <_> + 3 0 17 6 -1. + <_> + 3 3 17 3 2. + 0 + <_> + + <_> + 3 1 4 2 -1. + <_> + 3 1 2 1 2. + <_> + 5 2 2 1 2. + 0 + <_> + + <_> + 3 2 20 14 -1. + <_> + 13 2 10 14 2. + 0 + <_> + + <_> + 3 7 16 8 -1. + <_> + 3 11 16 4 2. + 0 + <_> + + <_> + 3 9 1 3 -1. + <_> + 3 10 1 1 2. + 0 + <_> + + <_> + 3 13 1 2 -1. + <_> + 3 14 1 1 2. + 0 + <_> + + <_> + 3 13 2 3 -1. + <_> + 4 13 1 3 2. + 0 + <_> + + <_> + 3 17 3 2 -1. + <_> + 3 18 3 1 2. + 0 + <_> + + <_> + 3 18 6 6 -1. + <_> + 3 18 3 3 2. + <_> + 6 21 3 3 2. + 0 + <_> + + <_> + 3 20 2 2 -1. + <_> + 3 20 1 1 2. + <_> + 4 21 1 1 2. + 0 + <_> + + <_> + 4 0 6 2 -1. + <_> + 4 0 3 1 2. + <_> + 7 1 3 1 2. + 0 + <_> + + <_> + 4 0 17 4 -1. + <_> + 4 2 17 2 2. + 0 + <_> + + <_> + 4 0 19 22 -1. + <_> + 4 11 19 11 2. + 0 + <_> + + <_> + 4 1 2 2 -1. + <_> + 4 1 1 1 2. + <_> + 5 2 1 1 2. + 0 + <_> + + <_> + 4 1 4 2 -1. + <_> + 4 2 4 1 2. + 0 + <_> + + <_> + 4 6 16 8 -1. + <_> + 12 6 8 8 2. + 0 + <_> + + <_> + 4 9 4 2 -1. + <_> + 6 9 2 2 2. + 0 + <_> + + <_> + 4 15 2 4 -1. + <_> + 4 15 1 2 2. + <_> + 5 17 1 2 2. + 0 + <_> + + <_> + 4 15 8 4 -1. + <_> + 4 17 8 2 2. + 0 + <_> + + <_> + 4 16 2 2 -1. + <_> + 4 16 1 1 2. + <_> + 5 17 1 1 2. + 0 + <_> + + <_> + 4 18 10 2 -1. + <_> + 4 18 5 1 2. + <_> + 9 19 5 1 2. + 0 + <_> + + <_> + 4 22 19 2 -1. + <_> + 4 23 19 1 2. + 0 + <_> + + <_> + 5 0 8 2 -1. + <_> + 5 1 8 1 2. + 0 + <_> + + <_> + 5 12 4 2 -1. + <_> + 5 13 4 1 2. + 0 + <_> + + <_> + 5 16 2 2 -1. + <_> + 5 16 1 1 2. + <_> + 6 17 1 1 2. + 0 + <_> + + <_> + 5 17 2 1 -1. + <_> + 6 17 1 1 2. + 0 + <_> + + <_> + 5 22 4 2 -1. + <_> + 5 22 2 1 2. + <_> + 7 23 2 1 2. + 0 + <_> + + <_> + 6 0 4 2 -1. + <_> + 6 1 4 1 2. + 0 + <_> + + <_> + 6 0 11 2 -1. + <_> + 6 1 11 1 2. + 0 + <_> + + <_> + 6 0 12 2 -1. + <_> + 6 1 12 1 2. + 0 + <_> + + <_> + 6 0 14 2 -1. + <_> + 6 1 14 1 2. + 0 + <_> + + <_> + 6 3 2 20 -1. + <_> + 6 3 1 10 2. + <_> + 7 13 1 10 2. + 0 + <_> + + <_> + 6 5 18 18 -1. + <_> + 6 11 18 6 2. + 0 + <_> + + <_> + 6 10 2 2 -1. + <_> + 6 10 1 1 2. + <_> + 7 11 1 1 2. + 0 + <_> + + <_> + 6 13 2 4 -1. + <_> + 7 13 1 4 2. + 0 + <_> + + <_> + 6 15 2 1 -1. + <_> + 7 15 1 1 2. + 0 + <_> + + <_> + 6 18 2 2 -1. + <_> + 7 18 1 2 2. + 0 + <_> + + <_> + 6 22 5 2 -1. + <_> + 6 23 5 1 2. + 0 + <_> + + <_> + 6 22 9 2 -1. + <_> + 6 23 9 1 2. + 0 + <_> + + <_> + 6 22 10 2 -1. + <_> + 6 23 10 1 2. + 0 + <_> + + <_> + 6 22 13 2 -1. + <_> + 6 23 13 1 2. + 0 + <_> + + <_> + 7 0 11 2 -1. + <_> + 7 1 11 1 2. + 0 + <_> + + <_> + 7 4 14 10 -1. + <_> + 14 4 7 10 2. + 0 + <_> + + <_> + 7 20 4 4 -1. + <_> + 7 20 2 2 2. + <_> + 9 22 2 2 2. + 0 + <_> + + <_> + 7 22 2 2 -1. + <_> + 7 23 2 1 2. + 0 + <_> + + <_> + 7 22 9 2 -1. + <_> + 7 23 9 1 2. + 0 + <_> + + <_> + 8 0 6 1 -1. + <_> + 10 0 2 1 2. + 0 + <_> + + <_> + 8 6 12 6 -1. + <_> + 8 9 12 3 2. + 0 + <_> + + <_> + 8 14 1 2 -1. + <_> + 8 15 1 1 2. + 0 + <_> + + <_> + 8 17 4 4 -1. + <_> + 8 17 2 2 2. + <_> + 10 19 2 2 2. + 0 + <_> + + <_> + 8 20 2 2 -1. + <_> + 8 20 1 1 2. + <_> + 9 21 1 1 2. + 0 + <_> + + <_> + 8 21 2 2 -1. + <_> + 8 21 1 1 2. + <_> + 9 22 1 1 2. + 0 + <_> + + <_> + 9 10 10 8 -1. + <_> + 9 14 10 4 2. + 0 + <_> + + <_> + 9 22 3 2 -1. + <_> + 10 22 1 2 2. + 0 + <_> + + <_> + 9 22 8 2 -1. + <_> + 9 22 4 1 2. + <_> + 13 23 4 1 2. + 0 + <_> + + <_> + 10 1 14 1 -1. + <_> + 17 1 7 1 2. + 0 + <_> + + <_> + 10 18 5 2 -1. + <_> + 10 19 5 1 2. + 0 + <_> + + <_> + 10 18 14 6 -1. + <_> + 10 18 7 3 2. + <_> + 17 21 7 3 2. + 0 + <_> + + <_> + 10 19 4 4 -1. + <_> + 10 19 2 2 2. + <_> + 12 21 2 2 2. + 0 + <_> + + <_> + 10 21 2 1 -1. + <_> + 11 21 1 1 2. + 0 + <_> + + <_> + 11 0 6 2 -1. + <_> + 11 0 3 1 2. + <_> + 14 1 3 1 2. + 0 + <_> + + <_> + 11 0 6 2 -1. + <_> + 11 1 6 1 2. + 0 + <_> + + <_> + 11 0 10 3 -1. + <_> + 11 1 10 1 2. + 0 + <_> + + <_> + 11 2 4 2 -1. + <_> + 11 2 2 1 2. + <_> + 13 3 2 1 2. + 0 + <_> + + <_> + 11 13 7 6 -1. + <_> + 11 16 7 3 2. + 0 + <_> + + <_> + 11 18 4 2 -1. + <_> + 13 18 2 2 2. + 0 + <_> + + <_> + 11 19 2 4 -1. + <_> + 11 19 1 2 2. + <_> + 12 21 1 2 2. + 0 + <_> + + <_> + 11 21 2 2 -1. + <_> + 11 21 1 1 2. + <_> + 12 22 1 1 2. + 0 + <_> + + <_> + 12 6 5 6 -1. + <_> + 12 9 5 3 2. + 0 + <_> + + <_> + 12 11 2 13 -1. + <_> + 13 11 1 13 2. + 0 + <_> + + <_> + 12 12 4 4 -1. + <_> + 12 14 4 2 2. + 0 + <_> + + <_> + 12 18 2 2 -1. + <_> + 12 18 1 1 2. + <_> + 13 19 1 1 2. + 0 + <_> + + <_> + 12 18 2 4 -1. + <_> + 12 18 1 2 2. + <_> + 13 20 1 2 2. + 0 + <_> + + <_> + 12 19 1 2 -1. + <_> + 12 20 1 1 2. + 0 + <_> + + <_> + 13 0 6 2 -1. + <_> + 13 1 6 1 2. + 0 + <_> + + <_> + 13 9 2 4 -1. + <_> + 13 11 2 2 2. + 0 + <_> + + <_> + 13 14 4 2 -1. + <_> + 13 15 4 1 2. + 0 + <_> + + <_> + 13 19 3 2 -1. + <_> + 13 20 3 1 2. + 0 + <_> + + <_> + 14 0 2 6 -1. + <_> + 14 0 1 3 2. + <_> + 15 3 1 3 2. + 0 + <_> + + <_> + 14 0 4 2 -1. + <_> + 14 0 2 1 2. + <_> + 16 1 2 1 2. + 0 + <_> + + <_> + 14 10 6 2 -1. + <_> + 14 10 3 1 2. + <_> + 17 11 3 1 2. + 0 + <_> + + <_> + 14 14 8 2 -1. + <_> + 14 15 8 1 2. + 0 + <_> + + <_> + 14 19 1 2 -1. + <_> + 14 20 1 1 2. + 0 + <_> + + <_> + 14 22 2 2 -1. + <_> + 14 22 1 1 2. + <_> + 15 23 1 1 2. + 0 + <_> + + <_> + 14 22 3 2 -1. + <_> + 14 23 3 1 2. + 0 + <_> + + <_> + 14 22 6 2 -1. + <_> + 14 22 3 1 2. + <_> + 17 23 3 1 2. + 0 + <_> + + <_> + 15 0 6 2 -1. + <_> + 15 0 3 1 2. + <_> + 18 1 3 1 2. + 0 + <_> + + <_> + 15 12 2 2 -1. + <_> + 15 13 2 1 2. + 0 + <_> + + <_> + 15 13 6 2 -1. + <_> + 15 13 3 1 2. + <_> + 18 14 3 1 2. + 0 + <_> + + <_> + 15 20 2 1 -1. + <_> + 16 20 1 1 2. + 0 + <_> + + <_> + 15 22 1 2 -1. + <_> + 15 23 1 1 2. + 0 + <_> + + <_> + 15 22 2 2 -1. + <_> + 15 23 2 1 2. + 0 + <_> + + <_> + 16 0 2 2 -1. + <_> + 16 0 1 1 2. + <_> + 17 1 1 1 2. + 0 + <_> + + <_> + 16 0 6 2 -1. + <_> + 16 0 3 1 2. + <_> + 19 1 3 1 2. + 0 + <_> + + <_> + 16 0 5 4 -1. + <_> + 16 2 5 2 2. + 0 + <_> + + <_> + 16 3 8 1 -1. + <_> + 20 3 4 1 2. + 0 + <_> + + <_> + 16 13 2 8 -1. + <_> + 16 13 1 4 2. + <_> + 17 17 1 4 2. + 0 + <_> + + <_> + 16 18 3 1 -1. + <_> + 17 18 1 1 2. + 0 + <_> + + <_> + 16 18 8 6 -1. + <_> + 20 18 4 6 2. + 0 + <_> + + <_> + 16 21 5 2 -1. + <_> + 16 22 5 1 2. + 0 + <_> + + <_> + 16 22 2 2 -1. + <_> + 16 22 1 1 2. + <_> + 17 23 1 1 2. + 0 + <_> + + <_> + 17 2 6 2 -1. + <_> + 17 2 3 1 2. + <_> + 20 3 3 1 2. + 0 + <_> + + <_> + 17 8 2 1 -1. + <_> + 18 8 1 1 2. + 0 + <_> + + <_> + 17 15 1 4 -1. + <_> + 17 17 1 2 2. + 0 + <_> + + <_> + 17 15 2 2 -1. + <_> + 17 16 2 1 2. + 0 + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 17 2 1 2. + 0 + <_> + + <_> + 17 17 1 2 -1. + <_> + 17 18 1 1 2. + 0 + <_> + + <_> + 17 20 1 4 -1. + <_> + 17 22 1 2 2. + 0 + <_> + + <_> + 17 21 4 1 -1. + <_> + 19 21 2 1 2. + 0 + <_> + + <_> + 17 22 7 2 -1. + <_> + 17 23 7 1 2. + 0 + <_> + + <_> + 18 0 1 4 -1. + <_> + 18 2 1 2 2. + 0 + <_> + + <_> + 18 2 2 2 -1. + <_> + 18 2 1 1 2. + <_> + 19 3 1 1 2. + 0 + <_> + + <_> + 18 3 6 3 -1. + <_> + 21 3 3 3 2. + 0 + <_> + + <_> + 18 14 2 2 -1. + <_> + 18 15 2 1 2. + 0 + <_> + + <_> + 18 15 2 2 -1. + <_> + 18 16 2 1 2. + 0 + <_> + + <_> + 18 16 4 5 -1. + <_> + 20 16 2 5 2. + 0 + <_> + + <_> + 19 1 1 4 -1. + <_> + 19 3 1 2 2. + 0 + <_> + + <_> + 19 2 2 4 -1. + <_> + 20 2 1 4 2. + 0 + <_> + + <_> + 19 2 4 2 -1. + <_> + 19 2 2 1 2. + <_> + 21 3 2 1 2. + 0 + <_> + + <_> + 19 2 5 6 -1. + <_> + 19 4 5 2 2. + 0 + <_> + + <_> + 19 4 4 1 -1. + <_> + 21 4 2 1 2. + 0 + <_> + + <_> + 19 6 3 2 -1. + <_> + 19 7 3 1 2. + 0 + <_> + + <_> + 19 10 4 2 -1. + <_> + 19 10 2 1 2. + <_> + 21 11 2 1 2. + 0 + <_> + + <_> + 19 16 2 2 -1. + <_> + 19 17 2 1 2. + 0 + <_> + + <_> + 19 19 4 1 -1. + <_> + 21 19 2 1 2. + 0 + <_> + + <_> + 19 20 4 2 -1. + <_> + 19 20 2 1 2. + <_> + 21 21 2 1 2. + 0 + <_> + + <_> + 20 0 2 10 -1. + <_> + 20 5 2 5 2. + 0 + <_> + + <_> + 20 0 4 19 -1. + <_> + 22 0 2 19 2. + 0 + <_> + + <_> + 20 0 4 4 -1. + <_> + 20 2 4 2 2. + 0 + <_> + + <_> + 20 2 4 11 -1. + <_> + 22 2 2 11 2. + 0 + <_> + + <_> + 20 3 2 2 -1. + <_> + 20 3 1 1 2. + <_> + 21 4 1 1 2. + 0 + <_> + + <_> + 20 3 2 6 -1. + <_> + 20 3 1 3 2. + <_> + 21 6 1 3 2. + 0 + <_> + + <_> + 20 4 1 10 -1. + <_> + 20 9 1 5 2. + 0 + <_> + + <_> + 20 19 2 4 -1. + <_> + 20 19 1 2 2. + <_> + 21 21 1 2 2. + 0 + <_> + + <_> + 21 4 2 2 -1. + <_> + 21 4 1 1 2. + <_> + 22 5 1 1 2. + 0 + <_> + + <_> + 21 5 2 2 -1. + <_> + 21 5 1 1 2. + <_> + 22 6 1 1 2. + 0 + <_> + + <_> + 21 10 2 2 -1. + <_> + 21 11 2 1 2. + 0 + <_> + + <_> + 21 12 2 2 -1. + <_> + 21 13 2 1 2. + 0 + <_> + + <_> + 22 1 2 21 -1. + <_> + 23 1 1 21 2. + 0 + <_> + + <_> + 22 2 2 8 -1. + <_> + 22 2 1 4 2. + <_> + 23 6 1 4 2. + 0 + <_> + + <_> + 22 3 2 17 -1. + <_> + 23 3 1 17 2. + 0 + <_> + + <_> + 22 6 2 4 -1. + <_> + 23 6 1 4 2. + 0 + <_> + + <_> + 22 6 2 13 -1. + <_> + 23 6 1 13 2. + 0 + <_> + + <_> + 22 7 2 3 -1. + <_> + 23 7 1 3 2. + 0 + <_> + + <_> + 22 13 2 5 -1. + <_> + 23 13 1 5 2. + 0 + <_> + + <_> + 22 14 2 1 -1. + <_> + 23 14 1 1 2. + 0 + <_> + + <_> + 22 15 2 1 -1. + <_> + 23 15 1 1 2. + 0 + <_> + + <_> + 22 15 2 6 -1. + <_> + 22 15 1 3 2. + <_> + 23 18 1 3 2. + 0 + <_> + + <_> + 22 16 2 1 -1. + <_> + 23 16 1 1 2. + 0 + diff --git a/p.py b/p.py new file mode 100644 index 0000000..ec64831 --- /dev/null +++ b/p.py @@ -0,0 +1,6 @@ +
+ {% if error %} + + {% endif %} \ No newline at end of file diff --git a/static/image/Tomat_hijo.jpg b/static/image/Tomat_hijo.jpg new file mode 100644 index 0000000..a994f7c Binary files /dev/null and b/static/image/Tomat_hijo.jpg differ diff --git a/static/image/mentah_busuk.jpg b/static/image/mentah_busuk.jpg new file mode 100644 index 0000000..03f2ed3 Binary files /dev/null and b/static/image/mentah_busuk.jpg differ diff --git a/static/image/tomat1.jpg b/static/image/tomat1.jpg new file mode 100644 index 0000000..7a3f1fc Binary files /dev/null and b/static/image/tomat1.jpg differ diff --git a/static/image/tomat2.jpg b/static/image/tomat2.jpg new file mode 100644 index 0000000..2e49cdd Binary files /dev/null and b/static/image/tomat2.jpg differ diff --git a/static/image/tomat3.jpg b/static/image/tomat3.jpg new file mode 100644 index 0000000..006ed25 Binary files /dev/null and b/static/image/tomat3.jpg differ diff --git a/static/image/tomatBusuk.jpg b/static/image/tomatBusuk.jpg new file mode 100644 index 0000000..2e2a414 Binary files /dev/null and b/static/image/tomatBusuk.jpg differ diff --git a/static/image/tomatFresh.jpg b/static/image/tomatFresh.jpg new file mode 100644 index 0000000..fdf1d1d Binary files /dev/null and b/static/image/tomatFresh.jpg differ diff --git a/static/image/tomat_matang.jpg b/static/image/tomat_matang.jpg new file mode 100644 index 0000000..a31cf4c Binary files /dev/null and b/static/image/tomat_matang.jpg differ diff --git a/static/image/tomato.png b/static/image/tomato.png new file mode 100644 index 0000000..cb5052b Binary files /dev/null and b/static/image/tomato.png differ diff --git a/static/style.css b/static/style.css new file mode 100644 index 0000000..f7a0316 --- /dev/null +++ b/static/style.css @@ -0,0 +1,1277 @@ +body { + margin: 0; + font-family: 'Roboto Mono';; + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} + +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (min-width: 1200px) { + .sticky-xl-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.position-static { + position: static !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 3rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 3rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 3rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} +body, +html { + height: 100%; +} \ No newline at end of file diff --git a/static/uploads/2.jpg b/static/uploads/2.jpg new file mode 100644 index 0000000..0793994 Binary files /dev/null and b/static/uploads/2.jpg differ diff --git a/static/uploads/222.jpg b/static/uploads/222.jpg new file mode 100644 index 0000000..411c811 Binary files /dev/null and b/static/uploads/222.jpg differ diff --git a/static/uploads/3.jpg b/static/uploads/3.jpg new file mode 100644 index 0000000..8be2062 Binary files /dev/null and b/static/uploads/3.jpg differ diff --git a/static/uploads/32wt5nv8.png b/static/uploads/32wt5nv8.png new file mode 100644 index 0000000..cfee1e4 Binary files /dev/null and b/static/uploads/32wt5nv8.png differ diff --git a/static/uploads/5f8ff3b8c8c20.webp b/static/uploads/5f8ff3b8c8c20.webp new file mode 100644 index 0000000..4b9a008 Binary files /dev/null and b/static/uploads/5f8ff3b8c8c20.webp differ diff --git a/static/uploads/5fcb39be07395c4368f15dc9138dd4a5.jpg b/static/uploads/5fcb39be07395c4368f15dc9138dd4a5.jpg new file mode 100644 index 0000000..08fdc34 Binary files /dev/null and b/static/uploads/5fcb39be07395c4368f15dc9138dd4a5.jpg differ diff --git a/static/uploads/7-17-Photo2_Early-blight-MARY.jpg b/static/uploads/7-17-Photo2_Early-blight-MARY.jpg new file mode 100644 index 0000000..c0afc43 Binary files /dev/null and b/static/uploads/7-17-Photo2_Early-blight-MARY.jpg differ diff --git a/static/uploads/8657.jpg b/static/uploads/8657.jpg new file mode 100644 index 0000000..37cdcfd Binary files /dev/null and b/static/uploads/8657.jpg differ diff --git a/static/uploads/9.-Tomato-grub_web.jpg b/static/uploads/9.-Tomato-grub_web.jpg new file mode 100644 index 0000000..17495c4 Binary files /dev/null and b/static/uploads/9.-Tomato-grub_web.jpg differ diff --git a/static/uploads/IMG-20250220-WA0003.jpg b/static/uploads/IMG-20250220-WA0003.jpg new file mode 100644 index 0000000..411c811 Binary files /dev/null and b/static/uploads/IMG-20250220-WA0003.jpg differ diff --git a/static/uploads/IMG_20230108_105612.jpg b/static/uploads/IMG_20230108_105612.jpg new file mode 100644 index 0000000..e345822 Binary files /dev/null and b/static/uploads/IMG_20230108_105612.jpg differ diff --git a/static/uploads/IMG_20230108_105616.jpg b/static/uploads/IMG_20230108_105616.jpg new file mode 100644 index 0000000..d8a3473 Binary files /dev/null and b/static/uploads/IMG_20230108_105616.jpg differ diff --git a/static/uploads/IMG_20230120_221806.jpg b/static/uploads/IMG_20230120_221806.jpg new file mode 100644 index 0000000..ea03fe6 Binary files /dev/null and b/static/uploads/IMG_20230120_221806.jpg differ diff --git a/static/uploads/IMG_20230124_013133.jpg b/static/uploads/IMG_20230124_013133.jpg new file mode 100644 index 0000000..ea32dbb Binary files /dev/null and b/static/uploads/IMG_20230124_013133.jpg differ diff --git a/static/uploads/IMG_20230302_171052_-_Copy.jpg b/static/uploads/IMG_20230302_171052_-_Copy.jpg new file mode 100644 index 0000000..5407148 Binary files /dev/null and b/static/uploads/IMG_20230302_171052_-_Copy.jpg differ diff --git a/static/uploads/IMG_20230302_171054.jpg b/static/uploads/IMG_20230302_171054.jpg new file mode 100644 index 0000000..736a616 Binary files /dev/null and b/static/uploads/IMG_20230302_171054.jpg differ diff --git a/static/uploads/IMG_20230302_171057.jpg b/static/uploads/IMG_20230302_171057.jpg new file mode 100644 index 0000000..c46221b Binary files /dev/null and b/static/uploads/IMG_20230302_171057.jpg differ diff --git a/static/uploads/IMG_20230302_171109.jpg b/static/uploads/IMG_20230302_171109.jpg new file mode 100644 index 0000000..03417e7 Binary files /dev/null and b/static/uploads/IMG_20230302_171109.jpg differ diff --git a/static/uploads/IMG_20230302_171123_-_Copy.jpg b/static/uploads/IMG_20230302_171123_-_Copy.jpg new file mode 100644 index 0000000..d364b77 Binary files /dev/null and b/static/uploads/IMG_20230302_171123_-_Copy.jpg differ diff --git a/static/uploads/IMG_20230302_171126_-_Copy.jpg b/static/uploads/IMG_20230302_171126_-_Copy.jpg new file mode 100644 index 0000000..8a9271d Binary files /dev/null and b/static/uploads/IMG_20230302_171126_-_Copy.jpg differ diff --git a/static/uploads/IMG_20230302_171158.jpg b/static/uploads/IMG_20230302_171158.jpg new file mode 100644 index 0000000..18e7fe0 Binary files /dev/null and b/static/uploads/IMG_20230302_171158.jpg differ diff --git a/static/uploads/IMG_20230405_014419.jpg b/static/uploads/IMG_20230405_014419.jpg new file mode 100644 index 0000000..e62279d Binary files /dev/null and b/static/uploads/IMG_20230405_014419.jpg differ diff --git a/static/uploads/IMG_20230407_042033.jpg b/static/uploads/IMG_20230407_042033.jpg new file mode 100644 index 0000000..5a4e2f2 Binary files /dev/null and b/static/uploads/IMG_20230407_042033.jpg differ diff --git a/static/uploads/IMG_20230411_234124.jpg b/static/uploads/IMG_20230411_234124.jpg new file mode 100644 index 0000000..465f4b6 Binary files /dev/null and b/static/uploads/IMG_20230411_234124.jpg differ diff --git a/static/uploads/NMtZupytzPVCYE6FVoozec-768-80.jpg b/static/uploads/NMtZupytzPVCYE6FVoozec-768-80.jpg new file mode 100644 index 0000000..1320365 Binary files /dev/null and b/static/uploads/NMtZupytzPVCYE6FVoozec-768-80.jpg differ diff --git a/static/uploads/OIP.jpg b/static/uploads/OIP.jpg new file mode 100644 index 0000000..2baaa8f Binary files /dev/null and b/static/uploads/OIP.jpg differ diff --git a/static/uploads/OIPP.jpg b/static/uploads/OIPP.jpg new file mode 100644 index 0000000..1252036 Binary files /dev/null and b/static/uploads/OIPP.jpg differ diff --git a/static/uploads/WIN_20241216_10_09_36_Pro.jpg b/static/uploads/WIN_20241216_10_09_36_Pro.jpg new file mode 100644 index 0000000..7d3f668 Binary files /dev/null and b/static/uploads/WIN_20241216_10_09_36_Pro.jpg differ diff --git a/static/uploads/WIN_20241216_10_37_49_Pro.jpg b/static/uploads/WIN_20241216_10_37_49_Pro.jpg new file mode 100644 index 0000000..a984837 Binary files /dev/null and b/static/uploads/WIN_20241216_10_37_49_Pro.jpg differ diff --git a/static/uploads/WhatsApp_Image_2025-03-02_at_13.15.13_5f2eca25.jpg b/static/uploads/WhatsApp_Image_2025-03-02_at_13.15.13_5f2eca25.jpg new file mode 100644 index 0000000..76496e2 Binary files /dev/null and b/static/uploads/WhatsApp_Image_2025-03-02_at_13.15.13_5f2eca25.jpg differ diff --git a/static/uploads/WhatsApp_Image_2025-03-02_at_13.15.18_f1d9e22d.jpg b/static/uploads/WhatsApp_Image_2025-03-02_at_13.15.18_f1d9e22d.jpg new file mode 100644 index 0000000..99c4df5 Binary files /dev/null and b/static/uploads/WhatsApp_Image_2025-03-02_at_13.15.18_f1d9e22d.jpg differ diff --git a/static/uploads/WhatsApp_Image_2025-03-02_at_13.15.18_fa24aeab.jpg b/static/uploads/WhatsApp_Image_2025-03-02_at_13.15.18_fa24aeab.jpg new file mode 100644 index 0000000..d897e25 Binary files /dev/null and b/static/uploads/WhatsApp_Image_2025-03-02_at_13.15.18_fa24aeab.jpg differ diff --git a/static/uploads/camera_1739932523.png b/static/uploads/camera_1739932523.png new file mode 100644 index 0000000..a8f40c3 Binary files /dev/null and b/static/uploads/camera_1739932523.png differ diff --git a/static/uploads/camera_1739932541.png b/static/uploads/camera_1739932541.png new file mode 100644 index 0000000..361583b Binary files /dev/null and b/static/uploads/camera_1739932541.png differ diff --git a/static/uploads/camera_1739932769.png b/static/uploads/camera_1739932769.png new file mode 100644 index 0000000..f773d35 Binary files /dev/null and b/static/uploads/camera_1739932769.png differ diff --git a/static/uploads/camera_1739932782.png b/static/uploads/camera_1739932782.png new file mode 100644 index 0000000..d297e5b Binary files /dev/null and b/static/uploads/camera_1739932782.png differ diff --git a/static/uploads/camera_1739933069.png b/static/uploads/camera_1739933069.png new file mode 100644 index 0000000..28e468f Binary files /dev/null and b/static/uploads/camera_1739933069.png differ diff --git a/static/uploads/camera_1739933180.png b/static/uploads/camera_1739933180.png new file mode 100644 index 0000000..05c2d82 Binary files /dev/null and b/static/uploads/camera_1739933180.png differ diff --git a/static/uploads/camera_1739933581.png b/static/uploads/camera_1739933581.png new file mode 100644 index 0000000..944d62b Binary files /dev/null and b/static/uploads/camera_1739933581.png differ diff --git a/static/uploads/camera_1739933770.png b/static/uploads/camera_1739933770.png new file mode 100644 index 0000000..783c1b9 Binary files /dev/null and b/static/uploads/camera_1739933770.png differ diff --git a/static/uploads/camera_1739934056.png b/static/uploads/camera_1739934056.png new file mode 100644 index 0000000..8464d98 Binary files /dev/null and b/static/uploads/camera_1739934056.png differ diff --git a/static/uploads/camera_1739934263.png b/static/uploads/camera_1739934263.png new file mode 100644 index 0000000..d01cc0e Binary files /dev/null and b/static/uploads/camera_1739934263.png differ diff --git a/static/uploads/camera_1739934450.png b/static/uploads/camera_1739934450.png new file mode 100644 index 0000000..c2bb400 Binary files /dev/null and b/static/uploads/camera_1739934450.png differ diff --git a/static/uploads/camera_1739934581.png b/static/uploads/camera_1739934581.png new file mode 100644 index 0000000..75779b6 Binary files /dev/null and b/static/uploads/camera_1739934581.png differ diff --git a/static/uploads/camera_1739936173.png b/static/uploads/camera_1739936173.png new file mode 100644 index 0000000..305a573 Binary files /dev/null and b/static/uploads/camera_1739936173.png differ diff --git a/static/uploads/camera_1740044393.png b/static/uploads/camera_1740044393.png new file mode 100644 index 0000000..4135831 Binary files /dev/null and b/static/uploads/camera_1740044393.png differ diff --git a/static/uploads/camera_1740056501.png b/static/uploads/camera_1740056501.png new file mode 100644 index 0000000..1b4834f Binary files /dev/null and b/static/uploads/camera_1740056501.png differ diff --git a/static/uploads/camera_1740056555.png b/static/uploads/camera_1740056555.png new file mode 100644 index 0000000..9565fa5 Binary files /dev/null and b/static/uploads/camera_1740056555.png differ diff --git a/static/uploads/camera_1740459623.png b/static/uploads/camera_1740459623.png new file mode 100644 index 0000000..33db7f0 Binary files /dev/null and b/static/uploads/camera_1740459623.png differ diff --git a/static/uploads/camera_1740459638.png b/static/uploads/camera_1740459638.png new file mode 100644 index 0000000..1772331 Binary files /dev/null and b/static/uploads/camera_1740459638.png differ diff --git a/static/uploads/camera_1740544239.png b/static/uploads/camera_1740544239.png new file mode 100644 index 0000000..9627d11 Binary files /dev/null and b/static/uploads/camera_1740544239.png differ diff --git a/static/uploads/camera_1740544359.png b/static/uploads/camera_1740544359.png new file mode 100644 index 0000000..cf70584 Binary files /dev/null and b/static/uploads/camera_1740544359.png differ diff --git a/static/uploads/camera_1740544403.png b/static/uploads/camera_1740544403.png new file mode 100644 index 0000000..a77eecf Binary files /dev/null and b/static/uploads/camera_1740544403.png differ diff --git a/static/uploads/camera_1745410519.png b/static/uploads/camera_1745410519.png new file mode 100644 index 0000000..e9b9e12 Binary files /dev/null and b/static/uploads/camera_1745410519.png differ diff --git a/static/uploads/camera_1745410647.png b/static/uploads/camera_1745410647.png new file mode 100644 index 0000000..e40ae1c Binary files /dev/null and b/static/uploads/camera_1745410647.png differ diff --git a/static/uploads/camera_1745411211.png b/static/uploads/camera_1745411211.png new file mode 100644 index 0000000..dbe89e9 Binary files /dev/null and b/static/uploads/camera_1745411211.png differ diff --git a/static/uploads/camera_1745411264.png b/static/uploads/camera_1745411264.png new file mode 100644 index 0000000..af65f9f Binary files /dev/null and b/static/uploads/camera_1745411264.png differ diff --git a/static/uploads/camera_1745411388.png b/static/uploads/camera_1745411388.png new file mode 100644 index 0000000..4085218 Binary files /dev/null and b/static/uploads/camera_1745411388.png differ diff --git a/static/uploads/camera_1745504169.png b/static/uploads/camera_1745504169.png new file mode 100644 index 0000000..83b373d Binary files /dev/null and b/static/uploads/camera_1745504169.png differ diff --git a/static/uploads/camera_1745504183.png b/static/uploads/camera_1745504183.png new file mode 100644 index 0000000..3eb7dfc Binary files /dev/null and b/static/uploads/camera_1745504183.png differ diff --git a/static/uploads/camera_1745504192.png b/static/uploads/camera_1745504192.png new file mode 100644 index 0000000..650162b Binary files /dev/null and b/static/uploads/camera_1745504192.png differ diff --git a/static/uploads/camera_1745504203.png b/static/uploads/camera_1745504203.png new file mode 100644 index 0000000..e2d14c2 Binary files /dev/null and b/static/uploads/camera_1745504203.png differ diff --git a/static/uploads/camera_1745504236.png b/static/uploads/camera_1745504236.png new file mode 100644 index 0000000..c955f4a Binary files /dev/null and b/static/uploads/camera_1745504236.png differ diff --git a/static/uploads/camera_1745545820.png b/static/uploads/camera_1745545820.png new file mode 100644 index 0000000..475ce25 Binary files /dev/null and b/static/uploads/camera_1745545820.png differ diff --git a/static/uploads/camera_1745545831.png b/static/uploads/camera_1745545831.png new file mode 100644 index 0000000..f89ab2b Binary files /dev/null and b/static/uploads/camera_1745545831.png differ diff --git a/static/uploads/camera_1745545842.png b/static/uploads/camera_1745545842.png new file mode 100644 index 0000000..1efc1c7 Binary files /dev/null and b/static/uploads/camera_1745545842.png differ diff --git a/static/uploads/camera_1745545854.png b/static/uploads/camera_1745545854.png new file mode 100644 index 0000000..4b6a35f Binary files /dev/null and b/static/uploads/camera_1745545854.png differ diff --git a/static/uploads/camera_1745545864.png b/static/uploads/camera_1745545864.png new file mode 100644 index 0000000..525d0da Binary files /dev/null and b/static/uploads/camera_1745545864.png differ diff --git a/static/uploads/camera_1745545949.png b/static/uploads/camera_1745545949.png new file mode 100644 index 0000000..a7c9e5e Binary files /dev/null and b/static/uploads/camera_1745545949.png differ diff --git a/static/uploads/camera_1745546015.png b/static/uploads/camera_1745546015.png new file mode 100644 index 0000000..faa0173 Binary files /dev/null and b/static/uploads/camera_1745546015.png differ diff --git a/static/uploads/camera_1745546019.png b/static/uploads/camera_1745546019.png new file mode 100644 index 0000000..5f60cc7 Binary files /dev/null and b/static/uploads/camera_1745546019.png differ diff --git a/static/uploads/camera_1745546995.png b/static/uploads/camera_1745546995.png new file mode 100644 index 0000000..eae0f79 Binary files /dev/null and b/static/uploads/camera_1745546995.png differ diff --git a/static/uploads/camera_1745547006.png b/static/uploads/camera_1745547006.png new file mode 100644 index 0000000..c7ecc25 Binary files /dev/null and b/static/uploads/camera_1745547006.png differ diff --git a/static/uploads/camera_1745547010.png b/static/uploads/camera_1745547010.png new file mode 100644 index 0000000..035f673 Binary files /dev/null and b/static/uploads/camera_1745547010.png differ diff --git a/static/uploads/camera_1745547011.png b/static/uploads/camera_1745547011.png new file mode 100644 index 0000000..ccdea2f Binary files /dev/null and b/static/uploads/camera_1745547011.png differ diff --git a/static/uploads/camera_1745547012.png b/static/uploads/camera_1745547012.png new file mode 100644 index 0000000..86f7ce4 Binary files /dev/null and b/static/uploads/camera_1745547012.png differ diff --git a/static/uploads/camera_1745547033.png b/static/uploads/camera_1745547033.png new file mode 100644 index 0000000..754d3f2 Binary files /dev/null and b/static/uploads/camera_1745547033.png differ diff --git a/static/uploads/camera_1745547040.png b/static/uploads/camera_1745547040.png new file mode 100644 index 0000000..133119a Binary files /dev/null and b/static/uploads/camera_1745547040.png differ diff --git a/static/uploads/camera_1745547042.png b/static/uploads/camera_1745547042.png new file mode 100644 index 0000000..8560580 Binary files /dev/null and b/static/uploads/camera_1745547042.png differ diff --git a/static/uploads/camera_1745547049.png b/static/uploads/camera_1745547049.png new file mode 100644 index 0000000..4dcd745 Binary files /dev/null and b/static/uploads/camera_1745547049.png differ diff --git a/static/uploads/camera_1745547050.png b/static/uploads/camera_1745547050.png new file mode 100644 index 0000000..04922bf Binary files /dev/null and b/static/uploads/camera_1745547050.png differ diff --git a/static/uploads/camera_1745547108.png b/static/uploads/camera_1745547108.png new file mode 100644 index 0000000..cf5915e Binary files /dev/null and b/static/uploads/camera_1745547108.png differ diff --git a/static/uploads/camera_1745547133.png b/static/uploads/camera_1745547133.png new file mode 100644 index 0000000..ddc2193 Binary files /dev/null and b/static/uploads/camera_1745547133.png differ diff --git a/static/uploads/camera_1745547137.png b/static/uploads/camera_1745547137.png new file mode 100644 index 0000000..2a7ff14 Binary files /dev/null and b/static/uploads/camera_1745547137.png differ diff --git a/static/uploads/camera_1745547146.png b/static/uploads/camera_1745547146.png new file mode 100644 index 0000000..cdf57f6 Binary files /dev/null and b/static/uploads/camera_1745547146.png differ diff --git a/static/uploads/camera_1745547160.png b/static/uploads/camera_1745547160.png new file mode 100644 index 0000000..4c9b3f6 Binary files /dev/null and b/static/uploads/camera_1745547160.png differ diff --git a/static/uploads/camera_1745547171.png b/static/uploads/camera_1745547171.png new file mode 100644 index 0000000..6747b3e Binary files /dev/null and b/static/uploads/camera_1745547171.png differ diff --git a/static/uploads/camera_1745547172.png b/static/uploads/camera_1745547172.png new file mode 100644 index 0000000..ad9c5c5 Binary files /dev/null and b/static/uploads/camera_1745547172.png differ diff --git a/static/uploads/camera_1745547178.png b/static/uploads/camera_1745547178.png new file mode 100644 index 0000000..e748962 Binary files /dev/null and b/static/uploads/camera_1745547178.png differ diff --git a/static/uploads/camera_1745547186.png b/static/uploads/camera_1745547186.png new file mode 100644 index 0000000..d77ef79 Binary files /dev/null and b/static/uploads/camera_1745547186.png differ diff --git a/static/uploads/camera_1745547192.png b/static/uploads/camera_1745547192.png new file mode 100644 index 0000000..390e3d3 Binary files /dev/null and b/static/uploads/camera_1745547192.png differ diff --git a/static/uploads/camera_1745547203.png b/static/uploads/camera_1745547203.png new file mode 100644 index 0000000..5877658 Binary files /dev/null and b/static/uploads/camera_1745547203.png differ diff --git a/static/uploads/camera_1745547214.png b/static/uploads/camera_1745547214.png new file mode 100644 index 0000000..dc81a80 Binary files /dev/null and b/static/uploads/camera_1745547214.png differ diff --git a/static/uploads/camera_1745547249.png b/static/uploads/camera_1745547249.png new file mode 100644 index 0000000..ff8deb3 Binary files /dev/null and b/static/uploads/camera_1745547249.png differ diff --git a/static/uploads/camera_1746936921.png b/static/uploads/camera_1746936921.png new file mode 100644 index 0000000..57beecd Binary files /dev/null and b/static/uploads/camera_1746936921.png differ diff --git a/static/uploads/camera_1746937724.png b/static/uploads/camera_1746937724.png new file mode 100644 index 0000000..df414cd Binary files /dev/null and b/static/uploads/camera_1746937724.png differ diff --git a/static/uploads/camera_capture_1739929291.png b/static/uploads/camera_capture_1739929291.png new file mode 100644 index 0000000..cbbcad1 Binary files /dev/null and b/static/uploads/camera_capture_1739929291.png differ diff --git a/static/uploads/camera_capture_1739929330.png b/static/uploads/camera_capture_1739929330.png new file mode 100644 index 0000000..20e3570 Binary files /dev/null and b/static/uploads/camera_capture_1739929330.png differ diff --git a/static/uploads/camera_capture_1739929655.png b/static/uploads/camera_capture_1739929655.png new file mode 100644 index 0000000..798fe76 Binary files /dev/null and b/static/uploads/camera_capture_1739929655.png differ diff --git a/static/uploads/captured_image.png b/static/uploads/captured_image.png new file mode 100644 index 0000000..b151b19 Binary files /dev/null and b/static/uploads/captured_image.png differ diff --git a/static/uploads/download.jpg b/static/uploads/download.jpg new file mode 100644 index 0000000..c2dd838 Binary files /dev/null and b/static/uploads/download.jpg differ diff --git a/static/uploads/flipped_IMG_20230309_160824.jpg b/static/uploads/flipped_IMG_20230309_160824.jpg new file mode 100644 index 0000000..d912200 Binary files /dev/null and b/static/uploads/flipped_IMG_20230309_160824.jpg differ diff --git a/static/uploads/istockphoto-1135470169-612x612.jpg b/static/uploads/istockphoto-1135470169-612x612.jpg new file mode 100644 index 0000000..963d1d6 Binary files /dev/null and b/static/uploads/istockphoto-1135470169-612x612.jpg differ diff --git a/static/uploads/jjj.jpg b/static/uploads/jjj.jpg new file mode 100644 index 0000000..f96b838 Binary files /dev/null and b/static/uploads/jjj.jpg differ diff --git a/static/uploads/original_IMG_20230112_122721.jpg b/static/uploads/original_IMG_20230112_122721.jpg new file mode 100644 index 0000000..21678ef Binary files /dev/null and b/static/uploads/original_IMG_20230112_122721.jpg differ diff --git a/static/uploads/segar2.jpg b/static/uploads/segar2.jpg new file mode 100644 index 0000000..98c4b32 Binary files /dev/null and b/static/uploads/segar2.jpg differ diff --git a/static/uploads/segar7.jpg b/static/uploads/segar7.jpg new file mode 100644 index 0000000..b1c496c Binary files /dev/null and b/static/uploads/segar7.jpg differ diff --git a/static/uploads/segar9.jpg b/static/uploads/segar9.jpg new file mode 100644 index 0000000..45a4fd5 Binary files /dev/null and b/static/uploads/segar9.jpg differ diff --git a/static/uploads/ss_aug.png b/static/uploads/ss_aug.png new file mode 100644 index 0000000..b434d47 Binary files /dev/null and b/static/uploads/ss_aug.png differ diff --git a/static/uploads/temp_image.png b/static/uploads/temp_image.png new file mode 100644 index 0000000..2a42c1f Binary files /dev/null and b/static/uploads/temp_image.png differ diff --git a/static/uploads/tomato.jpg b/static/uploads/tomato.jpg new file mode 100644 index 0000000..af38d4f Binary files /dev/null and b/static/uploads/tomato.jpg differ diff --git a/static/uploads/tomato10.jpg b/static/uploads/tomato10.jpg new file mode 100644 index 0000000..d912200 Binary files /dev/null and b/static/uploads/tomato10.jpg differ diff --git a/static/uploads/tomato147.jpg b/static/uploads/tomato147.jpg new file mode 100644 index 0000000..470c946 Binary files /dev/null and b/static/uploads/tomato147.jpg differ diff --git a/static/uploads/tomato2.jpg b/static/uploads/tomato2.jpg new file mode 100644 index 0000000..21678ef Binary files /dev/null and b/static/uploads/tomato2.jpg differ diff --git a/static/uploads/tomato5.jpg b/static/uploads/tomato5.jpg new file mode 100644 index 0000000..4214f7c Binary files /dev/null and b/static/uploads/tomato5.jpg differ diff --git a/templates/about.html b/templates/about.html new file mode 100644 index 0000000..1be9243 --- /dev/null +++ b/templates/about.html @@ -0,0 +1,44 @@ +{% extends "base.html" %} + +{% block title %}ABOUT{% endblock %} + +{% block content %} + +
+
+
+

Tentang Aplikasi

+

Sistem Prediksi Kematangan dan Kesegaran Tomat

+
+

+ Aplikasi ini dikembangkan untuk membantu pengguna dalam menganalisis tingkat kematangan dan kesegaran tomat + secara otomatis menggunakan teknologi kecerdasan buatan. Dengan mengunggah gambar tomat, sistem akan memberikan + hasil prediksi berdasarkan warna dan tekstur tomat yang telah dilatih dalam model AI. +

+

Tujuan Pengembangan

+
    +
  • Mempermudah petani dan pedagang dalam menentukan kualitas tomat.
  • +
  • Menggunakan teknologi AI untuk menganalisis kematangan buah secara akurat.
  • +
  • Mengurangi ketergantungan pada pemeriksaan manual yang bisa bersifat subjektif.
  • +
+

Tentang Pengembang

+

+ Sistem ini dibuat oleh Bagus Haris Suhartono, mahasiswa Teknik Informatika, PSDku Nganjuk, angkatan 2021, + sebagai bagian dari tugas akhir kelulusan. Pengembangan aplikasi ini dilakukan dengan harapan dapat memberikan manfaat + bagi masyarakat, khususnya dalam bidang pertanian dan distribusi hasil panen. +

+

Teknologi yang Digunakan

+
    +
  • Framework: Flask
  • +
  • Bahasa Pemrograman: Python
  • +
  • Model AI untuk klasifikasi gambar
  • +
  • Bootstrap 5 untuk tampilan antarmuka
  • +
+

+ Terima kasih telah menggunakan aplikasi ini! +

+
+
+
+ +{% endblock %} \ No newline at end of file diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..2ad1037 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,133 @@ + + + + + + + {% block title %}My Website{% endblock %} + + + + + + + + + + + + + + + +
+ {% block content %}{% endblock %} +
+ + + + + + + + + + diff --git a/templates/faq.html b/templates/faq.html new file mode 100644 index 0000000..27ae50e --- /dev/null +++ b/templates/faq.html @@ -0,0 +1,114 @@ +{% extends "base.html" %} + +{% block title %}FAQ{% endblock %} + +{% block content %} +
+

Frequently Asked Questions

+

Kumpulan pertanyaan terkait penggunaan web prediksi kematangan dan kualitas tomat.

+
+
+
+

+ +

+
+
+ 1. Pertama, berada pada halaman home.
+ 2. Klik pada tombol Prediksi AI (halaman akan dialihkan pada halaman prediksi).
+ 3. Selanjutnya, arahkan kamera ke arah objek tomat".
+ 4. Kemudian klik tombol ambil gambar.
+ 5. Setelah itu, gambar akan dimuat oleh sistem.
+ 6. Terakhir, hasil prediksi akan muncul.
+
+
+
+
+

+ +

+
+
+ 1. Pertama, berada pada halaman home.
+ 2. Klik pada tombol Prediksi AI (halaman akan dialihkan pada halaman prediksi).
+ 3. Selanjutnya, silahkan klik "Pilih File".
+ 4. Kemudian pilih gambar yang akan dianalisis.
+ 5. Setelah itu, gambar akan dimuat oleh sistem.
+ 6. Terakhir, klik tombol "Upload and Predict".
+
+
+
+ +
+

+ +

+
+
+ Pengguna dapat mengunggah gambar dalam format .jpg, .jpeg, atau .png untuk dianalisis. +
+
+
+ +
+

+ +

+
+
+ Hasil prediksi tersedia dalam maksimal 7 detik setelah gambar diunggah. +
+
+
+ +
+

+ +

+
+
+ Pengguna harus memastikan bahwa gambar yang diunggah telah sesuai dengan format yang telah ditentukan. +
+
+
+ +
+

+ +

+
+
+ Dalam penggunaan layanan prediksi AI ini tidak perlu membuat akun atau melakukan registrasi terlebih dahulu. +
+
+
+ +
+

+ +

+
+
+ Prediksi AI ini memiliki tingkat akurasi tinggi berdasarkan dataset pelatihan yang luas. Namun, hasil prediksi tetap bergantung pada kualitas gambar yang diunggah. Untuk memastikan tingkat kematangan dan kesegaran tomat secara langsung, disarankan melakukan pengecekan manual berdasarkan warna, tekstur, dan aroma. +
+
+
+ +
+
+ +{% endblock %} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..638f44f --- /dev/null +++ b/templates/index.html @@ -0,0 +1,90 @@ +{% extends "base.html" %} + +{% block title %}TOMATO AI{% endblock %} + +{% block content %} + + + + +
+
+
+
+
+

+ Deteksi Tingkat Kematangan dan Kualitas Tomat +

+

+ Sistem berbasis Artificial Intelligence untuk mendeteksi tingkat kematangan dan kualitas tomat + dengan akurasi tinggi. +

+ +
+
+
+ Tomato AI +
+
+
+
+ +
+
+
+
+

+ Kelas Prediksi Kematangan dan Kualitas Tomat +

+

+ Dataset berisi lebih dari 4000 gambar tomat yang diklasifikasikan menjadi 4 kelas dengan kategori + matang busuk, matang segar, mentah busuk, dan mentah segar. +

+
+
+
+ {% set categories = [ + { "title": "Matang Busuk", "img": "/static/image/tomatBusuk.jpg", "desc": "Tomat yang sudah matang namun mengalami pembusukan, biasanya berwarna merah, lembek, berair, dan dapat mengeluarkan bau tidak sedap." }, + { "title": "Matang Segar", "img": "/static/image/tomat_matang.jpg", "desc": "Tomat matang berwarna merah cerah, memiliki rasa manis, tekstur lembut, dan masih dalam kondisi segar tanpa tanda-tanda busuk." }, + { "title": "Mentah Busuk", "img": "/static/image/mentah_busuk.jpg", "desc": "Tomat masih mentah namun sudah mengalami pembusukan, biasanya berwarna hijau pucat, mulai lembek, dan berbau tidak sedap." }, + { "title": "Mentah Segar", "img": "/static/image/Tomat_hijo.jpg", "desc": "Tomat mentah yang masih segar, berwarna hijau, teksturnya keras, dan belum menunjukkan tanda-tanda pembusukan." } + ] %} + {% for category in categories %} +
+
+
+ {{ category.title }} +
+
+
+ {{ category.title }} +
+

+ {{ category.desc }} +

+
+
+
+ {% endfor %} +
+
+
+{% endblock %} diff --git a/templates/more.html b/templates/more.html new file mode 100644 index 0000000..ae8cfe3 --- /dev/null +++ b/templates/more.html @@ -0,0 +1,55 @@ +{% extends "base.html" %} + +{% block title %}MORE{% endblock %} + +{% block content %} +
+

Penjelasan Tomat

+

Apa itu Tomat?

+
+
+
+
+ +
+
+

Definisi Tomat, Tomat (Lycopersicum esculentum) adalah tumbuhan yang berasal dari Amerika Tengah dan Selatan dan termasuk dalam keluarga Solanaceae. + Kata "tomat" diambil dari bahasa Nauhat, dan tomat memiliki hubungan erat dengan kentang. Tumbuhan ini memiliki siklus hidup yang pendek dan dapat tumbuh hingga ketinggian sekitar 1 hingga 3 meter. + Meskipun secara teknis merupakan buah, tomat sering dianggap sebagai sayuran. Tomat sering digunakan sebagai sayuran, bumbu masakan, buah meja, bahan pewarna, dan dalam kosmetik. + Tomat kaya akan antioksidan yang bermanfaat untuk meningkatkan kekebalan tubuh, melembutkan dan mencerahkan kulit, serta mencegah hipertensi, dan lain-lain. +


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

+
+
+
+

Tomat adalah komoditas unggulan dalam hortikultura yang memiliki nilai penting di Indonesia. + Di Indonesia, permintaan pasar untuk sayuran, terutama tomat, terus meningkat setiap tahun, seperti yang tercermin dari peningkatan angka produksi tomat. + Tantangan yang sering dihadapi adalah kurangnya ketersediaan varietas tomat unggul yang memiliki hasil produksi tinggi, kualitas buah yang baik, + serta ketahanan terhadap hama dan penyakit. Mengingat tingginya permintaan tomat, sangat penting untuk melakukan pemilihan atau sortasi tomat berkualitas tinggi guna memenuhi kebutuhan pasar domestik dan internasional, + yang sering kali mengalami ketidaksesuaian antara kualitas yang diharapkan dengan kualitas produk yang dihasilkan. +

+ +

+
+
+
+



+ + +{% endblock %} \ No newline at end of file diff --git a/templates/predict.html b/templates/predict.html new file mode 100644 index 0000000..2fe0d37 --- /dev/null +++ b/templates/predict.html @@ -0,0 +1,63 @@ +{% extends "base.html" %} + +{% block title %}Hasil Prediksi{% endblock %} + +{% block content %} +
+

Hasil Prediksi Gambar Tomat

+

Berikut adalah hasil analisis dari gambar yang telah Anda unggah:

+
+ + {% if img_path %} +
+

Detail Prediksi

+
+
+ + + + + + + + + + + + + + + + + + + +
+
Gambar
+
+
Tanggal
+
+
Waktu
+
+
Prediksi
+
+
Tingkat Akurasi
+
+ Uploaded Image + {{ data_date }}{{ data_time }}{{ predicted_class }}{{ confidence }}%
+
+
+
+
+ Unggah Gambar Baru +
+ {% else %} + + {% endif %} +
+{% endblock %} diff --git a/templates/upload.html b/templates/upload.html new file mode 100644 index 0000000..aeeab6a --- /dev/null +++ b/templates/upload.html @@ -0,0 +1,130 @@ +{% extends "base.html" %} + +{% block title %}Ambil Gambar Tomat{% endblock %} + +{% block content %} +
+
+ {% if error %} + + {% endif %} +
+
+

Ambil Gambar Tomat Anda

+

Pastikan kamera Anda menghadap ke tomat yang akan diprediksi atau unggah gambar tomat dari perangkat Anda!

+
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+
+ + +
+ +
+
+
+
+ + +{% endblock %}