PHPackages                             esc-company/view-transformer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. esc-company/view-transformer

Abandoned → [cable8mm/view-transformer](/?search=cable8mm%2Fview-transformer)Library[API Development](/categories/api)

esc-company/view-transformer
============================

View Transformer make profile image or name if client's information is empty.

v3.0.0(1y ago)1335MITPHPPHP ^8.0CI passing

Since Jun 3Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/cable8mm/view-transformer)[ Packagist](https://packagist.org/packages/esc-company/view-transformer)[ RSS](/packages/esc-company-view-transformer/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (10)Dependencies (2)Versions (16)Used By (0)

View Transformer
================

[](#view-transformer)

[![code-style](https://github.com/cable8mm/view-transformer/actions/workflows/code-style.yml/badge.svg)](https://github.com/cable8mm/view-transformer/actions/workflows/code-style.yml)[![run-tests](https://github.com/cable8mm/view-transformer/actions/workflows/run-tests.yml/badge.svg)](https://github.com/cable8mm/view-transformer/actions/workflows/run-tests.yml)[![Packagist Version](https://camo.githubusercontent.com/14721083a9676fbe3337dc5d9562573d7c95bd73c66fce25e4937418a38154dd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6361626c65386d6d2f766965772d7472616e73666f726d6572)](https://packagist.org/packages/cable8mm/view-transformer)[![Packagist Downloads](https://camo.githubusercontent.com/3505332a9d813ded36c1f664740c5e9b0df4b9e1504397449ccae64142452dea/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6361626c65386d6d2f766965772d7472616e73666f726d6572)](https://packagist.org/packages/cable8mm/view-transformer/stats)[![Packagist Dependency Version](https://camo.githubusercontent.com/5061e78cdf7cb6449547e47884b9e09e0b748211b35fd677f13f06997afd809a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f6361626c65386d6d2f766965772d7472616e73666f726d65722f706870)](https://packagist.org/packages/cable8mm/view-transformer)[![Packagist Stars](https://camo.githubusercontent.com/00e05a8791bc0b28a52eec4cd70dff981035db4b54908c09547edbc3b6c18dbb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f73746172732f6361626c65386d6d2f766965772d7472616e73666f726d6572)](https://github.com/cable8mm/view-transformer/stargazers)[![License: CC BY-NC-ND 4.0](https://camo.githubusercontent.com/0f384172145f215ade95b107d6b66a3067b4c2885e583de1159594ee42b646b9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d43435f42592d2d4e432d2d4e445f342e302d6c69676874677265792e737667)](https://creativecommons.org/licenses/by-nc-nd/4.0/)[![Packagist License](https://camo.githubusercontent.com/7da3221c94508313086d8c9c4240a8f6beee4f002b26781f4c6120a6c4af1cfd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6361626c65386d6d2f766965772d7472616e73666f726d6572)](https://github.com/cable8mm/view-transformer/blob/main/LICENSE.md)

A PHP library for generating pet (dog/cat) avatar images and nicknames. Provides consistent images and nicknames based on user IDs, and includes WordPress content transformation features.

Features
--------

[](#features)

- 4,080 dog/cat nicknames (breed names + descriptive adjectives)
- 80 dog avatar images
- 41 cat avatar images
- 3 image sizes supported (large, medium, small)
- Transform WordPress content to HTML (YouTube embed, caption tag processing)
- Laravel Blade support
- Deterministic algorithm (same ID always returns same result)

Installation
------------

[](#installation)

```
composer require cable8mm/view-transformer
```

Quick Start
-----------

[](#quick-start)

```
use Cable8mm\ViewTransformer\PrettyProfile;

// Generate nickname
$nickname = PrettyProfile::getInstance()->nickname(12345);
// Output: "Happy Poodle" (example)

// Get dog image URL
$dogImage = PrettyProfile::getInstance()->dog(12345);
// Output: "https://cabinet-pets.palgle.com/avatars/dog/61.png"

// Get cat image URL (medium size)
$catImage = PrettyProfile::getInstance()->cat(12345, 'medium');
// Output: "https://cabinet-pets.palgle.com/avatars/cat/medium/13.png"
```

API Reference
-------------

[](#api-reference)

### PrettyProfile

[](#prettyprofile)

Generates nicknames and pet image URLs based on user ID.

#### Methods

[](#methods)

##### `nickname(int $id): string`

[](#nicknameint-id-string)

Generates a nickname from user ID.

**Parameters:**

- `$id` (int): User ID (must be &gt;= 1)

**Returns:** Adjective + breed name combination (e.g., "Ordinary Nebelung")

**Throws:** `InvalidArgumentException` - If ID is 0 or negative

**Example:**

```
echo PrettyProfile::getInstance()->nickname(1);
//=> Ordinary Nebelung

echo PrettyProfile::getInstance()->nickname(2);
//=> Sexy Norwegian Forest
```

---

##### `cat(int $id, ?string $size = null): string`

[](#catint-id-string-size--null-string)

Returns a cat image URL.

**Parameters:**

- `$id` (int): User ID (must be &gt;= 1)
- `$size` (string|null): 'large', 'medium', 'small', or null (original size)

**Returns:** Image URL

**Throws:** `InvalidArgumentException` - If ID is invalid or size is not valid

**Example:**

```
echo PrettyProfile::getInstance()->cat(1);
//=> https://cabinet-pets.palgle.com/avatars/cat/1.png

echo PrettyProfile::getInstance()->cat(1, 'medium');
//=> https://cabinet-pets.palgle.com/avatars/cat/medium/1.png
```

---

##### `dog(int $id, ?string $size = null): string`

[](#dogint-id-string-size--null-string)

Returns a dog image URL.

**Parameters:**

- `$id` (int): User ID (must be &gt;= 1)
- `$size` (string|null): 'large', 'medium', 'small', or null (original size)

**Returns:** Image URL

**Throws:** `InvalidArgumentException` - If ID is invalid or size is not valid

**Example:**

```
echo PrettyProfile::getInstance()->dog(1);
//=> https://cabinet-pets.palgle.com/avatars/dog/1.png

echo PrettyProfile::getInstance()->dog(1, 'large');
//=> https://cabinet-pets.palgle.com/avatars/dog/large/1.png
```

---

##### `cats(?string $size = null): array`

[](#catsstring-size--null-array)

Returns array of all cat image URLs.

**Parameters:**

- `$size` (string|null): 'large', 'medium', 'small', or null (original size)

**Returns:** Array of image URLs (41 items)

**Example:**

```
$cats = PrettyProfile::getInstance()->cats();
// Array of 41 image URLs

$cats = PrettyProfile::getInstance()->cats('medium');
// Array of 41 medium-sized image URLs
```

---

##### `dogs(?string $size = null): array`

[](#dogsstring-size--null-array)

Returns array of all dog image URLs.

**Parameters:**

- `$size` (string|null): 'large', 'medium', 'small', or null (original size)

**Returns:** Array of image URLs (80 items)

**Example:**

```
$dogs = PrettyProfile::getInstance()->dogs();
// Array of 80 image URLs

$dogs = PrettyProfile::getInstance()->dogs('small');
// Array of 80 small-sized image URLs
```

---

##### `profileImage(int $id, ?string $image = null, string $animal = 'dog'): string`

[](#profileimageint-id-string-image--null-string-animal--dog-string)

Helper method for Laravel Blade templates.

**Parameters:**

- `$id` (int): User ID
- `$image` (string|null): Custom image URL (used if provided)
- `$animal` (string): 'dog' or 'cat' (default: 'dog')

**Returns:** Image URL

**Throws:** `InvalidArgumentException` - If animal is not 'dog' or 'cat'

**Example:**

```
{{ PrettyProfile::profileImage(4123, animal: 'dog') }}
{{-- Output: https://cabinet-pets.palgle.com/avatars/dog/43.png --}}

{{ PrettyProfile::profileImage(4123, animal: 'cat') }}
{{-- Output: https://cabinet-pets.palgle.com/avatars/cat/10.png --}}

{{ PrettyProfile::profileImage(4123, image: 'https://example.com/custom.png') }}
{{-- Output: https://example.com/custom.png --}}
```

---

##### `backgroundImage(?string $background_image = null): string`

[](#backgroundimagestring-background_image--null-string)

Returns a background image URL.

**Parameters:**

- `$background_image` (string|null): Custom background image URL

**Returns:** Background image URL

**Example:**

```
echo PrettyProfile::backgroundImage();
//=> https://cabinet-pets.palgle.com/bg/bg-1.png

echo PrettyProfile::backgroundImage('https://example.com/bg.png');
//=> https://example.com/bg.png
```

---

### WordBinder

[](#wordbinder)

Transforms WordPress content to HTML.

#### Methods

[](#methods-1)

##### `view(string $content): string`

[](#viewstring-content-string)

Transforms WordPress shortcodes to HTML.

**Supported features:**

- Extract only images from `[caption]` tags
- Convert `[embed]` tags to YouTube iframes
- Remove empty paragraphs (`&nbsp;`)

**Parameters:**

- `$content` (string): WordPress content

**Returns:** Transformed HTML

**Example:**

```
use Cable8mm\ViewTransformer\WordBinder;

// YouTube embed transformation
$content = '[embed]https://www.youtube.com/watch?v=XsJ9GFGkEOk[/embed]';
echo WordBinder::view($content);
//=>

// Extract image from caption tag
$content = '[caption width=80][/caption]';
echo WordBinder::view($content);
//=>

// Remove empty paragraphs
$content = 'Content&nbsp;More';
echo WordBinder::view($content);
//=> ContentMore
```

---

##### `addBanner(string $content, string $bannerHtml, int $nthPTag = 0): string`

[](#addbannerstring-content-string-bannerhtml-int-nthptag--0-string)

Inserts banner HTML after the nth `` tag in HTML content.

**Parameters:**

- `$content` (string): HTML content
- `$bannerHtml` (string): Banner HTML to insert
- `$nthPTag` (int): Insert position (0 = at the beginning, default: 0)

**Returns:** HTML with banner inserted

**Example:**

```
$banner = 'Banner';
$content = 'Para1Para2Para3';

// Insert banner at the beginning
echo WordBinder::addBanner($content, $banner, 0);
//=> BannerPara1Para2Para3

// Insert banner after 2nd paragraph
echo WordBinder::addBanner($content, $banner, 2);
//=> Para1Para2BannerPara3

// If n exceeds number of  tags, insert at beginning
echo WordBinder::addBanner($content, $banner, 10);
//=> BannerPara1Para2Para3
```

---

Usage Examples
--------------

[](#usage-examples)

### Generate User Profile Images

[](#generate-user-profile-images)

```
use Cable8mm\ViewTransformer\PrettyProfile;

$userId = 393939;

// Generate nickname
$nickname = PrettyProfile::getInstance()->nickname($userId);
echo $nickname; // "Ordinary Nebelung"

// Get dog profile image
$dogImage = PrettyProfile::getInstance()->dog($userId);
echo $dogImage; // "https://cabinet-pets.palgle.com/avatars/dog/64.png"

// Get cat profile image (medium size)
$catImage = PrettyProfile::getInstance()->cat($userId, 'medium');
echo $catImage; // "https://cabinet-pets.palgle.com/avatars/cat/medium/10.png"
```

### Get All Images

[](#get-all-images)

```
use Cable8mm\ViewTransformer\PrettyProfile;

// Get all dog images (original size)
$allDogs = PrettyProfile::getInstance()->dogs();

// Get all cat images (medium size)
$allCatsMedium = PrettyProfile::getInstance()->cats('medium');

// Generate preview
foreach ($allDogs as $index => $url) {
    echo "![Dog $index]($url)\n";
}
```

### Laravel Blade Integration

[](#laravel-blade-integration)

```
{{-- Basic usage --}}

{{-- Cat image --}}

{{-- Custom image (takes priority) --}}

```

### WordPress Content Transformation

[](#wordpress-content-transformation)

```
use Cable8mm\ViewTransformer\WordBinder;

// WordPress content with YouTube video
$wordpressContent = '
    First paragraph
    [embed]https://www.youtube.com/watch?v=abc123&t=30[/embed]
    Second paragraph
';

$html = WordBinder::view($wordpressContent);
// YouTube embed is converted to iframe

// Insert banner ad
$banner = 'Advertisement';
$contentWithBanner = WordBinder::addBanner($html, $banner, 1);
// Banner inserted after first paragraph
```

### Exception Handling

[](#exception-handling)

```
use Cable8mm\ViewTransformer\PrettyProfile;

try {
    // Invalid ID (0 or negative)
    PrettyProfile::getInstance()->cat(0);
} catch (\InvalidArgumentException $e) {
    echo $e->getMessage();
    // "The value must be over 0, so a value of 0 is not valid."
}

try {
    // Invalid size
    PrettyProfile::getInstance()->dog(1, 'huge');
} catch (\InvalidArgumentException $e) {
    echo $e->getMessage();
    // "The value must be "large" or "medium" or "small", so a value of "huge" is not valid."
}

try {
    // Invalid animal
    PrettyProfile::profileImage(1, animal: 'rabbit');
} catch (\InvalidArgumentException $e) {
    echo $e->getMessage();
    // "The value must be dog or cat. rabbit is not valid."
}
```

Algorithm
---------

[](#algorithm)

### Image Selection Algorithm

[](#image-selection-algorithm)

Uses the remainder of dividing user ID by the number of images. This ensures:

- **Deterministic**: Same ID always returns the same image
- **Uniform distribution**: If IDs are evenly distributed, images are evenly distributed
- **Unlimited**: Works correctly even if ID exceeds image count

```
// Example: Dog images (80 total)
$id = 827342;
$imageNumber = ($id - 1) % 80 + 1; // 62
// User #827342 always uses image #62
```

### Nickname Generation Algorithm

[](#nickname-generation-algorithm)

Selects prefix (adjective) and suffix (breed name) independently using modular arithmetic.

```
// Example: ID 1
$prefixIndex = (1 - 1) % 40; // 0 → First adjective
$nicknameIndex = (1 - 1) % 66; // 0 → First breed name
// Result: "Ordinary Nebelung" (example)
```

Preview
-------

[](#preview)

### Dog artworks

[](#dog-artworks)

[![Dog 1](https://camo.githubusercontent.com/73984bfeb7c831477ebac4f435a692455636618acfda08363a70eae8d2c36c63/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f312e706e67)](https://camo.githubusercontent.com/73984bfeb7c831477ebac4f435a692455636618acfda08363a70eae8d2c36c63/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f312e706e67)[![Dog 2](https://camo.githubusercontent.com/bbf9e507ba12a8a7aba0ce974b3cde417b4ecdeb3ea8df55ffa186777d24ec49/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f322e706e67)](https://camo.githubusercontent.com/bbf9e507ba12a8a7aba0ce974b3cde417b4ecdeb3ea8df55ffa186777d24ec49/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f322e706e67)[![Dog 3](https://camo.githubusercontent.com/eca85bc06c847b115db6031c36fbafaa4970b64f7de146fe7d11dc5583358160/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f332e706e67)](https://camo.githubusercontent.com/eca85bc06c847b115db6031c36fbafaa4970b64f7de146fe7d11dc5583358160/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f332e706e67)[![Dog 4](https://camo.githubusercontent.com/b358c953292917eff7f2c5d6ecaebab7d16a2820e9a85f5b37f9d865e3b53347/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f342e706e67)](https://camo.githubusercontent.com/b358c953292917eff7f2c5d6ecaebab7d16a2820e9a85f5b37f9d865e3b53347/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f342e706e67)[![Dog 5](https://camo.githubusercontent.com/bc5cdbf4e3103f4aa51ce3e81ab0f7c0c0f029654e5632a814318d527ecc0676/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f352e706e67)](https://camo.githubusercontent.com/bc5cdbf4e3103f4aa51ce3e81ab0f7c0c0f029654e5632a814318d527ecc0676/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f352e706e67)[![Dog 6](https://camo.githubusercontent.com/808108d4533b0ebaeebc658b11e1f5cbdc4dacec97329491c2cb2dfa7d92f568/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f362e706e67)](https://camo.githubusercontent.com/808108d4533b0ebaeebc658b11e1f5cbdc4dacec97329491c2cb2dfa7d92f568/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f362e706e67)[![Dog 7](https://camo.githubusercontent.com/80f504cb6e07516dbc3b54572fb8f7deae389f5e81519e1553ce7516bdeb8068/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f372e706e67)](https://camo.githubusercontent.com/80f504cb6e07516dbc3b54572fb8f7deae389f5e81519e1553ce7516bdeb8068/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f372e706e67)[![Dog 8](https://camo.githubusercontent.com/90ad9087b521b92a7660747a483a3362589710df70987c21883a24ad49215d42/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f382e706e67)](https://camo.githubusercontent.com/90ad9087b521b92a7660747a483a3362589710df70987c21883a24ad49215d42/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f382e706e67)[![Dog 9](https://camo.githubusercontent.com/626c379740f7f4cb8b78535ce9c657ddc425f95883714e2f62c6b26b4f0ef391/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f392e706e67)](https://camo.githubusercontent.com/626c379740f7f4cb8b78535ce9c657ddc425f95883714e2f62c6b26b4f0ef391/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f392e706e67)[![Dog 10](https://camo.githubusercontent.com/16361fd1242dc31cf81012117909935ba0bf7eeae3be9b9d68236e4f0e3bf939/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31302e706e67)](https://camo.githubusercontent.com/16361fd1242dc31cf81012117909935ba0bf7eeae3be9b9d68236e4f0e3bf939/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31302e706e67)[![Dog 11](https://camo.githubusercontent.com/b16397d1c536f81e3bd82078e65ffa0d64a2e1e787ed1dc5898e31df6ef1e2ba/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31312e706e67)](https://camo.githubusercontent.com/b16397d1c536f81e3bd82078e65ffa0d64a2e1e787ed1dc5898e31df6ef1e2ba/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31312e706e67)[![Dog 12](https://camo.githubusercontent.com/8032a74cb022f7cac1b080c9f8db211324b14235f1529d6d4ef42b4483dbd303/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31322e706e67)](https://camo.githubusercontent.com/8032a74cb022f7cac1b080c9f8db211324b14235f1529d6d4ef42b4483dbd303/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31322e706e67)[![Dog 13](https://camo.githubusercontent.com/7795c542a843d8bc882cf211f481b8b5f40fed84f5f5ad9f44325aa328d80403/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31332e706e67)](https://camo.githubusercontent.com/7795c542a843d8bc882cf211f481b8b5f40fed84f5f5ad9f44325aa328d80403/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31332e706e67)[![Dog 14](https://camo.githubusercontent.com/69c230bb953adbb8f3d27b416749a2270d2be661f324d6b816ad8404b26f6675/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31342e706e67)](https://camo.githubusercontent.com/69c230bb953adbb8f3d27b416749a2270d2be661f324d6b816ad8404b26f6675/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31342e706e67)[![Dog 15](https://camo.githubusercontent.com/8e91cebfdd1a004b6fdfd28aacbf5fa47413237e05f67768a790decb53d7514e/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31352e706e67)](https://camo.githubusercontent.com/8e91cebfdd1a004b6fdfd28aacbf5fa47413237e05f67768a790decb53d7514e/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31352e706e67)[![Dog 16](https://camo.githubusercontent.com/dd878a84d9d0e50154a36e8b7308893c8e5794edca7a485867dcb6d3290e51a3/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31362e706e67)](https://camo.githubusercontent.com/dd878a84d9d0e50154a36e8b7308893c8e5794edca7a485867dcb6d3290e51a3/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31362e706e67)[![Dog 17](https://camo.githubusercontent.com/dad3aa55098ef01d4b194cd91871ad76cf8af7d4ffda21461dcb809e8dc3dd69/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31372e706e67)](https://camo.githubusercontent.com/dad3aa55098ef01d4b194cd91871ad76cf8af7d4ffda21461dcb809e8dc3dd69/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31372e706e67)[![Dog 18](https://camo.githubusercontent.com/63820f92c8f82093c1a808fd4b73fd216343285d0d415338c7ec8e36c20a120d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31382e706e67)](https://camo.githubusercontent.com/63820f92c8f82093c1a808fd4b73fd216343285d0d415338c7ec8e36c20a120d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31382e706e67)[![Dog 19](https://camo.githubusercontent.com/af4f9b526027e9b4540265914e59326822d489b81355f8b9216845bd317298e3/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31392e706e67)](https://camo.githubusercontent.com/af4f9b526027e9b4540265914e59326822d489b81355f8b9216845bd317298e3/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f31392e706e67)[![Dog 20](https://camo.githubusercontent.com/6224aba356c113b5c8393f75dd04fb6ffde7e5f31b951515d538a6fa03d3c9e9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32302e706e67)](https://camo.githubusercontent.com/6224aba356c113b5c8393f75dd04fb6ffde7e5f31b951515d538a6fa03d3c9e9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32302e706e67)[![Dog 21](https://camo.githubusercontent.com/2034b32e228cabcc1e1e33c5d5d9cdb2fe4932038642298270f631f104c76515/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32312e706e67)](https://camo.githubusercontent.com/2034b32e228cabcc1e1e33c5d5d9cdb2fe4932038642298270f631f104c76515/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32312e706e67)[![Dog 22](https://camo.githubusercontent.com/ff04b47539349e74bbfb287c592c5fc83480c7df12a8e53a6f193e4cb0410a3c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32322e706e67)](https://camo.githubusercontent.com/ff04b47539349e74bbfb287c592c5fc83480c7df12a8e53a6f193e4cb0410a3c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32322e706e67)[![Dog 23](https://camo.githubusercontent.com/5c1967afff0c1e49bec04d9a6da70fa73d02e06c726dbd99938a2d384d212d3b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32332e706e67)](https://camo.githubusercontent.com/5c1967afff0c1e49bec04d9a6da70fa73d02e06c726dbd99938a2d384d212d3b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32332e706e67)[![Dog 24](https://camo.githubusercontent.com/63d9d39e4b670db15949a9c2de31dce474374b6c3794bed8430be99d530a25ad/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32342e706e67)](https://camo.githubusercontent.com/63d9d39e4b670db15949a9c2de31dce474374b6c3794bed8430be99d530a25ad/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32342e706e67)[![Dog 25](https://camo.githubusercontent.com/a300c5ab234a9f641e41f42a42ee5f2779f2664043d384e28aaf77268a83eed0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32352e706e67)](https://camo.githubusercontent.com/a300c5ab234a9f641e41f42a42ee5f2779f2664043d384e28aaf77268a83eed0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32352e706e67)[![Dog 26](https://camo.githubusercontent.com/3ce0069a7f7ac84e3a60387f60baaa22b095a837be128792683e27540259c61b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32362e706e67)](https://camo.githubusercontent.com/3ce0069a7f7ac84e3a60387f60baaa22b095a837be128792683e27540259c61b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32362e706e67)[![Dog 27](https://camo.githubusercontent.com/6bc32726e78e9fa10288b73fd24813b1f3839e7cedb4ce5f5727920c67f5aa59/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32372e706e67)](https://camo.githubusercontent.com/6bc32726e78e9fa10288b73fd24813b1f3839e7cedb4ce5f5727920c67f5aa59/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32372e706e67)[![Dog 28](https://camo.githubusercontent.com/212bd5a1bcb209ac93da45e8af85f1e022bb0500d918e02963b36922483ec71b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32382e706e67)](https://camo.githubusercontent.com/212bd5a1bcb209ac93da45e8af85f1e022bb0500d918e02963b36922483ec71b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32382e706e67)[![Dog 29](https://camo.githubusercontent.com/e3e0f40e0abf8e52001efe4a08f72d0334ca3707b84ea3613dfbe765c4409b0d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32392e706e67)](https://camo.githubusercontent.com/e3e0f40e0abf8e52001efe4a08f72d0334ca3707b84ea3613dfbe765c4409b0d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f32392e706e67)[![Dog 30](https://camo.githubusercontent.com/ee55af8e87b943356bbf13a483ae3b4028e66c6294306624395255af8c7b22cb/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33302e706e67)](https://camo.githubusercontent.com/ee55af8e87b943356bbf13a483ae3b4028e66c6294306624395255af8c7b22cb/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33302e706e67)[![Dog 31](https://camo.githubusercontent.com/2b66736b13b67063300c5a20a072994074cdd1855751a064e3b4dd9027af540f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33312e706e67)](https://camo.githubusercontent.com/2b66736b13b67063300c5a20a072994074cdd1855751a064e3b4dd9027af540f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33312e706e67)[![Dog 32](https://camo.githubusercontent.com/7f0135a9643fc90370908183196399d9557a317f4f845d96fe345532c310515e/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33322e706e67)](https://camo.githubusercontent.com/7f0135a9643fc90370908183196399d9557a317f4f845d96fe345532c310515e/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33322e706e67)[![Dog 33](https://camo.githubusercontent.com/08d2668c8ea6c7fb31687c3995e7a43a7556f8d828c7807a3ea834730c1dce62/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33332e706e67)](https://camo.githubusercontent.com/08d2668c8ea6c7fb31687c3995e7a43a7556f8d828c7807a3ea834730c1dce62/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33332e706e67)[![Dog 34](https://camo.githubusercontent.com/79513555fb9685213bd5ec95b77ef6e7826c6fb17c12851c693722d16d947407/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33342e706e67)](https://camo.githubusercontent.com/79513555fb9685213bd5ec95b77ef6e7826c6fb17c12851c693722d16d947407/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33342e706e67)[![Dog 35](https://camo.githubusercontent.com/9bd7c898efdfb693dff1322c739aac9d289841940c7ee2d54cd3bbd418bcdbc9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33352e706e67)](https://camo.githubusercontent.com/9bd7c898efdfb693dff1322c739aac9d289841940c7ee2d54cd3bbd418bcdbc9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33352e706e67)[![Dog 36](https://camo.githubusercontent.com/a2f2ca79d934cc5b895f653ffe95bb56dc4faccd0dd5507aff78fb9bf9dd0cc0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33362e706e67)](https://camo.githubusercontent.com/a2f2ca79d934cc5b895f653ffe95bb56dc4faccd0dd5507aff78fb9bf9dd0cc0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33362e706e67)[![Dog 37](https://camo.githubusercontent.com/df1c0c7eb864c4f2befa18de740aa44b08229c091bb6331cd0bf72e138aa6789/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33372e706e67)](https://camo.githubusercontent.com/df1c0c7eb864c4f2befa18de740aa44b08229c091bb6331cd0bf72e138aa6789/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33372e706e67)[![Dog 38](https://camo.githubusercontent.com/341fd37e3aa8505c19b7946ec189d1ad1eb84f533c8bc4e739848280ed4d0252/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33382e706e67)](https://camo.githubusercontent.com/341fd37e3aa8505c19b7946ec189d1ad1eb84f533c8bc4e739848280ed4d0252/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33382e706e67)[![Dog 39](https://camo.githubusercontent.com/f3c7b670da9cae13e8b935e56083b5e24154b8c439bbaccd610653628c1a0377/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33392e706e67)](https://camo.githubusercontent.com/f3c7b670da9cae13e8b935e56083b5e24154b8c439bbaccd610653628c1a0377/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f33392e706e67)[![Dog 40](https://camo.githubusercontent.com/bd4c4ddd2e1c903dcc0e056e147e503efb8dcfe0116886644f7adc8ffa8ab6f7/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34302e706e67)](https://camo.githubusercontent.com/bd4c4ddd2e1c903dcc0e056e147e503efb8dcfe0116886644f7adc8ffa8ab6f7/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34302e706e67)[![Dog 41](https://camo.githubusercontent.com/87006b76b78c02e21aebbe5a010f05457144f3dee4ee75bd2d8e0e03855675c9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34312e706e67)](https://camo.githubusercontent.com/87006b76b78c02e21aebbe5a010f05457144f3dee4ee75bd2d8e0e03855675c9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34312e706e67)[![Dog 42](https://camo.githubusercontent.com/4716dc9a6bc284e4a9244d3241ad5787af2fdb069bfb5cb7e6ea56d2397ee096/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34322e706e67)](https://camo.githubusercontent.com/4716dc9a6bc284e4a9244d3241ad5787af2fdb069bfb5cb7e6ea56d2397ee096/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34322e706e67)[![Dog 43](https://camo.githubusercontent.com/e9dd2b8d6c3f6adcd3b7eef3b325d6069c800ecb7040e129fd24aae1386de507/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34332e706e67)](https://camo.githubusercontent.com/e9dd2b8d6c3f6adcd3b7eef3b325d6069c800ecb7040e129fd24aae1386de507/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34332e706e67)[![Dog 44](https://camo.githubusercontent.com/671932f261d6de236b3d20ee3d65fe4dca6c920e0178ba0ad69161f1ddd4e1dd/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34342e706e67)](https://camo.githubusercontent.com/671932f261d6de236b3d20ee3d65fe4dca6c920e0178ba0ad69161f1ddd4e1dd/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34342e706e67)[![Dog 45](https://camo.githubusercontent.com/defafd11c78bd7bbf8ac4992d8661ab705ed4f45eb93fac320b1b78268708657/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34352e706e67)](https://camo.githubusercontent.com/defafd11c78bd7bbf8ac4992d8661ab705ed4f45eb93fac320b1b78268708657/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34352e706e67)[![Dog 46](https://camo.githubusercontent.com/fd503c22198d539f3f25d35446fcb35d89c29cbe664463ae65aae8b643143390/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34362e706e67)](https://camo.githubusercontent.com/fd503c22198d539f3f25d35446fcb35d89c29cbe664463ae65aae8b643143390/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34362e706e67)[![Dog 47](https://camo.githubusercontent.com/e9eb9e474a9025953a4b28c63d3c8211487d093db3135ea060e9a1c019c2a5c8/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34372e706e67)](https://camo.githubusercontent.com/e9eb9e474a9025953a4b28c63d3c8211487d093db3135ea060e9a1c019c2a5c8/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34372e706e67)[![Dog 48](https://camo.githubusercontent.com/f76fb663eafaf36fa721a88c219e47c3b029157350b65f8d18052aec2e940c65/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34382e706e67)](https://camo.githubusercontent.com/f76fb663eafaf36fa721a88c219e47c3b029157350b65f8d18052aec2e940c65/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34382e706e67)[![Dog 49](https://camo.githubusercontent.com/71c690a540affa11cd6a98f4f7ac4da1ead987d5c8e9ab5a92212ec15d15261d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34392e706e67)](https://camo.githubusercontent.com/71c690a540affa11cd6a98f4f7ac4da1ead987d5c8e9ab5a92212ec15d15261d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f34392e706e67)[![Dog 50](https://camo.githubusercontent.com/c9385226fc8277a824fd6c6180c87d75b56ed7aed7d9477462d17de0e5f446b8/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35302e706e67)](https://camo.githubusercontent.com/c9385226fc8277a824fd6c6180c87d75b56ed7aed7d9477462d17de0e5f446b8/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35302e706e67)[![Dog 51](https://camo.githubusercontent.com/6f043ba25bd1251ed69ac96f281e319e6b2da7b6a3ccf29e67cc6a8d1ba54d39/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35312e706e67)](https://camo.githubusercontent.com/6f043ba25bd1251ed69ac96f281e319e6b2da7b6a3ccf29e67cc6a8d1ba54d39/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35312e706e67)[![Dog 52](https://camo.githubusercontent.com/5f1035747ffab76502cd9ae559cef1746b111a7158b8895fecefbe2556cbecb5/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35322e706e67)](https://camo.githubusercontent.com/5f1035747ffab76502cd9ae559cef1746b111a7158b8895fecefbe2556cbecb5/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35322e706e67)[![Dog 53](https://camo.githubusercontent.com/dca50cd2a167e851b4f9b5e7ce6b1fe41c1b0a523c79adc3c57ee93ad5d0eb61/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35332e706e67)](https://camo.githubusercontent.com/dca50cd2a167e851b4f9b5e7ce6b1fe41c1b0a523c79adc3c57ee93ad5d0eb61/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35332e706e67)[![Dog 54](https://camo.githubusercontent.com/a8fa352197cbbdc6297d4103ce93b1a723220ba213557e154560d49b2e6d9269/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35342e706e67)](https://camo.githubusercontent.com/a8fa352197cbbdc6297d4103ce93b1a723220ba213557e154560d49b2e6d9269/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35342e706e67)[![Dog 55](https://camo.githubusercontent.com/0f0631b8638d800d68f9cfc4eec34a88a97b9921950d01ff90d6d49ce22ed46c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35352e706e67)](https://camo.githubusercontent.com/0f0631b8638d800d68f9cfc4eec34a88a97b9921950d01ff90d6d49ce22ed46c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35352e706e67)[![Dog 56](https://camo.githubusercontent.com/b28f61aed0d49a71affea3f98a03ea4d69e1a8e5c198afd5cb7cfc0b167e2b14/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35362e706e67)](https://camo.githubusercontent.com/b28f61aed0d49a71affea3f98a03ea4d69e1a8e5c198afd5cb7cfc0b167e2b14/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35362e706e67)[![Dog 57](https://camo.githubusercontent.com/a2b8d24b74e2d0eafaf979cc5f73a92f69cf1bc4dbfc79ee92498a223109cfb8/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35372e706e67)](https://camo.githubusercontent.com/a2b8d24b74e2d0eafaf979cc5f73a92f69cf1bc4dbfc79ee92498a223109cfb8/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35372e706e67)[![Dog 58](https://camo.githubusercontent.com/4b1379b64681b126ab2d8ed404e38fc69cb5bbf98b370f016747ce4915c392dc/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35382e706e67)](https://camo.githubusercontent.com/4b1379b64681b126ab2d8ed404e38fc69cb5bbf98b370f016747ce4915c392dc/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35382e706e67)[![Dog 59](https://camo.githubusercontent.com/69801aa1407274c9ee2ac8aa8b20da9a61007f11fdd8916fdb3c39a5eef360b0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35392e706e67)](https://camo.githubusercontent.com/69801aa1407274c9ee2ac8aa8b20da9a61007f11fdd8916fdb3c39a5eef360b0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f35392e706e67)[![Dog 60](https://camo.githubusercontent.com/b5464b71d0161c4b67f260abe137eb437c0edd36df37bf536b1e1e78e325a5e9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36302e706e67)](https://camo.githubusercontent.com/b5464b71d0161c4b67f260abe137eb437c0edd36df37bf536b1e1e78e325a5e9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36302e706e67)[![Dog 61](https://camo.githubusercontent.com/1392e6b0d53a5b302a444bfd7dfeee561051115d87701c5a52ed5f45d3ec224b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36312e706e67)](https://camo.githubusercontent.com/1392e6b0d53a5b302a444bfd7dfeee561051115d87701c5a52ed5f45d3ec224b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36312e706e67)[![Dog 62](https://camo.githubusercontent.com/2946161590a07d33e7f74210bc9fc0a48ddb6fe5636a841519525df57668a40a/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36322e706e67)](https://camo.githubusercontent.com/2946161590a07d33e7f74210bc9fc0a48ddb6fe5636a841519525df57668a40a/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36322e706e67)[![Dog 63](https://camo.githubusercontent.com/ac653031c38fb619d0cfa642e293db87765a28fb85b85ff10c65a07798485eae/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36332e706e67)](https://camo.githubusercontent.com/ac653031c38fb619d0cfa642e293db87765a28fb85b85ff10c65a07798485eae/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36332e706e67)[![Dog 64](https://camo.githubusercontent.com/2673897ada7fe9c4325a6df4224b252e06e87a8520b26b212126bfa51fea9ac1/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36342e706e67)](https://camo.githubusercontent.com/2673897ada7fe9c4325a6df4224b252e06e87a8520b26b212126bfa51fea9ac1/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36342e706e67)[![Dog 65](https://camo.githubusercontent.com/d00ad7d55a4900ff5ef7f8f07764fd5b6e2f836498b636ba843d838999d7ed28/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36352e706e67)](https://camo.githubusercontent.com/d00ad7d55a4900ff5ef7f8f07764fd5b6e2f836498b636ba843d838999d7ed28/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36352e706e67)[![Dog 66](https://camo.githubusercontent.com/8558edb906ba5d905c99fce264184214e2cebb6c1799c6c53f6b6d63d789216e/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36362e706e67)](https://camo.githubusercontent.com/8558edb906ba5d905c99fce264184214e2cebb6c1799c6c53f6b6d63d789216e/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36362e706e67)[![Dog 67](https://camo.githubusercontent.com/dfe9954b972b702824e8ad3a5bb4b0c646822a9d917aa1e40c94fea9d84cba97/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36372e706e67)](https://camo.githubusercontent.com/dfe9954b972b702824e8ad3a5bb4b0c646822a9d917aa1e40c94fea9d84cba97/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36372e706e67)[![Dog 68](https://camo.githubusercontent.com/5b23496a0e7ee648ae8d65fc4d2a742c7dc17cb1cfa34c8501a1b31435341688/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36382e706e67)](https://camo.githubusercontent.com/5b23496a0e7ee648ae8d65fc4d2a742c7dc17cb1cfa34c8501a1b31435341688/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36382e706e67)[![Dog 69](https://camo.githubusercontent.com/107daf0075fa61d801331668561448327d38a6c3521f522962a5befc650b4a5d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36392e706e67)](https://camo.githubusercontent.com/107daf0075fa61d801331668561448327d38a6c3521f522962a5befc650b4a5d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f36392e706e67)[![Dog 70](https://camo.githubusercontent.com/a3178bb22f6f42c235aa37dc019bc3c45f274b9735f7daad0984d1ddd805e511/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37302e706e67)](https://camo.githubusercontent.com/a3178bb22f6f42c235aa37dc019bc3c45f274b9735f7daad0984d1ddd805e511/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37302e706e67)[![Dog 71](https://camo.githubusercontent.com/6e2915b134658aa66a867d12e8c9aa040e3b48b988263226fa6c7b0c0114f8fb/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37312e706e67)](https://camo.githubusercontent.com/6e2915b134658aa66a867d12e8c9aa040e3b48b988263226fa6c7b0c0114f8fb/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37312e706e67)[![Dog 72](https://camo.githubusercontent.com/3cbea1a7e97d8ce73d6cbebfe63f74c6bee2bce43619fe17ab4b25de2d766ad3/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37322e706e67)](https://camo.githubusercontent.com/3cbea1a7e97d8ce73d6cbebfe63f74c6bee2bce43619fe17ab4b25de2d766ad3/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37322e706e67)[![Dog 73](https://camo.githubusercontent.com/8a6734cba75a419391c878481e059f00c118ab554d2054ec783f0b9c01233ccb/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37332e706e67)](https://camo.githubusercontent.com/8a6734cba75a419391c878481e059f00c118ab554d2054ec783f0b9c01233ccb/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37332e706e67)[![Dog 74](https://camo.githubusercontent.com/e5ec76b1250db50ff3f9fb01425a41672aba59616bb35d1d61ebfbe48de5c37d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37342e706e67)](https://camo.githubusercontent.com/e5ec76b1250db50ff3f9fb01425a41672aba59616bb35d1d61ebfbe48de5c37d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37342e706e67)[![Dog 75](https://camo.githubusercontent.com/e06087d11928bc28667b95e22e54d881908c24da1d382a0650f05bca910484b7/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37352e706e67)](https://camo.githubusercontent.com/e06087d11928bc28667b95e22e54d881908c24da1d382a0650f05bca910484b7/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37352e706e67)[![Dog 76](https://camo.githubusercontent.com/9fdd5f072c6ea3aa3ddc82ed38309f0eafcba6d25bfc477ce89ac29d27a22ac3/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37362e706e67)](https://camo.githubusercontent.com/9fdd5f072c6ea3aa3ddc82ed38309f0eafcba6d25bfc477ce89ac29d27a22ac3/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37362e706e67)[![Dog 77](https://camo.githubusercontent.com/76a671f097e7dff45006c1c628f0b9195c8b9f6d3d6803459235a1113bd1c7dd/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37372e706e67)](https://camo.githubusercontent.com/76a671f097e7dff45006c1c628f0b9195c8b9f6d3d6803459235a1113bd1c7dd/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37372e706e67)[![Dog 78](https://camo.githubusercontent.com/b4feb2c285a9399ef507b1bd15b9b27e6992d9feb932bcf3ae1e2a3bf0f66915/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37382e706e67)](https://camo.githubusercontent.com/b4feb2c285a9399ef507b1bd15b9b27e6992d9feb932bcf3ae1e2a3bf0f66915/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37382e706e67)[![Dog 79](https://camo.githubusercontent.com/24ccf798a76e137f2498118714a569a896ff028996d04d269910b3c076d5fbe5/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37392e706e67)](https://camo.githubusercontent.com/24ccf798a76e137f2498118714a569a896ff028996d04d269910b3c076d5fbe5/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f37392e706e67)[![Dog 80](https://camo.githubusercontent.com/844212e173c6ca52051c24468eb49e66ddb7f854da99b626950167b9695e0501/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f38302e706e67)](https://camo.githubusercontent.com/844212e173c6ca52051c24468eb49e66ddb7f854da99b626950167b9695e0501/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f646f672f6d656469756d2f38302e706e67)

### Cat artworks

[](#cat-artworks)

[![Cat 1](https://camo.githubusercontent.com/947ec637d44b963c39a5d0648071d49dc9b9b2fe593561c80fa66264acbac12d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f312e706e67)](https://camo.githubusercontent.com/947ec637d44b963c39a5d0648071d49dc9b9b2fe593561c80fa66264acbac12d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f312e706e67)[![Cat 2](https://camo.githubusercontent.com/b0861b1104d8af8bf5932d715b735fdb0143876314daf601f60585a58f3ee047/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f322e706e67)](https://camo.githubusercontent.com/b0861b1104d8af8bf5932d715b735fdb0143876314daf601f60585a58f3ee047/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f322e706e67)[![Cat 3](https://camo.githubusercontent.com/2623f54b21531a6ea9976df60a99a885ac61833c4a17ac53318e435aadf3d941/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f332e706e67)](https://camo.githubusercontent.com/2623f54b21531a6ea9976df60a99a885ac61833c4a17ac53318e435aadf3d941/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f332e706e67)[![Cat 4](https://camo.githubusercontent.com/bb979f4aaf83c2fe3bfb04c41a71ea0f485beb55753cc1ec3a3e4c023aa1d783/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f342e706e67)](https://camo.githubusercontent.com/bb979f4aaf83c2fe3bfb04c41a71ea0f485beb55753cc1ec3a3e4c023aa1d783/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f342e706e67)[![Cat 5](https://camo.githubusercontent.com/586bb0e79def897eae5979111e9fe881e57cfb1e298327589c559814259b333f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f352e706e67)](https://camo.githubusercontent.com/586bb0e79def897eae5979111e9fe881e57cfb1e298327589c559814259b333f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f352e706e67)[![Cat 6](https://camo.githubusercontent.com/86b40c1ecbb504f6840c92ae5379e6d229d491504a97b1b8517763357a8edea0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f362e706e67)](https://camo.githubusercontent.com/86b40c1ecbb504f6840c92ae5379e6d229d491504a97b1b8517763357a8edea0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f362e706e67)[![Cat 7](https://camo.githubusercontent.com/3ede2cfb0b83c404e9a86817a7af475a214a6f9195a798d59e729424b470432c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f372e706e67)](https://camo.githubusercontent.com/3ede2cfb0b83c404e9a86817a7af475a214a6f9195a798d59e729424b470432c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f372e706e67)[![Cat 8](https://camo.githubusercontent.com/c34097a8a7ef6aab94cfb01282f8ab920c01b0d8325a7eeb1f11bc64fd61c03d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f382e706e67)](https://camo.githubusercontent.com/c34097a8a7ef6aab94cfb01282f8ab920c01b0d8325a7eeb1f11bc64fd61c03d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f382e706e67)[![Cat 9](https://camo.githubusercontent.com/2e5b6c663bfa22ae02ea727efc23d851d9f2e0d138c0e8411d138c6e448c5032/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f392e706e67)](https://camo.githubusercontent.com/2e5b6c663bfa22ae02ea727efc23d851d9f2e0d138c0e8411d138c6e448c5032/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f392e706e67)[![Cat 10](https://camo.githubusercontent.com/7b3676a92f069fc08211c94ae418e111f34f06b54ef57ff950da219b0488a2fe/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31302e706e67)](https://camo.githubusercontent.com/7b3676a92f069fc08211c94ae418e111f34f06b54ef57ff950da219b0488a2fe/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31302e706e67)[![Cat 11](https://camo.githubusercontent.com/9c076b68f529013ecfb7d75f2b804449aad024970417eed7c597eead86c6850d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31312e706e67)](https://camo.githubusercontent.com/9c076b68f529013ecfb7d75f2b804449aad024970417eed7c597eead86c6850d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31312e706e67)[![Cat 12](https://camo.githubusercontent.com/582360978c00ce39d0efe9c6e15ffebf2e8d80b25176942b85d6127957362e1f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31322e706e67)](https://camo.githubusercontent.com/582360978c00ce39d0efe9c6e15ffebf2e8d80b25176942b85d6127957362e1f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31322e706e67)[![Cat 13](https://camo.githubusercontent.com/c8fff352298f81a677938b3dc808a47f50e1d399ad3004433e4922466f505e68/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31332e706e67)](https://camo.githubusercontent.com/c8fff352298f81a677938b3dc808a47f50e1d399ad3004433e4922466f505e68/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31332e706e67)[![Cat 14](https://camo.githubusercontent.com/290727aabc8d2dd3b83ff7c7d3935cd9ed992a5e5281823d7229a493fd17ed31/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31342e706e67)](https://camo.githubusercontent.com/290727aabc8d2dd3b83ff7c7d3935cd9ed992a5e5281823d7229a493fd17ed31/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31342e706e67)[![Cat 15](https://camo.githubusercontent.com/4628c2fa35d69d5bc2132d3acde13fb1e95d49b75fa42ec529a230aba2dccbbe/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31352e706e67)](https://camo.githubusercontent.com/4628c2fa35d69d5bc2132d3acde13fb1e95d49b75fa42ec529a230aba2dccbbe/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31352e706e67)[![Cat 16](https://camo.githubusercontent.com/97c641ec941e1cb93550226933fd7eba71ddec0080134631da936289aa81a094/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31362e706e67)](https://camo.githubusercontent.com/97c641ec941e1cb93550226933fd7eba71ddec0080134631da936289aa81a094/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31362e706e67)[![Cat 17](https://camo.githubusercontent.com/861e799b534c3f1c3cc686e4505343becea6251b2fc374431457cfb03e19de5c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31372e706e67)](https://camo.githubusercontent.com/861e799b534c3f1c3cc686e4505343becea6251b2fc374431457cfb03e19de5c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31372e706e67)[![Cat 18](https://camo.githubusercontent.com/d40f83fbef3b4af702b1c80d6b3759077c41c59dd379da7f696db5359a67e72d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31382e706e67)](https://camo.githubusercontent.com/d40f83fbef3b4af702b1c80d6b3759077c41c59dd379da7f696db5359a67e72d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31382e706e67)[![Cat 19](https://camo.githubusercontent.com/dd5e5eb95ad3bf36ece44b367dc7ddbc3cbe7a0f93de5c9eb97b5a21b0506be0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31392e706e67)](https://camo.githubusercontent.com/dd5e5eb95ad3bf36ece44b367dc7ddbc3cbe7a0f93de5c9eb97b5a21b0506be0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f31392e706e67)[![Cat 20](https://camo.githubusercontent.com/45c55a6993e11dbb203d034ec43cceeae47032412849b3a2de4180c5168d0177/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32302e706e67)](https://camo.githubusercontent.com/45c55a6993e11dbb203d034ec43cceeae47032412849b3a2de4180c5168d0177/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32302e706e67)[![Cat 21](https://camo.githubusercontent.com/ad46db4fc4ce203ca3ab7ea13dc1b0a4c1b2f27030bc86000c1608bf5054970a/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32312e706e67)](https://camo.githubusercontent.com/ad46db4fc4ce203ca3ab7ea13dc1b0a4c1b2f27030bc86000c1608bf5054970a/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32312e706e67)[![Cat 22](https://camo.githubusercontent.com/77f4b17e81023e284b83b024f94a3e4966b7f1d701799b189d29572d58ae642b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32322e706e67)](https://camo.githubusercontent.com/77f4b17e81023e284b83b024f94a3e4966b7f1d701799b189d29572d58ae642b/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32322e706e67)[![Cat 23](https://camo.githubusercontent.com/8a23ba93259cee9dd4d5ce4a8163d8ac86f250cdee959fb7f8029adca020e4e0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32332e706e67)](https://camo.githubusercontent.com/8a23ba93259cee9dd4d5ce4a8163d8ac86f250cdee959fb7f8029adca020e4e0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32332e706e67)[![Cat 24](https://camo.githubusercontent.com/0b93183107196a5b000646be78ba4b5fbcc546665425fb9c9f5eb1efe3541f42/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32342e706e67)](https://camo.githubusercontent.com/0b93183107196a5b000646be78ba4b5fbcc546665425fb9c9f5eb1efe3541f42/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32342e706e67)[![Cat 25](https://camo.githubusercontent.com/42e86faf93c7a1fb5327c361a2c2b9dbc025ed649d5c3d27d64d97c448b435b6/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32352e706e67)](https://camo.githubusercontent.com/42e86faf93c7a1fb5327c361a2c2b9dbc025ed649d5c3d27d64d97c448b435b6/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32352e706e67)[![Cat 26](https://camo.githubusercontent.com/5dadbc4552a62b5901d40889351b8185216cc4d96385e443709313ff4ea5985f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32362e706e67)](https://camo.githubusercontent.com/5dadbc4552a62b5901d40889351b8185216cc4d96385e443709313ff4ea5985f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32362e706e67)[![Cat 27](https://camo.githubusercontent.com/8d0302bf55ff0f63cdb512bcc058aa34ffefb8d31d94f9f9bd4468eb7faed6f9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32372e706e67)](https://camo.githubusercontent.com/8d0302bf55ff0f63cdb512bcc058aa34ffefb8d31d94f9f9bd4468eb7faed6f9/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32372e706e67)[![Cat 28](https://camo.githubusercontent.com/8c56ccebf3388869a3319b00fb2946f7b7965826e222c4ae569f7247a0add887/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32382e706e67)](https://camo.githubusercontent.com/8c56ccebf3388869a3319b00fb2946f7b7965826e222c4ae569f7247a0add887/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32382e706e67)[![Cat 29](https://camo.githubusercontent.com/9feff9e298eb8ece1a454310ca106bd0886a75d5b8297e3dbe9a5eb77e58728c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32392e706e67)](https://camo.githubusercontent.com/9feff9e298eb8ece1a454310ca106bd0886a75d5b8297e3dbe9a5eb77e58728c/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f32392e706e67)[![Cat 30](https://camo.githubusercontent.com/f2cc91752933432aa44d285d4a063f239beb711c293be5a2e751bf25e0eb78d0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33302e706e67)](https://camo.githubusercontent.com/f2cc91752933432aa44d285d4a063f239beb711c293be5a2e751bf25e0eb78d0/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33302e706e67)[![Cat 31](https://camo.githubusercontent.com/c8253ec35e139ada315653df2c251b254d77bc8114a257382844c41273bf4b52/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33312e706e67)](https://camo.githubusercontent.com/c8253ec35e139ada315653df2c251b254d77bc8114a257382844c41273bf4b52/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33312e706e67)[![Cat 32](https://camo.githubusercontent.com/83521677504815e1a5632e13c351cd92a2ee42c28455e69726ecc2f0b9df2d8d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33322e706e67)](https://camo.githubusercontent.com/83521677504815e1a5632e13c351cd92a2ee42c28455e69726ecc2f0b9df2d8d/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33322e706e67)[![Cat 33](https://camo.githubusercontent.com/146a60c82708d3885ba303973de29b2f5466244285fd029b8a9266f649189abd/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33332e706e67)](https://camo.githubusercontent.com/146a60c82708d3885ba303973de29b2f5466244285fd029b8a9266f649189abd/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33332e706e67)[![Cat 34](https://camo.githubusercontent.com/8839535e8228167ed1f4a635579a4b75fe46ae2b7df45f324f63b0fadec18b83/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33342e706e67)](https://camo.githubusercontent.com/8839535e8228167ed1f4a635579a4b75fe46ae2b7df45f324f63b0fadec18b83/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33342e706e67)[![Cat 35](https://camo.githubusercontent.com/c71c0d7d4ed9cec9cd3babac441b1cfa82256a5292e2a93db2c5afdbccb4cb3f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33352e706e67)](https://camo.githubusercontent.com/c71c0d7d4ed9cec9cd3babac441b1cfa82256a5292e2a93db2c5afdbccb4cb3f/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33352e706e67)[![Cat 36](https://camo.githubusercontent.com/c9656d7495eac7aa57e15c19c8e09e49aacf51438b1f4cc644384c31b9cec321/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33362e706e67)](https://camo.githubusercontent.com/c9656d7495eac7aa57e15c19c8e09e49aacf51438b1f4cc644384c31b9cec321/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33362e706e67)[![Cat 37](https://camo.githubusercontent.com/9fe5ec0bf9110d4a11cb9c9c0c985f525201461ac32c53834d4dc4014e0435fc/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33372e706e67)](https://camo.githubusercontent.com/9fe5ec0bf9110d4a11cb9c9c0c985f525201461ac32c53834d4dc4014e0435fc/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33372e706e67)[![Cat 38](https://camo.githubusercontent.com/225459d99ba539d0439d8d468d39054599c972b88410a9b4fe3117314f7b9829/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33382e706e67)](https://camo.githubusercontent.com/225459d99ba539d0439d8d468d39054599c972b88410a9b4fe3117314f7b9829/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33382e706e67)[![Cat 39](https://camo.githubusercontent.com/21bf4758852d466473897446973fdd35a4b5b96fcce98c52da4e8a6e0ec082a5/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33392e706e67)](https://camo.githubusercontent.com/21bf4758852d466473897446973fdd35a4b5b96fcce98c52da4e8a6e0ec082a5/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f33392e706e67)[![Cat 40](https://camo.githubusercontent.com/82c81e6b0f1bfda804f26354728b2a7290f9d984bab3a15f99ea5e6a69f5ca88/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f34302e706e67)](https://camo.githubusercontent.com/82c81e6b0f1bfda804f26354728b2a7290f9d984bab3a15f99ea5e6a69f5ca88/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f34302e706e67)[![Cat 41](https://camo.githubusercontent.com/51df1736ec6b54cd157b7fb406550fa4d209ead4b57e45f2bd08a6e416e626f4/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f34312e706e67)](https://camo.githubusercontent.com/51df1736ec6b54cd157b7fb406550fa4d209ead4b57e45f2bd08a6e416e626f4/68747470733a2f2f636162696e65742d706574732e70616c676c652e636f6d2f617661746172732f6361742f6d656469756d2f34312e706e67)

Formatting
----------

[](#formatting)

```
composer lint
# Modify all files to comply with the PSR-12.

composer inspect
# Inspect all files to ensure compliance with PSR-12.
```

Test
----

[](#test)

```
composer test
```

License
-------

[](#license)

The View Transformer project is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

[Artworks](https://github.com/cable8mm/cabinet-pets) © 2020 by [Samgu Lee](https://github.com/cable8mm) is licensed under CC BY-NC-ND 4.0. To view a copy of this license, visit

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance69

Regular maintenance activity

Popularity13

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~145 days

Recently: every ~92 days

Total

13

Last Release

525d ago

Major Versions

v1.3.2 → v2.0.02024-03-07

v2.2.0 → v3.0.02025-03-11

PHP version history (4 changes)v1.0PHP &gt;=7.2

v1.3.1PHP &gt;=7.2||^8.0

v1.3.2PHP &gt;=7.2|^8.0

v2.0.0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/c910c874a0263a18f9f976273054cd45faa3ffbcba7891992f4ab52d0656dd93?d=identicon)[Sam Lee](/maintainers/Sam%20Lee)

---

Top Contributors

[![cable8mm](https://avatars.githubusercontent.com/u/2672043?v=4)](https://github.com/cable8mm "cable8mm (47 commits)")

---

Tags

apiavatarcatsdogsimagephpphpsdkfreeavatarcatdog

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/esc-company-view-transformer/health.svg)

```
[![Health](https://phpackages.com/badges/esc-company-view-transformer/health.svg)](https://phpackages.com/packages/esc-company-view-transformer)
```

###  Alternatives

[jstolpe/instagram-graph-api-php-sdk

Instagram Graph API PHP SDK

138114.7k2](/packages/jstolpe-instagram-graph-api-php-sdk)[octw/aramex

A Library to integrate with Aramex APIs

3028.9k](/packages/octw-aramex)[wxm/pdd-sdk

拼多多 SDK 封装, 调用简单、语义化增强。支持 Laravel/Lumen。

155.0k](/packages/wxm-pdd-sdk)[clever/clever-php

231.6k](/packages/clever-clever-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
