first copies from portal
43
app/Console/Commands/Einundzwanzig/SyncPlebs.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Einundzwanzig;
|
||||
|
||||
use App\Models\EinundzwanzigPleb;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use swentel\nostr\Key\Key;
|
||||
|
||||
class SyncPlebs extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'sync:plebs';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Command description';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$response = Http::get('https://portal.einundzwanzig.space/api/nostrplebs');
|
||||
|
||||
$plebs = $response->json();
|
||||
|
||||
foreach ($plebs as $pleb) {
|
||||
$npub = str($pleb)->trim();
|
||||
EinundzwanzigPleb::updateOrCreate(
|
||||
['npub' => $npub],
|
||||
['pubkey' => (new Key())->convertToHex($npub)]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
114
app/Console/Commands/Nostr/FetchEvents.php
Normal file
@@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Nostr;
|
||||
|
||||
use App\Models\Event;
|
||||
use App\Traits\NostrEventRendererTrait;
|
||||
use Illuminate\Console\Command;
|
||||
use swentel\nostr\Filter\Filter;
|
||||
use swentel\nostr\Message\RequestMessage;
|
||||
use swentel\nostr\Relay\Relay;
|
||||
use swentel\nostr\Relay\RelaySet;
|
||||
use swentel\nostr\Request\Request;
|
||||
use swentel\nostr\Subscription\Subscription;
|
||||
|
||||
class FetchEvents extends Command
|
||||
{
|
||||
use NostrEventRendererTrait;
|
||||
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'fetch:events';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Command description';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$plebs = \App\Models\EinundzwanzigPleb::query()
|
||||
->get();
|
||||
|
||||
$subscription = new Subscription();
|
||||
$subscriptionId = $subscription->setId();
|
||||
|
||||
$filter1 = new Filter();
|
||||
$filter1->setKinds([1]); // You can add multiple kind numbers
|
||||
$filter1->setAuthors($plebs->pluck('pubkey')->toArray()); // You can add multiple authors
|
||||
$filter1->setLimit(25); // Limit to fetch only a maximum of 25 events
|
||||
$filters = [$filter1]; // You can add multiple filters.
|
||||
|
||||
$requestMessage = new RequestMessage($subscriptionId, $filters);
|
||||
|
||||
$relays = [
|
||||
new Relay('wss://nostr.einundzwanzig.space'),
|
||||
new Relay('wss://nostr.wine'),
|
||||
new Relay('wss://nos.lol'),
|
||||
];
|
||||
$relaySet = new RelaySet();
|
||||
$relaySet->setRelays($relays);
|
||||
|
||||
$request = new Request($relaySet, $requestMessage);
|
||||
$response = $request->send();
|
||||
|
||||
$uniqueEvents = [];
|
||||
|
||||
foreach ($response as $relay => $events) {
|
||||
foreach ($events as $event) {
|
||||
if (!isset($uniqueEvents[$event->event->id])) {
|
||||
$uniqueEvents[$event->event->id] = $event;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($uniqueEvents as $id => $uniqueEvent) {
|
||||
$type = $this->isReplyOrRoot($uniqueEvent->event);
|
||||
$parentEventId = $this->getParentEventId($uniqueEvent->event);
|
||||
|
||||
$event = Event::query()->updateOrCreate(
|
||||
['event_id' => $id],
|
||||
[
|
||||
'pubkey' => $uniqueEvent->event->pubkey,
|
||||
'parent_event_id' => $parentEventId,
|
||||
'json' => json_encode($uniqueEvent->event, JSON_THROW_ON_ERROR),
|
||||
'type' => $type,
|
||||
]
|
||||
);
|
||||
|
||||
$this->renderContentToHtml($event);
|
||||
}
|
||||
}
|
||||
|
||||
private function getParentEventId($event)
|
||||
{
|
||||
foreach ($event->tags as $tag) {
|
||||
if ($tag[0] === 'e') {
|
||||
if ((isset($tag[2]) && $tag[2] === '') || (isset($tag[3]) && $tag[3] === 'reply')) {
|
||||
return $tag[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function isReplyOrRoot($event)
|
||||
{
|
||||
foreach ($event->tags as $tag) {
|
||||
if ($tag[0] === 'e') {
|
||||
if ((isset($tag[3]) && $tag[3] === 'reply') || (!isset($tag[3]) && isset($tag[2]) && $tag[2] === '')) {
|
||||
return 'reply';
|
||||
}
|
||||
}
|
||||
}
|
||||
return 'root';
|
||||
}
|
||||
}
|
||||
46
app/Console/Commands/Nostr/RenderAllEvents.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Nostr;
|
||||
|
||||
use App\Traits\NostrEventRendererTrait;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Broadcast;
|
||||
|
||||
class RenderAllEvents extends Command
|
||||
{
|
||||
use NostrEventRendererTrait;
|
||||
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'render';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Command description';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$events = \App\Models\Event::query()
|
||||
->get();
|
||||
|
||||
foreach ($events as $event) {
|
||||
$this->renderContentToHtml($event);
|
||||
}
|
||||
|
||||
Broadcast::on('events')
|
||||
->as('newEvents')
|
||||
->with([
|
||||
'test' => 'test',
|
||||
])
|
||||
->sendNow();
|
||||
}
|
||||
}
|
||||
38
app/Console/Commands/Nostr/SyncProfiles.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Nostr;
|
||||
|
||||
use App\Models\EinundzwanzigPleb;
|
||||
use App\Traits\NostrFetcherTrait;
|
||||
use Illuminate\Console\Command;
|
||||
use swentel\nostr\Subscription\Subscription;
|
||||
|
||||
class SyncProfiles extends Command
|
||||
{
|
||||
use NostrFetcherTrait;
|
||||
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'sync:profiles';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Command description';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$plebs = EinundzwanzigPleb::query()
|
||||
->whereDoesntHave('profile')
|
||||
->get();
|
||||
$this->fetchProfile($plebs->pluck('npub')->toArray());
|
||||
}
|
||||
}
|
||||
97
app/Livewire/MeetupTable.php
Normal file
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Models\Meetup;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Carbon;
|
||||
use PowerComponents\LivewirePowerGrid\Button;
|
||||
use PowerComponents\LivewirePowerGrid\Column;
|
||||
use PowerComponents\LivewirePowerGrid\Exportable;
|
||||
use PowerComponents\LivewirePowerGrid\Facades\Filter;
|
||||
use PowerComponents\LivewirePowerGrid\Facades\Rule;
|
||||
use PowerComponents\LivewirePowerGrid\Footer;
|
||||
use PowerComponents\LivewirePowerGrid\Header;
|
||||
use PowerComponents\LivewirePowerGrid\Lazy;
|
||||
use PowerComponents\LivewirePowerGrid\PowerGrid;
|
||||
use PowerComponents\LivewirePowerGrid\PowerGridFields;
|
||||
use PowerComponents\LivewirePowerGrid\PowerGridComponent;
|
||||
|
||||
final class MeetupTable extends PowerGridComponent
|
||||
{
|
||||
public function setUp(): array
|
||||
{
|
||||
$this->showCheckBox();
|
||||
|
||||
return [
|
||||
Exportable::make('export')
|
||||
->striped()
|
||||
->type(Exportable::TYPE_XLS, Exportable::TYPE_CSV),
|
||||
Footer::make()
|
||||
->showPerPage(perPage: 25)
|
||||
->showRecordCount(),
|
||||
];
|
||||
}
|
||||
|
||||
public function datasource(): Builder
|
||||
{
|
||||
return Meetup::query();
|
||||
}
|
||||
|
||||
public function fields(): PowerGridFields
|
||||
{
|
||||
return PowerGrid::fields()
|
||||
->add('name')
|
||||
->add('name_lower', fn (Meetup $model) => strtolower(e($model->name)))
|
||||
->add('created_at')
|
||||
->add('created_at_formatted', fn (Meetup $model) => Carbon::parse($model->created_at)->format('d/m/Y H:i:s'));
|
||||
}
|
||||
|
||||
public function columns(): array
|
||||
{
|
||||
return [
|
||||
Column::make('Name', 'name')
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
Column::action('Action')
|
||||
];
|
||||
}
|
||||
|
||||
public function filters(): array
|
||||
{
|
||||
return [
|
||||
Filter::inputText('name'),
|
||||
Filter::datepicker('created_at_formatted', 'created_at'),
|
||||
];
|
||||
}
|
||||
|
||||
#[\Livewire\Attributes\On('edit')]
|
||||
public function edit($rowId): void
|
||||
{
|
||||
$this->js('alert('.$rowId.')');
|
||||
}
|
||||
|
||||
public function actions(Meetup $row): array
|
||||
{
|
||||
return [
|
||||
Button::add('edit')
|
||||
->slot('Edit: '.$row->id)
|
||||
->id()
|
||||
->class('pg-btn-white dark:ring-pg-primary-600 dark:border-pg-primary-600 dark:hover:bg-pg-primary-700 dark:ring-offset-pg-primary-800 dark:text-pg-primary-300 dark:bg-pg-primary-700')
|
||||
->dispatch('edit', ['rowId' => $row->id])
|
||||
];
|
||||
}
|
||||
|
||||
/*
|
||||
public function actionRules(Meetup $row): array
|
||||
{
|
||||
return [
|
||||
// Hide button edit for ID 1
|
||||
Rule::button('edit')
|
||||
->when(fn($row) => $row->id === 1)
|
||||
->hide(),
|
||||
];
|
||||
}
|
||||
*/
|
||||
}
|
||||
32
app/Models/Category.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
|
||||
class Category extends Model
|
||||
{
|
||||
protected $connection = 'einundzwanzig';
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
];
|
||||
|
||||
public function courses(): BelongsToMany
|
||||
{
|
||||
return $this->belongsToMany(Course::class);
|
||||
}
|
||||
}
|
||||
83
app/Models/City.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Akuechler\Geoly;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Support\Facades\Cookie;
|
||||
use Spatie\Sluggable\HasSlug;
|
||||
use Spatie\Sluggable\SlugOptions;
|
||||
|
||||
class City extends Model
|
||||
{
|
||||
use HasSlug;
|
||||
use Geoly;
|
||||
|
||||
protected $connection = 'einundzwanzig';
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
'country_id' => 'integer',
|
||||
'osm_relation' => 'json',
|
||||
'simplified_geojson' => 'json',
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($model) {
|
||||
if (! $model->created_by) {
|
||||
$model->created_by = auth()->id();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the options for generating the slug.
|
||||
*/
|
||||
public function getSlugOptions(): SlugOptions
|
||||
{
|
||||
return SlugOptions::create()
|
||||
->generateSlugsFrom(['country.code', 'name'])
|
||||
->saveSlugsTo('slug')
|
||||
->usingLanguage(Cookie::get('lang', config('app.locale')));
|
||||
}
|
||||
|
||||
public function createdBy(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
|
||||
public function country(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Country::class);
|
||||
}
|
||||
|
||||
public function venues(): HasMany
|
||||
{
|
||||
return $this->hasMany(Venue::class);
|
||||
}
|
||||
|
||||
public function courseEvents()
|
||||
{
|
||||
return $this->hasManyThrough(CourseEvent::class, Venue::class);
|
||||
}
|
||||
|
||||
public function meetups()
|
||||
{
|
||||
return $this->hasMany(Meetup::class);
|
||||
}
|
||||
}
|
||||
33
app/Models/Country.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
class Country extends Model
|
||||
{
|
||||
protected $connection = 'einundzwanzig';
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
'language_codes' => 'array',
|
||||
];
|
||||
|
||||
public function cities(): HasMany
|
||||
{
|
||||
return $this->hasMany(City::class);
|
||||
}
|
||||
}
|
||||
89
app/Models/Course.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Spatie\Image\Enums\Fit;
|
||||
use Spatie\Image\Manipulations;
|
||||
use Spatie\MediaLibrary\HasMedia;
|
||||
use Spatie\MediaLibrary\InteractsWithMedia;
|
||||
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
||||
use Spatie\Tags\HasTags;
|
||||
|
||||
class Course extends Model implements HasMedia
|
||||
{
|
||||
use InteractsWithMedia;
|
||||
use HasTags;
|
||||
|
||||
protected $connection = 'einundzwanzig';
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
'lecturer_id' => 'integer',
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($model) {
|
||||
if (! $model->created_by) {
|
||||
$model->created_by = auth()->id();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function registerMediaConversions(Media $media = null): void
|
||||
{
|
||||
$this
|
||||
->addMediaConversion('preview')
|
||||
->fit(Fit::Crop, 300, 300)
|
||||
->nonQueued();
|
||||
$this->addMediaConversion('thumb')
|
||||
->fit(Fit::Crop, 130, 130)
|
||||
->width(130)
|
||||
->height(130);
|
||||
}
|
||||
|
||||
public function registerMediaCollections(): void
|
||||
{
|
||||
$this->addMediaCollection('logo')
|
||||
->singleFile()
|
||||
->useFallbackUrl(asset('img/einundzwanzig.png'));
|
||||
$this->addMediaCollection('images')
|
||||
->useFallbackUrl(asset('img/einundzwanzig.png'));
|
||||
}
|
||||
|
||||
public function createdBy(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
|
||||
public function categories(): BelongsToMany
|
||||
{
|
||||
return $this->belongsToMany(Category::class);
|
||||
}
|
||||
|
||||
public function lecturer(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Lecturer::class);
|
||||
}
|
||||
|
||||
public function courseEvents(): HasMany
|
||||
{
|
||||
return $this->hasMany(CourseEvent::class);
|
||||
}
|
||||
}
|
||||
56
app/Models/CourseEvent.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
class CourseEvent extends Model
|
||||
{
|
||||
protected $connection = 'einundzwanzig';
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
'course_id' => 'integer',
|
||||
'venue_id' => 'integer',
|
||||
'from' => 'datetime',
|
||||
'to' => 'datetime',
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($model) {
|
||||
if (! $model->created_by) {
|
||||
$model->created_by = auth()->id();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function createdBy(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
|
||||
public function course(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Course::class);
|
||||
}
|
||||
|
||||
public function venue(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Venue::class);
|
||||
}
|
||||
}
|
||||
17
app/Models/EinundzwanzigPleb.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class EinundzwanzigPleb extends Model
|
||||
{
|
||||
|
||||
protected $guarded = [];
|
||||
|
||||
public function profile()
|
||||
{
|
||||
return $this->hasOne(Profile::class, 'pubkey', 'pubkey');
|
||||
}
|
||||
|
||||
}
|
||||
17
app/Models/Event.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Event extends Model
|
||||
{
|
||||
|
||||
protected $guarded = [];
|
||||
|
||||
public function renderedEvent()
|
||||
{
|
||||
return $this->hasOne(RenderedEvent::class, 'event_id', 'event_id');
|
||||
}
|
||||
|
||||
}
|
||||
99
app/Models/Lecturer.php
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
|
||||
use Illuminate\Support\Facades\Cookie;
|
||||
use Spatie\Image\Enums\Fit;
|
||||
use Spatie\MediaLibrary\HasMedia;
|
||||
use Spatie\MediaLibrary\InteractsWithMedia;
|
||||
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
||||
use Spatie\Sluggable\HasSlug;
|
||||
use Spatie\Sluggable\SlugOptions;
|
||||
|
||||
class Lecturer extends Model implements HasMedia
|
||||
{
|
||||
use HasSlug;
|
||||
use InteractsWithMedia;
|
||||
|
||||
protected $connection = 'einundzwanzig';
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
'active' => 'boolean',
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($model) {
|
||||
if (!$model->created_by) {
|
||||
$model->created_by = auth()->id();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function registerMediaConversions(Media $media = null): void
|
||||
{
|
||||
$this
|
||||
->addMediaConversion('preview')
|
||||
->fit(Fit::Crop, 300, 300)
|
||||
->nonQueued();
|
||||
$this->addMediaConversion('thumb')
|
||||
->fit(Fit::Crop, 130, 130)
|
||||
->width(130)
|
||||
->height(130);
|
||||
}
|
||||
|
||||
public function registerMediaCollections(): void
|
||||
{
|
||||
$this->addMediaCollection('avatar')
|
||||
->singleFile()
|
||||
->useFallbackUrl(asset('img/einundzwanzig.png'));
|
||||
$this->addMediaCollection('images')
|
||||
->useFallbackUrl(asset('img/einundzwanzig.png'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the options for generating the slug.
|
||||
*/
|
||||
public function getSlugOptions(): SlugOptions
|
||||
{
|
||||
return SlugOptions::create()
|
||||
->generateSlugsFrom(['name'])
|
||||
->saveSlugsTo('slug')
|
||||
->usingLanguage(Cookie::get('lang', config('app.locale')));
|
||||
}
|
||||
|
||||
public function createdBy(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
|
||||
public function courses(): HasMany
|
||||
{
|
||||
return $this->hasMany(Course::class);
|
||||
}
|
||||
|
||||
public function coursesEvents(): HasManyThrough
|
||||
{
|
||||
return $this->hasManyThrough(CourseEvent::class, Course::class);
|
||||
}
|
||||
|
||||
public function libraryItems(): HasMany
|
||||
{
|
||||
return $this->hasMany(LibraryItem::class);
|
||||
}
|
||||
}
|
||||
136
app/Models/Meetup.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Support\Facades\Cookie;
|
||||
use Spatie\Image\Enums\Fit;
|
||||
use Spatie\MediaLibrary\HasMedia;
|
||||
use Spatie\MediaLibrary\InteractsWithMedia;
|
||||
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
||||
use Spatie\Sluggable\HasSlug;
|
||||
use Spatie\Sluggable\SlugOptions;
|
||||
|
||||
class Meetup extends Model implements HasMedia
|
||||
{
|
||||
use InteractsWithMedia;
|
||||
use HasSlug;
|
||||
|
||||
protected $connection = 'einundzwanzig';
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
'city_id' => 'integer',
|
||||
'github_data' => 'json',
|
||||
'simplified_geojson' => 'array',
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($model) {
|
||||
if (!$model->created_by) {
|
||||
$model->created_by = auth()->id();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function getSlugOptions(): SlugOptions
|
||||
{
|
||||
return SlugOptions::create()
|
||||
->generateSlugsFrom(['name'])
|
||||
->saveSlugsTo('slug')
|
||||
->usingLanguage(Cookie::get('lang', config('app.locale')));
|
||||
}
|
||||
|
||||
public function registerMediaConversions(Media $media = null): void
|
||||
{
|
||||
$this
|
||||
->addMediaConversion('preview')
|
||||
->fit(Fit::Crop, 300, 300)
|
||||
->nonQueued();
|
||||
$this->addMediaConversion('thumb')
|
||||
->fit(Fit::Crop, 130, 130)
|
||||
->width(130)
|
||||
->height(130);
|
||||
}
|
||||
|
||||
public function registerMediaCollections(): void
|
||||
{
|
||||
$this->addMediaCollection('logo')
|
||||
->singleFile()
|
||||
->useFallbackUrl(asset('img/einundzwanzig.png'));
|
||||
}
|
||||
|
||||
public function createdBy(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
|
||||
public function users()
|
||||
{
|
||||
return $this->belongsToMany(User::class);
|
||||
}
|
||||
|
||||
public function city(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(City::class);
|
||||
}
|
||||
|
||||
protected function logoSquare(): Attribute
|
||||
{
|
||||
$media = $this->getFirstMedia('logo');
|
||||
if ($media) {
|
||||
$path = str($media->getPath())->after('storage/app/');
|
||||
} else {
|
||||
$path = 'img/einundzwanzig.png';
|
||||
}
|
||||
|
||||
return Attribute::make(
|
||||
get: fn() => url()->route('img',
|
||||
[
|
||||
'path' => $path,
|
||||
'w' => 900,
|
||||
'h' => 900,
|
||||
'fit' => 'crop',
|
||||
'fm' => 'webp',
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
protected function nextEvent(): Attribute
|
||||
{
|
||||
$nextEvent = $this->meetupEvents()->where('start', '>=', now())->orderBy('start')->first();
|
||||
|
||||
return Attribute::make(
|
||||
get: fn() => $nextEvent ? [
|
||||
'start' => $nextEvent->start->toDateTimeString(),
|
||||
'portalLink' => url()->route('meetup.event.landing', ['country' => $this->city->country, 'meetupEvent' => $nextEvent]),
|
||||
'location' => $nextEvent->location,
|
||||
'description' => $nextEvent->description,
|
||||
'link' => $nextEvent->link,
|
||||
'attendees' => count($nextEvent->attendees ?? []),
|
||||
'nostr_note' => str($nextEvent->nostr_status)->after('Sent event ')->before(' to '),
|
||||
] : null,
|
||||
);
|
||||
}
|
||||
|
||||
public function meetupEvents(): HasMany
|
||||
{
|
||||
return $this->hasMany(MeetupEvent::class);
|
||||
}
|
||||
}
|
||||
50
app/Models/MeetupEvent.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
class MeetupEvent extends Model
|
||||
{
|
||||
protected $connection = 'einundzwanzig';
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
'meetup_id' => 'integer',
|
||||
'start' => 'datetime',
|
||||
'attendees' => 'array',
|
||||
'might_attendees' => 'array',
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($model) {
|
||||
if (! $model->created_by) {
|
||||
$model->created_by = auth()->id();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function createdBy(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
|
||||
public function meetup(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Meetup::class);
|
||||
}
|
||||
}
|
||||
12
app/Models/Profile.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Profile extends Model
|
||||
{
|
||||
|
||||
protected $guarded = [];
|
||||
|
||||
}
|
||||
15
app/Models/RenderedEvent.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class RenderedEvent extends Model
|
||||
{
|
||||
protected $guarded = [];
|
||||
|
||||
public function event()
|
||||
{
|
||||
return $this->belongsTo(Event::class, 'event_id', 'event_id');
|
||||
}
|
||||
}
|
||||
104
app/Models/Venue.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Support\Facades\Cookie;
|
||||
use Spatie\Image\Enums\Fit;
|
||||
use Spatie\MediaLibrary\HasMedia;
|
||||
use Spatie\MediaLibrary\InteractsWithMedia;
|
||||
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
||||
use Spatie\Sluggable\HasSlug;
|
||||
use Spatie\Sluggable\SlugOptions;
|
||||
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
|
||||
|
||||
class Venue extends Model implements HasMedia
|
||||
{
|
||||
use HasSlug;
|
||||
use HasRelationships;
|
||||
use InteractsWithMedia;
|
||||
|
||||
protected $connection = 'einundzwanzig';
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
'city_id' => 'integer',
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($model) {
|
||||
if (! $model->created_by) {
|
||||
$model->created_by = auth()->id();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function registerMediaConversions(Media $media = null): void
|
||||
{
|
||||
$this
|
||||
->addMediaConversion('preview')
|
||||
->fit(Fit::Crop, 300, 300)
|
||||
->nonQueued();
|
||||
$this->addMediaConversion('thumb')
|
||||
->fit(Fit::Crop, 130, 130)
|
||||
->width(130)
|
||||
->height(130);
|
||||
}
|
||||
|
||||
public function registerMediaCollections(): void
|
||||
{
|
||||
$this->addMediaCollection('images')
|
||||
->useFallbackUrl(asset('img/einundzwanzig.png'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the options for generating the slug.
|
||||
*/
|
||||
public function getSlugOptions(): SlugOptions
|
||||
{
|
||||
return SlugOptions::create()
|
||||
->generateSlugsFrom(['city.slug', 'name'])
|
||||
->saveSlugsTo('slug')
|
||||
->usingLanguage(Cookie::get('lang', config('app.locale')));
|
||||
}
|
||||
|
||||
public function createdBy(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
|
||||
public function city(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(City::class);
|
||||
}
|
||||
|
||||
public function lecturers()
|
||||
{
|
||||
return $this->hasManyDeepFromRelations($this->courses(), (new Course())->lecturer());
|
||||
}
|
||||
|
||||
public function courses()
|
||||
{
|
||||
return $this->hasManyDeepFromRelations($this->events(), (new CourseEvent())->course());
|
||||
}
|
||||
|
||||
public function courseEvents(): HasMany
|
||||
{
|
||||
return $this->hasMany(CourseEvent::class);
|
||||
}
|
||||
}
|
||||
29
app/Providers/FolioServiceProvider.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Laravel\Folio\Folio;
|
||||
|
||||
class FolioServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register services.
|
||||
*/
|
||||
public function register(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap services.
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
Folio::path(resource_path('views/pages'))->middleware([
|
||||
'*' => [
|
||||
//
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
28
app/Providers/VoltServiceProvider.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Livewire\Volt\Volt;
|
||||
|
||||
class VoltServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register services.
|
||||
*/
|
||||
public function register(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap services.
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
Volt::mount([
|
||||
config('livewire.view_path', resource_path('views/livewire')),
|
||||
resource_path('views/pages'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
95
app/Traits/NostrEventRendererTrait.php
Normal file
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use App\Models\Event;
|
||||
use App\Models\Profile;
|
||||
use App\Models\RenderedEvent;
|
||||
use swentel\nostr\Key\Key;
|
||||
|
||||
trait NostrEventRendererTrait
|
||||
{
|
||||
public function renderContentToHtml(Event $event): void
|
||||
{
|
||||
$content = json_decode($event->json, true, 512, JSON_THROW_ON_ERROR)['content'];
|
||||
$profile = Profile::query()->where('pubkey', $event->pubkey)->first();
|
||||
if ($profile && $profile->name) {
|
||||
$name = $profile->name;
|
||||
} elseif ($profile && !empty($profile->display_name)) {
|
||||
$name = $profile->display_name;
|
||||
} else {
|
||||
$name = 'Anonymous';
|
||||
}
|
||||
|
||||
$content = $this->nprofile1($content);
|
||||
$content = $this->images($content);
|
||||
$content = $this->youtube($content);
|
||||
$content = $this->npub1($content);
|
||||
|
||||
RenderedEvent::query()->updateOrCreate([
|
||||
'event_id' => $event->event_id,
|
||||
], [
|
||||
'html' => $content,
|
||||
'profile_image' => $profile && $profile->picture !== '' ? $profile->picture : 'https://robohash.org/' . $profile->pubkey,
|
||||
'profile_name' => $name,
|
||||
]);
|
||||
}
|
||||
|
||||
protected function images($content): string
|
||||
{
|
||||
// we need to find all image urls by looking for the extension
|
||||
// and replace them with the img tag
|
||||
$pattern = '/(https?:\/\/.*\.(?:png|jpg|jpeg|gif|webp))/';
|
||||
$replacement = '<div class="w-96 group aspect-h-7 aspect-w-10"><img class="pointer-events-none object-cover" src="$1" alt="image" /></div>';
|
||||
|
||||
return preg_replace($pattern, $replacement, $content);
|
||||
}
|
||||
|
||||
protected function npub1($content): string
|
||||
{
|
||||
// Pattern to match nostr:npub1 elements, optionally followed by a non-alphanumeric character
|
||||
$pattern = '/(nostr:npub1[a-zA-Z0-9]+)(\W?)/';
|
||||
// find all matches of the pattern
|
||||
preg_match_all($pattern, $content, $matches);
|
||||
// loop through all matches
|
||||
foreach ($matches[1] as $match) {
|
||||
$pubkey = (new Key)->convertToHex(str($match)->after('nostr:'));
|
||||
$profile = Profile::query()->where('pubkey', $pubkey)->first();
|
||||
if ($profile && $profile->name) {
|
||||
$name = $profile->name;
|
||||
} elseif ($profile && !empty($profile->display_name)) {
|
||||
$name = $profile->display_name;
|
||||
} else {
|
||||
$name = 'Anonymous';
|
||||
}
|
||||
// replace the match with the profile name
|
||||
$content = str_replace($match, $name, $content);
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
protected function nprofile1($content): string
|
||||
{
|
||||
// todo: implement this
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
protected function youtube($content): string
|
||||
{
|
||||
// Pattern to match YouTube short URLs like https://youtu.be/ddvHagjmRJY?feature=shared
|
||||
$pattern1 = '/https:\/\/youtu.be\/([a-zA-Z0-9-_]+)\??.*/';
|
||||
$replacement1 = '<iframe width="560" height="315" src="https://www.youtube.com/embed/$1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
|
||||
|
||||
// Pattern to match YouTube long URLs like https://www.youtube.com/watch?v=tiNZoDBGhdo
|
||||
$pattern2 = '/https:\/\/www.youtube.com\/watch\?v=([a-zA-Z0-9-_]+)\??.*/';
|
||||
$replacement2 = '<iframe width="560" height="315" src="https://www.youtube.com/embed/$1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
|
||||
|
||||
// Replace both patterns in the content
|
||||
$content = preg_replace($pattern1, $replacement1, $content);
|
||||
$content = preg_replace($pattern2, $replacement2, $content);
|
||||
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
68
app/Traits/NostrFetcherTrait.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use App\Models\Profile;
|
||||
use swentel\nostr\Filter\Filter;
|
||||
use swentel\nostr\Key\Key;
|
||||
use swentel\nostr\Message\RequestMessage;
|
||||
use swentel\nostr\Relay\Relay;
|
||||
use swentel\nostr\Request\Request;
|
||||
use swentel\nostr\Subscription\Subscription;
|
||||
|
||||
trait NostrFetcherTrait
|
||||
{
|
||||
|
||||
public function fetchProfile($npubs)
|
||||
{
|
||||
$hex = collect([]);
|
||||
foreach ($npubs as $item) {
|
||||
$hex->push([
|
||||
'hex' => (new Key)->convertToHex($item),
|
||||
'npub' => $item,
|
||||
]);
|
||||
}
|
||||
|
||||
$subscription = new Subscription();
|
||||
$subscriptionId = $subscription->setId();
|
||||
|
||||
$filter1 = new Filter();
|
||||
$filter1->setKinds([0]); // You can add multiple kind numbers
|
||||
$filter1->setAuthors($hex->pluck('hex')->toArray()); // You can add multiple author ids
|
||||
$filters = [$filter1]; // You can add multiple filters.
|
||||
|
||||
$requestMessage = new RequestMessage($subscriptionId, $filters);
|
||||
|
||||
$relayUrl = 'wss://relay.nostr.band/';
|
||||
$relay = new Relay($relayUrl);
|
||||
$relay->setMessage($requestMessage);
|
||||
|
||||
$request = new Request($relay, $requestMessage);
|
||||
$response = $request->send();
|
||||
|
||||
foreach ($response['wss://relay.nostr.band/'] as $item) {
|
||||
try {
|
||||
$result = json_decode($item->event->content, true, 512, JSON_THROW_ON_ERROR);
|
||||
} catch (\JsonException $e) {
|
||||
throw new \RuntimeException('Error decoding JSON: ' . $e->getMessage());
|
||||
}
|
||||
Profile::query()->updateOrCreate(
|
||||
['pubkey' => $item->event->pubkey],
|
||||
[
|
||||
'name' => $result['name'] ?? null,
|
||||
'display_name' => $result['display_name'] ?? null,
|
||||
'picture' => $result['picture'] ?? null,
|
||||
'banner' => $result['banner'] ?? null,
|
||||
'website' => $result['website'] ?? null,
|
||||
'about' => $result['about'] ?? null,
|
||||
'nip05' => $result['nip05'] ?? null,
|
||||
'lud16' => $result['lud16'] ?? null,
|
||||
'lud06' => $result['lud06'] ?? null,
|
||||
'deleted' => $result['deleted'] ?? false,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ return Application::configure(basePath: dirname(__DIR__))
|
||||
->withRouting(
|
||||
web: __DIR__.'/../routes/web.php',
|
||||
commands: __DIR__.'/../routes/console.php',
|
||||
channels: __DIR__.'/../routes/channels.php',
|
||||
health: '/up',
|
||||
)
|
||||
->withMiddleware(function (Middleware $middleware) {
|
||||
|
||||
@@ -2,4 +2,6 @@
|
||||
|
||||
return [
|
||||
App\Providers\AppServiceProvider::class,
|
||||
App\Providers\FolioServiceProvider::class,
|
||||
App\Providers\VoltServiceProvider::class,
|
||||
];
|
||||
|
||||
@@ -6,13 +6,29 @@
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.2",
|
||||
"akuechler/laravel-geoly": "^1.0",
|
||||
"calebporzio/sushi": "^2.5",
|
||||
"laravel/folio": "^1.1",
|
||||
"laravel/framework": "^11.9",
|
||||
"laravel/tinker": "^2.9"
|
||||
"laravel/pulse": "^1.2",
|
||||
"laravel/reverb": "^1.0",
|
||||
"laravel/sail": "^1.31",
|
||||
"laravel/tinker": "^2.9",
|
||||
"livewire/livewire": "^3.5",
|
||||
"livewire/volt": "^1.6",
|
||||
"openspout/openspout": "^4.24",
|
||||
"power-components/livewire-powergrid": "^5.10",
|
||||
"spatie/image": "^3.7",
|
||||
"spatie/laravel-google-fonts": "^1.4",
|
||||
"spatie/laravel-medialibrary": "^11.9",
|
||||
"spatie/laravel-sluggable": "^3.6",
|
||||
"spatie/laravel-tags": "^4.6",
|
||||
"staudenmeir/eloquent-has-many-deep": "^1.7",
|
||||
"swentel/nostr-php": "^1.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"fakerphp/faker": "^1.23",
|
||||
"laravel/pint": "^1.13",
|
||||
"laravel/sail": "^1.26",
|
||||
"mockery/mockery": "^1.6",
|
||||
"nunomaduro/collision": "^8.0",
|
||||
"pestphp/pest": "^2.35",
|
||||
|
||||
3748
composer.lock
generated
82
config/broadcasting.php
Normal file
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default Broadcaster
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option controls the default broadcaster that will be used by the
|
||||
| framework when an event needs to be broadcast. You may set this to
|
||||
| any of the connections defined in the "connections" array below.
|
||||
|
|
||||
| Supported: "reverb", "pusher", "ably", "redis", "log", "null"
|
||||
|
|
||||
*/
|
||||
|
||||
'default' => env('BROADCAST_CONNECTION', 'null'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Broadcast Connections
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may define all of the broadcast connections that will be used
|
||||
| to broadcast events to other systems or over WebSockets. Samples of
|
||||
| each available type of connection are provided inside this array.
|
||||
|
|
||||
*/
|
||||
|
||||
'connections' => [
|
||||
|
||||
'reverb' => [
|
||||
'driver' => 'reverb',
|
||||
'key' => env('REVERB_APP_KEY'),
|
||||
'secret' => env('REVERB_APP_SECRET'),
|
||||
'app_id' => env('REVERB_APP_ID'),
|
||||
'options' => [
|
||||
'host' => env('REVERB_HOST'),
|
||||
'port' => env('REVERB_PORT', 443),
|
||||
'scheme' => env('REVERB_SCHEME', 'https'),
|
||||
'useTLS' => env('REVERB_SCHEME', 'https') === 'https',
|
||||
],
|
||||
'client_options' => [
|
||||
// Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
|
||||
],
|
||||
],
|
||||
|
||||
'pusher' => [
|
||||
'driver' => 'pusher',
|
||||
'key' => env('PUSHER_APP_KEY'),
|
||||
'secret' => env('PUSHER_APP_SECRET'),
|
||||
'app_id' => env('PUSHER_APP_ID'),
|
||||
'options' => [
|
||||
'cluster' => env('PUSHER_APP_CLUSTER'),
|
||||
'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com',
|
||||
'port' => env('PUSHER_PORT', 443),
|
||||
'scheme' => env('PUSHER_SCHEME', 'https'),
|
||||
'encrypted' => true,
|
||||
'useTLS' => env('PUSHER_SCHEME', 'https') === 'https',
|
||||
],
|
||||
'client_options' => [
|
||||
// Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
|
||||
],
|
||||
],
|
||||
|
||||
'ably' => [
|
||||
'driver' => 'ably',
|
||||
'key' => env('ABLY_KEY'),
|
||||
],
|
||||
|
||||
'log' => [
|
||||
'driver' => 'log',
|
||||
],
|
||||
|
||||
'null' => [
|
||||
'driver' => 'null',
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
];
|
||||
@@ -97,6 +97,21 @@ return [
|
||||
'sslmode' => 'prefer',
|
||||
],
|
||||
|
||||
'einundzwanzig' => [
|
||||
'driver' => 'pgsql',
|
||||
'url' => env('DB_URL'),
|
||||
'host' => env('DB_HOST', '127.0.0.1'),
|
||||
'port' => env('DB_PORT', '5432'),
|
||||
'database' => 'einundzwanzig',
|
||||
'username' => env('DB_USERNAME', 'root'),
|
||||
'password' => env('DB_PASSWORD', ''),
|
||||
'charset' => env('DB_CHARSET', 'utf8'),
|
||||
'prefix' => '',
|
||||
'prefix_indexes' => true,
|
||||
'search_path' => 'public',
|
||||
'sslmode' => 'prefer',
|
||||
],
|
||||
|
||||
'sqlsrv' => [
|
||||
'driver' => 'sqlsrv',
|
||||
'url' => env('DB_URL'),
|
||||
|
||||
52
config/google-fonts.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
* Here you can register fonts to call from the @googlefonts Blade directive.
|
||||
* The google-fonts:fetch command will prefetch these fonts.
|
||||
*/
|
||||
'fonts' => [
|
||||
'default' => 'https://fonts.googleapis.com/css2?family=Inconsolata:ital,wght@0,400;0,700;1,400;1,700',
|
||||
'article' => 'https://fonts.googleapis.com/css2?family=Karla:ital,wght@0,400;0,700;1,400;1,700',
|
||||
],
|
||||
|
||||
/*
|
||||
* This disk will be used to store local Google Fonts. The public disk
|
||||
* is the default because it can be served over HTTP with storage:link.
|
||||
*/
|
||||
'disk' => 'public',
|
||||
|
||||
/*
|
||||
* Prepend all files that are written to the selected disk with this path.
|
||||
* This allows separating the fonts from other data in the public disk.
|
||||
*/
|
||||
'path' => 'fonts',
|
||||
|
||||
/*
|
||||
* By default, CSS will be inlined to reduce the amount of round trips
|
||||
* browsers need to make in order to load the requested font files.
|
||||
*/
|
||||
'inline' => true,
|
||||
|
||||
/*
|
||||
* When preload is set to true, preload meta tags will be generated
|
||||
* in the HTML output to instruct the browser to start fetching the
|
||||
* font files as early as possible, even before the CSS is fully parsed.
|
||||
*/
|
||||
'preload' => false,
|
||||
|
||||
/*
|
||||
* When something goes wrong fonts are loaded directly from Google.
|
||||
* With fallback disabled, this package will throw an exception.
|
||||
*/
|
||||
'fallback' => ! env('APP_DEBUG'),
|
||||
|
||||
/*
|
||||
* This user agent will be used to request the stylesheet from Google Fonts.
|
||||
* This is the Safari 14 user agent that only targets modern browsers. If
|
||||
* you want to target older browsers, use different user agent string.
|
||||
*/
|
||||
'user_agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15',
|
||||
|
||||
];
|
||||
156
config/livewire-powergrid.php
Normal file
@@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Theme
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| PowerGrid supports Tailwind and Bootstrap 5 themes.
|
||||
| Configure here the theme of your choice.
|
||||
*/
|
||||
|
||||
'theme' => \PowerComponents\LivewirePowerGrid\Themes\Tailwind::class,
|
||||
//'theme' => \PowerComponents\LivewirePowerGrid\Themes\Bootstrap5::class,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Plugins
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Plugins used: flatpickr.js to datepicker.
|
||||
|
|
||||
*/
|
||||
|
||||
'plugins' => [
|
||||
/*
|
||||
* https://flatpickr.js.org
|
||||
*/
|
||||
'flatpickr' => [
|
||||
'locales' => [
|
||||
'de_DE' => [
|
||||
'locale' => 'de',
|
||||
'dateFormat' => 'd.m.Y H:i',
|
||||
'enableTime' => true,
|
||||
'time_24hr' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'select' => [
|
||||
'default' => 'tom',
|
||||
|
||||
/*
|
||||
* TomSelect Options
|
||||
* https://tom-select.js.org
|
||||
*/
|
||||
'tom' => [
|
||||
'plugins' => [
|
||||
'clear_button' => [
|
||||
'title' => 'Remove all selected options',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
* Slim Select options
|
||||
* https://slimselectjs.com/
|
||||
*/
|
||||
'slim' => [
|
||||
'settings' => [
|
||||
'alwaysOpen' => false,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Filters
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| PowerGrid supports inline and outside filters.
|
||||
| 'inline': Filters data inside the table.
|
||||
| 'outside': Filters data outside the table.
|
||||
| 'null'
|
||||
|
|
||||
*/
|
||||
|
||||
'filter' => 'outside',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Persisting
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| PowerGrid supports persisting of the filters, columns and sorting.
|
||||
| 'session': persist in the session.
|
||||
| 'cache': persist with cache.
|
||||
| 'cookies': persist with cookies (default).
|
||||
|
|
||||
*/
|
||||
|
||||
'persist_driver' => 'cookies',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Cache
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Cache is enabled by default to improve search performance when using collections.
|
||||
| When enabled, data is reloaded whenever the page is refreshed or a field is updated.
|
||||
|
|
||||
*/
|
||||
|
||||
'cached_data' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| New Release Notification
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| PowerGrid can verify if a new release is available when you create a new PowerGrid Table.
|
||||
|
|
||||
| This feature depends on composer/composer.
|
||||
| To install, run: `composer require composer/composer --dev`
|
||||
|
|
||||
*/
|
||||
|
||||
'check_version' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Exportable class
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
|
|
||||
*/
|
||||
|
||||
'exportable' => [
|
||||
'default' => 'openspout_v4',
|
||||
'openspout_v4' => [
|
||||
'xlsx' => \PowerComponents\LivewirePowerGrid\Components\Exports\OpenSpout\v4\ExportToXLS::class,
|
||||
'csv' => \PowerComponents\LivewirePowerGrid\Components\Exports\OpenSpout\v4\ExportToCsv::class,
|
||||
],
|
||||
'openspout_v3' => [
|
||||
'xlsx' => \PowerComponents\LivewirePowerGrid\Components\Exports\OpenSpout\v3\ExportToXLS::class,
|
||||
'csv' => \PowerComponents\LivewirePowerGrid\Components\Exports\OpenSpout\v3\ExportToCsv::class,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Auto-Discover Models
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| PowerGrid will search for Models in the directories listed below.
|
||||
| These Models be listed as options when you run the
|
||||
| "artisan powergrid:create" command.
|
||||
|
|
||||
*/
|
||||
|
||||
'auto_discover_models_paths' => [
|
||||
app_path('Models'),
|
||||
],
|
||||
];
|
||||
280
config/media-library.php
Normal file
@@ -0,0 +1,280 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
* The disk on which to store added files and derived images by default. Choose
|
||||
* one or more of the disks you've configured in config/filesystems.php.
|
||||
*/
|
||||
'disk_name' => env('MEDIA_DISK', 'public'),
|
||||
|
||||
/*
|
||||
* The maximum file size of an item in bytes.
|
||||
* Adding a larger file will result in an exception.
|
||||
*/
|
||||
'max_file_size' => 1024 * 1024 * 10, // 10MB
|
||||
|
||||
/*
|
||||
* This queue connection will be used to generate derived and responsive images.
|
||||
* Leave empty to use the default queue connection.
|
||||
*/
|
||||
'queue_connection_name' => env('QUEUE_CONNECTION', 'sync'),
|
||||
|
||||
/*
|
||||
* This queue will be used to generate derived and responsive images.
|
||||
* Leave empty to use the default queue.
|
||||
*/
|
||||
'queue_name' => env('MEDIA_QUEUE', ''),
|
||||
|
||||
/*
|
||||
* By default all conversions will be performed on a queue.
|
||||
*/
|
||||
'queue_conversions_by_default' => env('QUEUE_CONVERSIONS_BY_DEFAULT', true),
|
||||
|
||||
/*
|
||||
* Should database transactions be run after database commits?
|
||||
*/
|
||||
'queue_conversions_after_database_commit' => env('QUEUE_CONVERSIONS_AFTER_DB_COMMIT', true),
|
||||
|
||||
/*
|
||||
* The fully qualified class name of the media model.
|
||||
*/
|
||||
'media_model' => Spatie\MediaLibrary\MediaCollections\Models\Media::class,
|
||||
|
||||
/*
|
||||
* When enabled, media collections will be serialised using the default
|
||||
* laravel model serialization behaviour.
|
||||
*
|
||||
* Keep this option disabled if using Media Library Pro components (https://medialibrary.pro)
|
||||
*/
|
||||
'use_default_collection_serialization' => false,
|
||||
|
||||
/*
|
||||
* The fully qualified class name of the model used for temporary uploads.
|
||||
*
|
||||
* This model is only used in Media Library Pro (https://medialibrary.pro)
|
||||
*/
|
||||
'temporary_upload_model' => Spatie\MediaLibraryPro\Models\TemporaryUpload::class,
|
||||
|
||||
/*
|
||||
* When enabled, Media Library Pro will only process temporary uploads that were uploaded
|
||||
* in the same session. You can opt to disable this for stateless usage of
|
||||
* the pro components.
|
||||
*/
|
||||
'enable_temporary_uploads_session_affinity' => true,
|
||||
|
||||
/*
|
||||
* When enabled, Media Library pro will generate thumbnails for uploaded file.
|
||||
*/
|
||||
'generate_thumbnails_for_temporary_uploads' => true,
|
||||
|
||||
/*
|
||||
* This is the class that is responsible for naming generated files.
|
||||
*/
|
||||
'file_namer' => Spatie\MediaLibrary\Support\FileNamer\DefaultFileNamer::class,
|
||||
|
||||
/*
|
||||
* The class that contains the strategy for determining a media file's path.
|
||||
*/
|
||||
'path_generator' => Spatie\MediaLibrary\Support\PathGenerator\DefaultPathGenerator::class,
|
||||
|
||||
/*
|
||||
* The class that contains the strategy for determining how to remove files.
|
||||
*/
|
||||
'file_remover_class' => Spatie\MediaLibrary\Support\FileRemover\DefaultFileRemover::class,
|
||||
|
||||
/*
|
||||
* Here you can specify which path generator should be used for the given class.
|
||||
*/
|
||||
'custom_path_generators' => [
|
||||
// Model::class => PathGenerator::class
|
||||
// or
|
||||
// 'model_morph_alias' => PathGenerator::class
|
||||
],
|
||||
|
||||
/*
|
||||
* When urls to files get generated, this class will be called. Use the default
|
||||
* if your files are stored locally above the site root or on s3.
|
||||
*/
|
||||
'url_generator' => Spatie\MediaLibrary\Support\UrlGenerator\DefaultUrlGenerator::class,
|
||||
|
||||
/*
|
||||
* Moves media on updating to keep path consistent. Enable it only with a custom
|
||||
* PathGenerator that uses, for example, the media UUID.
|
||||
*/
|
||||
'moves_media_on_update' => false,
|
||||
|
||||
/*
|
||||
* Whether to activate versioning when urls to files get generated.
|
||||
* When activated, this attaches a ?v=xx query string to the URL.
|
||||
*/
|
||||
'version_urls' => false,
|
||||
|
||||
/*
|
||||
* The media library will try to optimize all converted images by removing
|
||||
* metadata and applying a little bit of compression. These are
|
||||
* the optimizers that will be used by default.
|
||||
*/
|
||||
'image_optimizers' => [
|
||||
Spatie\ImageOptimizer\Optimizers\Jpegoptim::class => [
|
||||
'-m85', // set maximum quality to 85%
|
||||
'--force', // ensure that progressive generation is always done also if a little bigger
|
||||
'--strip-all', // this strips out all text information such as comments and EXIF data
|
||||
'--all-progressive', // this will make sure the resulting image is a progressive one
|
||||
],
|
||||
Spatie\ImageOptimizer\Optimizers\Pngquant::class => [
|
||||
'--force', // required parameter for this package
|
||||
],
|
||||
Spatie\ImageOptimizer\Optimizers\Optipng::class => [
|
||||
'-i0', // this will result in a non-interlaced, progressive scanned image
|
||||
'-o2', // this set the optimization level to two (multiple IDAT compression trials)
|
||||
'-quiet', // required parameter for this package
|
||||
],
|
||||
Spatie\ImageOptimizer\Optimizers\Svgo::class => [
|
||||
'--disable=cleanupIDs', // disabling because it is known to cause troubles
|
||||
],
|
||||
Spatie\ImageOptimizer\Optimizers\Gifsicle::class => [
|
||||
'-b', // required parameter for this package
|
||||
'-O3', // this produces the slowest but best results
|
||||
],
|
||||
Spatie\ImageOptimizer\Optimizers\Cwebp::class => [
|
||||
'-m 6', // for the slowest compression method in order to get the best compression.
|
||||
'-pass 10', // for maximizing the amount of analysis pass.
|
||||
'-mt', // multithreading for some speed improvements.
|
||||
'-q 90', //quality factor that brings the least noticeable changes.
|
||||
],
|
||||
Spatie\ImageOptimizer\Optimizers\Avifenc::class => [
|
||||
'-a cq-level=23', // constant quality level, lower values mean better quality and greater file size (0-63).
|
||||
'-j all', // number of jobs (worker threads, "all" uses all available cores).
|
||||
'--min 0', // min quantizer for color (0-63).
|
||||
'--max 63', // max quantizer for color (0-63).
|
||||
'--minalpha 0', // min quantizer for alpha (0-63).
|
||||
'--maxalpha 63', // max quantizer for alpha (0-63).
|
||||
'-a end-usage=q', // rate control mode set to Constant Quality mode.
|
||||
'-a tune=ssim', // SSIM as tune the encoder for distortion metric.
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
* These generators will be used to create an image of media files.
|
||||
*/
|
||||
'image_generators' => [
|
||||
Spatie\MediaLibrary\Conversions\ImageGenerators\Image::class,
|
||||
Spatie\MediaLibrary\Conversions\ImageGenerators\Webp::class,
|
||||
Spatie\MediaLibrary\Conversions\ImageGenerators\Avif::class,
|
||||
Spatie\MediaLibrary\Conversions\ImageGenerators\Pdf::class,
|
||||
Spatie\MediaLibrary\Conversions\ImageGenerators\Svg::class,
|
||||
Spatie\MediaLibrary\Conversions\ImageGenerators\Video::class,
|
||||
],
|
||||
|
||||
/*
|
||||
* The path where to store temporary files while performing image conversions.
|
||||
* If set to null, storage_path('media-library/temp') will be used.
|
||||
*/
|
||||
'temporary_directory_path' => null,
|
||||
|
||||
/*
|
||||
* The engine that should perform the image conversions.
|
||||
* Should be either `gd` or `imagick`.
|
||||
*/
|
||||
'image_driver' => env('IMAGE_DRIVER', 'gd'),
|
||||
|
||||
/*
|
||||
* FFMPEG & FFProbe binaries paths, only used if you try to generate video
|
||||
* thumbnails and have installed the php-ffmpeg/php-ffmpeg composer
|
||||
* dependency.
|
||||
*/
|
||||
'ffmpeg_path' => env('FFMPEG_PATH', '/usr/bin/ffmpeg'),
|
||||
'ffprobe_path' => env('FFPROBE_PATH', '/usr/bin/ffprobe'),
|
||||
|
||||
/*
|
||||
* Here you can override the class names of the jobs used by this package. Make sure
|
||||
* your custom jobs extend the ones provided by the package.
|
||||
*/
|
||||
'jobs' => [
|
||||
'perform_conversions' => Spatie\MediaLibrary\Conversions\Jobs\PerformConversionsJob::class,
|
||||
'generate_responsive_images' => Spatie\MediaLibrary\ResponsiveImages\Jobs\GenerateResponsiveImagesJob::class,
|
||||
],
|
||||
|
||||
/*
|
||||
* When using the addMediaFromUrl method you may want to replace the default downloader.
|
||||
* This is particularly useful when the url of the image is behind a firewall and
|
||||
* need to add additional flags, possibly using curl.
|
||||
*/
|
||||
'media_downloader' => Spatie\MediaLibrary\Downloaders\DefaultDownloader::class,
|
||||
|
||||
/*
|
||||
* When using the addMediaFromUrl method the SSL is verified by default.
|
||||
* This is option disables SSL verification when downloading remote media.
|
||||
* Please note that this is a security risk and should only be false in a local environment.
|
||||
*/
|
||||
'media_downloader_ssl' => env('MEDIA_DOWNLOADER_SSL', true),
|
||||
|
||||
'remote' => [
|
||||
/*
|
||||
* Any extra headers that should be included when uploading media to
|
||||
* a remote disk. Even though supported headers may vary between
|
||||
* different drivers, a sensible default has been provided.
|
||||
*
|
||||
* Supported by S3: CacheControl, Expires, StorageClass,
|
||||
* ServerSideEncryption, Metadata, ACL, ContentEncoding
|
||||
*/
|
||||
'extra_headers' => [
|
||||
'CacheControl' => 'max-age=604800',
|
||||
],
|
||||
],
|
||||
|
||||
'responsive_images' => [
|
||||
/*
|
||||
* This class is responsible for calculating the target widths of the responsive
|
||||
* images. By default we optimize for filesize and create variations that each are 30%
|
||||
* smaller than the previous one. More info in the documentation.
|
||||
*
|
||||
* https://docs.spatie.be/laravel-medialibrary/v9/advanced-usage/generating-responsive-images
|
||||
*/
|
||||
'width_calculator' => Spatie\MediaLibrary\ResponsiveImages\WidthCalculator\FileSizeOptimizedWidthCalculator::class,
|
||||
|
||||
/*
|
||||
* By default rendering media to a responsive image will add some javascript and a tiny placeholder.
|
||||
* This ensures that the browser can already determine the correct layout.
|
||||
* When disabled, no tiny placeholder is generated.
|
||||
*/
|
||||
'use_tiny_placeholders' => true,
|
||||
|
||||
/*
|
||||
* This class will generate the tiny placeholder used for progressive image loading. By default
|
||||
* the media library will use a tiny blurred jpg image.
|
||||
*/
|
||||
'tiny_placeholder_generator' => Spatie\MediaLibrary\ResponsiveImages\TinyPlaceholderGenerator\Blurred::class,
|
||||
],
|
||||
|
||||
/*
|
||||
* When enabling this option, a route will be registered that will enable
|
||||
* the Media Library Pro Vue and React components to move uploaded files
|
||||
* in a S3 bucket to their right place.
|
||||
*/
|
||||
'enable_vapor_uploads' => env('ENABLE_MEDIA_LIBRARY_VAPOR_UPLOADS', false),
|
||||
|
||||
/*
|
||||
* When converting Media instances to response the media library will add
|
||||
* a `loading` attribute to the `img` tag. Here you can set the default
|
||||
* value of that attribute.
|
||||
*
|
||||
* Possible values: 'lazy', 'eager', 'auto' or null if you don't want to set any loading instruction.
|
||||
*
|
||||
* More info: https://css-tricks.com/native-lazy-loading/
|
||||
*/
|
||||
'default_loading_attribute_value' => null,
|
||||
|
||||
/*
|
||||
* You can specify a prefix for that is used for storing all media.
|
||||
* If you set this to `/my-subdir`, all your media will be stored in a `/my-subdir` directory.
|
||||
*/
|
||||
'prefix' => env('MEDIA_PREFIX', ''),
|
||||
|
||||
/*
|
||||
* When forcing lazy loading, media will be loaded even if you don't eager load media and you have
|
||||
* disabled lazy loading globally in the service provider.
|
||||
*/
|
||||
'force_lazy_loading' => env('FORCE_MEDIA_LIBRARY_LAZY_LOADING', true),
|
||||
];
|
||||
242
config/pulse.php
Normal file
@@ -0,0 +1,242 @@
|
||||
<?php
|
||||
|
||||
use Laravel\Pulse\Http\Middleware\Authorize;
|
||||
use Laravel\Pulse\Pulse;
|
||||
use Laravel\Pulse\Recorders;
|
||||
use Laravel\Reverb\Pulse\Recorders\ReverbConnections;
|
||||
use Laravel\Reverb\Pulse\Recorders\ReverbMessages;
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pulse Domain
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This is the subdomain which the Pulse dashboard will be accessible from.
|
||||
| When set to null, the dashboard will reside under the same domain as
|
||||
| the application. Remember to configure your DNS entries correctly.
|
||||
|
|
||||
*/
|
||||
|
||||
'domain' => env('PULSE_DOMAIN'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pulse Path
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This is the path which the Pulse dashboard will be accessible from. Feel
|
||||
| free to change this path to anything you'd like. Note that this won't
|
||||
| affect the path of the internal API that is never exposed to users.
|
||||
|
|
||||
*/
|
||||
|
||||
'path' => env('PULSE_PATH', 'pulse'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pulse Master Switch
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This configuration option may be used to completely disable all Pulse
|
||||
| data recorders regardless of their individual configurations. This
|
||||
| provides a single option to quickly disable all Pulse recording.
|
||||
|
|
||||
*/
|
||||
|
||||
'enabled' => env('PULSE_ENABLED', true),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pulse Storage Driver
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This configuration option determines which storage driver will be used
|
||||
| while storing entries from Pulse's recorders. In addition, you also
|
||||
| may provide any options to configure the selected storage driver.
|
||||
|
|
||||
*/
|
||||
|
||||
'storage' => [
|
||||
'driver' => env('PULSE_STORAGE_DRIVER', 'database'),
|
||||
|
||||
'database' => [
|
||||
'connection' => env('PULSE_DB_CONNECTION', null),
|
||||
'chunk' => 1000,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pulse Ingest Driver
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This configuration options determines the ingest driver that will be used
|
||||
| to capture entries from Pulse's recorders. Ingest drivers are great to
|
||||
| free up your request workers quickly by offloading the data storage.
|
||||
|
|
||||
*/
|
||||
|
||||
'ingest' => [
|
||||
'driver' => env('PULSE_INGEST_DRIVER', 'storage'),
|
||||
|
||||
'buffer' => env('PULSE_INGEST_BUFFER', 5_000),
|
||||
|
||||
'trim' => [
|
||||
'lottery' => [1, 1_000],
|
||||
'keep' => '7 days',
|
||||
],
|
||||
|
||||
'redis' => [
|
||||
'connection' => env('PULSE_REDIS_CONNECTION'),
|
||||
'chunk' => 1000,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pulse Cache Driver
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This configuration option determines the cache driver that will be used
|
||||
| for various tasks, including caching dashboard results, establishing
|
||||
| locks for events that should only occur on one server and signals.
|
||||
|
|
||||
*/
|
||||
|
||||
'cache' => env('PULSE_CACHE_DRIVER'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pulse Route Middleware
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| These middleware will be assigned to every Pulse route, giving you the
|
||||
| chance to add your own middleware to this list or change any of the
|
||||
| existing middleware. Of course, reasonable defaults are provided.
|
||||
|
|
||||
*/
|
||||
|
||||
'middleware' => [
|
||||
'web',
|
||||
Authorize::class,
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pulse Recorders
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following array lists the "recorders" that will be registered with
|
||||
| Pulse, along with their configuration. Recorders gather application
|
||||
| event data from requests and tasks to pass to your ingest driver.
|
||||
|
|
||||
*/
|
||||
|
||||
'recorders' => [
|
||||
ReverbConnections::class => [
|
||||
'sample_rate' => 1,
|
||||
],
|
||||
|
||||
ReverbMessages::class => [
|
||||
'sample_rate' => 1,
|
||||
],
|
||||
|
||||
Recorders\CacheInteractions::class => [
|
||||
'enabled' => env('PULSE_CACHE_INTERACTIONS_ENABLED', true),
|
||||
'sample_rate' => env('PULSE_CACHE_INTERACTIONS_SAMPLE_RATE', 1),
|
||||
'ignore' => [
|
||||
...Pulse::defaultVendorCacheKeys(),
|
||||
],
|
||||
'groups' => [
|
||||
'/^job-exceptions:.*/' => 'job-exceptions:*',
|
||||
// '/:\d+/' => ':*',
|
||||
],
|
||||
],
|
||||
|
||||
Recorders\Exceptions::class => [
|
||||
'enabled' => env('PULSE_EXCEPTIONS_ENABLED', true),
|
||||
'sample_rate' => env('PULSE_EXCEPTIONS_SAMPLE_RATE', 1),
|
||||
'location' => env('PULSE_EXCEPTIONS_LOCATION', true),
|
||||
'ignore' => [
|
||||
// '/^Package\\\\Exceptions\\\\/',
|
||||
],
|
||||
],
|
||||
|
||||
Recorders\Queues::class => [
|
||||
'enabled' => env('PULSE_QUEUES_ENABLED', true),
|
||||
'sample_rate' => env('PULSE_QUEUES_SAMPLE_RATE', 1),
|
||||
'ignore' => [
|
||||
// '/^Package\\\\Jobs\\\\/',
|
||||
],
|
||||
],
|
||||
|
||||
Recorders\Servers::class => [
|
||||
'server_name' => env('PULSE_SERVER_NAME', gethostname()),
|
||||
'directories' => explode(':', env('PULSE_SERVER_DIRECTORIES', '/')),
|
||||
],
|
||||
|
||||
Recorders\SlowJobs::class => [
|
||||
'enabled' => env('PULSE_SLOW_JOBS_ENABLED', true),
|
||||
'sample_rate' => env('PULSE_SLOW_JOBS_SAMPLE_RATE', 1),
|
||||
'threshold' => env('PULSE_SLOW_JOBS_THRESHOLD', 1000),
|
||||
'ignore' => [
|
||||
// '/^Package\\\\Jobs\\\\/',
|
||||
],
|
||||
],
|
||||
|
||||
Recorders\SlowOutgoingRequests::class => [
|
||||
'enabled' => env('PULSE_SLOW_OUTGOING_REQUESTS_ENABLED', true),
|
||||
'sample_rate' => env('PULSE_SLOW_OUTGOING_REQUESTS_SAMPLE_RATE', 1),
|
||||
'threshold' => env('PULSE_SLOW_OUTGOING_REQUESTS_THRESHOLD', 1000),
|
||||
'ignore' => [
|
||||
// '#^http://127\.0\.0\.1:13714#', // Inertia SSR...
|
||||
],
|
||||
'groups' => [
|
||||
// '#^https://api\.github\.com/repos/.*$#' => 'api.github.com/repos/*',
|
||||
// '#^https?://([^/]*).*$#' => '\1',
|
||||
// '#/\d+#' => '/*',
|
||||
],
|
||||
],
|
||||
|
||||
Recorders\SlowQueries::class => [
|
||||
'enabled' => env('PULSE_SLOW_QUERIES_ENABLED', true),
|
||||
'sample_rate' => env('PULSE_SLOW_QUERIES_SAMPLE_RATE', 1),
|
||||
'threshold' => env('PULSE_SLOW_QUERIES_THRESHOLD', 1000),
|
||||
'location' => env('PULSE_SLOW_QUERIES_LOCATION', true),
|
||||
'max_query_length' => env('PULSE_SLOW_QUERIES_MAX_QUERY_LENGTH', null),
|
||||
'ignore' => [
|
||||
'/(["`])pulse_[\w]+?\1/', // Pulse tables...
|
||||
'/(["`])telescope_[\w]+?\1/', // Telescope tables...
|
||||
],
|
||||
],
|
||||
|
||||
Recorders\SlowRequests::class => [
|
||||
'enabled' => env('PULSE_SLOW_REQUESTS_ENABLED', true),
|
||||
'sample_rate' => env('PULSE_SLOW_REQUESTS_SAMPLE_RATE', 1),
|
||||
'threshold' => env('PULSE_SLOW_REQUESTS_THRESHOLD', 1000),
|
||||
'ignore' => [
|
||||
'#^/'.env('PULSE_PATH', 'pulse').'$#', // Pulse dashboard...
|
||||
'#^/telescope#', // Telescope dashboard...
|
||||
],
|
||||
],
|
||||
|
||||
Recorders\UserJobs::class => [
|
||||
'enabled' => env('PULSE_USER_JOBS_ENABLED', true),
|
||||
'sample_rate' => env('PULSE_USER_JOBS_SAMPLE_RATE', 1),
|
||||
'ignore' => [
|
||||
// '/^Package\\\\Jobs\\\\/',
|
||||
],
|
||||
],
|
||||
|
||||
Recorders\UserRequests::class => [
|
||||
'enabled' => env('PULSE_USER_REQUESTS_ENABLED', true),
|
||||
'sample_rate' => env('PULSE_USER_REQUESTS_SAMPLE_RATE', 1),
|
||||
'ignore' => [
|
||||
'#^/'.env('PULSE_PATH', 'pulse').'$#', // Pulse dashboard...
|
||||
'#^/telescope#', // Telescope dashboard...
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
91
config/reverb.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default Reverb Server
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option controls the default server used by Reverb to handle
|
||||
| incoming messages as well as broadcasting message to all your
|
||||
| connected clients. At this time only "reverb" is supported.
|
||||
|
|
||||
*/
|
||||
|
||||
'default' => env('REVERB_SERVER', 'reverb'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Reverb Servers
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may define details for each of the supported Reverb servers.
|
||||
| Each server has its own configuration options that are defined in
|
||||
| the array below. You should ensure all the options are present.
|
||||
|
|
||||
*/
|
||||
|
||||
'servers' => [
|
||||
|
||||
'reverb' => [
|
||||
'host' => env('REVERB_SERVER_HOST', '0.0.0.0'),
|
||||
'port' => env('REVERB_SERVER_PORT', 8080),
|
||||
'hostname' => env('REVERB_HOST'),
|
||||
'options' => [
|
||||
'tls' => [],
|
||||
],
|
||||
'max_request_size' => env('REVERB_MAX_REQUEST_SIZE', 10_000),
|
||||
'scaling' => [
|
||||
'enabled' => env('REVERB_SCALING_ENABLED', false),
|
||||
'channel' => env('REVERB_SCALING_CHANNEL', 'reverb'),
|
||||
'server' => [
|
||||
'url' => env('REDIS_URL'),
|
||||
'host' => env('REDIS_HOST', '127.0.0.1'),
|
||||
'port' => env('REDIS_PORT', '6379'),
|
||||
'username' => env('REDIS_USERNAME'),
|
||||
'password' => env('REDIS_PASSWORD'),
|
||||
'database' => env('REDIS_DB', '0'),
|
||||
],
|
||||
],
|
||||
'pulse_ingest_interval' => env('REVERB_PULSE_INGEST_INTERVAL', 15),
|
||||
'telescope_ingest_interval' => env('REVERB_TELESCOPE_INGEST_INTERVAL', 15),
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Reverb Applications
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may define how Reverb applications are managed. If you choose
|
||||
| to use the "config" provider, you may define an array of apps which
|
||||
| your server will support, including their connection credentials.
|
||||
|
|
||||
*/
|
||||
|
||||
'apps' => [
|
||||
|
||||
'provider' => 'config',
|
||||
|
||||
'apps' => [
|
||||
[
|
||||
'key' => env('REVERB_APP_KEY'),
|
||||
'secret' => env('REVERB_APP_SECRET'),
|
||||
'app_id' => env('REVERB_APP_ID'),
|
||||
'options' => [
|
||||
'host' => env('REVERB_HOST'),
|
||||
'port' => env('REVERB_PORT', 443),
|
||||
'scheme' => env('REVERB_SCHEME', 'https'),
|
||||
'useTLS' => env('REVERB_SCHEME', 'https') === 'https',
|
||||
],
|
||||
'allowed_origins' => ['*'],
|
||||
'ping_interval' => env('REVERB_APP_PING_INTERVAL', 60),
|
||||
'max_message_size' => env('REVERB_APP_MAX_MESSAGE_SIZE', 10_000),
|
||||
],
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
];
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('einundzwanzig_plebs', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('npub', 63);
|
||||
$table->string('pubkey', 64)->unique()->index();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('einundzwanzig_plebs');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('profiles', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('pubkey', 64)->unique()->index();
|
||||
$table->string('name', 255 * 2)->nullable();
|
||||
$table->string('display_name', 255 * 2)->nullable();
|
||||
$table->text('picture')->nullable();
|
||||
$table->text('banner')->nullable();
|
||||
$table->string('website', 255 * 2)->nullable();
|
||||
$table->text('about')->nullable();
|
||||
$table->string('nip05', 255 * 2)->nullable();
|
||||
$table->string('lud16', 255 * 2)->nullable();
|
||||
$table->string('lud06', 255 * 2)->nullable();
|
||||
$table->boolean('deleted')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('profiles');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('events', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('event_id', 64)->unique()->index();
|
||||
$table->string('parent_event_id', 64)->index()->nullable();
|
||||
$table->string('pubkey', 64)->index();
|
||||
$table->json('json');
|
||||
$table->string('type');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('events');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('rendered_events', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('event_id', 64)->unique()->index();
|
||||
$table->foreign('event_id')->references('event_id')->on('events')->cascadeOnDelete();
|
||||
$table->text('html');
|
||||
$table->string('profile_image');
|
||||
$table->string('profile_name');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('rendered_events');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Laravel\Pulse\Support\PulseMigration;
|
||||
|
||||
return new class extends PulseMigration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
if (! $this->shouldRun()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Schema::create('pulse_values', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->unsignedInteger('timestamp');
|
||||
$table->string('type');
|
||||
$table->mediumText('key');
|
||||
match ($this->driver()) {
|
||||
'mariadb', 'mysql' => $table->char('key_hash', 16)->charset('binary')->virtualAs('unhex(md5(`key`))'),
|
||||
'pgsql' => $table->uuid('key_hash')->storedAs('md5("key")::uuid'),
|
||||
'sqlite' => $table->string('key_hash'),
|
||||
};
|
||||
$table->mediumText('value');
|
||||
|
||||
$table->index('timestamp'); // For trimming...
|
||||
$table->index('type'); // For fast lookups and purging...
|
||||
$table->unique(['type', 'key_hash']); // For data integrity and upserts...
|
||||
});
|
||||
|
||||
Schema::create('pulse_entries', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->unsignedInteger('timestamp');
|
||||
$table->string('type');
|
||||
$table->mediumText('key');
|
||||
match ($this->driver()) {
|
||||
'mariadb', 'mysql' => $table->char('key_hash', 16)->charset('binary')->virtualAs('unhex(md5(`key`))'),
|
||||
'pgsql' => $table->uuid('key_hash')->storedAs('md5("key")::uuid'),
|
||||
'sqlite' => $table->string('key_hash'),
|
||||
};
|
||||
$table->bigInteger('value')->nullable();
|
||||
|
||||
$table->index('timestamp'); // For trimming...
|
||||
$table->index('type'); // For purging...
|
||||
$table->index('key_hash'); // For mapping...
|
||||
$table->index(['timestamp', 'type', 'key_hash', 'value']); // For aggregate queries...
|
||||
});
|
||||
|
||||
Schema::create('pulse_aggregates', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->unsignedInteger('bucket');
|
||||
$table->unsignedMediumInteger('period');
|
||||
$table->string('type');
|
||||
$table->mediumText('key');
|
||||
match ($this->driver()) {
|
||||
'mariadb', 'mysql' => $table->char('key_hash', 16)->charset('binary')->virtualAs('unhex(md5(`key`))'),
|
||||
'pgsql' => $table->uuid('key_hash')->storedAs('md5("key")::uuid'),
|
||||
'sqlite' => $table->string('key_hash'),
|
||||
};
|
||||
$table->string('aggregate');
|
||||
$table->decimal('value', 20, 2);
|
||||
$table->unsignedInteger('count')->nullable();
|
||||
|
||||
$table->unique(['bucket', 'period', 'type', 'aggregate', 'key_hash']); // Force "on duplicate update"...
|
||||
$table->index(['period', 'bucket']); // For trimming...
|
||||
$table->index('type'); // For purging...
|
||||
$table->index(['period', 'type', 'aggregate', 'bucket']); // For aggregate queries...
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('pulse_values');
|
||||
Schema::dropIfExists('pulse_entries');
|
||||
Schema::dropIfExists('pulse_aggregates');
|
||||
}
|
||||
};
|
||||
75
docker-compose.yml
Normal file
@@ -0,0 +1,75 @@
|
||||
services:
|
||||
laravel.test:
|
||||
build:
|
||||
context: ./docker/8.3
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
WWWGROUP: '${WWWGROUP}'
|
||||
image: sail-8.3/app
|
||||
extra_hosts:
|
||||
- 'host.docker.internal:host-gateway'
|
||||
ports:
|
||||
- '${APP_PORT:-80}:80'
|
||||
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
|
||||
- '${REVERB_SERVER_PORT:-8080}:8080'
|
||||
environment:
|
||||
WWWUSER: '${WWWUSER}'
|
||||
LARAVEL_SAIL: 1
|
||||
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
|
||||
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
|
||||
IGNITION_LOCAL_SITES_PATH: '${PWD}'
|
||||
volumes:
|
||||
- '.:/var/www/html'
|
||||
networks:
|
||||
- sail
|
||||
depends_on:
|
||||
- pgsql
|
||||
- redis
|
||||
pgsql:
|
||||
image: 'postgres:15'
|
||||
ports:
|
||||
- '${FORWARD_DB_PORT:-5432}:5432'
|
||||
environment:
|
||||
PGPASSWORD: '${DB_PASSWORD:-secret}'
|
||||
POSTGRES_DB: '${DB_DATABASE}'
|
||||
POSTGRES_USER: '${DB_USERNAME}'
|
||||
POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'
|
||||
volumes:
|
||||
- 'sail-pgsql:/var/lib/postgresql/data'
|
||||
- './docker/pgsql/create-testing-database.sql:/docker-entrypoint-initdb.d/10-create-testing-database.sql'
|
||||
networks:
|
||||
- sail
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- pg_isready
|
||||
- '-q'
|
||||
- '-d'
|
||||
- '${DB_DATABASE}'
|
||||
- '-U'
|
||||
- '${DB_USERNAME}'
|
||||
retries: 3
|
||||
timeout: 5s
|
||||
redis:
|
||||
image: 'redis:alpine'
|
||||
ports:
|
||||
- '${FORWARD_REDIS_PORT:-6379}:6379'
|
||||
volumes:
|
||||
- 'sail-redis:/data'
|
||||
networks:
|
||||
- sail
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- redis-cli
|
||||
- ping
|
||||
retries: 3
|
||||
timeout: 5s
|
||||
networks:
|
||||
sail:
|
||||
driver: bridge
|
||||
volumes:
|
||||
sail-pgsql:
|
||||
driver: local
|
||||
sail-redis:
|
||||
driver: local
|
||||
67
docker/8.3/Dockerfile
Normal file
@@ -0,0 +1,67 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
LABEL maintainer="Taylor Otwell"
|
||||
|
||||
ARG WWWGROUP
|
||||
ARG NODE_VERSION=20
|
||||
ARG MYSQL_CLIENT="mysql-client"
|
||||
ARG POSTGRES_VERSION=15
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
ENV TZ=UTC
|
||||
ENV SUPERVISOR_PHP_COMMAND="/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80"
|
||||
ENV SUPERVISOR_PHP_USER="sail"
|
||||
|
||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
|
||||
RUN apt-get update \
|
||||
&& mkdir -p /etc/apt/keyrings \
|
||||
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin fswatch ffmpeg nano \
|
||||
&& curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \
|
||||
&& echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y php8.3-cli php8.3-dev \
|
||||
php8.3-pgsql php8.3-sqlite3 php8.3-gd \
|
||||
php8.3-curl \
|
||||
php8.3-imap php8.3-mysql php8.3-mbstring \
|
||||
php8.3-xml php8.3-zip php8.3-bcmath php8.3-soap \
|
||||
php8.3-intl php8.3-readline \
|
||||
php8.3-ldap \
|
||||
php8.3-gmp \
|
||||
php8.3-msgpack php8.3-igbinary php8.3-redis php8.3-swoole \
|
||||
php8.3-memcached php8.3-pcov php8.3-imagick php8.3-xdebug \
|
||||
&& curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \
|
||||
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
|
||||
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_VERSION.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y nodejs \
|
||||
&& npm install -g npm \
|
||||
&& npm install -g pnpm \
|
||||
&& npm install -g bun \
|
||||
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \
|
||||
&& echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
|
||||
&& curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \
|
||||
&& echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y yarn \
|
||||
&& apt-get install -y $MYSQL_CLIENT \
|
||||
&& apt-get install -y postgresql-client-$POSTGRES_VERSION \
|
||||
&& apt-get -y autoremove \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.3
|
||||
|
||||
RUN groupadd --force -g $WWWGROUP sail
|
||||
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail
|
||||
|
||||
COPY start-container /usr/local/bin/start-container
|
||||
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||
COPY php.ini /etc/php/8.3/cli/conf.d/99-sail.ini
|
||||
RUN chmod +x /usr/local/bin/start-container
|
||||
|
||||
EXPOSE 80/tcp
|
||||
|
||||
ENTRYPOINT ["start-container"]
|
||||
5
docker/8.3/php.ini
Normal file
@@ -0,0 +1,5 @@
|
||||
[PHP]
|
||||
post_max_size = 100M
|
||||
upload_max_filesize = 100M
|
||||
variables_order = EGPCS
|
||||
pcov.directory = .
|
||||
26
docker/8.3/start-container
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ "$SUPERVISOR_PHP_USER" != "root" ] && [ "$SUPERVISOR_PHP_USER" != "sail" ]; then
|
||||
echo "You should set SUPERVISOR_PHP_USER to either 'sail' or 'root'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -z "$WWWUSER" ]; then
|
||||
usermod -u $WWWUSER sail
|
||||
fi
|
||||
|
||||
if [ ! -d /.composer ]; then
|
||||
mkdir /.composer
|
||||
fi
|
||||
|
||||
chmod -R ugo+rw /.composer
|
||||
|
||||
if [ $# -gt 0 ]; then
|
||||
if [ "$SUPERVISOR_PHP_USER" = "root" ]; then
|
||||
exec "$@"
|
||||
else
|
||||
exec gosu $WWWUSER "$@"
|
||||
fi
|
||||
else
|
||||
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
|
||||
fi
|
||||
22
docker/8.3/supervisord.conf
Normal file
@@ -0,0 +1,22 @@
|
||||
[supervisord]
|
||||
nodaemon=true
|
||||
user=root
|
||||
logfile=/var/log/supervisor/supervisord.log
|
||||
pidfile=/var/run/supervisord.pid
|
||||
|
||||
[program:php]
|
||||
command=%(ENV_SUPERVISOR_PHP_COMMAND)s
|
||||
user=%(ENV_SUPERVISOR_PHP_USER)s
|
||||
environment=LARAVEL_SAIL="1"
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:reverb]
|
||||
command=php /var/www/html/artisan reverb:start --host="0.0.0.0" --port=8080
|
||||
autostart=true
|
||||
autorestart=true
|
||||
user=%(ENV_SUPERVISOR_PHP_USER)s
|
||||
redirect_stderr=true
|
||||
stdout_logfile=/var/www/html/storage/logs/reverb.log
|
||||
2
docker/pgsql/create-testing-database.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
SELECT 'CREATE DATABASE testing'
|
||||
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'testing')\gexec
|
||||
2601
package-lock.json
generated
Normal file
@@ -6,8 +6,14 @@
|
||||
"build": "vite build"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.20",
|
||||
"axios": "^1.6.4",
|
||||
"flatpickr": "^4.6.13",
|
||||
"laravel-echo": "^1.16.1",
|
||||
"laravel-vite-plugin": "^1.0",
|
||||
"postcss": "^8.4.41",
|
||||
"pusher-js": "^8.4.0-rc2",
|
||||
"tailwindcss": "^3.4.10",
|
||||
"vite": "^5.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
<env name="APP_MAINTENANCE_DRIVER" value="file"/>
|
||||
<env name="BCRYPT_ROUNDS" value="4"/>
|
||||
<env name="CACHE_STORE" value="array"/>
|
||||
<!-- <env name="DB_CONNECTION" value="sqlite"/> -->
|
||||
<!-- <env name="DB_DATABASE" value=":memory:"/> -->
|
||||
<env name="DB_DATABASE" value="testing"/>
|
||||
<env name="MAIL_MAILER" value="array"/>
|
||||
<env name="PULSE_ENABLED" value="false"/>
|
||||
<env name="QUEUE_CONNECTION" value="sync"/>
|
||||
|
||||
6
postcss.config.js
Normal file
@@ -0,0 +1,6 @@
|
||||
export default {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {},
|
||||
},
|
||||
}
|
||||
1568
public/dist/einundzwanzig.chat.css
vendored
Normal file
14879
public/dist/einundzwanzig.chat.js
vendored
Normal file
47
public/dist/filepond-plugin-image-edit.css
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
/*!
|
||||
* FilePondPluginImageEdit 1.6.3
|
||||
* Licensed under MIT, https://opensource.org/licenses/MIT/
|
||||
* Please visit https://pqina.nl/filepond/ for details.
|
||||
*/
|
||||
|
||||
/* eslint-disable */
|
||||
.filepond--action-edit-item.filepond--action-edit-item {
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
padding: 0.1875em;
|
||||
}
|
||||
|
||||
.filepond--action-edit-item.filepond--action-edit-item[data-align*='center'] {
|
||||
margin-left: -0.1875em;
|
||||
}
|
||||
|
||||
.filepond--action-edit-item.filepond--action-edit-item[data-align*='bottom'] {
|
||||
margin-bottom: -0.1875em;
|
||||
}
|
||||
|
||||
.filepond--action-edit-item-alt {
|
||||
border: none;
|
||||
line-height: inherit;
|
||||
background: transparent;
|
||||
font-family: inherit;
|
||||
color: inherit;
|
||||
outline: none;
|
||||
padding: 0;
|
||||
margin: 0 0 0 0.25em;
|
||||
pointer-events: all;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.filepond--action-edit-item-alt svg {
|
||||
width: 1.3125em;
|
||||
height: 1.3125em;
|
||||
}
|
||||
|
||||
.filepond--action-edit-item-alt span {
|
||||
font-size: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
.filepond--root[data-style-panel-layout~='circle'] .filepond--action-edit-item {
|
||||
opacity: 1 !important;
|
||||
visibility: visible !important;
|
||||
}
|
||||
1047
public/dist/filepond.css
vendored
Normal file
9
public/dist/heatmap.min.js
vendored
Normal file
10993
public/dist/jquery.js
vendored
Normal file
1
public/dist/js-year-calendar.min.css
vendored
Normal file
1
public/dist/js-year-calendar.min.js
vendored
Normal file
11
public/dist/leaflet-heat.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/*
|
||||
(c) 2014, Vladimir Agafonkin
|
||||
simpleheat, a tiny JavaScript library for drawing heatmaps with Canvas
|
||||
https://github.com/mourner/simpleheat
|
||||
*/
|
||||
!function(){"use strict";function t(i){return this instanceof t?(this._canvas=i="string"==typeof i?document.getElementById(i):i,this._ctx=i.getContext("2d"),this._width=i.width,this._height=i.height,this._max=1,void this.clear()):new t(i)}t.prototype={defaultRadius:25,defaultGradient:{.4:"blue",.6:"cyan",.7:"lime",.8:"yellow",1:"red"},data:function(t,i){return this._data=t,this},max:function(t){return this._max=t,this},add:function(t){return this._data.push(t),this},clear:function(){return this._data=[],this},radius:function(t,i){i=i||15;var a=this._circle=document.createElement("canvas"),s=a.getContext("2d"),e=this._r=t+i;return a.width=a.height=2*e,s.shadowOffsetX=s.shadowOffsetY=200,s.shadowBlur=i,s.shadowColor="black",s.beginPath(),s.arc(e-200,e-200,t,0,2*Math.PI,!0),s.closePath(),s.fill(),this},gradient:function(t){var i=document.createElement("canvas"),a=i.getContext("2d"),s=a.createLinearGradient(0,0,0,256);i.width=1,i.height=256;for(var e in t)s.addColorStop(e,t[e]);return a.fillStyle=s,a.fillRect(0,0,1,256),this._grad=a.getImageData(0,0,1,256).data,this},draw:function(t){this._circle||this.radius(this.defaultRadius),this._grad||this.gradient(this.defaultGradient);var i=this._ctx;i.clearRect(0,0,this._width,this._height);for(var a,s=0,e=this._data.length;e>s;s++)a=this._data[s],i.globalAlpha=Math.max(a[2]/this._max,t||.05),i.drawImage(this._circle,a[0]-this._r,a[1]-this._r);var n=i.getImageData(0,0,this._width,this._height);return this._colorize(n.data,this._grad),i.putImageData(n,0,0),this},_colorize:function(t,i){for(var a,s=3,e=t.length;e>s;s+=4)a=4*t[s],a&&(t[s-3]=i[a],t[s-2]=i[a+1],t[s-1]=i[a+2])}},window.simpleheat=t}(),/*
|
||||
(c) 2014, Vladimir Agafonkin
|
||||
Leaflet.heat, a tiny and fast heatmap plugin for Leaflet.
|
||||
https://github.com/Leaflet/Leaflet.heat
|
||||
*/
|
||||
L.HeatLayer=(L.Layer?L.Layer:L.Class).extend({initialize:function(t,i){this._latlngs=t,L.setOptions(this,i)},setLatLngs:function(t){return this._latlngs=t,this.redraw()},addLatLng:function(t){return this._latlngs.push(t),this.redraw()},setOptions:function(t){return L.setOptions(this,t),this._heat&&this._updateOptions(),this.redraw()},redraw:function(){return!this._heat||this._frame||this._map._animating||(this._frame=L.Util.requestAnimFrame(this._redraw,this)),this},onAdd:function(t){this._map=t,this._canvas||this._initCanvas(),t._panes.overlayPane.appendChild(this._canvas),t.on("moveend",this._reset,this),t.options.zoomAnimation&&L.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._canvas),t.off("moveend",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},_initCanvas:function(){var t=this._canvas=L.DomUtil.create("canvas","leaflet-heatmap-layer leaflet-layer"),i=L.DomUtil.testProp(["transformOrigin","WebkitTransformOrigin","msTransformOrigin"]);t.style[i]="50% 50%";var a=this._map.getSize();t.width=a.x,t.height=a.y;var s=this._map.options.zoomAnimation&&L.Browser.any3d;L.DomUtil.addClass(t,"leaflet-zoom-"+(s?"animated":"hide")),this._heat=simpleheat(t),this._updateOptions()},_updateOptions:function(){this._heat.radius(this.options.radius||this._heat.defaultRadius,this.options.blur),this.options.gradient&&this._heat.gradient(this.options.gradient),this.options.max&&this._heat.max(this.options.max)},_reset:function(){var t=this._map.containerPointToLayerPoint([0,0]);L.DomUtil.setPosition(this._canvas,t);var i=this._map.getSize();this._heat._width!==i.x&&(this._canvas.width=this._heat._width=i.x),this._heat._height!==i.y&&(this._canvas.height=this._heat._height=i.y),this._redraw()},_redraw:function(){var t,i,a,s,e,n,h,o,r,d=[],_=this._heat._r,l=this._map.getSize(),m=new L.Bounds(L.point([-_,-_]),l.add([_,_])),c=void 0===this.options.max?1:this.options.max,u=void 0===this.options.maxZoom?this._map.getMaxZoom():this.options.maxZoom,f=1/Math.pow(2,Math.max(0,Math.min(u-this._map.getZoom(),12))),g=_/2,p=[],v=this._map._getMapPanePos(),w=v.x%g,y=v.y%g;for(t=0,i=this._latlngs.length;i>t;t++)if(a=this._map.latLngToContainerPoint(this._latlngs[t]),m.contains(a)){e=Math.floor((a.x-w)/g)+2,n=Math.floor((a.y-y)/g)+2;var x=void 0!==this._latlngs[t].alt?this._latlngs[t].alt:void 0!==this._latlngs[t][2]?+this._latlngs[t][2]:1;r=x*f,p[n]=p[n]||[],s=p[n][e],s?(s[0]=(s[0]*s[2]+a.x*r)/(s[2]+r),s[1]=(s[1]*s[2]+a.y*r)/(s[2]+r),s[2]+=r):p[n][e]=[a.x,a.y,r]}for(t=0,i=p.length;i>t;t++)if(p[t])for(h=0,o=p[t].length;o>h;h++)s=p[t][h],s&&d.push([Math.round(s[0]),Math.round(s[1]),Math.min(s[2],c)]);this._heat.data(d).draw(this.options.minOpacity),this._frame=null},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),a=this._map._getCenterOffset(t.center)._multiplyBy(-i).subtract(this._map._getMapPanePos());L.DomUtil.setTransform?L.DomUtil.setTransform(this._canvas,a,i):this._canvas.style[L.DomUtil.TRANSFORM]=L.DomUtil.getTranslateString(a)+" scale("+i+")"}}),L.heatLayer=function(t,i){return new L.HeatLayer(t,i)};
|
||||
246
public/dist/leaflet-heatmap.js
vendored
Normal file
@@ -0,0 +1,246 @@
|
||||
/*
|
||||
* Leaflet Heatmap Overlay
|
||||
*
|
||||
* Copyright (c) 2008-2016, Patrick Wied (https://www.patrick-wied.at)
|
||||
* Dual-licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
||||
* and the Beerware (http://en.wikipedia.org/wiki/Beerware) license.
|
||||
*/
|
||||
;(function (name, context, factory) {
|
||||
// Supports UMD. AMD, CommonJS/Node.js and browser context
|
||||
if (typeof module !== "undefined" && module.exports) {
|
||||
module.exports = factory(
|
||||
require('heatmap.js'),
|
||||
require('leaflet')
|
||||
);
|
||||
} else if (typeof define === "function" && define.amd) {
|
||||
define(['heatmap.js', 'leaflet'], factory);
|
||||
} else {
|
||||
// browser globals
|
||||
if (typeof window.h337 === 'undefined') {
|
||||
throw new Error('heatmap.js must be loaded before the leaflet heatmap plugin');
|
||||
}
|
||||
if (typeof window.L === 'undefined') {
|
||||
throw new Error('Leaflet must be loaded before the leaflet heatmap plugin');
|
||||
}
|
||||
context[name] = factory(window.h337, window.L);
|
||||
}
|
||||
|
||||
})("HeatmapOverlay", this, function (h337, L) {
|
||||
'use strict';
|
||||
|
||||
// Leaflet < 0.8 compatibility
|
||||
if (typeof L.Layer === 'undefined') {
|
||||
L.Layer = L.Class;
|
||||
}
|
||||
|
||||
var HeatmapOverlay = L.Layer.extend({
|
||||
|
||||
initialize: function (config) {
|
||||
this.cfg = config;
|
||||
this._el = L.DomUtil.create('div', 'leaflet-zoom-hide');
|
||||
this._data = [];
|
||||
this._max = 1;
|
||||
this._min = 0;
|
||||
this.cfg.container = this._el;
|
||||
},
|
||||
|
||||
onAdd: function (map) {
|
||||
var size = map.getSize();
|
||||
|
||||
this._map = map;
|
||||
|
||||
this._width = size.x;
|
||||
this._height = size.y;
|
||||
|
||||
this._el.style.width = size.x + 'px';
|
||||
this._el.style.height = size.y + 'px';
|
||||
this._el.style.position = 'absolute';
|
||||
|
||||
this._origin = this._map.layerPointToLatLng(new L.Point(0, 0));
|
||||
|
||||
map.getPanes().overlayPane.appendChild(this._el);
|
||||
|
||||
if (!this._heatmap) {
|
||||
this._heatmap = h337.create(this.cfg);
|
||||
}
|
||||
|
||||
// this resets the origin and redraws whenever
|
||||
// the zoom changed or the map has been moved
|
||||
map.on('moveend', this._reset, this);
|
||||
this._draw();
|
||||
},
|
||||
|
||||
addTo: function (map) {
|
||||
map.addLayer(this);
|
||||
return this;
|
||||
},
|
||||
|
||||
onRemove: function (map) {
|
||||
// remove layer's DOM elements and listeners
|
||||
map.getPanes().overlayPane.removeChild(this._el);
|
||||
|
||||
map.off('moveend', this._reset, this);
|
||||
},
|
||||
_draw: function() {
|
||||
if (!this._map) { return; }
|
||||
|
||||
var mapPane = this._map.getPanes().mapPane;
|
||||
var point = mapPane._leaflet_pos;
|
||||
|
||||
// reposition the layer
|
||||
this._el.style[HeatmapOverlay.CSS_TRANSFORM] = 'translate(' +
|
||||
-Math.round(point.x) + 'px,' +
|
||||
-Math.round(point.y) + 'px)';
|
||||
|
||||
this._update();
|
||||
},
|
||||
_update: function() {
|
||||
var bounds, zoom, scale;
|
||||
var generatedData = { max: this._max, min: this._min, data: [] };
|
||||
|
||||
bounds = this._map.getBounds();
|
||||
zoom = this._map.getZoom();
|
||||
scale = Math.pow(2, zoom);
|
||||
|
||||
if (this._data.length == 0) {
|
||||
if (this._heatmap) {
|
||||
this._heatmap.setData(generatedData);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var latLngPoints = [];
|
||||
var radiusMultiplier = this.cfg.scaleRadius ? scale : 1;
|
||||
var localMax = 0;
|
||||
var localMin = 0;
|
||||
var valueField = this.cfg.valueField;
|
||||
var len = this._data.length;
|
||||
|
||||
while (len--) {
|
||||
var entry = this._data[len];
|
||||
var value = entry[valueField];
|
||||
var latlng = entry.latlng;
|
||||
|
||||
|
||||
// we don't wanna render points that are not even on the map ;-)
|
||||
if (!bounds.contains(latlng)) {
|
||||
continue;
|
||||
}
|
||||
// local max is the maximum within current bounds
|
||||
localMax = Math.max(value, localMax);
|
||||
localMin = Math.min(value, localMin);
|
||||
|
||||
var point = this._map.latLngToContainerPoint(latlng);
|
||||
var latlngPoint = { x: Math.round(point.x), y: Math.round(point.y) };
|
||||
latlngPoint[valueField] = value;
|
||||
|
||||
var radius;
|
||||
|
||||
if (entry.radius) {
|
||||
radius = entry.radius * radiusMultiplier;
|
||||
} else {
|
||||
radius = (this.cfg.radius || 2) * radiusMultiplier;
|
||||
}
|
||||
latlngPoint.radius = radius;
|
||||
latLngPoints.push(latlngPoint);
|
||||
}
|
||||
if (this.cfg.useLocalExtrema) {
|
||||
generatedData.max = localMax;
|
||||
generatedData.min = localMin;
|
||||
}
|
||||
|
||||
generatedData.data = latLngPoints;
|
||||
|
||||
this._heatmap.setData(generatedData);
|
||||
},
|
||||
setData: function(data) {
|
||||
this._max = data.max || this._max;
|
||||
this._min = data.min || this._min;
|
||||
var latField = this.cfg.latField || 'lat';
|
||||
var lngField = this.cfg.lngField || 'lng';
|
||||
var valueField = this.cfg.valueField || 'value';
|
||||
|
||||
// transform data to latlngs
|
||||
var data = data.data;
|
||||
var len = data.length;
|
||||
var d = [];
|
||||
|
||||
while (len--) {
|
||||
var entry = data[len];
|
||||
var latlng = new L.LatLng(entry[latField], entry[lngField]);
|
||||
var dataObj = { latlng: latlng };
|
||||
dataObj[valueField] = entry[valueField];
|
||||
if (entry.radius) {
|
||||
dataObj.radius = entry.radius;
|
||||
}
|
||||
d.push(dataObj);
|
||||
}
|
||||
this._data = d;
|
||||
|
||||
this._draw();
|
||||
},
|
||||
// experimential... not ready.
|
||||
addData: function(pointOrArray) {
|
||||
if (pointOrArray.length > 0) {
|
||||
var len = pointOrArray.length;
|
||||
while(len--) {
|
||||
this.addData(pointOrArray[len]);
|
||||
}
|
||||
} else {
|
||||
var latField = this.cfg.latField || 'lat';
|
||||
var lngField = this.cfg.lngField || 'lng';
|
||||
var valueField = this.cfg.valueField || 'value';
|
||||
var entry = pointOrArray;
|
||||
var latlng = new L.LatLng(entry[latField], entry[lngField]);
|
||||
var dataObj = { latlng: latlng };
|
||||
|
||||
dataObj[valueField] = entry[valueField];
|
||||
this._max = Math.max(this._max, dataObj[valueField]);
|
||||
this._min = Math.min(this._min, dataObj[valueField]);
|
||||
|
||||
if (entry.radius) {
|
||||
dataObj.radius = entry.radius;
|
||||
}
|
||||
this._data.push(dataObj);
|
||||
this._draw();
|
||||
}
|
||||
},
|
||||
_reset: function () {
|
||||
this._origin = this._map.layerPointToLatLng(new L.Point(0, 0));
|
||||
|
||||
var size = this._map.getSize();
|
||||
if (this._width !== size.x || this._height !== size.y) {
|
||||
this._width = size.x;
|
||||
this._height = size.y;
|
||||
|
||||
this._el.style.width = this._width + 'px';
|
||||
this._el.style.height = this._height + 'px';
|
||||
|
||||
this._heatmap._renderer.setDimensions(this._width, this._height);
|
||||
}
|
||||
this._draw();
|
||||
}
|
||||
});
|
||||
|
||||
HeatmapOverlay.CSS_TRANSFORM = (function() {
|
||||
var div = document.createElement('div');
|
||||
var props = [
|
||||
'transform',
|
||||
'WebkitTransform',
|
||||
'MozTransform',
|
||||
'OTransform',
|
||||
'msTransform'
|
||||
];
|
||||
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
var prop = props[i];
|
||||
if (div.style[prop] !== undefined) {
|
||||
return prop;
|
||||
}
|
||||
}
|
||||
return props[0];
|
||||
})();
|
||||
|
||||
return HeatmapOverlay;
|
||||
});
|
||||
1136
public/dist/leaflet-providers.js
vendored
Normal file
17
public/dist/locales/js-year-calendar.ca.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Catalan translation for js-year-calendar
|
||||
* David Ramirez <david@davidrv.com>
|
||||
* Based on
|
||||
* Catalan translation for bootstrap-datepicker
|
||||
* J. Garcia <jogaco.en@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['ca'] = {
|
||||
days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"],
|
||||
daysShort: ["Diu", "Dill", "Dim", "Dmc", "Dij", "Div", "Dis"],
|
||||
daysMin: ["Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"],
|
||||
months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"],
|
||||
monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Dec"],
|
||||
weekShort: 'S',
|
||||
weekStart: 1
|
||||
};
|
||||
18
public/dist/locales/js-year-calendar.cs.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Czech translation for js-year-calendar
|
||||
* @ptica
|
||||
* Based on
|
||||
* German translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* and moment.js locale configuration by author : petrbela : https://github.com/petrbela
|
||||
*/
|
||||
|
||||
Calendar.locales['cs'] = {
|
||||
days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"],
|
||||
daysShort: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So"],
|
||||
daysMin: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So"],
|
||||
months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
|
||||
monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čvn", "Čvc", "Srp", "Zář", "Říj", "Lis", "Pro"],
|
||||
weekShort: 'T',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.de.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* German translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* German translation for bootstrap-datepicker
|
||||
* Sam Zurcher <sam@orelias.ch>
|
||||
*/
|
||||
|
||||
Calendar.locales['de'] = {
|
||||
days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
|
||||
daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"],
|
||||
daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
|
||||
months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
|
||||
monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
|
||||
weekShort: 'W',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.es.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Spanish translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* Spanish translation for bootstrap-datepicker
|
||||
* Bruno Bonamin <bruno.bonamin@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['es'] = {
|
||||
days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"],
|
||||
daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"],
|
||||
daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"],
|
||||
months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
|
||||
monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
|
||||
weekShort: 'S',
|
||||
weekStart: 1
|
||||
};
|
||||
16
public/dist/locales/js-year-calendar.eu.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Basque translation for js-year-calendar
|
||||
* Iker Ibarguren Berasaluze
|
||||
* Based on * Basque translation for bootstrap-datepicker
|
||||
* by Karrikas ( karrikas@karrikas.com )
|
||||
*/
|
||||
|
||||
Calendar.locales['eu'] = {
|
||||
days: ["Igandea", "Astelehena", "Asteartea", "Asteazkena", "Osteguna", "Ostirala", "Larunbata"],
|
||||
daysShort: [ "Ig.", "Al.", "Ar.", "Az.", "Og.", "Ol.", "Lr." ],
|
||||
daysMin: [ "Ig", "Al", "Ar", "Az", "Og", "Ol", "Lr" ],
|
||||
months: [ "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua" ],
|
||||
monthsShort: [ "Urt", "Ots", "Mar.", "Api", "Mai", "Eka", "Uzt", "Abu", "Ira", "Urr", "Aza", "Abe" ],
|
||||
weekShort: 'A',
|
||||
weekStart: 1
|
||||
};
|
||||
14
public/dist/locales/js-year-calendar.fi.js
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* Finnish translation for js-year-calendar
|
||||
* Tuomas Jaakola (iqqmuT) <tuomas.jaakola@iki.fi>
|
||||
*/
|
||||
|
||||
Calendar.locales['fi'] = {
|
||||
days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"],
|
||||
daysShort: ["su", "ma", "ti", "ke", "to", "pe", "la"],
|
||||
daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la"],
|
||||
months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"],
|
||||
monthsShort: ["tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu"],
|
||||
weekShort: 'V',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.fr.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* French translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* French translation for bootstrap-datepicker
|
||||
* Nico Mollet <nico.mollet@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['fr'] = {
|
||||
days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
|
||||
daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"],
|
||||
daysMin: ["D", "L", "Ma", "Me", "J", "V", "S"],
|
||||
months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
|
||||
monthsShort: ["Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc"],
|
||||
weekShort:'S',
|
||||
weekStart: 1
|
||||
};
|
||||
14
public/dist/locales/js-year-calendar.hr.js
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* Croatian translation for js-year-calendar
|
||||
* Davor Došlnec <davor.doslinec@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['hr'] = {
|
||||
days: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"],
|
||||
daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"],
|
||||
daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su"],
|
||||
months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"],
|
||||
monthsShort: ["Sij", "Vel", "Ožu", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro"],
|
||||
weekShort: 'T',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.hu.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Hungarian translation for js-year-calendar
|
||||
* Tamas Jozsef Balku
|
||||
* Based on
|
||||
* Hungarian translation for bootstrap-datepicker
|
||||
* Tamas Jozsef Balku <https://github.com/btamas86>
|
||||
*/
|
||||
|
||||
Calendar.locales['hu'] = {
|
||||
days: [ "Vasárnap","Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat"],
|
||||
daysShort: ["Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo"],
|
||||
daysMin: ["Va", "Hé", "Ke", "Sz", "Cs", "Pé", "Sz"],
|
||||
months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"],
|
||||
monthsShort: ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"],
|
||||
weekShort: 'h',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.id.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Indonesian translation for js-year-calendar
|
||||
* Kiki Ldc
|
||||
* Based on
|
||||
* Indonesian translation for bootstrap-datepicker
|
||||
* Kiki Ldc <7x24th@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales ['id'] = {
|
||||
days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"],
|
||||
daysShort: ["Ming", "Sen", "Sel", "Rab", "kam", "Jum", "Sab"],
|
||||
daysMin: ["Mg", "Sn", "Sl", "Rb", "Km", "Jm", "Sb"],
|
||||
months: ["Januari", "Februari", "Maret", "April", "Mai", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" ],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Agt", "Sep", "Okt", "Nov", "Des"],
|
||||
weekShort: 'W',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.is.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* German translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* German translation for bootstrap-datepicker
|
||||
* Knútur Óli Magnússon <knutur@knutur.is>
|
||||
*/
|
||||
|
||||
Calendar.locales['is'] = {
|
||||
days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"],
|
||||
daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau"],
|
||||
daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La"],
|
||||
months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Agú", "Sep", "Okt", "Nóv", "Des"],
|
||||
weekShort: 'W',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.it.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Italian translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* Italian translation for bootstrap-datepicker
|
||||
* Enrico Rubboli <rubboli@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['it'] = {
|
||||
days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"],
|
||||
daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"],
|
||||
daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"],
|
||||
months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
|
||||
monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
|
||||
weekShort: 'S',
|
||||
weekStart: 1,
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.ja.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Japanese translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* Japanese translation for bootstrap-datepicker
|
||||
* Norio Suzuki <https://github.com/suzuki/>
|
||||
*/
|
||||
|
||||
Calendar.locales['ja'] = {
|
||||
days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"],
|
||||
daysShort: ["日", "月", "火", "水", "木", "金", "土"],
|
||||
daysMin: ["日", "月", "火", "水", "木", "金", "土"],
|
||||
months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
|
||||
monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
|
||||
weekShort: '週',
|
||||
weekStart:0
|
||||
};
|
||||
13
public/dist/locales/js-year-calendar.ko.js
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* Korean translation for js-year-calendar
|
||||
* minho kim <alsghek112@gmail.com>
|
||||
*/
|
||||
Calendar.locales['ko'] = {
|
||||
days: ["일", "월", "화", "수", "목", "금", "토"],
|
||||
daysShort: ["일", "월", "화", "수", "목", "금", "토"],
|
||||
daysMin: ["일", "월", "화", "수", "목", "금", "토"],
|
||||
months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
|
||||
monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
|
||||
weekShort: 'T',
|
||||
weekStart: 1
|
||||
};
|
||||
16
public/dist/locales/js-year-calendar.lt.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Lithuanian translation for js-year-calendar
|
||||
* Mantas Urbonas mantas.urbonas@gmail.com
|
||||
*
|
||||
* either MIT or BSD or Apache 2 licensed - choose whatever license suits you most.
|
||||
*/
|
||||
|
||||
Calendar.locales['lt'] = {
|
||||
days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"],
|
||||
daysShort: ["Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš"],
|
||||
daysMin: ["Se", "Pr", "An", "Tr", "Kt", "Pn", "Še"],
|
||||
months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"],
|
||||
monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rgp", "Rug", "Spa", "Lap", "Gru"],
|
||||
weekShort: 'S',
|
||||
weekStart: 1
|
||||
};
|
||||
14
public/dist/locales/js-year-calendar.lv.js
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* Latvian translation for js-year-calendar
|
||||
* Imants Horsts
|
||||
*/
|
||||
|
||||
Calendar.locales['lv'] = {
|
||||
days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena"],
|
||||
daysShort: ["Svt", "Prm", "Otr", "Tre", "Ctr", "Pkt", "Sst"],
|
||||
daysMin: ["Sv", "P", "O", "T", "C", "Pk", "S"],
|
||||
months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec"],
|
||||
weekShort: 'N',
|
||||
weekStart: 1
|
||||
};
|
||||
13
public/dist/locales/js-year-calendar.ms.js
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* Malay translation for js-year-calendar
|
||||
* Chia Wei Lim <acelimcw@hotmail.com>
|
||||
*/
|
||||
Calendar.locales['ms'] = {
|
||||
days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"],
|
||||
daysShort: ["Ahd", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab"],
|
||||
daysMin: ["Ahd", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab"],
|
||||
months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"],
|
||||
monthsShort: ["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogos", "Sep", "Okt", "Nov", "Dis"],
|
||||
weekShort: 'M',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.nl.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Dutch translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* Dutch translation for bootstrap-datepicker
|
||||
* Reinier Goltstein <mrgoltstein@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['nl'] = {
|
||||
days: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"],
|
||||
daysShort: ["zo", "ma", "di", "wo", "do", "vr", "za"],
|
||||
daysMin: ["zo", "ma", "di", "wo", "do", "vr", "za"],
|
||||
months: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
|
||||
monthsShort: ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
|
||||
weekShort: 'w',
|
||||
weekStart: 1
|
||||
};
|
||||
14
public/dist/locales/js-year-calendar.pl.js
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* Polish translation for js-year-calendar
|
||||
* Robert 'Wooya' Gaudyn
|
||||
*/
|
||||
|
||||
Calendar.locales['pl'] = {
|
||||
days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piatek", "Sobota"],
|
||||
daysShort: ["Nie", "Pon", "Wto", "Śro", "Czw", "Pią", "Sob"],
|
||||
daysMin: ["Ni", "Po", "Wt", "Śr", "Cz", "Pi", "So"],
|
||||
months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
|
||||
monthsShort: ["Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru"],
|
||||
weekShort: 'W',
|
||||
weekStart: 1
|
||||
};
|
||||
18
public/dist/locales/js-year-calendar.pt.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Portuguese translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* Portuguese translation for bootstrap-datepicker
|
||||
* Original code: Cauan Cabral <cauan@radig.com.br>
|
||||
* Tiago Melo <tiago.blackcode@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['pt'] = {
|
||||
days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"],
|
||||
daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"],
|
||||
daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa"],
|
||||
months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
|
||||
monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
|
||||
weekShort: 'S',
|
||||
weekStart:0
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.ru.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Russian translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* Russian translation for bootstrap-datepicker
|
||||
* Victor Taranenko <darwin@snowdale.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['ru'] = {
|
||||
days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"],
|
||||
daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб"],
|
||||
daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
|
||||
months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
|
||||
monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
|
||||
weekShort: 'н',
|
||||
weekStart: 1
|
||||
};
|
||||
15
public/dist/locales/js-year-calendar.sk.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Slovak translation for js-year-calendar
|
||||
* Marian Sulgan
|
||||
* marian@sulgan.sk
|
||||
*/
|
||||
|
||||
Calendar.locales['sk'] = {
|
||||
days: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"],
|
||||
daysShort: ["Ned", "Pon", "Uto", "Str", "Štv", "Pia", "Sob"],
|
||||
daysMin: ["Ne", "Po", "Ut", "St", "Št", "Pia", "So"],
|
||||
months: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec"],
|
||||
weekShort: 'W',
|
||||
weekStart: 1
|
||||
};
|
||||
14
public/dist/locales/js-year-calendar.sr.js
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* Serbian translation for js-year-calendar
|
||||
* Lazarevic Ivica <lazarevic.ivica@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['sr'] = {
|
||||
days: ["Недеља", "Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"],
|
||||
daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб"],
|
||||
daysMin: ["Не", "По", "Ут", "Ср", "Че", "Пе", "Су"],
|
||||
months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"],
|
||||
monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"],
|
||||
weekShort: 'н',
|
||||
weekStart: 1
|
||||
};
|
||||
15
public/dist/locales/js-year-calendar.th.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Thai translation for js-year-calendar
|
||||
* xypherbo
|
||||
*
|
||||
*/
|
||||
|
||||
Calendar.locales["th"] = {
|
||||
days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัสบดี", "ศุกร์", "เสาร์"],
|
||||
daysShort: ["อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."],
|
||||
daysMin: ["อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."],
|
||||
months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"],
|
||||
monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."],
|
||||
weekShort: "ส.",
|
||||
weekStart: 0
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.tr.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Turkish translation for js-year-calendar
|
||||
* Paul DAVID-SIVELLE
|
||||
* Based on
|
||||
* Turkish translation for bootstrap-datepicker
|
||||
* Serkan Algur <kaisercrazy_2@hotmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['tr'] = {
|
||||
days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"],
|
||||
daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts"],
|
||||
daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct"],
|
||||
months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
|
||||
monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"],
|
||||
weekShort: 'H',
|
||||
weekStart: 1
|
||||
};
|
||||
14
public/dist/locales/js-year-calendar.ua.js
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* Ukrainian translation for js-year-calendar
|
||||
* Petro Franko
|
||||
*/
|
||||
|
||||
Calendar.locales['ua'] = {
|
||||
days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"],
|
||||
daysShort: ["Нед", "Пон", "Вт", "Сер", "Чет", "Пт", "Суб"],
|
||||
daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
|
||||
months: ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"],
|
||||
monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"],
|
||||
weekShort: 'Т',
|
||||
weekStart: 1
|
||||
};
|
||||
14
public/dist/locales/js-year-calendar.uk.js
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* Ukrainian translation for js-year-calendar
|
||||
* by Vadym Korolyuk
|
||||
*/
|
||||
|
||||
Calendar.locales['uk'] = {
|
||||
days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"],
|
||||
daysShort: ["Нед", "Пон", "Вів", "Сер", "Чет", "Птн", "Суб"],
|
||||
daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
|
||||
months: ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень","Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"],
|
||||
monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис","Гру"],
|
||||
weekShort: 'н',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.uz.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
/**
|
||||
* Uzbek translation for js-year-calendar
|
||||
* Oqil Karimov
|
||||
* Based on
|
||||
* Uzbek translation for moment
|
||||
*/
|
||||
|
||||
Calendar.locales['uz'] = {
|
||||
days: ["Yakshanba", "Dushanba", "Seshanba", "Chorshanba", "Payshanba", "Juma", "Shanba"],
|
||||
daysShort: ["Yak","Dush","Sesh","Chor","Pay","Jum","Shan"],
|
||||
daysMin: ["Ya","Du","Se","Cho","Pa","Ju","Sha"],
|
||||
months: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avgust", "Sentabr", "Oktabr", "Noyabr", "Dekabr"],
|
||||
monthsShort: ["Yan", "Fev", "Mar", "Apr", "May", "Iyun", "Iyul", "Avg", "Sen", "Okt", "Noy", "Dek"],
|
||||
weekShort: 'h',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.zh-CN.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Simplified Chinese translation js-year-calendar
|
||||
* William Hernández <>
|
||||
* Based on
|
||||
* Simplified Chinese translation for bootstrap-datepicker
|
||||
* Yuan Cheung <advanimal@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['zh-CN'] = {
|
||||
days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
|
||||
daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
|
||||
daysMin: ["日", "一", "二", "三", "四", "五", "六"],
|
||||
months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
|
||||
monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
|
||||
weekShort: '周',
|
||||
weekStart: 1
|
||||
};
|
||||
17
public/dist/locales/js-year-calendar.zh-TW.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Traditional Chinese translation js-year-calendar
|
||||
* Based on
|
||||
* Traditional Chinese translation for bootstrap-datepicker
|
||||
* Rung-Sheng Jang <daniel@i-trend.co.cc>
|
||||
* FrankWu <frankwu100@gmail.com>
|
||||
*/
|
||||
|
||||
Calendar.locales['zh-TW'] = {
|
||||
days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
|
||||
daysShort: ["週日", "週一", "週二", "週三", "週四", "週五", "週六"],
|
||||
daysMin: ["日", "一", "二", "三", "四", "五", "六"],
|
||||
months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
|
||||
monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
|
||||
weekShort: '週',
|
||||
weekStart: 1
|
||||
};
|
||||
433
public/dist/smoothscroll.js
vendored
Normal file
@@ -0,0 +1,433 @@
|
||||
/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
// polyfill
|
||||
function polyfill() {
|
||||
// aliases
|
||||
var w = window;
|
||||
var d = document;
|
||||
|
||||
// return if scroll behavior is supported and polyfill is not forced
|
||||
if (
|
||||
'scrollBehavior' in d.documentElement.style &&
|
||||
w.__forceSmoothScrollPolyfill__ !== true
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
// globals
|
||||
var Element = w.HTMLElement || w.Element;
|
||||
var SCROLL_TIME = 468;
|
||||
|
||||
// object gathering original scroll methods
|
||||
var original = {
|
||||
scroll: w.scroll || w.scrollTo,
|
||||
scrollBy: w.scrollBy,
|
||||
elementScroll: Element.prototype.scroll || scrollElement,
|
||||
scrollIntoView: Element.prototype.scrollIntoView
|
||||
};
|
||||
|
||||
// define timing method
|
||||
var now =
|
||||
w.performance && w.performance.now
|
||||
? w.performance.now.bind(w.performance)
|
||||
: Date.now;
|
||||
|
||||
/**
|
||||
* indicates if a the current browser is made by Microsoft
|
||||
* @method isMicrosoftBrowser
|
||||
* @param {String} userAgent
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
function isMicrosoftBrowser(userAgent) {
|
||||
var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];
|
||||
|
||||
return new RegExp(userAgentPatterns.join('|')).test(userAgent);
|
||||
}
|
||||
|
||||
/*
|
||||
* IE has rounding bug rounding down clientHeight and clientWidth and
|
||||
* rounding up scrollHeight and scrollWidth causing false positives
|
||||
* on hasScrollableSpace
|
||||
*/
|
||||
var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;
|
||||
|
||||
/**
|
||||
* changes scroll position inside an element
|
||||
* @method scrollElement
|
||||
* @param {Number} x
|
||||
* @param {Number} y
|
||||
* @returns {undefined}
|
||||
*/
|
||||
function scrollElement(x, y) {
|
||||
this.scrollLeft = x;
|
||||
this.scrollTop = y;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns result of applying ease math function to a number
|
||||
* @method ease
|
||||
* @param {Number} k
|
||||
* @returns {Number}
|
||||
*/
|
||||
function ease(k) {
|
||||
return 0.5 * (1 - Math.cos(Math.PI * k));
|
||||
}
|
||||
|
||||
/**
|
||||
* indicates if a smooth behavior should be applied
|
||||
* @method shouldBailOut
|
||||
* @param {Number|Object} firstArg
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
function shouldBailOut(firstArg) {
|
||||
if (
|
||||
firstArg === null ||
|
||||
typeof firstArg !== 'object' ||
|
||||
firstArg.behavior === undefined ||
|
||||
firstArg.behavior === 'auto' ||
|
||||
firstArg.behavior === 'instant'
|
||||
) {
|
||||
// first argument is not an object/null
|
||||
// or behavior is auto, instant or undefined
|
||||
return true;
|
||||
}
|
||||
|
||||
if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {
|
||||
// first argument is an object and behavior is smooth
|
||||
return false;
|
||||
}
|
||||
|
||||
// throw error when behavior is not supported
|
||||
throw new TypeError(
|
||||
'behavior member of ScrollOptions ' +
|
||||
firstArg.behavior +
|
||||
' is not a valid value for enumeration ScrollBehavior.'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* indicates if an element has scrollable space in the provided axis
|
||||
* @method hasScrollableSpace
|
||||
* @param {Node} el
|
||||
* @param {String} axis
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
function hasScrollableSpace(el, axis) {
|
||||
if (axis === 'Y') {
|
||||
return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;
|
||||
}
|
||||
|
||||
if (axis === 'X') {
|
||||
return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* indicates if an element has a scrollable overflow property in the axis
|
||||
* @method canOverflow
|
||||
* @param {Node} el
|
||||
* @param {String} axis
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
function canOverflow(el, axis) {
|
||||
var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];
|
||||
|
||||
return overflowValue === 'auto' || overflowValue === 'scroll';
|
||||
}
|
||||
|
||||
/**
|
||||
* indicates if an element can be scrolled in either axis
|
||||
* @method isScrollable
|
||||
* @param {Node} el
|
||||
* @param {String} axis
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
function isScrollable(el) {
|
||||
var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');
|
||||
var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');
|
||||
|
||||
return isScrollableY || isScrollableX;
|
||||
}
|
||||
|
||||
/**
|
||||
* finds scrollable parent of an element
|
||||
* @method findScrollableParent
|
||||
* @param {Node} el
|
||||
* @returns {Node} el
|
||||
*/
|
||||
function findScrollableParent(el) {
|
||||
while (el !== d.body && isScrollable(el) === false) {
|
||||
el = el.parentNode || el.host;
|
||||
}
|
||||
|
||||
return el;
|
||||
}
|
||||
|
||||
/**
|
||||
* self invoked function that, given a context, steps through scrolling
|
||||
* @method step
|
||||
* @param {Object} context
|
||||
* @returns {undefined}
|
||||
*/
|
||||
function step(context) {
|
||||
var time = now();
|
||||
var value;
|
||||
var currentX;
|
||||
var currentY;
|
||||
var elapsed = (time - context.startTime) / SCROLL_TIME;
|
||||
|
||||
// avoid elapsed times higher than one
|
||||
elapsed = elapsed > 1 ? 1 : elapsed;
|
||||
|
||||
// apply easing to elapsed time
|
||||
value = ease(elapsed);
|
||||
|
||||
currentX = context.startX + (context.x - context.startX) * value;
|
||||
currentY = context.startY + (context.y - context.startY) * value;
|
||||
|
||||
context.method.call(context.scrollable, currentX, currentY);
|
||||
|
||||
// scroll more if we have not reached our destination
|
||||
if (currentX !== context.x || currentY !== context.y) {
|
||||
w.requestAnimationFrame(step.bind(w, context));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* scrolls window or element with a smooth behavior
|
||||
* @method smoothScroll
|
||||
* @param {Object|Node} el
|
||||
* @param {Number} x
|
||||
* @param {Number} y
|
||||
* @returns {undefined}
|
||||
*/
|
||||
function smoothScroll(el, x, y) {
|
||||
var scrollable;
|
||||
var startX;
|
||||
var startY;
|
||||
var method;
|
||||
var startTime = now();
|
||||
|
||||
// define scroll context
|
||||
if (el === d.body) {
|
||||
scrollable = w;
|
||||
startX = w.scrollX || w.pageXOffset;
|
||||
startY = w.scrollY || w.pageYOffset;
|
||||
method = original.scroll;
|
||||
} else {
|
||||
scrollable = el;
|
||||
startX = el.scrollLeft;
|
||||
startY = el.scrollTop;
|
||||
method = scrollElement;
|
||||
}
|
||||
|
||||
// scroll looping over a frame
|
||||
step({
|
||||
scrollable: scrollable,
|
||||
method: method,
|
||||
startTime: startTime,
|
||||
startX: startX,
|
||||
startY: startY,
|
||||
x: x,
|
||||
y: y
|
||||
});
|
||||
}
|
||||
|
||||
// ORIGINAL METHODS OVERRIDES
|
||||
// w.scroll and w.scrollTo
|
||||
w.scroll = w.scrollTo = function() {
|
||||
// avoid action when no arguments are passed
|
||||
if (arguments[0] === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
// avoid smooth behavior if not required
|
||||
if (shouldBailOut(arguments[0]) === true) {
|
||||
original.scroll.call(
|
||||
w,
|
||||
arguments[0].left !== undefined
|
||||
? arguments[0].left
|
||||
: typeof arguments[0] !== 'object'
|
||||
? arguments[0]
|
||||
: w.scrollX || w.pageXOffset,
|
||||
// use top prop, second argument if present or fallback to scrollY
|
||||
arguments[0].top !== undefined
|
||||
? arguments[0].top
|
||||
: arguments[1] !== undefined
|
||||
? arguments[1]
|
||||
: w.scrollY || w.pageYOffset
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// LET THE SMOOTHNESS BEGIN!
|
||||
smoothScroll.call(
|
||||
w,
|
||||
d.body,
|
||||
arguments[0].left !== undefined
|
||||
? ~~arguments[0].left
|
||||
: w.scrollX || w.pageXOffset,
|
||||
arguments[0].top !== undefined
|
||||
? ~~arguments[0].top
|
||||
: w.scrollY || w.pageYOffset
|
||||
);
|
||||
};
|
||||
|
||||
// w.scrollBy
|
||||
w.scrollBy = function() {
|
||||
// avoid action when no arguments are passed
|
||||
if (arguments[0] === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
// avoid smooth behavior if not required
|
||||
if (shouldBailOut(arguments[0])) {
|
||||
original.scrollBy.call(
|
||||
w,
|
||||
arguments[0].left !== undefined
|
||||
? arguments[0].left
|
||||
: typeof arguments[0] !== 'object' ? arguments[0] : 0,
|
||||
arguments[0].top !== undefined
|
||||
? arguments[0].top
|
||||
: arguments[1] !== undefined ? arguments[1] : 0
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// LET THE SMOOTHNESS BEGIN!
|
||||
smoothScroll.call(
|
||||
w,
|
||||
d.body,
|
||||
~~arguments[0].left + (w.scrollX || w.pageXOffset),
|
||||
~~arguments[0].top + (w.scrollY || w.pageYOffset)
|
||||
);
|
||||
};
|
||||
|
||||
// Element.prototype.scroll and Element.prototype.scrollTo
|
||||
Element.prototype.scroll = Element.prototype.scrollTo = function() {
|
||||
// avoid action when no arguments are passed
|
||||
if (arguments[0] === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
// avoid smooth behavior if not required
|
||||
if (shouldBailOut(arguments[0]) === true) {
|
||||
// if one number is passed, throw error to match Firefox implementation
|
||||
if (typeof arguments[0] === 'number' && arguments[1] === undefined) {
|
||||
throw new SyntaxError('Value could not be converted');
|
||||
}
|
||||
|
||||
original.elementScroll.call(
|
||||
this,
|
||||
// use left prop, first number argument or fallback to scrollLeft
|
||||
arguments[0].left !== undefined
|
||||
? ~~arguments[0].left
|
||||
: typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,
|
||||
// use top prop, second argument or fallback to scrollTop
|
||||
arguments[0].top !== undefined
|
||||
? ~~arguments[0].top
|
||||
: arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var left = arguments[0].left;
|
||||
var top = arguments[0].top;
|
||||
|
||||
// LET THE SMOOTHNESS BEGIN!
|
||||
smoothScroll.call(
|
||||
this,
|
||||
this,
|
||||
typeof left === 'undefined' ? this.scrollLeft : ~~left,
|
||||
typeof top === 'undefined' ? this.scrollTop : ~~top
|
||||
);
|
||||
};
|
||||
|
||||
// Element.prototype.scrollBy
|
||||
Element.prototype.scrollBy = function() {
|
||||
// avoid action when no arguments are passed
|
||||
if (arguments[0] === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
// avoid smooth behavior if not required
|
||||
if (shouldBailOut(arguments[0]) === true) {
|
||||
original.elementScroll.call(
|
||||
this,
|
||||
arguments[0].left !== undefined
|
||||
? ~~arguments[0].left + this.scrollLeft
|
||||
: ~~arguments[0] + this.scrollLeft,
|
||||
arguments[0].top !== undefined
|
||||
? ~~arguments[0].top + this.scrollTop
|
||||
: ~~arguments[1] + this.scrollTop
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.scroll({
|
||||
left: ~~arguments[0].left + this.scrollLeft,
|
||||
top: ~~arguments[0].top + this.scrollTop,
|
||||
behavior: arguments[0].behavior
|
||||
});
|
||||
};
|
||||
|
||||
// Element.prototype.scrollIntoView
|
||||
Element.prototype.scrollIntoView = function() {
|
||||
// avoid smooth behavior if not required
|
||||
if (shouldBailOut(arguments[0]) === true) {
|
||||
original.scrollIntoView.call(
|
||||
this,
|
||||
arguments[0] === undefined ? true : arguments[0]
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// LET THE SMOOTHNESS BEGIN!
|
||||
var scrollableParent = findScrollableParent(this);
|
||||
var parentRects = scrollableParent.getBoundingClientRect();
|
||||
var clientRects = this.getBoundingClientRect();
|
||||
|
||||
if (scrollableParent !== d.body) {
|
||||
// reveal element inside parent
|
||||
smoothScroll.call(
|
||||
this,
|
||||
scrollableParent,
|
||||
scrollableParent.scrollLeft + clientRects.left - parentRects.left,
|
||||
scrollableParent.scrollTop + clientRects.top - parentRects.top
|
||||
);
|
||||
|
||||
// reveal parent in viewport unless is fixed
|
||||
if (w.getComputedStyle(scrollableParent).position !== 'fixed') {
|
||||
w.scrollBy({
|
||||
left: parentRects.left,
|
||||
top: parentRects.top,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// reveal element in viewport
|
||||
w.scrollBy({
|
||||
left: clientRects.left,
|
||||
top: clientRects.top,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
if (typeof exports === 'object' && typeof module !== 'undefined') {
|
||||
// commonjs
|
||||
module.exports = { polyfill: polyfill };
|
||||
} else {
|
||||
// global
|
||||
polyfill();
|
||||
}
|
||||
|
||||
}());
|
||||
BIN
public/img/btc.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
1
public/img/einundzwanzig-horizontal-inverted.svg
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
13
public/img/einundzwanzig-horizontal.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg viewBox="0 0 134 12" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g>
|
||||
<path
|
||||
d="m133.83629 9.42089615c-.443181 1.77759655-2.24359 2.85941795-4.021394 2.41613355-1.777078-.4431808-2.858899-2.24369331-2.415511-4.02118615.442973-1.77780392 2.243382-2.85972904 4.020668-2.41654828 1.7777.44318074 2.859418 2.24390065 2.416237 4.02160088z"
|
||||
fill="#f7931a"/>
|
||||
<path
|
||||
d="m132.080261 8.14548127c.066052-.44152167-.270118-.67887327-.729786-.83721136l.14911-.598097-.364064-.09073074-.145169.58233577c-.095708-.02384922-.194008-.04635044-.291687-.06864427l.146207-.58617239-.363857-.09073074-.149213.59788961c-.079221-.01804245-.15699-.03587751-.232478-.05464581l.000415-.00186647-.502078-.12536395-.096849.388846s.270119.06190429.264416.0657409c.14745.03681075.174099.13438518.16964.21173961-.408547 1.63844151 0 0-.408547 1.63844151-.018043.04479506-.063771.11198765-.166841.08647935.003629.0052883-.264623-.06605197-.264623-.06605197l-.180735.41673922.47377.11810549c.088138.02208645.174514.04520983.259541.06698521l-.150665.60494066.363649.0907308.149213-.59851181c.099338.02695999.195771.05184613.290131.07528059l-.148694.59571212.364063.0907307.150665-.6038001c.620806.1174834 1.087628.070096 1.284125-.49139764.158338-.45209828-.007881-.71288434-.334511-.88293965.23787-.05485322.41705-.21132484.464852-.53453364zm-.831819 1.16643431c-.112506.45209828-.873711.20769561-1.120499.14641348l.199919-.80143754c.246788.06159322 1.038167.18353532.92058.65502406zm.11261-1.17296693c-.102656.41124353-.736215.20230362-.941733.15107964l.181254-.72688279c.205518.05122398.867385.14682825.760479.57580315z"
|
||||
fill="#fff"/>
|
||||
<path
|
||||
d="m7.63783784 11.9027027v-2.74054053h-4.8972973v-1.88108109h3.97297298v-2.74054054h-3.97297298v-1.8h4.8972973v-2.74054054l-7.63783784.01621621v11.88648649zm4.15135136.0162162v-11.9189189h-2.74054056v11.9189189zm4.3621621-.0162162v-6.94054054l3.8918919 6.94054054h2.9675677v-11.9027027h-2.7405407v6.95675676l-3.8756756-6.92432432h-2.9837838v11.87027026zm12.9405406.0162162c.6162162-.0108108 1.1972973-.1378378 1.7432432-.3810811.545946-.2432432 1.0216217-.5702702 1.4270271-.9810811.4054054-.4108107.7243243-.89189179.9567568-1.44324315.2324323-.55135136.3432431-1.13513518.3324324-1.75135139v-7.36216216h-2.7405406v7.37837838c0 .24864864-.0432432.48108108-.1297297.6972973s-.2108108.4054054-.372973.56756753c-.1621622.16216224-.3513513.29189191-.5675676.38918922-.2162162.0972973-.4432432.14594596-.681081.14594596-.4864866 0-.9081082-.16756761-1.2648649-.50270271-.3567568-.35675676-.5351352-.77297298-.5351352-1.24864865v-7.42702703h-2.7405405v7.44324325c.0108108.61621621.1324324 1.1945946.3648649 1.73513514.2324324.54054054.5648648 1.02702711.9972973 1.45945951.4216216.4108107.9027027.727027 1.4432433.9486486.5405405.2216216 1.1135134.3324324 1.7189189.3324324zm8.8378378-.0162162v-6.94054054l3.8918919 6.94054054h2.9675676v-11.9027027h-2.7405406v6.95675676l-3.8756756-6.92432432h-2.9837838v11.87027026zm10.7351352.0648649c.8108108-.0432433 1.5621621-.2243243 2.254054-.5432433.6918919-.3189189 1.2945946-.7432432 1.8081081-1.272973.5135135-.52972968.9162162-1.1432432 1.2081082-1.84054049.2918919-.69729729.4378377-1.44594595.4378377-2.24594594 0-.81081081-.1486486-1.57297297-.4459459-2.28648649-.2972973-.71351351-.7027027-1.34054054-1.2162162-1.88108108s-1.1189189-.97837838-1.8162162-1.31351351c-.6972973-.33513514-1.4405406-.52432432-2.2297297-.56756757v-.01621622h-2.7405406v11.9675676zm0-2.74978378v-6.4540541c.4216216.04324325.8108108.15945946 1.1675675.34864865.3567568.18918919.6702703.43243244.9405405.72972973.2702703.2972973.4810812.63783784.6324325 1.02162163.1513513.38378378.227027.78648648.227027 1.2081081 0 .41081082-.0756757.8-.227027 1.16756758-.1513513.36756756-.3594594.68918919-.6243243.96486486-.2648648.27567567-.5783784.5027027-.9405406.68108112-.3621621.17837833-.754054.28918914-1.1756756.33243243zm15.2918919 2.78221618v-2.74054053h-4.9135135l4.9783783-9.24324326-8.9189189-.01621621v2.75675676h4.3297297l-4.9783784 9.24324324zm7.0702702-.0162162 1.3621622-5.96756759 1.572973 5.96756759h2.708108l3.518919-11.9837838h-2.8702703l-1.9297297 6.60000001-1.7513513-6.60000001h-2.691892l-1.508108 6.63243243-2.2054055-6.63243243h-2.8864865l3.9567568 11.9837838zm10.5932433-.0810811.4864864-1.4432432h3.745946l.4702703 1.4432432h2.8864865l-3.8432433-11.9027027h-2.5945945l-4.0540541 11.9027027zm3.3567567-4.18970272h-1.9297297l.9891892-2.88648648zm7.7837838 4.18970272v-6.94054054l3.8918917 6.94054054h2.9675678v-11.9027027h-2.7405405v6.95675676l-3.8756757-6.92432432h-2.9837838v11.87027026zm17.3189192.0972973v-2.74054053h-4.913513l4.978377-9.24324326-8.918918-.01621621v2.75675676h4.32973l-4.978379 9.24324324zm3.81081-.0810811v-11.9189189h-2.74054v11.9189189zm7.281081.0324324c.313514 0 .62973-.0243243.948649-.072973.318919-.0486486.62973-.127027.932433-.2351351v.2918919h2.756756v-6.66486483h-5.14054v2.74054054h2.383784v.59999996c-.313514.22702708-.654054.38918923-1.021622.48648653-.367567.0972973-.737838.13243245-1.11081.10540544-.372974-.0270271-.735136-.11891895-1.086488-.27567573-.351351-.15675678-.667566-.37567566-.948648-.65675674-.313513-.31351351-.551351-.67027027-.713513-1.07027027-.162163-.4-.243243-.80540541-.243243-1.21621621 0-.41081082.08108-.81621623.243243-1.21621622.162162-.4.4-.75675676.713513-1.07027028.313513-.31351351.67027-.54864864 1.07027-.7054054.4-.15675675.805405-.23513513 1.216216-.23513513s.816217.07837838 1.216217.23513513c.4.15675676.756756.39189189 1.07027.7054054l1.945946-1.94594594c-.583784-.58378379-1.243243-1.02162162-1.978379-1.31351352-.735134-.29189188-1.486486-.43783783-2.254054-.43783783-.767567 0-1.518919.14594595-2.254054.43783783-.735134.2918919-1.394594.72972973-1.978377 1.31351352-.583784.58378379-1.01892 1.24324324-1.305407 1.97837838-.286486.73513513-.429729 1.48648649-.429729 2.25405406 0 .76756756.143243 1.51621621.429729 2.24594594.286487.72972975.721623 1.38648646 1.305407 1.97027027.583783.5837838 1.243243 1.0216216 1.978377 1.3135135.735135.2918919 1.486487.4378378 2.254054.4378378z"
|
||||
fill="#000"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.0 KiB |
148
public/vendor/blade-country-flags/1x1-ad.svg
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
|
||||
<path fill="#d0103a" d="M0 0h512v512H0z"/>
|
||||
<path fill="#fedf00" d="M0 0h348.2v512H0z"/>
|
||||
<path fill="#0018a8" d="M0 0h163.8v512H0z"/>
|
||||
<path fill="#c7b37f" d="M240.3 173.3c6.2 0 8.7 5.3 14.9 5.3 3.8 0 6-1.2 9.3-3.1 2.4-1.3 3.8-2 6.5-2s4.4.8 5.8 3.1a9 9 0 011 5.4 32 32 0 01-2.1 6.7c-.5 1.2-1 2-1 3.3 0 3.3 4.4 4.4 7.4 4.5.7 0 6.3 0 9.7-3.4-1.9 0-4-1.5-4-3.4 0-2 1.5-3.5 3.5-4.1.4-.1 1 .2 1.4 0 .5-.2.2-.8.7-1.1 1-.8 1.6-1.3 2.9-1.3a3 3 0 012 .6c.3.2.5.6.9.6 1 0 1.4-.6 2.3-.6.7 0 1.2 0 1.8.4.6.3.6 1.2 1.2 1.2.3 0 1.9-.6 2.8-.6 1.7 0 2.7.6 3.8 2 .3.3.5 1 .8 1a5 5 0 013.9 2.4c.2.3.5 1.1.9 1.3.4.1.7.1 1.3.5a4.8 4.8 0 012.3 3.9c0 .5-.3 1.2-.4 1.7-1.5 5.2-5.1 7-8.7 11.4-1.6 2-2.8 3.5-2.8 6 0 .6.8 1.7 1 2.2-.1-1.2.4-2.6 1.6-2.7 1.7 0 3 1.2 3.2 2.8 0 .4 0 1.1-.2 1.5.9-.6 2-1 3.2-1.1a9.9 9.9 0 011.5 0 13 13 0 017.4 3 16.9 16.9 0 015.9 13.4c-.7 4.3-.3 11.9-11 15 2 .8 3.3 2.3 3.3 4.1 0 2-1.5 3.8-3.5 3.8a3.5 3.5 0 01-2.8-1.1c-2.2 2.2-2.7 4.5-2.7 7.7 0 1.9.4 3 1.2 4.7a9 9 0 003 4.2c.8-1.2 1.6-2 3-2 1.5 0 2.7.4 3.3 1.7.1.3 0 .7.2 1 .2.5.7.6 1 1.1.3.8 0 1.4.3 2.2.2.5.7.6 1 1 .3.9.4 1.4.4 2.3 0 2.4-2.2 4-4.6 4-.8 0-1.2-.2-1.9-.1 1.4 1.3 2.4 2 3.5 3.6a14.1 14.1 0 012.3 8.2c0 3.6-.6 5.8-2.2 9a16 16 0 01-5.6 6.8 28 28 0 01-12.8 5c-3.4.7-5.3 1-8.8 1.2l-11.3.6c-5.7.4-9.7 1.2-13.8 5.3 2 1.4 3.3 2.8 3.3 5.2 0 2.4-1.5 4.2-3.9 5-.5.1-1 0-1.4.2-.6.3-.6 1-1.2 1.4a5 5 0 01-3 .8c-2.2 0-3.6-.5-5.2-2-1.7 1.4-2.3 2.7-4.3 3.9-.7.3-1 .8-1.7.8-1.2 0-1.8-.7-2.7-1.4a18.4 18.4 0 01-3.6-3.3c-1.8 1.1-2.9 2-5 2a5.2 5.2 0 01-3.1-.9c-.6-.3-.7-.9-1.3-1.2-.6-.4-1-.2-1.7-.5-2.4-1-4-2.8-4-5.5 0-2.3 1.5-3.8 3.6-4.7-4-4-8-4.7-13.6-5-4.4-.4-7-.4-11.3-.7-3.4-.2-5.4-.6-8.8-1.1-2.6-.4-4.1-.6-6.5-1.7-8.2-3.8-13.4-9-14.5-18v-2c0-4.7 1.8-7.5 5-10.8-.8-.2-1.3 0-2.2-.2-2-.8-3.5-2.2-3.5-4.4 0-.8 0-1.4.4-2 .3-.6.8-.7 1-1.2.1-.8 0-1.3.3-2 .2-.5.6-.5.8-1 .7-1.5 1.6-2.7 3.3-2.7 1.4 0 2.3.8 3 2 1.4-.7 1.8-1.7 2.6-3 1.3-2.2 1.8-3.7 1.8-6.2a11 11 0 00-.7-4.4c-.4-1.2-.5-2-1.4-3a3.5 3.5 0 01-2.8 1.2c-2.3 0-4-2-4-4.3 0-1.7.8-3 2.4-3.7-1.3-1-2.4-1.2-3.7-2-2.1-1.4-2.9-2.7-4.2-4.8-1-1.4-1.2-2.3-1.6-3.8a15 15 0 01-.9-5v-1.3c.6-3.9 1.3-6.4 3.8-9.5a11 11 0 014.6-3.9 11.6 11.6 0 016.5-1.3c1 .2 1.5.2 2.3.7.3.2.9.7.9.3l-.2-1c0-1.7 1.2-3.2 2.8-3.2 1.2 0 1.7 1 2.3 2 .4-.6.6-1 .6-1.7 0-2.8-1.5-4.2-3.2-6.3-3.7-4.7-8.4-6.9-8.4-12.8 0-1.8.9-3 2.4-4 .4-.2 1 0 1.5-.2.3-.3.3-.7.5-1.1a4 4 0 011.3-1.3c.8-.8 1.6-.5 2.5-1.2.5-.3.6-.7 1-1.2 1-1.2 2-1.8 3.6-1.8.8 0 1.3 0 2 .3.3 0 .8.5.9.4.1-.2.6-.7 1.1-1 .7-.3 1-.4 1.8-.4.9 0 1.4.5 2.3.5.4 0 .4-.3.7-.5.8-.5 1.2-.8 2.2-.8 1 0 1.4.3 2.2.8.7.4.8 1 1.6 1.5l1.2.3c2 .6 3.6 2 3.6 4.2 0 1.2-.2 2-1.1 2.8-.7.6-1.4.5-2.3.8a13 13 0 009 2.8c3.5 0 7.6-1.3 7.6-4.7 0-1.6-.9-2.4-1.5-3.8a15 15 0 01-1.7-6.9c0-2.2.2-3.5 1.5-5.3 1.3-1.9 3-2.3 5.2-2.3z"/>
|
||||
<g fill="none" stroke="#703d29">
|
||||
<path stroke-linejoin="round" stroke-width=".5" d="M217.9 191.2c.2.9.9 1.6 2 2a3 3 0 003-1.1c.8-1 .7-2.3.5-3.3a3.8 3.8 0 00-1.4-1.8l-4.1 4.2z"/>
|
||||
<path stroke-linecap="round" stroke-width=".5" d="M320.8 252.9c-1-2.3-3.4-1.3-3.6 0-.3 3 2.3 3.8 4.1 3.3.9-.2 1.6-.8 2-1.5.5-.8.6-2 .3-3a4 4 0 00-.7-1.3 4 4 0 00-1-1c-.7-.4-1.5-.5-2.7-.5-4.4 0-8.3 5.3-9.6 10.8a23.6 23.6 0 00-.2 9.6 18 18 0 004.7 9 20 20 0 007.9 4.7c1.1.3 2.2.3 3.1 0 2.7-.5 3.9-3 2.6-5.5-1.1-2-4.3-3.2-5.8-.6a2.6 2.6 0 00-.4 1.3c0 .7.3 1.5.8 1.8 1.2.8 3 .6 3-1.5"/>
|
||||
<path stroke-width=".7" d="M307 283.2a9 9 0 015.3-3c2.4-.2 4.5.5 6.6 1.6a14.9 14.9 0 018.6 13.6c0 3-.8 6-1.5 7.6-.7 1.3-2.5 7.1-12.3 11.2a67.4 67.4 0 01-20.5 3c-8.4.4-16 .7-20.5 6.2"/>
|
||||
<g stroke-width=".6">
|
||||
<path d="M309.1 292.6c-.2-.9 0-1.7.7-2.7 1-1.3 2.9-1.7 4.7-.7.6.3 1.3.8 2 1.7l1 1.2.8 2c2 5.6-1.2 11.7-5.2 14.1-3.2 2-7 2.8-11.5 3.3l-5.3.3h-7.6a56.3 56.3 0 00-5.8 0l-6 .6-4.4.8-1.5.4-1 .3a31.9 31.9 0 00-7.7 3.3c-.7.4-1.5.9-2 1.4l-1.1 1c-1.5 1.4-3.1 3-3.5 5.3v1.3c0 1.4 1.1 3.4 4.3 4m4.4-136.1c.6 1.2 1 2 .6 3.1-.4 1.4-1.4 2.3-2.8 2.3-3.2 0-5-3.8-3.6-6.2 2.5-4.3 7.4-1.9 12 .2-.3-1-.7-1.4-.6-2.8 0-3.3 2.6-4.8 3.6-8 .6-1.8.8-3.4-.6-4.7-1.1-1.2-2.5-1.1-4-.5-3.1 1.2-6.8 4.6-13.3 4.7-6.5 0-10.3-3.5-13.4-4.7-1.5-.6-2.9-.7-4 .5-1.4 1.3-1.2 3-.6 4.8 1 3 3.5 4.6 3.6 8 0 1.3-.3 1.6-.6 2.7 4.6-2 9.7-4.7 12-.2 1.3 2.5-.4 6.2-3.6 6.2-1.4 0-2.4-1-2.8-2.3-.4-1.1 0-2.2.6-3.1"/>
|
||||
<path stroke-linecap="round" d="M251.7 191.9c1.2 1 2 2.1 1.9 4-.1 2-.7 2.5-2.2 3.6m1.9-3c-.1 1.2-.6 2-1.8 2.5"/>
|
||||
</g>
|
||||
<path fill="#c7b37f" stroke="none" d="M221.4 186.6l.5.4.6.7.4.8.2.6v1.5l-.2.7-.4.5-.4.5-.7.3-.9.2-.7.2-.8-.4-.8-.5-.4-.7-.3-.8v-.3l3.9-3.7z"/>
|
||||
<path stroke-linecap="round" stroke-width=".5" d="M220.2 189.7c-.3-1.3-1.8-1.6-2.4-.8-1 1.2-.3 3.2 1.6 3.8a3 3 0 003-1.1c.8-1 .8-2.3.5-3.2-.2-.7-.7-1.2-1.4-1.7-2.2-1.7-5.7-1.3-6.8 1.5-1.5 3.6 1.7 6.3 4.7 8.3 3.8 2.5 8 3 11.3 3 7.3-.1 12.9-3.6 16.5-5.6.8-.5 1.7-.4 2.1.2.5.6.5 1.5-.2 2.2"/>
|
||||
<path stroke-width=".5" d="M198.4 289l-1.6.5-1.7 1.3-.7 1-.9 1.6-.4 1.2-.3 1.5-.2 1m15.2-8v1.4l-.3 1-.7 1.7-1.1 1.5-1.2 1-1 .4-1.2.3"/>
|
||||
<path stroke-width=".6" d="M255.8 327.3c-.3 1.3-1.5 2.8-4.3 3.4h-.5"/>
|
||||
<path stroke-width=".7" d="M323.4 285a14.6 14.6 0 014.5 10.8c-.1 2.8-.8 6-1.6 7.5-.7 1.3-2.5 7.2-12.3 11.2a67.7 67.7 0 01-20.5 3.1c-8.2.4-15.8.7-20.3 6"/>
|
||||
<path stroke-width=".5" d="M310 290.3c.6-.9 2.8-1.9 4.6-1a5 5 0 012 1.7"/>
|
||||
<path stroke-width=".7" d="M321.3 283l1.1.4a5.6 5.6 0 003.2 0c2.2-.6 3.7-2.7 2.5-5.5a4.5 4.5 0 00-1.4-1.7"/>
|
||||
<path stroke-linecap="round" stroke-width=".5" d="M192.2 223.8c-1.5 1-2.6 1.2-3.8 2.5a22.5 22.5 0 00-2.1 5.5m36.9-41.4c0 1.4-1 2.3-2.4 2.6"/>
|
||||
<path stroke-width=".5" d="M317.7 217.6c3.8 0 14.8 2.9 14.9 15.8 0 12.8-8 14.9-11.1 15.7"/>
|
||||
<path stroke-width=".5" d="M318.7 217.6c6.5-.3 13.2 4.5 13.5 16.5.3 9.4-6.4 13.6-9.6 14.5m-7.6 14.1l.2-1.2.4-2 .6-1.7.7-1.3.8-1m6.3-2.7l-.1 1.2-.4.9-.5.8-.7.5-1 .3h-1.5m-11.4-42.3l.3-1.3.6-1.3.7-1.2 1.4-1.7 1-1.2 1.7-1.7 1.5-1.5 1-1.1 1.2-1.5 1-1.7.7-1.3.4-1.8.1-2.1-.2-.7M310 296.7l1.3-.3 1-.5.5-.5.4-.7.2-1v-.6M187 283.3l.9.1h1.2l1.3-.5m4-29.3l-.2 1.2-.2.4-.4.5-.5.4-.6.3-.8.1h-.5m8-12.5l-.3 1.8-.4.7-.7 1-1 .7-.9.5-1.8.4m12.2-31.8l-.3 1-.5.8-.6.9-.8.7-1 .5-.8.2h-.6m.3-5v.8"/>
|
||||
<g stroke-width=".5">
|
||||
<path stroke-linecap="round" d="M203.4 243.3a5.5 5.5 0 01-1.6 1M322.2 280l.4.2c1 .7 3.3-.2 2.7-2"/>
|
||||
<path d="M318.2 255.7c.8 1 2.4 1.3 3.6 1 .9-.2 1.5-.8 2-1.6.4-.8.6-1.9.3-3a4 4 0 00-.7-1.3 5.4 5.4 0 00-1.1-1.1l-.3-.2m5.2 27.2a3.1 3.1 0 000-.6c0-.9-.4-1.7-1-2.3-.2-.2-.4-.5-.7-.6m.4.3c0-1.5-1.3-2.5-2.8-2.8m-3.3 2.3c-.4-.3-.8-.5-1-.9a12.6 12.6 0 01-3.5-8.5c0-3.3 1.3-6.7 2.8-8M273 323.3l1.5-1.3 1-.8 1.8-1.1 1.8-.9 1.2-.3 2.5-.5 2.9-.5M262 333.4a14.1 14.1 0 01-6.1 5 14.1 14.1 0 01-6.1-5"/>
|
||||
<path stroke-linecap="round" d="M251.5 330.1a8 8 0 01-1.7 3.3"/>
|
||||
<path d="M251.8 328.4l-.4 1.8m-1.8 3.3l-.8.8-1.4.7-1.5.5m-4.5-142.2c.2-.6.4-1.1.3-2.1 0-3.4-2.5-4.9-3.5-8-.6-1.8-.9-3.4.5-4.8 1.2-1.1 2.5-1 4-.5 3.2 1.2 6.9 4.7 13.4 4.8-6.5-.1-10.2-3.6-13.3-4.8-1.6-.6-3-.8-4.2.4-1.4 1.3-1 3-.4 5 1 3 3.3 4.5 3.4 7.9 0 1-.2 1.5-.4 2m14.9-10.7c6.4-.4 11.9-4.7 13.7-5 1.6-.3 2.4-.2 3.6.9-1.2-1.1-2.5-1-4-.5-3 1.2-6.8 4.7-13.3 4.8m63.7 90.3a12.4 12.4 0 01-5-9.9c0-3.3 1.3-6.7 2.9-8m-56 78a14.1 14.1 0 01-6 5 14 14 0 01-6.2-5"/>
|
||||
<path stroke-linecap="round" d="M245.3 195l1.9-1c.8-.6 1.9-.5 2.3 0 .5.7.6 1.7-.1 2.3"/>
|
||||
<path d="M235.8 199.4c4.4-.9 8-2.9 10.6-4.4m25.9 131.4l.6.7.2.7c.2 1.2-.6 2-1.5 2.1a2.7 2.7 0 01-2.8-1.6m-33.3-129.1c4.4-1 8-2.9 10.7-4.4m78 85.5c-.7.3-1.2.3-2.2-.2l-1.5-.8c-2-1.1-4.5-3-6.8-7.2a15 15 0 01-1.3-3.6c-.2-.9-.4-1.8-.4-2.7a20.5 20.5 0 01.5-5 16.2 16.2 0 013.2-7.2c1-1.3 1.7-2 3.5-2m-115-31.5a5.7 5.7 0 012.1 4.6c0 2.5-2 6.5-7.2 8-2 .5-3.8 0-5-.7"/>
|
||||
<path d="M205 228.5c1 .6 1.3 1.4 1.3 2.6 0 .8-.5 2-1.5 3a9.9 9.9 0 01-7 3.2 8.2 8.2 0 01-4.8-1.4 7.3 7.3 0 01-3-4.3"/>
|
||||
<path d="M205 233.8c1 1 1.3 2.2 1.3 3.7 0 2.2-.9 3.9-3 5.7a5 5 0 01-1.5 1m103.6-17.6v2.9m-.3-3.6v4m.3-12.6v5.2m-.3-6.3v7m-1.5 65.7c-1 2-1.8 3-3.3 4.5a15.7 15.7 0 01-4.7 3.3 19.7 19.7 0 01-5.2 1.7c-2.1.5-3.4.6-5.5.7-2 0-3.1 0-5.1-.2-2.1 0-3.3-.4-5.4-.6-1.7-.1-2.7-.3-4.5-.3a22.8 22.8 0 00-8.7 1.5c-2.2.9-4.6 2.4-5.1 3-.5-.6-3-2.1-5.1-3a22.8 22.8 0 00-8.8-1.5c-1.7 0-2.7.2-4.4.3-2.1.2-3.3.5-5.4.6a37.3 37.3 0 01-10.6-.5c-2.1-.5-3.3-.8-5.3-1.8a15.7 15.7 0 01-5-3.7m33.6 42.7l1.5-.2m24.2-1.9l1.4-.1 1.4-.6 1-.5 1.3-1.6.3-.6.2-1.3v-.6M314 218.8c.6-2.1-.2-4.3-2.2-4.3m-105.6 37.3a6.5 6.5 0 01-2.9 3.7m3-37.4a5.2 5.2 0 01-3 3.2c-1.4.7-3.2 0-4-.6"/>
|
||||
<path stroke-linecap="round" d="M195 225.9c1.3.6 2.5-.3 2.3-1.9a2.3 2.3 0 00-2-1.8"/>
|
||||
<path d="M200.1 293.3c.3.3.4.6.7.6.5.1 1 .3 1.5-.4.7-.9.3-2.2-.4-3.1a4 4 0 00-4.7-.7c-.5.3-1.3.7-2 1.6l-.9 1.3-.9 2c-1.6 4.6.3 9.5 3.4 12.5"/>
|
||||
<path stroke-linecap="round" d="M272.2 326.3l.5.6.2.7c.2 1.2-.6 2-1.6 2-1.3.2-2.2-.6-2.7-1.6"/>
|
||||
<path d="M311.6 187.8a6 6 0 015 5.6c0 3.6-1.2 4.9-3.1 7.4-2 2.7-8.5 7.7-8.5 13.4 0 3.4 1 5.6 3.4 6.7 1.6.7 3.5 0 4.3-.8 2-1.9 1.3-5.2-1-5.6-2.5-.4-3 3.7-.5 3.4m14.3 55.3a3 3 0 00-2.9-2.5 3 3 0 00-3 3c0 .8.4 1.5.9 2"/>
|
||||
<path d="M307.1 220.1a5.7 5.7 0 00-2.1 4.6c0 2.5 2 6.5 7.2 8 1.9.5 3.8.4 5-.3m-124.9-8.2a7.5 7.5 0 00-3.8 2.7 13.5 13.5 0 00-1.9 4.9c-.1.7-.3 3 .1 5.3a12.7 12.7 0 001.9 4.5l.8 1 .9.7m51.2 73.6c3.9 1.8 6.7 3 9.2 6.9a8.2 8.2 0 01-1.7 10 6.6 6.6 0 01-5.4 1.6c-1.5-.2-3-1.3-3.2-2m-37.2-90a6.6 6.6 0 013.1 6c0 3-1.5 4.8-3.2 5.9"/>
|
||||
<path stroke-linecap="round" d="M201.2 253.1c3.3 4.1 5 6.5 5.1 11.3.1 4.6-1.4 7.7-4 11"/>
|
||||
<path d="M263.8 199.5a3.3 3.3 0 001.3-1.8c.4-1.2.4-2.2-.3-3.1.8 1 .9 1.9.7 3.1-.2.8-.7 1.2-1.3 1.8m41.2 69v12.8a19.6 19.6 0 01-.3 3.4m0-17.5V283l-.4 2.1m.4-34.3v11.6m.3-10.7v9.4m0-21.5v7.1m-.3-7.9v8.8m.3-15.2v2.8m-.3-3.4v4m-1.4 52.2l-.3.5a15 15 0 01-3.4 4.6 15.7 15.7 0 01-4.6 3.2 19.7 19.7 0 01-5.3 1.8c-2 .5-3.3.6-5.5.7-2 0-3 0-5-.2-2.2-.1-3.3-.4-5.4-.6-1.8-.1-2.8-.3-4.5-.3a22.9 22.9 0 00-8.8 1.5c-2.1.9-4.5 2.4-5 3a17 17 0 00-5.1-3 22.9 22.9 0 00-8.8-1.5c-1.7 0-2.7.2-4.5.3-2 .2-3.2.5-5.4.6a37.3 37.3 0 01-10.5-.5 19.8 19.8 0 01-10-5 17.6 17.6 0 01-1.9-2.3m-1.6-2.5a8 8 0 01-1.8 6.2c-.7.7-2.2 2-4 2-3 .1-4-2-4.1-2.5"/>
|
||||
<path d="M204.5 287a8.2 8.2 0 011.5 2.1c.7 1.4.5 3.8-.1 5a3.7 3.7 0 01-.3.3m-16.1 14.4c1.8 2 4.5 4 8.7 5.7a67.4 67.4 0 0020.5 3.1c8 .3 15.5.7 20 5.7m13.9-3.3a12 12 0 013.2 4.5m-5.9 9.2a7 7 0 01-.5.5 6.6 6.6 0 01-5.3 1.6 5 5 0 01-3.5-2m-4.3-2.4l.3.3a6 6 0 004 2m21.6 0a14.1 14.1 0 01-6.1 4.9 14.1 14.1 0 01-6.1-5l-.2-.3m12.4.3l.6.6a6.6 6.6 0 005.3 1.6 4.4 4.4 0 003.3-2l.4-.6"/>
|
||||
<path d="M271.2 333.3l-.6 1-.9.7-1.3.6H267"/>
|
||||
<path d="M274.4 324.2a6.1 6.1 0 011.9 2.3c.2.6.4 1.3.4 2a4.7 4.7 0 01-1.1 3.2 6 6 0 01-4.4 2 4.4 4.4 0 01-.3 0m.1-.2a5.5 5.5 0 01-4.1-1.7m51-54.3a19 19 0 01-4-5.2 15 15 0 01-1.3-3.6c-.2-.9-.4-1.7-.4-2.6 0-1.6.1-3.2.5-5a16.7 16.7 0 013.3-7.3c.5-.6 1-1.4 1.6-1.8m-1-60.6c2 .2 3.8 2.3 3.8 4.5 0 3.1-1 4.4-3.5 7.4-2.1 2.7-8.5 7.3-8.3 11.7 0 .8.5 1.6 1 2.2M307 220c.4.5 1 .8 1.6 1.1a4 4 0 003.4-.2m-16.9-34.6a4.8 4.8 0 011.8 2.1c1.4 3.6-1.8 6.3-4.8 8.3a17 17 0 01-6.6 2.6"/>
|
||||
<path d="M291.7 193.2c-.7 0-1.6-.2-2.5-1.2a2.7 2.7 0 01-.6-.7m-11.9 3.9a3.7 3.7 0 01-1-.8c-.7-.8-1.2-1.9-.7-3.5.5-1.5 3-5.8 3-8.7.3-4.5-1.5-7.2-4.2-8.2"/>
|
||||
<path stroke-linecap="round" d="M277.9 181.2l-.1 1.7-.5 1.7-.9 2.3-.7 1.6-.7 1.5-.3 1-.2.8.1.8m30.5 101c0 .3.4.6.4.6a6.2 6.2 0 004.4 2.5c3 0 3.7-2.1 3.8-2.6.4-2.3-.4-3-1.6-3.6 0 0-.7-.3-1.5-.2"/>
|
||||
<path d="M189.6 283.5a5.5 5.5 0 01-3 0c-2.3-.7-4-2.9-3.1-5.5m10.7-25.5c.2.2.3.6.3.8.3 3-2.2 3.8-4 3.4a4.5 4.5 0 01-2.5-1.9 3.8 3.8 0 01-.5-1.8m17.7-19c.4.5.8 1 1 1.5m-1-6.8c.5.3.8.6 1 1"/>
|
||||
<path stroke-linecap="round" d="M206.3 232.4a6.8 6.8 0 01-1.3 2 9.9 9.9 0 01-7 3.1 8.2 8.2 0 01-4.8-1.4 7.6 7.6 0 01-3.3-4.4"/>
|
||||
<path d="M204.3 220.2a6.2 6.2 0 012 2.7"/>
|
||||
<path stroke-linecap="round" d="M206.3 226.6a9.4 9.4 0 01-7 6.3 7 7 0 01-5.2-.9"/>
|
||||
<path d="M192 226c.2 2.1 1.7 3.7 4.3 3.8 3.8 0 6-5.4 2.7-9.3"/>
|
||||
<path stroke-linecap="round" d="M183.6 244.4c.5.7 1.2 1.3 1.8 1.9a13.4 13.4 0 004.8 2.6m4.2.4c3.4-.4 5.3-2.9 4.9-5.8-.3-2.3-2.4-4-3.8-4"/>
|
||||
<path d="M199.9 214.5c1.4 0 2.3 1.3 2.2 2.4"/>
|
||||
<path stroke-linecap="round" d="M199.5 194.5a9.2 9.2 0 004 4.6M319 224a3.7 3.7 0 01-3.3 5.7 4.2 4.2 0 01-3.5-2"/>
|
||||
<path d="M305.4 199.3v12.6"/>
|
||||
<path stroke-linecap="round" d="M195 225.9c1.2.8 2.6-.6 2-2.1-.3-1-1.8-2.1-3.8-.8-2.1 1.5-1.5 6.3 2.7 6.3 3.7.1 6-5.4 2.7-9.2-3.2-3.7-9-2.9-13 .2a17.1 17.1 0 00-5.6 9.3 17 17 0 000 7.4 16.7 16.7 0 002.4 6l1 1.3 1.6 1.6a12 12 0 008.3 3c3.8-.1 6-2.8 5.5-5.9-.4-3-3.4-4.5-5.4-3-1.3.9-1.8 3.8.6 4.5 1.3.4 2.5-1.3 1.6-2.3m103.6-57.5c2.2-1.2 3.8-1 5 .7a7.9 7.9 0 011.3 5.8c-.4 2.2-1 3-2.8 4.6"/>
|
||||
<path stroke-linecap="round" d="M304.4 185.6c2.5-1.6 5.2-1 6.6 1.3a7.3 7.3 0 011.3 4.9 9 9 0 01-4.6 7.3"/>
|
||||
<path d="M316 191.3c2 .2 3.7 2 3.7 4.2 0 3-.8 4.4-3.3 7.4-2.1 2.6-8.4 7.2-8.3 11.7 0 1.6 1.5 3.2 2.7 3.3"/>
|
||||
<path stroke-linecap="round" d="M316.3 225.9c-1.2.8-2.6-.5-2-2 .4-1 1.8-2.2 3.7-.9 2.2 1.5 1.6 6.3-2.6 6.3-3.7.1-6.3-5.2-2.7-9.2 3.3-3.7 9.4-3 13.2 0 1.6 1.4 5 5 5.6 9.6.9 5.6.7 12.6-5 16.8a13.8 13.8 0 01-8.5 2.4c-3.8-.1-6-2.8-5.5-5.9.4-3 3.3-4.3 5.4-3 2.2 1.1 1.8 4.3-.6 4.5-1.4.2-2.5-1.3-1.6-2.3"/>
|
||||
<path d="M314.3 224c.6-2.9 3-3.1 5-3.1 5.2 0 8.9 6.3 9 12.4 0 7.6-3.3 12.1-9 12.3-1.3.1-3.8-.6-3.9-2.3"/>
|
||||
<path stroke-linecap="square" d="M317.5 222.7c5.6 1.2 7.6 6.2 7.6 11 0 3.9-.4 9.2-8 11"/>
|
||||
<path d="M326.7 276.3a3.1 3.1 0 10-5 1.8"/>
|
||||
<path stroke-linecap="round" d="M315.6 271.5a13.3 13.3 0 005 4.8m-1 8.4c-2.7-1.7-7.7-4-12.2-1.8a6.3 6.3 0 00-3.4 3.5 8 8 0 001.5 7.7 6 6 0 004 2.1c3 0 3.7-2 3.8-2.5.3-2.2-1-3.1-1.6-3.3-.6-.2-2.2-.2-2.6 1-.1.4-.1 1.1.2 1.6"/>
|
||||
<path stroke-linecap="round" d="M272.4 326.7c.8 1.8-.1 2.6-1.3 2.7-1.7.2-2.6-1.1-2.7-2.3-.2-2 1.5-3.9 3.5-3.8a4.4 4.4 0 014 2.8c.2.6.3 1.2.3 1.9a4.7 4.7 0 01-1.1 3.3 6 6 0 01-4.3 2c-3.4.1-6-3-6-6.3 0-6.1 9.1-9.5 12.8-10.4a67 67 0 0114.3-1.8c2.9-.2 5-.1 8.1-.4 2.8-.3 4.3-.5 7.2-1.1a22 22 0 0010-5.2 13.7 13.7 0 003.7-17.7 11.5 11.5 0 00-8.2-5.3c-3-.5-5.6.8-7.2 3.8a6.2 6.2 0 00.1 5c.5.9 2 2.3 3.8 2.3 3 0 3.8-2 3.9-2.5.3-2.2-1-3.1-1.6-3.3-.6-.2-2.2-.2-2.6 1-.1.4-.1 1.1.2 1.6"/>
|
||||
<path stroke-linecap="round" d="M269.8 317c-4 1.7-6.8 3-9.2 6.7a7.9 7.9 0 00-1 4c0 2.1 1 4.5 2.7 6a6.6 6.6 0 005.4 1.7c1.5-.2 3-1.3 3.2-2"/>
|
||||
<path d="M308 243.3c-1.7.6-3 3.4-3 6 0 3 1.4 5 3.2 6"/>
|
||||
<path stroke-linecap="round" d="M310 253.1c-3.2 4.1-5 6.5-5 11.3-.1 4.6 1.3 7.7 4 11"/>
|
||||
<path d="M292.7 185.6l.3-.4c1.3-2 3.7-2.5 5.5-1.2 2 1.6 2.6 4.3 2 7.2a7 7 0 01-3.2 4.4"/>
|
||||
<path stroke-linecap="round" d="M212 184.7c-2-1-3.7-.8-5 .7a7.5 7.5 0 00-1.2 5.8c.4 2.1 1 3 2.8 4.6"/>
|
||||
<path d="M206.9 185.6c-2.5-1.6-5.2-1-6.6 1.3a7.3 7.3 0 00-1.3 4.9 9 9 0 004.6 7.3"/>
|
||||
<path d="M199.7 187.8a5.5 5.5 0 00-4.8 5.3c0 3.6.9 5 2.9 7.7s8.5 7.7 8.5 13.4c0 3.4-1 5.6-3.4 6.7-1.6.7-3.5 0-4.3-.8-2-1.9-1.2-5.2.9-5.6 2.6-.4 3.1 3.7.6 3.4"/>
|
||||
<path d="M195.2 191.3c-2 .2-4 2-4 4 0 3.1 1.2 4.5 3.7 7.6 2 2.6 8 7.2 7.9 11.6 0 1.6-1.2 3.7-2.3 3.4"/>
|
||||
<path stroke-linecap="round" d="M190.5 252.9c1-2.3 3.4-1.3 3.5 0 .4 3-2.2 3.8-4 3.3-1-.2-1.6-.8-2-1.5a3.9 3.9 0 01.4-4.3 4 4 0 011-1c.7-.4 1.5-.5 2.7-.5 4.4 0 8.3 5.3 9.6 10.8a23.6 23.6 0 01.2 9.6 18 18 0 01-4.7 9 20.1 20.1 0 01-7.9 4.7 5.6 5.6 0 01-3.2 0c-2.2-.6-3.7-2.8-2.5-5.5 1-2.1 4.3-3.2 5.8-.6.1.3.3.7.3 1.3 0 .7-.3 1.5-.8 1.8-1.1.8-3 .6-2.9-1.5"/>
|
||||
<path d="M187 280.3c.8.3 1.3.3 2.3-.2l1.5-.8c2-1.1 4.5-3 6.7-7.2a15.1 15.1 0 001.4-3.6c.2-.9.4-1.8.4-2.7a20.5 20.5 0 00-.5-5 16.2 16.2 0 00-3.2-7.2c-1-1.3-1.7-2-3.5-2m-7.5 24.7a3.1 3.1 0 115 1.8"/>
|
||||
<path d="M185.8 273.2a3 3 0 012.9-2.5 3 3 0 013 3 3 3 0 01-1 2"/>
|
||||
<path d="M191.5 273a12.4 12.4 0 005-9.9c0-3.3-1.3-6.7-2.9-8"/>
|
||||
<path stroke-linecap="round" d="M195.7 271.5a13.2 13.2 0 01-5 4.8"/>
|
||||
<path d="M203.7 283c-.8-1.8-2.2-2.6-4.6-2.9a11 11 0 00-6.6 1.6 14.8 14.8 0 00-8 9 13.7 13.7 0 00-.6 4.6c0 2.9.8 6 1.6 7.5.6 1.4 2.4 7.2 12.2 11.2a67.7 67.7 0 0020.6 3.2c8.3.3 16 .6 20.4 6.1"/>
|
||||
<path stroke-linecap="round" d="M191.7 284.7c2.7-1.7 7.6-4 12.1-1.8a7 7 0 013.5 3.5 8 8 0 01-1.5 7.7c-.7.7-2.1 2-4 2.1-3 0-3.7-2-3.8-2.5-.3-2.2 1-3.1 1.6-3.3.5-.2 2.2-.2 2.6 1 .1.4.1 1.1-.2 1.6"/>
|
||||
<path d="M202.2 292.6a2.7 2.7 0 00-.7-2.7 4.1 4.1 0 00-4.7-.7 5 5 0 00-2 1.7l-1 1.2-.8 2c-2 5.6 1.2 11.6 5.2 14.1a24 24 0 0011.5 3.3l5.3.3h13.4l6 .6 4.4.8 1.5.4 1 .3a31.9 31.9 0 017.7 3.3c.7.4 1.5.8 2 1.4l1.1 1c1.5 1.4 3.1 3 3.5 5.3v1.3c0 1.4-1.1 3.4-4.3 4"/>
|
||||
<path d="M239 326.7c-1 1.8 0 2.6 1.2 2.7 1.7.2 2.6-1.1 2.7-2.3.2-2-1.5-3.9-3.5-3.8a4.4 4.4 0 00-4 2.8 5.5 5.5 0 00-.3 1.9 4.7 4.7 0 001 3.3 6 6 0 004.4 2c3.4.1 6-3 6-6.3 0-6.1-9.1-9.5-12.8-10.4a67 67 0 00-14.3-1.8c-2.9-.2-5-.1-8.1-.4-2.8-.3-4.3-.5-7.2-1.1a22 22 0 01-10-5.2 13.7 13.7 0 01-3.7-17.7 11.5 11.5 0 018.2-5.3c3-.5 5.6.8 7.1 3.8.8 1.4.6 3.8 0 5a4.8 4.8 0 01-3.9 2.3c-3 0-3.7-2-3.8-2.5-.3-2.2 1-3.1 1.6-3.3.5-.2 2.2-.2 2.6 1 .1.4.1 1.1-.2 1.6"/>
|
||||
<path stroke-linecap="round" d="M218.6 185.6a97 97 0 00-.3-.4c-1.3-2-3.7-2.5-5.5-1.2-2 1.6-2.6 4.3-2 7.2a7 7 0 003.2 4.4"/>
|
||||
<path d="M293.4 191.7c-3.2 3.5-6.5 4.6-11.3 4.8-1.5 0-4.4-.5-6-1.7-1-.8-2.3-2-1.5-4.4.5-1.5 3-5.7 3-8.7.2-4.5-1.5-7-4.2-7.9-5-1.8-10.4 3.2-13.6 4.3a11 11 0 01-4.1.6c-1.6 0-2.5 0-4.2-.6-3.2-1.1-8.6-6-13.6-4.3-2.7 1-4.4 3.4-4.2 8 0 2.9 2.5 7.1 3 8.6.8 2.3-.4 3.6-1.5 4.4a11.6 11.6 0 01-6 1.7c-4.9-.2-8-1.3-11.3-4.8"/>
|
||||
<path stroke-linecap="round" d="M237.9 315.5c.6.3.1-.1 4.2 1.7 3.8 1.7 6.6 3.2 9 7a8.5 8.5 0 01.7 5.9"/>
|
||||
<path d="M238.1 332.8a6.4 6.4 0 002.6.7c3.4.1 6-3 6-6.3 0-2.2-1.2-4-2.9-5.6"/>
|
||||
<path stroke-linecap="round" d="M238.9 326.7c-.9 1.9.3 2.8 1.5 3 1.7.2 2.6-1.2 2.8-2.4a3.6 3.6 0 00-1.7-3.3"/>
|
||||
<path d="M312 187.8c2.6 0 4.9 2.9 4.9 5.8 0 3.4-1.8 5.5-3.1 7-1 1.3-2.2 2.4-3.6 3.8"/>
|
||||
<path stroke-linecap="round" d="M309 185.1a5 5 0 012.3 2 7.3 7.3 0 011.2 4.9c-.1 3.4-2.5 5.7-4.7 7.1m-3.8-14l.5.6a7 7 0 011.2 5.7 6.5 6.5 0 01-3 4.4m-4-11.6c2 1.6 2.7 4.4 2 7.2-.5 2-1.8 3.3-3.3 4.2m8.9 32.9c.2.7.6 1 1.2 1.5a10.8 10.8 0 004.9 2.9 6.2 6.2 0 005-.7M187 275.4c1 0 2 .6 2.7 1.8a2.6 2.6 0 01.3 1.2c0 .7-.3 1.4-.8 1.8-1.2.7-3.2.4-3.1-1.7"/>
|
||||
<path d="M193.2 249c4 .8 7.7 5.5 9 10.7a23.6 23.6 0 01.2 9.6 18 18 0 01-4.7 9c-.5.6-1 1-1.7 1.5l-.9.6m-6.3-9.7c1.6 0 3 1.5 3 3.2a3 3 0 01-.8 2"/>
|
||||
<path d="M187.7 272.6c1.7 0 3.3 1.6 3.3 3.3a3.1 3.1 0 01-1.2 2.5"/>
|
||||
<path stroke-linecap="round" d="M203.2 255.6c1.5 2 2.6 3.9 3 6.2m0 6.8a13.8 13.8 0 01-1.2 3.2 14.2 14.2 0 01-2.8 3.7"/>
|
||||
<path d="M203.4 243.5a7.5 7.5 0 012.8 3.8"/>
|
||||
<path stroke-linecap="round" d="M206.3 239.6a8.7 8.7 0 01-2.7 3.7m-7.3-13.8l1.7-.4 1-.8.7-1 .5-1.4.3-1.2"/>
|
||||
<path d="M192.8 223.4l-2 .7a7 7 0 00-2.8 2.4 13.5 13.5 0 00-1.8 4.8c-.2.7-.4 3 0 5.3a12.6 12.6 0 002 4.6l.8 1c1 1 2 1.7 3.5 1.4"/>
|
||||
<path stroke-linecap="round" d="M202.4 215.8c-.2 1-.8 2.3-2.4 2.2"/>
|
||||
<path d="M196.5 222.8c-1.5-1.5-4.8-1.9-8 .2-.5.2-.9.6-1.3 1a7 7 0 00-1.1 1.2l-1.2 2a10 10 0 00-.7 2c-.6 2.3-.6 4.5-.6 5l.3 2.2a15 15 0 001.8 5 8.2 8.2 0 006.2 4.3c1.4.1 3.9-.6 4-2.4"/>
|
||||
<path stroke-linecap="round" d="M291 189.7c.2-1.4 1.8-1.6 2.4-.8 1 1.2.4 3.2-1.5 3.8a3 3 0 01-3-1.1c-.9-1-.8-2.2-.5-3.2.2-.7.7-1.2 1.4-1.7 2.1-1.7 5.7-1.3 6.8 1.5 1.5 3.6-1.7 6.3-4.7 8.3-3.8 2.5-8 3-11.3 3-7.3-.1-12.9-3.6-16.5-5.6-.8-.5-1.7-.4-2.1.2-.5.6-.5 1.5.2 2.1"/>
|
||||
<path stroke-linecap="round" d="M292.5 188.4c.8 0 1 .4 1.2.7 1 1.2.3 3.2-1.6 3.8m14.3 41.2c-2.8 3-.3 8.3 1.8 9.5.7.5 1 .2 1.6.6"/>
|
||||
<path d="M306.5 228.3c-1 .7-1.2 1.4-1.3 2.6a4.2 4.2 0 001.2 3.2 11.2 11.2 0 007.3 3 8.2 8.2 0 004.9-1.4 7.3 7.3 0 003-4.3M305 281v2c-.4 2.2-.7 3.5-1.7 5.5a15 15 0 01-3.4 4.5 15.7 15.7 0 01-4.7 3.3 19.7 19.7 0 01-5.2 1.8 33 33 0 01-5.5.6h-5l-5.5-.7c-1.7-.2-2.7-.3-4.4-.3a22.8 22.8 0 00-8.8 1.5 17 17 0 00-5 3c-.6-.6-3-2.2-5.2-3a17.6 17.6 0 00-4.1-1.2c-1.8-.3-2.8-.3-4.6-.3-1.8 0-2.7.1-4.5.3-2 .2-3.3.5-5.4.6-2 .1-3 .2-5 .1-2.2 0-3.4-.2-5.6-.6a19.7 19.7 0 01-5.2-1.8c-2-1-3-1.7-4.7-3.3a15 15 0 01-3.3-4.5 15.1 15.1 0 01-1.7-5.5v-83.4H305V281z"/>
|
||||
</g>
|
||||
<g fill="#c7b37f" stroke="#c7b37f">
|
||||
<path stroke-width=".3" d="M198.3 292.5a2 2 0 114 0 2 2 0 01-4 0zm-12.2-14.1c0-1 .6-1.8 1.4-1.8.8 0 1.4.8 1.4 1.8s-.6 1.8-1.4 1.8c-.8 0-1.4-.8-1.4-1.8z"/>
|
||||
<path stroke="none" d="M193 242.9c0-.8.7-1.5 1.4-1.5.8 0 1.4.7 1.4 1.5s-.6 1.4-1.4 1.4c-.7 0-1.3-.6-1.3-1.4zm24.6-52.5c-.1-.9.4-1.6 1-1.6.7-.1 1.4.5 1.5 1.3 0 .8-.4 1.5-1.1 1.6-.7 0-1.4-.5-1.4-1.3z"/>
|
||||
</g>
|
||||
<g stroke="#c7b37f" stroke-linecap="round" stroke-width=".5">
|
||||
<path d="M191.4 251.2a1.8 1.8 0 00-.6.4l-.5.7-.2 1m3.8 21.3l.7-.8.6-.8.4-.7.5-1m-1 11l-1.2.6-.9.5a14 14 0 00-1 .7l-1 .8m12-30.3l-.6-.7-.7-.7-.8-.5"/>
|
||||
<path stroke-linecap="butt" d="M203.3 244l-1 .4a4 4 0 01-1.1.2"/>
|
||||
<path d="M190 230.8c0 .4.1.7.3 1.1l.7 1.4a6.8 6.8 0 002.2 2.1l1.2.7m-.9-4.7l1 .5a6 6 0 002.4.5l1.5-.1m5.7-32.5l-1.6-1a9.6 9.6 0 01-2.4-2.3l-.7-1m6-3.6l.5 1.3 1.2 1.7c.7.8 1.3 1 2.2 1.6m1.1-4.7l.5 1.2.7 1 1 1c.6.5 1 .6 1.6 1"/>
|
||||
</g>
|
||||
<path fill="#703d29" stroke-width=".1" d="M266.6 185.3c0-1.4-1.3-1.5-1.9-1.5-1.4 0-1.8 1-3.7 2a9.5 9.5 0 01-5.3 1.4 9 9 0 01-5.4-1.5c-1.9-1-2.2-1.9-3.6-1.9-.8 0-1.9.7-1.8 2v.7s.2 0 .2.2c0-.7.1-1 .4-1.4a1.8 1.8 0 011.3-.7c1.5 0 2 1 3.9 2a9.5 9.5 0 005.3 1.5c2 0 3.1-.3 5.4-1.5 1.9-1 2.4-2 3.9-2 .5 0 .8.3 1 .8v.7h.2c0-.1.2-.2.1-.8z"/>
|
||||
</g>
|
||||
<g fill="#703d29">
|
||||
<path d="M211.5 299.2c.4-.4.8-.3.8-.5l-.2-.2-.7-.2-.7-.3s-.3-.2-.4 0c0 .3.9.3.5 1.1 0 .2-.1.5-.6 1l-2.1 2.3-.2.2V299l.1-1.4c.2-.4.6 0 .7-.3 0-.2 0-.2-.2-.3-.2 0-.4 0-1-.3l-.7-.3c-.1 0-.4-.2-.5 0l.1.2c.3.2.4.3.4.7v6c0 .4.1.6.2.6l.3-.2 4.2-4.6z"/>
|
||||
<path d="M214 300.1c.3-.8.8-.3.9-.6l-.3-.2-1-.3-1-.4h-.3c0 .4 1 .4.7 1.3l-1.4 4.4c-.3.8-.8.4-.9.7v.1l1 .3 1.2.4h.3c.1-.3-1-.2-.6-1.3l1.4-4.3zm3 1c.1-.6.4-.6.7-.5.8.3 1 1.1.8 2-.2.5-.4 1-1.6.7-.3-.1-.6-.2-.5-.4l.6-1.9zm-2.3 3.9c-.4 1.1-1 .6-1 1l.2.1 1.3.4.7.2h.3c0-.4-.9-.2-.6-1.2l.5-1.6c0-.3 0-.4.5-.3.4.2.5.3.6.7l.3 1.7c0 .6.2 1.3.8 1.4.3.2 1 .1 1-.2v-.1h-.3l-.3-.3-.5-3 .6-.2c.3-.2.6-.4.8-1 .1-.4.3-1.7-1.5-2.3l-1.6-.4-1-.3h-.2c-.1.4.9.3.6 1.3l-1.2 4zm6.7 2c-.2 1-1 .4-1.2.7 0 .2.1.3.3.3l1.2.2 1.1.4.5-.1c0-.3-1.1-.3-.8-1.4l1-4.2c0-.5.2-.5.5-.4l.7.2c1 .2.5 1.1.8 1.2.3 0 .2-.3.3-.5v-1.1l-2.6-.6-2.5-.6c-.2 0-.2 0-.2.2l-.5 1.2v.3c.5.1.5-1.2 1.4-1l.7.2c.4.1.5.2.4.6l-1 4.3zm10.2-2.7c.3-.5.7-.4.7-.6l-.3-.2h-.7l-.7-.2c-.1 0-.4-.1-.4 0 0 .4.9.2.7 1 0 .2-.1.6-.5 1.1l-1.7 2.7-.1.2v-.3l-.6-3.2a4.3 4.3 0 01-.1-1.3c0-.4.5-.2.6-.5l-.3-.2-1-.1-.8-.2c-.1 0-.4-.1-.4 0l.1.2c.4.2.5.3.5.7l1.1 5.9c.1.4.2.5.3.5l.2-.2 3.4-5.3zm.5 5.4l.1.4 1.4.6c1.1.2 2-.5 2.3-1.7.2-1.2-.3-1.7-1.2-2.3-1-.8-1.5-1-1.3-1.6 0-.6.5-1 1-.8 1.5.2 1.4 2 1.6 2 .1 0 .2 0 .2-.3l.1-1.3v-.3h-.5c-.3 0-.5-.4-1.2-.5-1-.2-1.8.5-2 1.6-.2 1 .2 1.4 1 1.9 1.2.9 1.7 1 1.6 1.9-.2.7-.8 1.1-1.4 1-1-.2-1.3-1.1-1.5-2l-.1-.3c-.2 0-.2.3-.2.4v1.3zm12.6-3.5c.3-.6.6-.5.7-.7 0-.2-.2-.2-.3-.2h-.8l-.7-.1-.4.1c0 .4 1 0 .8 1 0 .1 0 .5-.3 1l-1.4 2.9-.2.2v-.2l-1-3.2a4.3 4.3 0 01-.2-1.3c0-.4.6-.3.6-.5s0-.2-.3-.2h-1l-.8-.1c-.1 0-.4-.1-.4 0l.1.2c.4.2.5.3.6.6l1.7 5.8c.1.4.2.5.3.5l.2-.3 2.8-5.5z"/>
|
||||
<path d="M246 310.8c0 1-.8.8-.8 1.2h1l1 .1.4-.1c0-.5-1.1.2-1.1-1.7v-3.4s.2 0 .3.2l4 5h.3v-.2l.1-5.3c0-1 .8-.8.8-1.1l-.2-.1h-2v.1c0 .3 1 .2 1 1v3.2l-.1.4-.3-.3-3.4-4.2c-.1-.2 0-.3-.3-.3h-1.4l-.1.2c0 .4 1-.2.9 1.7v3.6zm8.4-4.3c0-1 .6-.6.6-.9l-.3-.1h-2.3c0 .4.9.1.9 1v4.6c0 1-.6.7-.6 1v.1h2.3l.3-.1c0-.3-1 .1-1-1v-4.6zm3.6 4.4c0 1.2-1 .7-1 1 0 .3.2.3.3.3h2.4c.3 0 .5 0 .5-.2 0-.3-1.1 0-1.1-1.2v-4.3c0-.5 0-.5.3-.5h.8c1 0 .7 1 1 1 .3 0 .2-.4.2-.5l-.1-.9s0-.2-.2-.2H256c-.2 0-.2.2-.2.3l-.1 1.2.1.4c.4 0 .1-1.3 1.1-1.3h.7c.4 0 .5 0 .5.5v4.4zm5-1.8h-.3v-.4l.6-1.8h.1l1 1.7v.3l-.2.1-1.2.1zm1.5.4c.2 0 .3 0 .6.8l.2.6c0 .6-.6.6-.6.8 0 .2.2.1.3.1h1l1-.1c.3 0 .4 0 .4-.2 0-.3-.5.1-.8-.6l-2.8-5.6-.2-.3-.2.4-1.9 5.9c-.2.5-.6.5-.6.7 0 .2.2.1.3.1h1.5c.2-.1.5 0 .5-.3 0-.2-1 0-1-.7l.1-.7c.2-.7.3-.7.5-.7l1.7-.2zm6.6-4c0-.6 0-.6 1-.7 1.6-.3 1.1 1 1.5.9.2 0 .1-.4.1-.5l-.1-1h-.2l-2 .2-2.2.3c-.2 0-.2 0-.2.2 0 .3 1 0 1 .8l.6 4.4c.2 1.2-.5.7-.5 1.2h.2l1.1-.1 1-.1c.2 0 .4 0 .4-.2 0-.3-1 0-1.1-1l-.2-1.4c0-.5-.1-.6.3-.7h.6c.9-.2.8.9 1 .8.3 0 .2-.3.1-.5l-.2-1.6c0-.3-.2-.3-.2-.3-.2 0-.1 1-.8 1l-.6.1c-.4 0-.4 0-.4-.4l-.2-1.3zm3.2 2.2c.3 2 1.7 3 3.4 2.7 2.7-.5 2.8-3 2.5-4.2-.3-2-1.8-3-3.5-2.7-2 .4-2.8 2.2-2.4 4.2zm.9-.7c-.3-1.4 0-2.7 1.4-3 1-.3 2.3.6 2.7 2.7.3 1.6 0 3-1.4 3.2-1.5.3-2.4-1.5-2.7-2.9zm6.7-3.3c-.2-.6.1-.7.4-.7.8-.2 1.5.3 1.7 1.3.1.5.2 1-1 1.3-.3.1-.6.2-.7 0l-.4-2zm0 4.5c.3 1.2-.5 1-.4 1.3 0 .2.2.2.3.1l1.3-.3.7-.1c.2 0 .2-.2.2-.2 0-.4-.8.2-1-.8l-.4-1.6c-.1-.3-.2-.4.3-.5.4 0 .6 0 .9.3l1 1.3c.4.5.8 1 1.5.9.3-.1.8-.5.7-.7 0-.1 0-.2-.1-.1h-.6l-2-2.3.5-.5c.1-.3.3-.7.2-1.3-.1-.4-.6-1.7-2.5-1.2l-1.6.4-1 .2-.2.2c.1.4 1-.2 1.2.8l1 4.1zm6.9-1.5c.3 1-.8.9-.7 1.2 0 .2.2.2.3.2l1.2-.4 1.2-.3c.2 0 .4 0 .3-.2 0-.3-1 .2-1.3-.9l-1.1-4.2c-.1-.4 0-.5.3-.6l.7-.2c1-.3 1 .8 1.3.8.2 0 0-.4 0-.5l-.4-.9s0-.2-.2-.2l-2.5.7-2.5.7c-.2 0-.1.1-.1.2l.2 1.3c0 .1 0 .3.2.3.3-.1-.2-1.3.7-1.5l.7-.2c.3 0 .4 0 .6.4l1 4.3zm4.4-5.9c-.3-.9.4-.7.3-1h-.3c-.4 0-.7.2-1 .3l-1 .2s-.3 0-.2.2c0 .3 1-.2 1.2.6l1.2 4.4c.2 1-.4.8-.3 1.2l1-.2 1.3-.3c.2-.1.2-.2.2-.3 0-.3-.9.4-1.2-.7l-1.2-4.4zm1.8 2.1c.6 1.9 2.1 2.7 3.8 2.2 2.6-.9 2.3-3.3 1.9-4.5-.6-2-2.3-2.7-3.8-2.2-2 .7-2.6 2.6-1.9 4.5zm.8-.8c-.4-1.3-.4-2.7 1-3.2 1-.4 2.3.3 3 2.4.5 1.5.5 2.8-1 3.3-1.4.5-2.5-1.2-3-2.5zm6.1-4.3c-.2-.6 0-.7.4-.8.8-.3 1.5.2 1.8 1 .2.6.4 1-.8 1.6-.3 0-.6.2-.7 0l-.7-1.8zm.7 4.5c.4 1-.4 1-.2 1.3 0 .2.2.1.3 0 .4 0 .8-.3 1.2-.4l.7-.3c.2 0 .2-.1.2-.2-.1-.3-.8.3-1.2-.6l-.6-1.5c0-.4-.2-.4.3-.6.4-.1.5-.1.9.2l1.2 1.2c.5.4 1 .8 1.6.6.3-.1.7-.5.6-.8 0 0 0-.1-.1 0h-.6l-2.2-2 .3-.5c.1-.3.2-.7 0-1.3-.2-.4-.8-1.6-2.6-.9l-1.6.7-1 .3v.2c.1.3.8-.4 1.2.6l1.6 4z"/>
|
||||
</g>
|
||||
<g fill="#fedf00" transform="matrix(.512 0 0 .512 0 76.8)">
|
||||
<path fill="#d52b1e" d="M412.7 249.3h82.1v82h-82.1z"/>
|
||||
<path fill="#fff" d="M451.2 313.8s0 3-.8 5.3c-1 2.7-1 2.7-1.9 4a13.2 13.2 0 01-3.8 4c-2 1.2-4 1.8-6 1.6-5.4-.4-8-6.4-9.2-11.2-1.3-5.1-5-8-7.5-6-1.4 1-1.4 2.8-.3 4.6a9 9 0 004.1 2.8l-2.9 3.7s-6.3-.8-7.5-7.4c-.5-2.5.7-7.1 4.9-8.5 5.3-1.8 8.6 2 10.3 5.2 2.2 4.4 3.2 12.4 9.4 11.2 3.4-.7 5-5.6 5-7.9l2.4-2.6 3.7 1.2h.1z"/>
|
||||
<use width="100%" height="100%" transform="matrix(-1 0 0 1 907.5 0)" xlink:href="#a"/>
|
||||
<path d="M461.1 279l10.8-11.7s1.6-1.3 1.6-3.4l-2.2.4-.5-1.2-.1-1.1 3-.7V260l.3-1.3-3.2.2.3-1.4.5-1 1.9-.4h1.9c1.8-3.4 9.2-6.4 14.4-1 3.8 4 3 11.2-2 13.2a6.3 6.3 0 01-6.8-1.1l2-4c2.7 1.7 5-.3 4.8-2.4-.2-2.7-2-4.3-4.3-4.5-2.3-.2-4 1-5 3-.6 1.3-.3 2.2-.5 3.6-.2 1.5 0 2.3-.5 3.8a8.8 8.8 0 01-2.4 3.6l-11 12-43 46.4-3.2-3 43.2-46.7z"/>
|
||||
<path fill="#fff" d="M429.5 283s2.7 13.4 11.9 33.5c4.7-1.7 7.4-2.8 12.4-2.8 4.9 0 7.6 1 12.3 2.8A171 171 0 00478 283l-24.2-31-24.4 31z"/>
|
||||
<path d="M456.1 262.4l16.8 21.7s-2.2 10.5-9 26.3c-2.7-.6-5-1.1-7.8-1.3v-46.7zm-4.7 0l-16.8 21.7s2.2 10.5 9 26.3c2.7-.6 5-1.1 7.8-1.3v-46.7z"/>
|
||||
</g>
|
||||
<g fill="#d52b1e">
|
||||
<path fill="#fedf00" d="M257.8 204.4H300v42h-42z"/>
|
||||
<path d="M263.7 204.4h6.3v42h-6.3zm12 0h6.3v42h-6.2zm12 0h6.3v42h-6.2z"/>
|
||||
</g>
|
||||
<g fill="#d52b1e" stroke="#d52b1e" stroke-width=".5">
|
||||
<path fill="#fedf00" stroke="none" d="M211.4 282.8c.2.8.4 2 1.1 3.4.8 1.2.5 1.2 2.2 3a13.8 13.8 0 006.7 3.6c3.4 1 5.7 1 8.5.9 2.2-.1 3.9-.4 5.3-.6 2-.2 3.4-.4 5.7-.5a32.4 32.4 0 013.1 0c1.2 0 2.4.3 3.7.5 2.8.6 5.6 1.7 5.6 1.7v-43.9h-42v30l.1 2z"/>
|
||||
<path stroke-width=".3" d="M216.3 290.5l2 1.2 2.7 1v-41.8h-4.7zm23.4 2v-41.6H235v42.2l4.7-.5zm9.3-41.6h-4.6v41.7a31 31 0 014.6.8V251zm-18.6 0v42.7h-4.7v-42.7z"/>
|
||||
</g>
|
||||
<g transform="matrix(.512 0 0 .512 0 76.8)">
|
||||
<path fill="#fedf00" d="M585.5 402.4a20.8 20.8 0 01-2.2 6.6c-1.5 2.3-1 2.3-4.3 6a26.3 26.3 0 01-13 7 51.8 51.8 0 01-16.6 1.6c-4.3-.2-7.5-.7-10.3-1-3.8-.6-6.7-.9-11-1a62.9 62.9 0 00-6.2 0 83.3 83.3 0 00-18.3 4.2V340h82.2v58.5l-.3 3.8z"/>
|
||||
<g>
|
||||
<path fill="#d52b1e" d="M524.6 347l-.6.2-.8.8c-.4.4-.7.5-1.2.8l-.6.5c-.3.3 0 .6-.3 1-.1.4-.3.6-.6 1-.4.4-.7.5-1 1l-1.2 1-.3.1h-.6c-.4.2-.5.6-.8.8l.3.6.8 1.4c.2.3.2.7.5.8.5.2.9.2 1.3.1.8.2 1.3.2 2 .5l1.5.8c.5.3.8.4 1.3.5h1.8v.3l2 1a1.7 1.7 0 00-.1.4c-.1.3-.2.7-.1.8.6 1.9 1.2 3 1.5 3.2.6.2.8.9 1.1 1.5l-.3.3c-.6.6-1.2 1-1.7 1.8-.7 1.2-1.2 1.2-.3 2.8l1.5 2.4c.4.7.6 1.2.8 2 .2.7.3 1.2.3 2l1 .3.7-.6.6-1.2v-1c-.2-.1-.3-.4-.2-.7 0-.4.5-.3.7-.6.3-.5-.4-.8-.7-1.1-.6-.7-1.4-.9-1.6-1.9 0-.2 0-.4.4-.7l2-1.8c.2.1.6.2 1 .1l1.3.4c.6.2.9 0 1.2 0h.4l.1.6c.1 1-.1 3 .2 3.5l.3.6.2.6v2l-.2 1.7c0 .4-.2.7-.5 1-.2.4-.6.4-1 .7v1l1.1.5 1.3.3.7-.3.1-.6.5-.5c.4-.2.8 0 .9-.1.2-.3 0-.4 0-.8 0-.6-.2-1-.3-1.6a11.8 11.8 0 01-.1-2.8c0-.6 0-1 .2-1.5.1-1 .4-1.4.6-2.2.3-1 .3-1.6.4-2.5a24.4 24.4 0 0010.1-.6c.8.7 1.7 1.2 2.7 1.6v1c0 .3 0 .4.2.7l.3.3c.3 0 .5 0 .7-.2.2-.2.2-.4.2-.7v-.7h1.8v1.1c.1.3.3.4.5.4a.7.7 0 00.6 0c.3-.2.2-.6.3-1v-.7l1-.4a5.1 5.1 0 010 .9l-.3.9c-.2.6-.5.8-.8 1.4-.4.6-.5 1-1 1.5l-.6.7-.6.9-.9 1c-.7.6-1.2.2-2 .9l-.3 1 1.4.6 1.3.2.4-.2c0-.3 0-.6.3-.8.2-.3.4-.3.7-.4.4 0 .8 0 1-.2.4-.3.4-1 .7-1.5a12.7 12.7 0 013-3.9l1.7-1.4c.2-.4.5-.5.5-1l-.2-.6-.2-1c1.5.7 1 .7 1.2 1.4.3.6 0 1 .1 1.7.1.8.5 1.1.5 1.9.1.9-.1 1.4-.3 2.3-.1.8-.1 1.3-.5 2a3.8 3.8 0 01-1.1 1.5l-.6.5-.1 1 1.1.4 1.6.4.4-.3c.2-.7 0-1.7.4-1.7.4-.1.7 0 .8-.3v-.7l.7-4.5.4-1.9.4-1.7c.7-2-.2-2.3-1-3.6-.5-.7-.7-1-.7-1.5V362a42.7 42.7 0 010-2.8l.4-.2c1.2-.7 1.7-.9 2.4-2.5a3.4 3.4 0 00.3-1.5v-1l-.4-1a3.2 3.2 0 00-.6-.8c-.7-1-1.7-1.1-2.7-1.5-1.5-.5-2.5-.4-4-.5-1.8-.2-2.7-.2-4.4 0-2 0-3.1.4-5.1.7l-4.9.4c-2.3 0-4.4-.5-5.8-.4-2.4.2-2.5.8-6.2 1.1a67 67 0 01-3.8.2l-2.2-.7c.9-.3 1.1-.5 1.5-1 .3-.4.2-.7.6-1.1l.7-1a2.2 2.2 0 00-.9-.4h-1a3 3 0 00-1.2.3l-.8.6-2.2-1.2a8.8 8.8 0 00-3-.9zm2 11.8z"/>
|
||||
<g fill="none" stroke="#fedf00" stroke-linecap="round">
|
||||
<path d="M568.8 359.5l-.8.3c-.9.4-1.6.4-2.6.5-2.6.2-4.3-1.1-7-.9-1.4.1-2 1.2-3.5 1.6a9.3 9.3 0 01-1.7.2l.5-1s-1.2.3-2 .3a7.5 7.5 0 01-1.6-.2l1-1-1.3-.2a4 4 0 01-1-.7 20.5 20.5 0 001.7-.3c1.5-.4 2-1.2 3.9-1.4 1.1 0 3 0 7.6.8 3 .5 4.4.2 5.5-.3.8-.3 1-1 1.1-1.8.1-.8-.4-1.4-.8-1.8-.1 0-.5-.3-1.1-.4"/>
|
||||
<path fill="#fcd900" stroke-linecap="butt" stroke-width=".5" d="M524.8 350.6c-.5 0-.9 0-1.3.3-.5.3-.6.7-1 1.1.5.1.8.4 1.2.3.4 0 .5-.2.8-.5.3-.4.4-.7.4-1.2h-.1z"/>
|
||||
<path d="M536 363.8a13.6 13.6 0 001 2.3c.2.8 0 1.2.2 2v1.6m6.8-7l-.3 1.3-1 3.5v.7m-11-4c.9.2.6 3.3 1.9 4"/>
|
||||
<path stroke-linecap="butt" d="M560.1 369.8l.4-.3a8.2 8.2 0 002.7-1.8"/>
|
||||
<path d="M552.4 368c3.5-.9 5.9-2.6 7.6-2.9m-4-1.5h.8c1.5-.3 1.7.6 2.7 1.2 1.9 1 2.1 2.3 4.3 3.4l.4.1.8.4"/>
|
||||
<path fill="#fcd900" stroke-linecap="butt" stroke-width=".5" d="M517.7 354.5h.7l.8-.2c.3 0 .5 0 .7.2.2 0 .2.1.3.3 0 .2.2.3.1.5 0 .2-.3.4-.6.4-.2 0-.4 0-.5-.3a.5.5 0 010-.4 1 1 0 01-.9 0 1 1 0 01-.6-.5z"/>
|
||||
</g>
|
||||
<path fill="#0065bd" d="M525.1 364.2l-2-.9c.4-.2.7-.2 1-.5.3-.4.3-.8.5-1.3s.2-1 .7-1.4c.3-.2.8-.2 1.1-.1.4 0 .8.4.9.7 0 .6-.2 1-.3 1.5 0 .6-.3.9-.2 1.4 0 .4.2.6.4 1l-2-.4zm-1 1a.6.6 0 11.7.5.6.6 0 01-.7-.6zm-1.7-16.6h-.2c-.4-.4-.4-.8-.6-1.2a4 4 0 01-.3-1.2v-2c0-.3 0-.6-.2-.9 0-.2-.4-.3-.3-.4 0-.1.3 0 .4 0 .4 0 .6.1 1 .4.3.3.5.6.6 1l.4 1.5.3.8.5.6-.7.8-.9.6zm3.6 10.6l2.2 1a9.2 9.2 0 003.5-3.8c.9-1.8 1-2.7 1.4-4.4l-1.8-.5h-.4c-.5 1.8-.7 2.7-1.6 4.2-.8 1.3-1.7 2.3-2.6 3l-.7.5zm5 18.2l.8-1.3 1.4-1.1h.4a8.7 8.7 0 01-.5 2.8l-.4 1-.5.5c-.5-.8-1.3-1.3-1.3-2zm33 1.8l1.4.6 1.5.9v.5l-1.5.2a8.4 8.4 0 01-1.3 0h-1l-.6-.4c.5-.7.8-1.6 1.4-1.8zm-9.8-2l1.4.5 1.5 1c0 .1.1.3 0 .4a9 9 0 01-2.7.3l-1-.1-.7-.3c.6-.7.9-1.7 1.5-1.8zm-17.4 2.1l1.5.5 1.5 1v.5a9 9 0 01-2.8.2h-1l-.6-.4c.5-.7.8-1.6 1.4-1.8zm-9-29.8c-.6-.3-1-1-.6-1.6.1-.2.4-.2.6-.4.2-.3.1-.5 0-.8l-.1-1-.2-1c0-.6 0-1 .4-1.6.2-.3.7-.6.8-.6.2.1 0 .5 0 .8 0 .5.1.7.3 1.2l.7 1.3c.2.6.4.8.4 1.4 0 .5 0 .7-.2 1.2a2 2 0 01-.6.8 2 2 0 01-.8.4 1.1 1.1 0 01-.6 0z"/>
|
||||
</g>
|
||||
<use width="100%" height="100%" y="36.6" xlink:href="#b"/>
|
||||
</g>
|
||||
<path fill="none" stroke="#703d29" stroke-width=".4" d="M211.3 204.4h42v42h-42zm46.5 0H300v42h-42zm-46.4 78.4c.2.8.4 2 1.1 3.4.8 1.2.5 1.2 2.2 3a13.8 13.8 0 006.7 3.6c3.4 1 5.7 1 8.5.9 2.2-.1 3.9-.4 5.3-.6 2-.2 3.4-.4 5.7-.5a32.4 32.4 0 013.1 0c1.2 0 2.4.3 3.7.5 2.8.6 5.6 1.7 5.6 1.7v-43.9h-42v30l.1 2zm88.4 0c-.1.8-.4 2-1.1 3.4-.8 1.2-.5 1.2-2.2 3a13.8 13.8 0 01-6.7 3.6 26.1 26.1 0 01-8.5.9c-2.2-.1-3.9-.4-5.3-.6a55.6 55.6 0 00-5.6-.5 32.4 32.4 0 00-3.2 0c-1.2 0-2.4.3-3.7.5-2.8.6-5.7 1.7-5.7 1.7v-43.9H300v30l-.1 2z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 32 KiB |
6
public/vendor/blade-country-flags/1x1-ae.svg
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<path fill="#00732f" d="M0 0h512v170.7H0z"/>
|
||||
<path fill="#fff" d="M0 170.7h512v170.6H0z"/>
|
||||
<path d="M0 341.3h512V512H0z"/>
|
||||
<path fill="red" d="M0 0h180v512H0z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 240 B |
81
public/vendor/blade-country-flags/1x1-af.svg
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
|
||||
<g fill-rule="evenodd" stroke-width="1pt">
|
||||
<path d="M0 0h512v512H0z"/>
|
||||
<path fill="#090" d="M341.3 0H512v512H341.3z"/>
|
||||
<path fill="#bf0000" d="M170.7 0h170.6v512H170.7z"/>
|
||||
</g>
|
||||
<g fill="#fff" fill-rule="evenodd" stroke="#bd6b00" stroke-width=".5" transform="translate(2.2 86.8) scale(.84611)">
|
||||
<path d="M319.5 225.8h8.3c0 3.2 2 6.6 4.5 8.5h-16c2.5-2.2 3.2-5 3.2-8.5z"/>
|
||||
<path stroke="none" d="M266.7 178.5l4.6 5 57 .2 4.6-5-14.6-.3-7-5h-23l-6.6 5.1h-15z"/>
|
||||
<path d="M290 172.7h19.7c2.6-1.4 3.5-5.9 3.5-8.4 0-7.4-5.3-11-10.5-11.2-.8 0-1.7-.6-1.9-1.3-.5-1.6-.4-2.7-1-2.6-.4 0-.3 1-.7 2.4-.3.8-1.1 1.5-2 1.6-6.4.3-10.6 5-10.5 11.1.1 4 .6 6.4 3.4 8.4z"/>
|
||||
<path stroke="none" d="M257.7 242.8H342l-7.5-6.1h-69.4l-7.5 6.1z"/>
|
||||
<path d="M296.4 219.7l1.5 4.6h3.5l-2.8-4.6h-2.2zm-2 4.6l1 4.6h4l-1.5-4.6h-3.5zm7 0l2.8 4.6h5.9l-4.6-4.6h-4.1zm-34.5 10.4c3.1-2.9 5.1-5.3 5.1-8.8h7.6c0 2 .7 3.1 1.8 3h7.7v-4.5h-5.6v-24.7c-.2-8.8 10.6-13.8 15-13.8h-26.3v-.8h55.3v.8H301c7.9 0 15.5 7.5 15.6 13.8v7h-1l-.1-6.9c0-6.9-8.7-13.3-15.7-13.1-6 .1-15.4 5.9-15.3 13v2.2l14.3.1-.1 2.5 2.2 1.4 4.5 1.4v3.8l3.2.9v3.7l3.8 1.7v3.8l2.5 1.5-.1 3.9 3.3 2.3h-7.8l4.9 5.5h-7.3l-3.6-5.5h-4.7l2.1 5.4h-5l-1.3-5.4h-6.2v5.8H267zm22.2-15v4.6h5.3l-1-4.6H289z"/>
|
||||
<path fill="none" d="M289.4 211.7h3.3v7.6h-3.3z"/>
|
||||
<path fill="none" d="M284.7 219.8h3.2v-5.6c0-2.4 2.2-4.9 3.2-5 1.2 0 2.9 2.3 3 4.8v5.8h3.4v-14.4h-12.8v14.4zm25.6 3.3h4v3.2h-4zm-2.4-5.3h4v3.1h-4zm-3.9-5.4h4v3.1h-4zm-3.3-4.5h4v3.1h-4z"/>
|
||||
<path fill="none" d="M298 219.8l4.2.2 7.3 6.4v-3.8l-2.5-1.8v-3l-3.6-2v-3.3l-3.5-1.2V207l-1.7-1.5-.1 14.4z"/>
|
||||
<path d="M315.4 210.3h1v7.1h-1z"/>
|
||||
<g>
|
||||
<path d="M257.3 186.5c-1.2-2-2.7 2.8-7.8 6.3-2.3 1.6-4 5.9-4 8.7 0 2 .2 3.9 0 5.8-.1 1.1-1.4 3.8-.5 4.5 2.2 1.6 5.1 5.4 6.4 6.7 1.2 1 2.2-5.3 3-8 1-3 .6-6.7 3.2-9.4 1.8-2 6.4-3.8 6-4.6l-6.3-10z"/>
|
||||
<path fill="#bf0000" d="M257 201.9a10 10 0 00-1.6-2.6 6.1 6.1 0 00-2.4-1.8 5.3 5.3 0 01-2.4-1.5 3.6 3.6 0 01-.8-1.5 5.9 5.9 0 010-2l-.3.3c-2.3 1.6-4 5.9-4 8.7a28.5 28.5 0 000 2.3c.2.5.3 1 .6 1.3l1.1.8 2.7.7a7.1 7.1 0 012.6 2 10.5 10.5 0 011.8 2.6l.2-.8c.8-2.7.7-5.9 2.6-8.5z"/>
|
||||
<path fill="none" d="M249.8 192.4c-.5 3.3 1.4 4.5 3.2 5.1 1.8.7 3.3 2.6 4 4.4m-11.7 1.5c.8 3 2.8 2.6 4.6 3.2 1.8.7 3.7 3 4.5 4.8"/>
|
||||
<path d="M255.6 184.5l1-.6 17.7 29.9-1 .6-17.7-30z"/>
|
||||
<path d="M257.5 183.3a2 2 0 11-4 0 2 2 0 114 0zm15.2-24h7.2v1.6h-7.2zm0 3.1h7.2v13.8h-7.2zm-.4-5h8c.2-2.7-2.5-5.6-4-5.6-1.6.1-4.1 3-4 5.6z"/>
|
||||
<path fill="#bd6b00" stroke="none" d="M292.6 155.8c-1.5.6-2.7 2.3-3.4 4.3-.7 2-1 4.3-.6 6.1 0 .7.3 1.1.5 1.5.2.3.4.5.6.5.3 0 .6 0 .7-.3l.2-.8c-.1-2-.1-3.8.3-5.4a7.7 7.7 0 013-4.4c.3-.2.4-.5.5-.7a1 1 0 00-.3-.7c-.4-.3-1-.4-1.5-.1zm.2.4c.4-.2.8 0 1 .1l.1.2c0 .1 0 .2-.3.4a8.2 8.2 0 00-3.1 4.6 16.7 16.7 0 00-.3 5.6 1 1 0 01-.2.6s0 .1-.2 0c0 0-.2 0-.4-.3a3.9 3.9 0 01-.4-1.2c-.3-1.8 0-4 .7-6 .7-1.8 1.8-3.4 3-4z"/>
|
||||
<path fill="#bd6b00" stroke="none" d="M295.2 157.7c-1.5.7-2.5 2.3-3 4.2a13.6 13.6 0 00-.3 5.9c.2 1.3 1 2 1.6 2 .3.1.6 0 .8-.3.2-.3.3-.6.2-1-.4-1.6-.5-3.4-.3-5.1.3-1.7 1-3.2 2.2-4.1.3-.3.5-.5.5-.8a.8.8 0 00-.2-.6c-.4-.3-1-.4-1.5-.2zm.2.5c.4-.2.8-.1 1 0l.1.3-.3.4a6.5 6.5 0 00-2.4 4.4c-.3 1.8-.1 3.7.2 5.2.1.4 0 .6 0 .8l-.5.1c-.3 0-1-.5-1.2-1.7-.3-1.7-.2-3.9.3-5.7.5-1.8 1.5-3.3 2.8-3.8z"/>
|
||||
<path d="M272.3 187.4h8v11h-8zm.5 17.4h7.7v2.4h-7.7zm-.2 4.1h8v8.7h-8zm-.6 10.5h8.7v4.9H272zm1.1-16.6h7l1.4-2.4h-9.6l1.2 2.4zm9.4-8.6l.1-6h4.8a17.4 17.4 0 00-4.9 6z"/>
|
||||
<path fill="none" d="M273.6 196.7c0 1.3 1.5.8 1.5.1v-5.6c0-1 2.4-.8 2.4-.1v6c0 1 1.7.9 1.6 0v-7c0-2.2-5.5-2.1-5.5-.1v6.7zm0 13.3h5.7v7h-5.7z"/>
|
||||
<path d="M277.2 213h2v1h-2zm-3.5 0h2v1h-2zm2-3h1.5v3h-1.5zm0 4h1.5v3.1h-1.5zM244 139c.4 5.5-1.4 8.6-4.3 8.1-.8-3 1-5.1 4.3-8.1zm-6.5 12.3c-2.6-1.3-.7-11.5.3-15.8.7 5.5 2 13.3-.3 15.8z"/>
|
||||
<path d="M238.4 151.8c4.4 1.5 8-3.2 9.1-8.7-3.6 5-9.5 5-9 8.7zm-3.3 5.1c-3.4-.9-1.4-11.7-.7-16 .7 4.5 3.1 14.5.7 16zm1.2-.3c.2-3.7 3.9-2.7 6.5-4.7-.5 2-2 5.2-6.5 4.7zm-4.2 5c-3.4-1-1.4-12.6-1.6-17.4 1 4.2 4.2 16.3 1.6 17.4zm1.6-.5c2.8.9 6.5-1 6.8-4.3-2.5 1.7-6.3.4-6.8 4.3z"/>
|
||||
<path d="M229.5 166.7c-3.2.3-1.8-9.6-1.8-18.8 1.2 8.6 4.5 16.5 1.8 18.8z"/>
|
||||
<path d="M230.7 166.3c2.2 1 6.1-.7 7.2-4.4-4 1.7-6.6 0-7.2 4.4zm25.6-22.2c-.6 4.9-2.6 7.7-5.5 7.2-.8-3 1.6-5 5.5-7.2zm-7.8 12.4c4.9.7 6.6-3 10-7.9-4.7 3.4-10.2 4-10 8z"/>
|
||||
<path d="M247 156c-2.6-3.2 0-7.3 2-10.7-.4 5.1 1.3 8-2 10.7zm-1 5.3c-.4-3.2 5-3.9 7.4-5.6-.9 1.8-2 6.7-7.5 5.6z"/>
|
||||
<path d="M244.8 161.3c-3.7-.4-2.2-6.7.5-10.1-1.1 4.8 2 8.1-.5 10.1z"/>
|
||||
<path d="M242 166.6c-4.2-2-1.5-7.2 0-10.3-.6 4.1 2.8 7.2 0 10.2z"/>
|
||||
<path d="M242.8 166c2.2 3 6.5-.8 7.4-5.2-3.7 3.1-6.5 2.6-7.4 5.3zm-9.6 20.3c-.4-4.3 2.8-12 .5-16.2-.3-.6.7-2.1 1.4-1.2 1 1.5 2 5.7 2.5 4.1.4-1.7.5-4.6 2-5.2 1-.3 2.3-.6 1.9 1-.4 1.4-1.2 3.4-.3 3.5.5 0 2-2 3.3-3 1-.8 2.6.6 1 1.8-4.8 4-9.5 5.9-12.3 15.2zm-8.7 64.5c-.6 0-1.3-.3-.6.6 5.7 7 7.3 9 15.6 8 8.3-1.1 10.3-3.4 16.2-6.7a14.6 14.6 0 0111.2-1c1.6.5 2.6.5 1.4-.7-1.2-1.1-2.5-2.7-4-3.8a17.5 17.5 0 00-12.7-2.7c-6 1-11.1 4.9-17.2 6.4a25 25 0 01-9.9 0zm47.8 12.5c1 .2 1.7 2.2 2.3.9.8-2.3.2-4-.8-3.9-1.2.3-3.1 3-1.5 3z"/>
|
||||
<path stroke="none" d="M220.6 183c-1.2-1.4-.9-1.8 1-1.9 1.4 0 4.2 1 5.3.1 1-.7.5-3.7 1-5 .2-.9.7-2 2-.2 3.6 5.8 8 12.8 10 19.6 1 3.8 0 9.8-3.4 13.8 0-3.4-1.2-5.7-2.7-8.6-2-3.7-9.1-14-13.2-17.9z"/>
|
||||
<path d="M235.5 213.4c4 0 4.7-5.3 4.7-6.8-2 .4-5.4 3.7-4.7 6.8zm34.5 51.9c2.8.6 2.7-6.2-.2-9.1 1.3 4.4-2 8.4.1 9zm-1.2-.1c.2 3.2-8-.4-10-3 4.8 2.1 9.8.4 10 3zm-3.5-4.6c.3 3.1-7 .3-9.3-2.1 4.9 1.6 9-.5 9.3 2zm1.3.4c2.9.7 2.4-6.4-.4-8.8 1.4 4.7-1.8 8.1.4 8.8zm-3-4.3c2.9.7 1.2-5.4-.9-7.8.4 4.4-1 7.5 1 7.8zm-1.5 0c.3 3.2-5.4.8-7.6-2.3 4.8 1.5 7.3-.3 7.6 2.3zm-1.5-2.5c1.8-1.3-.1-4.8-3.7-4.6.4 2.1 1.6 5.9 3.7 4.6zm14 14.7c.1 3.2-8 1.6-10.6-1.8 5.2 1 10.3-.8 10.5 1.8zm-32.4-5.8c.3 3.2-8.6-.4-10.8-3.4 4.7 1.6 10.5.8 10.8 3.4zm5.4 1.3c1.9-1.3-1.9-4.7-5-5.5.4 2.1 3 6.8 5 5.6zm.6 2.3c.2 2.9-9.5 1.3-12-1.4 8.3 1.5 11.7-1.1 12 1.4z"/>
|
||||
<path d="M252.8 268.6c1 2.7-8.3 2-11.6.5 5.3 0 10.8-2.4 11.6-.5z"/>
|
||||
<path d="M257.1 270.6c1 2.4-7.6 2.4-11.8 1 5.6 0 10.8-3.4 11.8-1zm6.3 1.3c1.6 2.9-7.6 3.1-10.5 1.7 5.2-.7 9.2-4 10.5-1.7zm-10.7-4.9c-2.9 1.8-2.7-3.6-5-7.3 3.6 3.3 7 5.6 5 7.3z"/>
|
||||
<path d="M257.9 269c-2.4 2.1-4.4-5.3-6.6-9.5 3.6 4 8.8 7.7 6.6 9.4zm6.8 2c-2 2.4-8-7-10.2-12 3.3 3.9 11.8 10 10.2 12zm-5.8 7.2c-1 3.6-16.2-3.4-18-7.1 8.8 4.6 18.2 3.6 18 7zm-48.7-73.8c-.4-.5-1.4 0-1.2 1.1.3 1.5 2.5 9.2 6.3 11.8 2.7 2 17 5.1 23.4 6.5 3.6.7 6.5 2.5 8.9 5.3a94.4 94.4 0 00-3-9.8c-1.2-3-4.4-6.2-7.8-6.3-6.1-.3-14.1-.8-20-3.3a16 16 0 01-6.7-5.3z"/>
|
||||
<path d="M245.5 234.9c2 1.4 4.1-3.7 1.7-8.6-.1 4.7-3.8 6.3-1.7 8.6z"/>
|
||||
<path d="M247.4 239.6c2.7.8 3.5-4 1.8-7.8.3 4.1-4.3 6.6-1.8 7.8z"/>
|
||||
<path d="M249.5 243.4c2.6 1.3 3.5-3.6 1.7-7.1.2 4.5-3.7 5.9-1.7 7z"/>
|
||||
<path d="M248.4 243.7c-1 3-7-2.7-8-5.8 3.7 3.7 8.7 3.2 8 5.7z"/>
|
||||
<path d="M245.7 239c-1.2 3-8.7-5-10.4-8.7 3.7 3.7 11.2 6.5 10.4 8.6z"/>
|
||||
<path d="M244.2 234.3c-1.2 3.5-9.3-5.8-11.7-9.1 4 3.6 12.6 6.6 11.7 9.1zm-.3-3.4c3-.6-.1-3-3.7-6.9-.1 4.1.5 7 3.7 6.9z"/>
|
||||
<path d="M239 228.5c1.3-1.3-1.1-1.9-4.1-5.3-.5 2.3 2.8 6.5 4.2 5.3zm14 15.2c1.6 1 2.6-2.3.7-5.2-.5 3.2-2.1 4-.7 5.2zm-34.2-20.3c-3.3 2-8.6-6-10-9.3 2.9 3.8 10.6 7.2 10 9.3z"/>
|
||||
<path d="M221.7 228c-1.9 2-7.7-3.5-9.7-6.3 3 2.7 10.5 3 9.7 6.3z"/>
|
||||
<path d="M224.8 232.2c-.6 2.8-9-3.5-11-6.5 3.6 3.5 11.6 3.2 11 6.5z"/>
|
||||
<path d="M223.5 235.3c-1.3 2.5-8.2-3.8-9.9-7 4.3 3.6 11 4.5 10 7zM220 223c2.1-2.3 1.2-3.4-.4-7-.8 3.7-2.1 5.2.4 7zm2.9 4.3c4 .2 0-4.6-1-8.7.4 4.6-1 8.3 1 8.7z"/>
|
||||
<path d="M225.4 231.1c2.7-.6 2-4.5-.2-9.2.5 5.1-2.3 8 .2 9.2zm-1 7.7c-1 3-8.8-4-10-6.8 4 3.4 10.7 4.5 10 6.8z"/>
|
||||
<path d="M229.1 243.6c-1.1 3-9.3-3.2-11.8-6.6 4.9 4 12.4 3.6 11.8 6.6z"/>
|
||||
<path d="M233.9 248.5c-1.3 4.3-9.9-2.6-12.4-6 5.4 4.2 13 3 12.4 6zm-8-11c2.3 1.1 3.2-5.4 1.9-10.1 0 5-4.7 8.8-2 10z"/>
|
||||
<path d="M229.8 242.7c2.8.8 2-6.3-.5-11-.3 4.7-2.3 9 .5 11zm5 4.9c3 .1 1-6.1-1.6-9.6.4 4.5-1 9 1.6 9.6zm-5.5 2.6c-1 1.6-3.2-1.3-7-3.5 3.4 1 7.4 2 7 3.5zm-1.8-52.7c3-2.2.7-6.2 0-10-1 3.6-3.4 8.4 0 10zm0 5.3c-4.5-.5-3.8-6.1-4-9.7 1.4 4.9 5 5.7 4 9.8zm.6-.7c3.7-.2 3.5-4.4 3.7-8.6-1.9 3.9-4 4.5-3.7 8.6z"/>
|
||||
<path d="M228 207.3c-3 .3-4.4-2.6-5-7 2.7 4.1 5.1 2.8 5 7zm1-.3c3.7.5 3-3.8 3-7-1.2 3-4.2 4-3 7z"/>
|
||||
<path d="M223.2 205.2c.3 2.8 2.1 7.6 5 6.5 1.1-3.4-2.6-4.1-5-6.5z"/>
|
||||
<path d="M229 212c-1.2-2.4 3-3.7 3.8-6.9.5 4.6.1 7.6-3.8 7zm-11.9-29.2c2.3-2.4.3-6.4-.4-10.2-1 3.6-2.5 8.4.4 10.2zm0 4.6c-4 .5-5-7.7-5.5-11.3 1.4 4.9 6 7 5.5 11.4zm.8 0c2.8-1.5 2.2-4.7 3-7-1.8 2.9-3.6 3.3-3 7z"/>
|
||||
<path d="M217 192.8c-4.1.3-6.6-8.8-6.8-12.4 1.3 4.9 7.4 7.5 6.9 12.4zm.9-.2c4-.9 3.5-3.5 2.9-7.6-1.3 4.2-3.5 3.3-2.9 7.6z"/>
|
||||
<path d="M217 198c-4.6.8-4.3-6.6-8-11.9 3.2 4 9 9 8 11.9zm1-.3c3.6.2 4-5.1 3.8-7.3-.9 2.2-5 4.2-3.7 7.4z"/>
|
||||
<path d="M209.8 192.3c1.7 5.7 4.2 11.4 7.2 11 1.5-3.3-2.9-3.7-7.2-11z"/>
|
||||
<path d="M218.1 202.4c-1.2-2.5 3-3.7 3.8-6.9.5 4.6.1 7.6-3.8 6.9zm-7.1-3.6c2.5 5.1 3.6 11 7 10.1 1.3-4-3.8-4.8-7-10.1z"/>
|
||||
<path d="M218.7 208c-1.5-2.8 2.7-3.7 3.8-7.4.5 4.8 0 8.3-3.8 7.3zm7.2-34.5c2.4.6 5-2.1 4.1-6.2-2.8.6-4 3.2-4.1 6.2zm-7.9-2.1c.2 1.2 1.7 1.3 1.2-.4a5.3 5.3 0 010-3.4 7.5 7.5 0 000-4.6c-.4-1-1.8-.4-1.2.4.6.9.7 2.8.2 3.7-.6 1.3-.4 3-.2 4.3zm22.9 16c-1 1.3-2.9.4-1.4-1.5 1.2-1.5 3-2.8 3-4.4.2-2 1.3-5 2.4-6.1 1.1-1.1 2.4.4 1.2 1.2-1.3.8-2.2 4.4-2.1 5.8-.1 2-2 3.5-3.1 5zm-3-2.3c-1 1.4-2.4.5-1.6-1.7.7-1.5.8-3.5 1.6-4.6 1.2-1.7 3-3.1 4.1-4.2 1.2-1 2 0 1 1a27 27 0 00-3.3 4c-1.4 2.2-.8 4-1.8 5.5zm-15.7-7.2c-.1 2 1.5 2.4 1.4-.4 0-3-2.2-5.8-1-10.3.8-2.2.8-6.3.4-8.4-.4-2.2-2-.8-1.3.9.6 2-.1 5.6-.6 7.5-1.5 5.4 1.2 8 1 10.7zm4.3-11c-.2 1.9-1.8 2-1.3-.5.4-2 .4-3.6 0-5.3-.6-2.1-.4-5.7 0-7.2.5-1.6 2-.7 1.4.5a9.9 9.9 0 00-.3 5.9c.6 2 .5 4.8.2 6.7zM210.9 204c.8.9 2 .3 1-1-1-1-.7-1.2-1.3-2.4-.6-1.4-.5-2.1-1.2-3-.7-1-1.6 0-1 .7.8 1 .6 1.6 1 2.5 1 1.5.7 2.3 1.5 3.2zm20.4 24.6a8.6 8.6 0 014.4 6.7 16 16 0 002 7.1c-2-.5-3-3.7-3.3-6.8-.3-3.2-2-4.5-3-7zm5.1 5.9c1.7 3.1 4 4.3 4.2 6.6.2 2.7.4 2.8 1.1 5.4-2-.5-2.5-.7-3-4.7-.3-2.8-2.6-4.7-2.3-7.3z"/>
|
||||
<path stroke="none" d="M289 263.3c1 1.8 2 4.5 4 4 0-1.3-2.1-2.3-4-4zm3 .6c3.7 1.6 7 1.2 7.5 3.6-3.6.4-5-1-7.6-3.6zm-16.1-12.7a14 14 0 015 7.7 29 29 0 003.6 7.8 13 13 0 01-5.3-7.4c-.7-3-1.6-5.3-3.3-8zm3.1 0c2.8 2.2 5.4 4.8 6.2 7.9.8 2.9 1.3 5.1 3.2 8-3-1.9-4.1-4.7-5-7.8-.7-3-2.5-5.2-4.4-8zm9.2 7.3a1.1 1.1 0 01.7-1.2 33.4 33.4 0 012.6-.8c1-.3 1.6.4 1.6.9v2c0 .7-.2.8-.7.9-.7.1-1.7.2-2.4.7-.6.4-1.2.1-1.5-.5l-.3-2zm10.6 0c0-.6-.2-1.1-.6-1.2a5.4 5.4 0 00-2.4-.4c-1 0-1.1.2-1.1.6v2.1c0 .8 0 .8.4 1 .7 0 1.8 0 2.5.6.5.3 1 0 1.1-.6l.1-2.1z"/>
|
||||
</g>
|
||||
<use width="100%" height="100%" x="-600" transform="scale(-1 1)" xlink:href="#a"/>
|
||||
<g stroke="none">
|
||||
<path d="M328.5 286.6c0 1.2.2 2.2 1 3.1a19 19 0 00-13.8 1.1c-1.8.8-4-1-1.9-2.7 3-2.3 9.7-1 14.7-1.5zm-57.5 0a7 7 0 01-.4 3c4.4-1.7 9.1-.2 13.6 1.6 3 1.3 3.3-1 2.8-1.7a6.5 6.5 0 00-5-2.9h-11zm3.8-21.7c-1.3-.5-2.7 0-4 1.4-4.3 4.2-9.4 8.3-13.5 11.6-1.5 1.3-3 3.7 3.4 6 .3.2 5 2 8 2 1.3 0 1.3 1.8 1 2.3-.5 1-.1 1.4-1.1 2.3-1.1 1 0 2.1 1 1.3 3.6-3.2 9.6-1.1 15.3.7 1.4.4 3.8.3 3.8-1.6 0-2 1.5-3.4 2.4-3.5 2.4.4 14 .5 17.5.1 2-.3 2.2 2.9 3.3 4 .8.9 3.7 1.1 5.8.2 4-1.8 10-1.8 12.5 0 1 .7 1.9 0 1.3-.7-.8-1-.7-1.6-1.1-2.4-1-2-.2-2.4.8-2.5 11-1.5 14.6-5.2 11.2-8.3-4.4-3.8-9.2-7.7-13.4-12.2-1.2-1.2-2-1.7-4.3-.7a66.5 66.5 0 01-25.3 5.9 76 76 0 01-24.6-5.8z"/>
|
||||
<path fill="#bd6b00" d="M326.6 265.5l-1.6.4c-9 3.2-17.2 5.4-25.7 5.4-8.3 0-17-2.4-24.9-5.6a2.3 2.3 0 00-1.5 0c-.5.1-1 .4-1.3.7a115.5 115.5 0 01-11.8 10.3c-.7.5-.6 1.8.5 2.2 8.3 3 16.4 8.5 39.6 8.3 23.5-.2 31.8-5.6 39.2-8.1.5-.2 1-.5 1.3-1a1 1 0 00.1-.8 2 2 0 00-.6-.8c-4.3-3.5-8.8-6.3-11.8-10.4-.3-.5-.9-.6-1.5-.5zm0 .5c.5 0 1 0 1.1.3 3 4.3 7.7 7 11.9 10.5l.4.7a.5.5 0 010 .4c-.1.3-.6.6-1 .7-7.6 2.6-15.7 8-39 8.2-23.2.2-31.2-5.3-39.5-8.3-.8-.4-.7-1.2-.4-1.4 4.2-3.2 8.2-6.8 11.8-10.4a2.5 2.5 0 011.1-.6h1.2a68 68 0 0025 5.6c8.7 0 17-2.2 26-5.3a6.7 6.7 0 011.5-.4z"/>
|
||||
<path d="M269.7 114.6c0-1.4 2-1.5 1.8.4-.3 2.3 4.5 8.3 4.9 12 .3 2.5-1.5 4.6-3.2 6a6.6 6.6 0 01-6.8.5c-.9-.8-1.7-3.3-1-4.3.2-.3 1.3 3.7 3.7 3.7 3.3 0 6-2.5 6-4.7.2-3.8-5.3-9.8-5.4-13.6zm9.5 9.4c.6-.4 1.4 1.3.8 1.7-.5.3-1.5-1.3-.8-1.8zm1.5-3.5c-.3.2-.8 0-.7-.2a12 12 0 013.6-3.3c.4-.2 1 .4.8.7a11 11 0 01-3.7 2.8zm12.6-10c.3-.6 2.1-1.3 2.6-1.7.4-.5.6.4.4.7-.3.7-1.9 1.7-2.6 1.8-.3 0-.6-.4-.4-.7zm4.3.3a8.3 8.3 0 012.5-3.4c.5-.3 1.3 0 1.1.4a9 9 0 01-2.9 3.3c-.3.3-.8 0-.7-.3zm-3.7 2.7c-.3.2-.1.7.1.8.6.2 1.5.2 2 0 .6-.4.3-2.9-.5-1.6-.6.8-1 .6-1.6.8zm-7.3 5.6c-1.3-1 .4-2.4 1.7-1.4 2.7 2-4 9.8-7.6 13.4-.7.7-1.3-1-.4-1.9a33.7 33.7 0 006.7-7.6c.4-.5.7-1.6-.4-2.5zm15.3-6.6c.1-1-1.6 0-1.6-1.3 0-.7 1.9-1.2 2.7-.4 1.3 1.4.3 3.7-2 3.9-1.8 0-5 2.7-4.5 3.2.5.7 5.4 1.1 8.3.7 1.8-.3 1.4 1.3-.4 1.5-1.8.2-3.2 0-4.8.6-2 .5-2.8 3-3.9 4-.2.2-.8-.8-.6-1.2.8-1.2 2-3 3.4-3.6.8-.3-2.4-.4-3.4-.7-.8-.2-.6-1.3-.3-1.9.4-.8 3.4-3.9 4.7-3.8 1.1 0 2.3-.3 2.4-1zm5 .2c.6-.5 1-1.3 1.5-1.8.3-.3.9 0 .8.8-.1.7-1 1.2-1.5 1.7-.5.3-1-.4-.7-.7zm6.5-2.3c.9 0 1 1.6.2 1.8-.6.2-1-1.7-.2-1.8zm-2.1 5c0 1.5.7 1.4 2 1.3 1.3 0 2.4 0 2.4-1.2 0-1.3-.7-2.5-1-1.6-.1.8-.3 2.2-.8 1.6-.4-.5-.2-.6-1 .2-.5.5-.5-.2-.8-.6-.2-.3-.8.2-.8.4zm-9.2 7.2c-.3 1.9 0 4.5.9 4.5 1.2 0 3.6-4 4.8-6.2.7-1.2 1.8-1.4 1.3-.1-.7 1.9-.6 6 0 7.2.4.6 3-.6 3.4-1.5.8-1.7.1-4.8.4-6.7.1-1.2 1.3-1.5 1.2-.3a75.6 75.6 0 00-.1 7.5c0 1 2.9 2.4 3.3-.6.2-1.8 1.2-3.7 0-5.7-.8-1.3 1.1-1.2 2.1.6.7 1.2-.6 3.2-.5 4.7 0 2.4-1.8 3.8-3.1 3.8-1.2 0-2-1.5-3-1.5s-2.2 1.7-3 1.6c-3.6-.2-1.7-5.3-2.8-5.4-1.2 0-2.5 5-4 4.9-1.4-.2-3-4.2-2.3-5.8.5-1.6 1.5-2 1.4-1zm16.9-8c-1.7-1 0-3.7.9-2.8 1.6 2 3.2 6.5 4.4 6.9.7.2.6-3.4 1.1-5 .4-1.3 1.8-.9 1.6.7-.1.5-2 6.4-1.8 6.6a47.1 47.1 0 013.3 7.8c.3 1.2-1.1.4-1.3.2-.9-1.4-2.4-6.5-2.4-6.2l-1.7 7.7c-.2 1-1.7.8-1.3-1 .3-1.4 2.3-8.3 2.2-8.6a17.2 17.2 0 00-5-6.3z"/>
|
||||
<path d="M322 131.2c-.4 0-1.2 1 1.2 1.5 3.1.6 6.6-.5 7.6-3.6 1.3-3.7 2-7.2 2.7-8.5.8-1.5 1.8-1.4 1-3.6-.5-1.7-1.5-1.2-1.7-.3-.5 2.3-2.6 10-3.3 11.3-1.2 2.6-3.7 3.6-7.5 3.2z"/>
|
||||
<path d="M328.4 119c-.4-.7-1.2 0-1 .7a1.2 1.2 0 001.2 1c.7 0 2.2.1 2.2-1 0-.8-.7-1.5-1.1-.6-.5.8-1 .7-1.3 0zm.7-3c-.2.2 0 1.1.3 1a7 7 0 003.3-.8c.2-.2.1-.7-.2-.7-1 0-2.6 0-3.4.5zm8.8 2.3c.8-1.2 2.8-1.3 2 .4a614.3 614.3 0 01-6.3 12.3c-.8 1.4-1.4.7-.8-.4.7-1.4 4.9-12 5.1-12.3z"/>
|
||||
<path d="M330.2 133c-.2-.8-1.5-2-1.3.2.2 3.8 5.5 2.6 7 1.3s.3 4.3 2.2 4.9c1 .3 3-1.1 4-2.4 2.7-3.5 4.5-8.6 7-12 1-1.4-.5-2.4-1-1.3-2.4 3.8-5.2 11.6-8.3 13.6-2.5 1.6-1.7-2-1.8-3.2-.1-.8-1.1-2-2.4-.9a5.5 5.5 0 01-3.7 1.2c-.7 0-1.4 0-1.7-1.4z"/>
|
||||
<path d="M339.6 126c0-.3-1.1-.4-1 .7 0 .8 1 1 1.1 1 1.5-1.2-.3-.6-.1-1.8zm-2.3 4.4c-.3 0-.6 1 .2 1.1l3.9-.2c.4 0 .6-.9-.4-.8-1.2 0-2.7-.3-3.7 0zm-62-16.6c.5 0 1.6 1.4 1.5 1.9 0 .2-1.2 0-1.5-.3-.3-.3-.2-1.6 0-1.6zm-5.3 10.4c-1 .6.2 1.7 1 1.2 2.8-1.9 7-3.8 8-7.5.3-1.2 1.4-3.1 2.5-3.5 1-.5 2.6 1.9 3.6 0 .6-1 2.7.7 3.2-.4.6-1.3.3-2 .3-3.4 0-.8-.7-1-1.2.3-.2.6 0 1.2-.1 1.6-.2.2-.6.4-1 .2-.2-.2 0-.7-.6-1-.2 0-.6-.1-.8.2-.7 1.3-1 2.5-2.1 1-.9-1-1.4-3.1-2-.3-.2 1-1.7 2.4-2.6 2.4-1.1 0-.8-3-3.2-2.5-1.3.3-1.2 2.7-1 3.5.3 1.3 4 .4 3.7 1.2-.6 2.7-4.4 5.4-7.7 7zm-22.7 13.2c-.1.5.5 1.7 1.1 1.8.6 0 1-1.3.8-1.8-.2-.3-1.8-.3-1.9 0zm3.3 4.9c-.4-.4-1.6.7-.6 1.5.5.5 2.5 1.1 3 .2.8-1.2-.7-5.5 0-6 .5-.5 2.8 2.8 4 3 2.7.4 2-4.6 5-4.2 1.9.2 2.1-2.2 1.8-3.8-.2-1.5-2.6-3.6-3.7-4.6-1.4-1.2-2.1 1-1.2 1.6 1.2 1 3.3 2.9 3.6 4.1.1.6-1.4 1.8-2 1.5-1.4-.8-2.6-4-3.8-4.7-.4-.2-1.4.3-1 1.3.6 1.1 3 2.7 3.1 3.9.1 1-1 3.2-1.8 3.2-.9 0-3-2.7-3.7-4-.4-.5-1.5-.5-1.7.4a22 22 0 00.5 5.5c.2 1.6-.9 1.7-1.5 1.1zm-4-8.6c-.4.4.8 1.2 1 1 .4-.4 2.1-2.3 1.8-3-.3-.6-2.6-2-3-1.3-.7 1.1 2.2 1.7 1.7 2a7 7 0 00-1.5 1.3zm4.1-8.4s.8 2.5 1.4 1.4c.4-.7-1.4-1.4-1.4-1.4zm1.2 4c-.2 0-1 .7-.5 1 .8.4 2.9.8 2.4-.7-.3-.9 3.2 0 2.3-2.4a3.7 3.7 0 00-1.7-1.7c-.4 0-1.5.5-.8.9.5.2 2 1.1 1.5 1.7-.7.6-1.1-.3-1.9-.1-.4 0-.1 1.2-.4 1.5 0 .2-.7-.4-.9-.3zm5.5-9.5a3.5 3.5 0 00-1.2 2c0 .2.3.6.5.5a3.2 3.2 0 001.2-1.9c0-.3-.2-.8-.5-.6zm2.8-.3c-.8-1 1-2.6 1.7-.5.5 1.3 5.5 7.9 6.5 10.1.8 1.5 0 2.1-.9 1-2.5-3.2-4.6-7.2-7.3-10.6zm5.2.1c.9-1 2.7-3 2.2-4-.4-1-1.5-1-1.7-.7-1 1.3.8 1 .5 1.4-.5 1-1 1.6-1.3 2.6-.1.3.1.9.3.7zm77.8 3.2c-.7-.5.6-3 1.5-2 2.3 2.7 3.4 11.6 4.1 18.3 0 0-1 .9-1 .7 0-3.5-1.5-14.4-4.6-17zm-53.1-8.6c-.8-1.8 1.1-2.4 1.4-1.2 1.3 5.8 4.5 10.2 7 14.1.7 1.2 0 2-1.7.8-1.2-.8-2.5-3.9-3-4-1.2-.2-3.8 5-9.1 3.5-1.4-.4-1.3-4.5-1.4-6.3 0-.9 1-1 1 0 0 1.7 0 5.2 2.1 5.4 1.8 0 5.6-2.4 6.4-4.4.8-2-1.9-5.9-2.7-8z"/>
|
||||
<path d="M344.6 138.4c.4-1.2 6.1-10.8 6.9-12.9.4-1 2 1.8.4 3.3-1.4 1.2-5.5 8-6.3 10.4-.4 1-1.4.5-1-.8z"/>
|
||||
<path d="M354.3 129.3c1-4 3.6.6 1.3 2.8-3.4 3.4-4.5 9.9-10 10.9-1.4.3-4-.7-4.8-1.3-.3-.2.2-1.6 1.1-.9 1.3 1 4.1 1.3 5.6.1a25.4 25.4 0 006.8-11.6zm-57 12.7c-.3.3-1 .3-1.1.7-.3 1.4 0 2.2-.3 3.6s-1.3 1.4-1.2.3c0-1.4 1.3-3.5.4-3.6-.6-.1-1-.9-.4-1.3 1.1-.7 1.7-.6 2.4-.4.3.1.4.5.2.7z"/>
|
||||
<path d="M296.5 140c-1.4 1.4-2.8 1.9-4.1 3.5-.6.6-.5 1.5-.9 2.4-.3.9-1.4 1-1.7.9-.5-.4-.4-2-1-1.2-.6.9-.9 2-1.7 2-.7 0-2-1.5-1.3-1.5 2.3-.3 2.2-2 3-2.2 1-.1 1 1.5 1.7 1.2.4-.2.7-2.1 1.2-2.6 1.5-1.6 2.7-2.4 4.3-3.6.7-.6 1.3.5.5 1.2zm5.3 5c-1.2.2-1 1.7-.6 1.8.5.3 1.4.4 1.7-1.3.2-.7.3 3.5 1.8 1.9 1-1 3.1.2 4-1 .7-.9 1-1.5.4-2.7-.2-.3-1-.2-1 .7 0 .8-.5 1.7-1.3 1.6-.4-.1.2-1.9-.2-2.4a.5.5 0 00-.7 0c-.3.4.3 2.2-.6 2.4-1.2.2-.6-1.2-1-1.4-1.7-.8-1.8.2-2.5.3zm9-3c.9-.2.6-.2 2-1.3.5-.4.6.8.5 1.3 0 .7-1 .2-1.3.9-.4.9-.2 3-.4 3.8 0 .4-.8.4-.8 0-.2-1 .1-2 0-3.3 0-.4-.5-1.1 0-1.3zm-5-2.5c-.2.9-.2 1.6-.2 2.3 0 .5 1 .2 1 .1 0-.8.2-2 0-2.3-.2-.1-.7-.3-.8-.1z"/>
|
||||
<path d="M299.5 130.2l-1.4 5.6-2-3.8v3.9l-4.4-5.2 1.5 5.6-4-3.4 2.2 3.8-7-4.5 4.4 5.2-5.6-2.8 4 3.4-9-3.4 8.7 4.3a29 29 0 0112.6-2.6c4.9 0 9.3 1 12.5 2.6l8.8-4.3-9 3.4 4-3.4-5.5 2.8 4.3-5.2-7 4.5 2.2-3.8-4 3.3 1.5-5.5-4.3 5.2V132l-2 3.8-1.5-5.6z"/>
|
||||
</g>
|
||||
</g>
|
||||
<path fill="#fff" d="M249 299.7l-.1 2.2h-.4v-1.5a7.4 7.4 0 00-.4-1.3 5.8 5.8 0 00-.5-1 11.3 11.3 0 00-.8-1.1l.7-1.8a5.3 5.3 0 011.1 2 7.5 7.5 0 01.5 2.5m5.5-3.4c0 .6-.1 1-.3 1.2-.2.3-.6.5-1 .6l.2 1.1a5.3 5.3 0 010 1.7v1h-.4v-1a4.4 4.4 0 00-.2-.8 28.8 28.8 0 00-.3-.8 8.4 8.4 0 00-.6-1.2l-.8-1.3.5-1.6.8.9.7.2c.7 0 1-.3 1-1h.3a8 8 0 000 .5v.5m5.1 3.9l-.4 1.7-.6-.6a3.5 3.5 0 01-.3-1 9.9 9.9 0 010-1.4 3 3 0 01-.9.1c-.4 0-.7 0-1-.3a1 1 0 01-.4-.8c0-.7.2-1.3.6-1.8.3-.6.7-.9 1.2-.9.3 0 .6.1.7.3l.3.8v1.6c0 .7 0 1.2.2 1.4 0 .3.3.5.6.9m-1.5-2.9c0-.4-.3-.6-.7-.6a.8.8 0 00-.4.1c-.2.1-.2.2-.2.3 0 .2.2.3.8.3a2.2 2.2 0 00.5 0m6.9 2.3l-.2 2.1c-.4-.3-.8-.8-1.1-1.5a20 20 0 01-1.1-3.3 41.3 41.3 0 01-.8 3l-.6 1.3a2 2 0 01-.6.6v-2l.8-1.2a6 6 0 00.6-1.4 16 16 0 00.3-2h.4l.7 2a6.7 6.7 0 001.6 2.4"/>
|
||||
<path fill="#bf0000" d="M280.5 319.2c.3.3.5.6.6 1l.2 1.2h-.6a6.2 6.2 0 00-.7-1.1 15.2 15.2 0 00-1-1l-1.3-1.2a27.3 27.3 0 00-1.6-1.3l-.5-.4-.2-.6a9 9 0 01-.1-1.3l2.1 1.7a35.3 35.3 0 012 1.8l1.1 1.2m-7.6-4.6l-.1 1.6-2.5-.1.2-1.6h2.4m6.7 7.1l-6 1.9-1.2-1.6 5.2-1.5a6.3 6.3 0 00-.5-.7l-.7-.5a1.1 1.1 0 01-.4.8 2 2 0 01-.8.5 2.7 2.7 0 01-1.4 0c-.5 0-.8-.3-1-.6a3.1 3.1 0 01-.5-1.7c0-.8.2-1.3.6-1.5.6-.2 1.4 0 2.5.5a6.5 6.5 0 012.4 2l1.8 2.4m-4.7-3.2a3.1 3.1 0 00-.6-.2.9.9 0 00-.5 0 .5.5 0 00-.4.3.4.4 0 000 .4l.4.2h.5a.9.9 0 00.3-.3l.3-.4m-6.4-1.2l-.4 1.6-2.5-.3.4-1.5 2.5.2m6 6l-1.4.4a4.2 4.2 0 01-1.4 0 2.8 2.8 0 01-1.2-.3c-.2.4-.6.7-1.1 1a5.9 5.9 0 01-1.3.4l-1 .3-.8-1.6 1-.2 1-.3.6-.4a4.7 4.7 0 00-.7-.4 1 1 0 00-.6-.1.3.3 0 00-.2 0 .5.5 0 000 .3h-.5c-.4-.7-.5-1.2-.3-1.6.3-.4.8-.7 1.6-.9.8-.2 1.5-.2 2.1 0 .6 0 1 .3 1.2.6.1.2.2.4.1.6 0 .2 0 .5-.3 1a1.6 1.6 0 001 0l1.3-.3.8 1.6m-6.4 1.5l-1.3.2c-.7 0-1.3 0-1.8-.4a4.3 4.3 0 01-1.3-2l-.6-1.7a2 2 0 00-.6-1l-.8-.3.5-1.7 1.1.9.8 1.3.4 1.2a5 5 0 001 1.7c.2.3.4.4.7.3l1.3-.2.6 1.7m-5.5-6l-.9 1.5-2.3-.6.8-1.5 2.4.6m1.4 6.7l-6 .5-.3-1.6 5-.5a1.9 1.9 0 00-.6-.7 6 6 0 00-.8-.5l.5-1.5c.5.3 1 .6 1.2 1 .2.4.5 1 .6 1.7l.4 1.6m-4.8.8a13 13 0 01-1.8-.2 8.3 8.3 0 01-1.3-.4 4.5 4.5 0 01-1 .3h-3c-.5 0-.8 0-1-.2l-.6-.8a3.3 3.3 0 01-1.3.7 4 4 0 01-1.3.2h-1.4l.2-1.8 1.3.1c.7 0 1.3 0 1.7-.3.6-.3 1-.8 1-1.4h.6a22.9 22.9 0 00-.1 1c0 .3 0 .5.3.6l.7.2h2.9c.4-.2.6-.5.7-1l.1-.3a2.6 2.6 0 01.4-.2l.4-.1v.6l-.3.8a6.4 6.4 0 001.7.4c0-.1 0-.3-.2-.5 0-.3-.2-.4-.2-.5a.4.4 0 01.1-.2l.3-.2.8-.7.3.7c0 .2.1.5 0 .8l-.1 2.4m-9-7l-1.5 1-1.1-.6-1.1.8-1.5-.9 1.4-1 1.2.7 1.1-.9 1.5 1m-2.4 6.4l-5.8-1 .7-1.6 4.8.8a1.3 1.3 0 000-.8 4 4 0 00-.5-.6l1.3-1.3c.3.4.5.8.5 1.2 0 .4 0 1-.4 1.7l-.6 1.6m-4.9-.8l-1.2-.3c-.7-.1-1.1-.4-1.2-.9-.1-.5.1-1.2.7-2.2l1-1.7.2-.9-.3-.6 1.8-1.2.2 1.1c0 .4-.2.9-.6 1.4l-.6 1.2a4 4 0 00-.7 1.7c0 .3.1.5.4.5l1.2.3-.9 1.6m-3-6.3l-2 .9-1.4-1.4 2-.8 1.5 1.3m-.9 5.3a4 4 0 01-1.2 1.1c-.4.3-.9.4-1.4.5a7 7 0 01-1.9 0 11.8 11.8 0 01-2.2-.6 6 6 0 01-2.7-1.6c-.5-.6-.5-1.2 0-1.8a5.6 5.6 0 011.5-1.3 18.8 18.8 0 013-1.2l.4.4c-1 .4-1.8.7-2.2 1a3.3 3.3 0 00-1 .7c-.3.4-.3.8.1 1.3a8.4 8.4 0 005 1.8c1 0 1.6-.3 1.9-.6l.4-.7.1-1.4 2-1.2-.1 1.2c-.1.4-.4.8-.8 1.3l-.9 1.1"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 20 KiB |
14
public/vendor/blade-country-flags/1x1-ag.svg
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<defs>
|
||||
<clipPath>
|
||||
<path fill="#25ff01" d="M109 47.6h464.8v464.9H109z"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-120 -52.4) scale(1.1014)">
|
||||
<path fill="#fff" d="M0 47.6h693V512H0z"/>
|
||||
<path d="M1.5 48.2h690.9v196.2H1.5z"/>
|
||||
<path fill="#0061ff" d="M128.3 232.1h458.5v103.4H128.3z"/>
|
||||
<path fill="#e20000" d="M692.5 49.2v463.3H347L692.5 49.2zm-691.3 0v463.3h345.7L1.2 49.2z"/>
|
||||
<path fill="#ffd600" d="M508.8 232.2l-69.3-17.6 59-44.4-72.5 10.3 37.3-63-64.1 37.2 11.3-73.5-43.4 58-17.6-67.3-19.6 69.3-43.4-59 12.4 75.6-64.1-39.3 37.2 63-70.3-11.3 57.9 43.4-72.4 18.6h321.6z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 732 B |
763
public/vendor/blade-country-flags/1x1-ai.svg
vendored
Normal file
@@ -0,0 +1,763 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<defs>
|
||||
<clipPath>
|
||||
<path fill-opacity=".7" d="M0 0h640v480H0z"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<path fill="#012169" fill-opacity="1" stroke-width="4.1" d="M0 0h512v512H0z"/>
|
||||
<path fill="#49497d" d="M384 212.7l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M386 212.7l2 2z"/>
|
||||
<path fill="#262678" d="M379.9 214.7l2 2z"/>
|
||||
<path fill="#808067" d="M382 214.7l2 2z"/>
|
||||
<path fill="#58587b" d="M388 214.7l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M312.9 216.8l2 2z"/>
|
||||
<path fill="#1b1b74" d="M375.9 216.8l2 2z"/>
|
||||
<path fill="#6e6c70" d="M377.9 216.8l2 2z"/>
|
||||
<path fill="#cc3" d="M316.5 220.4c0 52.5-6 111.6 33 152.7 8 8.4 23.4 27.7 36.5 27 13.7-.8 31.4-21.1 39.2-31 34-44.8 28.7-98.2 29.8-150.2-15.3 6.9-23 9.2-36.4 9-10 1-25.3-5.5-34.5-10-6 4-14.7 8.9-30.4 9.4-18 .8-23.8-2.3-37.2-7z"/>
|
||||
<path fill="#99994e" d="M390 216.8l2 2z"/>
|
||||
<path fill="#49497d" d="M392 216.8l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M455 216.8l2 2z"/>
|
||||
<path fill="#a4a43d" d="M315 218.8l2 2z"/>
|
||||
<path fill="#6e6c70" d="M317 218.8l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M319 218.8l2 2z"/>
|
||||
<path fill="#1b1b74" d="M371.8 218.8l2 2z"/>
|
||||
<path fill="#6e6c70" d="M373.8 218.8l2 2z"/>
|
||||
<path fill="#a4a43d" d="M375.9 218.8l2 2z"/>
|
||||
<path fill="#d0d045" d="M384 218.8l2 2z"/>
|
||||
<path fill="#a4a43d" d="M392 218.8l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M394 218.8l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M396.2 218.8l2 2z"/>
|
||||
<path fill="#262678" d="M448.9 218.8l2 2z"/>
|
||||
<path fill="#53527c" d="M451 218.8l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M453 218.8l2 2z"/>
|
||||
<path fill="#737370" d="M323 220.9l2 2z"/>
|
||||
<path fill="#53527c" d="M325 220.9l2 2z"/>
|
||||
<path fill="#1b1b74" d="M327 220.9l2 2z"/>
|
||||
<path fill="#262678" d="M367.7 220.9l2 2z"/>
|
||||
<path fill="#6e6c70" d="M369.8 220.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M371.8 220.9l2 2z"/>
|
||||
<path fill="#e5e59d" d="M382 220.9l2 2z"/>
|
||||
<path fill="#fff" d="M320.6 226a509 509 0 004 88.2c4.9 15.4 4.2 23.9 11.3 33l99-.7c6-9.7 10.5-24.4 11-30.3 5.6-29.7 5.7-62.6 5.9-92a62 62 0 01-35.7 7.4 69 69 0 01-30.5-9.2c-9.5 5.6-12.8 8.2-28.4 8.9-12.2.6-22 1.6-36.6-5.2z"/>
|
||||
<path fill="#f2f1d7" d="M386 220.9l2 2z"/>
|
||||
<path fill="#d9d868" d="M388 220.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M396.2 220.9l2 2z"/>
|
||||
<path fill="#99994e" d="M398.2 220.9l2 2z"/>
|
||||
<path fill="#49497d" d="M400.2 220.9l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M402.2 220.9l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M442.9 220.9l2 2z"/>
|
||||
<path fill="#667" d="M444.9 220.9l2 2z"/>
|
||||
<path fill="#99994e" d="M446.9 220.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M448.9 220.9l2 2-2-2m-121.8 2l2 2z"/>
|
||||
<path fill="#99994e" d="M329.2 222.9l2 2z"/>
|
||||
<path fill="#6e6c70" d="M331.2 222.9l2 2z"/>
|
||||
<path fill="#49497d" d="M333.2 222.9l2 2z"/>
|
||||
<path fill="#1b1b74" d="M335.2 222.9l2 2-2-2m26.4 0l2 2z"/>
|
||||
<path fill="#53527c" d="M363.6 222.9l2 2-2-2z"/>
|
||||
<path fill="#8d8d5b" d="M365.7 222.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M367.7 222.9l2 2z"/>
|
||||
<path fill="#e5e59d" d="M377.9 222.9l2 2z"/>
|
||||
<path fill="#fbfaf2" d="M379.9 222.9l2 2z"/>
|
||||
<path fill="#f2f1d2" d="M390 222.9l2 2z"/>
|
||||
<path fill="#d9d868" d="M392 222.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M402.2 222.9l2 2z"/>
|
||||
<path fill="#6e6c70" d="M404.3 222.9l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M406.3 222.9l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M432.7 222.9l2 2z"/>
|
||||
<path fill="#32327b" d="M434.7 222.9l2 2z"/>
|
||||
<path fill="#58587b" d="M436.8 222.9l2 2z"/>
|
||||
<path fill="#808067" d="M438.8 222.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M442.2 223.5l1.3.7z"/>
|
||||
<path fill="#dddc7a" d="M319 224.9l2 2z"/>
|
||||
<path fill="#d0d045" d="M321 224.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M336.6 225.5l1.4.7z"/>
|
||||
<path fill="#808067" d="M339.3 224.9l2 2z"/>
|
||||
<path fill="#667" d="M341.3 224.9l2 2z"/>
|
||||
<path fill="#58587b" d="M343.4 224.9l2 2z"/>
|
||||
<path fill="#49497d" d="M345.4 224.9l2 2z"/>
|
||||
<path fill="#737370" d="M357.6 224.9l2 2z"/>
|
||||
<path fill="#99994e" d="M359.6 224.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M361.6 224.9l2 2z"/>
|
||||
<path fill="#e5e59d" d="M373.8 224.9l2 2z"/>
|
||||
<path fill="#fbfaf2" d="M375.9 224.9l2 2z"/>
|
||||
<path fill="#f2f1d2" d="M394 224.9l2 2z"/>
|
||||
<path fill="#d9d868" d="M396.2 224.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M407.6 225.5l1.4.7-1.3-.7z"/>
|
||||
<path fill="#808067" d="M410.4 224.9l2 2z"/>
|
||||
<path fill="#667" d="M412.4 224.9l2 2z"/>
|
||||
<path fill="#58587b" d="M414.4 224.9l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M416.5 224.9l2 2z"/>
|
||||
<path fill="#58587b" d="M425.9 225.5l1.4.7z"/>
|
||||
<path fill="#737370" d="M428.6 224.9l2 2z"/>
|
||||
<path fill="#99994e" d="M430.6 224.9l2 2-2-2z"/>
|
||||
<path fill="#a4a43d" d="M432.7 224.9l2 2z"/>
|
||||
<path fill="#dddc7a" d="M448.9 224.9l2 2z"/>
|
||||
<path fill="#d0d045" d="M451 224.9l2 2z"/>
|
||||
<path fill="#f2f1d7" d="M323 226.9l2 2z"/>
|
||||
<path fill="#e0dea1" d="M325 226.9l2 2z"/>
|
||||
<path fill="#dddc7a" d="M327 226.9l2 2z"/>
|
||||
<path fill="#d9d868" d="M367.7 226.9l2 2z"/>
|
||||
<path fill="#e5e3af" d="M369.8 226.9l2 2z"/>
|
||||
<path fill="#f6f6e4" d="M398.2 226.9l2 2z"/>
|
||||
<path fill="#e1e18c" d="M400.2 226.9l2 2z"/>
|
||||
<path fill="#d4d456" d="M440.8 226.9l2 2z"/>
|
||||
<path fill="#e1e18c" d="M442.9 226.9l2 2z"/>
|
||||
<path fill="#eeedc1" d="M444.9 226.9l2 2z"/>
|
||||
<path fill="#f2f1d2" d="M331.2 228.9l2 2z"/>
|
||||
<path fill="#e0dea1" d="M333.2 228.9l2 2z"/>
|
||||
<path fill="#dddc7a" d="M335.2 228.9l2 2z"/>
|
||||
<path fill="#d0d045" d="M337.3 228.9l2 2z"/>
|
||||
<path fill="#dddc7a" d="M361.6 228.9l2 2z"/>
|
||||
<path fill="#e5e3af" d="M363.6 228.9l2 2-2-2z"/>
|
||||
<path fill="#f6f6e4" d="M365.7 228.9l2 2z"/>
|
||||
<path fill="#eeedc1" d="M404.3 228.9l2 2z"/>
|
||||
<path fill="#e1e18c" d="M406.3 228.9l2 2z"/>
|
||||
<path fill="#d4d456" d="M408.3 228.9l2 2z"/>
|
||||
<path fill="#d9d868" d="M432.7 228.9l2 2z"/>
|
||||
<path fill="#e1e18c" d="M434.7 228.9l2 2z"/>
|
||||
<path fill="#eeedc1" d="M436.8 228.9l2 2z"/>
|
||||
<path fill="#f6f6e4" d="M438.8 228.9l2 2z"/>
|
||||
<path fill="#f2f1d7" d="M341.3 230.9l2 2-2-2z"/>
|
||||
<path fill="#f2f1d2" d="M343.4 230.9l2 2-2-2z"/>
|
||||
<path fill="#eeedc1" d="M345.4 230.9l2 2-2-2z"/>
|
||||
<path fill="#f2f1d2" d="M354.9 231.6l1.3.7z"/>
|
||||
<path fill="#fbfaf2" d="M357.6 230.9l2 2-2-2z"/>
|
||||
<path fill="#fef8f1" d="M367.7 230.9l4 4v-4h-4z"/>
|
||||
<path fill="#f2f1d7" d="M412.4 230.9l2 2-2-2z"/>
|
||||
<path fill="#f2f1d2" d="M414.4 230.9l2 2-2-2z"/>
|
||||
<path fill="#e5e3af" d="M416.5 230.9l2 2-2-2z"/>
|
||||
<path fill="#e5e59d" d="M419.9 231.6l1.3.7-1.4-.7z"/>
|
||||
<path fill="#e0dea1" d="M422.6 230.9l2 2-2-2z"/>
|
||||
<path fill="#f2f1d2" d="M425.9 231.6l1.4.7z"/>
|
||||
<path fill="#fbfaf2" d="M428.6 230.9l2 2-2-2z"/>
|
||||
<path fill="#fef8f1" d="M363.6 233l2 2-2-2z"/>
|
||||
<path fill="#fbbe66" d="M365.7 233l2 2z"/>
|
||||
<path fill="#fbc477" d="M363.6 235l2 2-2-2z"/>
|
||||
<path fill="#fcb144" d="M367.7 235l2 2z"/>
|
||||
<path fill="#fe9f11" d="M363.6 237l2 2-2-2z"/>
|
||||
<path fill="#fea522" d="M367.7 237l2 2z"/>
|
||||
<path fill="#fae3c9" d="M361.6 239l2 2-2-2m8.2 0l2 2z"/>
|
||||
<path fill="#fbead6" d="M379.9 239l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M382 239l2 2z"/>
|
||||
<path fill="#fae3c9" d="M390 239l2 2z"/>
|
||||
<path fill="#fef8f1" d="M392 239l2 2z"/>
|
||||
<path fill="#f9d099" d="M361.6 241l2 2z"/>
|
||||
<path fill="#fdab33" d="M369.8 241l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M373.8 241l2 2z"/>
|
||||
<path fill="#fbc477" d="M375.9 241l2 2z"/>
|
||||
<path fill="#fea522" d="M377.9 241l2 2z"/>
|
||||
<path fill="#fcb755" d="M394 241l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M396.2 241l2 2z"/>
|
||||
<path fill="#faca88" d="M361.6 243.2l2 2z"/>
|
||||
<path fill="#fea522" d="M371.8 243.2l2 2-2-2m26.4 0l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M400.2 243.2l2 2z"/>
|
||||
<path fill="#f6f6e4" d="M319 245.2l2 2z"/>
|
||||
<path fill="#fbc477" d="M361.6 245.2l2 2z"/>
|
||||
<path fill="#fbbe66" d="M402.2 245.2l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M404.3 245.2l2 2z"/>
|
||||
<path fill="#faca88" d="M361.6 247.2l2 2z"/>
|
||||
<path fill="#fcb755" d="M408.3 247.2l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M410.4 247.2l2 2z"/>
|
||||
<path fill="#fef8f1" d="M359.6 249.3l2 2z"/>
|
||||
<path fill="#fe9f11" d="M361.6 249.3l2 2z"/>
|
||||
<path fill="#fdab33" d="M418.5 249.3l2 2z"/>
|
||||
<path fill="#fcb144" d="M420.6 249.3l2 2z"/>
|
||||
<path fill="#fbc477" d="M422.6 249.3l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M424.6 249.3l4 4z"/>
|
||||
<path fill="#fef8f1" d="M426.6 249.3l2 2z"/>
|
||||
<path fill="#fcb144" d="M359.6 251.3l2 2z"/>
|
||||
<path fill="#fdab33" d="M388 251.3l2 2z"/>
|
||||
<path fill="#fbc477" d="M390 251.3l2 2zm8 0l2.2 2-2-2z"/>
|
||||
<path fill="#fea522" d="M400.2 251.3l2 2z"/>
|
||||
<path fill="#fae3c9" d="M357.6 253.3l2 2z"/>
|
||||
<path fill="#fcb144" d="M384 253.3l2 2z"/>
|
||||
<path fill="#fae3c9" d="M386 253.3l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M402.2 253.3l2 2z"/>
|
||||
<path fill="#fdab33" d="M404.3 253.3l2 2z"/>
|
||||
<path fill="#fe9f11" d="M416.5 253.3l2 2z"/>
|
||||
<path fill="#fcb755" d="M418.5 253.3l2 2z"/>
|
||||
<path fill="#f9d099" d="M420.6 253.3l2 2z"/>
|
||||
<path fill="#fbead6" d="M422.6 253.3l2 2z"/>
|
||||
<path fill="#fcb144" d="M357.6 255.3l2 2z"/>
|
||||
<path fill="#fbbe66" d="M382 255.3l2 2z"/>
|
||||
<path fill="#f9d099" d="M406.3 255.3l2 2z"/>
|
||||
<path fill="#fbead6" d="M414.4 255.3l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M355.6 257.4l2 2z"/>
|
||||
<path fill="#fbbe66" d="M379.9 257.4l2 2z"/>
|
||||
<path fill="#f9d099" d="M408.3 257.4l2 2z"/>
|
||||
<path fill="#fae3c9" d="M414.4 257.4l2 2z"/>
|
||||
<path fill="#fbc477" d="M355.6 259.4l2 2z"/>
|
||||
<path fill="#fcb144" d="M377.9 259.4l2 2-2-2m32.5 0l2 2z"/>
|
||||
<path fill="#fbbe66" d="M414.4 259.4l2 2z"/>
|
||||
<path fill="#f6f6e4" d="M319 261.4l2 2z"/>
|
||||
<path fill="#fea522" d="M355.6 261.4l2 2z"/>
|
||||
<path fill="#fbead6" d="M377.9 261.4l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M410.4 261.4l2 2z"/>
|
||||
<path fill="#fef8f1" d="M416.5 261.4l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M353.6 263.5l2 2z"/>
|
||||
<path fill="#fbbe66" d="M375.9 263.5l2 2z"/>
|
||||
<path fill="#faca88" d="M412.4 263.5l2 2z"/>
|
||||
<path fill="#f9d099" d="M416.5 263.5l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M353.6 265.5l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M375.9 265.5l2 2z"/>
|
||||
<path fill="#fae3c9" d="M386 265.5l2 2z"/>
|
||||
<path fill="#fea522" d="M388 265.5l2 2z"/>
|
||||
<path fill="#fcb144" d="M390 265.5l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M392 265.5l2 2z"/>
|
||||
<path fill="#fef8f1" d="M412.4 265.5l2 2z"/>
|
||||
<path fill="#fea522" d="M414.4 265.5l2 2z"/>
|
||||
<path fill="#fdab33" d="M416.5 265.5l2 2z"/>
|
||||
<path fill="#faca88" d="M353.6 267.5l-2.1 6 2-6z"/>
|
||||
<path fill="#fea522" d="M373.8 267.5l2 2z"/>
|
||||
<path fill="#fef8f1" d="M375.9 267.5l2 2z"/>
|
||||
<path fill="#f9d099" d="M386 267.5l2 2z"/>
|
||||
<path fill="#fdab33" d="M394 267.5l2 2z"/>
|
||||
<path fill="#fae3c9" d="M396.2 267.5l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M414.4 267.5l2 2z"/>
|
||||
<path fill="#f90" d="M416.5 267.5l2 2z"/>
|
||||
<path fill="#fbead6" d="M419.2 268.9l.6 1.3z"/>
|
||||
<path fill="#fea522" d="M377.9 269.5l2 2z"/>
|
||||
<path fill="#fbbe66" d="M379.9 269.5l2 2z"/>
|
||||
<path fill="#faca88" d="M382 269.5l2 2z"/>
|
||||
<path fill="#fcb144" d="M384 269.5l2 2z"/>
|
||||
<path fill="#fae3c9" d="M386 269.5l2 2z"/>
|
||||
<path fill="#fe9f11" d="M388 269.5l2 2z"/>
|
||||
<path fill="#fdab33" d="M398.2 269.5l2 2z"/>
|
||||
<path fill="#fbc477" d="M400.2 269.5l2 2z"/>
|
||||
<path fill="#faca88" d="M402.2 269.5l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M404.3 269.5l2 2z"/>
|
||||
<path fill="#fae3c9" d="M407.6 270.2l1.4.7-1.3-.7z"/>
|
||||
<path fill="#fef8f1" d="M410.4 269.5l2 2z"/>
|
||||
<path fill="#fbc477" d="M416.5 269.5l2 2z"/>
|
||||
<path fill="#fef8f1" d="M329.2 271.6l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M331.2 271.6l2 2z"/>
|
||||
<path fill="#fcb755" d="M384 271.6l2 2z"/>
|
||||
<path fill="#fbead6" d="M388 271.6l2 2z"/>
|
||||
<path fill="#fea522" d="M390 271.6l2 2z"/>
|
||||
<path fill="#fe9f11" d="M406.3 271.6l2 2z"/>
|
||||
<path fill="#fcb144" d="M408.3 271.6l-2 4z"/>
|
||||
<path fill="#fe9f11" d="M412.4 271.6l2 2z"/>
|
||||
<path fill="#fbbe66" d="M414.4 271.6l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M416.5 271.6l2 2z"/>
|
||||
<path fill="#fae3c9" d="M329.2 273.6l2 2z"/>
|
||||
<path fill="#fe9f11" d="M331.2 273.6l4 4z"/>
|
||||
<path fill="#fbead6" d="M333.2 273.6l2 2zm18.3 0l2 2z"/>
|
||||
<path fill="#fae3c9" d="M353.6 273.6l2 2z"/>
|
||||
<path fill="#fe9f11" d="M371.8 273.6l2 2z"/>
|
||||
<path fill="#fbc477" d="M373.8 273.6l2 2z"/>
|
||||
<path fill="#fea522" d="M375.9 273.6l2 2z"/>
|
||||
<path fill="#fbc477" d="M382 273.6l2 2z"/>
|
||||
<path fill="#fef8f1" d="M384 273.6l2 2z"/>
|
||||
<path fill="#fbc477" d="M392 273.6l2 2z"/>
|
||||
<path fill="#fff" d="M408.3 273.6l2 2z"/>
|
||||
<path fill="#fdab33" d="M410.4 273.6l2 2z"/>
|
||||
<path fill="#fbc477" d="M418.5 273.6l2 2z"/>
|
||||
<path fill="#fef8f1" d="M329.2 275.6l2 2z"/>
|
||||
<path fill="#fbead6" d="M335.2 275.6l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M345.4 275.6l2 2z"/>
|
||||
<path fill="#fe9f11" d="M355.6 275.6l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M358.9 276.3l1.4.7z"/>
|
||||
<path fill="#f8dcbb" d="M371.8 275.6l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M377.9 275.6l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M394 275.6l2 2z"/>
|
||||
<path fill="#fdab33" d="M408.3 275.6l2 2z"/>
|
||||
<path fill="#fcb755" d="M420.6 275.6l2 2z"/>
|
||||
<path fill="#fef8f1" d="M422.6 275.6l2 2z"/>
|
||||
<path fill="#53527c" d="M312.9 277.7l2 2z"/>
|
||||
<path fill="#fcb755" d="M331.2 277.7l2 2z"/>
|
||||
<path fill="#fea522" d="M335.2 277.7l2 2z"/>
|
||||
<path fill="#fbead6" d="M343.4 277.7l2 2z"/>
|
||||
<path fill="#fe9f11" d="M347.4 277.7l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M349.5 277.7l2 2z"/>
|
||||
<path fill="#fbbe66" d="M355.6 277.7l2 2z"/>
|
||||
<path fill="#fbc477" d="M357.6 277.7l2 2z"/>
|
||||
<path fill="#fbbe66" d="M359.6 277.7l2 2z"/>
|
||||
<path fill="#fea522" d="M369.8 277.7l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M396.2 277.7l2 2z"/>
|
||||
<path fill="#fcb144" d="M422.6 277.7l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M455 277.7l2 2z"/>
|
||||
<path fill="#e5e3af" d="M319 279.7l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M331.2 279.7l2 2z"/>
|
||||
<path fill="#fdab33" d="M337.3 279.7l2 2z"/>
|
||||
<path fill="#fe9f11" d="M343.4 279.7l2 2z"/>
|
||||
<path fill="#faca88" d="M347.4 279.7l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M355.6 279.7l2 2z"/>
|
||||
<path fill="#f9d099" d="M369.8 279.7l2 2-2-2m28.4 0l2 2z"/>
|
||||
<path fill="#fbbe66" d="M424.6 279.7l2 2z"/>
|
||||
<path fill="#fea522" d="M333.2 281.7l2 2z"/>
|
||||
<path fill="#fdab33" d="M339.3 281.7l2 2z"/>
|
||||
<path fill="#fea522" d="M341.3 281.7l2 2z"/>
|
||||
<path fill="#fe9f11" d="M345.4 281.7l2 2z"/>
|
||||
<path fill="#fef8f1" d="M347.4 281.7l2 2z"/>
|
||||
<path fill="#fbbe66" d="M357.6 281.7l2 2z"/>
|
||||
<path fill="#fef8f1" d="M369.8 281.7l2 2z"/>
|
||||
<path fill="#fbbe66" d="M400.2 281.7l2 2z"/>
|
||||
<path fill="#f9d099" d="M426.6 281.7l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M333.2 283.8l2 2z"/>
|
||||
<path fill="#f9d099" d="M345.4 283.8l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M357.6 283.8l2 2z"/>
|
||||
<path fill="#fdab33" d="M367.7 283.8l2 2-2-2m34.5 0l2 2z"/>
|
||||
<path fill="#fbead6" d="M428.6 283.8l2 2z"/>
|
||||
<path fill="#fea522" d="M335.2 285.8l2 2z"/>
|
||||
<path fill="#fe9f11" d="M343.4 285.8l2 2z"/>
|
||||
<path fill="#fcb144" d="M359.6 285.8l2 2z"/>
|
||||
<path fill="#faca88" d="M367.7 285.8l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M402.2 285.8l2 2z"/>
|
||||
<path fill="#fcb144" d="M428.6 285.8l2 2z"/>
|
||||
<path fill="#d3d079" d="M319 287.9l2 2z"/>
|
||||
<path fill="#faca88" d="M335.2 287.9l2 2zm24.4 0l2 2z"/>
|
||||
<path fill="#fae3c9" d="M367.7 287.9l2 2-2-2m34.5 0l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M430.6 287.9l2 2-2-2z"/>
|
||||
<path fill="#f2f1d7" d="M448.9 287.9l2 2z"/>
|
||||
<path fill="#58587b" d="M455.7 289.2l.7 1.3z"/>
|
||||
<path fill="#d9d868" d="M319.6 291.2l.8 1.4-.7-1.4z"/>
|
||||
<path fill="#f8dcbb" d="M335.2 289.9l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M400.2 289.9l2 2z"/>
|
||||
<path fill="#fe9f11" d="M402.2 289.9l2 2z"/>
|
||||
<path fill="#fcb144" d="M430.6 289.9l2 2-2-2z"/>
|
||||
<path fill="#f2f1d2" d="M449.6 291.2l.7 1.4z"/>
|
||||
<path fill="#fcf1e4" d="M335.2 291.9l2 2z"/>
|
||||
<path fill="#fef8f1" d="M398.2 291.9l2 2z"/>
|
||||
<path fill="#fe9f11" d="M400.2 291.9l2 2z"/>
|
||||
<path fill="#fdab33" d="M406.3 291.9l-2 4z"/>
|
||||
<path fill="#fcb755" d="M408.3 291.9l2 2z"/>
|
||||
<path fill="#fea522" d="M432.7 291.9l2 2z"/>
|
||||
<path fill="#f9d099" d="M434.7 291.9l2 2z"/>
|
||||
<path fill="#53527c" d="M455 291.9l2 2z"/>
|
||||
<path fill="#808067" d="M315.6 295.3l.7 1.3z"/>
|
||||
<path fill="#fea522" d="M337.3 293.9l2 2-2-2m6 0l2 2-2-2z"/>
|
||||
<path fill="#fe9f11" d="M365.7 293.9l2 2z"/>
|
||||
<path fill="#fae3c9" d="M398.2 293.9l2 2z"/>
|
||||
<path fill="#fef8f1" d="M406.3 293.9l2 2z"/>
|
||||
<path fill="#fcb144" d="M410.4 293.9l2 2z"/>
|
||||
<path fill="#fcb755" d="M436.8 293.9l2 2z"/>
|
||||
<path fill="#fef8f1" d="M438.8 293.9l4 4z"/>
|
||||
<path fill="#e5e59d" d="M449.6 295.3l.7 1.3z"/>
|
||||
<path fill="#32327b" d="M455.7 295.3l.7 1.3z"/>
|
||||
<path fill="#fcb755" d="M338 297.3l.6 1.4z"/>
|
||||
<path fill="#fef8f1" d="M345.4 295.9l2 2z"/>
|
||||
<path fill="#fbbe66" d="M365.7 295.9l2 2z"/>
|
||||
<path fill="#fbead6" d="M398.2 295.9l2 2z"/>
|
||||
<path fill="#fe9f11" d="M402.2 295.9l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M404.3 295.9l2 2z"/>
|
||||
<path fill="#fbead6" d="M410.4 295.9l2 2z"/>
|
||||
<path fill="#fdab33" d="M438.8 295.9l2 2z"/>
|
||||
<path fill="#667" d="M315 297.9l2 2-2-2z"/>
|
||||
<path fill="#f6f6e4" d="M321 297.9l2 2-2-2z"/>
|
||||
<path fill="#f9d6aa" d="M345.4 297.9l2 2-2-2z"/>
|
||||
<path fill="#fdab33" d="M361.6 297.9l2 2-2-2z"/>
|
||||
<path fill="#fe9f11" d="M363.6 297.9l2 2-2-2z"/>
|
||||
<path fill="#fcf1e4" d="M365.7 297.9l2 2-2-2z"/>
|
||||
<path fill="#fea522" d="M400.2 297.9l2 2-2-2z"/>
|
||||
<path fill="#faca88" d="M402.2 297.9l2 2-2-2m10.2 0l2 2z"/>
|
||||
<path fill="#fcb144" d="M440.8 297.9l2 2-2-2z"/>
|
||||
<path fill="#dddc7a" d="M448.9 297.9l2 2-2-2z"/>
|
||||
<path fill="#58587b" d="M315 300l2 2z"/>
|
||||
<path fill="#f2f1d2" d="M321 300l2 2z"/>
|
||||
<path fill="#fcb144" d="M338 301.4l.6 1.3z"/>
|
||||
<path fill="#fea522" d="M345.4 300l2 2z"/>
|
||||
<path fill="#fef8f1" d="M365.7 300l2 2z"/>
|
||||
<path fill="#fea522" d="M367.7 300l2 2z"/>
|
||||
<path fill="#fcb144" d="M371.8 300l2 2z"/>
|
||||
<path fill="#fbead6" d="M373.8 300l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M400.2 300l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M402.2 300l2 2z"/>
|
||||
<path fill="#fef8f1" d="M412.4 300l2 2z"/>
|
||||
<path fill="#fe9f11" d="M414.4 300l2 2z"/>
|
||||
<path fill="#fbead6" d="M442.9 300l2 2z"/>
|
||||
<path fill="#d9d868" d="M448.9 300l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M315 302l2 2z"/>
|
||||
<path fill="#e5e3af" d="M321 302l2 2z"/>
|
||||
<path fill="#faca88" d="M347.4 302l2 2z"/>
|
||||
<path fill="#fbead6" d="M367.7 302l2 2z"/>
|
||||
<path fill="#fe9f11" d="M373.8 302l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M375.9 302l2 2z"/>
|
||||
<path fill="#fbead6" d="M398.2 302l2 2z"/>
|
||||
<path fill="#fae3c9" d="M400.2 302l2 2z"/>
|
||||
<path fill="#fbead6" d="M402.2 302l2 2z"/>
|
||||
<path fill="#fbbe66" d="M414.4 302l2 2-2-2m16.3 0l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M432.7 302l2 2z"/>
|
||||
<path fill="#fef8f1" d="M434.7 302l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M436.8 302l2 2z"/>
|
||||
<path fill="#fcb755" d="M438.8 302l2 2z"/>
|
||||
<path fill="#fae3c9" d="M442.9 302l2 2z"/>
|
||||
<path fill="#808067" d="M453 302l2 2z"/>
|
||||
<path fill="#32327b" d="M315 304l2 2z"/>
|
||||
<path fill="#a4a43d" d="M317.6 305.4l.7 1.4-.6-1.4z"/>
|
||||
<path fill="#e5e59d" d="M321 304l2 2z"/>
|
||||
<path fill="#fbc477" d="M337.3 304l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M349.5 304l2 2z"/>
|
||||
<path fill="#fbbe66" d="M369.8 304l2 2z"/>
|
||||
<path fill="#f9d099" d="M375.9 304l2 2z"/>
|
||||
<path fill="#fae3c9" d="M394 304l2 2z"/>
|
||||
<path fill="#fcb144" d="M396.2 304l2 2z"/>
|
||||
<path fill="#fae3c9" d="M404.3 304l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M414.4 304l2 2z"/>
|
||||
<path fill="#f9d099" d="M430.6 304l2 2-2-2z"/>
|
||||
<path fill="#fbc477" d="M440.8 304l2 2z"/>
|
||||
<path fill="#fbead6" d="M442.9 304l2 2z"/>
|
||||
<path fill="#737370" d="M453 304l2 2z"/>
|
||||
<path fill="#d9d868" d="M321 306l2 2z"/>
|
||||
<path fill="#f9d099" d="M337.3 306l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M351.5 306l2 2-2-2m18.3 0l2 2z"/>
|
||||
<path fill="#fbc477" d="M375.9 306l2 2z"/>
|
||||
<path fill="#fef8f1" d="M386 306l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M388 306l2 2z"/>
|
||||
<path fill="#fbc477" d="M390 306l2 2z"/>
|
||||
<path fill="#fea522" d="M392 306l2 2z"/>
|
||||
<path fill="#fbead6" d="M404.3 306l2 2z"/>
|
||||
<path fill="#f2f1d2" d="M446.9 306l2 2z"/>
|
||||
<path fill="#58587b" d="M453 306l2 2z"/>
|
||||
<path fill="#99994e" d="M317 308l2 2z"/>
|
||||
<path fill="#d0d045" d="M321 308l2 2z"/>
|
||||
<path fill="#fcb144" d="M353.6 308l2 2z"/>
|
||||
<path fill="#fae3c9" d="M355.6 308l2 2z"/>
|
||||
<path fill="#fef8f1" d="M369.8 308l2 2z"/>
|
||||
<path fill="#fcb755" d="M377.9 308l2 2z"/>
|
||||
<path fill="#fbc477" d="M379.9 308l2 2z"/>
|
||||
<path fill="#fcb144" d="M382 308l2 2z"/>
|
||||
<path fill="#fea522" d="M384 308l2 2z"/>
|
||||
<path fill="#fe9f11" d="M400.2 308l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M402.2 308l2 2z"/>
|
||||
<path fill="#fef8f1" d="M430.6 308l2 2-2-2z"/>
|
||||
<path fill="#e0dea1" d="M446.9 308l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M453 308l2 2z"/>
|
||||
<path fill="#737370" d="M317 310.2l2 2z"/>
|
||||
<path fill="#fbfaf2" d="M323 310.2l2 2z"/>
|
||||
<path fill="#fea522" d="M339.3 310.2l2 2z"/>
|
||||
<path fill="#fe9f11" d="M357.6 310.2l2 2z"/>
|
||||
<path fill="#fcb144" d="M359.6 310.2l2 2z"/>
|
||||
<path fill="#fbc477" d="M361.6 310.2l2 2z"/>
|
||||
<path fill="#faca88" d="M363.6 310.2l2 2-2-2z"/>
|
||||
<path fill="#fbc477" d="M365.7 310.2l2 2z"/>
|
||||
<path fill="#fcb144" d="M367.7 310.2l2 2z"/>
|
||||
<path fill="#fdab33" d="M369.8 310.2l2 2z"/>
|
||||
<path fill="#fbc477" d="M398.2 310.2l2 2z"/>
|
||||
<path fill="#fef8f1" d="M400.2 310.2l2 2z"/>
|
||||
<path fill="#fdab33" d="M428.6 310.2l2 2z"/>
|
||||
<path fill="#e1e18c" d="M446.9 310.2l2 2z"/>
|
||||
<path fill="#a4a43d" d="M451.6 311.5l.7 1.4z"/>
|
||||
<path fill="#262678" d="M453 310.2l2 2z"/>
|
||||
<path fill="#58587b" d="M317 312.2l2 2z"/>
|
||||
<path fill="#f2f1d2" d="M323 312.2l2 2z"/>
|
||||
<path fill="#faca88" d="M339.3 312.2l2 2z"/>
|
||||
<path fill="#fe9f11" d="M394 312.2l2 2z"/>
|
||||
<path fill="#fbead6" d="M396.2 312.2l2 2z"/>
|
||||
<path fill="#fbc477" d="M414.4 312.2l2 2z"/>
|
||||
<path fill="#faca88" d="M428.6 312.2l2 2z"/>
|
||||
<path fill="#d4d456" d="M446.9 312.2l2 2z"/>
|
||||
<path fill="#32327b" d="M317 314.2l2 2z"/>
|
||||
<path fill="#e5e59d" d="M323 314.2l2 2z"/>
|
||||
<path fill="#fef8f1" d="M339.3 314.2l2 2z"/>
|
||||
<path fill="#fe9f11" d="M341.3 314.2l2 2z"/>
|
||||
<path fill="#fbead6" d="M394 314.2l2 2z"/>
|
||||
<path fill="#fea522" d="M414.4 314.2l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M428.6 314.2l2 2z"/>
|
||||
<path fill="#808067" d="M451 314.2l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M317 316.2l2 2z"/>
|
||||
<path fill="#a4a43d" d="M319 316.2l2 2z"/>
|
||||
<path fill="#d9d868" d="M323 316.2l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M341.3 316.2l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M412.4 316.2l2 2z"/>
|
||||
<path fill="#faca88" d="M426.6 316.2l2 2z"/>
|
||||
<path fill="#f2f1d2" d="M444.9 316.2l2 2z"/>
|
||||
<path fill="#58587b" d="M451 316.2l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M319 318.3l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M343.4 318.3l2 2z"/>
|
||||
<path fill="#fdab33" d="M384 318.3l2 2z"/>
|
||||
<path fill="#fff" d="M386 318.3l2 2z"/>
|
||||
<path fill="#fcb144" d="M389.4 318.9l1.4.7z"/>
|
||||
<path fill="#fef8f1" d="M410.4 318.3l-2 4z"/>
|
||||
<path fill="#fe9f11" d="M412.4 318.3l2 2z"/>
|
||||
<path fill="#fdab33" d="M424.6 318.3l-2 4z"/>
|
||||
<path fill="#e5e59d" d="M444.9 318.3l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M451 318.3l2 2z"/>
|
||||
<path fill="#667" d="M319 320.3l2 2z"/>
|
||||
<path fill="#f2f1d2" d="M325 320.3l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M345.4 320.3l2 2z"/>
|
||||
<path fill="#fe9f11" d="M384 320.3l2 2z"/>
|
||||
<path fill="#faca88" d="M386 320.3l2 2z"/>
|
||||
<path fill="#fea522" d="M388 320.3l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M390 320.3l2 2z"/>
|
||||
<path fill="#fdab33" d="M410.4 320.3l2 2z"/>
|
||||
<path fill="#fef8f1" d="M424.6 320.3l2 2z"/>
|
||||
<path fill="#d9d868" d="M444.9 320.3l2 2z"/>
|
||||
<path fill="#a4a43d" d="M448.9 320.3l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M451 320.3l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M319 322.3l2 2z"/>
|
||||
<path fill="#e5e59d" d="M325 322.3l2 2z"/>
|
||||
<path fill="#fae3c9" d="M347.4 322.3l4 4z"/>
|
||||
<path fill="#fe9f11" d="M349.5 322.3l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M388 322.3l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M406.3 322.3l2 2z"/>
|
||||
<path fill="#fdab33" d="M408.3 322.3l2 2z"/>
|
||||
<path fill="#fcb144" d="M420.6 322.3l2 2z"/>
|
||||
<path fill="#fef8f1" d="M422.6 322.3l2 2z"/>
|
||||
<path fill="#fbfaf2" d="M442.9 322.3l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M448.9 322.3l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M319 324.4l2 2z"/>
|
||||
<path fill="#a4a43d" d="M321 324.4l2 2z"/>
|
||||
<path fill="#d4d456" d="M325 324.4l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M386 324.4l2 2z"/>
|
||||
<path fill="#f9d099" d="M404.3 324.4l2 2z"/>
|
||||
<path fill="#fe9f11" d="M406.3 324.4l2 2z"/>
|
||||
<path fill="#faca88" d="M418.5 324.4l2 2z"/>
|
||||
<path fill="#eeedc1" d="M442.9 324.4l2 2z"/>
|
||||
<path fill="#58587b" d="M448.9 324.4l2 2z"/>
|
||||
<path fill="#737370" d="M321 326.4l2 2z"/>
|
||||
<path fill="#f6f6e4" d="M327 326.4l2 2z"/>
|
||||
<path fill="#fbbe66" d="M349.5 326.4l2 2z"/>
|
||||
<path fill="#fcb144" d="M382 326.4l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M384.6 327.8l.7 1.3z"/>
|
||||
<path fill="#fbbe66" d="M400.2 326.4l2 2z"/>
|
||||
<path fill="#fe9f11" d="M402.2 326.4l2 2z"/>
|
||||
<path fill="#fbc477" d="M414.4 326.4l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M416.5 326.4l2 2z"/>
|
||||
<path fill="#d3d079" d="M442.9 326.4l2 2z"/>
|
||||
<path fill="#a4a43d" d="M446.9 326.4l2 2z"/>
|
||||
<path fill="#262678" d="M448.9 326.4l2 2z"/>
|
||||
<path fill="#49497d" d="M321 328.4l2 2z"/>
|
||||
<path fill="#e0dea1" d="M327 328.4l2 2z"/>
|
||||
<path fill="#fae3c9" d="M347.4 328.4l2 2z"/>
|
||||
<path fill="#fdab33" d="M375.9 328.4l2 2z"/>
|
||||
<path fill="#fbc477" d="M377.9 328.4l2 2z"/>
|
||||
<path fill="#fbead6" d="M379.9 328.4l2 2z"/>
|
||||
<path fill="#fcb144" d="M386 328.4l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M412.4 328.4l2 2z"/>
|
||||
<path fill="#99994e" d="M446.9 328.4l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M321 330.5l2 2z"/>
|
||||
<path fill="#a4a43d" d="M323 330.5l2 2z"/>
|
||||
<path fill="#d4d456" d="M327 330.5l2 2z"/>
|
||||
<path fill="#f9d099" d="M345.4 330.5l2 2z"/>
|
||||
<path fill="#fe9f11" d="M347.4 330.5l2 2-2-2m10.2 0l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M359.6 330.5l2 2z"/>
|
||||
<path fill="#f9d099" d="M361.6 330.5l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M369.8 330.5l2 2z"/>
|
||||
<path fill="#fae3c9" d="M371.8 330.5l2 2z"/>
|
||||
<path fill="#fef8f1" d="M373.8 330.5l2 2z"/>
|
||||
<path fill="#fbead6" d="M390 330.5l2 2z"/>
|
||||
<path fill="#fae3c9" d="M392 330.5l2 2z"/>
|
||||
<path fill="#faca88" d="M394 330.5l2 2z"/>
|
||||
<path fill="#fbc477" d="M396.2 330.5l2 2z"/>
|
||||
<path fill="#fdab33" d="M398.2 330.5l2 2z"/>
|
||||
<path fill="#fe9f11" d="M408.3 330.5l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M410.4 330.5l2 2z"/>
|
||||
<path fill="#e5e3af" d="M440.8 330.5l2 2z"/>
|
||||
<path fill="#667" d="M446.9 330.5l2 2z"/>
|
||||
<path fill="#737370" d="M323 332.5l2 2z"/>
|
||||
<path fill="#f2f1d7" d="M329.2 332.5l2 2z"/>
|
||||
<path fill="#fea522" d="M343.4 332.5l2 2z"/>
|
||||
<path fill="#fe9f11" d="M353.6 332.5l2 2z"/>
|
||||
<path fill="#fbbe66" d="M355.6 332.5l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M357.6 332.5l2 2z"/>
|
||||
<path fill="#fea522" d="M406.3 332.5l2 2z"/>
|
||||
<path fill="#fbead6" d="M408.3 332.5l2 2z"/>
|
||||
<path fill="#dddc7a" d="M440.8 332.5l2 2z"/>
|
||||
<path fill="#a4a43d" d="M444.9 332.5l2 2z"/>
|
||||
<path fill="#262678" d="M446.9 332.5l2 2z"/>
|
||||
<path fill="#49497d" d="M323 334.5l2 2z"/>
|
||||
<path fill="#a4a43d" d="M325.8 335.9l.7 1.3z"/>
|
||||
<path fill="#d3d079" d="M329.2 334.5l2 2z"/>
|
||||
<path fill="#f9d099" d="M345.4 334.5l2 2z"/>
|
||||
<path fill="#fcb144" d="M347.4 334.5l2 2z"/>
|
||||
<path fill="#faca88" d="M349.5 334.5l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M351.5 334.5l2 2z"/>
|
||||
<path fill="#fef8f1" d="M353.6 334.5l2 2z"/>
|
||||
<path fill="#f8dcbb" d="M398.2 334.5l2 2z"/>
|
||||
<path fill="#fcf1e4" d="M406.3 334.5l2 2z"/>
|
||||
<path fill="#f6f6e4" d="M438.8 334.5l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M444.9 334.5l2 2z"/>
|
||||
<path fill="#fbfaf2" d="M331.2 336.5l2 2z"/>
|
||||
<path fill="#fbbe66" d="M398.2 336.5l2 2z"/>
|
||||
<path fill="#faca88" d="M404.3 336.5l2 2z"/>
|
||||
<path fill="#e1e18c" d="M438.8 336.5l2 2z"/>
|
||||
<path fill="#49497d" d="M444.9 336.5l2 2z"/>
|
||||
<path fill="#58587b" d="M325 338.6l2 2z"/>
|
||||
<path fill="#e5e59d" d="M331.2 338.6l2 2z"/>
|
||||
<path fill="#fe9f11" d="M398.2 338.6l2 2z"/>
|
||||
<path fill="#fdab33" d="M402.2 338.6l2 2z"/>
|
||||
<path fill="#fbfaf2" d="M436.8 338.6l2 2z"/>
|
||||
<path fill="#a4a43d" d="M442.9 338.6l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M444.9 338.6l2 2z"/>
|
||||
<path fill="#1b1b74" d="M325 340.6l2 2z"/>
|
||||
<path fill="#a4a43d" d="M327 340.6l2 2z"/>
|
||||
<path fill="#d0d045" d="M331.2 340.6l2 2z"/>
|
||||
<path fill="#fbead6" d="M396.2 340.6l2 2z"/>
|
||||
<path fill="#fe9f11" d="M400.2 340.6l2 2z"/>
|
||||
<path fill="#fbead6" d="M402.2 340.6l2 2z"/>
|
||||
<path fill="#e5e59d" d="M436.8 340.6l2 2z"/>
|
||||
<path fill="#667" d="M442.9 340.6l2 2z"/>
|
||||
<path fill="#6e6c70" d="M327 342.6l2 2z"/>
|
||||
<path fill="#e5e3af" d="M333.2 342.6l2 2z"/>
|
||||
<path fill="#faca88" d="M396.8 344l.7 1.4z"/>
|
||||
<path fill="#fae3c9" d="M400.2 342.6l2 2z"/>
|
||||
<path fill="#fbfaf2" d="M434.7 342.6l2 2z"/>
|
||||
<path fill="#a4a43d" d="M440.8 342.6l2 2z"/>
|
||||
<path fill="#1b1b74" d="M442.9 342.6l2 2-2-2m-115.8 2l2 2z"/>
|
||||
<path fill="#a4a43d" d="M329.2 344.7l2 2z"/>
|
||||
<path fill="#d0d045" d="M333.2 344.7l2 2z"/>
|
||||
<path fill="#fbfaf2" d="M335.2 344.7l2 2z"/>
|
||||
<path fill="#f9d6aa" d="M398.2 344.7l2 2z"/>
|
||||
<path fill="#e5e59d" d="M434.7 344.7l2 2z"/>
|
||||
<path fill="#6e6c70" d="M440.8 344.7l2 2-2-2m-111.6 2l2 2z"/>
|
||||
<path fill="#8cbf84" d="M335.2 346.7l2 2z"/>
|
||||
<path fill="#0cf" d="M336 346.7c7 14.8 32 49.8 51 49.2 18.7-.7 39.6-35 47.7-49.2z"/>
|
||||
<path fill="#a4a43d" d="M438.8 346.7l2 2z"/>
|
||||
<path fill="#1b1b74" d="M440.8 346.7l2 2-2-2m-111.6 2l2 2z"/>
|
||||
<path fill="#a4a43d" d="M331.2 348.7l2 2z"/>
|
||||
<path fill="#adb333" d="M335.2 348.7l2 2z"/>
|
||||
<path fill="#1ac5b5" d="M337.3 348.7l2 2z"/>
|
||||
<path fill="#68b070" d="M432.7 348.7l2 2z"/>
|
||||
<path fill="#667" d="M438.8 348.7l2 2z"/>
|
||||
<path fill="#58587b" d="M331.2 350.8l2 2z"/>
|
||||
<path fill="#7fb15c" d="M337.3 350.8l2 2z"/>
|
||||
<path fill="#27c2aa" d="M430.6 350.8l2 2-2-2z"/>
|
||||
<path fill="#a4a43d" d="M436.8 350.8l-2 4z"/>
|
||||
<path fill="#0e0e6e" d="M438.8 350.8l2 2-2-2m-107.6 2l2 2z"/>
|
||||
<path fill="#a4a43d" d="M333.2 352.8l4 4z"/>
|
||||
<path fill="#34be9e" d="M339.3 352.8l2 2z"/>
|
||||
<path fill="#96b247" d="M430.6 352.8l2 2-2-2z"/>
|
||||
<path fill="#53527c" d="M436.8 352.8l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M333.2 354.9l2 2z"/>
|
||||
<path fill="#a2b23d" d="M339.3 354.9l2 2z"/>
|
||||
<path fill="#0dc9c1" d="M341.3 354.9l2 2z"/>
|
||||
<path fill="#5bb47c" d="M428.6 354.9l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M434.7 354.9l2 2z"/>
|
||||
<path fill="#737370" d="M335.2 356.9l2 2z"/>
|
||||
<path fill="#74b166" d="M341.3 356.9l2 2z"/>
|
||||
<path fill="#27c2aa" d="M426.6 356.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M432.7 356.9l-2 4z"/>
|
||||
<path fill="#262678" d="M434.7 356.9l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M335.2 358.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M337.3 358.9l4 4z"/>
|
||||
<path fill="#42bb92" d="M343.4 358.9l2 2z"/>
|
||||
<path fill="#0dc9c1" d="M424.6 358.9l2 2z"/>
|
||||
<path fill="#96b247" d="M426.6 358.9l2 2z"/>
|
||||
<path fill="#58587b" d="M432.7 358.9l2 2z"/>
|
||||
<path fill="#3a3a7c" d="M337.3 360.9l2 2z"/>
|
||||
<path fill="#adb333" d="M343.4 360.9l2 2z"/>
|
||||
<path fill="#27c2aa" d="M345.4 360.9l2 2z"/>
|
||||
<path fill="#74b166" d="M424.6 360.9l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M430.6 360.9l2 2-2-2z"/>
|
||||
<path fill="#6e6c70" d="M339.3 362.9l2 2z"/>
|
||||
<path fill="#96b247" d="M345.4 362.9l2 2z"/>
|
||||
<path fill="#0dc9c1" d="M347.4 362.9l2 2z"/>
|
||||
<path fill="#42bb92" d="M422.6 362.9l2 2z"/>
|
||||
<path fill="#a4a43d" d="M428.6 362.9l-4 6 4-6z"/>
|
||||
<path fill="#1b1b74" d="M430.6 362.9l2 2-2-2z"/>
|
||||
<path fill="#0e0e6e" d="M339.3 364.9l2 2-2-2z"/>
|
||||
<path fill="#8d8d5b" d="M341.3 364.9l2 2-2-2z"/>
|
||||
<path fill="#7fb15c" d="M347.4 364.9l2 2-2-2z"/>
|
||||
<path fill="#34be9e" d="M420.6 364.9l2 2-2-2z"/>
|
||||
<path fill="#3a3a7c" d="M428.6 364.9l2 2-2-2z"/>
|
||||
<path fill="#1b1b74" d="M341.3 367l2 2z"/>
|
||||
<path fill="#a4a43d" d="M343.4 367l22.3 22.3z"/>
|
||||
<path fill="#74b166" d="M349.5 367l2 2z"/>
|
||||
<path fill="#27c2aa" d="M418.5 367l2 2z"/>
|
||||
<path fill="#adb333" d="M420.6 367l2 2z"/>
|
||||
<path fill="#667" d="M426.6 367l2 2z"/>
|
||||
<path fill="#32327b" d="M343.4 369l2 2z"/>
|
||||
<path fill="#42bb92" d="M351.5 369l2 2z"/>
|
||||
<path fill="#0dc9c1" d="M416.5 369l-8.2 10.2 8.3-10.3z"/>
|
||||
<path fill="#adb333" d="M418.5 369l2 2z"/>
|
||||
<path fill="#737370" d="M424.6 369l2 2z"/>
|
||||
<path fill="#49497d" d="M345.4 371l2 2z"/>
|
||||
<path fill="#42bb92" d="M353.6 371l2 2z"/>
|
||||
<path fill="#96b247" d="M416.5 371l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M422.6 371l-2 4z"/>
|
||||
<path fill="#0e0e6e" d="M424.6 371l2 2z"/>
|
||||
<path fill="#53527c" d="M347.4 373l2 2z"/>
|
||||
<path fill="#42bb92" d="M355.6 373l2 2z"/>
|
||||
<path fill="#96b247" d="M414.4 373l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M422.6 373l2 2z"/>
|
||||
<path fill="#6e6c70" d="M349.5 375l2 2z"/>
|
||||
<path fill="#42bb92" d="M357.6 375l2 2z"/>
|
||||
<path fill="#96b247" d="M412.4 375l2 2z"/>
|
||||
<path fill="#a4a43d" d="M418.5 375l-4 6.2 4-6z"/>
|
||||
<path fill="#262678" d="M420.6 375l2 2z"/>
|
||||
<path fill="#6e6c70" d="M351.5 377.2l2 2z"/>
|
||||
<path fill="#42bb92" d="M359.6 377.2l2 2z"/>
|
||||
<path fill="#96b247" d="M410.4 377.2l2 2z"/>
|
||||
<path fill="#262678" d="M418.5 377.2l2 2z"/>
|
||||
<path fill="#6e6c70" d="M353.6 379.2l2 2z"/>
|
||||
<path fill="#68b070" d="M361.6 379.2l2 2z"/>
|
||||
<path fill="#27c2aa" d="M406.3 379.2l2 2z"/>
|
||||
<path fill="#adb333" d="M408.3 379.2l2 2z"/>
|
||||
<path fill="#262678" d="M416.5 379.2l2 2z"/>
|
||||
<path fill="#667" d="M355.6 381.2l2 2z"/>
|
||||
<path fill="#74b166" d="M363.6 381.2l2 2-2-2z"/>
|
||||
<path fill="#34be9e" d="M404.3 381.2l2 2z"/>
|
||||
<path fill="#adb333" d="M406.3 381.2l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M412.4 381.2l-2 4z"/>
|
||||
<path fill="#262678" d="M414.4 381.2l2 2z"/>
|
||||
<path fill="#49497d" d="M357.6 383.2l2 2z"/>
|
||||
<path fill="#96b247" d="M365.7 383.2l2 2z"/>
|
||||
<path fill="#0dc9c1" d="M367.7 383.2l2 2z"/>
|
||||
<path fill="#42bb92" d="M402.2 383.2l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M412.4 383.2l2 2z"/>
|
||||
<path fill="#49497d" d="M359.6 385.3l2 2z"/>
|
||||
<path fill="#a2b23d" d="M367.7 385.3l2 2z"/>
|
||||
<path fill="#27c2aa" d="M369.8 385.3l2 2z"/>
|
||||
<path fill="#74b166" d="M400.2 385.3l2 2z"/>
|
||||
<path fill="#a4a43d" d="M406.3 385.3l-6 8z"/>
|
||||
<path fill="#808067" d="M408.3 385.3l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M410.4 385.3l2 2z"/>
|
||||
<path fill="#262678" d="M361.6 387.3l2 2z"/>
|
||||
<path fill="#adb333" d="M369.8 387.3l2 2z"/>
|
||||
<path fill="#42bb92" d="M371.8 387.3l2 2z"/>
|
||||
<path fill="#0dc9c1" d="M396.2 387.3l2 2z"/>
|
||||
<path fill="#96b247" d="M398.2 387.3l2 2z"/>
|
||||
<path fill="#6e6c70" d="M406.3 387.3l2 2z"/>
|
||||
<path fill="#1b1b74" d="M363.6 389.3l2 2-2-2z"/>
|
||||
<path fill="#8d8d5b" d="M365.7 389.3l2 2z"/>
|
||||
<path fill="#74b166" d="M373.8 389.3l2 2z"/>
|
||||
<path fill="#0dc9c1" d="M375.9 389.3l2 2z"/>
|
||||
<path fill="#34be9e" d="M394 389.3l2 2z"/>
|
||||
<path fill="#adb333" d="M396.2 389.3l2 2z"/>
|
||||
<path fill="#49497d" d="M404.3 389.3l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M365.7 391.4l2 2z"/>
|
||||
<path fill="#6e6c70" d="M367.7 391.4l2 2z"/>
|
||||
<path fill="#a4a43d" d="M369.8 391.4l4 4z"/>
|
||||
<path fill="#96b247" d="M375.9 391.4l2 2z"/>
|
||||
<path fill="#27c2aa" d="M377.9 391.4l2 2z"/>
|
||||
<path fill="#68b070" d="M392 391.4l2 2z"/>
|
||||
<path fill="#32327b" d="M402.2 391.4l2 2z"/>
|
||||
<path fill="#49497d" d="M369.8 393.4l2 2z"/>
|
||||
<path fill="#5bb47c" d="M379.9 393.4l2 2z"/>
|
||||
<path fill="#27c2aa" d="M388 393.4l2 2z"/>
|
||||
<path fill="#96b247" d="M390 393.4l2 2z"/>
|
||||
<path fill="#a4a43d" d="M396.2 393.4l-2 4z"/>
|
||||
<path fill="#808067" d="M398.2 393.4l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M400.2 393.4l2 2z"/>
|
||||
<path fill="#262678" d="M371.8 395.4l2 2z"/>
|
||||
<path fill="#8d8d5b" d="M373.8 395.4l2 2z"/>
|
||||
<path fill="#8bb252" d="M382 395.4l2 2z"/>
|
||||
<path fill="#1ac5b5" d="M384 395.4l2 2z"/>
|
||||
<path fill="#5bb47c" d="M386 395.4l2 2z"/>
|
||||
<path fill="#58587b" d="M396.2 395.4l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M373.8 397.5l2 2z"/>
|
||||
<path fill="#667" d="M375.9 397.5l2 2z"/>
|
||||
<path fill="#a4a43d" d="M377.9 397.5l2 2z"/>
|
||||
<path fill="#99994e" d="M392 397.5l2 2z"/>
|
||||
<path fill="#32327b" d="M394 397.5l2 2-2-2m-16.1 2l2 2z"/>
|
||||
<path fill="#99994e" d="M379.9 399.5l2 2z"/>
|
||||
<path fill="#a4a43d" d="M388 399.5l2 2z"/>
|
||||
<path fill="#667" d="M390 399.5l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M392 399.5l2 2-2-2m-12.1 2l2 2z"/>
|
||||
<path fill="#667" d="M382 401.5l2 2z"/>
|
||||
<path fill="#a4a43d" d="M384 401.5l2 2z"/>
|
||||
<path fill="#99994e" d="M386 401.5l2 2z"/>
|
||||
<path fill="#32327b" d="M388 401.5l2 2z"/>
|
||||
<path fill="#262678" d="M384 403.5l2 2z"/>
|
||||
<path fill="#0e0e6e" d="M386 403.5l2 2z"/>
|
||||
<path fill="#f90" d="M388 267.5c3.2 7.4 13.2 15.5 16 19.5-3.5 4-4.2 3.6-3.8 11 6-6.4 6.2-7 10.2-6.1 8.6 8.6 1.5 27-5.6 31-7.1 4.3-5.8-.1-16.5 5.2 4.9 4.2 10.6-.6 15.2.7 2.5 3-1.2 8.4.7 13.6 4-.4 3.6-8.7 4.6-11.7 3-11 21-18.6 21.9-28.7 3.8-1.7 7.5-.5 12 2-2.2-9.4-9.7-9.3-11.8-12.2-4.8-7.4-9.1-15.8-19.4-18-8-1.7-7.3.5-12.3-3-3.2-2.4-12.7-7-11.2-3.3z"/>
|
||||
<path fill="#fff" fill-rule="evenodd" d="M410.6 275.9a1.6 1.6 0 11-3.3 0 1.6 1.6 0 013.3 0z"/>
|
||||
<path fill="#f90" d="M362.9 298.8c5-6.2 7.6-19 9.8-23.2 5.2 1.2 5 2 11.5-1.8-8.5-2.4-9.2-2.2-10.2-6.1 3.6-11.7 23.2-14 30-9.6 7.2 4.3 2.7 5.2 12.4 12 1.4-6.2-5.5-9-6.5-13.6 1.5-3.7 8-3 11.6-7-2.2-3.5-9.3.8-12.4 1.4-11 2.5-26.3-9.8-35.6-6-3.3-2.5-4-6.4-4-11.7-7.1 6.5-3.5 13-5.2 16.3-4.2 7.7-9.7 15.5-6.8 25.6 2.2 7.8 3.8 6.2 3.2 12.3-.7 3.9-.4 14.5 2.2 11.4z"/>
|
||||
<path fill="#fff" fill-rule="evenodd" d="M359.8 274.9c.8-.4 1.8-.1 2.2.7a1.6 1.6 0 11-2.2-.7z"/>
|
||||
<path fill="#f90" d="M404 303c-8-1-20.1 3.4-25 3.8-1.5-5.1-.8-5.5-7.4-9 2.3 8.6 2.8 9 0 12-11.8 2.9-24-12.7-23.8-20.8 0-8.3 3.2-5 4-17-6 2-4.8 9.5-8.3 12.8-4 .6-6.6-5.3-12-6.3-1.8 3.7 5.5 7.5 7.6 9.9 7.9 8.2 5.2 27.5 13.3 33.5-.4 4.2-3.4 6.8-8 9.4 9.3 2.9 13-3.7 16.7-4 8.8-.2 18.3.4 25.5-7.3 5.4-6 3.3-6.5 8.8-9 3.7-1.4 12.6-7.2 8.6-8z"/>
|
||||
<path fill="#fff" fill-rule="evenodd" d="M385.2 318.2a1.6 1.6 0 111.7-2.8 1.6 1.6 0 01-1.7 2.8z"/>
|
||||
<path fill="#012169" stroke-width=".5" d="M0 0h256v256H0z"/>
|
||||
<path fill="#fff" stroke-width=".5" d="M256 0v32l-95 96 95 93.5V256h-33.5L127 162l-93 94H0v-34l93-93.5L0 37V0h31l96 94 93-94z"/>
|
||||
<path fill="#c8102e" stroke-width=".5" d="M92 162l5.5 17L21 256H0v-1.5zm62-6l27 4 75 73.5V256zM256 0l-96 98-2-22 75-76zM0 .5L96.5 95 67 91 0 24.5z"/>
|
||||
<path fill="#fff" stroke-width=".5" d="M88 0v256h80V0zM0 88v80h256V88z"/>
|
||||
<path fill="#c8102e" stroke-width=".5" d="M0 104v48h256v-48zM104 0v256h48V0z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 37 KiB |
5
public/vendor/blade-country-flags/1x1-al.svg
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
|
||||
<path fill="#e41e20" d="M0 0h512v512H0z"/>
|
||||
<path d="M204.9 99.5c-5 0-13.2 1.6-13 5.4-14-2.3-15.4 3.4-14.6 8.5 1.4-2 3-3.1 4.2-3.3 1.9-.3 3.8.3 5.8 1.5a23 23 0 015 4.4c-4.8 1.1-8.6.4-12.4-.3a17.6 17.6 0 01-6.1-2.5c-1.6-1.1-2.1-2.1-4.6-4.7-2.9-3-6-2.1-5 2.5 2.2 4.3 6 6.3 10.7 7 2.2.4 5.6 1.2 9.4 1.2 3.8 0 8.1-.5 10.5 0-1.4.8-3 2.4-6.2 3-3.2.6-8-2-11-2.6.4 2.5 3.5 4.8 9.7 6 10.2 2.2 18.7 4 24.3 7 5.6 3 9.1 6.8 11.6 9.8 5 6 5.3 10.5 5.6 11.5 1 9.5-2.2 14.8-8.4 16.4-3 .8-8.5-.7-10.5-3-2-2.4-4-6.4-3.4-12.7.5-2.5 3.4-9 1-10.3a291.6 291.6 0 00-34.4-16c-2.7-1.1-5 2.5-5.8 4A53.5 53.5 0 01129 107c-4.6-8.1-12.1 0-10.9 7.7 2.1 8.6 8.6 14.8 16.5 19.2 8 4.5 18.1 8.8 28.3 8.6 5.5 1 5.5 8.2-1.1 9.5-13 0-23.2-.2-32.9-9.6-7.4-6.7-11.5 1.3-9.4 5.8 3.6 14 23.6 18 43.8 13.4 7.8-1.3 3.1 7 .9 7.2-8.4 6-23.5 12-36.8-.1-6.1-4.7-10.2-.7-8 6 6 17.5 28.5 13.8 44 5.2 4-2.2 7.6 3 2.7 6.9-19.2 13.4-28.9 13.6-37.6 8.4-10.8-4.3-11.8 7.8-5.3 11.8 7.2 4.4 25.4 1 38.9-7.4 5.7-4.2 6 2.4 2.3 5-15.9 13.8-22.2 17.5-38.8 15.2-8.2-.6-8 9.5-1.6 13.5 8.8 5.4 26.1-3.6 39.5-14.7 5.6-3 6.6 2 3.8 7.8a57.4 57.4 0 01-23.3 19.2 29.1 29.1 0 01-19.5.7c-6.2-2.2-7 4.2-3.6 10 2 3.5 10.6 4.7 19.7 1.4 9.2-3.2 19-10.8 25.7-19.8 6-5.1 5.2 1.8 2.5 6.7-13.5 21.3-25.9 29.2-42.1 27.9-7.3-1.2-8.9 4.4-4.3 9.6 8 6.7 18.2 6.4 27-.2a751 751 0 0030.8-32.6c5.5-4.4 7.3 0 5.7 9-1.5 5.1-5.2 10.5-15.3 14.5-7 4-1.8 9.4 3.4 9.5 2.9 0 8.7-3.3 13-8.3 5.9-6.5 6.2-11 9.5-21.1 3-5 8.4-2.7 8.4 2.5-2.6 10.2-4.8 12-10 16.2-5.1 4.7 3.4 6.3 6.3 4.4 8.3-5.6 11.3-12.8 14.1-19.4 2-4.8 7.8-2.5 5.1 5.3-6.4 18.5-17 25.8-35.5 29.6-1.9.3-3 1.4-2.4 3.6l7.5 7.5c-11.5 3.3-20.8 5.2-32.2 8.5L142 300.6c-1.5-3.4-2.2-8.7-10.4-5-5.7-2.6-8.2-1.6-11.4 1 4.5.1 6.5 1.3 8.3 3.4 2.3 6 7.6 6.6 13 5 3.5 2.9 5.4 5.2 9 8.2l-17.8-.6c-6.3-6.7-11.3-6.3-15.8-1-3.5.5-5 .5-7.3 4.7 3.7-1.5 6-2 7.7-.3 6.6 3.9 11 3 14.3 0l18.7 1.1c-2.3 2-5.6 3.1-8 5.2-9.7-2.8-14.7 1-16.4 8.8a18.2 18.2 0 00-1.4 10c1-3.2 2.5-5.9 5.3-7.6 8.6 2.2 11.8-1.3 12.3-6.5 4.2-3.4 10.5-4.1 14.6-7.6 4.9 1.6 7.2 2.6 12.1 4.1 1.7 5.3 5.7 7.4 12 6 7.7.3 6.3 3.4 7 5.9 2-3.6 2-7-2.8-10.3-1.7-4.6-5.5-6.7-10.4-4-4.7-1.3-5.9-3.2-10.5-4.6 11.7-3.7 20-4.5 31.8-8.3 3 2.8 5.2 4.8 8.2 7.2 1.6 1 3 1.2 4 0 7.3-10.6 10.6-20 17.4-27 2.6-2.9 6-6.8 9.6-7.8 1.8-.4 4-.2 5.5 1.4 1.4 1.6 2.6 4.4 2 8.7-.6 6.2-2 8.2-3.8 11.8-1.7 3.7-3.9 6-6 8.8-4.4 5.7-10.1 9-13.5 11.2-6.8 4.4-9.7 2.5-15 2.2-6.7.8-8.5 4.1-3 8.7a21 21 0 0013.7 2.3c3.3-.6 7-4.8 9.8-7 3-3.6 8.1.6 4.7 4.7-6.3 7.5-12.6 12.4-20.3 12.3-8.2 1-6.7 5.7-1.3 7.9 9.8 4 18.6-3.5 23-8.5 3.5-3.7 6-3.9 5.3 2-3.4 10.5-8.1 14.6-15.7 15.1-6.2-.5-6.3 4.2-1.7 7.5 10.3 7 17.7-5 21.2-12.4 2.5-6.6 6.3-3.5 6.7 2 0 7.3-3.2 13.2-12 20.7 6.7 10.7 14.5 21.7 21.3 32.5l20.5-228.2-20.5-36c-2.1-2-9.3-10.5-11.2-11.7-.7-.7-1.1-1.2-.1-1.6 1-.4 3.2-.8 4.8-1-4.4-4.4-8-5.8-16.3-8.2 2-.8 4-.3 9.9-.6a32.3 32.3 0 00-14.4-11c4.5-3 5.3-3.3 9.8-7-7.7-.6-14.3-2-20.8-4a41 41 0 00-12.8-3.7zm.7 9c4 0 6.6 1.4 6.6 3 0 1.7-2.5 3.1-6.6 3.1-4 0-6.6-1.5-6.6-3.2 0-1.7 2.6-3 6.6-3z"/>
|
||||
<use width="100%" height="100%" transform="matrix(-1 0 0 1 512 0)" xlink:href="#a"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
5
public/vendor/blade-country-flags/1x1-am.svg
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<path fill="red" d="M0 0h512v170.7H0z"/>
|
||||
<path fill="#00f" d="M0 170.7h512v170.6H0z"/>
|
||||
<path fill="orange" d="M0 341.3h512V512H0z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 209 B |