Saturday, May 1, 2021

Edward Lance Lorilla

Edward Lance Lorilla


【VISUAL VB.NET】Folder Option Search

Posted: 01 May 2021 03:38 AM PDT

 Public Class Form1

Dim fileArgs As String Dim path As String = "C:\Windows\System32\" Dim cmdProcess As Process = New Process() Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click fileArgs = "shell32.dll,Options_RunDLL 2" cmdProcess.StartInfo.Arguments = fileArgs cmdProcess.StartInfo.WorkingDirectory = path cmdProcess.StartInfo.FileName = "RunDll32.exe" cmdProcess.Start() cmdProcess.WaitForExit() Me.Show() End SubEnd Class

【FLUTTER ANDROID STUDIO and IOS】Draw Graph

Posted: 01 May 2021 02:12 AM PDT

 import 'package:draw_graph/draw_graph.dart';

import 'package:draw_graph/models/feature.dart';

import 'package:flutter/material.dart';

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to Colors.green and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or simply save your changes to "hot reload" in a Flutter IDE).
// Notice that the counter didn't reset back to zero; the application
// is not restarted.
primarySwatch: Colors.blue,
// This makes the visual density adapt to the platform that you run
// the app on. For desktop platforms, the controls will be smaller and
// closer together (more dense) than on mobile platforms.
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: GraphScreen(),
);
}
}
class GraphScreen extends StatefulWidget {
@override
_GraphScreenState createState() => _GraphScreenState();
}

class _GraphScreenState extends State<GraphScreen> {
final List<Feature> features = [
Feature(
title: "Flutter",
color: Colors.blue,
data: [0.3, 0.6, 0.8, 0.9, 1, 1.2],
),
Feature(
title: "Kotlin",
color: Colors.black,
data: [1, 0.8, 0.6, 0.7, 0.3, 0.1],
),
Feature(
title: "Java",
color: Colors.orange,
data: [0.4, 0.2, 0.9, 0.5, 0.6, 0.4],
),
Feature(
title: "React Native",
color: Colors.red,
data: [0.5, 0.2, 0, 0.3, 1, 1.3],
),
Feature(
title: "Swift",
color: Colors.green,
data: [0.25, 0.6, 1, 0.5, 0.8, 1, 4],
),
];

@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white54,
appBar: AppBar(
title: Text("Flutter Draw Graph Demo"),
automaticallyImplyLeading: false,
),
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.center,

children: <Widget>[
Padding(
padding: const EdgeInsets.symmetric(vertical: 1.0),
child: Text(
"Tasks Management",
style: TextStyle(
fontSize: 28,
fontWeight: FontWeight.bold,
letterSpacing: 2,
),
),
),
LineGraph(
features: features,
size: Size(420, 450),
labelX: ['Day 1', 'Day 2', 'Day 3', 'Day 4', 'Day 5', 'Day 6'],
labelY: ['25%', '45%', '65%', '75%', '85%', '100%'],
showDescription: true,
graphColor: Colors.black87,
),

],
),
);
}
}

【VISUAL VB.NET】Screen Capture

Posted: 30 Apr 2021 07:22 PM PDT

 ' make sure that using System.IO; is included

Imports System.IO' make sure that using System.Drawing.Imaging; is included Imports System.Drawing.ImagingPublic Class Form1 Private tempfile As String = "C:\\Users\\Lorilla Family\\temp.jpg" Private Sub ScreanCapture() If Directory.Exists(Path.GetDirectoryName(tempfile)) Then pictureBox1.Image = Nothing File.Delete(tempfile) End If Dim bounds As Rectangle = Me.Bounds Using bitmap As New Bitmap(bounds.Width, bounds.Height) Using g As Graphics = Graphics.FromImage(bitmap) g.CopyFromScreen(New Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size) End Using bitmap.Save(tempfile, ImageFormat.Jpeg) End Using End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ScreanCapture() Dim fs As New FileStream(tempfile, FileMode.Open) ' pictureBox1.Image = new Bitmap(tempfile); PictureBox1.Image = New Bitmap(fs) fs.Close() End SubEnd Class

