Conflicts:
	inc/config.php
	inc/display.php
	inc/functions.php
This commit is contained in:
czaks 2013-08-16 10:07:24 -04:00
commit 146243c473
245 changed files with 112 additions and 159 deletions

View File

@ -10,9 +10,8 @@ It contains many changes from original Tinyboard, mainly in frontend area.
About
------------
Tinyboard is a light-weight, fast, highly configurable and user-friendly
imageboard software package released under a non-restrictive open-source
license. It is written in PHP and has few dependencies.
Tinyboard is a free light-weight, fast, highly configurable and user-friendly
imageboard software package. It is written in PHP and has few dependencies.
Requirements
------------

View File

@ -391,6 +391,11 @@
// When true, users are instead presented a selectbox for email. Contains, blank, noko and sage.
$config['field_email_selectbox'] = false;
// Attach country flags to posts. Requires the PHP "geoip" extension to be installed:
// http://www.php.net/manual/en/intro.geoip.php. In the future, maybe I will find and include a proper
// pure-PHP geolocation library.
$config['country_flags'] = false;
// Require users to see the ban page at least once for a ban even if it has since expired.
$config['require_ban_view'] = true;
@ -761,6 +766,17 @@
// a link to an email address or IRC chat room to appeal the ban.
$config['ban_page_extra'] = '';
// Display flags (when available). This config option has no effect unless poster flags are enabled (see
// $config['country_flags']). Disable this if you want all previously-assigned flags to be hidden.
$config['display_flags'] = true;
// Location of post flags/icons (where "%s" is the flag name). Defaults to static/flags/%s.png.
// $config['uri_flags'] = 'http://static.example.org/flags/%s.png';
// Width and height (and more?) of post flags. Can be overridden with the Tinyboard post modifier:
// <tinyboard flag style>.
$config['flag_style'] = 'width:16px;height:11px;';
/*
* ====================
* Javascript
@ -970,7 +986,7 @@
// $config['url_favicon'] = '/favicon.gif';
// EXPERIMENTAL: Try not to build pages when we shouldn't have to.
$config['try_smarter'] = false;
$config['try_smarter'] = true;
/*
* ====================

View File

@ -271,36 +271,25 @@ function embed_html($link) {
}
class Post {
public function __construct($id, $thread, $subject, $email, $name, $trip, $capcode, $body, $time, $thumb, $thumbx, $thumby, $file, $filex, $filey, $filesize, $filename, $ip, $embed, $root=null, $mod=false) {
public function __construct($post, $root=null, $mod=false) {
global $config;
if (!isset($root))
$root = &$config['root'];
$this->id = $id;
$this->thread = $thread;
$this->subject = utf8tohtml($subject);
$this->email = $email;
$this->name = utf8tohtml($name);
$this->trip = $trip;
$this->capcode = $capcode;
$this->body = $body;
$this->time = $time;
$this->thumb = $thumb;
$this->thumbx = $thumbx;
$this->thumby = $thumby;
$this->file = $file;
$this->filex = $filex;
$this->filey = $filey;
$this->filesize = $filesize;
$this->filename = $filename;
$this->ip = $ip;
$this->embed = $embed;
$this->root = $root;
foreach ($post as $key => $value) {
$this->{$key} = $value;
}
$this->subject = utf8tohtml($this->subject);
$this->name = utf8tohtml($this->name);
$this->mod = $mod;
$this->root = $root;
if ($this->embed)
$this->embed = embed_html($this->embed);
$this->modifiers = extract_modifiers($this->body_nomarkup);
if ($this->mod)
// Fix internal links
// Very complicated regex
@ -373,42 +362,30 @@ class Post {
};
class Thread {
public function __construct($id, $subject, $email, $name, $trip, $capcode, $body, $time, $thumb, $thumbx, $thumby, $file, $filex, $filey, $filesize, $filename, $ip, $sticky, $locked, $bumplocked, $embed, $root=null, $mod=false, $hr=true) {
public function __construct($post, $root = null, $mod = false, $hr = true) {
global $config;
if (!isset($root))
$root = &$config['root'];
$this->id = $id;
$this->subject = utf8tohtml($subject);
$this->email = $email;
$this->name = utf8tohtml($name);
$this->trip = $trip;
$this->capcode = $capcode;
$this->body = $body;
$this->time = $time;
$this->thumb = $thumb;
$this->thumbx = $thumbx;
$this->thumby = $thumby;
$this->file = $file;
$this->filex = $filex;
$this->filey = $filey;
$this->filesize = $filesize;
$this->filename = $filename;
foreach ($post as $key => $value) {
$this->{$key} = $value;
}
$this->subject = utf8tohtml($this->subject);
$this->name = utf8tohtml($this->name);
$this->mod = $mod;
$this->root = $root;
$this->hr = $hr;
$this->posts = array();
$this->omitted = 0;
$this->omitted_images = 0;
$this->posts = array();
$this->ip = $ip;
$this->sticky = $sticky;
$this->locked = $locked;
$this->bumplocked = $bumplocked;
$this->embed = $embed;
$this->root = $root;
$this->mod = $mod;
$this->hr = $hr;
if ($this->embed)
$this->embed = embed_html($this->embed);
$this->modifiers = extract_modifiers($this->body_nomarkup);
if ($this->mod)
// Fix internal links
// Very complicated regex
@ -471,7 +448,7 @@ class Thread {
$built .= ' <a title="'._('Make thread sticky').'" href="?/' . secure_link($board['dir'] . 'sticky/' . $this->id) . '">' . $config['mod']['link_sticky'] . '</a>';
if (hasPermission($config['mod']['bumplock'], $board['uri'], $this->mod))
if ($this->bumplocked)
if ($this->sage)
$built .= ' <a title="'._('Allow thread to be bumped').'" href="?/' . secure_link($board['dir'] . 'bumpunlock/' . $this->id) . '">' . $config['mod']['link_bumpunlock'] . '</a>';
else
$built .= ' <a title="'._('Prevent thread from being bumped').'" href="?/' . secure_link($board['dir'] . 'bumplock/' . $this->id) . '">' . $config['mod']['link_bumplock'] . '</a>';
@ -496,10 +473,6 @@ class Thread {
return $built;
}
public function ratio() {
return fraction($this->filex, $this->filey, ':');
}
public function build($index=false, $isnoko50=false) {
global $board, $config, $debug;

View File

@ -153,6 +153,8 @@ function loadConfig() {
$config['url_javascript'] = $config['root'] . $config['file_script'];
if (!isset($config['additional_javascript_url']))
$config['additional_javascript_url'] = $config['root'];
if (!isset($config['uri_flags']))
$config['uri_flags'] = $config['root'] . 'static/flags/%s.png';
if ($config['root_file']) {
chdir($config['root_file']);
@ -1052,11 +1054,7 @@ function index($page, $mod=false) {
$threads = array();
while ($th = $query->fetch(PDO::FETCH_ASSOC)) {
$thread = new Thread(
$th['id'], $th['subject'], $th['email'], $th['name'], $th['trip'], $th['capcode'], $th['body'], $th['time'], $th['thumb'],
$th['thumbwidth'], $th['thumbheight'], $th['file'], $th['filewidth'], $th['fileheight'], $th['filesize'], $th['filename'], $th['ip'],
$th['sticky'], $th['locked'], $th['sage'], $th['embed'], $mod ? '?/' : $config['root'], $mod
);
$thread = new Thread($th, $mod ? '?/' : $config['root'], $mod);
if ($config['cache']['enabled'] && $cached = cache::get("thread_index_{$board['uri']}_{$th['id']}")) {
$replies = $cached['replies'];
@ -1088,11 +1086,7 @@ function index($page, $mod=false) {
if ($po['file'])
$num_images++;
$thread->add(new Post(
$po['id'], $th['id'], $po['subject'], $po['email'], $po['name'], $po['trip'], $po['capcode'], $po['body'], $po['time'],
$po['thumb'], $po['thumbwidth'], $po['thumbheight'], $po['file'], $po['filewidth'], $po['fileheight'], $po['filesize'],
$po['filename'], $po['ip'], $po['embed'], $mod ? '?/' : $config['root'], $mod)
);
$thread->add(new Post($po, $mod ? '?/' : $config['root'], $mod));
}
if ($omitted) {
@ -1496,55 +1490,33 @@ function unicodify($body) {
return $body;
}
function extract_modifiers($body) {
$modifiers = array();
if (preg_match_all('@<tinyboard ([\w\s]+)>(.+?)</tinyboard>@us', $body, $matches, PREG_SET_ORDER)) {
foreach ($matches as $match) {
if (preg_match('/^escape /', $match[1]))
continue;
$modifiers[$match[1]] = html_entity_decode($match[2]);
}
}
return $modifiers;
}
function markup(&$body, $track_cites = false) {
global $board, $config, $markup_urls;
$modifiers = extract_modifiers($body);
$body = preg_replace('@<tinyboard ([\w\s]+)>(.+?)</tinyboard>@us', '', $body);
if (isset($modifiers['raw html']) && $modifiers['raw html'] == '1')
return $body;
$body = str_replace("\r", '', $body);
$body = utf8tohtml($body);
if (preg_match_all('@&lt;tinyboard ([\w\s]+)&gt;(.+?)&lt;/tinyboard&gt;@us', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) {
$skip_chars = 0;
$body_tmp = $body;
$end_markup = false;
foreach ($modifiers as $modifier) {
// preg_match_all is not multibyte-safe
foreach ($modifier as &$match) {
$match[1] = mb_strlen(substr($body_tmp, 0, $match[1]));
}
$modifier['type'] = $modifier[1][0];
$modifier['content'] = $modifier[2][0];
if ($modifier['type'] == 'ban message') {
// Public ban message
$replacement = sprintf($config['mod']['ban_message'], html_entity_decode($modifier['content']));
if ($end_markup) {
$body .= $replacement;
}
} elseif ($modifier['type'] == 'raw html') {
$body = html_entity_decode($modifier['content']);
$replacement = '';
$end_markup = true;
} elseif (preg_match('/^escape /', $modifier['type'])) {
// Escaped (not a real modifier)
$replacement = '&lt;tinyboard ' . substr($modifier['type'], strlen('escape ')) . '&gt;' . $modifier['content'] . '&lt;/tinyboard&gt;';
} else {
// Unknown
$replacement = '';
}
if (!$end_markup) {
$body = mb_substr_replace($body, $replacement, $modifier[0][1] + $skip_chars, mb_strlen($modifier[0][0]));
$skip_chars += mb_strlen($replacement) - mb_strlen($modifier[0][0]);
}
}
if ($end_markup) {
return array();
}
}
if (mysql_version() < 50503)
$body = mb_encode_numericentity($body, array(0x010000, 0xffffff, 0, 0xffffff), 'UTF-8');
@ -1759,17 +1731,9 @@ function buildThread($id, $return = false, $mod = false) {
while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
if (!isset($thread)) {
$thread = new Thread(
$post['id'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'], $post['body'], $post['time'],
$post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'], $post['fileheight'], $post['filesize'],
$post['filename'], $post['ip'], $post['sticky'], $post['locked'], $post['sage'], $post['embed'], $mod ? '?/' : $config['root'], $mod
);
$thread = new Thread($post, $mod ? '?/' : $config['root'], $mod);
} else {
$thread->add(new Post(
$post['id'], $thread->id, $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'], $post['body'],
$post['time'], $post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'], $post['fileheight'],
$post['filesize'], $post['filename'], $post['ip'], $post['embed'], $mod ? '?/' : $config['root'], $mod)
);
$thread->add(new Post($post, $mod ? '?/' : $config['root'], $mod));
}
}

View File

@ -790,19 +790,9 @@ function mod_page_ip($ip) {
while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
if (!$post['thread']) {
// TODO: There is no reason why this should be such a fucking mess.
$po = new Thread(
$post['id'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'], $post['body'],
$post['time'], $post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'],
$post['fileheight'], $post['filesize'], $post['filename'], $post['ip'], $post['sticky'], $post['locked'],
$post['sage'], $post['embed'], '?/', $mod, false
);
$po = new Thread($post, '?/', $mod, false);
} else {
$po = new Post(
$post['id'], $post['thread'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'],
$post['body'], $post['time'], $post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'],
$post['fileheight'], $post['filesize'], $post['filename'], $post['ip'], $post['embed'], '?/', $mod
);
$po = new Post($post, '?/', $mod);
}
if (!isset($args['posts'][$board['uri']]))
@ -1398,7 +1388,7 @@ function mod_edit_post($board, $edit_raw_html, $postID) {
$query->bindValue(':subject', $_POST['subject']);
$query->bindValue(':body', $_POST['body']);
if ($edit_raw_html) {
$body_nomarkup = '<tinyboard raw html>' . $_POST['body'] . '</tinyboard>';
$body_nomarkup = $_POST['body'] . '<tinyboard raw html>1</tinyboard>';
$query->bindValue(':body_nomarkup', $body_nomarkup);
}
$query->execute() or error(db_error($query));
@ -2012,19 +2002,9 @@ function mod_reports() {
if (!$post['thread']) {
// Still need to fix this:
$po = new Thread(
$post['id'], $post['subject'], $post['email'], $post['name'], $post['trip'],
$post['capcode'], $post['body'], $post['time'], $post['thumb'],
$post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'],
$post['fileheight'], $post['filesize'], $post['filename'], $post['ip'], $post['sticky'],
$post['locked'], $post['sage'], $post['embed'], '?/', $mod, false
);
$po = new Thread($post, '?/', $mod, false);
} else {
$po = new Post(
$post['id'], $post['thread'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'],
$post['body'], $post['time'], $post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'],
$post['fileheight'], $post['filesize'], $post['filename'], $post['ip'], $post['embed'], '?/', $mod
);
$po = new Post($post, '?/', $mod);
}
// a little messy and inefficient

View File

@ -16,10 +16,7 @@ onready(function(){
var link = this.getElementsByTagName('a');
for (var i = 0; i < link.length; i++) {
if (typeof link[i] == "object" && link[i].childNodes && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].className != 'file') {
if (window.jQuery && !$(link).prev().hasClass('fileinfo')) {
continue;
}
if (typeof link[i] == "object" && link[i].childNodes && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].childNodes[0].className.match(/post-image/)) {
link[i].childNodes[0].style.maxWidth = '95%';
link[i].onclick = function(e) {
if (this.childNodes[0].className == 'hidden')

View File

@ -424,7 +424,16 @@ if (isset($_POST['delete'])) {
$post['body'] = escape_markup_modifiers($post['body']);
if ($mod && isset($post['raw']) && $post['raw']) {
$post['body'] = '<tinyboard raw html>' . $post['body'] . '</tinyboard>';
$post['body'] .= '<tinyboard raw html>1</tinyboard>';
}
if ($config['country_flags']) {
if (!geoip_db_avail(GEOIP_COUNTRY_EDITION)) {
error('GeoIP not available: ' . geoip_db_filename(GEOIP_COUNTRY_EDITION));
}
if ($country_code = @geoip_country_code_by_name($_SERVER['REMOTE_ADDR'])) {
$post['body'] .= '<tinyboard flag>' . strtolower($country_code) . '</tinyboard>';
}
}
if (mysql_version() >= 50503) {

BIN
static/flags/ad.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

BIN
static/flags/ae.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

BIN
static/flags/af.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

BIN
static/flags/ag.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

BIN
static/flags/ai.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

BIN
static/flags/al.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

BIN
static/flags/am.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

BIN
static/flags/an.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

BIN
static/flags/ao.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

BIN
static/flags/ar.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

BIN
static/flags/as.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

BIN
static/flags/at.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

BIN
static/flags/au.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
static/flags/aw.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

BIN
static/flags/ax.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

BIN
static/flags/az.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
static/flags/ba.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

BIN
static/flags/bb.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

BIN
static/flags/bd.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

BIN
static/flags/be.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

BIN
static/flags/bf.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

BIN
static/flags/bg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

BIN
static/flags/bh.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

BIN
static/flags/bi.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

BIN
static/flags/bj.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

BIN
static/flags/bm.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

BIN
static/flags/bn.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

BIN
static/flags/bo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

BIN
static/flags/br.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

BIN
static/flags/bs.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

BIN
static/flags/bt.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

BIN
static/flags/bv.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

BIN
static/flags/bw.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

BIN
static/flags/by.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

BIN
static/flags/bz.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

BIN
static/flags/ca.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

BIN
static/flags/cc.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

BIN
static/flags/cd.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

BIN
static/flags/cf.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

BIN
static/flags/cg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

BIN
static/flags/ch.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

BIN
static/flags/ci.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

BIN
static/flags/ck.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

BIN
static/flags/cl.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

BIN
static/flags/cm.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

BIN
static/flags/cn.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

BIN
static/flags/co.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

BIN
static/flags/cr.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

BIN
static/flags/cs.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

BIN
static/flags/cu.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

BIN
static/flags/cv.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

BIN
static/flags/cx.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

BIN
static/flags/cy.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

BIN
static/flags/cz.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

BIN
static/flags/de.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

BIN
static/flags/dj.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

BIN
static/flags/dk.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

BIN
static/flags/dm.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

BIN
static/flags/do.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

BIN
static/flags/dz.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

BIN
static/flags/ec.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

BIN
static/flags/ee.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

BIN
static/flags/eg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

BIN
static/flags/eh.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

BIN
static/flags/er.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
static/flags/es.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

BIN
static/flags/et.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

BIN
static/flags/fi.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

BIN
static/flags/fj.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

BIN
static/flags/fk.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

BIN
static/flags/fm.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

BIN
static/flags/fo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

BIN
static/flags/fr.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

BIN
static/flags/ga.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

BIN
static/flags/gb.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 B

BIN
static/flags/gd.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

BIN
static/flags/ge.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

BIN
static/flags/gh.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

BIN
static/flags/gi.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

BIN
static/flags/gl.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

BIN
static/flags/gm.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

BIN
static/flags/gn.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

BIN
static/flags/gp.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

BIN
static/flags/gq.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

BIN
static/flags/gr.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

BIN
static/flags/gs.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

BIN
static/flags/gt.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

BIN
static/flags/gu.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

BIN
static/flags/gw.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

BIN
static/flags/gy.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

BIN
static/flags/hk.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

BIN
static/flags/hn.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

BIN
static/flags/hr.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

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