GitHub.com
tcp/443 tcp/80
Open service 185.199.110.153:443 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:01 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: BC37:3D620:41651F5:4293071:6953C335
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:01 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-sin-wsat1880037-SIN
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097142.899574,VS0,VE1
Vary: Accept-Encoding
X-Fastly-Request-ID: c46e1c1504b007cefd5f84948722dd7b3800c078
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 2606:50c0:8001::153:80 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: HIT
X-GitHub-Request-Id: 2213:1E3944:499FFA7:4BEB2F9:6953C334
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-pao-kpao1770069-PAO
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.765004,VS0,VE1
Vary: Accept-Encoding
X-Fastly-Request-ID: 9582c6ce58e1ad5a32053d1e0ccc5f2a561f4645
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 2606:50c0:8000::153:443 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: HIT
X-GitHub-Request-Id: F8B7:444BC:A1B004:B5753C:6953C334
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-bom-vanm7210062-BOM
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.732098,VS0,VE1
Vary: Accept-Encoding
X-Fastly-Request-ID: 0c1f0ee9d55f6b30cd6f088dcce56d78d20a7579
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 185.199.109.153:80 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: HIT
X-GitHub-Request-Id: CC84:386006:47F44A2:4A3F05D:6953C334
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-sjc1000127-SJC
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.674661,VS0,VE2
Vary: Accept-Encoding
X-Fastly-Request-ID: f4e54b4fa0d4e6b9764b233e90c6115c26e7936a
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 185.199.110.153:80 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: BB39:18E40C:64EBC50:6DC4398:6953C334
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-lga21986-LGA
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.541240,VS0,VE1
Vary: Accept-Encoding
X-Fastly-Request-ID: b2e722a08d145a817a5453cd70d3cd2bb275966f
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 2606:50c0:8003::153:443 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: EDD6:28E859:82B42B8:84A3180:6953C333
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-fra-eddf8230048-FRA
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.600559,VS0,VE4
Vary: Accept-Encoding
X-Fastly-Request-ID: 855025ef21828782f860d1cfd9cb77ec3400e4ff
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 2606:50c0:8000::153:80 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: 3191:335AB4:88C0386:8AAE8C7:6953C333
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-fra-eddf8230052-FRA
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.596951,VS0,VE2
Vary: Accept-Encoding
X-Fastly-Request-ID: 3a2e2e0ee4fe269ab9f54a9a1140b925fecce2f3
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 185.199.111.153:80 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: 3191:335AB4:88C0386:8AAE8C7:6953C333
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-fra-eddf8230175-FRA
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.598256,VS0,VE3
Vary: Accept-Encoding
X-Fastly-Request-ID: 2ac63a299f6d9d1be26f5b1b98dd2eac4702f55c
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 2606:50c0:8001::153:443 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: 1F5B:284718:899854C:8B86934:6953C333
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-vie6359-VIE
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.706547,VS0,VE2
Vary: Accept-Encoding
X-Fastly-Request-ID: d2a170cc7d797b06a4c07b3d4ce339f3634a68ec
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 2606:50c0:8003::153:80 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: 3191:335AB4:88C0386:8AAE8C7:6953C333
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-fra-eddf8230062-FRA
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.602392,VS0,VE2
Vary: Accept-Encoding
X-Fastly-Request-ID: 46b1b204417fd98d3e1e81e8f4a3414a528d73b3
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 185.199.111.153:443 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: EDD6:28E859:82B42B8:84A3180:6953C333
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-fra-eddf8230101-FRA
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.599255,VS0,VE4
Vary: Accept-Encoding
X-Fastly-Request-ID: 4c98c22e7752c3f9c18db54e41837c2d55d319b3
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 185.199.109.153:443 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: 636E:3BA61C:617D247:68DADBE:6953C334
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-yyz4564-YYZ
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097140.497235,VS0,VE2
Vary: Accept-Encoding
X-Fastly-Request-ID: e36c8b04cf02e7293b990b92bbbd40cdc379b7ba
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 185.199.108.153:80 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: BB39:18E40C:64EBC50:6DC4398:6953C334
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-lga21931-LGA
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.558208,VS0,VE2
Vary: Accept-Encoding
X-Fastly-Request-ID: 4805cf66ce7fe53e44f121109a46ef8b1feb95bc
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 2606:50c0:8002::153:443 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
x-origin-cache: HIT
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: HIT
X-GitHub-Request-Id: F8B7:444BC:A1B004:B5753C:6953C334
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-bom-vanm7210046-BOM
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.731543,VS0,VE1
Vary: Accept-Encoding
X-Fastly-Request-ID: e7aaaacf709fadb613995fe6fa29809f64f325f1
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 2606:50c0:8002::153:80 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: 6153:328FD3:A1382C:B4FD0A:6953C334
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-bom-vanm7210061-BOM
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097141.713824,VS0,VE1
Vary: Accept-Encoding
X-Fastly-Request-ID: 25926043c110d3f2300705533c9e6660a52d4f31
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac
Open service 185.199.108.153:443 · tfmm.loop.coop
2025-12-30 12:19
HTTP/1.1 200 OK
Connection: close
Content-Length: 63347
Server: GitHub.com
Content-Type: text/html; charset=utf-8
Last-Modified: Mon, 22 Jun 2015 15:34:46 GMT
Access-Control-Allow-Origin: *
ETag: "55882b16-f773"
expires: Tue, 30 Dec 2025 12:29:00 GMT
Cache-Control: max-age=600
x-proxy-cache: MISS
X-GitHub-Request-Id: AE33:13A6FA:63C851B:6CA4ED4:6953C334
Accept-Ranges: bytes
Date: Tue, 30 Dec 2025 12:19:00 GMT
Via: 1.1 varnish
Age: 0
X-Served-By: cache-lga21951-LGA
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1767097140.479556,VS0,VE1
Vary: Accept-Encoding
X-Fastly-Request-ID: 6df762f8b0a97b1eb0db1ae2887903eebec304eb
Page title: Tfmm
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tfmm</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="generator" content="Apage 0.0.22 http://apage.richplastow.com/">
<style>
@import url(./asset/style/actile.css);
@import url(http://fonts.googleapis.com/css?family=Podkova:400,700);
/* ‘Inspect Element’ here, for Apage’s injected CSS */
</style>
<script>
//// When the DOM is ready, set up Apage and inject the plugins.
window.addEventListener('load', function () { (function (d) { 'use strict';
//// Declare iterator, length and HTML-reference variables.
var i, l, $ref
//// Initialize three arrays which are available to all Apage plugins.
,arts = []
,resolvers = []
,updaters = []
//// Like jQuery, but native.
,$ = d.querySelector.bind(d)
,$$ = d.querySelectorAll.bind(d)
//// Get a reference to all `<article class="apage">` elements.
,$arts = $$('article.apage')
//// Convert JavaScript’s native `arguments` object to an array.
,getArgs = function (args, offset) {
return Array.prototype.slice.call(args, offset || 0);
}
//// `unattribute($ref,'data-apage-','opath'...)` removes data attributes.
,unattribute = function ($ref, prefix) {
for ( var i=0, suffs=getArgs(arguments,2), l=suffs.length; i<l; i++ ) {
$ref.removeAttribute(prefix + suffs[i]);
}
}
//// Runs each resolver in order. These are added by the plugins, below.
//// Resolvers are used to map a query to an article.
,resolve = function (query) {
for (var i=0, l=resolvers.length, backstop, result={}; i<l; i++) {
result = resolvers[i](query);
if (result.art) { break; } // `query` does resolve to an article
backstop = result.backstop || backstop; // may return a backstop
}
return result.art ? result.art : backstop; //@todo test logic of 'last valid backstop return' with several plugins at once
}
//// Runs each updater in order. These are added by the plugins, below.
//// Updaters change the current DOM state, eg to show a single article.
,update = function (query) {
for (var i=0, l=updaters.length, current=resolve(query); i<l; i++) {
updaters[i](current);
}
}
//// Tidies the URL hash and runs `update()` when the URL hash changes.
,onHashchange = function (event) {
update( window.location.hash.substr(1).replace(/\//g,'_') );
if (event) { event.preventDefault(); }
}
;
//// Populate the `arts` array using data from Apage `<ARTICLE>` elements.
//// Then, remove all 'data-apage-*' attributes except 'data-apage-dname'.
for (i=0, l=$arts.length; i<l; i++) {
$ref = $arts[i];
arts.push({
id: $ref.getAttribute('id')
,opath: $ref.getAttribute('data-apage-opath')
,dname: $ref.getAttribute('data-apage-dname')
,order: $ref.getAttribute('data-apage-order')
,front: JSON.parse( $ref.getAttribute('data-apage-front') )
,title: $ref.getAttribute('data-apage-title')
,$ref: $ref
});
unattribute($ref,'data-apage-','opath','order','front','title');
}
//// Begin injecting plugins.
// Generated by CoffeeScript 1.9.2
/*! Apage 0.0.22 //// MIT Licence //// http://apage.richplastow.com/
* plugin/cross-browser.litcoffee
*/
(function() {
$('style').innerHTML += "\n/* injected by Apage’s CrossBrowser plugin, and adapted from: */\n/* normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/* Document */\nhtml { font-family:sans-serif; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100% }\nbody { margin:0 }\n\n/* HTML5 */\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,\nsection,summary { display:block }\naudio,canvas,progress,video { display:inline-block; vertical-align:baseline }\naudio:not([controls]) { display:none; height:0 }\n[hidden],template { display:none }\n\n/* Links */\na { background-color:transparent }\na:active,a:hover { outline:0 }\n\n/* Text */\nabbr[title] { border-bottom:1px dotted }\nb, strong { font-weight:bold }\ndfn { font-style:italic }\nh1 { font-size:2em; margin:0.67em 0 }\nmark { bac