【GAMEMAKER】Ship Mini Game

Posted: 30 Apr 2021 08:18 AM PDT

 Information about object: obj_bubble

Sprite: spr_bubble
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Step Event:
execute code:

image_xscale*=0.99;
image_yscale*=0.99;
if image_xscale<0.05 instance_destroy();
Information about object: obj_beam_1
Sprite: spr_beam_1
Solid: false
Visible: true
Depth:
0
Persistent: false
Parent: obj_collision_parent
Children:
Mask:

No Physics Object
Information about object: obj_beam_2
Sprite: spr_beam_2
Solid: false
Visible: true
Depth:
0
Persistent: false
Parent: obj_collision_parent
Children:
Mask:

No Physics Object

Information about object: obj_beam_3
Sprite: spr_beam_3
Solid: false
Visible: true
Depth:
0
Persistent: false
Parent: obj_collision_parent
Children:
Mask:

No Physics Object
Information about object: obj_beam_4
Sprite: spr_beam_4
Solid: false
Visible: true
Depth:
0
Persistent: false
Parent: obj_collision_parent
Children:
Mask:

No Physics Object

Information about object: obj_game_end
Sprite: spr_flag
Solid: false
Visible: true
Depth:
0
Persistent: false
Parent:
Children:
Mask:

No Physics Object

Information about object: obj_collision_parent
Sprite:
Solid: false
Visible: true
Depth:
0
Persistent: false
Parent:

Children
obj_beam_1
obj_beam_2
obj_beam_3
obj_beam_4
obj_crate_floating
obj_crate_path
Mask:


No Physics Object

Information about object: obj_crate_floating
Sprite: spr_crate
Solid: false
Visible: true
Depth:
0
Persistent: false
Parent: obj_collision_parent
Children:
Mask:

No Physics Object

Create Event:
execute code:

angle=0;//initial angle
sw=5;//for sine wave
Step Event:
execute code:

sw += 0.3;//for sin wave
angle= sin(sw) * 5;//for sin wave
image_angle=angle;

Information about object: obj_crate_path
Sprite: spr_crate
Solid: false
Visible: true
Depth:
0
Persistent: false
Parent: obj_collision_parent
Children:
Mask:

No Physics Object

Create Event:
execute code:

angle=0;//initial angle
sw=5;//for sine wave
path_start(path_crate_1,3,path_action_continue,true);
Step Event:
execute code:

sw += 0.3;//for sin wave
angle= sin(sw) * 5;//for sin wave
image_angle=direction+angle;

【PYTHON OPENCV】Face detection using OpenCV DNN face detector feeding several images to the network

