2 Commits

Author SHA1 Message Date
e891a1124a Change computer 2020-12-29 23:00:49 +01:00
ff28f125a1 Started new post
Post about how glados.no is created
2020-12-26 18:53:35 +01:00
101 changed files with 88 additions and 577 deletions

View File

@@ -32,12 +32,11 @@ author:
git_username: oyvindskaaden
collections:
posts:
excerpt_separator: <!--more-->
permalink:
markdown: kramdown
@@ -54,7 +53,7 @@ defaults:
type: "posts"
values:
layout: layouts/post
permalink: /prosjekter/:categories/:year/:month/:day/:title
permalink: /prosjekter/:year/:month/:day/:title
-
scope:
path: "ntnu/*"

View File

@@ -1,89 +1,51 @@
# Våren 2021
-
name: Våren 2021
href: 21v
courses:
-
course: ttt4280
desc: Sensorer og instrumentering, våren 2021.
updated: 2021-01-11
-
course: tfe4130
desc: Bølgeforplantning, våren 2021.
updated: 2021-01-12
-
course: ttk4145
desc: Sanntidsprogrammering, våren 2021.
updated: 2021-05-04
-
course: tiø4252
desc: Teknologiledelse, våren 2021.
updated: 2021-05-04
# Høsten 2020
-
name: Høsten 2020
href: 20h
courses:
-
course: tfe4152
desc: Design av integrerte kretser, høsten 2020.
updated: 2020-12-16
href: tfe4152/summary
-
course: ttt4120
desc: Digital signalbehandling, høsten 2020.
updated: 2020-12-06
href: ttt4120/summary
-
course: mfel3010
desc: Medisin for teknologi- og realfagsstudenter, høsten 2020.
updated: 2020-11-25
href: mfel3010/summary
-
course: tfe4146
desc: Halvlederkomponenter, høsten 2020.
updated: 2020-11-23
href: tfe4146/summary
-
course: tfe4152
desc: Design av integrerte kretser, høsten 2020.
updated: 2020-12-16
href: tfe4152/summary
-
course: ttt4120
desc: Digital signalbehandling, høsten 2020.
updated: 2020-12-06
href: ttt4120/summary
-
course: mfel3010
desc: Medisin for teknologi- og realfagsstudenter, høsten 2020.
updated: 2020-11-25
href: mfel3010/summary
-
course: tfe4146
desc: Halvlederkomponenter, høsten 2020.
updated: 2020-11-23
href: tfe4146/summary
# Våren 2020
-
name: Våren 2020
href: 20v
courses:
-
course: ttt4270
desc: Elektronisk systemdesign, prosjekt, våren 2020.
updated: 2020-05-05
-
course: ttt4270
desc: Elektronisk systemdesign, prosjekt, våren 2020.
updated: 2020-05-05
# Høsten 2019
-
name: Høsten 2019
href: 19h
courses:
-
course: ttt4265
desc: Elektronisk systemdesign og -analyse II, høsten 2019.
updated: 2019-12-02
-
course: tdt4160
desc: Datamaskiner og digitalteknikk, høsten 2019.
updated: 2019-11-28
-
course: ttt4265
desc: Elektronisk systemdesign og -analyse II, høsten 2019.
updated: 2019-12-02
-
course: tdt4160
desc: Datamaskiner og digitalteknikk, høsten 2019.
updated: 2019-11-28
# Våren 2019
-
name: Våren 2019
href: 19v
courses:
-
course: ttt4260
desc: Elektronisk systemdesign og -analyse I, våren 2019.
updated: 2019-05-05
-
course: tma4105
desc: Matematikk 2, våren 2019.
updated: 2019-05-21
-
course: tdt4102
desc: Prosedyre og objektorientert programmering, våren 2019.
updated: 2019-05-15
-
course: ttt4260
desc: Elektronisk systemdesign og -analyse I, våren 2019.
updated: 2019-05-05
-
course: tma4105
desc: Matematikk 2, våren 2019.
updated: 2019-05-21
-
course: tdt4102
desc: Prosedyre og objektorientert programmering, våren 2019.
updated: 2019-05-15

