From 124e2894ea74b3473bcc46bd5cc68f9ab5d37769 Mon Sep 17 00:00:00 2001 From: pfych Date: Sat, 18 Oct 2025 09:35:51 +1100 Subject: [PATCH] Re-add images page --- REWRITE_CHECKLIST.md | 2 +- .../site/assets/scripts/old/gallery-images.ts | 36 -- packages/site/assets/scripts/old/script.ts | 2 - .../site/assets/scripts/runtime/images.ts | 40 ++ packages/site/assets/scripts/script.ts | 3 + packages/site/posts/images.md | 415 ++++++++++++++++++ 6 files changed, 459 insertions(+), 39 deletions(-) delete mode 100644 packages/site/assets/scripts/old/gallery-images.ts create mode 100644 packages/site/assets/scripts/runtime/images.ts create mode 100644 packages/site/posts/images.md diff --git a/REWRITE_CHECKLIST.md b/REWRITE_CHECKLIST.md index f2b3e0e..ede2847 100644 --- a/REWRITE_CHECKLIST.md +++ b/REWRITE_CHECKLIST.md @@ -13,7 +13,7 @@ Complete list of components needed for 1:1 functionality with the original site. - [ ] Sandbox - [ ] Recreate build-time scripts - [X] RSS Page - - [ ] Auto images page + - [X] Auto images page - [ ] Index Page - [ ] Created/Updated/Published markers - [ ] Robots.txt generation diff --git a/packages/site/assets/scripts/old/gallery-images.ts b/packages/site/assets/scripts/old/gallery-images.ts deleted file mode 100644 index 864dfe8..0000000 --- a/packages/site/assets/scripts/old/gallery-images.ts +++ /dev/null @@ -1,36 +0,0 @@ -export const handleGalleryImages = () => { - const images = document.querySelectorAll('.galleryImage'); - - const loadImage = (image: HTMLImageElement) => { - image.src = image.getAttribute('finalSrc') || ''; - }; - - const handleIntersection = (entries: IntersectionObserverEntry[]) => { - entries.forEach((entry) => { - if (entry.intersectionRatio > 0) { - loadImage(entry.target as HTMLImageElement); - } - }); - }; - - const observer = new IntersectionObserver(handleIntersection, { - root: null, - rootMargin: '0px', - threshold: 0.05, - }); - - images.forEach((img) => { - observer.observe(img); - - img.addEventListener('click', (event) => { - const image = event.target as HTMLImageElement; - - image.onerror = () => { - console.warn('Could not get LG version of image!'); - image.src = image.getAttribute('finalSrc') || ''; - }; - - image.src = image.getAttribute('hdSrc') || ''; - }); - }); -}; diff --git a/packages/site/assets/scripts/old/script.ts b/packages/site/assets/scripts/old/script.ts index 1b00cba..24aa6fc 100644 --- a/packages/site/assets/scripts/old/script.ts +++ b/packages/site/assets/scripts/old/script.ts @@ -1,5 +1,4 @@ import { setColourMode } from './colour-mode'; -import { handleGalleryImages } from './gallery-images'; import { noscriptHandler } from './no-script'; import { setHeader } from './setup-header'; import { svgDiagrams } from './setup-mermaid-diagrams'; @@ -20,7 +19,6 @@ setColourMode(); document.addEventListener('DOMContentLoaded', async function () { noscriptHandler(); - handleGalleryImages(); wrapTables(); setHeader(); sortableTables(); diff --git a/packages/site/assets/scripts/runtime/images.ts b/packages/site/assets/scripts/runtime/images.ts new file mode 100644 index 0000000..20ad812 --- /dev/null +++ b/packages/site/assets/scripts/runtime/images.ts @@ -0,0 +1,40 @@ +export const handleImageUpscale = () => {}; + +const ASSET_DOMAIN = 'https://assets.pfy.ch'; + +const loadImage = (image: HTMLImageElement, size: 'md' | 'lg') => { + image.src = image.src.replace(/(sm|md)/, size); +}; + +const handleIntersection = (entries: IntersectionObserverEntry[]) => { + entries.forEach((entry) => { + if (entry.intersectionRatio > 0) { + loadImage(entry.target as HTMLImageElement, 'md'); + } + }); +}; + +const observer = new IntersectionObserver(handleIntersection, { + root: null, + rootMargin: '0px', + threshold: 0.05, +}); + +document.addEventListener('DOMContentLoaded', () => { + const allImages = document.getElementsByTagName('img'); + const imagesFromAssets = [...allImages].filter((img) => + img.src.includes(ASSET_DOMAIN), + ); + + for (const image of imagesFromAssets) { + observer.observe(image); + + image.setAttribute('originalSrc', image.src); + image.onerror = () => { + console.warn('Could not get requested version of image!'); + image.src = image.getAttribute('originalSrc') || ''; + }; + + image.addEventListener('click', () => loadImage(image, 'lg')); + } +}); diff --git a/packages/site/assets/scripts/script.ts b/packages/site/assets/scripts/script.ts index 5e45e55..e4eb782 100644 --- a/packages/site/assets/scripts/script.ts +++ b/packages/site/assets/scripts/script.ts @@ -1,5 +1,8 @@ import { NowListening } from './components/nowListening'; import { CatCount } from './components/catCount'; +import { handleImageUpscale } from './runtime/images'; customElements.define('now-listening', NowListening); customElements.define('cat-count', CatCount); + +handleImageUpscale(); diff --git a/packages/site/posts/images.md b/packages/site/posts/images.md new file mode 100644 index 0000000..ad3b5b7 --- /dev/null +++ b/packages/site/posts/images.md @@ -0,0 +1,415 @@ +--- +title: Photography +summary: All the photos I've ever published +--- + +This page contains every photo I have shared on this site, whether it be in a blog post, article or header of a random +page. + +The following page contains LOTS of 720x480 images, totaling over 60mb! The images will +only load when they are scrolled into view. This current view without scrolling is about 4mb. If you'd like +to view the High-res images (still slightly compressed), you can click on an image to make it load the "HD" version. + +I try to keep my site as small as possible but a page like this is inherently difficult to keep at a small size. If you +have any ideas, please reach out! + +
+ Due to the way I compress and display images you're unable to view the images in their "full" resolution. If you copy the image link and replace sm with md you can download the images individually +
+ +![](https://assets.pfy.ch/sm/A001660-R1-06-7.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-31-6A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-32-5A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-33-4A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-34-3A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-36-1A.jpg) +![](https://assets.pfy.ch/sm/DSCF0588.jpg) +![](https://assets.pfy.ch/sm/A001660-R1-04-5.jpg) +![](https://assets.pfy.ch/sm/A001660-R1-05-6.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-00-36.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-35-2A.jpg) +![](https://assets.pfy.ch/sm/DSCF0594.jpg) +![](https://assets.pfy.ch/sm/DSCF0268.jpg) +![](https://assets.pfy.ch/sm/DSCF0271.jpg) +![](https://assets.pfy.ch/sm/DSCF0280.jpg) +![](https://assets.pfy.ch/sm/DSCF0136.jpg) +![](https://assets.pfy.ch/sm/DSCF0168.jpg) +![](https://assets.pfy.ch/sm/DSCF0180.jpg) +![](https://assets.pfy.ch/sm/DSCF0133.jpg) +![](https://assets.pfy.ch/sm/DSCF0172.jpg) +![](https://assets.pfy.ch/sm/DSCF0178.jpg) +![](https://assets.pfy.ch/sm/DSCF0125.jpg) +![](https://assets.pfy.ch/sm/DSCF0161.jpg) +![](https://assets.pfy.ch/sm/DSCF0163.jpg) +![](https://assets.pfy.ch/sm/DSCF0129.jpg) +![](https://assets.pfy.ch/sm/DSCF0155.jpg) +![](https://assets.pfy.ch/sm/DSCF0158.jpg) +![](https://assets.pfy.ch/sm/DSCF0075.jpg) +![](https://assets.pfy.ch/sm/DSCF0080.jpg) +![](https://assets.pfy.ch/sm/DSCF0081.jpg) +![](https://assets.pfy.ch/sm/DSCF0085.jpg) +![](https://assets.pfy.ch/sm/DSCF0088.jpg) +![](https://assets.pfy.ch/sm/DSCF0090.jpg) +![](https://assets.pfy.ch/sm/DSCF0003.jpg) +![](https://assets.pfy.ch/sm/DSCF0007.jpg) +![](https://assets.pfy.ch/sm/DSCF0010.jpg) +![](https://assets.pfy.ch/sm/DSCF0011.jpg) +![](https://assets.pfy.ch/sm/DSCF0013.jpg) +![](https://assets.pfy.ch/sm/DSCF0008.jpg) +![](https://assets.pfy.ch/sm/DSCF0012.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-12-12A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-01-23A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-04-20A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-06-18A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-11-13A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-19-5A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-00-24A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-13-11A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-23-1A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-03-21A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-07-17A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-08-16A.jpg) +![](https://assets.pfy.ch/sm/A005698-R1-14-10A.jpg) +![](https://assets.pfy.ch/sm/000005590012.jpg) +![](https://assets.pfy.ch/sm/000005600018.jpg) +![](https://assets.pfy.ch/sm/000005600024.jpg) +![](https://assets.pfy.ch/sm/000005600025.jpg) +![](https://assets.pfy.ch/sm/000005610021.jpg) +![](https://assets.pfy.ch/sm/000005610022.jpg) +![](https://assets.pfy.ch/sm/000005600023.jpg) +![](https://assets.pfy.ch/sm/000005610026.jpg) +![](https://assets.pfy.ch/sm/000005600022.jpg) +![](https://assets.pfy.ch/sm/000005610025.jpg) +![](https://assets.pfy.ch/sm/000005600020.jpg) +![](https://assets.pfy.ch/sm/000005610019.jpg) +![](https://assets.pfy.ch/sm/000005600021.jpg) +![](https://assets.pfy.ch/sm/000005610018.jpg) +![](https://assets.pfy.ch/sm/000005610024.jpg) +![](https://assets.pfy.ch/sm/000005620020.jpg) +![](https://assets.pfy.ch/sm/000005620023.jpg) +![](https://assets.pfy.ch/sm/000005590029.jpg) +![](https://assets.pfy.ch/sm/000005620021.jpg) +![](https://assets.pfy.ch/sm/000005620009.jpg) +![](https://assets.pfy.ch/sm/000005620019.jpg) +![](https://assets.pfy.ch/sm/000005590010.jpg) +![](https://assets.pfy.ch/sm/000005590011.jpg) +![](https://assets.pfy.ch/sm/000005590007.jpg) +![](https://assets.pfy.ch/sm/000005620018.jpg) +![](https://assets.pfy.ch/sm/000005590024.jpg) +![](https://assets.pfy.ch/sm/000005620005.jpg) +![](https://assets.pfy.ch/sm/000005620011.jpg) +![](https://assets.pfy.ch/sm/000005620013.jpg) +![](https://assets.pfy.ch/sm/000005600010.jpg) +![](https://assets.pfy.ch/sm/000005610015.jpg) +![](https://assets.pfy.ch/sm/000005620012.jpg) +![](https://assets.pfy.ch/sm/000005600004.jpg) +![](https://assets.pfy.ch/sm/000005600005.jpg) +![](https://assets.pfy.ch/sm/000005600011.jpg) +![](https://assets.pfy.ch/sm/000005600012.jpg) +![](https://assets.pfy.ch/sm/000005610014.jpg) +![](https://assets.pfy.ch/sm/000005600002.jpg) +![](https://assets.pfy.ch/sm/000005610017.jpg) +![](https://assets.pfy.ch/sm/000005600003.jpg) +![](https://assets.pfy.ch/sm/000005600016.jpg) +![](https://assets.pfy.ch/sm/000005600017.jpg) +![](https://assets.pfy.ch/sm/000005610010.jpg) +![](https://assets.pfy.ch/sm/000005610012.jpg) +![](https://assets.pfy.ch/sm/000005600015.jpg) +![](https://assets.pfy.ch/sm/000005600001.jpg) +![](https://assets.pfy.ch/sm/000005600014.jpg) +![](https://assets.pfy.ch/sm/000005610011.jpg) +![](https://assets.pfy.ch/sm/000005610020.jpg) +![](https://assets.pfy.ch/sm/000005600019.jpg) +![](https://assets.pfy.ch/sm/000005620016.jpg) +![](https://assets.pfy.ch/sm/000005590036.jpg) +![](https://assets.pfy.ch/sm/000005620002.jpg) +![](https://assets.pfy.ch/sm/000005590020.jpg) +![](https://assets.pfy.ch/sm/000005620001.jpg) +![](https://assets.pfy.ch/sm/000005620015.jpg) +![](https://assets.pfy.ch/sm/000005620010.jpg) +![](https://assets.pfy.ch/sm/000005620014.jpg) +![](https://assets.pfy.ch/sm/000005590025.jpg) +![](https://assets.pfy.ch/sm/000042380013.jpg) +![](https://assets.pfy.ch/sm/000042380025.jpg) +![](https://assets.pfy.ch/sm/000042380030.jpg) +![](https://assets.pfy.ch/sm/000042370027.jpg) +![](https://assets.pfy.ch/sm/000042380007.jpg) +![](https://assets.pfy.ch/sm/000042380009.jpg) +![](https://assets.pfy.ch/sm/000042380010.jpg) +![](https://assets.pfy.ch/sm/000042370011.jpg) +![](https://assets.pfy.ch/sm/000042370020.jpg) +![](https://assets.pfy.ch/sm/000042370025.jpg) +![](https://assets.pfy.ch/sm/000042380016.jpg) +![](https://assets.pfy.ch/sm/000042380006.jpg) +![](https://assets.pfy.ch/sm/000042380011.jpg) +![](https://assets.pfy.ch/sm/000042380028.jpg) +![](https://assets.pfy.ch/sm/000042370036.jpg) +![](https://assets.pfy.ch/sm/000042380012.jpg) +![](https://assets.pfy.ch/sm/000042380019.jpg) +![](https://assets.pfy.ch/sm/000042380021.jpg) +![](https://assets.pfy.ch/sm/000042380022.jpg) +![](https://assets.pfy.ch/sm/000042380017.jpg) +![](https://assets.pfy.ch/sm/000042380018.jpg) +![](https://assets.pfy.ch/sm/000042380020.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-03-4A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-09-10A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-10-11A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-12-13A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-07-8A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-11-12A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-20-21A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-21-22A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-14-15A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-18-19A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-23-24A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-30-31A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-13-14A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-24-25A.jpg) +![](https://assets.pfy.ch/sm/CRO0579-R1-31-32A.jpg) +![](https://assets.pfy.ch/sm/000030050008.jpg) +![](https://assets.pfy.ch/sm/000030050026.jpg) +![](https://assets.pfy.ch/sm/000030050027.jpg) +![](https://assets.pfy.ch/sm/000030050009.jpg) +![](https://assets.pfy.ch/sm/000030050013.jpg) +![](https://assets.pfy.ch/sm/000030050020.jpg) +![](https://assets.pfy.ch/sm/000030050021.jpg) +![](https://assets.pfy.ch/sm/000030050005.jpg) +![](https://assets.pfy.ch/sm/000030050014.jpg) +![](https://assets.pfy.ch/sm/000030050015.jpg) +![](https://assets.pfy.ch/sm/000030050028.jpg) +![](https://assets.pfy.ch/sm/000030050017.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-00-21.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-03-18.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-10-11.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-04-17.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-06-15.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-09-12.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-11-10.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-01-20.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-07-14.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-12-9.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-13-6.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-08-13.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-02-19.jpg) +![](https://assets.pfy.ch/sm/CRO0543-R1-05-16.jpg) +![](https://assets.pfy.ch/sm/CRO0022-R1-04-5.jpg) +![](https://assets.pfy.ch/sm/CRO0022-R1-10-11.jpg) +![](https://assets.pfy.ch/sm/CRO0022-R1-11-12.jpg) +![](https://assets.pfy.ch/sm/CRO0022-R1-18-19.jpg) +![](https://assets.pfy.ch/sm/CRO0022-R1-08-9.jpg) +![](https://assets.pfy.ch/sm/A002110-R1-16-17.jpg) +![](https://assets.pfy.ch/sm/A002110-R1-17-18.jpg) +![](https://assets.pfy.ch/sm/A002110-R1-18-19.jpg) +![](https://assets.pfy.ch/sm/A002110-R1-03-4.jpg) +![](https://assets.pfy.ch/sm/A002110-R1-06-7.jpg) +![](https://assets.pfy.ch/sm/A002110-R1-08-9.jpg) +![](https://assets.pfy.ch/sm/CRO3326-R1-10-14A.jpg) +![](https://assets.pfy.ch/sm/CRO3326-R1-09-15A.jpg) +![](https://assets.pfy.ch/sm/CRO3326-R1-11-13A.jpg) +![](https://assets.pfy.ch/sm/CRO3326-R1-12-12A.jpg) +![](https://assets.pfy.ch/sm/CRO3326-R1-00-24A.jpg) +![](https://assets.pfy.ch/sm/CRO3326-R1-02-22A.jpg) +![](https://assets.pfy.ch/sm/CRO3326-R1-03-21A.jpg) +![](https://assets.pfy.ch/sm/CRO3326-R1-04-20A.jpg) +![](https://assets.pfy.ch/sm/000002030022.jpg) +![](https://assets.pfy.ch/sm/000002030016.jpg) +![](https://assets.pfy.ch/sm/000002030019.jpg) +![](https://assets.pfy.ch/sm/000002030021.jpg) +![](https://assets.pfy.ch/sm/000000400024.jpg) +![](https://assets.pfy.ch/sm/000000410029.jpg) +![](https://assets.pfy.ch/sm/000002040008.jpg) +![](https://assets.pfy.ch/sm/000000410023.jpg) +![](https://assets.pfy.ch/sm/000000410025.jpg) +![](https://assets.pfy.ch/sm/000002030012.jpg) +![](https://assets.pfy.ch/sm/000002030015.jpg) +![](https://assets.pfy.ch/sm/000000400020.jpg) +![](https://assets.pfy.ch/sm/000000410009.jpg) +![](https://assets.pfy.ch/sm/000000410010.jpg) +![](https://assets.pfy.ch/sm/000000410011.jpg) +![](https://assets.pfy.ch/sm/000000400011.jpg) +![](https://assets.pfy.ch/sm/000000400014.jpg) +![](https://assets.pfy.ch/sm/000000400015.jpg) +![](https://assets.pfy.ch/sm/000000400019.jpg) +![](https://assets.pfy.ch/sm/000000400007.jpg) +![](https://assets.pfy.ch/sm/000000400009.jpg) +![](https://assets.pfy.ch/sm/000000410030.jpg) +![](https://assets.pfy.ch/sm/000000400004.jpg) +![](https://assets.pfy.ch/sm/000000400008.jpg) +![](https://assets.pfy.ch/sm/000000400018.jpg) +![](https://assets.pfy.ch/sm/CRO0169-R1-25-11A-retouched.jpg) +![](https://assets.pfy.ch/sm/000002040035.jpg) +![](https://assets.pfy.ch/sm/000002040036.jpg) +![](https://assets.pfy.ch/sm/CRO0830-R1-00-24A.jpg) +![](https://assets.pfy.ch/sm/000002040031.jpg) +![](https://assets.pfy.ch/sm/000002040032.jpg) +![](https://assets.pfy.ch/sm/000002040033.jpg) +![](https://assets.pfy.ch/sm/000002040020.jpg) +![](https://assets.pfy.ch/sm/000002040024.jpg) +![](https://assets.pfy.ch/sm/000002040030.jpg) +![](https://assets.pfy.ch/sm/000000410036.jpg) +![](https://assets.pfy.ch/sm/000002030020.jpg) +![](https://assets.pfy.ch/sm/000002040009.jpg) +![](https://assets.pfy.ch/sm/000002040023.jpg) +![](https://assets.pfy.ch/sm/000002040025.jpg) +![](https://assets.pfy.ch/sm/000002040027.jpg) +![](https://assets.pfy.ch/sm/000002040029.jpg) +![](https://assets.pfy.ch/sm/000000410032.jpg) +![](https://assets.pfy.ch/sm/000002040011.jpg) +![](https://assets.pfy.ch/sm/000002040012.jpg) +![](https://assets.pfy.ch/sm/000002040022.jpg) +![](https://assets.pfy.ch/sm/000002040010.jpg) +![](https://assets.pfy.ch/sm/000002040014.jpg) +![](https://assets.pfy.ch/sm/000002040021.jpg) +![](https://assets.pfy.ch/sm/000002030023.jpg) +![](https://assets.pfy.ch/sm/CRO0169-R1-35-1A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-15-22A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-20-17A.jpg) +![](https://assets.pfy.ch/sm/CRO0831-R1-09-11.jpg) +![](https://assets.pfy.ch/sm/CRO1678-R1-25-11A.jpg) +![](https://assets.pfy.ch/sm/CRO1679-R1-06-30A.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-15-21.jpg) +![](https://assets.pfy.ch/sm/CRO0169-R1-24-12A.jpg) +![](https://assets.pfy.ch/sm/CRO1678-R1-32-4A.jpg) +![](https://assets.pfy.ch/sm/CRO1678-R1-33-3A.jpg) +![](https://assets.pfy.ch/sm/CRO0831-R1-08-10.jpg) +![](https://assets.pfy.ch/sm/CRO1678-R1-23-13A.jpg) +![](https://assets.pfy.ch/sm/CRO1678-R1-30-6A.jpg) +![](https://assets.pfy.ch/sm/chris.jpg) +![](https://assets.pfy.ch/sm/CRO0169-R1-27-9A.jpg) +![](https://assets.pfy.ch/sm/CRO0169-R1-32-4A.jpg) +![](https://assets.pfy.ch/sm/CRO0831-R1-03-5.jpg) +![](https://assets.pfy.ch/sm/CRO0169-R1-16-20A.jpg) +![](https://assets.pfy.ch/sm/CRO0169-R1-21-15A.jpg) +![](https://assets.pfy.ch/sm/CRO0830-R1-18-5A.jpg) +![](https://assets.pfy.ch/sm/CRO0831-R1-04-6.jpg) +![](https://assets.pfy.ch/sm/CRO0830-R1-03-21A.jpg) +![](https://assets.pfy.ch/sm/CRO0830-R1-05-19A.jpg) +![](https://assets.pfy.ch/sm/CRO0830-R1-08-16A.jpg) +![](https://assets.pfy.ch/sm/CRO0830-R1-12-11A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-12-25A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-16-21A.jpg) +![](https://assets.pfy.ch/sm/CRO1694-R1-04-32A.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-33-3.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-09-28A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-11-26A.jpg) +![](https://assets.pfy.ch/sm/CRO1679-R1-09-27A.jpg) +![](https://assets.pfy.ch/sm/CRO1679-R1-11-25A.jpg) +![](https://assets.pfy.ch/sm/CRO1679-R1-12-24A.jpg) +![](https://assets.pfy.ch/sm/CRO1679-R1-29-7A.jpg) +![](https://assets.pfy.ch/sm/CRO0831-R1-11-13.jpg) +![](https://assets.pfy.ch/sm/CRO0851-R1-00-2.jpg) +![](https://assets.pfy.ch/sm/CRO1678-R1-07-29A.jpg) +![](https://assets.pfy.ch/sm/CRO0831-R1-10-12.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-10-27A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-25-12A.jpg) +![](https://assets.pfy.ch/sm/CRO1679-R1-31-5A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-01-36A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-06-31A.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-08-29A.jpg) +![](https://assets.pfy.ch/sm/CRO0851-R1-01-3.jpg) +![](https://assets.pfy.ch/sm/CRO0851-R1-03-5.jpg) +![](https://assets.pfy.ch/sm/CRO1678-R1-09-27A.jpg) +![](https://assets.pfy.ch/sm/CRO0831-R1-22-24.jpg) +![](https://assets.pfy.ch/sm/CRO1694-R1-02-34A.jpg) +![](https://assets.pfy.ch/sm/CRO1694-R1-24-12A.jpg) +![](https://assets.pfy.ch/sm/CRO1694-R1-30-6A.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-16-8A.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-20-4A.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-01-35.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-32-4.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-12-12A.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-13-11A.jpg) +![](https://assets.pfy.ch/sm/CRO1694-R1-34-2A.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-08-28.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-13-23.jpg) +![](https://assets.pfy.ch/sm/CRO1679-R1-33-3A.jpg) +![](https://assets.pfy.ch/sm/CRO1694-R1-00-36A.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-18-18.jpg) +![](https://assets.pfy.ch/sm/CRO2648-R1-26-11A.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-12-24.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-14-22.jpg) +![](https://assets.pfy.ch/sm/CRO0851-R1-05-7.jpg) +![](https://assets.pfy.ch/sm/CRO1679-R1-28-8A.jpg) +![](https://assets.pfy.ch/sm/CRO1694-R1-22-14A.jpg) +![](https://assets.pfy.ch/sm/CRO0851-R1-02-4.jpg) +![](https://assets.pfy.ch/sm/CRO8811-R1-20-22A.jpg) +![](https://assets.pfy.ch/sm/CRO8811-R1-26-28A.jpg) +![](https://assets.pfy.ch/sm/CRO8812-R1-14-10.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-23-1A.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-33-3.jpg) +![](https://assets.pfy.ch/sm/CRO8811-R1-05-7A.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-17-7A.jpg) +![](https://assets.pfy.ch/sm/CRO8812-R1-16-8.jpg) +![](https://assets.pfy.ch/sm/CRO8812-R1-19-5.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-18-6A.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-10-26.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-23-13.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-27-9.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-15-21.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-16-20.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-19-17.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-20-16.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-21-3A.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-22-2A.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-12-24.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-11-25.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-15-9A.jpg) +![](https://assets.pfy.ch/sm/CRO2871-R1-19-5A.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-05-31.jpg) +![](https://assets.pfy.ch/sm/CRO2647-R1-07-29.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-12-24A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-18-6A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-19-5A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-20-4A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-22-2A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-11-13A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-15-9A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-16-8A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-21-3A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-10-14A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-12-12A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-13-11A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-17-7A.jpg) +![](https://assets.pfy.ch/sm/0free-wall.jpg) +![](https://assets.pfy.ch/sm/0train-tags.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-14-10A.jpg) +![](https://assets.pfy.ch/sm/0.jpg) +![](https://assets.pfy.ch/sm/0va-rml.jpg) +![](https://assets.pfy.ch/sm/CRO8812-R1-22-2.jpg) +![](https://assets.pfy.ch/sm/CRO8810-R1-07-29.jpg) +![](https://assets.pfy.ch/sm/CRO8812-R1-17-7.jpg) +![](https://assets.pfy.ch/sm/CRO8812-R1-18-6.jpg) +![](https://assets.pfy.ch/sm/CRO8812-R1-21-3.jpg) +![](https://assets.pfy.ch/sm/CRO8812-R1-15-9.jpg) +![](https://assets.pfy.ch/sm/CRO8812-R1-20-4.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-11-25A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-14-22A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-17-19A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-18-18A.jpg) +![](https://assets.pfy.ch/sm/CRO3745-R1-09-15A-censor.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-05-31A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-07-29A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-10-26A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-04-32A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-09-27A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-13-23A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-28-8A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-03-33A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-20-16A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-27-9A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-00-36A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-02-34A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-08-28A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-16-20A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-01-35A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-06-30A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-29-7A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-23-13A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-24-12A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-25-11A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-26-10A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-15-21A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-19-17A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-21-15A.jpg) +![](https://assets.pfy.ch/sm/CRO6452-R1-22-14A.jpg) + -- 2.51.2