Posted: 30 Apr 2021 08:13 AM PDT

 """

Face detection using OpenCV DNN face detector when feeding several images to the network """ # Import required packages:import cv2import numpy as npfrom matplotlib import pyplot as plt def show_img_with_matplotlib(color_img, title, pos): """Shows an image using matplotlib capabilities""" img_RGB = color_img[:, :, ::-1] ax = plt.subplot(2, 2, pos) plt.imshow(img_RGB) plt.title(title) plt.axis('off') # Load pre-trained model:net = cv2.dnn.readNetFromCaffe("deploy.prototxt", "res10_300x300_ssd_iter_140000_fp16.caffemodel") # Load images and get the list of images:image = cv2.imread("face_test.png")image2 = cv2.imread("face_test2.jpg")images = [image.copy(), image2.copy()] # Call cv2.dnn.blobFromImages():blob_images = cv2.dnn.blobFromImages(images, 1.0, (300, 300), [104., 117., 123.], False, False) # Set the blob as input and obtain the detections:net.setInput(blob_images)detections = net.forward() # Iterate over all detections:# We have to check the first element of each detection to know which image it belongs to:for i in range(0, detections.shape[2]): # First, we have to get the image the detection belongs to: img_id = int(detections[0, 0, i, 0]) # Get the confidence of this prediction: confidence = detections[0, 0, i, 2] # Filter out weak predictions: if confidence > 0.25: # Get the size of the current image: (h, w) = images[img_id].shape[:2] # Get the (x,y) coordinates of the detection: box = detections[0, 0, i, 3:7] * np.array([w, h, w, h]) (startX, startY, endX, endY) = box.astype("int") # Draw bounding box and probability: text = "{:.2f}%".format(confidence * 100) y = startY - 10 if startY - 10 > 10 else startY + 10 cv2.rectangle(images[img_id], (startX, startY), (endX, endY), (0, 0, 255), 2) cv2.putText(images[img_id], text, (startX, y), cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2) # Create the dimensions of the figure and set title:fig = plt.figure(figsize=(16, 8))plt.suptitle("OpenCV DNN face detector when feeding several images", fontsize=14, fontweight='bold')fig.patch.set_facecolor('silver') # Show the input and the output images with the detections:show_img_with_matplotlib(image, "input img 1", 1)show_img_with_matplotlib(image2, "input img 2", 2)show_img_with_matplotlib(images[0], "output img 1", 3)show_img_with_matplotlib(images[1], "output img 2", 4) # Show the Figure:plt.show()

【VUE JS】Checking out with payment request API

Posted: 30 Apr 2021 08:09 AM PDT