View File

@@ -1,5 +1,4 @@
<head>
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta charset="utf-8">
@@ -18,7 +17,6 @@
<link rel="stylesheet" href="{{ "/assets/css/default.css" | relative_url }}"/>
{% endif %}
<title>
{% if page.title %}
{{ page.title }} &middot; {{ site.title }}

View File

@@ -11,7 +11,7 @@
<div class="navbar-nav"><!--ml-auto for høyrejustering-->
<!--<a class="nav-item nav-link {% if page.url == '/' %}active{% endif %}" href="/">Hjem</a>-->
{% for entry in site.data.nav %}
<a class="nav-item nav-link {% if page.url contains entry.href and page.url != / %}active{% endif %}" href="{{ entry.href }}">{{ entry.title }}</a>
<a class="nav-item nav-link {% if page.url contains entry.href and page.url != / %}active{% endif %}" href="{{ entry.href }}">{{ entry.title }}</a>
{% endfor %}
</div>
<div class="navbar-nav ml-auto">

View File

@@ -2,7 +2,6 @@
<script src="{{ "/assets/js/jquery-3.5.1.min.js" | relative_url }}"></script>
<script src="{{ "/assets/js/bootstrap.bundle.min.js" | relative_url }}"></script>
<script src="{{ "/assets/js/bootstrap-toc.min.js" | relative_url }}"></script>
<!--Anchors-->
<script src="{{ "/assets/js/anchor.min.js" | relative_url }}"></script>
<script>
@@ -11,4 +10,4 @@
icon: '#',
};
anchors.add('h1, h2, h3, h4, h5').remove('.no-anchor');
</script>
</script>

View File

@@ -1,20 +0,0 @@
---
layout: default
---
<div class="jumbotron">
<div class="container">
<h1 class="no-anchor" data-toc-skip>{{ page.title }}</h1>
<p>{{ page.description }}</p>
<small>Forelesningsdato {{ page.date | date: "%d.%m.%Y" }}</small>
</div>
</div>
<div class="container" id="main">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-12 col-md-9">
{{ content }}
</div>
<div class="col-md-3 d-none d-md-block" id="sidebar">
<nav id="toc" data-toggle="toc" class="sticky-top" style="z-index:1"></nav>
</div>
</div>
</div>

View File

