diff --git a/.env.example b/.env.example index 91ba58f..8bd3cef 100644 --- a/.env.example +++ b/.env.example @@ -32,3 +32,6 @@ MAIL_ENCRYPTION=null PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= + +DOCUMENT_REFERENCE_PREFIX=DOCUMENT +DOCUMENT_SEQUENCE_LENGTH=6 diff --git a/README.md b/README.md new file mode 100644 index 0000000..c5f80b3 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# Web Application Boilerplate + +A boilerplate to speed up development. + +# Packages + +Most of the packages from Spatie. + +1. Laravel Permission +2. Laravel Media Library +3. Laravel Activity +4. Laravel Newsletter +5. Laravel Analytics +6. Laravel Response Cache +7. Laravel Sluggable +8. Laravel Menu +9. Laravel Collection Macros +10. Laravel Google Calendar +11. Laravel Html +12. Image Optimizer + +# Google API + +Create [Google Service Account Credentials](https://console.developers.google.com/apis/dashboard?project=karnival-usahawan-desa) for: + +1. [Google Calendar](https://github.com/spatie/laravel-google-calendar#how-to-obtain-the-credentials-to-communicate-with-google-calendar) +2. [Google Analytic](https://github.com/spatie/laravel-analytics#how-to-obtain-the-credentials-to-communicate-with-google-analytics) + +# TODO + +1. Media Library for User diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index a8c5158..ea4d6fd 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -1,6 +1,6 @@ 'required|string|max:255', - 'email' => 'required|string|email|max:255|unique:users', + 'name' => 'required|string|max:255', + 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', ]); } @@ -58,13 +58,13 @@ protected function validator(array $data) * Create a new user instance after a valid registration. * * @param array $data - * @return \App\User + * @return \OSI\Models\User */ protected function create(array $data) { return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], + 'name' => $data['name'], + 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); } diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php index cf726ee..ab56802 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -1,8 +1,8 @@ middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + return view('home'); + } +} diff --git a/app/Http/Controllers/User/AvatarController.php b/app/Http/Controllers/User/AvatarController.php new file mode 100644 index 0000000..2d6f792 --- /dev/null +++ b/app/Http/Controllers/User/AvatarController.php @@ -0,0 +1,37 @@ +middleware(['auth']); + } + + public function show() + { + return view('users.avatar'); + } + + public function store(Request $request) + { + $this->validate($request, [ + 'avatar' => 'required|image|mimes:jpg,png', + ]); + + auth()->user()->addMediaFromRequest('avatar') + ->preservingOriginal() + ->usingFileName('avatar.png') + ->toMediaCollection('avatar'); + + userlog(auth()->user(), 'Uploaded new avatar'); + + alert()->success('New Avatar Uploaded'); + + return redirect()->route('show.avatar'); + } +} diff --git a/app/Http/Controllers/User/LogController.php b/app/Http/Controllers/User/LogController.php new file mode 100644 index 0000000..6e04318 --- /dev/null +++ b/app/Http/Controllers/User/LogController.php @@ -0,0 +1,19 @@ +middleware(['auth']); + } + + public function __invoke() + { + $logs = auth()->user()->activity->sortByDesc('created_at'); + return view('users.log', compact('logs')); + } +} diff --git a/app/Http/Controllers/WelcomeController.php b/app/Http/Controllers/WelcomeController.php new file mode 100644 index 0000000..81e5dcc --- /dev/null +++ b/app/Http/Controllers/WelcomeController.php @@ -0,0 +1,11 @@ + [ - \App\Http\Middleware\EncryptCookies::class, + \OSI\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, + \OSI\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, + \Spatie\Referer\CaptureReferer::class, + \UxWeb\SweetAlert\ConvertMessagesIntoSweetAlert::class, ], 'api' => [ @@ -51,11 +53,11 @@ class Kernel extends HttpKernel * @var array */ protected $routeMiddleware = [ - 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, + 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, - 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, - 'can' => \Illuminate\Auth\Middleware\Authorize::class, - 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \OSI\Http\Middleware\RedirectIfAuthenticated::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, ]; } diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php index 033136a..53d975e 100644 --- a/app/Http/Middleware/EncryptCookies.php +++ b/app/Http/Middleware/EncryptCookies.php @@ -1,6 +1,6 @@ user->assignRole('user'); + } +} diff --git a/app/Listeners/LogFailedLogin.php b/app/Listeners/LogFailedLogin.php new file mode 100644 index 0000000..4eed697 --- /dev/null +++ b/app/Listeners/LogFailedLogin.php @@ -0,0 +1,31 @@ +performedOn($event->user) + ->log('Failed log in attempt.'); + } +} diff --git a/app/Listeners/LogPasswordReset.php b/app/Listeners/LogPasswordReset.php new file mode 100644 index 0000000..d04e71b --- /dev/null +++ b/app/Listeners/LogPasswordReset.php @@ -0,0 +1,29 @@ +user, 'User successfully logged in.'); + } +} diff --git a/app/Listeners/LogSuccessfulLogin.php b/app/Listeners/LogSuccessfulLogin.php new file mode 100644 index 0000000..588f297 --- /dev/null +++ b/app/Listeners/LogSuccessfulLogin.php @@ -0,0 +1,29 @@ +user, 'User successfully logged in.'); + } +} diff --git a/app/Listeners/LogSuccessfulLogout.php b/app/Listeners/LogSuccessfulLogout.php new file mode 100644 index 0000000..32352bb --- /dev/null +++ b/app/Listeners/LogSuccessfulLogout.php @@ -0,0 +1,29 @@ +user, 'User successfully logged out.'); + } +} diff --git a/app/Macros/Database/Schema/Blueprint.php b/app/Macros/Database/Schema/Blueprint.php new file mode 100644 index 0000000..95e50d0 --- /dev/null +++ b/app/Macros/Database/Schema/Blueprint.php @@ -0,0 +1,80 @@ +unsignedInteger($key) + ->index() + ->nullable(); + }); + + DefaultBlueprint::macro('fkDeleteCascade', function ($key, $table) { + $this->foreign($key) + ->references('id') + ->on($table) + ->onDelete('cascade'); + }); + + DefaultBlueprint::macro('addAcceptance', function ($value) { + $this->boolean('is_' . $value)->default(false); + $this->datetime($value . '_at')->nullable(); + $this->integer($value . '_by')->nullable(); + $this->text($value . '_remarks')->nullable(); + }); + + DefaultBlueprint::macro('hashslug', function () { + $this->string('hashslug')->nullable()->unique(); + }); + + DefaultBlueprint::macro('slug', function () { + $this->string('slug')->nullable()->unique(); + }); + + DefaultBlueprint::macro('label', function () { + $this->string('label')->nullable(); + $this->string('name')->nullable(); + }); + + DefaultBlueprint::macro('expired', function () { + $this->boolean('is_expired')->default(false); + $this->datetime('expired_at')->nullable(); + }); + + DefaultBlueprint::macro('user', function () { + $this->addForeign('user_id', 'users'); + $this->fkDeleteCascade('user_id', 'users'); + }); + + DefaultBlueprint::macro('amount', function ($label = 'amount') { + $this->bigInteger($label)->nullable()->default(0); + }); + + DefaultBlueprint::macro('smallAmount', function ($label = 'amount') { + $this->integer($label)->nullable()->default(0); + }); + + DefaultBlueprint::macro('reference', function () { + $this->string('reference')->nullable()->unique()->index(); + }); + + DefaultBlueprint::macro('standardTime', function () { + $this->softDeletes(); + $this->timestamps(); + }); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..5bd9034 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,50 @@ +getTable(), 'hashslug') && is_null($model->hashslug)) { + $timestamp = time() + $model->count() + 1; + $str_slug_fqcn = str_slug_fqcn($model); + $model->hashslug = hashids($str_slug_fqcn)->encode($timestamp); + } + } +} diff --git a/app/Observers/Kernel.php b/app/Observers/Kernel.php new file mode 100644 index 0000000..a4569f2 --- /dev/null +++ b/app/Observers/Kernel.php @@ -0,0 +1,82 @@ + FQCN of Observer + ]; + + /** + * One observer observed by many models + * @var array + */ + protected $observeBy = [ + \OSI\Observers\ReferenceObserver::class => [ + + ], + \OSI\Observers\HashidsObserver::class => [ + \OSI\Models\User::class, + \Spatie\MediaLibrary\Media::class, + ], + ]; + + /** + * Make this class + * @return \OSI\Observers\Kernel + */ + public static function make() + { + return (new self); + } + + /** + * Register observers + * @return void + */ + public function observes() + { + $this->observeSingle(); + $this->observeBy(); + } + + /** + * Observe One-on-One Model-Observer + * @return void + */ + private function observeSingle() + { + if (count($this->observers) > 0) { + foreach ($this->observers as $model => $observer) { + if (class_exists($model) && class_exists($observer)) { + $model::observe($observer); + } + } + } + } + + /** + * One observer observed by many models + * @return void + */ + private function observeBy() + { + if (count($this->observeBy) > 0) { + foreach ($this->observeBy as $observer => $models) { + foreach ($models as $model) { + if (class_exists($model) && class_exists($observer)) { + $model::observe($observer); + } + } + } + } + } +} diff --git a/app/Observers/ReferenceObserver.php b/app/Observers/ReferenceObserver.php new file mode 100644 index 0000000..b1baaec --- /dev/null +++ b/app/Observers/ReferenceObserver.php @@ -0,0 +1,35 @@ +getTable(), 'reference') && is_null($model->reference)) { + + $count = $model::count(); + + $reference = isset($model->reference_prefix) ? + generate_reference($model->reference_prefix, $count) : + generate_reference(config('document.prefix'), $count); + + $model->reference = $reference; + } + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 35471f6..6ef0f60 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -1,6 +1,6 @@ app->environment() !== 'production') { + $this->app->register(\NasrulHazim\ArtisanMakers\ArtisanMakersServiceProvider::class); + } } /** diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 9784b1a..47f3fd1 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -1,6 +1,6 @@ 'App\Policies\ModelPolicy', + 'OSI\Model' => 'OSI\Policies\ModelPolicy', ]; /** diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php index 352cce4..e01fb7f 100644 --- a/app/Providers/BroadcastServiceProvider.php +++ b/app/Providers/BroadcastServiceProvider.php @@ -1,6 +1,6 @@ [ - 'App\Listeners\EventListener', + 'Illuminate\Auth\Events\Registered' => [ + 'OSI\Listeners\AssignDefaultRole', + ], + 'Illuminate\Auth\Events\Login' => [ + 'OSI\Listeners\LogSuccessfulLogin', + ], + 'Illuminate\Auth\Events\Failed' => [ + 'OSI\Listeners\LogFailedLogin', + ], + 'Illuminate\Auth\Events\Logout' => [ + 'OSI\Listeners\LogSuccessfulLogout', + ], + 'Illuminate\Auth\Events\PasswordReset' => [ + 'OSI\Listeners\LogPasswordReset', ], ]; diff --git a/app/Providers/MacroServiceProvider.php b/app/Providers/MacroServiceProvider.php new file mode 100644 index 0000000..74f62f2 --- /dev/null +++ b/app/Providers/MacroServiceProvider.php @@ -0,0 +1,28 @@ +observes(); + } + + /** + * Register the application services. + * + * @return void + */ + public function register() + { + // + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 5ea48d3..13880e9 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -1,6 +1,6 @@ hashids = new HashidsProvider($salt, $length, $alphabet); + } + + /** + * Create an instance of Hashids + * + * @return OSI\Services\Hashids + */ + public static function make($salt, $length, $alphabet) + { + return new self($salt, $length, $alphabet); + } + + /** + * Encode + * @param int $value + * @return string + */ + public function encode(int $value): string + { + return $this->hashids->encode($value); + } + + /** + * Decode + * @param string + * @return int|null + */ + public function decode(string $value): int + { + $value = $this->hashids->decode($value); + + if (is_array($value)) { + return $value[0]; + } else { + return null; + } + } +} diff --git a/app/Support/helpers.php b/app/Support/helpers.php new file mode 100644 index 0000000..8fa4f77 --- /dev/null +++ b/app/Support/helpers.php @@ -0,0 +1,99 @@ +format('Y/m/d'); + + if ($count != false) { + $reference_number[] = generate_sequence($count); + } else { + $reference_number[] = strtoupper(\Illuminate\Support\Str::random(config('document.sequence_length'))); + } + + return implode('/', $reference_number); + } +} + +/** + * Hashids Helper + */ +if (!function_exists('hashids')) { + function hashids($salt = null, $length = null, $alphabet = null) + { + $salt = is_null($salt) ? config('hashids.salt') : config('hashids.salt') . $salt; + $length = is_null($length) ? config('hashids.length') : $length; + $alphabet = is_null($alphabet) ? config('hashids.alphabet') : $alphabet; + $salt = \Illuminate\Support\Facades\Hash::make($salt); + return \OSI\Services\Hashids::make($salt, $length, $alphabet); + } +} + +/** + * Get Slug Name for Fully Qualified Class Name (FQCN) + */ +if (!function_exists('str_slug_fqcn')) { + function str_slug_fqcn($value) + { + $fqcn = get_class($value); + $fqcn = str_replace('\\', '-', $fqcn); + return strtolower($fqcn); + } +} + +/** + * Log Current logged in user activities + */ +if (!function_exists('userlog')) { + function userlog($model, $message) + { + activity() + ->performedOn($model) + ->causedBy(auth()->user()) + ->log($message); + } +} diff --git a/app/Traits/HasMediaExtended.php b/app/Traits/HasMediaExtended.php new file mode 100644 index 0000000..8ede630 --- /dev/null +++ b/app/Traits/HasMediaExtended.php @@ -0,0 +1,44 @@ +getMedia($collectionName, $filters); + + return $media->sortByDesc('created_at')->first(); + } + + /* + * Get the url of the image for the given conversionName + * for first media for the given collectionName. + * If no profile is given, return the source's url. + */ + public function getLastMediaUrl(string $collectionName = 'default', string $conversionName = ''): string + { + $media = $this->getLastMedia($collectionName); + + if (!$media) { + return ''; + } + + return $media->getUrl($conversionName); + } +} diff --git a/app/Traits/HasSlugExtended.php b/app/Traits/HasSlugExtended.php new file mode 100644 index 0000000..ca2e6ab --- /dev/null +++ b/app/Traits/HasSlugExtended.php @@ -0,0 +1,24 @@ +generateSlugsFrom($this->slug_from) + ->saveSlugsTo('slug'); + } +} diff --git a/app/Traits/HasThumbnail.php b/app/Traits/HasThumbnail.php new file mode 100644 index 0000000..c275be9 --- /dev/null +++ b/app/Traits/HasThumbnail.php @@ -0,0 +1,38 @@ +addMediaConversion('thumbnail_navbar') + ->width(22) + ->height(22) + ->performOnCollections('images', 'avatar'); + + // use for newsfeed + $this->addMediaConversion('thumbnail_newsfeed') + ->width(38) + ->height(38) + ->performOnCollections('images', 'avatar'); + + // use for sidebar menus, left or right + $this->addMediaConversion('thumbnail_sidebar') + ->width(38) + ->height(38) + ->performOnCollections('images', 'avatar'); + + // Use for main menu + $this->addMediaConversion('thumbnail_menu') + ->width(20) + ->height(20) + ->performOnCollections('images', 'avatar'); + } +} diff --git a/app/Traits/LogsActivityExtended.php b/app/Traits/LogsActivityExtended.php new file mode 100644 index 0000000..0f0baa2 --- /dev/null +++ b/app/Traits/LogsActivityExtended.php @@ -0,0 +1,38 @@ +singleton( Illuminate\Contracts\Http\Kernel::class, - App\Http\Kernel::class + OSI\Http\Kernel::class ); $app->singleton( Illuminate\Contracts\Console\Kernel::class, - App\Console\Kernel::class + OSI\Console\Kernel::class ); $app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, - App\Exceptions\Handler::class + OSI\Exceptions\Handler::class ); /* diff --git a/composer.json b/composer.json index 2728b2c..788a2b5 100644 --- a/composer.json +++ b/composer.json @@ -1,14 +1,16 @@ { - "name": "laravel/laravel", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], + "name": "osinitiative/web-app-boilerplate", + "description": "Web Application Boilerplate Based on Laravel Framework.", + "keywords": ["framework", "laravel", "osinitiative", "web-app-boilerplate"], "license": "MIT", "type": "project", "require": { "php": ">=7.0.0", "fideloper/proxy": "~3.3", + "hashids/hashids": "^2.0", "laravel/framework": "5.5.*", "laravel/tinker": "~1.0", + "nasrulhazim/artisanmakers": "^1.0", "spatie/image-optimizer": "^1.0", "spatie/laravel-activitylog": "^2.3", "spatie/laravel-analytics": "^3.3", @@ -21,7 +23,8 @@ "spatie/laravel-permission": "^2.7", "spatie/laravel-referer": "^1.3", "spatie/laravel-responsecache": "^4.1", - "spatie/laravel-sluggable": "^2.1" + "spatie/laravel-sluggable": "^2.1", + "uxweb/sweet-alert": "^1.4" }, "require-dev": { "filp/whoops": "~2.0", @@ -35,8 +38,11 @@ "database/factories" ], "psr-4": { - "App\\": "app/" - } + "OSI\\": "app/" + }, + "files": [ + "app/Support/helpers.php" + ] }, "autoload-dev": { "psr-4": { @@ -54,7 +60,8 @@ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ - "@php artisan key:generate" + "@php artisan key:generate", + "@php artisan storage:link" ], "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", diff --git a/composer.lock b/composer.lock index 3ec183f..bcd6713 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "9984088966c6da6a65849a9e57cfd70a", + "content-hash": "fb1ab6e80c833d91711c33facf247246", "packages": [ { "name": "anahkiasen/underscore-php", @@ -780,6 +780,72 @@ ], "time": "2017-03-20T17:10:46+00:00" }, + { + "name": "hashids/hashids", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/ivanakimov/hashids.php.git", + "reference": "7a945a5192d4a5c8888364970feece9bc26179df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ivanakimov/hashids.php/zipball/7a945a5192d4a5c8888364970feece9bc26179df", + "reference": "7a945a5192d4a5c8888364970feece9bc26179df", + "shasum": "" + }, + "require": { + "php": "^5.6.4 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.3" + }, + "suggest": { + "ext-bcmatch": "Required to use BC Math arbitrary precision mathematics (*).", + "ext-gmp": "Required to use GNU multiple precision mathematics (*)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Hashids\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ivan Akimov", + "email": "ivan@barreleye.com", + "homepage": "https://twitter.com/IvanAkimov" + }, + { + "name": "Vincent Klaiber", + "email": "hello@vinkla.com", + "homepage": "https://vinkla.com" + } + ], + "description": "Generate short, unique, non-sequential ids (like YouTube and Bitly) from numbers", + "homepage": "http://hashids.org/php", + "keywords": [ + "bitly", + "decode", + "encode", + "hash", + "hashid", + "hashids", + "ids", + "obfuscate", + "youtube" + ], + "time": "2017-10-28T11:24:20+00:00" + }, { "name": "intervention/image", "version": "2.4.1", @@ -1447,6 +1513,43 @@ ], "time": "2017-01-23T04:29:33+00:00" }, + { + "name": "nasrulhazim/artisanmakers", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/nasrulhazim/artisanmakers.git", + "reference": "92cadbc1040a73274241e9f0d5e96fe7c9836a83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nasrulhazim/artisanmakers/zipball/92cadbc1040a73274241e9f0d5e96fe7c9836a83", + "reference": "92cadbc1040a73274241e9f0d5e96fe7c9836a83", + "shasum": "" + }, + "require": { + "illuminate/console": "5.5.*", + "illuminate/support": "5.5.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "NasrulHazim\\ArtisanMakers\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nasrul Hazim", + "email": "nasrulhazim.m@gmail.com" + } + ], + "description": "Laravel Artisan Makers", + "time": "2017-12-08T16:40:51+00:00" + }, { "name": "nesbot/carbon", "version": "1.22.1", @@ -4231,6 +4334,67 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "time": "2016-09-20T12:50:39+00:00" }, + { + "name": "uxweb/sweet-alert", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/uxweb/sweet-alert.git", + "reference": "92519b916755d673f92343767edd06110b167d05" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/uxweb/sweet-alert/zipball/92519b916755d673f92343767edd06110b167d05", + "reference": "92519b916755d673f92343767edd06110b167d05", + "shasum": "" + }, + "require": { + "illuminate/session": "~5.0", + "illuminate/support": "~5.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.5", + "phpunit/phpunit": "^5.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "UxWeb\\SweetAlert\\SweetAlertServiceProvider" + ], + "aliases": { + "Alert": "UxWeb\\SweetAlert\\SweetAlert" + } + } + }, + "autoload": { + "psr-4": { + "UxWeb\\SweetAlert\\": "src/SweetAlert/" + }, + "files": [ + "src/SweetAlert/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Uziel Bueno", + "email": "ux.webs@gmail.com" + } + ], + "description": "A simple PHP package to show Sweet Alerts with the Laravel Framework", + "keywords": [ + "alert", + "laravel", + "notifier", + "sweet" + ], + "time": "2017-09-10T17:14:08+00:00" + }, { "name": "vlucas/phpdotenv", "version": "v2.4.0", diff --git a/config/activitylog.php b/config/activitylog.php new file mode 100644 index 0000000..b280bd1 --- /dev/null +++ b/config/activitylog.php @@ -0,0 +1,38 @@ + env('ACTIVITY_LOGGER_ENABLED', true), + + /* + * When the clean-command is executed, all recording activities older than + * the number of days specified here will be deleted. + */ + 'delete_records_older_than_days' => (365 * 7), + + /* + * If no log name is passed to the activity() helper + * we use this default log name. + */ + 'default_log_name' => 'default', + + /* + * You can specify an auth driver here that gets user models. + * If this is null we'll use the default Laravel auth driver. + */ + 'default_auth_driver' => null, + + /* + * If set to true, the subject returns soft deleted models. + */ + 'subject_returns_soft_deleted_models' => false, + + /* + * This model will be used to log activity. The only requirement is that + * it should be or extend the Spatie\Activitylog\Models\Activity model. + */ + 'activity_model' => \Spatie\Activitylog\Models\Activity::class, +]; diff --git a/config/analytics.php b/config/analytics.php new file mode 100644 index 0000000..8f52ad8 --- /dev/null +++ b/config/analytics.php @@ -0,0 +1,32 @@ + env('ANALYTICS_VIEW_ID'), + + /* + * Path to the client secret json file. Take a look at the README of this package + * to learn how to get this file. + */ + 'service_account_credentials_json' => storage_path('app/analytics/service-account-credentials.json'), + + /* + * The amount of minutes the Google API responses will be cached. + * If you set this to zero, the responses won't be cached at all. + */ + 'cache_lifetime_in_minutes' => 60 * 24, + + /* + * Here you may configure the "store" that the underlying Google_Client will + * use to store it's data. You may also add extra parameters that will + * be passed on setCacheConfig (see docs for google-api-php-client). + * + * Optional parameters: "lifetime", "prefix" + */ + 'cache' => [ + 'store' => 'file', + ], +]; diff --git a/config/app.php b/config/app.php index 0e4ebed..94a313a 100644 --- a/config/app.php +++ b/config/app.php @@ -11,9 +11,9 @@ | framework needs to place the application's name in a notification or | any other location as required by the application or its packages. | - */ + */ - 'name' => env('APP_NAME', 'Laravel'), + 'name' => env('APP_NAME', 'Web Application Boilerplate'), /* |-------------------------------------------------------------------------- @@ -24,9 +24,9 @@ | running in. This may determine how you prefer to configure various | services your application utilizes. Set this in your ".env" file. | - */ + */ - 'env' => env('APP_ENV', 'production'), + 'env' => env('APP_ENV', 'production'), /* |-------------------------------------------------------------------------- @@ -37,9 +37,9 @@ | stack traces will be shown on every error that occurs within your | application. If disabled, a simple generic error page is shown. | - */ + */ - 'debug' => env('APP_DEBUG', false), + 'debug' => env('APP_DEBUG', false), /* |-------------------------------------------------------------------------- @@ -50,9 +50,9 @@ | the Artisan command line tool. You should set this to the root of | your application so that it is used when running Artisan tasks. | - */ + */ - 'url' => env('APP_URL', 'http://localhost'), + 'url' => env('APP_URL', 'http://localhost'), /* |-------------------------------------------------------------------------- @@ -63,9 +63,9 @@ | will be used by the PHP date and date-time functions. We have gone | ahead and set this to a sensible default for you out of the box. | - */ + */ - 'timezone' => 'UTC', + 'timezone' => env('APP_TIMEZONE', 'UTC'), /* |-------------------------------------------------------------------------- @@ -76,9 +76,9 @@ | by the translation service provider. You are free to set this value | to any of the locales which will be supported by the application. | - */ + */ - 'locale' => 'en', + 'locale' => env('APP_LOCALE', 'en'), /* |-------------------------------------------------------------------------- @@ -89,9 +89,9 @@ | is not available. You may change the value to correspond to any of | the language folders that are provided through your application. | - */ + */ - 'fallback_locale' => 'en', + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), /* |-------------------------------------------------------------------------- @@ -102,11 +102,11 @@ | to a random, 32 character string, otherwise these encrypted strings | will not be safe. Please do this before deploying an application! | - */ + */ - 'key' => env('APP_KEY'), + 'key' => env('APP_KEY'), - 'cipher' => 'AES-256-CBC', + 'cipher' => 'AES-256-CBC', /* |-------------------------------------------------------------------------- @@ -119,11 +119,11 @@ | | Available Settings: "single", "daily", "syslog", "errorlog" | - */ + */ - 'log' => env('APP_LOG', 'single'), + 'log' => env('APP_LOG', 'single'), - 'log_level' => env('APP_LOG_LEVEL', 'debug'), + 'log_level' => env('APP_LOG_LEVEL', 'debug'), /* |-------------------------------------------------------------------------- @@ -134,9 +134,9 @@ | request to your application. Feel free to add your own services to | this array to grant expanded functionality to your applications. | - */ + */ - 'providers' => [ + 'providers' => [ /* * Laravel Framework Service Providers... @@ -167,15 +167,23 @@ /* * Package Service Providers... */ + Spatie\Permission\PermissionServiceProvider::class, + Spatie\Analytics\AnalyticsServiceProvider::class, + Spatie\Menu\Laravel\MenuServiceProvider::class, + Spatie\GoogleCalendar\GoogleCalendarServiceProvider::class, + Spatie\Html\HtmlServiceProvider::class, + UxWeb\SweetAlert\SweetAlertServiceProvider::class, /* * Application Service Providers... */ - App\Providers\AppServiceProvider::class, - App\Providers\AuthServiceProvider::class, - // App\Providers\BroadcastServiceProvider::class, - App\Providers\EventServiceProvider::class, - App\Providers\RouteServiceProvider::class, + OSI\Providers\AppServiceProvider::class, + OSI\Providers\AuthServiceProvider::class, + // OSI\Providers\BroadcastServiceProvider::class, + OSI\Providers\EventServiceProvider::class, + OSI\Providers\RouteServiceProvider::class, + OSI\Providers\MacroServiceProvider::class, + OSI\Providers\ObserverServiceProvider::class, ], @@ -188,44 +196,49 @@ | is started. However, feel free to register as many as you wish as | the aliases are "lazy" loaded so they don't hinder performance. | - */ - - 'aliases' => [ - - 'App' => Illuminate\Support\Facades\App::class, - 'Artisan' => Illuminate\Support\Facades\Artisan::class, - 'Auth' => Illuminate\Support\Facades\Auth::class, - 'Blade' => Illuminate\Support\Facades\Blade::class, - 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, - 'Bus' => Illuminate\Support\Facades\Bus::class, - 'Cache' => Illuminate\Support\Facades\Cache::class, - 'Config' => Illuminate\Support\Facades\Config::class, - 'Cookie' => Illuminate\Support\Facades\Cookie::class, - 'Crypt' => Illuminate\Support\Facades\Crypt::class, - 'DB' => Illuminate\Support\Facades\DB::class, - 'Eloquent' => Illuminate\Database\Eloquent\Model::class, - 'Event' => Illuminate\Support\Facades\Event::class, - 'File' => Illuminate\Support\Facades\File::class, - 'Gate' => Illuminate\Support\Facades\Gate::class, - 'Hash' => Illuminate\Support\Facades\Hash::class, - 'Lang' => Illuminate\Support\Facades\Lang::class, - 'Log' => Illuminate\Support\Facades\Log::class, - 'Mail' => Illuminate\Support\Facades\Mail::class, - 'Notification' => Illuminate\Support\Facades\Notification::class, - 'Password' => Illuminate\Support\Facades\Password::class, - 'Queue' => Illuminate\Support\Facades\Queue::class, - 'Redirect' => Illuminate\Support\Facades\Redirect::class, - 'Redis' => Illuminate\Support\Facades\Redis::class, - 'Request' => Illuminate\Support\Facades\Request::class, - 'Response' => Illuminate\Support\Facades\Response::class, - 'Route' => Illuminate\Support\Facades\Route::class, - 'Schema' => Illuminate\Support\Facades\Schema::class, - 'Session' => Illuminate\Support\Facades\Session::class, - 'Storage' => Illuminate\Support\Facades\Storage::class, - 'URL' => Illuminate\Support\Facades\URL::class, - 'Validator' => Illuminate\Support\Facades\Validator::class, - 'View' => Illuminate\Support\Facades\View::class, - + */ + + 'aliases' => [ + + 'App' => Illuminate\Support\Facades\App::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + 'Analytics' => Spatie\Analytics\AnalyticsFacade::class, + 'Menu' => Spatie\Menu\Laravel\MenuFacade::class, + 'GoogleCalendar' => Spatie\GoogleCalendar\GoogleCalendarFacade::class, + 'Html' => Spatie\Html\Facades\Html::class, + 'Link' => Spatie\Menu\Laravel\Link::class, + 'Alert' => UxWeb\SweetAlert\SweetAlert::class, ], ]; diff --git a/config/auth.php b/config/auth.php index 7817501..3c3d93f 100644 --- a/config/auth.php +++ b/config/auth.php @@ -11,10 +11,10 @@ | reset options for your application. You may change these defaults | as required, but they're a perfect start for most applications. | - */ + */ - 'defaults' => [ - 'guard' => 'web', + 'defaults' => [ + 'guard' => 'web', 'passwords' => 'users', ], @@ -33,16 +33,16 @@ | | Supported: "session", "token" | - */ + */ - 'guards' => [ + 'guards' => [ 'web' => [ - 'driver' => 'session', + 'driver' => 'session', 'provider' => 'users', ], 'api' => [ - 'driver' => 'token', + 'driver' => 'token', 'provider' => 'users', ], ], @@ -62,12 +62,12 @@ | | Supported: "database", "eloquent" | - */ + */ 'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => App\User::class, + 'model' => App\Models\User::class, ], // 'users' => [ @@ -89,13 +89,13 @@ | considered valid. This security feature keeps tokens short-lived so | they have less time to be guessed. You may change this as needed. | - */ + */ 'passwords' => [ 'users' => [ 'provider' => 'users', - 'table' => 'password_resets', - 'expire' => 60, + 'table' => 'password_resets', + 'expire' => 60, ], ], diff --git a/config/document.php b/config/document.php new file mode 100644 index 0000000..507c7ee --- /dev/null +++ b/config/document.php @@ -0,0 +1,6 @@ + env('DOCUMENT_REFERENCE_PREFIX', 'DOCUMENT REFERENCE'), + 'sequence_length' => env('DOCUMENT_SEQUENCE_LENGTH', 6), +]; diff --git a/config/google-calendar.php b/config/google-calendar.php new file mode 100644 index 0000000..9fb1712 --- /dev/null +++ b/config/google-calendar.php @@ -0,0 +1,14 @@ + storage_path('app/google-calendar/service-account-credentials.json'), + + /* + * The id of the Google Calendar that will be used by default. + */ + 'calendar_id' => env('GOOGLE_CALENDAR_ID'), +]; diff --git a/config/hashids.php b/config/hashids.php new file mode 100644 index 0000000..ff229cc --- /dev/null +++ b/config/hashids.php @@ -0,0 +1,7 @@ + env('hashids.salt', env('APP_KEY')), + 'length' => env('hashids.length', 12), + 'alphabet' => env('hashids', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'), +]; diff --git a/config/image.php b/config/image.php new file mode 100644 index 0000000..2b1d2c3 --- /dev/null +++ b/config/image.php @@ -0,0 +1,20 @@ + 'gd' + +]; diff --git a/config/medialibrary.php b/config/medialibrary.php new file mode 100644 index 0000000..54c0802 --- /dev/null +++ b/config/medialibrary.php @@ -0,0 +1,116 @@ + '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, + + /* + * This queue will be used to generate derived images. + * Leave empty to use the default queue. + */ + 'queue_name' => '', + + /* + * The class name of the media model that should be used. + */ + 'media_model' => Spatie\MediaLibrary\Media::class, + + /* + * The engine that should perform the image conversions. + * Should be either `gd` or `imagick`. + */ + 'image_driver' => 'gd', + + /* + * When urls to files get generated, this class will be called. Leave empty + * if your files are stored locally above the site root or on s3. + */ + 'custom_url_generator_class' => null, + + /* + * The class that contains the strategy for determining a media file's path. + */ + 'custom_path_generator_class' => null, + + 's3' => [ + /* + * The domain that should be prepended when generating urls. + */ + 'domain' => 'https://xxxxxxx.s3.amazonaws.com', + ], + + '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', + ], + ], + + /* + * These generators will be used to create an image of media files. + */ + 'image_generators' => [ + Spatie\MediaLibrary\ImageGenerators\FileTypes\Image::class, + Spatie\MediaLibrary\ImageGenerators\FileTypes\Pdf::class, + Spatie\MediaLibrary\ImageGenerators\FileTypes\Svg::class, + Spatie\MediaLibrary\ImageGenerators\FileTypes\Video::class, + ], + + /* + * Medialibrary 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 => [ + '--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 + ], + ], + + /* + * The path where to store temporary files while performing image conversions. + * If set to null, storage_path('medialibrary/temp') will be used. + */ + 'temporary_directory_path' => null, + + /* + * FFMPEG & FFProbe binaries path, only used if you try to generate video + * thumbnails and have installed the php-ffmpeg/php-ffmpeg composer + * dependency. + */ + 'ffmpeg_binaries' => '/usr/bin/ffmpeg', + 'ffprobe_binaries' => '/usr/bin/ffprobe', +]; diff --git a/config/newsletter.php b/config/newsletter.php new file mode 100644 index 0000000..76ab29b --- /dev/null +++ b/config/newsletter.php @@ -0,0 +1,44 @@ + env('MAILCHIMP_APIKEY'), + + /* + * When not specifying a listname in the various methods, use the list with this name + */ + 'defaultListName' => 'subscribers', + + /* + * Here you can define properties of the lists you want to + * send campaigns. + */ + 'lists' => [ + + /* + * This key is used to identify this list. It can be used + * in the various methods provided by this package. + * + * You can set it to any string you want and you can add + * as many lists as you want. + */ + 'subscribers' => [ + + /* + * A mail chimp list id. Check the mailchimp docs if you don't know + * how to get this value: + * http://kb.mailchimp.com/lists/managing-subscribers/find-your-list-id + */ + 'id' => env('MAILCHIMP_LIST_ID'), + ], + ], + + /* + * If you're having trouble with https connections, set this to false. + */ + 'ssl' => true, +]; diff --git a/config/permission.php b/config/permission.php new file mode 100644 index 0000000..07e2be7 --- /dev/null +++ b/config/permission.php @@ -0,0 +1,80 @@ + [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your permissions. Of course, it + * is often just the "Permission" model but you may use whatever you like. + * + * The model you want to use as a Permission model needs to implement the + * `Spatie\Permission\Contracts\Permission` contract. + */ + + 'permission' => Spatie\Permission\Models\Permission::class, + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your roles. Of course, it + * is often just the "Role" model but you may use whatever you like. + * + * The model you want to use as a Role model needs to implement the + * `Spatie\Permission\Contracts\Role` contract. + */ + + 'role' => Spatie\Permission\Models\Role::class, + + ], + + 'table_names' => [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'roles' => 'roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your permissions. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'permissions' => 'permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_permissions' => 'model_has_permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models roles. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_roles' => 'model_has_roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'role_has_permissions' => 'role_has_permissions', + ], + + /* + * By default all permissions will be cached for 24 hours unless a permission or + * role is updated. Then the cache will be flushed immediately. + */ + + 'cache_expiration_time' => 60 * 24, +]; diff --git a/config/referer.php b/config/referer.php new file mode 100644 index 0000000..39d8492 --- /dev/null +++ b/config/referer.php @@ -0,0 +1,17 @@ + 'referer', + + /* + * The sources used to determine the referer. + */ + 'sources' => [ + Spatie\Referer\Sources\UtmSource::class, + Spatie\Referer\Sources\RequestHeader::class, + ], +]; diff --git a/config/responsecache.php b/config/responsecache.php new file mode 100644 index 0000000..ee553e8 --- /dev/null +++ b/config/responsecache.php @@ -0,0 +1,46 @@ + env('RESPONSE_CACHE_ENABLED', true), + + /* + * The given class will determinate if a request should be cached. The + * default class will cache all successful GET-requests. + * + * You can provide your own class given that it implements the + * CacheProfile interface. + */ + 'cache_profile' => Spatie\ResponseCache\CacheProfiles\CacheAllSuccessfulGetRequests::class, + + /* + * When using the default CacheRequestFilter this setting controls the + * default number of minutes responses must be cached. + */ + 'cache_lifetime_in_minutes' => env('RESPONSE_CACHE_LIFETIME', 60 * 24 * 7), + + /* + * This setting determines if a http header named "Laravel-responsecache" + * with the cache time should be added to a cached response. This + * can be handy when debugging. + */ + 'add_cache_time_header' => env('APP_DEBUG', true), + + /* + * Here you may define the cache store that should be used to store + * requests. This can be the name of any store that is + * configured in app/config/cache.php + */ + 'cache_store' => env('RESPONSE_CACHE_DRIVER', 'file'), + + /* + * If the cache driver you configured supports tags, you may specify a tag name + * here. All responses will be tagged. When clearing the responsecache only + * items with that tag will be flushed. + * + * You may use a string are an array here. + */ + 'cache_tag' => '', +]; diff --git a/config/services.php b/config/services.php index 4460f0e..c059933 100644 --- a/config/services.php +++ b/config/services.php @@ -12,15 +12,15 @@ | default location for this type of information, allowing packages | to have a conventional place to find your various credentials. | - */ + */ - 'mailgun' => [ + 'mailgun' => [ 'domain' => env('MAILGUN_DOMAIN'), 'secret' => env('MAILGUN_SECRET'), ], - 'ses' => [ - 'key' => env('SES_KEY'), + 'ses' => [ + 'key' => env('SES_KEY'), 'secret' => env('SES_SECRET'), 'region' => 'us-east-1', ], @@ -29,9 +29,9 @@ 'secret' => env('SPARKPOST_SECRET'), ], - 'stripe' => [ - 'model' => App\User::class, - 'key' => env('STRIPE_KEY'), + 'stripe' => [ + 'model' => App\Models\User::class, + 'key' => env('STRIPE_KEY'), 'secret' => env('STRIPE_SECRET'), ], diff --git a/config/trustedproxy.php b/config/trustedproxy.php new file mode 100644 index 0000000..fab11a0 --- /dev/null +++ b/config/trustedproxy.php @@ -0,0 +1,71 @@ +getClientIp() + * always gets the originating client IP, no matter + * how many proxies that client's request has + * subsequently passed through. + */ + 'proxies' => [ + '192.168.1.10', + ], + + /* + * Or, to trust all proxies that connect + * directly to your server, uncomment this: + */ + # 'proxies' => '*', + + /* + * Or, to trust ALL proxies, including those that + * are in a chain of forwarding, uncomment this: + */ + # 'proxies' => '**', + + /* + * Default Header Names + * + * Change these if the proxy does + * not send the default header names. + * + * Note that headers such as X-Forwarded-For + * are transformed to HTTP_X_FORWARDED_FOR format. + * + * The following are Symfony defaults, found in + * \Symfony\Component\HttpFoundation\Request::$trustedHeaders + * + * You may optionally set headers to 'null' here if you'd like + * for them to be considered untrusted instead. Ex: + * + * Illuminate\Http\Request::HEADER_CLIENT_HOST => null, + * + * WARNING: If you're using AWS Elastic Load Balancing or Heroku, + * the FORWARDED and X_FORWARDED_HOST headers should be set to null + * as they are currently unsupported there. + */ + 'headers' => [ + (defined('Illuminate\Http\Request::HEADER_FORWARDED') ? Illuminate\Http\Request::HEADER_FORWARDED : 'forwarded') => 'FORWARDED', + Illuminate\Http\Request::HEADER_CLIENT_IP => 'X_FORWARDED_FOR', + Illuminate\Http\Request::HEADER_CLIENT_HOST => 'X_FORWARDED_HOST', + Illuminate\Http\Request::HEADER_CLIENT_PROTO => 'X_FORWARDED_PROTO', + Illuminate\Http\Request::HEADER_CLIENT_PORT => 'X_FORWARDED_PORT', + ] +]; diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 061d75a..7614f75 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -13,7 +13,7 @@ | */ -$factory->define(App\User::class, function (Faker $faker) { +$factory->define(OSI\User::class, function (Faker $faker) { static $password; return [ diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 689cbee..20ab118 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -1,8 +1,8 @@ increments('id'); + $table->hashslug(); + $table->slug(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); - $table->timestamps(); + $table->standardTime(); }); } diff --git a/database/migrations/2017_12_08_161800_create_activity_log_table.php b/database/migrations/2017_12_08_161800_create_activity_log_table.php new file mode 100644 index 0000000..7a182db --- /dev/null +++ b/database/migrations/2017_12_08_161800_create_activity_log_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('log_name')->nullable(); + $table->string('description'); + $table->integer('subject_id')->nullable(); + $table->string('subject_type')->nullable(); + $table->integer('causer_id')->nullable(); + $table->string('causer_type')->nullable(); + $table->text('properties')->nullable(); + $table->timestamps(); + + $table->index('log_name'); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + { + Schema::drop('activity_log'); + } +} diff --git a/database/migrations/2017_12_08_161800_create_media_table.php b/database/migrations/2017_12_08_161800_create_media_table.php new file mode 100644 index 0000000..5b8ef37 --- /dev/null +++ b/database/migrations/2017_12_08_161800_create_media_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->hashslug(); + $table->morphs('model'); + $table->string('collection_name'); + $table->string('name'); + $table->string('file_name'); + $table->string('mime_type')->nullable(); + $table->string('disk'); + $table->unsignedInteger('size'); + $table->json('manipulations'); + $table->json('custom_properties'); + $table->unsignedInteger('order_column')->nullable(); + $table->nullableTimestamps(); + }); + } + /** + * Reverse the migrations. + */ + public function down() + { + Schema::dropIfExists('media'); + } +} diff --git a/database/migrations/2017_12_08_161800_create_permission_tables.php b/database/migrations/2017_12_08_161800_create_permission_tables.php new file mode 100644 index 0000000..6c17206 --- /dev/null +++ b/database/migrations/2017_12_08_161800_create_permission_tables.php @@ -0,0 +1,90 @@ +increments('id'); + $table->string('name'); + $table->string('guard_name'); + $table->timestamps(); + }); + + Schema::create($tableNames['roles'], function (Blueprint $table) { + $table->increments('id'); + $table->string('name'); + $table->string('guard_name'); + $table->timestamps(); + }); + + Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames) { + $table->integer('permission_id')->unsigned(); + $table->morphs('model'); + + $table->foreign('permission_id') + ->references('id') + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->primary(['permission_id', 'model_id', 'model_type']); + }); + + Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames) { + $table->integer('role_id')->unsigned(); + $table->morphs('model'); + + $table->foreign('role_id') + ->references('id') + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary(['role_id', 'model_id', 'model_type']); + }); + + Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) { + $table->integer('permission_id')->unsigned(); + $table->integer('role_id')->unsigned(); + + $table->foreign('permission_id') + ->references('id') + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->foreign('role_id') + ->references('id') + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary(['permission_id', 'role_id']); + + Cache::forget('spatie.permission.cache'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $tableNames = config('permission.table_names'); + + Schema::drop($tableNames['role_has_permissions']); + Schema::drop($tableNames['model_has_roles']); + Schema::drop($tableNames['model_has_permissions']); + Schema::drop($tableNames['roles']); + Schema::drop($tableNames['permissions']); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index e119db6..cc27b8d 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -11,6 +11,6 @@ class DatabaseSeeder extends Seeder */ public function run() { - // $this->call(UsersTableSeeder::class); + $this->call(RolesAndPermissionsSeeder::class); } } diff --git a/database/seeds/RolesAndPermissionsSeeder.php b/database/seeds/RolesAndPermissionsSeeder.php new file mode 100644 index 0000000..c45b0c0 --- /dev/null +++ b/database/seeds/RolesAndPermissionsSeeder.php @@ -0,0 +1,21 @@ +forget('spatie.permission.cache'); + + collect(['administrator', 'user'])->each(function ($role) { + Role::create(['name' => $role]); + }); + } +} diff --git a/package.json b/package.json index 7ceac0e..41b823b 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "jquery": "^3.2", "laravel-mix": "^1.0", "lodash": "^4.17.4", + "sweetalert": "^2.0.8", "vue": "^2.5.7" } } diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot differ diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.svg b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf differ diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff differ diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2 b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2 differ diff --git a/public/js/app.js b/public/js/app.js index 52449a8..f121cda 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1 +1 @@ -!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";function r(t){return"[object Array]"===T.call(t)}function i(t){return"[object ArrayBuffer]"===T.call(t)}function o(t){return"undefined"!=typeof FormData&&t instanceof FormData}function a(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer}function s(t){return"string"==typeof t}function u(t){return"number"==typeof t}function c(t){return void 0===t}function l(t){return null!==t&&"object"==typeof t}function f(t){return"[object Date]"===T.call(t)}function p(t){return"[object File]"===T.call(t)}function d(t){return"[object Blob]"===T.call(t)}function h(t){return"[object Function]"===T.call(t)}function v(t){return l(t)&&h(t.pipe)}function g(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams}function m(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}function y(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function b(t,e){if(null!==t&&void 0!==t)if("object"==typeof t||r(t)||(t=[t]),r(t))for(var n=0,i=t.length;n=200&&t<300}};s.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(t){s.headers[t]={}}),i.forEach(["post","put","patch"],function(t){s.headers[t]=i.merge(a)}),t.exports=s}).call(e,n(19))},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r-1}function h(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function M(t,e){for(var n=t.length;n--&&T(e,t[n],0)>-1;);return n}function q(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function H(t){return"\\"+En[t]}function B(t,e){return null==t?it:t[e]}function U(t){return bn.test(t)}function W(t){return _n.test(t)}function z(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function V(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function X(t,e){return function(n){return t(e(n))}}function K(t,e){for(var n=-1,r=t.length,i=0,o=[];++n>>1,Mt=[["ary",Ct],["bind",gt],["bindKey",mt],["curry",bt],["curryRight",_t],["flip",$t],["partial",wt],["partialRight",xt],["rearg",Tt]],qt="[object Arguments]",Ht="[object Array]",Bt="[object AsyncFunction]",Ut="[object Boolean]",Wt="[object Date]",zt="[object DOMException]",Vt="[object Error]",Xt="[object Function]",Kt="[object GeneratorFunction]",Jt="[object Map]",Qt="[object Number]",Gt="[object Null]",Zt="[object Object]",Yt="[object Proxy]",te="[object RegExp]",ee="[object Set]",ne="[object String]",re="[object Symbol]",ie="[object Undefined]",oe="[object WeakMap]",ae="[object WeakSet]",se="[object ArrayBuffer]",ue="[object DataView]",ce="[object Float32Array]",le="[object Float64Array]",fe="[object Int8Array]",pe="[object Int16Array]",de="[object Int32Array]",he="[object Uint8Array]",ve="[object Uint8ClampedArray]",ge="[object Uint16Array]",me="[object Uint32Array]",ye=/\b__p \+= '';/g,be=/\b(__p \+=) '' \+/g,_e=/(__e\(.*?\)|\b__t\)) \+\n'';/g,we=/&(?:amp|lt|gt|quot|#39);/g,xe=/[&<>"']/g,Ce=RegExp(we.source),Te=RegExp(xe.source),$e=/<%-([\s\S]+?)%>/g,Ae=/<%([\s\S]+?)%>/g,ke=/<%=([\s\S]+?)%>/g,Ee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Se=/^\w*$/,Oe=/^\./,je=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ne=/[\\^$.*+?()[\]{}|]/g,De=RegExp(Ne.source),Ie=/^\s+|\s+$/g,Le=/^\s+/,Re=/\s+$/,Pe=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Fe=/\{\n\/\* \[wrapped with (.+)\] \*/,Me=/,? & /,qe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,He=/\\(\\)?/g,Be=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ue=/\w*$/,We=/^[-+]0x[0-9a-f]+$/i,ze=/^0b[01]+$/i,Ve=/^\[object .+?Constructor\]$/,Xe=/^0o[0-7]+$/i,Ke=/^(?:0|[1-9]\d*)$/,Je=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Qe=/($^)/,Ge=/['\n\r\u2028\u2029\\]/g,Ze="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Ye="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",tn="["+Ye+"]",en="["+Ze+"]",nn="[a-z\\xdf-\\xf6\\xf8-\\xff]",rn="[^\\ud800-\\udfff"+Ye+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",on="\\ud83c[\\udffb-\\udfff]",an="(?:\\ud83c[\\udde6-\\uddff]){2}",sn="[\\ud800-\\udbff][\\udc00-\\udfff]",un="[A-Z\\xc0-\\xd6\\xd8-\\xde]",cn="(?:"+nn+"|"+rn+")",ln="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",fn="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",an,sn].join("|")+")[\\ufe0e\\ufe0f]?"+ln+")*",pn="[\\ufe0e\\ufe0f]?"+ln+fn,dn="(?:"+["[\\u2700-\\u27bf]",an,sn].join("|")+")"+pn,hn="(?:"+["[^\\ud800-\\udfff]"+en+"?",en,an,sn,"[\\ud800-\\udfff]"].join("|")+")",vn=RegExp("['’]","g"),gn=RegExp(en,"g"),mn=RegExp(on+"(?="+on+")|"+hn+pn,"g"),yn=RegExp([un+"?"+nn+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tn,un,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tn,un+cn,"$"].join("|")+")",un+"?"+cn+"+(?:['’](?:d|ll|m|re|s|t|ve))?",un+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)","\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)","\\d+",dn].join("|"),"g"),bn=RegExp("[\\u200d\\ud800-\\udfff"+Ze+"\\ufe0e\\ufe0f]"),_n=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,wn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],xn=-1,Cn={};Cn[ce]=Cn[le]=Cn[fe]=Cn[pe]=Cn[de]=Cn[he]=Cn[ve]=Cn[ge]=Cn[me]=!0,Cn[qt]=Cn[Ht]=Cn[se]=Cn[Ut]=Cn[ue]=Cn[Wt]=Cn[Vt]=Cn[Xt]=Cn[Jt]=Cn[Qt]=Cn[Zt]=Cn[te]=Cn[ee]=Cn[ne]=Cn[oe]=!1;var Tn={};Tn[qt]=Tn[Ht]=Tn[se]=Tn[ue]=Tn[Ut]=Tn[Wt]=Tn[ce]=Tn[le]=Tn[fe]=Tn[pe]=Tn[de]=Tn[Jt]=Tn[Qt]=Tn[Zt]=Tn[te]=Tn[ee]=Tn[ne]=Tn[re]=Tn[he]=Tn[ve]=Tn[ge]=Tn[me]=!0,Tn[Vt]=Tn[Xt]=Tn[oe]=!1;var $n={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},An={"&":"&","<":"<",">":">",'"':""","'":"'"},kn={"&":"&","<":"<",">":">",""":'"',"'":"'"},En={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Sn=parseFloat,On=parseInt,jn="object"==typeof t&&t&&t.Object===Object&&t,Nn="object"==typeof self&&self&&self.Object===Object&&self,Dn=jn||Nn||Function("return this")(),In="object"==typeof e&&e&&!e.nodeType&&e,Ln=In&&"object"==typeof r&&r&&!r.nodeType&&r,Rn=Ln&&Ln.exports===In,Pn=Rn&&jn.process,Fn=function(){try{return Pn&&Pn.binding&&Pn.binding("util")}catch(t){}}(),Mn=Fn&&Fn.isArrayBuffer,qn=Fn&&Fn.isDate,Hn=Fn&&Fn.isMap,Bn=Fn&&Fn.isRegExp,Un=Fn&&Fn.isSet,Wn=Fn&&Fn.isTypedArray,zn=E("length"),Vn=S($n),Xn=S(An),Kn=S(kn),Jn=function t(e){function n(t){if(ou(t)&&!mp(t)&&!(t instanceof _)){if(t instanceof i)return t;if(gl.call(t,"__wrapped__"))return na(t)}return new i(t)}function r(){}function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=it}function _(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Rt,this.__views__=[]}function S(){var t=new _(this.__wrapped__);return t.__actions__=Pi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Pi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Pi(this.__views__),t}function G(){if(this.__filtered__){var t=new _(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function et(){var t=this.__wrapped__.value(),e=this.__dir__,n=mp(t),r=e<0,i=n?t.length:0,o=ko(0,i,this.__views__),a=o.start,s=o.end,u=s-a,c=r?s:a-1,l=this.__iteratees__,f=l.length,p=0,d=Vl(u,this.__takeCount__);if(!n||!r&&i==u&&d==u)return yi(t,this.__actions__);var h=[];t:for(;u--&&p-1}function un(t,e){var n=this.__data__,r=Qn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function cn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function rr(t,e,n,r,i,o){var a,s=e&ft,u=e&pt,l=e&dt;if(n&&(a=i?n(t,r,i,o):n(t)),a!==it)return a;if(!iu(t))return t;var f=mp(t);if(f){if(a=Oo(t),!s)return Pi(t,a)}else{var p=kf(t),d=p==Xt||p==Kt;if(bp(t))return $i(t,s);if(p==Zt||p==qt||d&&!i){if(a=u||d?{}:jo(t),!s)return u?qi(t,Yn(a,t)):Mi(t,Zn(a,t))}else{if(!Tn[p])return i?t:{};a=No(t,p,rr,s)}}o||(o=new _n);var h=o.get(t);if(h)return h;o.set(t,a);var v=l?u?bo:yo:u?Hu:qu,g=f?it:v(t);return c(g||t,function(r,i){g&&(i=r,r=t[i]),zn(a,i,rr(r,e,n,i,t,o))}),a}function ir(t){var e=qu(t);return function(n){return or(n,t,e)}}function or(t,e,n){var r=n.length;if(null==t)return!r;for(t=sl(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===it&&!(i in t)||!o(a))return!1}return!0}function ar(t,e,n){if("function"!=typeof t)throw new ll(st);return Of(function(){t.apply(it,n)},e)}function sr(t,e,n,r){var i=-1,o=d,a=!0,s=t.length,u=[],c=e.length;if(!s)return u;n&&(e=v(e,L(n))),r?(o=h,a=!1):e.length>=ot&&(o=P,a=!1,e=new mn(e));t:for(;++ii?0:i+n),r=r===it||r>i?i:xu(r),r<0&&(r+=i),r=n>r?0:Cu(r);n0&&n(s)?e>1?pr(s,e-1,n,r,i):g(i,s):r||(i[i.length]=s)}return i}function dr(t,e){return t&&mf(t,e,qu)}function hr(t,e){return t&&yf(t,e,qu)}function vr(t,e){return p(e,function(e){return eu(t[e])})}function gr(t,e){e=Ci(e,t);for(var n=0,r=e.length;null!=t&&ne}function _r(t,e){return null!=t&&gl.call(t,e)}function wr(t,e){return null!=t&&e in sl(t)}function xr(t,e,n){return t>=Vl(e,n)&&t=120&&l.length>=120)?new mn(a&&l):it}l=t[0];var f=-1,p=s[0];t:for(;++f-1;)s!==t&&Ol.call(s,u,1),Ol.call(t,u,1);return t}function Zr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Lo(i)?Ol.call(t,i,1):vi(t,i)}}return t}function Yr(t,e){return t+Ml(Jl()*(e-t+1))}function ti(t,e,n,r){for(var i=-1,o=zl(Fl((e-t)/(n||1)),0),a=nl(o);o--;)a[r?o:++i]=t,t+=n;return a}function ei(t,e){var n="";if(!t||e<1||e>Dt)return n;do{e%2&&(n+=t),(e=Ml(e/2))&&(t+=t)}while(e);return n}function ni(t,e){return jf(Xo(t,e,Oc),t+"")}function ri(t){return In(Yu(t))}function ii(t,e){var n=Yu(t);return Zo(n,nr(e,0,n.length))}function oi(t,e,n,r){if(!iu(t))return t;e=Ci(e,t);for(var i=-1,o=e.length,a=o-1,s=t;null!=s&&++ii?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=nl(i);++r>>1,a=t[o];null!==a&&!gu(a)&&(n?a<=e:a=ot){var c=e?null:Cf(t);if(c)return J(c);a=!1,i=P,u=new mn}else u=e?[]:s;t:for(;++r=r?t:si(t,e,n)}function $i(t,e){if(e)return t.slice();var n=t.length,r=Al?Al(n):new t.constructor(n);return t.copy(r),r}function Ai(t){var e=new t.constructor(t.byteLength);return new $l(e).set(new $l(t)),e}function ki(t,e){var n=e?Ai(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function Ei(t,e,n){return m(e?n(V(t),ft):V(t),o,new t.constructor)}function Si(t){var e=new t.constructor(t.source,Ue.exec(t));return e.lastIndex=t.lastIndex,e}function Oi(t,e,n){return m(e?n(J(t),ft):J(t),a,new t.constructor)}function ji(t){return pf?sl(pf.call(t)):{}}function Ni(t,e){var n=e?Ai(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Di(t,e){if(t!==e){var n=t!==it,r=null===t,i=t===t,o=gu(t),a=e!==it,s=null===e,u=e===e,c=gu(e);if(!s&&!c&&!o&&t>e||o&&a&&u&&!s&&!c||r&&a&&u||!n&&u||!i)return 1;if(!r&&!o&&!c&&t=s)return u;return u*("desc"==n[r]?-1:1)}}return t.index-e.index}function Li(t,e,n,r){for(var i=-1,o=t.length,a=n.length,s=-1,u=e.length,c=zl(o-a,0),l=nl(u+c),f=!r;++s1?n[i-1]:it,a=i>2?n[2]:it;for(o=t.length>3&&"function"==typeof o?(i--,o):it,a&&Ro(n[0],n[1],a)&&(o=i<3?it:o,i=1),e=sl(e);++r-1?i[o?e[a]:a]:it}}function Gi(t){return mo(function(e){var n=e.length,r=n,o=i.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new ll(st);if(o&&!s&&"wrapper"==_o(a))var s=new i([],!0)}for(r=s?r:n;++r1&&y.reverse(),f&&us))return!1;var c=o.get(t);if(c&&o.get(e))return c==e;var l=-1,f=!0,p=n&vt?new mn:it;for(o.set(t,e),o.set(e,t);++l1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Pe,"{\n/* [wrapped with "+e+"] */\n")}function Io(t){return mp(t)||gp(t)||!!(jl&&t&&t[jl])}function Lo(t,e){return!!(e=null==e?Dt:e)&&("number"==typeof t||Ke.test(t))&&t>-1&&t%1==0&&t0){if(++e>=Et)return arguments[0]}else e=0;return t.apply(it,arguments)}}function Zo(t,e){var n=-1,r=t.length,i=r-1;for(e=e===it?r:e;++n=this.__values__.length;return{done:t,value:t?it:this.__values__[this.__index__++]}}function ns(){return this}function rs(t){for(var e,n=this;n instanceof r;){var i=na(n);i.__index__=0,i.__values__=it,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e}function is(){var t=this.__wrapped__;if(t instanceof _){var e=t;return this.__actions__.length&&(e=new _(this)),e=e.reverse(),e.__actions__.push({func:Za,args:[Ea],thisArg:it}),new i(e,this.__chain__)}return this.thru(Ea)}function os(){return yi(this.__wrapped__,this.__actions__)}function as(t,e,n){var r=mp(t)?f:ur;return n&&Ro(t,e,n)&&(e=it),r(t,xo(e,3))}function ss(t,e){return(mp(t)?p:fr)(t,xo(e,3))}function us(t,e){return pr(hs(t,e),1)}function cs(t,e){return pr(hs(t,e),Nt)}function ls(t,e,n){return n=n===it?1:xu(n),pr(hs(t,e),n)}function fs(t,e){return(mp(t)?c:vf)(t,xo(e,3))}function ps(t,e){return(mp(t)?l:gf)(t,xo(e,3))}function ds(t,e,n,r){t=Vs(t)?t:Yu(t),n=n&&!r?xu(n):0;var i=t.length;return n<0&&(n=zl(i+n,0)),vu(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&T(t,e,n)>-1}function hs(t,e){return(mp(t)?v:Hr)(t,xo(e,3))}function vs(t,e,n,r){return null==t?[]:(mp(e)||(e=null==e?[]:[e]),n=r?it:n,mp(n)||(n=null==n?[]:[n]),Xr(t,e,n))}function gs(t,e,n){var r=mp(t)?m:O,i=arguments.length<3;return r(t,xo(e,4),n,i,vf)}function ms(t,e,n){var r=mp(t)?y:O,i=arguments.length<3;return r(t,xo(e,4),n,i,gf)}function ys(t,e){return(mp(t)?p:fr)(t,Ns(xo(e,3)))}function bs(t){return(mp(t)?In:ri)(t)}function _s(t,e,n){return e=(n?Ro(t,e,n):e===it)?1:xu(e),(mp(t)?Ln:ii)(t,e)}function ws(t){return(mp(t)?Pn:ai)(t)}function xs(t){if(null==t)return 0;if(Vs(t))return vu(t)?Y(t):t.length;var e=kf(t);return e==Jt||e==ee?t.size:Fr(t).length}function Cs(t,e,n){var r=mp(t)?b:ui;return n&&Ro(t,e,n)&&(e=it),r(t,xo(e,3))}function Ts(t,e){if("function"!=typeof e)throw new ll(st);return t=xu(t),function(){if(--t<1)return e.apply(this,arguments)}}function $s(t,e,n){return e=n?it:e,e=t&&null==e?t.length:e,co(t,Ct,it,it,it,it,e)}function As(t,e){var n;if("function"!=typeof e)throw new ll(st);return t=xu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=it),n}}function ks(t,e,n){e=n?it:e;var r=co(t,bt,it,it,it,it,it,e);return r.placeholder=ks.placeholder,r}function Es(t,e,n){e=n?it:e;var r=co(t,_t,it,it,it,it,it,e);return r.placeholder=Es.placeholder,r}function Ss(t,e,n){function r(e){var n=p,r=d;return p=d=it,y=e,v=t.apply(r,n)}function i(t){return y=t,g=Of(s,e),b?r(t):v}function o(t){var n=t-m,r=t-y,i=e-n;return _?Vl(i,h-r):i}function a(t){var n=t-m,r=t-y;return m===it||n>=e||n<0||_&&r>=h}function s(){var t=op();if(a(t))return u(t);g=Of(s,o(t))}function u(t){return g=it,w&&p?r(t):(p=d=it,v)}function c(){g!==it&&xf(g),y=0,p=m=d=g=it}function l(){return g===it?v:u(op())}function f(){var t=op(),n=a(t);if(p=arguments,d=this,m=t,n){if(g===it)return i(m);if(_)return g=Of(s,e),r(m)}return g===it&&(g=Of(s,e)),v}var p,d,h,v,g,m,y=0,b=!1,_=!1,w=!0;if("function"!=typeof t)throw new ll(st);return e=Tu(e)||0,iu(n)&&(b=!!n.leading,_="maxWait"in n,h=_?zl(Tu(n.maxWait)||0,e):h,w="trailing"in n?!!n.trailing:w),f.cancel=c,f.flush=l,f}function Os(t){return co(t,$t)}function js(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new ll(st);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(js.Cache||cn),n}function Ns(t){if("function"!=typeof t)throw new ll(st);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Ds(t){return As(2,t)}function Is(t,e){if("function"!=typeof t)throw new ll(st);return e=e===it?e:xu(e),ni(t,e)}function Ls(t,e){if("function"!=typeof t)throw new ll(st);return e=null==e?0:zl(xu(e),0),ni(function(n){var r=n[e],i=Ti(n,0,e);return r&&g(i,r),s(t,this,i)})}function Rs(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new ll(st);return iu(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Ss(t,e,{leading:r,maxWait:e,trailing:i})}function Ps(t){return $s(t,1)}function Fs(t,e){return fp(xi(e),t)}function Ms(){if(!arguments.length)return[];var t=arguments[0];return mp(t)?t:[t]}function qs(t){return rr(t,dt)}function Hs(t,e){return e="function"==typeof e?e:it,rr(t,dt,e)}function Bs(t){return rr(t,ft|dt)}function Us(t,e){return e="function"==typeof e?e:it,rr(t,ft|dt,e)}function Ws(t,e){return null==e||or(t,e,qu(e))}function zs(t,e){return t===e||t!==t&&e!==e}function Vs(t){return null!=t&&ru(t.length)&&!eu(t)}function Xs(t){return ou(t)&&Vs(t)}function Ks(t){return!0===t||!1===t||ou(t)&&yr(t)==Ut}function Js(t){return ou(t)&&1===t.nodeType&&!du(t)}function Qs(t){if(null==t)return!0;if(Vs(t)&&(mp(t)||"string"==typeof t||"function"==typeof t.splice||bp(t)||Tp(t)||gp(t)))return!t.length;var e=kf(t);if(e==Jt||e==ee)return!t.size;if(Ho(t))return!Fr(t).length;for(var n in t)if(gl.call(t,n))return!1;return!0}function Gs(t,e){return Sr(t,e)}function Zs(t,e,n){n="function"==typeof n?n:it;var r=n?n(t,e):it;return r===it?Sr(t,e,it,n):!!r}function Ys(t){if(!ou(t))return!1;var e=yr(t);return e==Vt||e==zt||"string"==typeof t.message&&"string"==typeof t.name&&!du(t)}function tu(t){return"number"==typeof t&&Bl(t)}function eu(t){if(!iu(t))return!1;var e=yr(t);return e==Xt||e==Kt||e==Bt||e==Yt}function nu(t){return"number"==typeof t&&t==xu(t)}function ru(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Dt}function iu(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ou(t){return null!=t&&"object"==typeof t}function au(t,e){return t===e||Nr(t,e,To(e))}function su(t,e,n){return n="function"==typeof n?n:it,Nr(t,e,To(e),n)}function uu(t){return pu(t)&&t!=+t}function cu(t){if(Ef(t))throw new il(at);return Dr(t)}function lu(t){return null===t}function fu(t){return null==t}function pu(t){return"number"==typeof t||ou(t)&&yr(t)==Qt}function du(t){if(!ou(t)||yr(t)!=Zt)return!1;var e=kl(t);if(null===e)return!0;var n=gl.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&vl.call(n)==_l}function hu(t){return nu(t)&&t>=-Dt&&t<=Dt}function vu(t){return"string"==typeof t||!mp(t)&&ou(t)&&yr(t)==ne}function gu(t){return"symbol"==typeof t||ou(t)&&yr(t)==re}function mu(t){return t===it}function yu(t){return ou(t)&&kf(t)==oe}function bu(t){return ou(t)&&yr(t)==ae}function _u(t){if(!t)return[];if(Vs(t))return vu(t)?tt(t):Pi(t);if(Nl&&t[Nl])return z(t[Nl]());var e=kf(t);return(e==Jt?V:e==ee?J:Yu)(t)}function wu(t){if(!t)return 0===t?t:0;if((t=Tu(t))===Nt||t===-Nt){return(t<0?-1:1)*It}return t===t?t:0}function xu(t){var e=wu(t),n=e%1;return e===e?n?e-n:e:0}function Cu(t){return t?nr(xu(t),0,Rt):0}function Tu(t){if("number"==typeof t)return t;if(gu(t))return Lt;if(iu(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=iu(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Ie,"");var n=ze.test(t);return n||Xe.test(t)?On(t.slice(2),n?2:8):We.test(t)?Lt:+t}function $u(t){return Fi(t,Hu(t))}function Au(t){return t?nr(xu(t),-Dt,Dt):0===t?t:0}function ku(t){return null==t?"":di(t)}function Eu(t,e){var n=hf(t);return null==e?n:Zn(n,e)}function Su(t,e){return x(t,xo(e,3),dr)}function Ou(t,e){return x(t,xo(e,3),hr)}function ju(t,e){return null==t?t:mf(t,xo(e,3),Hu)}function Nu(t,e){return null==t?t:yf(t,xo(e,3),Hu)}function Du(t,e){return t&&dr(t,xo(e,3))}function Iu(t,e){return t&&hr(t,xo(e,3))}function Lu(t){return null==t?[]:vr(t,qu(t))}function Ru(t){return null==t?[]:vr(t,Hu(t))}function Pu(t,e,n){var r=null==t?it:gr(t,e);return r===it?n:r}function Fu(t,e){return null!=t&&So(t,e,_r)}function Mu(t,e){return null!=t&&So(t,e,wr)}function qu(t){return Vs(t)?Nn(t):Fr(t)}function Hu(t){return Vs(t)?Nn(t,!0):Mr(t)}function Bu(t,e){var n={};return e=xo(e,3),dr(t,function(t,r,i){tr(n,e(t,r,i),t)}),n}function Uu(t,e){var n={};return e=xo(e,3),dr(t,function(t,r,i){tr(n,r,e(t,r,i))}),n}function Wu(t,e){return zu(t,Ns(xo(e)))}function zu(t,e){if(null==t)return{};var n=v(bo(t),function(t){return[t]});return e=xo(e),Jr(t,n,function(t,n){return e(t,n[0])})}function Vu(t,e,n){e=Ci(e,t);var r=-1,i=e.length;for(i||(i=1,t=it);++re){var r=t;t=e,e=r}if(n||t%1||e%1){var i=Jl();return Vl(t+i*(e-t+Sn("1e-"+((i+"").length-1))),e)}return Yr(t,e)}function ic(t){return Qp(ku(t).toLowerCase())}function oc(t){return(t=ku(t))&&t.replace(Je,Vn).replace(gn,"")}function ac(t,e,n){t=ku(t),e=di(e);var r=t.length;n=n===it?r:nr(xu(n),0,r);var i=n;return(n-=e.length)>=0&&t.slice(n,i)==e}function sc(t){return t=ku(t),t&&Te.test(t)?t.replace(xe,Xn):t}function uc(t){return t=ku(t),t&&De.test(t)?t.replace(Ne,"\\$&"):t}function cc(t,e,n){t=ku(t),e=xu(e);var r=e?Y(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return no(Ml(i),n)+t+no(Fl(i),n)}function lc(t,e,n){t=ku(t),e=xu(e);var r=e?Y(t):0;return e&&r>>0)?(t=ku(t),t&&("string"==typeof e||null!=e&&!xp(e))&&!(e=di(e))&&U(t)?Ti(tt(t),0,n):t.split(e,n)):[]}function gc(t,e,n){return t=ku(t),n=null==n?0:nr(xu(n),0,t.length),e=di(e),t.slice(n,n+e.length)==e}function mc(t,e,r){var i=n.templateSettings;r&&Ro(t,e,r)&&(e=it),t=ku(t),e=Sp({},e,i,lo);var o,a,s=Sp({},e.imports,i.imports,lo),u=qu(s),c=R(s,u),l=0,f=e.interpolate||Qe,p="__p += '",d=ul((e.escape||Qe).source+"|"+f.source+"|"+(f===ke?Be:Qe).source+"|"+(e.evaluate||Qe).source+"|$","g"),h="//# sourceURL="+("sourceURL"in e?e.sourceURL:"lodash.templateSources["+ ++xn+"]")+"\n";t.replace(d,function(e,n,r,i,s,u){return r||(r=i),p+=t.slice(l,u).replace(Ge,H),n&&(o=!0,p+="' +\n__e("+n+") +\n'"),s&&(a=!0,p+="';\n"+s+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=u+e.length,e}),p+="';\n";var v=e.variable;v||(p="with (obj) {\n"+p+"\n}\n"),p=(a?p.replace(ye,""):p).replace(be,"$1").replace(_e,"$1;"),p="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var g=Gp(function(){return ol(u,h+"return "+p).apply(it,c)});if(g.source=p,Ys(g))throw g;return g}function yc(t){return ku(t).toLowerCase()}function bc(t){return ku(t).toUpperCase()}function _c(t,e,n){if((t=ku(t))&&(n||e===it))return t.replace(Ie,"");if(!t||!(e=di(e)))return t;var r=tt(t),i=tt(e);return Ti(r,F(r,i),M(r,i)+1).join("")}function wc(t,e,n){if((t=ku(t))&&(n||e===it))return t.replace(Re,"");if(!t||!(e=di(e)))return t;var r=tt(t);return Ti(r,0,M(r,tt(e))+1).join("")}function xc(t,e,n){if((t=ku(t))&&(n||e===it))return t.replace(Le,"");if(!t||!(e=di(e)))return t;var r=tt(t);return Ti(r,F(r,tt(e))).join("")}function Cc(t,e){var n=At,r=kt;if(iu(e)){var i="separator"in e?e.separator:i;n="length"in e?xu(e.length):n,r="omission"in e?di(e.omission):r}t=ku(t);var o=t.length;if(U(t)){var a=tt(t);o=a.length}if(n>=o)return t;var s=n-Y(r);if(s<1)return r;var u=a?Ti(a,0,s).join(""):t.slice(0,s);if(i===it)return u+r;if(a&&(s+=u.length-s),xp(i)){if(t.slice(s).search(i)){var c,l=u;for(i.global||(i=ul(i.source,ku(Ue.exec(i))+"g")),i.lastIndex=0;c=i.exec(l);)var f=c.index;u=u.slice(0,f===it?s:f)}}else if(t.indexOf(di(i),s)!=s){var p=u.lastIndexOf(i);p>-1&&(u=u.slice(0,p))}return u+r}function Tc(t){return t=ku(t),t&&Ce.test(t)?t.replace(we,Kn):t}function $c(t,e,n){return t=ku(t),e=n?it:e,e===it?W(t)?rt(t):w(t):t.match(e)||[]}function Ac(t){var e=null==t?0:t.length,n=xo();return t=e?v(t,function(t){if("function"!=typeof t[1])throw new ll(st);return[n(t[0]),t[1]]}):[],ni(function(n){for(var r=-1;++rDt)return[];var n=Rt,r=Vl(t,Rt);e=xo(e),t-=Rt;for(var i=D(r,e);++n1?t[e-1]:it;return n="function"==typeof n?(t.pop(),n):it,Xa(t,n)}),Qf=mo(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return er(e,t)};return!(e>1||this.__actions__.length)&&r instanceof _&&Lo(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:Za,args:[o],thisArg:it}),new i(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(it),t})):this.thru(o)}),Gf=Hi(function(t,e,n){gl.call(t,n)?++t[n]:tr(t,n,1)}),Zf=Qi(fa),Yf=Qi(pa),tp=Hi(function(t,e,n){gl.call(t,n)?t[n].push(e):tr(t,n,[e])}),ep=ni(function(t,e,n){var r=-1,i="function"==typeof e,o=Vs(t)?nl(t.length):[];return vf(t,function(t){o[++r]=i?s(e,t,n):$r(t,e,n)}),o}),np=Hi(function(t,e,n){tr(t,n,e)}),rp=Hi(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),ip=ni(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Ro(t,e[0],e[1])?e=[]:n>2&&Ro(e[0],e[1],e[2])&&(e=[e[0]]),Xr(t,pr(e,1),[])}),op=Rl||function(){return Dn.Date.now()},ap=ni(function(t,e,n){var r=gt;if(n.length){var i=K(n,wo(ap));r|=wt}return co(t,r,e,n,i)}),sp=ni(function(t,e,n){var r=gt|mt;if(n.length){var i=K(n,wo(sp));r|=wt}return co(e,r,t,n,i)}),up=ni(function(t,e){return ar(t,1,e)}),cp=ni(function(t,e,n){return ar(t,Tu(e)||0,n)});js.Cache=cn;var lp=wf(function(t,e){e=1==e.length&&mp(e[0])?v(e[0],L(xo())):v(pr(e,1),L(xo()));var n=e.length;return ni(function(r){for(var i=-1,o=Vl(r.length,n);++i=e}),gp=Ar(function(){return arguments}())?Ar:function(t){return ou(t)&&gl.call(t,"callee")&&!Sl.call(t,"callee")},mp=nl.isArray,yp=Mn?L(Mn):kr,bp=Hl||Hc,_p=qn?L(qn):Er,wp=Hn?L(Hn):jr,xp=Bn?L(Bn):Ir,Cp=Un?L(Un):Lr,Tp=Wn?L(Wn):Rr,$p=oo(qr),Ap=oo(function(t,e){return t<=e}),kp=Bi(function(t,e){if(Ho(e)||Vs(e))return void Fi(e,qu(e),t);for(var n in e)gl.call(e,n)&&zn(t,n,e[n])}),Ep=Bi(function(t,e){Fi(e,Hu(e),t)}),Sp=Bi(function(t,e,n,r){Fi(e,Hu(e),t,r)}),Op=Bi(function(t,e,n,r){Fi(e,qu(e),t,r)}),jp=mo(er),Np=ni(function(t){return t.push(it,lo),s(Sp,it,t)}),Dp=ni(function(t){return t.push(it,fo),s(Fp,it,t)}),Ip=Yi(function(t,e,n){t[e]=n},Ec(Oc)),Lp=Yi(function(t,e,n){gl.call(t,e)?t[e].push(n):t[e]=[n]},xo),Rp=ni($r),Pp=Bi(function(t,e,n){Wr(t,e,n)}),Fp=Bi(function(t,e,n,r){Wr(t,e,n,r)}),Mp=mo(function(t,e){var n={};if(null==t)return n;var r=!1;e=v(e,function(e){return e=Ci(e,t),r||(r=e.length>1),e}),Fi(t,bo(t),n),r&&(n=rr(n,ft|pt|dt,po));for(var i=e.length;i--;)vi(n,e[i]);return n}),qp=mo(function(t,e){return null==t?{}:Kr(t,e)}),Hp=uo(qu),Bp=uo(Hu),Up=Xi(function(t,e,n){return e=e.toLowerCase(),t+(n?ic(e):e)}),Wp=Xi(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),zp=Xi(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),Vp=Vi("toLowerCase"),Xp=Xi(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),Kp=Xi(function(t,e,n){return t+(n?" ":"")+Qp(e)}),Jp=Xi(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Qp=Vi("toUpperCase"),Gp=ni(function(t,e){try{return s(t,it,e)}catch(t){return Ys(t)?t:new il(t)}}),Zp=mo(function(t,e){return c(e,function(e){e=Yo(e),tr(t,e,ap(t[e],t))}),t}),Yp=Gi(),td=Gi(!0),ed=ni(function(t,e){return function(n){return $r(n,t,e)}}),nd=ni(function(t,e){return function(n){return $r(t,n,e)}}),rd=eo(v),id=eo(f),od=eo(b),ad=io(),sd=io(!0),ud=to(function(t,e){return t+e},0),cd=so("ceil"),ld=to(function(t,e){return t/e},1),fd=so("floor"),pd=to(function(t,e){return t*e},1),dd=so("round"),hd=to(function(t,e){return t-e},0);return n.after=Ts,n.ary=$s,n.assign=kp,n.assignIn=Ep,n.assignInWith=Sp,n.assignWith=Op,n.at=jp,n.before=As,n.bind=ap,n.bindAll=Zp,n.bindKey=sp,n.castArray=Ms,n.chain=Qa,n.chunk=ra,n.compact=ia,n.concat=oa,n.cond=Ac,n.conforms=kc,n.constant=Ec,n.countBy=Gf,n.create=Eu,n.curry=ks,n.curryRight=Es,n.debounce=Ss,n.defaults=Np,n.defaultsDeep=Dp,n.defer=up,n.delay=cp,n.difference=Df,n.differenceBy=If,n.differenceWith=Lf,n.drop=aa,n.dropRight=sa,n.dropRightWhile=ua,n.dropWhile=ca,n.fill=la,n.filter=ss,n.flatMap=us,n.flatMapDeep=cs,n.flatMapDepth=ls,n.flatten=da,n.flattenDeep=ha,n.flattenDepth=va,n.flip=Os,n.flow=Yp,n.flowRight=td,n.fromPairs=ga,n.functions=Lu,n.functionsIn=Ru,n.groupBy=tp,n.initial=ba,n.intersection=Rf,n.intersectionBy=Pf,n.intersectionWith=Ff,n.invert=Ip,n.invertBy=Lp,n.invokeMap=ep,n.iteratee=jc,n.keyBy=np,n.keys=qu,n.keysIn=Hu,n.map=hs,n.mapKeys=Bu,n.mapValues=Uu,n.matches=Nc,n.matchesProperty=Dc,n.memoize=js,n.merge=Pp,n.mergeWith=Fp,n.method=ed,n.methodOf=nd,n.mixin=Ic,n.negate=Ns,n.nthArg=Pc,n.omit=Mp,n.omitBy=Wu,n.once=Ds,n.orderBy=vs,n.over=rd,n.overArgs=lp,n.overEvery=id,n.overSome=od,n.partial=fp,n.partialRight=pp,n.partition=rp,n.pick=qp,n.pickBy=zu,n.property=Fc,n.propertyOf=Mc,n.pull=Mf,n.pullAll=Ta,n.pullAllBy=$a,n.pullAllWith=Aa,n.pullAt=qf,n.range=ad,n.rangeRight=sd,n.rearg=dp,n.reject=ys,n.remove=ka,n.rest=Is,n.reverse=Ea,n.sampleSize=_s,n.set=Xu,n.setWith=Ku,n.shuffle=ws,n.slice=Sa,n.sortBy=ip,n.sortedUniq=Ra,n.sortedUniqBy=Pa,n.split=vc,n.spread=Ls,n.tail=Fa,n.take=Ma,n.takeRight=qa,n.takeRightWhile=Ha,n.takeWhile=Ba,n.tap=Ga,n.throttle=Rs,n.thru=Za,n.toArray=_u,n.toPairs=Hp,n.toPairsIn=Bp,n.toPath=Vc,n.toPlainObject=$u,n.transform=Ju,n.unary=Ps,n.union=Hf,n.unionBy=Bf,n.unionWith=Uf,n.uniq=Ua,n.uniqBy=Wa,n.uniqWith=za,n.unset=Qu,n.unzip=Va,n.unzipWith=Xa,n.update=Gu,n.updateWith=Zu,n.values=Yu,n.valuesIn=tc,n.without=Wf,n.words=$c,n.wrap=Fs,n.xor=zf,n.xorBy=Vf,n.xorWith=Xf,n.zip=Kf,n.zipObject=Ka,n.zipObjectDeep=Ja,n.zipWith=Jf,n.entries=Hp,n.entriesIn=Bp,n.extend=Ep,n.extendWith=Sp,Ic(n,n),n.add=ud,n.attempt=Gp,n.camelCase=Up,n.capitalize=ic,n.ceil=cd,n.clamp=ec,n.clone=qs,n.cloneDeep=Bs,n.cloneDeepWith=Us,n.cloneWith=Hs,n.conformsTo=Ws,n.deburr=oc,n.defaultTo=Sc,n.divide=ld,n.endsWith=ac,n.eq=zs,n.escape=sc,n.escapeRegExp=uc,n.every=as,n.find=Zf,n.findIndex=fa,n.findKey=Su,n.findLast=Yf,n.findLastIndex=pa,n.findLastKey=Ou,n.floor=fd,n.forEach=fs,n.forEachRight=ps,n.forIn=ju,n.forInRight=Nu,n.forOwn=Du,n.forOwnRight=Iu,n.get=Pu,n.gt=hp,n.gte=vp,n.has=Fu,n.hasIn=Mu,n.head=ma,n.identity=Oc,n.includes=ds,n.indexOf=ya,n.inRange=nc,n.invoke=Rp,n.isArguments=gp,n.isArray=mp,n.isArrayBuffer=yp,n.isArrayLike=Vs,n.isArrayLikeObject=Xs,n.isBoolean=Ks,n.isBuffer=bp,n.isDate=_p,n.isElement=Js,n.isEmpty=Qs,n.isEqual=Gs,n.isEqualWith=Zs,n.isError=Ys,n.isFinite=tu,n.isFunction=eu,n.isInteger=nu,n.isLength=ru,n.isMap=wp,n.isMatch=au,n.isMatchWith=su,n.isNaN=uu,n.isNative=cu,n.isNil=fu,n.isNull=lu,n.isNumber=pu,n.isObject=iu,n.isObjectLike=ou,n.isPlainObject=du,n.isRegExp=xp,n.isSafeInteger=hu,n.isSet=Cp,n.isString=vu,n.isSymbol=gu,n.isTypedArray=Tp,n.isUndefined=mu,n.isWeakMap=yu,n.isWeakSet=bu,n.join=_a,n.kebabCase=Wp,n.last=wa,n.lastIndexOf=xa,n.lowerCase=zp,n.lowerFirst=Vp,n.lt=$p,n.lte=Ap,n.max=Kc,n.maxBy=Jc,n.mean=Qc,n.meanBy=Gc,n.min=Zc,n.minBy=Yc,n.stubArray=qc,n.stubFalse=Hc,n.stubObject=Bc,n.stubString=Uc,n.stubTrue=Wc,n.multiply=pd,n.nth=Ca,n.noConflict=Lc,n.noop=Rc,n.now=op,n.pad=cc,n.padEnd=lc,n.padStart=fc,n.parseInt=pc,n.random=rc,n.reduce=gs,n.reduceRight=ms,n.repeat=dc,n.replace=hc,n.result=Vu,n.round=dd,n.runInContext=t,n.sample=bs,n.size=xs,n.snakeCase=Xp,n.some=Cs,n.sortedIndex=Oa,n.sortedIndexBy=ja,n.sortedIndexOf=Na,n.sortedLastIndex=Da,n.sortedLastIndexBy=Ia,n.sortedLastIndexOf=La,n.startCase=Kp,n.startsWith=gc,n.subtract=hd,n.sum=tl,n.sumBy=el,n.template=mc,n.times=zc,n.toFinite=wu,n.toInteger=xu,n.toLength=Cu,n.toLower=yc,n.toNumber=Tu,n.toSafeInteger=Au,n.toString=ku,n.toUpper=bc,n.trim=_c,n.trimEnd=wc,n.trimStart=xc,n.truncate=Cc,n.unescape=Tc,n.uniqueId=Xc,n.upperCase=Jp,n.upperFirst=Qp,n.each=fs,n.eachRight=ps,n.first=ma,Ic(n,function(){var t={};return dr(n,function(e,r){gl.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION="4.17.4",c(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){n[t].placeholder=n}),c(["drop","take"],function(t,e){_.prototype[t]=function(n){n=n===it?1:zl(xu(n),0);var r=this.__filtered__&&!e?new _(this):this.clone();return r.__filtered__?r.__takeCount__=Vl(n,r.__takeCount__):r.__views__.push({size:Vl(n,Rt),type:t+(r.__dir__<0?"Right":"")}),r},_.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),c(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==Ot||3==n;_.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:xo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),c(["head","last"],function(t,e){var n="take"+(e?"Right":"");_.prototype[t]=function(){return this[n](1).value()[0]}}),c(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");_.prototype[t]=function(){return this.__filtered__?new _(this):this[n](1)}}),_.prototype.compact=function(){return this.filter(Oc)},_.prototype.find=function(t){return this.filter(t).head()},_.prototype.findLast=function(t){return this.reverse().find(t)},_.prototype.invokeMap=ni(function(t,e){return"function"==typeof t?new _(this):this.map(function(n){return $r(n,t,e)})}),_.prototype.reject=function(t){return this.filter(Ns(xo(t)))},_.prototype.slice=function(t,e){t=xu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new _(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==it&&(e=xu(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},_.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},_.prototype.toArray=function(){return this.take(Rt)},dr(_.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),o=/^(?:head|last)$/.test(e),a=n[o?"take"+("last"==e?"Right":""):e],s=o||/^find/.test(e);a&&(n.prototype[e]=function(){var e=this.__wrapped__,u=o?[1]:arguments,c=e instanceof _,l=u[0],f=c||mp(e),p=function(t){var e=a.apply(n,g([t],u));return o&&d?e[0]:e};f&&r&&"function"==typeof l&&1!=l.length&&(c=f=!1);var d=this.__chain__,h=!!this.__actions__.length,v=s&&!d,m=c&&!h;if(!s&&f){e=m?e:new _(this);var y=t.apply(e,u);return y.__actions__.push({func:Za,args:[p],thisArg:it}),new i(y,d)}return v&&m?t.apply(this,u):(y=this.thru(p),v?o?y.value()[0]:y.value():y)})}),c(["pop","push","shift","sort","splice","unshift"],function(t){var e=fl[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(mp(n)?n:[],t)}return this[r](function(n){return e.apply(mp(n)?n:[],t)})}}),dr(_.prototype,function(t,e){var r=n[e];if(r){var i=r.name+"";(of[i]||(of[i]=[])).push({name:e,func:r})}}),of[Zi(it,mt).name]=[{name:"wrapper",func:it}],_.prototype.clone=S,_.prototype.reverse=G,_.prototype.value=et,n.prototype.at=Qf,n.prototype.chain=Ya,n.prototype.commit=ts,n.prototype.next=es,n.prototype.plant=rs,n.prototype.reverse=is,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=os,n.prototype.first=n.prototype.head,Nl&&(n.prototype[Nl]=ns),n}();Dn._=Jn,(i=function(){return Jn}.call(e,n,e,r))!==it&&(r.exports=i)}).call(this)}).call(e,n(2),n(12)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){var r,i;!function(e,n){"use strict";"object"==typeof t&&"object"==typeof t.exports?t.exports=e.document?n(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return n(t)}:n(e)}("undefined"!=typeof window?window:this,function(n,o){"use strict";function a(t,e){e=e||at;var n=e.createElement("script");n.text=t,e.head.appendChild(n).parentNode.removeChild(n)}function s(t){var e=!!t&&"length"in t&&t.length,n=yt.type(t);return"function"!==n&&!yt.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function u(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}function c(t,e,n){return yt.isFunction(e)?yt.grep(t,function(t,r){return!!e.call(t,r,t)!==n}):e.nodeType?yt.grep(t,function(t){return t===e!==n}):"string"!=typeof e?yt.grep(t,function(t){return ft.call(e,t)>-1!==n}):Et.test(e)?yt.filter(e,t,n):(e=yt.filter(e,t),yt.grep(t,function(t){return ft.call(e,t)>-1!==n&&1===t.nodeType}))}function l(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function f(t){var e={};return yt.each(t.match(Dt)||[],function(t,n){e[n]=!0}),e}function p(t){return t}function d(t){throw t}function h(t,e,n,r){var i;try{t&&yt.isFunction(i=t.promise)?i.call(t).done(e).fail(n):t&&yt.isFunction(i=t.then)?i.call(t,e,n):e.apply(void 0,[t].slice(r))}catch(t){n.apply(void 0,[t])}}function v(){at.removeEventListener("DOMContentLoaded",v),n.removeEventListener("load",v),yt.ready()}function g(){this.expando=yt.expando+g.uid++}function m(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:qt.test(t)?JSON.parse(t):t)}function y(t,e,n){var r;if(void 0===n&&1===t.nodeType)if(r="data-"+e.replace(Ht,"-$&").toLowerCase(),"string"==typeof(n=t.getAttribute(r))){try{n=m(n)}catch(t){}Mt.set(t,e,n)}else n=void 0;return n}function b(t,e,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return yt.css(t,e,"")},u=s(),c=n&&n[3]||(yt.cssNumber[e]?"":"px"),l=(yt.cssNumber[e]||"px"!==c&&+u)&&Ut.exec(yt.css(t,e));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do{o=o||".5",l/=o,yt.style(t,e,l+c)}while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(l=+l||+u||0,i=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=i)),i}function _(t){var e,n=t.ownerDocument,r=t.nodeName,i=Xt[r];return i||(e=n.body.appendChild(n.createElement(r)),i=yt.css(e,"display"),e.parentNode.removeChild(e),"none"===i&&(i="block"),Xt[r]=i,i)}function w(t,e){for(var n,r,i=[],o=0,a=t.length;o-1)i&&i.push(o);else if(c=yt.contains(o.ownerDocument,o),a=x(f.appendChild(o),"script"),c&&C(a),n)for(l=0;o=a[l++];)Qt.test(o.type||"")&&n.push(o);return f}function $(){return!0}function A(){return!1}function k(){try{return at.activeElement}catch(t){}}function E(t,e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=void 0);for(s in e)E(t,s,n,r,e[s],o);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=A;else if(!i)return t;return 1===o&&(a=i,i=function(t){return yt().off(t),a.apply(this,arguments)},i.guid=a.guid||(a.guid=yt.guid++)),t.each(function(){yt.event.add(this,e,i,r,n)})}function S(t,e){return u(t,"table")&&u(11!==e.nodeType?e:e.firstChild,"tr")?yt(">tbody",t)[0]||t:t}function O(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function j(t){var e=ae.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function N(t,e){var n,r,i,o,a,s,u,c;if(1===e.nodeType){if(Ft.hasData(t)&&(o=Ft.access(t),a=Ft.set(e,o),c=o.events)){delete a.handle,a.events={};for(i in c)for(n=0,r=c[i].length;n1&&"string"==typeof h&&!mt.checkClone&&oe.test(h))return t.each(function(i){var o=t.eq(i);v&&(e[0]=h.call(this,i,o.html())),I(o,e,n,r)});if(p&&(i=T(e,t[0].ownerDocument,!1,t,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=yt.map(x(i,"script"),O),u=s.length;f=0&&nw.cacheLength&&delete t[e.shift()],t[n+" "]=r}var e=[];return t}function r(t){return t[F]=!0,t}function i(t){var e=j.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),r=n.length;r--;)w.attrHandle[n[r]]=e}function a(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function s(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&xt(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function u(t){return r(function(e){return e=+e,r(function(n,r){for(var i,o=t([],n.length,e),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(t){return t&&void 0!==t.getElementsByTagName&&t}function l(){}function f(t){for(var e=0,n=t.length,r="";e1?function(e,n,r){for(var i=t.length;i--;)if(!t[i](e,n,r))return!1;return!0}:t[0]}function h(t,n,r){for(var i=0,o=n.length;i-1&&(r[c]=!(a[c]=f))}}else b=v(b===a?b.splice(g,b.length):b),o?o(null,a,b,u):Q.apply(a,b)})}function m(t){for(var e,n,r,i=t.length,o=w.relative[t[0].type],a=o||w.relative[" "],s=o?1:0,u=p(function(t){return t===e},a,!0),c=p(function(t){return Z(e,t)>-1},a,!0),l=[function(t,n,r){var i=!o&&(r||n!==k)||((e=n).nodeType?u(t,n,r):c(t,n,r));return e=null,i}];s1&&d(l),s>1&&f(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(ot,"$1"),n,s0,o=t.length>0,a=function(r,a,s,u,c){var l,f,p,d=0,h="0",g=r&&[],m=[],y=k,b=r||o&&w.find.TAG("*",c),_=q+=null==y?1:Math.random()||.1,x=b.length;for(c&&(k=a===j||a||c);h!==x&&null!=(l=b[h]);h++){if(o&&l){for(f=0,a||l.ownerDocument===j||(O(l),s=!D);p=t[f++];)if(p(l,a||j,s)){u.push(l);break}c&&(q=_)}i&&((l=!p&&l)&&d--,r&&g.push(l))}if(d+=h,i&&h!==d){for(f=0;p=n[f++];)p(g,m,a,s);if(r){if(d>0)for(;h--;)g[h]||m[h]||(m[h]=K.call(u));m=v(m)}Q.apply(u,m),c&&!r&&m.length>0&&d+n.length>1&&e.uniqueSort(u)}return c&&(q=_,k=y),g};return i?r(a):a}var b,_,w,x,C,T,$,A,k,E,S,O,j,N,D,I,L,R,P,F="sizzle"+1*new Date,M=t.document,q=0,H=0,B=n(),U=n(),W=n(),z=function(t,e){return t===e&&(S=!0),0},V={}.hasOwnProperty,X=[],K=X.pop,J=X.push,Q=X.push,G=X.slice,Z=function(t,e){for(var n=0,r=t.length;n+~]|"+tt+")"+tt+"*"),ut=new RegExp("="+tt+"*([^\\]'\"]*?)"+tt+"*\\]","g"),ct=new RegExp(rt),lt=new RegExp("^"+et+"$"),ft={ID:new RegExp("^#("+et+")"),CLASS:new RegExp("^\\.("+et+")"),TAG:new RegExp("^("+et+"|[*])"),ATTR:new RegExp("^"+nt),PSEUDO:new RegExp("^"+rt),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+tt+"*(even|odd|(([+-]|)(\\d*)n|)"+tt+"*(?:([+-]|)"+tt+"*(\\d+)|))"+tt+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+tt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+tt+"*((?:-\\d)?\\d*)"+tt+"*\\)|)(?=[^-]|$)","i")},pt=/^(?:input|select|textarea|button)$/i,dt=/^h\d$/i,ht=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,gt=/[+~]/,mt=new RegExp("\\\\([\\da-f]{1,6}"+tt+"?|("+tt+")|.)","ig"),yt=function(t,e,n){var r="0x"+e-65536;return r!==r||n?e:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},bt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,_t=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},wt=function(){O()},xt=p(function(t){return!0===t.disabled&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{Q.apply(X=G.call(M.childNodes),M.childNodes),X[M.childNodes.length].nodeType}catch(t){Q={apply:X.length?function(t,e){J.apply(t,G.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}_=e.support={},C=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},O=e.setDocument=function(t){var e,n,r=t?t.ownerDocument||t:M;return r!==j&&9===r.nodeType&&r.documentElement?(j=r,N=j.documentElement,D=!C(j),M!==j&&(n=j.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",wt,!1):n.attachEvent&&n.attachEvent("onunload",wt)),_.attributes=i(function(t){return t.className="i",!t.getAttribute("className")}),_.getElementsByTagName=i(function(t){return t.appendChild(j.createComment("")),!t.getElementsByTagName("*").length}),_.getElementsByClassName=ht.test(j.getElementsByClassName),_.getById=i(function(t){return N.appendChild(t).id=F,!j.getElementsByName||!j.getElementsByName(F).length}),_.getById?(w.filter.ID=function(t){var e=t.replace(mt,yt);return function(t){return t.getAttribute("id")===e}},w.find.ID=function(t,e){if(void 0!==e.getElementById&&D){var n=e.getElementById(t);return n?[n]:[]}}):(w.filter.ID=function(t){var e=t.replace(mt,yt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},w.find.ID=function(t,e){if(void 0!==e.getElementById&&D){var n,r,i,o=e.getElementById(t);if(o){if((n=o.getAttributeNode("id"))&&n.value===t)return[o];for(i=e.getElementsByName(t),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===t)return[o]}return[]}}),w.find.TAG=_.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):_.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=_.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&D)return e.getElementsByClassName(t)},L=[],I=[],(_.qsa=ht.test(j.querySelectorAll))&&(i(function(t){N.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+tt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||I.push("\\["+tt+"*(?:value|"+Y+")"),t.querySelectorAll("[id~="+F+"-]").length||I.push("~="),t.querySelectorAll(":checked").length||I.push(":checked"),t.querySelectorAll("a#"+F+"+*").length||I.push(".#.+[+~]")}),i(function(t){t.innerHTML="";var e=j.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&I.push("name"+tt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&I.push(":enabled",":disabled"),N.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&I.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),I.push(",.*:")})),(_.matchesSelector=ht.test(R=N.matches||N.webkitMatchesSelector||N.mozMatchesSelector||N.oMatchesSelector||N.msMatchesSelector))&&i(function(t){_.disconnectedMatch=R.call(t,"*"),R.call(t,"[s!='']:x"),L.push("!=",rt)}),I=I.length&&new RegExp(I.join("|")),L=L.length&&new RegExp(L.join("|")),e=ht.test(N.compareDocumentPosition),P=e||ht.test(N.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},z=e?function(t,e){if(t===e)return S=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&n||!_.sortDetached&&e.compareDocumentPosition(t)===n?t===j||t.ownerDocument===M&&P(M,t)?-1:e===j||e.ownerDocument===M&&P(M,e)?1:E?Z(E,t)-Z(E,e):0:4&n?-1:1)}:function(t,e){if(t===e)return S=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,s=[t],u=[e];if(!i||!o)return t===j?-1:e===j?1:i?-1:o?1:E?Z(E,t)-Z(E,e):0;if(i===o)return a(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===M?-1:u[r]===M?1:0},j):j},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==j&&O(t),n=n.replace(ut,"='$1']"),_.matchesSelector&&D&&!W[n+" "]&&(!L||!L.test(n))&&(!I||!I.test(n)))try{var r=R.call(t,n);if(r||_.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){}return e(n,j,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==j&&O(t),P(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==j&&O(t);var n=w.attrHandle[e.toLowerCase()],r=n&&V.call(w.attrHandle,e.toLowerCase())?n(t,e,!D):void 0;return void 0!==r?r:_.attributes||!D?t.getAttribute(e):(r=t.getAttributeNode(e))&&r.specified?r.value:null},e.escape=function(t){return(t+"").replace(bt,_t)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],r=0,i=0;if(S=!_.detectDuplicates,E=!_.sortStable&&t.slice(0),t.sort(z),S){for(;e=t[i++];)e===t[i]&&(r=n.push(i));for(;r--;)t.splice(n[r],1)}return E=null,t},x=e.getText=function(t){var e,n="",r=0,i=t.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=x(t)}else if(3===i||4===i)return t.nodeValue}else for(;e=t[r++];)n+=x(e);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:ft,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(mt,yt),t[3]=(t[3]||t[4]||t[5]||"").replace(mt,yt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return ft.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&ct.test(n)&&(e=T(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(mt,yt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=B[t+" "];return e||(e=new RegExp("(^|"+tt+")"+t+"("+tt+"|$)"))&&B(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(it," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(t,e,n,r,i){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,u){var c,l,f,p,d,h,v=o!==a?"nextSibling":"previousSibling",g=e.parentNode,m=s&&e.nodeName.toLowerCase(),y=!u&&!s,b=!1;if(g){if(o){for(;v;){for(p=e;p=p[v];)if(s?p.nodeName.toLowerCase()===m:1===p.nodeType)return!1;h=v="only"===t&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(p=g,f=p[F]||(p[F]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[t]||[],d=c[0]===q&&c[1],b=d&&c[2],p=d&&g.childNodes[d];p=++d&&p&&p[v]||(b=d=0)||h.pop();)if(1===p.nodeType&&++b&&p===e){l[t]=[q,d,b];break}}else if(y&&(p=e,f=p[F]||(p[F]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[t]||[],d=c[0]===q&&c[1],b=d),!1===b)for(;(p=++d&&p&&p[v]||(b=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==m:1!==p.nodeType)||!++b||(y&&(f=p[F]||(p[F]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),l[t]=[q,b]),p!==e)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(t,e){for(var r,i=o(t,n),a=i.length;a--;)r=Z(t,i[a]),t[r]=!(e[r]=i[a])}):function(t){return o(t,0,i)}):o}},pseudos:{not:r(function(t){var e=[],n=[],i=$(t.replace(ot,"$1"));return i[F]?r(function(t,e,n,r){for(var o,a=i(t,null,r,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))}):function(t,r,o){return e[0]=t,i(e,null,o,n),e[0]=null,!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(t){return t=t.replace(mt,yt),function(e){return(e.textContent||e.innerText||x(e)).indexOf(t)>-1}}),lang:r(function(t){return lt.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(mt,yt).toLowerCase(),function(e){var n;do{if(n=D?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===N},focus:function(t){return t===j.activeElement&&(!j.hasFocus||j.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:s(!1),disabled:s(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!w.pseudos.empty(t)},header:function(t){return dt.test(t.nodeName)},input:function(t){return pt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:u(function(){return[0]}),last:u(function(t,e){return[e-1]}),eq:u(function(t,e,n){return[n<0?n+e:n]}),even:u(function(t,e){for(var n=0;n=0;)t.push(r);return t}),gt:u(function(t,e,n){for(var r=n<0?n+e:n;++r2&&"ID"===(a=o[0]).type&&9===e.nodeType&&D&&w.relative[o[1].type]){if(!(e=(w.find.ID(a.matches[0].replace(mt,yt),e)||[])[0]))return n;l&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(i=ft.needsContext.test(t)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((u=w.find[s])&&(r=u(a.matches[0].replace(mt,yt),gt.test(o[0].type)&&c(e.parentNode)||e))){if(o.splice(i,1),!(t=r.length&&f(o)))return Q.apply(n,r),n;break}}return(l||$(t,p))(r,e,!D,n,!e||gt.test(t)&&c(e.parentNode)||e),n},_.sortStable=F.split("").sort(z).join("")===F,_.detectDuplicates=!!S,O(),_.sortDetached=i(function(t){return 1&t.compareDocumentPosition(j.createElement("fieldset"))}),i(function(t){return t.innerHTML="","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),_.attributes&&i(function(t){return t.innerHTML="",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),i(function(t){return null==t.getAttribute("disabled")})||o(Y,function(t,e,n){var r;if(!n)return!0===t[e]?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null}),e}(n);yt.find=Ct,yt.expr=Ct.selectors,yt.expr[":"]=yt.expr.pseudos,yt.uniqueSort=yt.unique=Ct.uniqueSort,yt.text=Ct.getText,yt.isXMLDoc=Ct.isXML,yt.contains=Ct.contains,yt.escapeSelector=Ct.escape;var Tt=function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&yt(t).is(n))break;r.push(t)}return r},$t=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},At=yt.expr.match.needsContext,kt=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Et=/^.[^:#\[\.,]*$/;yt.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?yt.find.matchesSelector(r,t)?[r]:[]:yt.find.matches(t,yt.grep(e,function(t){return 1===t.nodeType}))},yt.fn.extend({find:function(t){var e,n,r=this.length,i=this;if("string"!=typeof t)return this.pushStack(yt(t).filter(function(){for(e=0;e1?yt.uniqueSort(n):n},filter:function(t){return this.pushStack(c(this,t||[],!1))},not:function(t){return this.pushStack(c(this,t||[],!0))},is:function(t){return!!c(this,"string"==typeof t&&At.test(t)?yt(t):t||[],!1).length}});var St,Ot=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(yt.fn.init=function(t,e,n){var r,i;if(!t)return this;if(n=n||St,"string"==typeof t){if(!(r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:Ot.exec(t))||!r[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(r[1]){if(e=e instanceof yt?e[0]:e,yt.merge(this,yt.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:at,!0)),kt.test(r[1])&&yt.isPlainObject(e))for(r in e)yt.isFunction(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return i=at.getElementById(r[2]),i&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):yt.isFunction(t)?void 0!==n.ready?n.ready(t):t(yt):yt.makeArray(t,this)}).prototype=yt.fn,St=yt(at);var jt=/^(?:parents|prev(?:Until|All))/,Nt={children:!0,contents:!0,next:!0,prev:!0};yt.fn.extend({has:function(t){var e=yt(t,this),n=e.length;return this.filter(function(){for(var t=0;t-1:1===n.nodeType&&yt.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?yt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?ft.call(yt(t),this[0]):ft.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(yt.uniqueSort(yt.merge(this.get(),yt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),yt.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return Tt(t,"parentNode")},parentsUntil:function(t,e,n){return Tt(t,"parentNode",n)},next:function(t){return l(t,"nextSibling")},prev:function(t){return l(t,"previousSibling")},nextAll:function(t){return Tt(t,"nextSibling")},prevAll:function(t){return Tt(t,"previousSibling")},nextUntil:function(t,e,n){return Tt(t,"nextSibling",n)},prevUntil:function(t,e,n){return Tt(t,"previousSibling",n)},siblings:function(t){return $t((t.parentNode||{}).firstChild,t)},children:function(t){return $t(t.firstChild)},contents:function(t){return u(t,"iframe")?t.contentDocument:(u(t,"template")&&(t=t.content||t),yt.merge([],t.childNodes))}},function(t,e){yt.fn[t]=function(n,r){var i=yt.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=yt.filter(r,i)),this.length>1&&(Nt[t]||yt.uniqueSort(i),jt.test(t)&&i.reverse()),this.pushStack(i)}});var Dt=/[^\x20\t\r\n\f]+/g;yt.Callbacks=function(t){t="string"==typeof t?f(t):yt.extend({},t);var e,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||t.once,r=e=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--}),this},has:function(t){return t?yt.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||e||(o=n=""),this},locked:function(){return!!i},fireWith:function(t,n){return i||(n=n||[],n=[t,n.slice?n.slice():n],a.push(n),e||u()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},yt.extend({Deferred:function(t){var e=[["notify","progress",yt.Callbacks("memory"),yt.Callbacks("memory"),2],["resolve","done",yt.Callbacks("once memory"),yt.Callbacks("once memory"),0,"resolved"],["reject","fail",yt.Callbacks("once memory"),yt.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return i.then(null,t)},pipe:function(){var t=arguments;return yt.Deferred(function(n){yt.each(e,function(e,r){var i=yt.isFunction(t[r[4]])&&t[r[4]];o[r[1]](function(){var t=i&&i.apply(this,arguments);t&&yt.isFunction(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[t]:arguments)})}),t=null}).promise()},then:function(t,r,i){function o(t,e,r,i){return function(){var s=this,u=arguments,c=function(){var n,c;if(!(t=a&&(r!==d&&(s=void 0,u=[n]),e.rejectWith(s,u))}};t?l():(yt.Deferred.getStackHook&&(l.stackTrace=yt.Deferred.getStackHook()),n.setTimeout(l))}}var a=0;return yt.Deferred(function(n){e[0][3].add(o(0,n,yt.isFunction(i)?i:p,n.notifyWith)),e[1][3].add(o(0,n,yt.isFunction(t)?t:p)),e[2][3].add(o(0,n,yt.isFunction(r)?r:d))}).promise()},promise:function(t){return null!=t?yt.extend(t,i):i}},o={};return yt.each(e,function(t,n){var a=n[2],s=n[5];i[n[1]]=a.add,s&&a.add(function(){r=s},e[3-t][2].disable,e[0][2].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(t){var e=arguments.length,n=e,r=Array(n),i=ut.call(arguments),o=yt.Deferred(),a=function(t){return function(n){r[t]=this,i[t]=arguments.length>1?ut.call(arguments):n,--e||o.resolveWith(r,i)}};if(e<=1&&(h(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||yt.isFunction(i[n]&&i[n].then)))return o.then();for(;n--;)h(i[n],a(n),o.reject);return o.promise()}});var It=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;yt.Deferred.exceptionHook=function(t,e){n.console&&n.console.warn&&t&&It.test(t.name)&&n.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},yt.readyException=function(t){n.setTimeout(function(){throw t})};var Lt=yt.Deferred();yt.fn.ready=function(t){return Lt.then(t).catch(function(t){yt.readyException(t)}),this},yt.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--yt.readyWait:yt.isReady)||(yt.isReady=!0,!0!==t&&--yt.readyWait>0||Lt.resolveWith(at,[yt]))}}),yt.ready.then=Lt.then,"complete"===at.readyState||"loading"!==at.readyState&&!at.documentElement.doScroll?n.setTimeout(yt.ready):(at.addEventListener("DOMContentLoaded",v),n.addEventListener("load",v));var Rt=function(t,e,n,r,i,o,a){var s=0,u=t.length,c=null==n;if("object"===yt.type(n)){i=!0;for(s in n)Rt(t,e,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,yt.isFunction(r)||(a=!0),c&&(a?(e.call(t,r),e=null):(c=e,e=function(t,e,n){return c.call(yt(t),n)})),e))for(;s1,null,!0)},removeData:function(t){return this.each(function(){Mt.remove(this,t)})}}),yt.extend({queue:function(t,e,n){var r;if(t)return e=(e||"fx")+"queue",r=Ft.get(t,e),n&&(!r||Array.isArray(n)?r=Ft.access(t,e,yt.makeArray(n)):r.push(n)),r||[]},dequeue:function(t,e){e=e||"fx";var n=yt.queue(t,e),r=n.length,i=n.shift(),o=yt._queueHooks(t,e),a=function(){yt.dequeue(t,e)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete o.stop,i.call(t,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Ft.get(t,n)||Ft.access(t,n,{empty:yt.Callbacks("once memory").add(function(){Ft.remove(t,[e+"queue",n])})})}}),yt.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Qt=/^$|\/(?:java|ecma)script/i,Gt={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};Gt.optgroup=Gt.option,Gt.tbody=Gt.tfoot=Gt.colgroup=Gt.caption=Gt.thead,Gt.th=Gt.td;var Zt=/<|&#?\w+;/;!function(){var t=at.createDocumentFragment(),e=t.appendChild(at.createElement("div")),n=at.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),mt.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",mt.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Yt=at.documentElement,te=/^key/,ee=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ne=/^([^.]*)(?:\.(.+)|)/;yt.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,g=Ft.get(t);if(g)for(n.handler&&(o=n,n=o.handler,i=o.selector),i&&yt.find.matchesSelector(Yt,i),n.guid||(n.guid=yt.guid++),(u=g.events)||(u=g.events={}),(a=g.handle)||(a=g.handle=function(e){return void 0!==yt&&yt.event.triggered!==e.type?yt.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(Dt)||[""],c=e.length;c--;)s=ne.exec(e[c])||[],d=v=s[1],h=(s[2]||"").split(".").sort(),d&&(f=yt.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=yt.event.special[d]||{},l=yt.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&yt.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||(p=u[d]=[],p.delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),yt.event.global[d]=!0)},remove:function(t,e,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,g=Ft.hasData(t)&&Ft.get(t);if(g&&(u=g.events)){for(e=(e||"").match(Dt)||[""],c=e.length;c--;)if(s=ne.exec(e[c])||[],d=v=s[1],h=(s[2]||"").split(".").sort(),d){for(f=yt.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)l=p[o],!i&&v!==l.origType||n&&n.guid!==l.guid||s&&!s.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(o,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(t,l));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(t,h,g.handle)||yt.removeEvent(t,d,g.handle),delete u[d])}else for(d in u)yt.event.remove(t,d+e[c],n,r,!0);yt.isEmptyObject(u)&&Ft.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=yt.event.fix(t),u=new Array(arguments.length),c=(Ft.get(this,"events")||{})[s.type]||[],l=yt.event.special[s.type]||{};for(u[0]=s,e=1;e=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==t.type||!0!==c.disabled)){for(o=[],a={},n=0;n-1:yt.find(i,this,null,[c]).length),a[i]&&o.push(r);o.length&&s.push({elem:c,handlers:o})}return c=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,ie=/\s*$/g;yt.extend({htmlPrefilter:function(t){return t.replace(re,"<$1>")},clone:function(t,e,n){var r,i,o,a,s=t.cloneNode(!0),u=yt.contains(t.ownerDocument,t);if(!(mt.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||yt.isXMLDoc(t)))for(a=x(s),o=x(t),r=0,i=o.length;r0&&C(a,!u&&x(t,"script")),s},cleanData:function(t){for(var e,n,r,i=yt.event.special,o=0;void 0!==(n=t[o]);o++)if(Pt(n)){if(e=n[Ft.expando]){if(e.events)for(r in e.events)i[r]?yt.event.remove(n,r):yt.removeEvent(n,r,e.handle);n[Ft.expando]=void 0}n[Mt.expando]&&(n[Mt.expando]=void 0)}}}),yt.fn.extend({detach:function(t){return L(this,t,!0)},remove:function(t){return L(this,t)},text:function(t){return Rt(this,function(t){return void 0===t?yt.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return I(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){S(this,t).appendChild(t)}})},prepend:function(){return I(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=S(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return I(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return I(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(yt.cleanData(x(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return yt.clone(this,t,e)})},html:function(t){return Rt(this,function(t){var e=this[0]||{},n=0,r=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!ie.test(t)&&!Gt[(Jt.exec(t)||["",""])[1].toLowerCase()]){t=yt.htmlPrefilter(t);try{for(;n1)}}),yt.Tween=U,U.prototype={constructor:U,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||yt.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(yt.cssNumber[n]?"":"px")},cur:function(){var t=U.propHooks[this.prop];return t&&t.get?t.get(this):U.propHooks._default.get(this)},run:function(t){var e,n=U.propHooks[this.prop];return this.options.duration?this.pos=e=yt.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):U.propHooks._default.set(this),this}},U.prototype.init.prototype=U.prototype,U.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=yt.css(t.elem,t.prop,""),e&&"auto"!==e?e:0)},set:function(t){yt.fx.step[t.prop]?yt.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[yt.cssProps[t.prop]]&&!yt.cssHooks[t.prop]?t.elem[t.prop]=t.now:yt.style(t.elem,t.prop,t.now+t.unit)}}},U.propHooks.scrollTop=U.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},yt.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},yt.fx=U.prototype.init,yt.fx.step={};var me,ye,be=/^(?:toggle|show|hide)$/,_e=/queueHooks$/;yt.Animation=yt.extend(Q,{tweeners:{"*":[function(t,e){var n=this.createTween(t,e);return b(n.elem,t,Ut.exec(e),n),n}]},tweener:function(t,e){yt.isFunction(t)?(e=t,t=["*"]):t=t.match(Dt);for(var n,r=0,i=t.length;r1)},removeAttr:function(t){return this.each(function(){yt.removeAttr(this,t)})}}),yt.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?yt.prop(t,e,n):(1===o&&yt.isXMLDoc(t)||(i=yt.attrHooks[e.toLowerCase()]||(yt.expr.match.bool.test(e)?we:void 0)),void 0!==n?null===n?void yt.removeAttr(t,e):i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:(t.setAttribute(e,n+""),n):i&&"get"in i&&null!==(r=i.get(t,e))?r:(r=yt.find.attr(t,e),null==r?void 0:r))},attrHooks:{type:{set:function(t,e){if(!mt.radioValue&&"radio"===e&&u(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,r=0,i=e&&e.match(Dt);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}}),we={set:function(t,e,n){return!1===e?yt.removeAttr(t,n):t.setAttribute(n,n),n}},yt.each(yt.expr.match.bool.source.match(/\w+/g),function(t,e){var n=xe[e]||yt.find.attr;xe[e]=function(t,e,r){var i,o,a=e.toLowerCase();return r||(o=xe[a],xe[a]=i,i=null!=n(t,e,r)?a:null,xe[a]=o),i}});var Ce=/^(?:input|select|textarea|button)$/i,Te=/^(?:a|area)$/i;yt.fn.extend({prop:function(t,e){return Rt(this,yt.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[yt.propFix[t]||t]})}}),yt.extend({prop:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&yt.isXMLDoc(t)||(e=yt.propFix[e]||e,i=yt.propHooks[e]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:t[e]=n:i&&"get"in i&&null!==(r=i.get(t,e))?r:t[e]},propHooks:{tabIndex:{get:function(t){var e=yt.find.attr(t,"tabindex");return e?parseInt(e,10):Ce.test(t.nodeName)||Te.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),mt.optSelected||(yt.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),yt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){yt.propFix[this.toLowerCase()]=this}),yt.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(yt.isFunction(t))return this.each(function(e){yt(this).addClass(t.call(this,e,Z(this)))});if("string"==typeof t&&t)for(e=t.match(Dt)||[];n=this[u++];)if(i=Z(n),r=1===n.nodeType&&" "+G(i)+" "){for(a=0;o=e[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=G(r),i!==s&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(yt.isFunction(t))return this.each(function(e){yt(this).removeClass(t.call(this,e,Z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(Dt)||[];n=this[u++];)if(i=Z(n),r=1===n.nodeType&&" "+G(i)+" "){for(a=0;o=e[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=G(r),i!==s&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var n=typeof t;return"boolean"==typeof e&&"string"===n?e?this.addClass(t):this.removeClass(t):yt.isFunction(t)?this.each(function(n){yt(this).toggleClass(t.call(this,n,Z(this),e),e)}):this.each(function(){var e,r,i,o;if("string"===n)for(r=0,i=yt(this),o=t.match(Dt)||[];e=o[r++];)i.hasClass(e)?i.removeClass(e):i.addClass(e);else void 0!==t&&"boolean"!==n||(e=Z(this),e&&Ft.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===t?"":Ft.get(this,"__className__")||""))})},hasClass:function(t){var e,n,r=0;for(e=" "+t+" ";n=this[r++];)if(1===n.nodeType&&(" "+G(Z(n))+" ").indexOf(e)>-1)return!0;return!1}});var $e=/\r/g;yt.fn.extend({val:function(t){var e,n,r,i=this[0];{if(arguments.length)return r=yt.isFunction(t),this.each(function(n){var i;1===this.nodeType&&(i=r?t.call(this,n,yt(this).val()):t,null==i?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=yt.map(i,function(t){return null==t?"":t+""})),(e=yt.valHooks[this.type]||yt.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))});if(i)return(e=yt.valHooks[i.type]||yt.valHooks[i.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace($e,""):null==n?"":n)}}}),yt.extend({valHooks:{option:{get:function(t){var e=yt.find.attr(t,"value");return null!=e?e:G(yt.text(t))}},select:{get:function(t){var e,n,r,i=t.options,o=t.selectedIndex,a="select-one"===t.type,s=a?null:[],c=a?o+1:i.length;for(r=o<0?c:a?o:0;r-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),yt.each(["radio","checkbox"],function(){yt.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=yt.inArray(yt(t).val(),e)>-1}},mt.checkOn||(yt.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var Ae=/^(?:focusinfocus|focusoutblur)$/;yt.extend(yt.event,{trigger:function(t,e,r,i){var o,a,s,u,c,l,f,p=[r||at],d=ht.call(t,"type")?t.type:t,h=ht.call(t,"namespace")?t.namespace.split("."):[];if(a=s=r=r||at,3!==r.nodeType&&8!==r.nodeType&&!Ae.test(d+yt.event.triggered)&&(d.indexOf(".")>-1&&(h=d.split("."),d=h.shift(),h.sort()),c=d.indexOf(":")<0&&"on"+d,t=t[yt.expando]?t:new yt.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),e=null==e?[t]:yt.makeArray(e,[t]),f=yt.event.special[d]||{},i||!f.trigger||!1!==f.trigger.apply(r,e))){if(!i&&!f.noBubble&&!yt.isWindow(r)){for(u=f.delegateType||d,Ae.test(u+d)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||at)&&p.push(s.defaultView||s.parentWindow||n)}for(o=0;(a=p[o++])&&!t.isPropagationStopped();)t.type=o>1?u:f.bindType||d,l=(Ft.get(a,"events")||{})[t.type]&&Ft.get(a,"handle"),l&&l.apply(a,e),(l=c&&a[c])&&l.apply&&Pt(a)&&(t.result=l.apply(a,e),!1===t.result&&t.preventDefault());return t.type=d,i||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),e)||!Pt(r)||c&&yt.isFunction(r[d])&&!yt.isWindow(r)&&(s=r[c],s&&(r[c]=null),yt.event.triggered=d,r[d](),yt.event.triggered=void 0,s&&(r[c]=s)),t.result}},simulate:function(t,e,n){var r=yt.extend(new yt.Event,n,{type:t,isSimulated:!0});yt.event.trigger(r,null,e)}}),yt.fn.extend({trigger:function(t,e){return this.each(function(){yt.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return yt.event.trigger(t,e,n,!0)}}),yt.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){yt.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),yt.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),mt.focusin="onfocusin"in n,mt.focusin||yt.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){yt.event.simulate(e,t.target,yt.event.fix(t))};yt.event.special[e]={setup:function(){var r=this.ownerDocument||this,i=Ft.access(r,e);i||r.addEventListener(t,n,!0),Ft.access(r,e,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Ft.access(r,e)-1;i?Ft.access(r,e,i):(r.removeEventListener(t,n,!0),Ft.remove(r,e))}}});var ke=n.location,Ee=yt.now(),Se=/\?/;yt.parseXML=function(t){var e;if(!t||"string"!=typeof t)return null;try{e=(new n.DOMParser).parseFromString(t,"text/xml")}catch(t){e=void 0}return e&&!e.getElementsByTagName("parsererror").length||yt.error("Invalid XML: "+t),e};var Oe=/\[\]$/,je=/\r?\n/g,Ne=/^(?:submit|button|image|reset|file)$/i,De=/^(?:input|select|textarea|keygen)/i;yt.param=function(t,e){var n,r=[],i=function(t,e){var n=yt.isFunction(e)?e():e;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(t)||t.jquery&&!yt.isPlainObject(t))yt.each(t,function(){i(this.name,this.value)});else for(n in t)Y(n,t[n],e,i);return r.join("&")},yt.fn.extend({serialize:function(){return yt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=yt.prop(this,"elements");return t?yt.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!yt(this).is(":disabled")&&De.test(this.nodeName)&&!Ne.test(t)&&(this.checked||!Kt.test(t))}).map(function(t,e){var n=yt(this).val();return null==n?null:Array.isArray(n)?yt.map(n,function(t){return{name:e.name,value:t.replace(je,"\r\n")}}):{name:e.name,value:n.replace(je,"\r\n")}}).get()}});var Ie=/%20/g,Le=/#.*$/,Re=/([?&])_=[^&]*/,Pe=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fe=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Me=/^(?:GET|HEAD)$/,qe=/^\/\//,He={},Be={},Ue="*/".concat("*"),We=at.createElement("a");We.href=ke.href,yt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ke.href,type:"GET",isLocal:Fe.test(ke.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ue,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":yt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?nt(nt(t,yt.ajaxSettings),e):nt(yt.ajaxSettings,t)},ajaxPrefilter:tt(He),ajaxTransport:tt(Be),ajax:function(t,e){function r(t,e,r,s){var c,p,d,_,w,x=e;l||(l=!0,u&&n.clearTimeout(u),i=void 0,a=s||"",C.readyState=t>0?4:0,c=t>=200&&t<300||304===t,r&&(_=rt(h,C,r)),_=it(h,_,C,c),c?(h.ifModified&&(w=C.getResponseHeader("Last-Modified"),w&&(yt.lastModified[o]=w),(w=C.getResponseHeader("etag"))&&(yt.etag[o]=w)),204===t||"HEAD"===h.type?x="nocontent":304===t?x="notmodified":(x=_.state,p=_.data,d=_.error,c=!d)):(d=x,!t&&x||(x="error",t<0&&(t=0))),C.status=t,C.statusText=(e||x)+"",c?m.resolveWith(v,[p,x,C]):m.rejectWith(v,[C,x,d]),C.statusCode(b),b=void 0,f&&g.trigger(c?"ajaxSuccess":"ajaxError",[C,h,c?p:d]),y.fireWith(v,[C,x]),f&&(g.trigger("ajaxComplete",[C,h]),--yt.active||yt.event.trigger("ajaxStop")))}"object"==typeof t&&(e=t,t=void 0),e=e||{};var i,o,a,s,u,c,l,f,p,d,h=yt.ajaxSetup({},e),v=h.context||h,g=h.context&&(v.nodeType||v.jquery)?yt(v):yt.event,m=yt.Deferred(),y=yt.Callbacks("once memory"),b=h.statusCode||{},_={},w={},x="canceled",C={readyState:0,getResponseHeader:function(t){var e;if(l){if(!s)for(s={};e=Pe.exec(a);)s[e[1].toLowerCase()]=e[2];e=s[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return l?a:null},setRequestHeader:function(t,e){return null==l&&(t=w[t.toLowerCase()]=w[t.toLowerCase()]||t,_[t]=e),this},overrideMimeType:function(t){return null==l&&(h.mimeType=t),this},statusCode:function(t){var e;if(t)if(l)C.always(t[C.status]);else for(e in t)b[e]=[b[e],t[e]];return this},abort:function(t){var e=t||x;return i&&i.abort(e),r(0,e),this}};if(m.promise(C),h.url=((t||h.url||ke.href)+"").replace(qe,ke.protocol+"//"),h.type=e.method||e.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(Dt)||[""],null==h.crossDomain){c=at.createElement("a");try{c.href=h.url,c.href=c.href,h.crossDomain=We.protocol+"//"+We.host!=c.protocol+"//"+c.host}catch(t){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=yt.param(h.data,h.traditional)),et(He,h,e,C),l)return C;f=yt.event&&h.global,f&&0==yt.active++&&yt.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Me.test(h.type),o=h.url.replace(Le,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(Ie,"+")):(d=h.url.slice(o.length),h.data&&(o+=(Se.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Re,"$1"),d=(Se.test(o)?"&":"?")+"_="+Ee+++d),h.url=o+d),h.ifModified&&(yt.lastModified[o]&&C.setRequestHeader("If-Modified-Since",yt.lastModified[o]),yt.etag[o]&&C.setRequestHeader("If-None-Match",yt.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||e.contentType)&&C.setRequestHeader("Content-Type",h.contentType),C.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ue+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)C.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(v,C,h)||l))return C.abort();if(x="abort",y.add(h.complete),C.done(h.success),C.fail(h.error),i=et(Be,h,e,C)){if(C.readyState=1,f&&g.trigger("ajaxSend",[C,h]),l)return C;h.async&&h.timeout>0&&(u=n.setTimeout(function(){C.abort("timeout")},h.timeout));try{l=!1,i.send(_,r)}catch(t){if(l)throw t;r(-1,t)}}else r(-1,"No Transport");return C},getJSON:function(t,e,n){return yt.get(t,e,n,"json")},getScript:function(t,e){return yt.get(t,void 0,e,"script")}}),yt.each(["get","post"],function(t,e){yt[e]=function(t,n,r,i){return yt.isFunction(n)&&(i=i||r,r=n,n=void 0),yt.ajax(yt.extend({url:t,type:e,dataType:i,data:n,success:r},yt.isPlainObject(t)&&t))}}),yt._evalUrl=function(t){return yt.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},yt.fn.extend({wrapAll:function(t){var e;return this[0]&&(yt.isFunction(t)&&(t=t.call(this[0])),e=yt(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return yt.isFunction(t)?this.each(function(e){yt(this).wrapInner(t.call(this,e))}):this.each(function(){var e=yt(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=yt.isFunction(t);return this.each(function(n){yt(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){yt(this).replaceWith(this.childNodes)}),this}}),yt.expr.pseudos.hidden=function(t){return!yt.expr.pseudos.visible(t)},yt.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},yt.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(t){}};var ze={0:200,1223:204},Ve=yt.ajaxSettings.xhr();mt.cors=!!Ve&&"withCredentials"in Ve,mt.ajax=Ve=!!Ve,yt.ajaxTransport(function(t){var e,r;if(mt.cors||Ve&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);e=function(t){return function(){e&&(e=r=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(ze[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=e(),r=s.onerror=e("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout(function(){e&&r()})},e=e("abort");try{s.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}}),yt.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),yt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return yt.globalEval(t),t}}}),yt.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),yt.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(r,i){e=yt(" + + @include('sweet::alert') + @stack('scripts') + + diff --git a/resources/views/users/avatar.blade.php b/resources/views/users/avatar.blade.php new file mode 100644 index 0000000..83a490c --- /dev/null +++ b/resources/views/users/avatar.blade.php @@ -0,0 +1,9 @@ +@component('components.panels.small', ['panel_title' => 'Avatar']) + @slot('panel_body') + {{ html()->form('POST', route('store.avatar'))->attribute('enctype', 'multipart/form-data')->open() }} + {{ html()->label('Please choose your avatar') }} + {{ html()->input('file')->name('avatar') }} + {{ html()->button('Submit', 'submit')->class('btn btn-sm btn-default') }} + {{ html()->form()->close() }} + @endslot +@endcomponent diff --git a/resources/views/users/log.blade.php b/resources/views/users/log.blade.php new file mode 100644 index 0000000..842285e --- /dev/null +++ b/resources/views/users/log.blade.php @@ -0,0 +1,20 @@ +@component('components.panels.small', ['panel_title' => 'User Log']) + @slot('panel_body') + @component('components.table') + @slot('thead') + + Description + Day, Date & Time + + @endslot + @slot('tbody') + @foreach($logs as $log) + + {{ $log->description }} + {{ $log->created_at->toDayDateTimeString() }} + + @endforeach + @endslot + @endcomponent + @endslot +@endcomponent diff --git a/resources/views/vendor/mail/html/button.blade.php b/resources/views/vendor/mail/html/button.blade.php new file mode 100644 index 0000000..c7aae1b --- /dev/null +++ b/resources/views/vendor/mail/html/button.blade.php @@ -0,0 +1,19 @@ + + + + +
+ + + + +
+ + + + +
+ {{ $slot }} +
+
+
diff --git a/resources/views/vendor/mail/html/footer.blade.php b/resources/views/vendor/mail/html/footer.blade.php new file mode 100644 index 0000000..c3f9360 --- /dev/null +++ b/resources/views/vendor/mail/html/footer.blade.php @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/resources/views/vendor/mail/html/header.blade.php b/resources/views/vendor/mail/html/header.blade.php new file mode 100644 index 0000000..eefabab --- /dev/null +++ b/resources/views/vendor/mail/html/header.blade.php @@ -0,0 +1,7 @@ + + + + {{ $slot }} + + + diff --git a/resources/views/vendor/mail/html/layout.blade.php b/resources/views/vendor/mail/html/layout.blade.php new file mode 100644 index 0000000..991ae52 --- /dev/null +++ b/resources/views/vendor/mail/html/layout.blade.php @@ -0,0 +1,54 @@ + + + + + + + + + + + + + +
+ + {{ $header or '' }} + + + + + + + {{ $footer or '' }} +
+ + + + + +
+ {{ Illuminate\Mail\Markdown::parse($slot) }} + + {{ $subcopy or '' }} +
+
+
+ + diff --git a/resources/views/vendor/mail/html/message.blade.php b/resources/views/vendor/mail/html/message.blade.php new file mode 100644 index 0000000..2ad23a6 --- /dev/null +++ b/resources/views/vendor/mail/html/message.blade.php @@ -0,0 +1,27 @@ +@component('mail::layout') + {{-- Header --}} + @slot('header') + @component('mail::header', ['url' => config('app.url')]) + {{ config('app.name') }} + @endcomponent + @endslot + + {{-- Body --}} + {{ $slot }} + + {{-- Subcopy --}} + @isset($subcopy) + @slot('subcopy') + @component('mail::subcopy') + {{ $subcopy }} + @endcomponent + @endslot + @endisset + + {{-- Footer --}} + @slot('footer') + @component('mail::footer') + © {{ date('Y') }} {{ config('app.name') }}. All rights reserved. + @endcomponent + @endslot +@endcomponent diff --git a/resources/views/vendor/mail/html/panel.blade.php b/resources/views/vendor/mail/html/panel.blade.php new file mode 100644 index 0000000..f397080 --- /dev/null +++ b/resources/views/vendor/mail/html/panel.blade.php @@ -0,0 +1,13 @@ + + + + +
+ + + + +
+ {{ Illuminate\Mail\Markdown::parse($slot) }} +
+
diff --git a/resources/views/vendor/mail/html/promotion.blade.php b/resources/views/vendor/mail/html/promotion.blade.php new file mode 100644 index 0000000..0debcf8 --- /dev/null +++ b/resources/views/vendor/mail/html/promotion.blade.php @@ -0,0 +1,7 @@ + + + + +
+ {{ Illuminate\Mail\Markdown::parse($slot) }} +
diff --git a/resources/views/vendor/mail/html/promotion/button.blade.php b/resources/views/vendor/mail/html/promotion/button.blade.php new file mode 100644 index 0000000..8e79081 --- /dev/null +++ b/resources/views/vendor/mail/html/promotion/button.blade.php @@ -0,0 +1,13 @@ + + + + +
+ + + + +
+ {{ $slot }} +
+
diff --git a/resources/views/vendor/mail/html/subcopy.blade.php b/resources/views/vendor/mail/html/subcopy.blade.php new file mode 100644 index 0000000..c3df7b4 --- /dev/null +++ b/resources/views/vendor/mail/html/subcopy.blade.php @@ -0,0 +1,7 @@ + + + + +
+ {{ Illuminate\Mail\Markdown::parse($slot) }} +
diff --git a/resources/views/vendor/mail/html/table.blade.php b/resources/views/vendor/mail/html/table.blade.php new file mode 100644 index 0000000..a5f3348 --- /dev/null +++ b/resources/views/vendor/mail/html/table.blade.php @@ -0,0 +1,3 @@ +
+{{ Illuminate\Mail\Markdown::parse($slot) }} +
diff --git a/resources/views/vendor/mail/html/themes/default.css b/resources/views/vendor/mail/html/themes/default.css new file mode 100644 index 0000000..b78b27d --- /dev/null +++ b/resources/views/vendor/mail/html/themes/default.css @@ -0,0 +1,287 @@ +/* Base */ + +body, body *:not(html):not(style):not(br):not(tr):not(code) { + font-family: Avenir, Helvetica, sans-serif; + box-sizing: border-box; +} + +body { + background-color: #f5f8fa; + color: #74787E; + height: 100%; + hyphens: auto; + line-height: 1.4; + margin: 0; + -moz-hyphens: auto; + -ms-word-break: break-all; + width: 100% !important; + -webkit-hyphens: auto; + -webkit-text-size-adjust: none; + word-break: break-all; + word-break: break-word; +} + +p, +ul, +ol, +blockquote { + line-height: 1.4; + text-align: left; +} + +a { + color: #3869D4; +} + +a img { + border: none; +} + +/* Typography */ + +h1 { + color: #2F3133; + font-size: 19px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +h2 { + color: #2F3133; + font-size: 16px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +h3 { + color: #2F3133; + font-size: 14px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +p { + color: #74787E; + font-size: 16px; + line-height: 1.5em; + margin-top: 0; + text-align: left; +} + +p.sub { + font-size: 12px; +} + +img { + max-width: 100%; +} + +/* Layout */ + +.wrapper { + background-color: #f5f8fa; + margin: 0; + padding: 0; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.content { + margin: 0; + padding: 0; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +/* Header */ + +.header { + padding: 25px 0; + text-align: center; +} + +.header a { + color: #bbbfc3; + font-size: 19px; + font-weight: bold; + text-decoration: none; + text-shadow: 0 1px 0 white; +} + +/* Body */ + +.body { + background-color: #FFFFFF; + border-bottom: 1px solid #EDEFF2; + border-top: 1px solid #EDEFF2; + margin: 0; + padding: 0; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.inner-body { + background-color: #FFFFFF; + margin: 0 auto; + padding: 0; + width: 570px; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 570px; +} + +/* Subcopy */ + +.subcopy { + border-top: 1px solid #EDEFF2; + margin-top: 25px; + padding-top: 25px; +} + +.subcopy p { + font-size: 12px; +} + +/* Footer */ + +.footer { + margin: 0 auto; + padding: 0; + text-align: center; + width: 570px; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 570px; +} + +.footer p { + color: #AEAEAE; + font-size: 12px; + text-align: center; +} + +/* Tables */ + +.table table { + margin: 30px auto; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.table th { + border-bottom: 1px solid #EDEFF2; + padding-bottom: 8px; + margin: 0; +} + +.table td { + color: #74787E; + font-size: 15px; + line-height: 18px; + padding: 10px 0; + margin: 0; +} + +.content-cell { + padding: 35px; +} + +/* Buttons */ + +.action { + margin: 30px auto; + padding: 0; + text-align: center; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.button { + border-radius: 3px; + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); + color: #FFF; + display: inline-block; + text-decoration: none; + -webkit-text-size-adjust: none; +} + +.button-blue { + background-color: #3097D1; + border-top: 10px solid #3097D1; + border-right: 18px solid #3097D1; + border-bottom: 10px solid #3097D1; + border-left: 18px solid #3097D1; +} + +.button-green { + background-color: #2ab27b; + border-top: 10px solid #2ab27b; + border-right: 18px solid #2ab27b; + border-bottom: 10px solid #2ab27b; + border-left: 18px solid #2ab27b; +} + +.button-red { + background-color: #bf5329; + border-top: 10px solid #bf5329; + border-right: 18px solid #bf5329; + border-bottom: 10px solid #bf5329; + border-left: 18px solid #bf5329; +} + +/* Panels */ + +.panel { + margin: 0 0 21px; +} + +.panel-content { + background-color: #EDEFF2; + padding: 16px; +} + +.panel-item { + padding: 0; +} + +.panel-item p:last-of-type { + margin-bottom: 0; + padding-bottom: 0; +} + +/* Promotions */ + +.promotion { + background-color: #FFFFFF; + border: 2px dashed #9BA2AB; + margin: 0; + margin-bottom: 25px; + margin-top: 25px; + padding: 24px; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.promotion h1 { + text-align: center; +} + +.promotion p { + font-size: 15px; + text-align: center; +} diff --git a/resources/views/vendor/mail/markdown/button.blade.php b/resources/views/vendor/mail/markdown/button.blade.php new file mode 100644 index 0000000..97444eb --- /dev/null +++ b/resources/views/vendor/mail/markdown/button.blade.php @@ -0,0 +1 @@ +{{ $slot }}: {{ $url }} diff --git a/resources/views/vendor/mail/markdown/footer.blade.php b/resources/views/vendor/mail/markdown/footer.blade.php new file mode 100644 index 0000000..3338f62 --- /dev/null +++ b/resources/views/vendor/mail/markdown/footer.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/header.blade.php b/resources/views/vendor/mail/markdown/header.blade.php new file mode 100644 index 0000000..aaa3e57 --- /dev/null +++ b/resources/views/vendor/mail/markdown/header.blade.php @@ -0,0 +1 @@ +[{{ $slot }}]({{ $url }}) diff --git a/resources/views/vendor/mail/markdown/layout.blade.php b/resources/views/vendor/mail/markdown/layout.blade.php new file mode 100644 index 0000000..9378baa --- /dev/null +++ b/resources/views/vendor/mail/markdown/layout.blade.php @@ -0,0 +1,9 @@ +{!! strip_tags($header) !!} + +{!! strip_tags($slot) !!} +@isset($subcopy) + +{!! strip_tags($subcopy) !!} +@endisset + +{!! strip_tags($footer) !!} diff --git a/resources/views/vendor/mail/markdown/message.blade.php b/resources/views/vendor/mail/markdown/message.blade.php new file mode 100644 index 0000000..b409c71 --- /dev/null +++ b/resources/views/vendor/mail/markdown/message.blade.php @@ -0,0 +1,27 @@ +@component('mail::layout') + {{-- Header --}} + @slot('header') + @component('mail::header', ['url' => config('app.url')]) + {{ config('app.name') }} + @endcomponent + @endslot + + {{-- Body --}} + {{ $slot }} + + {{-- Subcopy --}} + @isset($subcopy) + @slot('subcopy') + @component('mail::subcopy') + {{ $subcopy }} + @endcomponent + @endslot + @endisset + + {{-- Footer --}} + @slot('footer') + @component('mail::footer') + © {{ date('Y') }} {{ config('app.name') }}. All rights reserved. + @endcomponent + @endslot +@endcomponent diff --git a/resources/views/vendor/mail/markdown/panel.blade.php b/resources/views/vendor/mail/markdown/panel.blade.php new file mode 100644 index 0000000..3338f62 --- /dev/null +++ b/resources/views/vendor/mail/markdown/panel.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/promotion.blade.php b/resources/views/vendor/mail/markdown/promotion.blade.php new file mode 100644 index 0000000..3338f62 --- /dev/null +++ b/resources/views/vendor/mail/markdown/promotion.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/promotion/button.blade.php b/resources/views/vendor/mail/markdown/promotion/button.blade.php new file mode 100644 index 0000000..aaa3e57 --- /dev/null +++ b/resources/views/vendor/mail/markdown/promotion/button.blade.php @@ -0,0 +1 @@ +[{{ $slot }}]({{ $url }}) diff --git a/resources/views/vendor/mail/markdown/subcopy.blade.php b/resources/views/vendor/mail/markdown/subcopy.blade.php new file mode 100644 index 0000000..3338f62 --- /dev/null +++ b/resources/views/vendor/mail/markdown/subcopy.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/table.blade.php b/resources/views/vendor/mail/markdown/table.blade.php new file mode 100644 index 0000000..3338f62 --- /dev/null +++ b/resources/views/vendor/mail/markdown/table.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/notifications/email.blade.php b/resources/views/vendor/notifications/email.blade.php new file mode 100644 index 0000000..abfaa88 --- /dev/null +++ b/resources/views/vendor/notifications/email.blade.php @@ -0,0 +1,58 @@ +@component('mail::message') +{{-- Greeting --}} +@if (! empty($greeting)) +# {{ $greeting }} +@else +@if ($level == 'error') +# Whoops! +@else +# Hello! +@endif +@endif + +{{-- Intro Lines --}} +@foreach ($introLines as $line) +{{ $line }} + +@endforeach + +{{-- Action Button --}} +@isset($actionText) + +@component('mail::button', ['url' => $actionUrl, 'color' => $color]) +{{ $actionText }} +@endcomponent +@endisset + +{{-- Outro Lines --}} +@foreach ($outroLines as $line) +{{ $line }} + +@endforeach + +{{-- Salutation --}} +@if (! empty($salutation)) +{{ $salutation }} +@else +Regards,
{{ config('app.name') }} +@endif + +{{-- Subcopy --}} +@isset($actionText) +@component('mail::subcopy') +If you’re having trouble clicking the "{{ $actionText }}" button, copy and paste the URL below +into your web browser: [{{ $actionUrl }}]({{ $actionUrl }}) +@endcomponent +@endisset +@endcomponent diff --git a/resources/views/vendor/pagination/bootstrap-4.blade.php b/resources/views/vendor/pagination/bootstrap-4.blade.php new file mode 100644 index 0000000..3f98455 --- /dev/null +++ b/resources/views/vendor/pagination/bootstrap-4.blade.php @@ -0,0 +1,36 @@ +@if ($paginator->hasPages()) +
    + {{-- Previous Page Link --}} + @if ($paginator->onFirstPage()) +
  • «
  • + @else +
  • + @endif + + {{-- Pagination Elements --}} + @foreach ($elements as $element) + {{-- "Three Dots" Separator --}} + @if (is_string($element)) +
  • {{ $element }}
  • + @endif + + {{-- Array Of Links --}} + @if (is_array($element)) + @foreach ($element as $page => $url) + @if ($page == $paginator->currentPage()) +
  • {{ $page }}
  • + @else +
  • {{ $page }}
  • + @endif + @endforeach + @endif + @endforeach + + {{-- Next Page Link --}} + @if ($paginator->hasMorePages()) +
  • + @else +
  • »
  • + @endif +
+@endif diff --git a/resources/views/vendor/pagination/default.blade.php b/resources/views/vendor/pagination/default.blade.php new file mode 100644 index 0000000..4e795ff --- /dev/null +++ b/resources/views/vendor/pagination/default.blade.php @@ -0,0 +1,36 @@ +@if ($paginator->hasPages()) +
    + {{-- Previous Page Link --}} + @if ($paginator->onFirstPage()) +
  • «
  • + @else +
  • + @endif + + {{-- Pagination Elements --}} + @foreach ($elements as $element) + {{-- "Three Dots" Separator --}} + @if (is_string($element)) +
  • {{ $element }}
  • + @endif + + {{-- Array Of Links --}} + @if (is_array($element)) + @foreach ($element as $page => $url) + @if ($page == $paginator->currentPage()) +
  • {{ $page }}
  • + @else +
  • {{ $page }}
  • + @endif + @endforeach + @endif + @endforeach + + {{-- Next Page Link --}} + @if ($paginator->hasMorePages()) +
  • + @else +
  • »
  • + @endif +
+@endif diff --git a/resources/views/vendor/pagination/semantic-ui.blade.php b/resources/views/vendor/pagination/semantic-ui.blade.php new file mode 100644 index 0000000..c6e0d21 --- /dev/null +++ b/resources/views/vendor/pagination/semantic-ui.blade.php @@ -0,0 +1,36 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php new file mode 100644 index 0000000..a9a18d3 --- /dev/null +++ b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php @@ -0,0 +1,17 @@ +@if ($paginator->hasPages()) +
    + {{-- Previous Page Link --}} + @if ($paginator->onFirstPage()) +
  • @lang('pagination.previous')
  • + @else +
  • + @endif + + {{-- Next Page Link --}} + @if ($paginator->hasMorePages()) +
  • + @else +
  • @lang('pagination.next')
  • + @endif +
+@endif diff --git a/resources/views/vendor/pagination/simple-default.blade.php b/resources/views/vendor/pagination/simple-default.blade.php new file mode 100644 index 0000000..1801609 --- /dev/null +++ b/resources/views/vendor/pagination/simple-default.blade.php @@ -0,0 +1,17 @@ +@if ($paginator->hasPages()) +
    + {{-- Previous Page Link --}} + @if ($paginator->onFirstPage()) +
  • @lang('pagination.previous')
  • + @else +
  • + @endif + + {{-- Next Page Link --}} + @if ($paginator->hasMorePages()) +
  • + @else +
  • @lang('pagination.next')
  • + @endif +
+@endif diff --git a/routes/api.php b/routes/api.php index c641ca5..78ced2f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,7 +1,5 @@ get('/user', function (Request $request) { - return $request->user(); -}); + */ diff --git a/routes/console.php b/routes/console.php index 75dd0cd..ef3eaca 100644 --- a/routes/console.php +++ b/routes/console.php @@ -1,7 +1,5 @@ comment(Inspiring::quote()); -})->describe('Display an inspiring quote'); + */ diff --git a/routes/web.php b/routes/web.php index 810aa34..822ce1b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -9,8 +9,16 @@ | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | -*/ + */ -Route::get('/', function () { - return view('welcome'); +Route::get('/', 'WelcomeController')->name('welcome'); + +Auth::routes(); + +Route::get('/home', 'HomeController@index')->name('home'); + +Route::group(['namespace' => 'User', 'prefix' => 'user'], function () { + Route::get('/logs', 'LogController')->name('logs'); + Route::get('/avatar', 'AvatarController@show')->name('show.avatar'); + Route::post('/avatar', 'AvatarController@store')->name('store.avatar'); }); diff --git a/webpack.mix.js b/webpack.mix.js index 72fdbb1..eac8081 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -13,3 +13,5 @@ let mix = require('laravel-mix'); mix.js('resources/assets/js/app.js', 'public/js') .sass('resources/assets/sass/app.scss', 'public/css'); + +mix.copy('node_modules/sweetalert/dist/sweetalert.min.js', 'public/js'); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 6603229..4b4ca16 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1967,6 +1967,10 @@ es6-map@^0.1.3: es6-symbol "~3.1.1" event-emitter "~0.3.5" +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + es6-set@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" @@ -2021,10 +2025,6 @@ esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - esprima@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9" @@ -3333,14 +3333,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.4.3: - version "3.10.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@~3.7.0: +js-yaml@^3.4.3, js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: @@ -4810,6 +4803,10 @@ promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" +promise-polyfill@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" + proxy-addr@~2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec" @@ -5785,6 +5782,13 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" +sweetalert@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.0.8.tgz#b3ee2adc4dad548d4ae998994f5ac802dc753b86" + dependencies: + es6-object-assign "^1.1.0" + promise-polyfill "^6.0.2" + tapable@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"