<div id="app" class="container">
<h2>Cookies - fresh from our oven!</h2>
<h3>All just 75¢ each</h3>
<div class="text-right"><span class="cartcount">{{cartItems.length}} item(s) in your basket</span></div>
<div class="container">
<div class="row">
<div class="col-xs-3 text-center" v-for="item in items">
<div class="img"><img class="img-responsive" :src="item.image" alt=""></div>
<h5>{{ item.title }}</h5>
<p class="text-center">
<input v-model="item.qty" type="number" class="form-control" placeholder="Qty" min="1"/></p>
<button @click="addToCart(item)" class="btn btn-sm btn-primary">Add</button>
</p>
</div>
</div>
</div>
<h4>Cart</h4>
<shopping-cart inline-template :items="cartItems">
<div>
<div v-for="(item, index) in items" class="product">
<div class="producttitle">{{item.title}}</div>
<div style="width:150px">Quantity: <input v-model="item.qty" class="form-control input-qty" type="number"></div>
<div class="price">${{item.price | formatCurrency}}</div>
<div class="discard" @click="removeItem(index)"><span class="glyphicon glyphicon-trash"></span></div>
</div>
<table class="table table-cart">
<tr v-show="items.length === 0">
<td colspan="4" class="text-center">Cart is empty</td>
</tr>
<tr v-show="items.length > 0">
<td class="blank"></td>
<td class="carttotal">Cart Total</td>
<td class="cartamt">{{Total | formatCurrency}}</td>
</tr>
</table>
<div class="checkout-div" v-show="items.length > 0">
<button type="button" class="btn btn-default checkout" v-on:click="checkout">Checkout securely</button>
</div>
<div id="message"></div>
<div id="instructions">
<h2>Add delivery instructions</h2>
<p>Have any special requirements? You still have time to let us know:</p>
<textarea id="additional-details-container"></textarea>
<button id="delinstruct">Submit</button>
</div>
</div>
</shopping-cart>
</div>
view raw index.html hosted with ❤ by GitHub
const methodData = [{
supportedMethods: 'basic-card',
data: {
supportedNetworks: ['visa', 'mastercard', 'amex']
}
}, {
supportedMethods: 'https://bobpay.xyz/pay'
}, {
supportedMethods: 'interledger'
}];
function displayMessage(symbol, status, mesg) {
document.getElementById("message").classList.remove();
document.getElementById("message").classList.add(status);
document.getElementById("message").innerHTML = "<span>" + symbol + "</span>" + mesg;
}
function updateDetails(details, shippingOption, resolve, stotal) {
if (shippingOption === 'standard') {
selectedOption = details.shippingOptions[0];
otherOption = details.shippingOptions[1];
details.total.amount.value = stotal;
} else {
selectedOption = details.shippingOptions[1];
otherOption = details.shippingOptions[0];
details.total.amount.value = (Number(stotal) + Number(3.99)).toFixed(2);
}
selectedOption.selected = true;
otherOption.selected = false;
details.displayItems.splice(1, 1, selectedOption);
resolve(details);
}
function initCheckout (e) {
if(window.PaymentRequest) {
var subtotal = Number(document.querySelector(".cartamt").innerText);
var delivery = 0.00;
var beforetax = (subtotal + delivery)
var tax = Number( beforetax * 0.0575);
var total = Number(subtotal + tax + delivery).toFixed(2);
const paymentDetails = {
total: {
label: 'Total due',
amount: { currency: 'USD', value: total }
},
displayItems: [{
label: 'Sub-total',
amount: { currency: 'USD', value: subtotal }
}, {
label: 'FREE Delivery (3-5 days)',
amount: { currency: 'USD', value: delivery.toFixed(2) }
}, {
label: 'Sales Tax @ 5.75%',
amount: { currency: 'USD', value: tax.toFixed(2) }
}],
modifiers: [{
supportedMethods: 'https://bobpay.xyz/pay',
additionalDisplayItems: [{
label: 'Processing fee',
amount: { currency: 'USD', value: '3.00' }
}],
total: {
label: 'Total to pay by card',
amount: {currency: 'USD', value: Number(total + 3).toFixed(2)}}
}], shippingOptions: [{
id: 'standard',
label: 'FREE delivery (3-5 days)',
amount: {currency: 'USD', value: '0.00'},
selected: true,
},
{
id: 'express',
label: 'Express delivery (next day)',
amount: {currency: 'USD', value: '3.99'},
},
],
};
const options = { requestPayerEmail: true, requestShipping: true };
const request = new PaymentRequest(methodData, paymentDetails, options);
request.addEventListener('shippingaddresschange', function(evt) {
evt.updateWith(new Promise(function(resolve) {
updateDetails(paymentDetails, request.shippingAddress, resolve, total);
}));
});
request.addEventListener('shippingoptionchange', function(evt) {
evt.updateWith(new Promise(function(resolve) {
updateDetails(paymentDetails, request.shippingOption, resolve, total);
}));
});
if (request.canMakePayment) {
request.canMakePayment().then(function(result) {
if (result) {
request.show().then(function(result) {
result.complete('success').then(function() {
displayMessage("\u2714", "success", "Payment received - thanks for your order!");
const additionalDetailsContainer = document.getElementById('instructions');
additionalDetailsContainer.style.display = 'block';
additionalDetailsContainer.focus();
});
}).catch(function(err) {
if (err.code == DOMException.ABORT_ERR) {
console.error(err.message);
displayMessage("&#128712;", "info", "Request has been cancelled.");
} else {
console.error(err.message);
displayMessage("\u2716", "failure", "There was a problem with payment");
}
});
} else {
console.log('Cannot make payment');
displayMessage("&#128712;", "info", "Sorry - no valid payment methods available");
}
}).catch(function(err) {
console.log(request, err);
});
}
}
}
const products = [
{id: 1,title: 'Cherry Bakewell', price: 0.75, qty: 1, image: 'https://via.placeholder.com/100x100.png?text=cbakewell.png'},
{id: 2,title: 'Coconut',price: 0.75, qty: 1,image: 'https://via.placeholder.com/100x100.png?text=coconut.png'},
{id: 3,title: 'Dark Choc',price: 0.75,qty: 1,image: 'https://via.placeholder.com/100x100.png?text=dark-choc.png'},
{id: 4,title: 'Double Choc',price: 0.75, qty: 1, image: 'https://via.placeholder.com/100x100.png?text=double-choc.png'},
{id: 5,title: 'Jaffa', price: 0.75, qty: 1, image: 'https://via.placeholder.com/100x100.png?text=jaffa.png'},
{id: 6,title: 'Oatmeal & Raisin',price: 0.75, qty: 1,image: 'https://via.placeholder.com/100x100.png?text=oatmeal-rasin.png'},
{id: 7,title: 'Raspberry & White Choc',price: 0.75,qty: 1,image: 'https://via.placeholder.com/100x100.png?text=rasberry-white-choc.png'},
{id: 8,title: 'Toffee',price: 0.75, qty: 1, image: 'https://via.placeholder.com/100x100.png?text=toffee.png'}
];
function formatNumber(n, c, d, t){
var c = isNaN(c = Math.abs(c)) ? 2 : c,
d = d === undefined ? '.' : d,
t = t === undefined ? ',' : t,
s = n < 0 ? '-' : '',
i = String(parseInt(n = Math.abs(Number(n) || 0).toFixed(c))),
j = (j = i.length) > 3 ? j % 3 : 0;
return s + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');
}
Vue.filter('formatCurrency', function (value) {
return formatNumber(value, 2, '.', ',');
});
Vue.component('shopping-cart', {
props: ['items'],
computed: {
Total: function() {
var total = 0;
this.items.forEach(item => {
total += (item.price * item.qty);
});
return total;
}
},
methods: {
removeItem(index) {
this.items.splice(index, 1);
}
}
});
const vm = new Vue({
el: '#app',
data: {
cartItems: [],
items : products
},
methods: {
checkout: function(event) {
console.log("Checkout");
initCheckout();
},
addToCart(itemToAdd) {
var found = false;
// Check if the item was already added to cart
// If so them add it to the qty field
this.cartItems.forEach(item => {
if (item.id === itemToAdd.id) {
found = true;
item.qty += itemToAdd.qty;
}
});
if (found === false) {
this.cartItems.push(Vue.util.extend({}, itemToAdd));
}
itemToAdd.qty = 1;
}
}
});
view raw script.js hosted with ❤ by GitHub
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
view raw scripts hosted with ❤ by GitHub
body {
font-family: 'Amatic SC', cursive;
}
h2 {
font-size: 30px;
border-bottom: 1px solid #000;
padding-bottom: 5px;
font-family: 'Amatic SC', sans-serif;
font-size: 45px;
font-weight: bold;
}
h3 {
font-family: montserrat, sans-serif;
}
h4 {
border-bottom: 1px solid #000000;
font-size: 18px;
font-family: 'Montserrat', sans-serif;
margin-top: -10px;
}
h5 {
height: 30px;
font-size: 27px;
font-weight: 700;
}
.container{
padding:20px;
max-width: 850px;
}
.table > tbody > tr > td {
border-top: none;
}
.col-xs-3 {
height: 280px;
width: 205px;
}
.img {
width: 150px;
height: 150px;
display: block;
margin-left: auto;
margin-right: auto;
}
.form-control {
width: 40%;
display: inline-block;
float: left;
font-family: 'Montserrat', sans-serif
}
.btn-sm {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
float: left;
border-radius: 3px;
margin-top: -33px;
margin-left: 80px;
font-family: 'Montserrat', sans-serif;
font-size: 14px;
}
.input-qty {
width: 45%;
float: right;
margin-left: 10px;
margin-top: -5px;
}
span.cartcount {
font-size: 24px;
font-weight: 700;
}
div.checkout-div > button {
margin-left: 49%;
display: block;
width: 250px;
font-family: montserrat, sans-serif;
background-color: #ef0000;
color: #ffffff;
font-weight: 700;
letter-spacing: 1.5px;
border-radius: 12px;
padding: 10px;
font-size: 18px;
}
.table-cart {
width: 100%;
max-width: 100%;
margin-bottom: 20px;
font-family: montserrat, sans-serif;
}
#instructions {
display: none;
}
#instructions > h2 > span {
float: left;
}
textarea {
width: 325px;
height: 200px;
}
#delinstruct {
background-color: white;
border: none;
border-radius: 24px;
cursor: pointer;
font-size: 16px;
padding: 16px 32px;
width: 170px;
background-color: #c21807;
color: #ffffff;
letter-spacing: 2px;
font-weight: 700;
margin: 20px 0 0 170px;
display: block;
margin-bottom: 20px;
}
#instructions > p {
font-family: montserrat, sans-serif;
}
#delinstruct:hover {
background-color: #f31e09;
}
#message {
margin-top: -45px;
width: 320px;
display: none;
padding: 10px;
font-weight: bold;
border-radius: 5px;
font-family: monserrat, sans-serif;
font-size: 18px;
animation: clear-message 3s 1;
-webkit-animation: clear-message 3s 1;
animation-fill-mode: forwards;
animation-delay: 30s;
-webkit-animation-delay: 1s;
/* Safari and Chrome */
-webkit-animation-fill-mode: forwards;
}
@keyframes clear-message {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-webkit-keyframes clear-message {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
#message.success {
background-color: #ace1af;
color: #008000;
display: block;
}
#message.success > span {
float: left;
font-size: 30px;
color: #008000;
padding: 0px 10px;
line-height: 40px;
line-height: 50px;
}
#message.failure {
background-color: #FFD1DC;
color: #ff0000;
display: block;
}
#message.failure > span {
float: left;
font-size: 30px;
color: red;
padding: 0px 10px;
line-height: 40px;
line-height: 50px;
}
#message.info {
background-color: #FCF75E;
display: block;
color: #000000;
line-height: 20px;
}
#message.info > span {
float: left;
font-size: 30px;
color: #000000;
padding: 0px 10px;
line-height: 20px;
}
#app > div:nth-child(6) {
margin-bottom: 40px;
border-bottom: 1px solid #000000;
padding-bottom: 20px;
}
button {
display: inline-block;
border: none;
padding: 16px 32px;
margin: 0;
text-decoration: none;
background: #ffffff;
color: #000000;
font-family: sans-serif;
font-size: 32px;
line-height: 1;
cursor: pointer;
text-align: center;
transition: background 250ms ease-in-out, transform 150ms ease;
-webkit-appearance: none;
-moz-appearance: none;
margin-top: -10px;
}
button:hover,
button:focus {
background: #8b0000;
color: #ffffff;
}
button:focus {
outline: 1px solid #fff;
outline-offset: -4px;
}
button:active {
transform: scale(0.99);
}
.btn-default:hover {
color: #ffffff;
background-color: #8b0000;
border-color: #000000;
}
.btn-default:active.focus, .btn-default:active:focus, .btn-default:active:hover, .btn-default:focus {
background-color: #8b0000;
color: #ffffff;
border-color: #000000;
}
.btn.active.focus, .btn.active:focus, .btn.focus,
.btn:active.focus, .btn:active:focus, .btn:focus {
outline: none;
}
.btn-primary {
background-color: #ef0000;
border: 1px solid #8b0000;
outline: none;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary:active:focus {
background-color: #8b0000;
border: 1px solid #8b0000;
outline: none;
}
.product {
display: flex;
font-family: 'Montserrat', sans-serif;
height: 40px;
}
.product > .price {
margin-left: 20px;
}
.producttitle {
width: 400px;
}
.carttotal, .cartant {
font-weight: bold;
font-size: 16px;
}
.cartamt:before {
content: "$";
}
td.blank {
width: 390px;
}
td.carttotal {
width: 172px;
}
.discard {
font-size: 18px;
width: 20px;
padding: 0;
margin-left: 10px;
margin-top: 0px;
}
view raw style.css hosted with ❤ by GitHub
<link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css?family=Amatic+SC&amp;display=swap" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet" />
view raw styles hosted with ❤ by GitHub

No comments:

Post a Comment