@@ -0,0 +1,32 @@
---
title: "glados.no"
description: Hvordan generere nettsider med git og jekyll
date: 2020-12-26
categories: glados
tags: website glados jekyll git gitea
---
Hvordan er egentlig [glados.no](https://glados.no) satt opp som en kontinuerlig integrasjon ved hjelp av jekyll, bootstrap og git.
<!--MORE-->
## Prinsipp
Jeg er er en ganske lat person, men jeg ønsker å lage en velutformet personlig nettside med alt fra personlige prosjekter til fag på NTNU.
Derfor ønsker jeg å sette opp en statisk nettsidegenerator som gjør det enkelt for meg å oppdatere og legge nye til til på nettstedet.
### Statisk nettsidegenerator
En bra løsning på dette problemet er å bruke en statisk nettsidegenerator.
Da er det mulig å skrive hele nettsteder i det enkle språket markdown, som bruker en syntaks for å beskrive hvilke elementer som brukes.
Språket brukes på alt fra GitHub (på README filene) til å skrive større dokumentasjon med Pandoc.
Det finens uttallige forskjellige generatorer, men de to store (i dag) er [jekyll](https://jekyllrb.com/) og [HUGO](https://gohugo.io/).
Begge baserer seg på markdown, har en ganske lik filstruktur og er begge brukt masse.
Jekyll brukes faktisk for å generere [Github Pages](https://pages.github.com/).
### Versjonskontroll

View File

@@ -1,11 +1,7 @@
---
layout: layouts/list
layout: layouts/page
title: Om
permalink: /om/
---
Mitt navn er Øyvind Skaaden. Jeg er 22 år gammel og studerer Elektronisk systemdesign og innovasjon på NTNU.
Jeg er stor fan av open-source og prøver så godt jeg kan å fremme dette.
Jeg har både en [github](https://github.com/oyvindskaaden) og en [personlig git](https://git.glados.no/).
Mitt navn er Øyvind Skaaden. Jeg er 21 år gammel og studerer Elektronisk systemdesign og innovasjon på NTNU.

View File

@@ -102,7 +102,6 @@ blockquote {
a {
color: var(--link-color);
text-decoration: none;
}
a:hover {

View File

@@ -27,13 +27,7 @@
min-height: calc(100vh - 47.75rem);
}
/*
.home-link a{
text-decoration: none;
}
*/
a.home-link:hover{
.home-link>a {
text-decoration: none;
}

View File

@@ -7,12 +7,12 @@ description: Personlig nettside for Øyvind Skaaden. Inneholder det meste av per
<div class="row">
{% for home in site.data.home %}
<div class="col-md-4">
<a class="home-link" href="{{ home.href }}">
<a href="{{ home.href }}">
<div class="icon">
<i class="fas {{ home.icon }}"></i>
</div>
<h3 class="no-anchor home-link">{{ home.title }}</h3>
</a>
<h3 class="no-anchor home-link"><a class="" href="{{ home.href }}">{{ home.title }}</a></h3>
<p>{{ home.description }}</p>
</div>
{% endfor %}

View File

@@ -1,74 +0,0 @@
---
title: "TFE4130 - 1D Bølger"
description: "2021-01-12"
math: true
---
## Hva er bølger?
Bevegelse av partikler i et medium.
Dispersive gjør at signalet kan endre seg over tid og strekning.
Bølgehastigheten er avhengig av frekvensen.
Ikke-dispersive betyr at bølgen beveger seg med samme hastighet hele tiden, og vil derfor være lik ved alle distanser.
Bølger kan inteferere.
Kurset handler mest om EM-bølger, men mekaniske bølger er enklere.
Det er da kun trykk som beskriver en bølge, mot en vektor med flere komponenter i EM-bølger.
Velocity potential:
$$WIP$$
Velocities at depth:
$$WIP$$
Dispersjonsrelasjonen i havbølger
$$ \omega^2 = gk \tanh kd $$
Der $g$ er tyngdeakserelasjonen, $k$ er bølgetallet og $d$ er dybden.
### Forskjellige typer bølger
Longitudinale: Langsgående bølger.
Transversale: Bølger som beveger seg normalt på propageringsretningen.
### Matematisk
Bølgene er løsningen på bølgelikningen i forskjellige dimensjoner.
$$ \ddot{u} = \frac{\partial^2 u}{\partial t^2} = c^2 \nabla^2 u $$
Denne løses som en partiell differensiallikning.
En ikke-dispersiv hamonisk bølge er definert:
$$ p(x, t) = \hat{p} \sin(\omega t - kx) $$
Der $\omega = 2\pi f$ er frekvensen, $k = \tfrac{\omega}{c}$ er bølgekonstanten, $c$ er propageringshastigheten og $\hat{p}$ er bølgeamplituden.
## Lydbølger
Lydbølger er endringer i lydtrykket rundt standardtrykket/det statiske trykket.
$$ \underbrace{P_\text{total}(x,t)}_{\text{Lufttrykk, [Pa]}} = \underbrace{P_\text{atm}}_\text{Statisk trykk} + \underbrace{p(x,t)}_\text{endringer i trykket, lyd} $$
Bølgelikningen for lydbølger:
$$ \frac{\partial^2 p}{\partial x^2} - \frac{1}{c^2} \frac{\partial^2 p}{\partial t^2} $$
## Helmholtz' likning
Spesialtilfelle av bølgelikningen når bølgen er en harmonisk svingning.
$$ p(x,t) = p(x) e^{j\omega t} $$
Den tidsavhengige faktoren kan faktoriseres ut av likningen og vi står igjen med en ODE.
$$ \frac{\partial^2 p(x)}{\partial x^2} + k^2 p(x) = 0 $$

View File

@@ -1,24 +0,0 @@
---
layout: layouts/lecture
title: "TFE4130"
description: "1D Bølger forts."
date: "2021-01-14"
math: true
---
## Akustisk impedanse
## Akustisk intensitet
$$ \boldsymbol{I} = \frac{1}{T}\int_0^T p_\text{real}\boldsymbol{v}_\text{real}(t) dt $$
FOr en planbølge
$$ I_x = \frac{p_\text{rms}}{p_x c}$$
## Refleksjon og transmisjon
Dersom en børge beveger seg over en grenseflate mellom to forskjellige impedanser.
* Trykket nå være kontinuerlig over grenseflaten
* Farten over grenseflaten må være konstant.

View File

@@ -1,15 +0,0 @@
---
layout: layouts/list
title: "TFE4130"
description: "Bølgeforplantning"
---
## Filer og annet
Alle øvinger og andre viktige filer ligger på [git](https://git.glados.no/oyvindskaaden/TFE4130).
## Forelesninger
[2021-01-12](./lectures/2021-01-12/) - Intro
[2021-01-14](./lectures/2021-01-14/) - Bølger forts.

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 8.6 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,200 +0,0 @@
---
title: "Oppsumering av TTK4145"
description: "Lot of theory and discussion, some fomulas, spring 2021."
date: 2021-05-04
math: true
---
## Fault tolerance
Hard to capture faults.
### Bugs
* 1 bug per 50 lines before testing
* 1 bug per 500 at release
* 1 bug per 550 after a year, the constant
1. Make the program work within specs.
2. Run/Tests of the program-
3. Errors happen
4. Locate errors
* Incomplete spec
* Missing handleling of som situation
5. Fix code
### Traditional error handeling
{% highlight c %}
FILE *
openConfigFile(){
FILE * f = fopen("/path/to/config.conf");
if (f == NULL) {
switch(errno){
case ENOMEM: {
...
break;
}
case ENOTDIR: {
...
break;
}
// Do this for all errors
}
}
}
{% endhighlight %}
### Causes of errors
* Incomplete specification
* Software bugs
* HW problems
* Communication problems
### Fault tolerance in real time systems
The problem with traditional errorhandleing is that errors can happen at any possible time.
This is extremely hard to test.
This is some of the error handling real time programming have.
* Handling of unexpected errors
* More threads hanles errors
* Can not test the conventional way
* Can only show extistence of errors
* Can not find errors in specification
* Can not find race conditions
The fault path is shown under.
![Fault tolerance](figures/fault-path.svg)
With fault tolerance the path looks something more like the figure under.
![Fault tolerance](figures/fault-tolarance.svg)
### Error handling
Keep it simple!
The error modes is a part of the module interface.
One way is to handle all errors the same way.
Handle the as if it was the worst error.
Crash and start again.
A different approach is to check that everything is OK.
To test how the systems responds for a unknown error is to insert a failed acceptance test (a not OK signal).
### Redundancy
* If I have $N$ copies of my data, it is possible to handle that one is destroyed.
* Sending $N$ messages, trying $N$ times.
**Static redundancy**
* $N$ active copies. Sending $N$ messages if it is necessary or not.
* Detecting errors is not important.
* Handles cosmic rays easily.
**Dynammic redunancy**
* Relies on detecting the error and recovering
* Resend if timeout and not receiving "ack"
* Go with default if no messages have been received
* The acceptancetest must be good.
### Fault model
#### Example with storage functions.
**Step 1: Failure modes**
Find the failure modes: What could go wrong?
* **Write**: May return "I failed". Does not know why it faield
* **Read**: May return "I failed". Does not know why it failed.
**Step 2: Detect, Simplify, Inject errors**
* Write information on where/what/how the process is doing.
* All errors --> Fail
* Inject errors
**Step 3: Handling with redundancy**
* Have multiple copies of the the information
* Use only the newest
#### Example with communication function
**Step 1: Failure modes**
* Message
* Lost
* Delayed
* Corrupted
* Duplicated
* Wrong recipient
**Step 2: Detection, Merging of errormodes and error injection**
* Adding information to message
* Checksum
* Session ID
* Sequence number
* Adding "ack" on well recieved messages
* All errors will be treaded as "Lost message"
* Injection
* Occasionally throw away some messages
**Step 3: Handling with redundancy**
* Timeout
* Retransmit message
#### Example with processes and caculations
A calculation is an abstract, so how can we talk generally about the failure modes.
**Step 1: Failure modes**
One failure mode
**Step 2: Detect, simplify, inject errors**
All failed acceptance tests will "PANIC" or "STOP".
**Step 3: Handling with redundancy**
There are three solutions:
1. Checkpoint restart
* Do all the work incuding the acceptance test
* Wait with the "side effects"
* Store a checkpoint
* Do the "side effects"
2. Process pairs
* Crash and let an another process take over
3. Presistent processes
## Transactions
A transaction is a design framework for Damage Confinement and Error Recovery.
* An *atomic action*, just without the backward recovery error mode as standard mode
* invincible and instantaneous "calculation" seen from the outside
* A transformation from one consistent state to another'
* A modular computation
### Four features: ACID
* **A**tomicity: Either all side effects happens or none
* **C**oncistency: Leaves the system in a consistent state when finished
* **I**solation: Errors does not spread
* **D**urability: Results are not lost

View File

@@ -1,15 +0,0 @@
---
layout: layouts/list
title: "TTK4145"
description: "Sanntidsprogrammering"
---
## Oppsummering
[Oppsummering](summary/) av faget TTK4145.
## Prosjekt
## Øvinger

View File

@@ -1,34 +0,0 @@
---
layout: layouts/lecture
title: "TTT4280"
description: "Labforelesning 1"
date: "2021-01-18"
math: false
---
## Laboratorium
### System
* Raspberry Pi
* Linux
* A/D omformere
* Python
### Oppgaver
* Systemoppsett
* Klargjøre rPi og instrumenteringskrets
* Akustikk
* Beregne retning til lydkilde
* Radar
* Doppler
* Optikk
## Laboppgave 1
1. Tegne blokkdiagram
2. Studere datablat for ADC
3. Drøfte fordeler med DMA
![Blokk](figures/TTT4280%20-%20Lab%20Blokk.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

View File

@@ -1,57 +0,0 @@
---
title: "TTT4280 - Måleusikkerhet"
description: "2021-01-11"
math: true
---
## Faglig innhold
* Måleusikkerhet
* Støyanalyse
* Sensorer og aktuatorer
* Sensortyper
## Hva er sensorer
Noe som kan lese den fysiske verdenen til noe vi kan prosessere.
Finnes mange forskjellige sensorer. Flere i biler, telefoner, klokker osv.
Tidligere ble det estimert at vi skulle ha ca 50 milliarder sensorer i 2020.
## Måleusikkerhet
Bruk av sensor = Utføre en måling.
...og måleverdier har en usikkerhet.
I visse situasjoner har måleusikkerheten masse å si, i andre har det ikke så mye å si.
Sensitivitet er en måling for å ikke gjøre en Type II feil (alarmen løser **ikke** ut).
Spesifisitet er en måling for å ikke gjøre en Type I feil (**falsk** alarm).
### Grunnmodell for måleprosess
![Grunnmodell](figures/grunnmodell.jpg)
I realiteten er det støy i alle ledd.
Sannsynligheten for at et sensorsystem gir riktig svar påvirkes av (minst) to faktorer:
* Hvor entydig er underliggende sammenhenger?
* Hvor nøyaktig kan vi måle de fysiske størrelsene?
$$ \text{SNR} = \frac{\text{(Effekten for) sann verdi}}{\text{(Effekten for) støy}} $$
### Målefeil
Stokastiske feil (Type A feil) påvirker målingens *presisjon*.
Presisjonen beskriver hvor reproduserbar en måling er.
Systematiske feil (Type B feil) påvirker målingens *sannhet*.
Sannheten er en måling på hvor langt unna den sanne verdien en måling er.
![Målefeil](figures/true-prec.jpg)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -1,8 +0,0 @@
---
layout: layouts/lecture
title: "TTT4280"
description: "Usikkerhet og feilforplantning"
date: "2021-01-18"
math: true
---

View File

@@ -1,12 +0,0 @@
---
layout: layouts/list
title: "TTT4280"
description: "Sensorer og instrumentering"
---
## Forelesninger
[2021-01-11](./lectures/2021-01-11/) - Intro og målesikkerhet
[2021-01-18](./lectures/2021-01-18/) - Usikkerhet og feilforplantning

View File

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 290 KiB

View File

Before

Width:  |  Height:  |  Size: 727 KiB

After

Width:  |  Height:  |  Size: 727 KiB

View File

Before

Width:  |  Height:  |  Size: 412 KiB

After

Width:  |  Height:  |  Size: 412 KiB

View File

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 235 KiB

View File

Before

Width:  |  Height:  |  Size: 3.7 MiB

After

Width:  |  Height:  |  Size: 3.7 MiB

View File

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 222 KiB

View File

Before

Width:  |  Height:  |  Size: 846 KiB

After

Width:  |  Height:  |  Size: 846 KiB

View File

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

View File

Before

Width:  |  Height:  |  Size: 382 KiB

After

Width:  |  Height:  |  Size: 382 KiB

View File

Before

Width:  |  Height:  |  Size: 518 KiB

After

Width:  |  Height:  |  Size: 518 KiB

View File

Before

Width:  |  Height:  |  Size: 604 KiB

After

Width:  |  Height:  |  Size: 604 KiB

View File

@@ -4,15 +4,13 @@ title: "NTNU"
description: "Alt som har med studier på NTNU å gjøre."
---
{% for semester in site.data.ntnu-courses %}
<h2>{{ semester.name }}</h2>
{% assign courses = semester.courses | sort: 'updated' | reverse %}
{% assign courses = site.data.ntnu-courses | sort: 'update' %}
<div class="row row-cols-1 row-cols-md-3">
{% for course in courses %}
<div class="col mb-4">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title no-anchor" data-toc-skip><a href="{{ semester.href }}/{% if course.href %}{{ course.href }}{% else %}{{ course.course }}{% endif %}">{{ course.course | upcase }}</a></h5>
<h5 class="card-title no-anchor" data-toc-skip><a href="{% if course.href %}{{ course.href }}{% else %}{{ course.course }}{% endif %}">{{ course.course | upcase }}</a></h5>
<p class="card-text">{{ course.desc }}</p>
</div>
<div class="card-footer">
@@ -21,5 +19,4 @@ description: "Alt som har med studier på NTNU å gjøre."
</div>
</div>
{% endfor %}
</div>
{% endfor %}
</div>

View File

Before

Width:  |  Height:  |  Size: 257 KiB

After

Width:  |  Height:  |  Size: 257 KiB

View File

Before

Width:  |  Height:  |  Size: 355 KiB

After

Width:  |  Height:  |  Size: 355 KiB

View File

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View File

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 153 KiB

View File

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 183 KiB

View File

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

View File

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 136 KiB

View File

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 126 KiB

View File

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

View File

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 98 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

Before

Width:  |  Height:  |  Size: 253 KiB

After

Width:  |  Height:  |  Size: 253 KiB

View File

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View File

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

View File

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 150 KiB

View File

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

View File

Before

Width:  |  Height:  |  Size: 480 KiB

After

Width:  |  Height:  |  Size: 480 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

View File

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 202 KiB

View File

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View File

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Some files were not shown because too many files have changed in this diff Show More