Full Code of juzaweb/juzacms for AI

develop 7823ec25eb7c cached
161 files
975.6 KB
334.0k tokens
883 symbols
1 requests
Download .txt
Showing preview only (1,037K chars total). Download the full file or copy to clipboard to get everything.
Repository: juzaweb/juzacms
Branch: develop
Commit: 7823ec25eb7c
Files: 161
Total size: 975.6 KB

Directory structure:
gitextract_t8xlnr9t/

├── .editorconfig
├── .gitattributes
├── .github/
│   └── workflows/
│       ├── release-test.yml
│       └── test.yml
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── app/
│   ├── Console/
│   │   ├── Commands/
│   │   │   └── .gitkeep
│   │   └── Kernel.php
│   └── Providers/
│       └── AppServiceProvider.php
├── artisan
├── bootstrap/
│   ├── app.php
│   ├── cache/
│   │   └── .gitignore
│   └── providers.php
├── changelog.md
├── composer.json
├── config/
│   ├── analytics.php
│   ├── app.php
│   ├── auth.php
│   ├── cache.php
│   ├── cors.php
│   ├── database.php
│   ├── datatables.php
│   ├── debugbar.php
│   ├── filesystems.php
│   ├── l5-swagger.php
│   ├── log-viewer.php
│   ├── logging.php
│   ├── mail.php
│   ├── queue.php
│   ├── services.php
│   ├── session.php
│   ├── translatable.php
│   └── translation-loader.php
├── database/
│   ├── .gitignore
│   └── seeders/
│       └── DatabaseSeeder.php
├── modules/
│   ├── .gitkeep
│   └── admin/
│       ├── composer.json
│       ├── database/
│       │   └── factories/
│       │       ├── CategoryFactory.php
│       │       ├── MediaFactory.php
│       │       ├── MenuFactory.php
│       │       ├── PageFactory.php
│       │       ├── PostFactory.php
│       │       └── UserFactory.php
│       └── src/
│           ├── Enums/
│           │   └── UserStatus.php
│           ├── Http/
│           │   └── Controllers/
│           │       └── DashboardController.php
│           ├── Models/
│           │   ├── Client.php
│           │   ├── Guest.php
│           │   └── User.php
│           ├── Providers/
│           │   └── AdminServiceProvider.php
│           └── resources/
│               └── views/
│                   └── dashboard/
│                       └── index.blade.php
├── package.json
├── phpunit.xml
├── postcss.config.js
├── public/
│   ├── .htaccess
│   ├── index.php
│   ├── juzaweb/
│   │   ├── .gitignore
│   │   └── .gitkeep
│   ├── modules/
│   │   ├── .gitignore
│   │   └── .gitkeep
│   ├── robots.txt
│   ├── themes/
│   │   ├── .gitignore
│   │   └── .gitkeep
│   └── vendor/
│       ├── installer/
│       │   ├── css/
│       │   │   ├── sass/
│       │   │   │   ├── _variables.sass
│       │   │   │   └── style.sass
│       │   │   ├── scss/
│       │   │   │   ├── _variables.scss
│       │   │   │   ├── font-awesome/
│       │   │   │   │   ├── _animated.scss
│       │   │   │   │   ├── _bordered-pulled.scss
│       │   │   │   │   ├── _core.scss
│       │   │   │   │   ├── _fixed-width.scss
│       │   │   │   │   ├── _icons.scss
│       │   │   │   │   ├── _larger.scss
│       │   │   │   │   ├── _list.scss
│       │   │   │   │   ├── _mixins.scss
│       │   │   │   │   ├── _path.scss
│       │   │   │   │   ├── _rotated-flipped.scss
│       │   │   │   │   ├── _screen-reader.scss
│       │   │   │   │   ├── _stacked.scss
│       │   │   │   │   ├── _variables.scss
│       │   │   │   │   └── font-awesome.scss
│       │   │   │   └── style.scss
│       │   │   └── style.css
│       │   └── fonts/
│       │       └── FontAwesome.otf
│       └── log-viewer/
│           ├── app.css
│           ├── app.js
│           └── mix-manifest.json
├── resources/
│   ├── lang/
│   │   ├── ca/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── ca.json
│   │   ├── cy/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── cy.json
│   │   ├── da/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── da.json
│   │   ├── el/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── el.json
│   │   ├── en/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── en.json
│   │   └── zh/
│   │       ├── auth.php
│   │       ├── pagination.php
│   │       ├── passwords.php
│   │       └── validation.php
│   └── views/
│       ├── errors/
│       │   ├── 401.blade.php
│       │   ├── 402.blade.php
│       │   ├── 403.blade.php
│       │   ├── 404.blade.php
│       │   ├── 419.blade.php
│       │   ├── 429.blade.php
│       │   ├── 500.blade.php
│       │   ├── 503.blade.php
│       │   ├── layout.blade.php
│       │   └── minimal.blade.php
│       └── vendor/
│           ├── l5-swagger/
│           │   ├── .gitkeep
│           │   └── index.blade.php
│           └── mail/
│               ├── html/
│               │   ├── button.blade.php
│               │   ├── footer.blade.php
│               │   ├── header.blade.php
│               │   ├── layout.blade.php
│               │   ├── message.blade.php
│               │   ├── panel.blade.php
│               │   ├── subcopy.blade.php
│               │   ├── table.blade.php
│               │   └── themes/
│               │       └── default.css
│               └── text/
│                   ├── button.blade.php
│                   ├── footer.blade.php
│                   ├── header.blade.php
│                   ├── layout.blade.php
│                   ├── message.blade.php
│                   ├── panel.blade.php
│                   ├── subcopy.blade.php
│                   └── table.blade.php
├── storage/
│   ├── app/
│   │   └── .gitignore
│   ├── debugbar/
│   │   └── .gitignore
│   ├── framework/
│   │   ├── .gitignore
│   │   ├── cache/
│   │   │   └── .gitignore
│   │   ├── sessions/
│   │   │   └── .gitignore
│   │   ├── testing/
│   │   │   └── .gitignore
│   │   └── views/
│   │       └── .gitignore
│   └── logs/
│       └── .gitignore
├── tailwind.config.js
├── tests/
│   ├── CreatesApplication.php
│   ├── Feature/
│   │   └── ExampleTest.php
│   ├── TestCase.php
│   └── Unit/
│       └── ExampleTest.php
├── themes/
│   └── .gitkeep
├── vite.config.js
└── webpack.mix.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2

[docker-compose.yml]
indent_size = 4


================================================
FILE: .gitattributes
================================================
* text=auto eol=lf

*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php

/.github export-ignore
CHANGELOG.md export-ignore
.styleci.yml export-ignore


================================================
FILE: .github/workflows/release-test.yml
================================================
name: Release Test

on:
  release:
    types: [published]

jobs:
  create-project-test:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-version: ['8.2', '8.3']

    steps:
    - uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e
      with:
        php-version: ${{ matrix.php-version }}
    - name: Create Project
      run: composer create-project --prefer-dist juzaweb/cms blog
    - name: Copy .env
      working-directory: ./blog
      run: php -r "file_exists('.env') || copy('.env.example', '.env');"
    - name: Generate key
      working-directory: ./blog
      run: php artisan key:generate
    - name: Directory Permissions
      working-directory: ./blog
      run: chmod -R 777 storage bootstrap/cache
    - name: Create Database
      working-directory: ./blog
      run: |
        mkdir -p database
        touch database/database.sqlite
    - name: Install
      working-directory: ./blog
      run: |
        php artisan migrate
        touch storage/app/installed
        php artisan theme:publish itech
      env:
        DB_CONNECTION: sqlite
        DB_DATABASE: database/database.sqlite
    - name: Execute tests (Unit and Feature tests) via PHPUnit/Pest
      working-directory: ./blog
      env:
        DB_CONNECTION: sqlite
        DB_DATABASE: database/database.sqlite
      run: php artisan test
    - name: Execute pint
      run: vendor/bin/pint --test


================================================
FILE: .github/workflows/test.yml
================================================
name: Test

on:
  push:
    branches: [ "develop" ]
  pull_request:
    branches: [ "master", "develop" ]

jobs:
  tests:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-version: ['8.2', '8.3']

    steps:
    - uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e
      with:
        php-version: ${{ matrix.php-version }}
        extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, pdo_mysql, pdo_pgsql, bcmath, soap, intl, gd, exif, iconv
    - uses: actions/checkout@v4
    - name: Copy .env
      run: php -r "file_exists('.env') || copy('.env.example', '.env');"
    - name: Install Dependencies
      run: composer install --no-progress --prefer-dist
    - name: Generate key
      run: php artisan key:generate
    - name: Directory Permissions
      run: chmod -R 777 storage bootstrap/cache
    - name: Create Database
      run: |
        mkdir -p database
        touch database/database.sqlite
    - name: Install
      run: |
        php artisan migrate
        touch storage/app/installed
      env:
        DB_CONNECTION: sqlite
        DB_DATABASE: database/database.sqlite
    - name: Execute tests (Unit and Feature tests) via PHPUnit/Pest
      env:
        DB_CONNECTION: sqlite
        DB_DATABASE: database/database.sqlite
      run: php artisan test
    - name: Execute pint
      run: vendor/bin/pint --test


================================================
FILE: .gitignore
================================================
/.phpunit.cache
/node_modules
/public/build
/public/hot
/public/storage
/storage/*.key
/storage/pail
/storage/app/installed
/vendor
.env
.env.backup
.env.production
.phpactor.json
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
/auth.json
/.fleet
/.idea
/.nova
/.vscode
/.zed
.DS_Store


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
Contributions are welcome, and are accepted via pull requests.
Please review these guidelines before submitting any pull requests.

- Please follow the [PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
and [PHP-FIG Naming Conventions](https://github.com/php-fig/fig-standards/blob/master/bylaws/002-psr-naming-conventions.md).
- Remember to follow [SemVer](http://semver.org). If you are changing the behavior,
or the public api, you may need to update the docs.
- Make sure that the current tests pass, and if you have added something new, add the tests where relevant.

- Send a coherent commit history, making sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash](http://git-scm.com/book/en/Git-Tools-Rewriting-History) them before submitting.
- You may also need to [rebase](http://git-scm.com/book/en/Git-Branching-Rebasing) to avoid merge conflicts.

StyleCI is set up to automatically check and fix any code style issues.

## Pull Request Process

- Create a personal fork of the project on Github.
- Clone the fork on your local machine. Your remote repo on Github is called `origin`.
- Add the original repository as a remote called `upstream`.
- If you created your fork a while ago be sure to pull upstream changes into your local repository.
- Create a new branch to work on! Branch from `develop`.
- Implement/fix your feature, comment your code.
- Follow the code style ps2 and ps4 for your code
- Write or adapt tests as needed.
- Squash your commits into a single commit with git's [interactive rebase](https://help.github.com/articles/interactive-rebase)
- Push your branch to your fork on Github, the remote `origin`.
- From your fork open a pull request in the correct branch. Target the project's `develop` branch.
- Once the pull request is approved and merged you can pull the changes from `upstream` to your local repo and delete
your extra branch.


================================================
FILE: LICENSE.md
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: README.md
================================================
Juzaweb CMS - Laravel CMS for Your Project
=====================================

## About
![https://buymeacoffee.com/juzaweb](https://raw.githubusercontent.com/juzaweb/core/refs/heads/master/assets/public/images/thumbnail.png)
[![Total Downloads](https://img.shields.io/packagist/dt/juzaweb/cms.svg?style=social)](https://packagist.org/packages/juzaweb/cms)
[![GitHub Repo stars](https://img.shields.io/github/stars/juzaweb/cms?style=social)](https://github.com/juzaweb/cms)
[![GitHub followers](https://img.shields.io/github/followers/juzaweb?style=social)](https://github.com/juzaweb)
[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCo6Dz9HjjBOJpgWsxkln0-A?style=social)](https://www.youtube.com/@juzaweb)

- [Juzaweb CMS](https://juzaweb.com/cms) is a Content Management System (CMS) like WordPress developed based on Laravel Framework 11 and web platform whose sole purpose is to make your development workflow simple again.
- Juzaweb CMS is a [Laravel CMS](https://juzaweb.com/cms) was engineered to be easy — for both developers and users. Project develop by Juzaweb Team.

## Documentation

You'll find the documentation on https://juzaweb.com/documentation/juzaweb/core/5.x.

Find yourself stuck using the CMS? Found a bug? Do you have general questions or suggestions for improving the CMS? Feel free to [create an issue on GitHub](https://github.com/juzaweb/cms/issues), we'll try to address it as soon as possible.

Video Tutorial: https://www.youtube.com/@juzaweb/videos

## Requirements
- The modules package requires:
    - PHP 8.2 or higher
    - MySql 8.0 or higher

## Install
### Create project with composer
```
composer create-project --prefer-dist juzaweb/cms blog
```
### Install

Config database in your `.env` file, and run:

```
php artisan juzaweb:install
```

## Contributing
- Contributions are welcome, and are accepted via pull requests. Please review these guidelines before submitting any pull requests.
[https://github.com/juzaweb/cms/blob/master/CONTRIBUTING.md](https://github.com/juzaweb/cms/blob/master/CONTRIBUTING.md)

## Features
- [x] File manager
- [x] Plugins
- [x] Themes
- [x] Theme Widgets
- [x] Menu builder by post type
- [x] Logs view
- [x] Page block
- [ ] Upload themes
- [ ] Upload plugins
- [ ] **Network (multisite) support**
- [x] Multisite languages
- [x] Social login
  - [x] Google
  - [x] Facebook
  - [x] Tweater
  - [x] Github
  - [x] Instagram
- [ ] User Permission
  - [ ] Check permisson menu
  - [ ] Policies
  - [ ] Check permisson button in views
- [x] Media manager admin page
- [ ] Short Code
- [x] Add image from url
- [ ] Quick edit
- [ ] Preview post
- [ ] Activity logs
- [ ] **Api Support**

## Backend Javascript libraries
- Jquery
- Bootstrap 4
- select2
- font-awesome

## Buy me coffee
[![Juzaweb Buy me coffee](https://i.imgur.com/MAqboRu.png)](https://buymeacoffee.com/juzaweb)


================================================
FILE: app/Console/Commands/.gitkeep
================================================


================================================
FILE: app/Console/Kernel.php
================================================
<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     *
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // $schedule->command('passport:purge')->hourly();
    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}


================================================
FILE: app/Providers/AppServiceProvider.php
================================================
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        //
    }
}


================================================
FILE: artisan
================================================
#!/usr/bin/env php
<?php

use Symfony\Component\Console\Input\ArgvInput;

define('LARAVEL_START', microtime(true));

// Register the Composer autoloader...
require __DIR__.'/vendor/autoload.php';

// Bootstrap Laravel and handle the command...
$status = (require_once __DIR__.'/bootstrap/app.php')
    ->handleCommand(new ArgvInput);

exit($status);


================================================
FILE: bootstrap/app.php
================================================
<?php

use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Http\Request;
use Juzaweb\Modules\Core\Application;
use Juzaweb\Modules\Core\Http\Middleware\Authenticate;
use Juzaweb\Modules\Core\Http\Middleware\Captcha;
use Juzaweb\Modules\Core\Http\Middleware\EnsureEmailIsVerified;
use Juzaweb\Modules\Core\Http\Middleware\ForceSchemeUrl;
use Juzaweb\Modules\Core\Http\Middleware\ValidateSignature;
use Laravel\Passport\Http\Middleware\CheckTokenForAnyScope;

return Application::configure(basePath: dirname(__DIR__))
    ->withMiddleware(
        function (Middleware $middleware) {
            $middleware->redirectGuestsTo(
                fn (Request $request) => route('login', ['redirect' => $request->fullUrl()])
            );

            $middleware->alias([
                'auth' => Authenticate::class,
                'verified' => EnsureEmailIsVerified::class,
                'captcha' => Captcha::class,
                'signed' => ValidateSignature::class,
                'scope' => CheckTokenForAnyScope::class,
            ]);

            if (! env('VERIFY_TOKEN', true)) {
                $middleware->validateCsrfTokens(except: ['*']);
            }

            $middleware->append(ForceSchemeUrl::class);
        }
    )
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();


================================================
FILE: bootstrap/cache/.gitignore
================================================
*
!.gitignore


================================================
FILE: bootstrap/providers.php
================================================
<?php

use App\Providers\AppServiceProvider;
use Juzaweb\Modules\Admin\Providers\AdminServiceProvider;

return [
    AdminServiceProvider::class,
    AppServiceProvider::class,
];


================================================
FILE: changelog.md
================================================
### v5.0.0 
* build(deps): update composer dependencies and regenerate the lock file.
* refactor(ci): move create-project-test job to a new workflow triggered on release publication
* feat(ci): add job to test fresh project installation across PHP versions
* feat: enable Juzaweb core, translations, and permission service providers by uncommenting their registrations.
* feat: register new AppServiceProvider and comment out core module providers in bootstrap.
* ci(composer): optimize composer install in CI with `--no-progress` and `--prefer-dist` flags.
* ci(workflow): run tests against multiple PHP versions
* ci(workflow): Simplify composer install command in test workflow.
* feat(ads-manager, blog): implement video ad testing and configure blog module frontend assets
* feat(readme): update features list to reflect multisite language support
* docs(README): update project title capitalization and refine feature list
* docs(readme): remove outdated documentation link and detailed API support checklist
* feat(core): Add Juzaweb core initialization logic and update default environment variables in example configuration.
* feat(s3): add `stream_route` configuration option to serve media files through an application route.
* docs: update README with documentation links, system requirements, and remove demo site information.
* docs(readme): Update JuzaWeb and documentation links, and remove obsolete sections for plugins, themes, and changelogs.
* chore(composer): Remove imagick extension from required dependencies
* chore(composer): remove composer.lock file
* chore(composer): add local path repository for admin module and update lock file
* refactor(admin): make Guest model extend Core Guest model for shared implementation.
* ci: Adjust CI workflow to publish theme and remove local path Composer repositories.
* chore(ci): Add database migration and installation steps to the test workflow.
* refactor(ci): rename workflow job from laravel-tests to tests
* chore(composer): Add Juzaweb API repository.
* chore: Update composer dependencies to include `juzaweb/story-sharing` and centralize PHPUnit test directories.
* feat: add juzaweb/story-sharing package, new composer repository, and example unit/feature tests.
* feat: add juzaweb/story-sharing module and remove unused member authentication configurations.
* feat: add Ads Manager and Blog modules, and iTech theme
* chore(dependencies): remove composer.lock file
* Update the required version for juzaweb/blog and adjust the autoload configuration.
* Remove unused components and routes from Itech theme
* Update composer.json description and add .gitkeep files for modules and themes
* Add test workflow configuration
* Update PHP version in Laravel workflow
* tada: Version 5.x
* Update README.md
* Update require extention
* :bug: Fix app path
* :+1: Update CMS
* :memo: Update readme
* Update create-project.yml
* Update README.md
* Update create-project.yml
* Update README.md
* Update create-project.yml
* :+1: Update CMS
* :+1: Testing env
* :+1: Update modules
* :+1: Update gitignore
* Update create-project.yml
* :bug: Fix test project
* :+1: Disable test update
* :tada: Update modules 1.0.3
* :bug: Fix tests path
* :memo: Update readme
* :bug: Fix path test ci/cd
* :truck: Update .gitignore
* :+1: Update readme
* :truck: Remove example plugin
* :bug: Fix unit test autoload
* :+1: Import ckeditor
* :+1: Show breadcrumb
* :truck: Controller truck
* :+1: Stats builder
* :+1: Left menu inertia
* :+1: Import bootstrap
* :+1: Import js for old js
* :+1: Compile plugin react with vite
* :truck: Move resource js
* :truck: Update gitignore
* :truck: Move modules folder
* :truck: Remove resources views
* :truck: Move folder modules



================================================
FILE: composer.json
================================================
{
    "name": "juzaweb/cms",
    "type": "project",
    "homepage": "https://juzaweb.com",
    "description": "Juzaweb CMS is a Content Management System (CMS) developed based on Laravel Framework and web platform whose sole purpose is to make your development workflow simple again. Project develop by Juzaweb",
    "keywords": [
        "framework",
        "laravel",
        "laravel cms",
        "laravel cms like wordpress",
        "cms like wordpress",
        "juzaweb",
        "juzacms"
    ],
    "license": "MIT",
    "require": {
        "php": "^8.2",
        "ext-curl": "*",
        "ext-dom": "*",
        "ext-fileinfo": "*",
        "ext-json": "*",
        "ext-libxml": "*",
        "ext-openssl": "*",
        "ext-pdo": "*",
        "ext-simplexml": "*",
        "ext-xmlwriter": "*",
        "ext-zip": "*",
        "composer/installers": "^2.3",
        "firebase/php-jwt": "^6.0",
        "juzaweb/admin": "@dev",
        "juzaweb/api": "^1.0",
        "juzaweb/blog": "^1.0",
        "juzaweb/core": "^5.0",
        "juzaweb/installer": "^1.0",
        "laravel/framework": "^11.31",
        "laravel/passport": "^13.6",
        "laravel/tinker": "^2.9",
        "opcodesio/log-viewer": "^3.21",
        "symfony/cache": "^6.0"
    },
    "require-dev": {
        "fakerphp/faker": "^1.23",
        "juzaweb/dev-tool": "^2.0",
        "laravel/pail": "^1.1",
        "laravel/pint": "^1.13",
        "laravel/sail": "^1.26",
        "mockery/mockery": "^1.6",
        "nunomaduro/collision": "^8.1",
        "phpunit/phpunit": "^11.0.1"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-update-cmd": [
            "@php artisan core:publish --force"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi",
            "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
            "@php artisan migrate --graceful --ansi"
        ],
        "dev": [
            "Composer\\Config::disableProcessTimeout",
            "npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        },
        "installer-types": ["juzaweb-module", "juzaweb-theme"]
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true,
        "allow-plugins": {
            "composer/installers": true,
            "pestphp/pest-plugin": true,
            "php-http/discovery": true
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "repositories": [
        {
            "type": "path",
            "url": "./modules/*"
        },
        {
            "type": "path",
            "url": "./themes/*"
        }
    ]
}


================================================
FILE: config/analytics.php
================================================
<?php

return [

    /*
     * The property id of which you want to display data.
     */
    'property_id' => env('ANALYTICS_PROPERTY_ID'),

    /*
     * Path to the client secret json file. Take a look at the README of this package
     * to learn how to get this file. You can also pass the credentials as an array
     * instead of a file path.
     */
    '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 its 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',
    ],
];


================================================
FILE: config/app.php
================================================
<?php

use Illuminate\Auth\AuthServiceProvider;
use Illuminate\Auth\Passwords\PasswordResetServiceProvider;
use Illuminate\Broadcasting\BroadcastServiceProvider;
use Illuminate\Bus\BusServiceProvider;
use Illuminate\Cache\CacheServiceProvider;
use Illuminate\Cookie\CookieServiceProvider;
use Illuminate\Database\DatabaseServiceProvider;
use Illuminate\Encryption\EncryptionServiceProvider;
use Illuminate\Filesystem\FilesystemServiceProvider;
use Illuminate\Foundation\Providers\ConsoleSupportServiceProvider;
use Illuminate\Foundation\Providers\FoundationServiceProvider;
use Illuminate\Hashing\HashServiceProvider;
use Illuminate\Mail\MailServiceProvider;
use Illuminate\Notifications\NotificationServiceProvider;
use Illuminate\Pagination\PaginationServiceProvider;
use Illuminate\Pipeline\PipelineServiceProvider;
use Illuminate\Queue\QueueServiceProvider;
use Illuminate\Redis\RedisServiceProvider;
use Illuminate\Session\SessionServiceProvider;
use Illuminate\Support\Facades\Facade;
use Illuminate\Validation\ValidationServiceProvider;
use Illuminate\View\ViewServiceProvider;
use Spatie\TranslationLoader\TranslationServiceProvider;

return [

    /*
    |--------------------------------------------------------------------------
    | Application Name
    |--------------------------------------------------------------------------
    |
    | This value is the name of your application, which will be used when the
    | framework needs to place the application's name in a notification or
    | other UI elements where an application name needs to be displayed.
    |
    */

    'name' => env('APP_NAME', 'Juzaweb'),

    /*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services the application utilizes. Set this in your ".env" file.
    |
    */

    'env' => env('APP_ENV', 'production'),

    /*
    |--------------------------------------------------------------------------
    | Application Debug Mode
    |--------------------------------------------------------------------------
    |
    | When your application is in debug mode, detailed error messages with
    | stack traces will be shown on every error that occurs within your
    | application. If disabled, a simple generic error page is shown.
    |
    */

    'debug' => (bool) env('APP_DEBUG', false),

    /*
    |--------------------------------------------------------------------------
    | Application URL
    |--------------------------------------------------------------------------
    |
    | This URL is used by the console to properly generate URLs when using
    | the Artisan command line tool. You should set this to the root of
    | the application so that it's available within Artisan commands.
    |
    */

    'url' => env('APP_URL', 'http://localhost'),

    'mix_url' => env('MIX_ASSET_URL'),

    /*
    |--------------------------------------------------------------------------
    | Application Timezone
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default timezone for your application, which
    | will be used by the PHP date and date-time functions. The timezone
    | is set to "UTC" by default as it is suitable for most use cases.
    |
    */

    'timezone' => env('APP_TIMEZONE', 'UTC'),

    /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by Laravel's translation / localization methods. This option can be
    | set to any locale for which you plan to have translation strings.
    |
    */

    'locale' => env('APP_LOCALE', 'en'),

    'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),

    'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),

    /*
    |--------------------------------------------------------------------------
    | Token Verification
    |--------------------------------------------------------------------------
    |
    | This option controls whether token verification is enabled for API
    | requests. When enabled, requests must include a valid jw-token.
    | You can disable this for development or testing purposes.
    |
    | Default: true
    |
    */

    'verify_token' => (bool) env('VERIFY_TOKEN', true),

    /*
    |--------------------------------------------------------------------------
    | Encryption Key
    |--------------------------------------------------------------------------
    |
    | This key is utilized by Laravel's encryption services and should be set
    | to a random, 32 character string to ensure that all encrypted values
    | are secure. You should do this prior to deploying the application.
    |
    */

    'cipher' => 'AES-256-CBC',

    'key' => env('APP_KEY'),

    'previous_keys' => [
        ...array_filter(
            explode(',', env('APP_PREVIOUS_KEYS', ''))
        ),
    ],

    /*
    |--------------------------------------------------------------------------
    | Maintenance Mode Driver
    |--------------------------------------------------------------------------
    |
    | These configuration options determine the driver used to determine and
    | manage Laravel's "maintenance mode" status. The "cache" driver will
    | allow maintenance mode to be controlled across multiple machines.
    |
    | Supported drivers: "file", "cache"
    |
    */

    'maintenance' => [
        'driver' => env('APP_MAINTENANCE_DRIVER', 'file'),
        'store' => env('APP_MAINTENANCE_STORE', 'database'),
    ],

    'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        AuthServiceProvider::class,
        BroadcastServiceProvider::class,
        BusServiceProvider::class,
        CacheServiceProvider::class,
        ConsoleSupportServiceProvider::class,
        CookieServiceProvider::class,
        DatabaseServiceProvider::class,
        EncryptionServiceProvider::class,
        FilesystemServiceProvider::class,
        FoundationServiceProvider::class,
        HashServiceProvider::class,
        MailServiceProvider::class,
        NotificationServiceProvider::class,
        PaginationServiceProvider::class,
        PipelineServiceProvider::class,
        QueueServiceProvider::class,
        RedisServiceProvider::class,
        PasswordResetServiceProvider::class,
        SessionServiceProvider::class,
        TranslationServiceProvider::class,
        ValidationServiceProvider::class,
        ViewServiceProvider::class,
        // App Service Providers
    ],

    'aliases' => Facade::defaultAliases()->merge(
        [
            //
        ]
    )->toArray(),

];


================================================
FILE: config/auth.php
================================================
<?php

use Juzaweb\Modules\Admin\Models\User;
use Juzaweb\Modules\Core\Models\UserSocialConnection;

return [

    /*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option defines the default authentication "guard" and password
    | reset "broker" for your application. You may change these values
    | as required, but they're a perfect start for most applications.
    |
    */

    'defaults' => [
        'guard' => env('AUTH_GUARD', 'web'),
        'passwords' => env('AUTH_PASSWORD_BROKER', 'users'),
    ],

    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | which utilizes session storage plus the Eloquent user provider.
    |
    | All authentication guards have a user provider, which defines how the
    | users are actually retrieved out of your database or other storage
    | system used by the application. Typically, Eloquent is utilized.
    |
    | Supported: "session"
    |
    */

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver' => 'juzaweb',
            'provider' => 'users',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication guards have a user provider, which defines how the
    | users are actually retrieved out of your database or other storage
    | system used by the application. Typically, Eloquent is utilized.
    |
    | If you have multiple user tables or models you may configure multiple
    | providers to represent the model / table. These providers may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => env('AUTH_MODEL', User::class),
            'social_connection_model' => UserSocialConnection::class,
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Resetting Passwords
    |--------------------------------------------------------------------------
    |
    | These configuration options specify the behavior of Laravel's password
    | reset functionality, including the table utilized for token storage
    | and the user provider that is invoked to actually retrieve users.
    |
    | The expiry time is the number of minutes that each reset token will be
    | considered valid. This security feature keeps tokens short-lived so
    | they have less time to be guessed. You may change this as needed.
    |
    | The throttle setting is the number of seconds a user must wait before
    | generating more password reset tokens. This prevents the user from
    | quickly generating a very large amount of password reset tokens.
    |
    */

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'),
            'expire' => 60,
            'throttle' => 60,
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Password Confirmation Timeout
    |--------------------------------------------------------------------------
    |
    | Here you may define the amount of seconds before a password confirmation
    | window expires and users are asked to re-enter their password via the
    | confirmation screen. By default, the timeout lasts for three hours.
    |
    */

    'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800),

];


================================================
FILE: config/cache.php
================================================
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Cache Store
    |--------------------------------------------------------------------------
    |
    | This option controls the default cache store that will be used by the
    | framework. This connection is utilized if another isn't explicitly
    | specified when running a cache operation inside the application.
    |
    */

    'default' => env('CACHE_STORE', 'database'),

    /*
    |--------------------------------------------------------------------------
    | Cache Stores
    |--------------------------------------------------------------------------
    |
    | Here you may define all the cache "stores" for your application as
    | well as their drivers. You may even define multiple stores for the
    | same cache driver to group types of items stored in your caches.
    |
    | Supported drivers: "array", "database", "file", "memcached",
    |                    "redis", "dynamodb", "octane", "null"
    |
    */

    'stores' => [

        'array' => [
            'driver' => 'array',
            'serialize' => false,
        ],

        'database' => [
            'driver' => 'database',
            'connection' => env('DB_CACHE_CONNECTION'),
            'table' => env('DB_CACHE_TABLE', 'cache'),
            'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'),
            'lock_table' => env('DB_CACHE_LOCK_TABLE'),
        ],

        'file' => [
            'driver' => 'file',
            'path' => storage_path('framework/cache/data'),
            'lock_path' => storage_path('framework/cache/data'),
        ],

        'memcached' => [
            'driver' => 'memcached',
            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
            'sasl' => [
                env('MEMCACHED_USERNAME'),
                env('MEMCACHED_PASSWORD'),
            ],
            'options' => [
                // Memcached::OPT_CONNECT_TIMEOUT => 2000,
            ],
            'servers' => [
                [
                    'host' => env('MEMCACHED_HOST', '127.0.0.1'),
                    'port' => env('MEMCACHED_PORT', 11211),
                    'weight' => 100,
                ],
            ],
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => env('REDIS_CACHE_CONNECTION', 'cache'),
            'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'),
        ],

        'dynamodb' => [
            'driver' => 'dynamodb',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
            'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
            'endpoint' => env('DYNAMODB_ENDPOINT'),
        ],

        'octane' => [
            'driver' => 'octane',
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Cache Key Prefix
    |--------------------------------------------------------------------------
    |
    | When utilizing the APC, database, memcached, Redis, and DynamoDB cache
    | stores, there might be other applications using the same cache. For
    | that reason, you may prefix every cache key to avoid collisions.
    |
    */

    'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'juzaweb'), '_').'_cache_'),

];


================================================
FILE: config/cors.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Cross-Origin Resource Sharing (CORS) Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure your settings for cross-origin resource sharing
    | or "CORS". This determines what cross-origin operations may execute
    | in web browsers. You are free to adjust these settings as needed.
    |
    | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    |
    */

    'paths' => ['api/*', 'oauth/token'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => false,

];


================================================
FILE: config/database.php
================================================
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for database operations. This is
    | the connection which will be utilized unless another connection
    | is explicitly specified when you execute a query / statement.
    |
    */

    'default' => env('DB_CONNECTION', 'sqlite'),

    /*
    |--------------------------------------------------------------------------
    | Database Connections
    |--------------------------------------------------------------------------
    |
    | Below are all of the database connections defined for your application.
    | An example configuration is provided for each database system which
    | is supported by Laravel. You're free to add / remove connections.
    |
    */

    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DB_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
            'busy_timeout' => null,
            'journal_mode' => null,
            'synchronous' => null,
        ],

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DB_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => env('DB_CHARSET', 'utf8mb4'),
            'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'mariadb' => [
            'driver' => 'mariadb',
            'url' => env('DB_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => env('DB_CHARSET', 'utf8mb4'),
            'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'pgsql' => [
            'driver' => 'pgsql',
            'url' => env('DB_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => env('DB_CHARSET', 'utf8'),
            'prefix' => '',
            'prefix_indexes' => true,
            'search_path' => 'public',
            'sslmode' => 'prefer',
        ],

        'sqlsrv' => [
            'driver' => 'sqlsrv',
            'url' => env('DB_URL'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => env('DB_CHARSET', 'utf8'),
            'prefix' => '',
            'prefix_indexes' => true,
            // 'encrypt' => env('DB_ENCRYPT', 'yes'),
            // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'),
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Migration Repository Table
    |--------------------------------------------------------------------------
    |
    | This table keeps track of all the migrations that have already run for
    | your application. Using this information, we can determine which of
    | the migrations on disk haven't actually been run on the database.
    |
    */

    'migrations' => [
        'table' => 'migrations',
        'update_date_on_publish' => true,
    ],

    /*
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer body of commands than a typical key-value system
    | such as Memcached. You may define your connection settings here.
    |
    */

    'redis' => [

        'client' => env('REDIS_CLIENT', 'phpredis'),

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
        ],

        'default' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'username' => env('REDIS_USERNAME'),
            'password' => env('REDIS_PASSWORD'),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_DB', '0'),
        ],

        'cache' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'username' => env('REDIS_USERNAME'),
            'password' => env('REDIS_PASSWORD'),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_CACHE_DB', '1'),
        ],

    ],

];


================================================
FILE: config/datatables.php
================================================
<?php

use Yajra\DataTables\ApiResourceDataTable;
use Yajra\DataTables\CollectionDataTable;
use Yajra\DataTables\EloquentDataTable;
use Yajra\DataTables\QueryDataTable;

return [
    /*
     * DataTables search options.
     */
    'search' => [
        /*
         * Smart search will enclose search keyword with wildcard string "%keyword%".
         * SQL: column LIKE "%keyword%"
         */
        'smart' => true,

        /*
         * Multi-term search will explode search keyword using spaces resulting into multiple term search.
         */
        'multi_term' => true,

        /*
         * Case insensitive will search the keyword in lower case format.
         * SQL: LOWER(column) LIKE LOWER(keyword)
         */
        'case_insensitive' => true,

        /*
         * Wild card will add "%" in between every characters of the keyword.
         * SQL: column LIKE "%k%e%y%w%o%r%d%"
         */
        'use_wildcards' => false,

        /*
         * Perform a search which starts with the given keyword.
         * SQL: column LIKE "keyword%"
         */
        'starts_with' => false,
    ],

    /*
     * DataTables internal index id response column name.
     */
    'index_column' => 'DT_RowIndex',

    /*
     * List of available builders for DataTables.
     * This is where you can register your custom DataTables builder.
     */
    'engines' => [
        'eloquent' => EloquentDataTable::class,
        'query' => QueryDataTable::class,
        'collection' => CollectionDataTable::class,
        'resource' => ApiResourceDataTable::class,
    ],

    /*
     * DataTables accepted builder to engine mapping.
     * This is where you can override which engine a builder should use
     * Note, only change this if you know what you are doing!
     */
    'builders' => [
        // Illuminate\Database\Eloquent\Relations\Relation::class => 'eloquent',
        // Illuminate\Database\Eloquent\Builder::class            => 'eloquent',
        // Illuminate\Database\Query\Builder::class               => 'query',
        // Illuminate\Support\Collection::class                   => 'collection',
    ],

    /*
     * Nulls last sql pattern for PostgreSQL & Oracle.
     * For MySQL, use 'CASE WHEN :column IS NULL THEN 1 ELSE 0 END, :column :direction'
     */
    'nulls_last_sql' => ':column :direction NULLS LAST',

    /*
     * User friendly message to be displayed on user if error occurs.
     * Possible values:
     * null             - The exception message will be used on error response.
     * 'throw'          - Throws a \Yajra\DataTables\Exceptions\Exception. Use your custom error handler if needed.
     * 'custom message' - Any friendly message to be displayed to the user. You can also use translation key.
     */
    'error' => env('DATATABLES_ERROR', null),

    /*
     * Default columns definition of DataTable utility functions.
     */
    'columns' => [
        /*
         * List of columns hidden/removed on json response.
         */
        'excess' => ['rn', 'row_num'],

        /*
         * List of columns to be escaped. If set to *, all columns are escape.
         * Note: You can set the value to empty array to disable XSS protection.
         */
        'escape' => '*',

        /*
         * List of columns that are allowed to display html content.
         * Note: Adding columns to list will make us available to XSS attacks.
         */
        'raw' => ['action'],

        /*
         * List of columns are forbidden from being searched/sorted.
         */
        'blacklist' => ['password', 'remember_token'],

        /*
         * List of columns that are only allowed for search/sort.
         * If set to *, all columns are allowed.
         */
        'whitelist' => '*',
    ],

    /*
     * JsonResponse header and options config.
     */
    'json' => [
        'header' => [],
        'options' => 0,
    ],

    /*
     * Default condition to determine if a parameter is a callback or not.
     * Callbacks needs to start by those terms, or they will be cast to string.
     */
    'callback' => ['$', '$.', 'function'],
];


================================================
FILE: config/debugbar.php
================================================
<?php

return [

    /*
     |--------------------------------------------------------------------------
     | Debugbar Settings
     |--------------------------------------------------------------------------
     |
     | Debugbar is enabled by default, when debug is set to true in app.php.
     | You can override the value by setting enable to true or false instead of null.
     |
     | You can provide an array of URI's that must be ignored (eg. 'api/*')
     |
     */

    'enabled' => env('DEBUGBAR_ENABLED', false),
    'except' => [
        'telescope*',
        'horizon*',
    ],

    /*
     |--------------------------------------------------------------------------
     | Storage settings
     |--------------------------------------------------------------------------
     |
     | DebugBar stores data for session/ajax requests.
     | You can disable this, so the debugbar stores data in headers/session,
     | but this can cause problems with large data collectors.
     | By default, file storage (in the storage folder) is used. Redis and PDO
     | can also be used. For PDO, run the package migrations first.
     |
     | Warning: Enabling storage.open will allow everyone to access previous
     | request, do not enable open storage in publicly available environments!
     | Specify a callback if you want to limit based on IP or authentication.
     | Leaving it to null will allow localhost only.
     */
    'storage' => [
        'enabled' => true,
        'open' => env('DEBUGBAR_OPEN_STORAGE'), // bool/callback.
        'driver' => 'file', // redis, file, pdo, socket, custom
        'path' => storage_path('debugbar'), // For file driver
        'connection' => null,   // Leave null for default connection (Redis/PDO)
        'provider' => '', // Instance of StorageInterface for custom driver
        'hostname' => '127.0.0.1', // Hostname to use with the "socket" driver
        'port' => 2304, // Port to use with the "socket" driver
    ],

    /*
    |--------------------------------------------------------------------------
    | Editor
    |--------------------------------------------------------------------------
    |
    | Choose your preferred editor to use when clicking file name.
    |
    | Supported: "phpstorm", "vscode", "vscode-insiders", "vscode-remote",
    |            "vscode-insiders-remote", "vscodium", "textmate", "emacs",
    |            "sublime", "atom", "nova", "macvim", "idea", "netbeans",
    |            "xdebug", "espresso"
    |
    */

    'editor' => env('DEBUGBAR_EDITOR') ?: env('IGNITION_EDITOR', 'phpstorm'),

    /*
    |--------------------------------------------------------------------------
    | Remote Path Mapping
    |--------------------------------------------------------------------------
    |
    | If you are using a remote dev server, like Laravel Homestead, Docker, or
    | even a remote VPS, it will be necessary to specify your path mapping.
    |
    | Leaving one, or both of these, empty or null will not trigger the remote
    | URL changes and Debugbar will treat your editor links as local files.
    |
    | "remote_sites_path" is an absolute base path for your sites or projects
    | in Homestead, Vagrant, Docker, or another remote development server.
    |
    | Example value: "/home/vagrant/Code"
    |
    | "local_sites_path" is an absolute base path for your sites or projects
    | on your local computer where your IDE or code editor is running on.
    |
    | Example values: "/Users/<name>/Code", "C:\Users\<name>\Documents\Code"
    |
    */

    'remote_sites_path' => env('DEBUGBAR_REMOTE_SITES_PATH'),
    'local_sites_path' => env('DEBUGBAR_LOCAL_SITES_PATH', env('IGNITION_LOCAL_SITES_PATH')),

    /*
     |--------------------------------------------------------------------------
     | Vendors
     |--------------------------------------------------------------------------
     |
     | Vendor files are included by default, but can be set to false.
     | This can also be set to 'js' or 'css', to only include javascript or css vendor files.
     | Vendor files are for css: font-awesome (including fonts) and highlight.js (css files)
     | and for js: jquery and highlight.js
     | So if you want syntax highlighting, set it to true.
     | jQuery is set to not conflict with existing jQuery scripts.
     |
     */

    'include_vendors' => true,

    /*
     |--------------------------------------------------------------------------
     | Capture Ajax Requests
     |--------------------------------------------------------------------------
     |
     | The Debugbar can capture Ajax requests and display them. If you don't want this (ie. because of errors),
     | you can use this option to disable sending the data through the headers.
     |
     | Optionally, you can also send ServerTiming headers on ajax requests for the Chrome DevTools.
     |
     | Note for your request to be identified as ajax requests they must either send the header
     | X-Requested-With with the value XMLHttpRequest (most JS libraries send this), or have application/json as a Accept header.
     |
     | By default `ajax_handler_auto_show` is set to true allowing ajax requests to be shown automatically in the Debugbar.
     | Changing `ajax_handler_auto_show` to false will prevent the Debugbar from reloading.
     */

    'capture_ajax' => true,
    'add_ajax_timing' => false,
    'ajax_handler_auto_show' => true,
    'ajax_handler_enable_tab' => true,

    /*
     |--------------------------------------------------------------------------
     | Custom Error Handler for Deprecated warnings
     |--------------------------------------------------------------------------
     |
     | When enabled, the Debugbar shows deprecated warnings for Symfony components
     | in the Messages tab.
     |
     */
    'error_handler' => false,

    /*
     |--------------------------------------------------------------------------
     | Clockwork integration
     |--------------------------------------------------------------------------
     |
     | The Debugbar can emulate the Clockwork headers, so you can use the Chrome
     | Extension, without the server-side code. It uses Debugbar collectors instead.
     |
     */
    'clockwork' => false,

    /*
     |--------------------------------------------------------------------------
     | DataCollectors
     |--------------------------------------------------------------------------
     |
     | Enable/disable DataCollectors
     |
     */

    'collectors' => [
        'phpinfo' => true,  // Php version
        'messages' => true,  // Messages
        'time' => true,  // Time Datalogger
        'memory' => true,  // Memory usage
        'exceptions' => true,  // Exception displayer
        'log' => true,  // Logs from Monolog (merged in messages if enabled)
        'db' => true,  // Show database (PDO) queries and bindings
        'views' => true,  // Views with their data
        'route' => true,  // Current route information
        'auth' => false, // Display Laravel authentication status
        'gate' => true,  // Display Laravel Gate checks
        'session' => true,  // Display session data
        'symfony_request' => true,  // Only one can be enabled..
        'mail' => true,  // Catch mail messages
        'laravel' => false, // Laravel version and environment
        'events' => false, // All events fired
        'default_request' => false, // Regular or special Symfony request logger
        'logs' => false, // Add the latest log messages
        'files' => false, // Show the included files
        'config' => false, // Display config settings
        'cache' => false, // Display cache events
        'models' => true,  // Display models
        'livewire' => true,  // Display Livewire (when available)
        'jobs' => false, // Display dispatched jobs
    ],

    /*
     |--------------------------------------------------------------------------
     | Extra options
     |--------------------------------------------------------------------------
     |
     | Configure some DataCollectors
     |
     */

    'options' => [
        'time' => [
            'memory_usage' => false,  // Calculated by subtracting memory start and end, it may be inaccurate
        ],
        'messages' => [
            'trace' => true,   // Trace the origin of the debug message
        ],
        'memory' => [
            'reset_peak' => false,     // run memory_reset_peak_usage before collecting
            'with_baseline' => false,  // Set boot memory usage as memory peak baseline
            'precision' => 0,          // Memory rounding precision
        ],
        'auth' => [
            'show_name' => true,   // Also show the users name/email in the debugbar
            'show_guards' => true, // Show the guards that are used
        ],
        'db' => [
            'with_params' => true,   // Render SQL with the parameters substituted
            'backtrace' => true,   // Use a backtrace to find the origin of the query in your files.
            'backtrace_exclude_paths' => [],   // Paths to exclude from backtrace. (in addition to defaults)
            'timeline' => false,  // Add the queries to the timeline
            'duration_background' => true,   // Show shaded background on each query relative to how long it took to execute.
            'explain' => [                 // Show EXPLAIN output on queries
                'enabled' => false,
                'types' => ['SELECT'],     // Deprecated setting, is always only SELECT
            ],
            'hints' => false,    // Show hints for common mistakes
            'show_copy' => false,    // Show copy button next to the query,
            'slow_threshold' => false,   // Only track queries that last longer than this time in ms
            'memory_usage' => false,   // Show queries memory usage
            'soft_limit' => 100,      // After the soft limit, no parameters/backtrace are captured
            'hard_limit' => 500,      // After the hard limit, queries are ignored
        ],
        'mail' => [
            'timeline' => false,  // Add mails to the timeline
            'show_body' => true,
        ],
        'views' => [
            'timeline' => false,    // Add the views to the timeline (Experimental)
            'data' => false,        // true for all data, 'keys' for only names, false for no parameters.
            'group' => 50,          // Group duplicate views. Pass value to auto-group, or true/false to force
            'exclude_paths' => [    // Add the paths which you don't want to appear in the views
                'vendor/filament',   // Exclude Filament components by default
            ],
        ],
        'route' => [
            'label' => true,  // show complete route on bar
        ],
        'session' => [
            'hiddens' => [], // hides sensitive values using array paths
        ],
        'symfony_request' => [
            'hiddens' => [], // hides sensitive values using array paths, example: request_request.password
        ],
        'events' => [
            'data' => false, // collect events data, listeners
        ],
        'logs' => [
            'file' => null,
        ],
        'cache' => [
            'values' => true, // collect cache values
        ],
    ],

    /*
     |--------------------------------------------------------------------------
     | Inject Debugbar in Response
     |--------------------------------------------------------------------------
     |
     | Usually, the debugbar is added just before </body>, by listening to the
     | Response after the App is done. If you disable this, you have to add them
     | in your template yourself. See http://phpdebugbar.com/docs/rendering.html
     |
     */

    'inject' => true,

    /*
     |--------------------------------------------------------------------------
     | DebugBar route prefix
     |--------------------------------------------------------------------------
     |
     | Sometimes you want to set route prefix to be used by DebugBar to load
     | its resources from. Usually the need comes from misconfigured web server or
     | from trying to overcome bugs like this: http://trac.nginx.org/nginx/ticket/97
     |
     */
    'route_prefix' => '_debugbar',

    /*
     |--------------------------------------------------------------------------
     | DebugBar route middleware
     |--------------------------------------------------------------------------
     |
     | Additional middleware to run on the Debugbar routes
     */
    'route_middleware' => [],

    /*
     |--------------------------------------------------------------------------
     | DebugBar route domain
     |--------------------------------------------------------------------------
     |
     | By default DebugBar route served from the same domain that request served.
     | To override default domain, specify it as a non-empty value.
     */
    'route_domain' => null,

    /*
     |--------------------------------------------------------------------------
     | DebugBar theme
     |--------------------------------------------------------------------------
     |
     | Switches between light and dark theme. If set to auto it will respect system preferences
     | Possible values: auto, light, dark
     */
    'theme' => env('DEBUGBAR_THEME', 'auto'),

    /*
     |--------------------------------------------------------------------------
     | Backtrace stack limit
     |--------------------------------------------------------------------------
     |
     | By default, the DebugBar limits the number of frames returned by the 'debug_backtrace()' function.
     | If you need larger stacktraces, you can increase this number. Setting it to 0 will result in no limit.
     */
    'debug_backtrace_limit' => 50,
];


================================================
FILE: config/filesystems.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default filesystem disk that should be used
    | by the framework. The "local" disk, as well as a variety of cloud
    | based disks are available to your application for file storage.
    |
    */

    'default' => env('FILESYSTEM_DISK', 'local'),

    /*
    |--------------------------------------------------------------------------
    | Filesystem Disks
    |--------------------------------------------------------------------------
    |
    | Below you may configure as many filesystem disks as necessary, and you
    | may even configure multiple disks for the same driver. Examples for
    | most supported storage drivers are configured here for reference.
    |
    | Supported drivers: "local", "ftp", "sftp", "s3"
    |
    */

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app/private'),
            'serve' => true,
            'throw' => false,
            'report' => false,
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('STORAGE_URL', env('APP_URL').'/storage'),
            'visibility' => 'public',
            'throw' => false,
            'report' => false,
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
            'endpoint' => env('AWS_ENDPOINT'),
            'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
            'throw' => false,
            'report' => false,
        ],

        'cloud' => [
            'driver' => 's3',
            'key' => env('S3_CLOUD_KEY_ID'),
            'secret' => env('S3_CLOUD_SECRET'),
            'region' => env('S3_CLOUD_REGION'),
            'bucket' => env('S3_CLOUD_BUCKET'),
            'endpoint' => env('S3_CLOUD_ENDPOINT'),
            'write_endpoint' => env('S3_CLOUD_WRITE_ENDPOINT'), // Optional custom endpoint for write operations
            'bucket_endpoint' => true,
            'use_path_style_endpoint' => false,
            'throw' => true,
            'visibility' => 'public',
            'url' => env('S3_CLOUD_URL'),
            'proxy_url' => env('S3_CLOUD_PROXY_URL'),
            /**
             * If enabled, media files will be served through a route in the application
             * instead of directly from the cloud storage URL. This can be useful for
             * handling access control, logging, or modifying the response.
             *
             * Default route: /media/{path}
             */
            'stream_route' => (bool) env('S3_CLOUD_STREAM_ROUTE', false),
        ],

        'private' => [
            'driver' => 'local',
            'root' => storage_path('app/private'),
            'throw' => false,
            'report' => false,
        ],

        'tmp' => [
            'driver' => 'local',
            'root' => storage_path('app/tmp'),
            'throw' => false,
            'report' => false,
        ],

        'trash' => [
            'driver' => 'local',
            'root' => storage_path('app/trash'),
            'throw' => false,
            'report' => false,
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Symbolic Links
    |--------------------------------------------------------------------------
    |
    | Here you may configure the symbolic links that will be created when the
    | `storage:link` Artisan command is executed. The array keys should be
    | the locations of the links and the values should be their targets.
    |
    */

    'links' => [
        public_path('storage') => storage_path('app/public'),
    ],

];


================================================
FILE: config/l5-swagger.php
================================================
<?php

use L5Swagger\Generator;
use OpenApi\scan;

return [
    'default' => 'default',
    'documentations' => [
        'default' => [
            'api' => [
                'title' => 'L5 Swagger UI',
            ],

            'routes' => [
                /*
                 * Route for accessing api documentation interface
                 */
                'api' => 'api/documentation',
            ],
            'paths' => [
                /*
                 * Edit to include full URL in ui for assets
                 */
                'use_absolute_path' => env('L5_SWAGGER_USE_ABSOLUTE_PATH', true),

                /*
                * Edit to set path where swagger ui assets should be stored
                */
                'swagger_ui_assets_path' => env('L5_SWAGGER_UI_ASSETS_PATH', 'vendor/swagger-api/swagger-ui/dist/'),

                /*
                 * File name of the generated json documentation file
                 */
                'docs_json' => 'api-docs.json',

                /*
                 * File name of the generated YAML documentation file
                 */
                'docs_yaml' => 'api-docs.yaml',

                /*
                 * Set this to `json` or `yaml` to determine which documentation file to use in UI
                 */
                'format_to_use_for_docs' => env('L5_FORMAT_TO_USE_FOR_DOCS', 'json'),

                /*
                 * Absolute paths to directory containing the swagger annotations are stored.
                 */
                'annotations' => [
                    base_path('vendor/juzaweb/core/src'),
                    base_path('vendor/juzaweb/api/src'),
                    base_path('modules/admin/src'),
                ],
            ],
        ],
    ],
    'defaults' => [
        'routes' => [
            /*
             * Route for accessing parsed swagger annotations.
             */
            'docs' => 'api/docs',

            /*
             * Route for Oauth2 authentication callback.
             */
            'oauth2_callback' => 'callback',

            /*
             * Middleware allows to prevent unexpected access to API documentation
             */
            'middleware' => [
                'api' => [],
                'asset' => [],
                'docs' => [],
                'oauth2_callback' => [],
            ],

            /*
             * Route Group options
             */
            'group_options' => [],
        ],

        'paths' => [
            /*
             * Absolute path to location where parsed annotations will be stored
             */
            'docs' => storage_path('api-docs'),

            /*
             * Absolute path to directory where to export views
             */
            'views' => base_path('resources/views/vendor/l5-swagger'),

            /*
             * Edit to set the api's base path
             */
            'base' => env('L5_SWAGGER_BASE_PATH', null),

            /*
             * Absolute path to directories that should be excluded from scanning
             * @deprecated Please use `scanOptions.exclude`
             * `scanOptions.exclude` overwrites this
             */
            'excludes' => [],
        ],

        'scanOptions' => [
            /**
             * Configuration for default processors. Allows to pass processors configuration to swagger-php.
             *
             * @link https://zircote.github.io/swagger-php/reference/processors.html
             */
            'default_processors_configuration' => [
            /** Example */
            /**
             * 'operationId.hash' => true,
             * 'pathFilter' => [
             * 'tags' => [
             * '/pets/',
             * '/store/',
             * ],
             * ],.
             */
            ],

            /**
             * analyser: defaults to \OpenApi\StaticAnalyser .
             *
             * @see scan
             */
            'analyser' => null,

            /**
             * analysis: defaults to a new \OpenApi\Analysis .
             *
             * @see scan
             */
            'analysis' => null,

            /**
             * Custom query path processors classes.
             *
             * @link https://github.com/zircote/swagger-php/tree/master/Examples/processors/schema-query-parameter
             * @see scan
             */
            'processors' => [
                // new \App\SwaggerProcessors\SchemaQueryParameter(),
            ],

            /**
             * pattern: string       $pattern File pattern(s) to scan (default: *.php) .
             *
             * @see scan
             */
            'pattern' => null,

            /*
             * Absolute path to directories that should be excluded from scanning
             * @note This option overwrites `paths.excludes`
             * @see \OpenApi\scan
             */
            'exclude' => [],

            /*
             * Allows to generate specs either for OpenAPI 3.0.0 or OpenAPI 3.1.0.
             * By default the spec will be in version 3.0.0
             */
            'open_api_spec_version' => env('L5_SWAGGER_OPEN_API_SPEC_VERSION', Generator::OPEN_API_DEFAULT_SPEC_VERSION),
        ],

        /*
         * API security definitions. Will be generated into documentation file.
        */
        'securityDefinitions' => [
            'securitySchemes' => [
                /*
                 * Examples of Security schemes
                 */
                /*
                'api_key_security_example' => [ // Unique name of security
                    'type' => 'apiKey', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
                    'description' => 'A short description for security scheme',
                    'name' => 'api_key', // The name of the header or query parameter to be used.
                    'in' => 'header', // The location of the API key. Valid values are "query" or "header".
                ],
                'oauth2_security_example' => [ // Unique name of security
                    'type' => 'oauth2', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
                    'description' => 'A short description for oauth2 security scheme.',
                    'flow' => 'implicit', // The flow used by the OAuth2 security scheme. Valid values are "implicit", "password", "application" or "accessCode".
                    'authorizationUrl' => 'http://example.com/auth', // The authorization URL to be used for (implicit/accessCode)
                    //'tokenUrl' => 'http://example.com/auth' // The authorization URL to be used for (password/application/accessCode)
                    'scopes' => [
                        'read:projects' => 'read your projects',
                        'write:projects' => 'modify projects in your account',
                    ]
                ],
                */

                /* Open API 3.0 support
                'passport' => [ // Unique name of security
                    'type' => 'oauth2', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
                    'description' => 'Laravel passport oauth2 security.',
                    'in' => 'header',
                    'scheme' => 'https',
                    'flows' => [
                        "password" => [
                            "authorizationUrl" => config('app.url') . '/oauth/authorize',
                            "tokenUrl" => config('app.url') . '/oauth/token',
                            "refreshUrl" => config('app.url') . '/token/refresh',
                            "scopes" => []
                        ],
                    ],
                ],
                'sanctum' => [ // Unique name of security
                    'type' => 'apiKey', // Valid values are "basic", "apiKey" or "oauth2".
                    'description' => 'Enter token in format (Bearer <token>)',
                    'name' => 'Authorization', // The name of the header or query parameter to be used.
                    'in' => 'header', // The location of the API key. Valid values are "query" or "header".
                ],
                */

                'bearerAuth' => [ // Unique name of security
                    'type' => 'oauth2', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
                    'description' => 'Laravel passport oauth2 security.',
                    'in' => 'header',
                    'scheme' => 'https',
                    'flows' => [
                        'authorizationCode' => [
                            'authorizationUrl' => config('app.url').'/oauth/authorize',
                            'tokenUrl' => config('app.url').'/oauth/token',
                            'refreshUrl' => config('app.url').'/oauth/token/refresh',
                            'scopes' => [],
                        ],
                    ],
                ],

                'apiKey' => [ // Unique name of security
                    'type' => 'apiKey', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
                    'description' => 'A short description for security scheme',
                    'name' => 'x-api-key', // The name of the header or query parameter to be used.
                    'in' => 'header', // The location of the API key. Valid values are "query" or "header".
                ],
            ],
            'security' => [
                /*
                 * Examples of Securities
                 */
                [
                    /*
                    'oauth2_security_example' => [
                        'read',
                        'write'
                    ],

                    'passport' => []
                    */
                ],
            ],
        ],

        /*
         * Set this to `true` in development mode so that docs would be regenerated on each request
         * Set this to `false` to disable swagger generation on production
         */
        'generate_always' => env('L5_SWAGGER_GENERATE_ALWAYS', false),

        /*
         * Set this to `true` to generate a copy of documentation in yaml format
         */
        'generate_yaml_copy' => env('L5_SWAGGER_GENERATE_YAML_COPY', false),

        /*
         * Edit to trust the proxy's ip address - needed for AWS Load Balancer
         * string[]
         */
        'proxy' => false,

        /*
         * Configs plugin allows to fetch external configs instead of passing them to SwaggerUIBundle.
         * See more at: https://github.com/swagger-api/swagger-ui#configs-plugin
         */
        'additional_config_url' => null,

        /*
         * Apply a sort to the operation list of each API. It can be 'alpha' (sort by paths alphanumerically),
         * 'method' (sort by HTTP method).
         * Default is the order returned by the server unchanged.
         */
        'operations_sort' => env('L5_SWAGGER_OPERATIONS_SORT', null),

        /*
         * Pass the validatorUrl parameter to SwaggerUi init on the JS side.
         * A null value here disables validation.
         */
        'validator_url' => null,

        /*
         * Swagger UI configuration parameters
         */
        'ui' => [
            'display' => [
                'dark_mode' => env('L5_SWAGGER_UI_DARK_MODE', false),
                /*
                 * Controls the default expansion setting for the operations and tags. It can be :
                 * 'list' (expands only the tags),
                 * 'full' (expands the tags and operations),
                 * 'none' (expands nothing).
                 */
                'doc_expansion' => env('L5_SWAGGER_UI_DOC_EXPANSION', 'none'),

                /**
                 * If set, enables filtering. The top bar will show an edit box that
                 * you can use to filter the tagged operations that are shown. Can be
                 * Boolean to enable or disable, or a string, in which case filtering
                 * will be enabled using that string as the filter expression. Filtering
                 * is case-sensitive matching the filter expression anywhere inside
                 * the tag.
                 */
                'filter' => env('L5_SWAGGER_UI_FILTERS', true), // true | false
            ],

            'authorization' => [
                /*
                 * If set to true, it persists authorization data, and it would not be lost on browser close/refresh
                 */
                'persist_authorization' => env('L5_SWAGGER_UI_PERSIST_AUTHORIZATION', true),

                'oauth2' => [
                    /*
                     * If set to true, adds PKCE to AuthorizationCodeGrant flow
                     */
                    'use_pkce_with_authorization_code_grant' => false,
                ],
            ],
        ],
        /*
         * Constants which can be used in annotations
         */
        'constants' => [
            'L5_SWAGGER_CONST_HOST' => env('L5_SWAGGER_CONST_HOST', 'http://my-default-host.com'),
        ],
    ],
];


================================================
FILE: config/log-viewer.php
================================================
<?php

use Opcodes\LogViewer\Enums\SortingMethod;
use Opcodes\LogViewer\Enums\SortingOrder;
use Opcodes\LogViewer\Enums\Theme;
use Opcodes\LogViewer\Http\Middleware\AuthorizeLogViewer;
use Opcodes\LogViewer\Http\Middleware\EnsureFrontendRequestsAreStateful;

return [

    /*
    |--------------------------------------------------------------------------
    | Log Viewer
    |--------------------------------------------------------------------------
    | Log Viewer can be disabled, so it's no longer accessible via browser.
    |
    */

    'enabled' => env('LOG_VIEWER_ENABLED', true),

    'api_only' => env('LOG_VIEWER_API_ONLY', false),

    'require_auth_in_production' => true,

    /*
    |--------------------------------------------------------------------------
    | Log Viewer Domain
    |--------------------------------------------------------------------------
    | You may change the domain where Log Viewer should be active.
    | If the domain is empty, all domains will be valid.
    |
    */

    'route_domain' => env('NETWORK_DOMAIN'),

    /*
    |--------------------------------------------------------------------------
    | Log Viewer Route
    |--------------------------------------------------------------------------
    | Log Viewer will be available under this URL.
    |
    */

    'route_path' => 'log-viewer',

    /*
    |--------------------------------------------------------------------------
    | Log Viewer Assets Path
    |--------------------------------------------------------------------------
    | The path to the Log Viewer assets.
    |
    */

    'assets_path' => 'vendor/log-viewer',

    /*
    |--------------------------------------------------------------------------
    | Back to system URL
    |--------------------------------------------------------------------------
    | When set, displays a link to easily get back to this URL.
    | Set to `null` to hide this link.
    |
    | Optional label to display for the above URL.
    |
    */

    'back_to_system_url' => config('app.url', null),

    'back_to_system_label' => null, // Displayed by default: "Back to {{ app.name }}"

    /*
    |--------------------------------------------------------------------------
    | Log Viewer time zone.
    |--------------------------------------------------------------------------
    | The time zone in which to display the times in the UI. Defaults to
    | the application's timezone defined in config/app.php.
    |
    */

    'timezone' => null,

    /*
    |--------------------------------------------------------------------------
    | Log Viewer datetime format.
    |--------------------------------------------------------------------------
    | The format used to display timestamps in the UI.
    |
    */

    'datetime_format' => 'Y-m-d H:i:s',

    /*
    |--------------------------------------------------------------------------
    | Log Viewer route middleware.
    |--------------------------------------------------------------------------
    | Optional middleware to use when loading the initial Log Viewer page.
    |
    */

    'middleware' => [
        'web',
        AuthorizeLogViewer::class,
    ],

    /*
    |--------------------------------------------------------------------------
    | Log Viewer API middleware.
    |--------------------------------------------------------------------------
    | Optional middleware to use on every API request. The same API is also
    | used from within the Log Viewer user interface.
    |
    */

    'api_middleware' => [
        EnsureFrontendRequestsAreStateful::class,
        AuthorizeLogViewer::class,
    ],

    'api_stateful_domains' => env('LOG_VIEWER_API_STATEFUL_DOMAINS') ? explode(',', env('LOG_VIEWER_API_STATEFUL_DOMAINS')) : null,

    /*
    |--------------------------------------------------------------------------
    | Log Viewer Remote hosts.
    |--------------------------------------------------------------------------
    | Log Viewer supports viewing Laravel logs from remote hosts. They must
    | be running Log Viewer as well. Below you can define the hosts you
    | would like to show in this Log Viewer instance.
    |
    */

    'hosts' => [
        'local' => [
            'name' => ucfirst(env('APP_ENV', 'local')),
        ],

        // 'staging' => [
        //     'name' => 'Staging',
        //     'host' => 'https://staging.example.com/log-viewer',
        //     'auth' => [      // Example of HTTP Basic auth
        //         'username' => 'username',
        //         'password' => 'password',
        //     ],
        //     'verify_server_certificate' => true,
        // ],
        //
        // 'production' => [
        //     'name' => 'Production',
        //     'host' => 'https://example.com/log-viewer',
        //     'auth' => [      // Example of Bearer token auth
        //         'token' => env('LOG_VIEWER_PRODUCTION_TOKEN'),
        //     ],
        //     'headers' => [
        //         'X-Foo' => 'Bar',
        //     ],
        //     'verify_server_certificate' => true,
        // ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Include file patterns
    |--------------------------------------------------------------------------
    |
    */

    'include_files' => [
        '*.log',
        '**/*.log',

        // You can include paths to other log types as well, such as apache, nginx, and more.
        // This key => value pair can be used to rename and group multiple paths into one folder in the UI.
        // '/var/log/httpd/*' => 'Apache',
        // '/var/log/nginx/*' => 'Nginx',

        // MacOS Apple Silicon logs
        // '/opt/homebrew/var/log/nginx/*',
        // '/opt/homebrew/var/log/httpd/*',
        // '/opt/homebrew/var/log/php-fpm.log',
        // '/opt/homebrew/var/log/postgres*log',
        // '/opt/homebrew/var/log/redis*log',
        // '/opt/homebrew/var/log/supervisor*log',

        // '/absolute/paths/supported',
    ],

    /*
    |--------------------------------------------------------------------------
    | Exclude file patterns.
    |--------------------------------------------------------------------------
    | This will take precedence over included files.
    |
    */

    'exclude_files' => [
        // 'my_secret.log'
    ],

    /*
    |--------------------------------------------------------------------------
    | Hide unknown files.
    |--------------------------------------------------------------------------
    | The include/exclude options above might catch files which are not
    | logs supported by Log Viewer. In that case, you can hide them
    | from the UI and API calls by setting this to true.
    |
    */

    'hide_unknown_files' => true,

    /*
    |--------------------------------------------------------------------------
    |  Shorter stack trace filters.
    |--------------------------------------------------------------------------
    | Lines containing any of these strings will be excluded from the full log.
    | This setting is only active when the function is enabled via the user interface.
    |
    */

    'shorter_stack_trace_excludes' => [
        '/vendor/symfony/',
        '/vendor/laravel/framework/',
        '/vendor/barryvdh/laravel-debugbar/',
    ],

    /*
    |--------------------------------------------------------------------------
    | Cache driver
    |--------------------------------------------------------------------------
    | Cache driver to use for storing the log indices. Indices are used to speed up
    | log navigation. Defaults to your application's default cache driver.
    |
    */

    'cache_driver' => env('LOG_VIEWER_CACHE_DRIVER', null),

    /*
    |--------------------------------------------------------------------------
    | Cache key prefix
    |--------------------------------------------------------------------------
    | Log Viewer prefixes all the cache keys created with this value. If for
    | some reason you would like to change this prefix, you can do so here.
    | The format of Log Viewer cache keys is:
    | {prefix}:{version}:{rest-of-the-key}
    |
    */

    'cache_key_prefix' => 'lv',

    /*
    |--------------------------------------------------------------------------
    | Chunk size when scanning log files lazily
    |--------------------------------------------------------------------------
    | The size in MB of files to scan before updating the progress bar when searching across all files.
    |
    */

    'lazy_scan_chunk_size_in_mb' => 50,

    'strip_extracted_context' => true,

    /*
    |--------------------------------------------------------------------------
    | Per page options
    |--------------------------------------------------------------------------
    | Define the available options for number of results per page
    |
    */

    'per_page_options' => [10, 25, 50, 100],

    /*
    |--------------------------------------------------------------------------
    | Default settings for Log Viewer
    |--------------------------------------------------------------------------
    | These settings determine the default behaviour of Log Viewer. Many of
    | these can be persisted for the user in their browser's localStorage,
    | if the `use_local_storage` option is set to true.
    |
    */

    'defaults' => [

        // Whether to use browser's localStorage to store user preferences.
        // If true, user preferences saved in the browser will take precedence over the defaults below.
        'use_local_storage' => true,

        // Method to sort the folders. Other options: `Alphabetical`, `ModifiedTime`
        'folder_sorting_method' => SortingMethod::ModifiedTime,

        // Order to sort the folders. Other options: `Ascending`, `Descending`
        'folder_sorting_order' => SortingOrder::Descending,

        // Method for sorting log-files into directories. Other options: `Alphabetical`, `ModifiedTime`
        'file_sorting_method' => SortingMethod::ModifiedTime,

        // Order to sort the logs. Other options: `Ascending`, `Descending`
        'log_sorting_order' => SortingOrder::Descending,

        // Number of results per page. Must be one of the above `per_page_options` values
        'per_page' => 25,

        // Color scheme for the Log Viewer. Other options: `System`, `Light`, `Dark`
        'theme' => Theme::System,

        // Whether to enable `Shorter Stack Traces` option by default
        'shorter_stack_traces' => false,

    ],

    /*
    |--------------------------------------------------------------------------
    | Exclude IP from identifiers
    |--------------------------------------------------------------------------
    | By default, file and folder identifiers include the server's IP address
    | to ensure uniqueness. In load-balanced environments with shared storage,
    | this can cause "No results" errors. Set to true to exclude IP addresses
    | from identifier generation for consistent results across servers.
    |
    */

    'exclude_ip_from_identifiers' => env('LOG_VIEWER_EXCLUDE_IP_FROM_IDENTIFIERS', false),

    /*
    |--------------------------------------------------------------------------
    | Root folder prefix
    |--------------------------------------------------------------------------
    | The prefix for log files inside Laravel's `storage/logs` folder.
    | Log Viewer does not show the full path to these files in the UI,
    | but only the filename prefixed with this value.
    |
    */

    'root_folder_prefix' => 'root',
];


================================================
FILE: config/logging.php
================================================
<?php

use Juzaweb\Modules\Core\Logging\AddCustomInformation;
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
use Monolog\Processor\PsrLogMessageProcessor;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Log Channel
    |--------------------------------------------------------------------------
    |
    | This option defines the default log channel that is utilized to write
    | messages to your logs. The value provided here should match one of
    | the channels present in the list of "channels" configured below.
    |
    */

    'default' => env('LOG_CHANNEL', 'stack'),

    /*
    |--------------------------------------------------------------------------
    | Deprecations Log Channel
    |--------------------------------------------------------------------------
    |
    | This option controls the log channel that should be used to log warnings
    | regarding deprecated PHP and library features. This allows you to get
    | your application ready for upcoming major versions of dependencies.
    |
    */

    'deprecations' => [
        'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
        'trace' => env('LOG_DEPRECATIONS_TRACE', false),
    ],

    /*
    |--------------------------------------------------------------------------
    | Log Channels
    |--------------------------------------------------------------------------
    |
    | Here you may configure the log channels for your application. Laravel
    | utilizes the Monolog PHP logging library, which includes a variety
    | of powerful log handlers and formatters that you're free to use.
    |
    | Available drivers: "single", "daily", "slack", "syslog",
    |                    "errorlog", "monolog", "custom", "stack"
    |
    */

    'channels' => [

        'stack' => [
            'driver' => 'stack',
            'channels' => explode(',', env('LOG_STACK', 'single')),
            'ignore_exceptions' => false,
        ],

        'single' => [
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'),
            'level' => env('LOG_LEVEL', 'debug'),
            'replace_placeholders' => true,
        ],

        'daily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/laravel.log'),
            'level' => env('LOG_LEVEL', 'debug'),
            'days' => env('LOG_DAILY_DAYS', 14),
            'replace_placeholders' => true,
            'tap' => [AddCustomInformation::class],
        ],

        'subscription' => [
            'driver' => 'daily',
            'path' => storage_path('logs/subscription.log'),
            'level' => env('LOG_LEVEL', 'debug'),
            'days' => 90,
            'replace_placeholders' => true,
        ],

        'slack' => [
            'driver' => 'slack',
            'url' => env('LOG_SLACK_WEBHOOK_URL'),
            'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'),
            'emoji' => env('LOG_SLACK_EMOJI', ':boom:'),
            'level' => env('LOG_LEVEL', 'critical'),
            'replace_placeholders' => true,
        ],

        'papertrail' => [
            'driver' => 'monolog',
            'level' => env('LOG_LEVEL', 'debug'),
            'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class),
            'handler_with' => [
                'host' => env('PAPERTRAIL_URL'),
                'port' => env('PAPERTRAIL_PORT'),
                'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'),
            ],
            'processors' => [PsrLogMessageProcessor::class],
        ],

        'stderr' => [
            'driver' => 'monolog',
            'level' => env('LOG_LEVEL', 'debug'),
            'handler' => StreamHandler::class,
            'formatter' => env('LOG_STDERR_FORMATTER'),
            'with' => [
                'stream' => 'php://stderr',
            ],
            'processors' => [PsrLogMessageProcessor::class],
        ],

        'syslog' => [
            'driver' => 'syslog',
            'level' => env('LOG_LEVEL', 'debug'),
            'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER),
            'replace_placeholders' => true,
        ],

        'errorlog' => [
            'driver' => 'errorlog',
            'level' => env('LOG_LEVEL', 'debug'),
            'replace_placeholders' => true,
        ],

        'null' => [
            'driver' => 'monolog',
            'handler' => NullHandler::class,
        ],

        'emergency' => [
            'path' => storage_path('logs/laravel.log'),
        ],

    ],

];


================================================
FILE: config/mail.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Mailer
    |--------------------------------------------------------------------------
    |
    | This option controls the default mailer that is used to send all email
    | messages unless another mailer is explicitly specified when sending
    | the message. All additional mailers can be configured within the
    | "mailers" array. Examples of each type of mailer are provided.
    |
    */

    'default' => env('MAIL_MAILER', 'log'),

    /*
    |--------------------------------------------------------------------------
    | Mailer Configurations
    |--------------------------------------------------------------------------
    |
    | Here you may configure all of the mailers used by your application plus
    | their respective settings. Several examples have been configured for
    | you and you are free to add your own as your application requires.
    |
    | Laravel supports a variety of mail "transport" drivers that can be used
    | when delivering an email. You may specify which one you're using for
    | your mailers below. You may also add additional mailers if needed.
    |
    | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2",
    |            "postmark", "resend", "log", "array",
    |            "failover", "roundrobin"
    |
    */

    'mailers' => [

        'smtp' => [
            'transport' => 'smtp',
            'scheme' => env('MAIL_SCHEME'),
            'url' => env('MAIL_URL'),
            'host' => env('MAIL_HOST', '127.0.0.1'),
            'port' => env('MAIL_PORT', 2525),
            'username' => env('MAIL_USERNAME'),
            'password' => env('MAIL_PASSWORD'),
            'timeout' => null,
            'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
        ],

        'ses' => [
            'transport' => 'ses',
        ],

        'postmark' => [
            'transport' => 'postmark',
            // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'),
            // 'client' => [
            //     'timeout' => 5,
            // ],
        ],

        'resend' => [
            'transport' => 'resend',
            'key' => env('RESEND_KEY'),
        ],

        'sendmail' => [
            'transport' => 'sendmail',
            'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
        ],

        'log' => [
            'transport' => 'log',
            'channel' => env('MAIL_LOG_CHANNEL'),
        ],

        'array' => [
            'transport' => 'array',
        ],

        'failover' => [
            'transport' => 'failover',
            'mailers' => [
                'smtp',
                'log',
            ],
        ],

        'roundrobin' => [
            'transport' => 'roundrobin',
            'mailers' => [
                'ses',
                'postmark',
            ],
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Global "From" Address
    |--------------------------------------------------------------------------
    |
    | You may wish for all emails sent by your application to be sent from
    | the same address. Here you may specify a name and address that is
    | used globally for all emails that are sent by your application.
    |
    */

    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],

];


================================================
FILE: config/queue.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Queue Connection Name
    |--------------------------------------------------------------------------
    |
    | Laravel's queue supports a variety of backends via a single, unified
    | API, giving you convenient access to each backend using identical
    | syntax for each. The default queue connection is defined below.
    |
    */

    'default' => env('QUEUE_CONNECTION', 'database'),

    /*
    |--------------------------------------------------------------------------
    | Queue Connections
    |--------------------------------------------------------------------------
    |
    | Here you may configure the connection options for every queue backend
    | used by your application. An example configuration is provided for
    | each backend supported by Laravel. You're also free to add more.
    |
    | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
    |
    */

    'connections' => [

        'sync' => [
            'driver' => 'sync',
        ],

        'database' => [
            'driver' => 'database',
            'connection' => env('DB_QUEUE_CONNECTION'),
            'table' => env('DB_QUEUE_TABLE', 'jobs'),
            'queue' => env('DB_QUEUE', 'default'),
            'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 3600),
            'after_commit' => false,
        ],

        'beanstalkd' => [
            'driver' => 'beanstalkd',
            'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'),
            'queue' => env('BEANSTALKD_QUEUE', 'default'),
            'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
            'block_for' => 0,
            'after_commit' => false,
        ],

        'sqs' => [
            'driver' => 'sqs',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
            'queue' => env('SQS_QUEUE', 'default'),
            'suffix' => env('SQS_SUFFIX'),
            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
            'after_commit' => false,
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
            'queue' => env('REDIS_QUEUE', 'default'),
            'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 3600),
            'block_for' => null,
            'after_commit' => false,
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Job Batching
    |--------------------------------------------------------------------------
    |
    | The following options configure the database and table that store job
    | batching information. These options can be updated to any database
    | connection and table which has been defined by your application.
    |
    */

    'batching' => [
        'database' => env('DB_CONNECTION', 'sqlite'),
        'table' => 'job_batches',
    ],

    /*
    |--------------------------------------------------------------------------
    | Failed Queue Jobs
    |--------------------------------------------------------------------------
    |
    | These options configure the behavior of failed queue job logging so you
    | can control how and where failed jobs are stored. Laravel ships with
    | support for storing failed jobs in a simple file or in a database.
    |
    | Supported drivers: "database-uuids", "dynamodb", "file", "null"
    |
    */

    'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'sqlite'),
        'table' => 'failed_jobs',
    ],

];


================================================
FILE: config/services.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Third Party Services
    |--------------------------------------------------------------------------
    |
    | This file is for storing the credentials for third party services such
    | as Mailgun, Postmark, AWS and more. This file provides the de facto
    | location for this type of information, allowing packages to have
    | a conventional file to locate the various service credentials.
    |
    */

    'postmark' => [
        'token' => env('POSTMARK_TOKEN'),
    ],

    'ses' => [
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    ],

    'resend' => [
        'key' => env('RESEND_KEY'),
    ],

    'slack' => [
        'notifications' => [
            'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'),
            'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'),
        ],
    ],

    'juzaweb' => [
        'key' => env('JUZAWEB_API_KEY'),
    ],

];


================================================
FILE: config/session.php
================================================
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Session Driver
    |--------------------------------------------------------------------------
    |
    | This option determines the default session driver that is utilized for
    | incoming requests. Laravel supports a variety of storage options to
    | persist session data. Database storage is a great default choice.
    |
    | Supported: "file", "cookie", "database", "apc",
    |            "memcached", "redis", "dynamodb", "array"
    |
    */

    'driver' => env('SESSION_DRIVER', 'database'),

    /*
    |--------------------------------------------------------------------------
    | Session Lifetime
    |--------------------------------------------------------------------------
    |
    | Here you may specify the number of minutes that you wish the session
    | to be allowed to remain idle before it expires. If you want them
    | to expire immediately when the browser is closed then you may
    | indicate that via the expire_on_close configuration option.
    |
    */

    'lifetime' => (int) env('SESSION_LIFETIME', 120),

    'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false),

    /*
    |--------------------------------------------------------------------------
    | Session Encryption
    |--------------------------------------------------------------------------
    |
    | This option allows you to easily specify that all of your session data
    | should be encrypted before it's stored. All encryption is performed
    | automatically by Laravel and you may use the session like normal.
    |
    */

    'encrypt' => env('SESSION_ENCRYPT', false),

    /*
    |--------------------------------------------------------------------------
    | Session File Location
    |--------------------------------------------------------------------------
    |
    | When utilizing the "file" session driver, the session files are placed
    | on disk. The default storage location is defined here; however, you
    | are free to provide another location where they should be stored.
    |
    */

    'files' => storage_path('framework/sessions'),

    /*
    |--------------------------------------------------------------------------
    | Session Database Connection
    |--------------------------------------------------------------------------
    |
    | When using the "database" or "redis" session drivers, you may specify a
    | connection that should be used to manage these sessions. This should
    | correspond to a connection in your database configuration options.
    |
    */

    'connection' => env('SESSION_CONNECTION'),

    /*
    |--------------------------------------------------------------------------
    | Session Database Table
    |--------------------------------------------------------------------------
    |
    | When using the "database" session driver, you may specify the table to
    | be used to store sessions. Of course, a sensible default is defined
    | for you; however, you're welcome to change this to another table.
    |
    */

    'table' => env('SESSION_TABLE', 'sessions'),

    /*
    |--------------------------------------------------------------------------
    | Session Cache Store
    |--------------------------------------------------------------------------
    |
    | When using one of the framework's cache driven session backends, you may
    | define the cache store which should be used to store the session data
    | between requests. This must match one of your defined cache stores.
    |
    | Affects: "apc", "dynamodb", "memcached", "redis"
    |
    */

    'store' => env('SESSION_STORE'),

    /*
    |--------------------------------------------------------------------------
    | Session Sweeping Lottery
    |--------------------------------------------------------------------------
    |
    | Some session drivers must manually sweep their storage location to get
    | rid of old sessions from storage. Here are the chances that it will
    | happen on a given request. By default, the odds are 2 out of 100.
    |
    */

    'lottery' => [2, 100],

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Name
    |--------------------------------------------------------------------------
    |
    | Here you may change the name of the session cookie that is created by
    | the framework. Typically, you should not need to change this value
    | since doing so does not grant a meaningful security improvement.
    |
    */

    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'juzaweb'), '_').'_session'
    ),

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Path
    |--------------------------------------------------------------------------
    |
    | The session cookie path determines the path for which the cookie will
    | be regarded as available. Typically, this will be the root path of
    | your application, but you're free to change this when necessary.
    |
    */

    'path' => env('SESSION_PATH', '/'),

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Domain
    |--------------------------------------------------------------------------
    |
    | This value determines the domain and subdomains the session cookie is
    | available to. By default, the cookie will be available to the root
    | domain and all subdomains. Typically, this shouldn't be changed.
    |
    */

    'domain' => env('SESSION_DOMAIN'),

    /*
    |--------------------------------------------------------------------------
    | HTTPS Only Cookies
    |--------------------------------------------------------------------------
    |
    | By setting this option to true, session cookies will only be sent back
    | to the server if the browser has a HTTPS connection. This will keep
    | the cookie from being sent to you when it can't be done securely.
    |
    */

    'secure' => env('SESSION_SECURE_COOKIE'),

    /*
    |--------------------------------------------------------------------------
    | HTTP Access Only
    |--------------------------------------------------------------------------
    |
    | Setting this value to true will prevent JavaScript from accessing the
    | value of the cookie and the cookie will only be accessible through
    | the HTTP protocol. It's unlikely you should disable this option.
    |
    */

    'http_only' => env('SESSION_HTTP_ONLY', true),

    /*
    |--------------------------------------------------------------------------
    | Same-Site Cookies
    |--------------------------------------------------------------------------
    |
    | This option determines how your cookies behave when cross-site requests
    | take place, and can be used to mitigate CSRF attacks. By default, we
    | will set this value to "lax" to permit secure cross-site requests.
    |
    | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value
    |
    | Supported: "lax", "strict", "none", null
    |
    */

    'same_site' => env('SESSION_SAME_SITE', 'lax'),

    /*
    |--------------------------------------------------------------------------
    | Partitioned Cookies
    |--------------------------------------------------------------------------
    |
    | Setting this value to true will tie the cookie to the top-level site for
    | a cross-site context. Partitioned cookies are accepted by the browser
    | when flagged "secure" and the Same-Site attribute is set to "none".
    |
    */

    'partitioned' => env('SESSION_PARTITIONED_COOKIE', false),

];


================================================
FILE: config/translatable.php
================================================
<?php

use Astrotomic\Translatable\Validation\RuleFactory;

return [

    /*
    |--------------------------------------------------------------------------
    | Application Locales
    |--------------------------------------------------------------------------
    |
    | Contains an array with the applications available locales.
    |
    */
    'locales' => [
        'en',
        'vi',
        // 'fr',
        // 'de',
        // 'es',
    ],

    /*
    |--------------------------------------------------------------------------
    | Locale separator
    |--------------------------------------------------------------------------
    |
    | This is a string used to glue the language and the country when defining
    | the available locales. Example: if set to '-', then the locale for
    | colombian spanish will be saved as 'es-CO' into the database.
    |
    */
    'locale_separator' => '-',

    /*
    |--------------------------------------------------------------------------
    | Default locale
    |--------------------------------------------------------------------------
    |
    | As a default locale, Translatable takes the locale of Laravel's
    | translator. If for some reason you want to override this,
    | you can specify what default should be used here.
    | If you set a value here it will only use the current config value
    | and never fallback to the translator one.
    |
    */
    'locale' => null,

    /*
    |--------------------------------------------------------------------------
    | Use fallback
    |--------------------------------------------------------------------------
    |
    | Determine if fallback locales are returned by default or not. To add
    | more flexibility and configure this option per "translatable"
    | instance, this value will be overridden by the property
    | $useTranslationFallback when defined
    |
    */
    'use_fallback' => true,

    /*
    |--------------------------------------------------------------------------
    | Use fallback per property
    |--------------------------------------------------------------------------
    |
    | The property fallback feature will return the translated value of
    | the fallback locale if the property is empty for the selected
    | locale. Note that 'use_fallback' must be enabled.
    |
     */
    'use_property_fallback' => true,

    /*
    |--------------------------------------------------------------------------
    | Fallback Locale
    |--------------------------------------------------------------------------
    |
    | A fallback locale is the locale being used to return a translation
    | when the requested translation is not existing. To disable it
    | set it to false.
    | If set to null it will loop through all configured locales until
    | one existing is found or end of list reached. The locales are looped
    | from top to bottom and for country based locales the simple one
    | is used first. So "es" will be checked before "es_MX".
    |
    */
    'fallback_locale' => 'en',

    /*
    |--------------------------------------------------------------------------
    | Translation Model Namespace
    |--------------------------------------------------------------------------
    |
    | Defines the default 'Translation' class namespace. For example, if
    | you want to use App\Translations\CountryTranslation instead of App\CountryTranslation
    | set this to 'App\Translations'.
    |
    */
    'translation_model_namespace' => null,

    /*
    |--------------------------------------------------------------------------
    | Translation Suffix
    |--------------------------------------------------------------------------
    |
    | Defines the default 'Translation' class suffix. For example, if
    | you want to use CountryTrans instead of CountryTranslation
    | application, set this to 'Trans'.
    |
    */
    'translation_suffix' => 'Translation',

    /*
    |--------------------------------------------------------------------------
    | Locale key
    |--------------------------------------------------------------------------
    |
    | Defines the 'locale' field name, which is used by the
    | translation model.
    |
    */
    'locale_key' => 'locale',

    /*
    |--------------------------------------------------------------------------
    | Always load translations when converting to array
    |--------------------------------------------------------------------------
    | Setting this to false will have a performance improvement but will
    | not return the translations when using toArray(), unless the
    | translations relationship is already loaded.
    |
     */
    'to_array_always_loads_translations' => false,

    /*
    |--------------------------------------------------------------------------
    | Configure the default behavior of the rule factory
    |--------------------------------------------------------------------------
    | The default values used to control the behavior of the RuleFactory.
    | Here you can set your own default format and delimiters for
    | your whole app.
     *
     */
    'rule_factory' => [
        'format' => RuleFactory::FORMAT_ARRAY,
        'prefix' => '%',
        'suffix' => '%',
    ],
];


================================================
FILE: config/translation-loader.php
================================================
<?php

use Juzaweb\Modules\Core\Translations\Models\LanguageLine;
use Spatie\TranslationLoader\TranslationLoaderManager;
use Spatie\TranslationLoader\TranslationLoaders\Db;

return [

    /*
     * Language lines will be fetched by these loaders. You can put any class here that implements
     * the Spatie\TranslationLoader\TranslationLoaders\TranslationLoader-interface.
     */
    'translation_loaders' => [
        Db::class,
    ],

    /*
     * This is the model used by the Db Translation loader. You can put any model here
     * that extends Spatie\TranslationLoader\LanguageLine.
     */
    'model' => LanguageLine::class,

    /*
     * This is the translation manager which overrides the default Laravel `translation.loader`
     */
    'translation_manager' => TranslationLoaderManager::class,

];


================================================
FILE: database/.gitignore
================================================
*.sqlite*


================================================
FILE: database/seeders/DatabaseSeeder.php
================================================
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Juzaweb\Modules\Admin\Models\User;

// use Illuminate\Database\Console\Seeds\WithoutModelEvents;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     */
    public function run(): void
    {
        // User::factory(10)->create();

        User::factory()->create([
            'name' => 'Test User',
            'email' => 'test@example.com',
        ]);
    }
}


================================================
FILE: modules/.gitkeep
================================================


================================================
FILE: modules/admin/composer.json
================================================
{
    "name": "juzaweb/admin",
    "description": "Juzaweb CMS Admin",
    "keywords": [],
    "license": "MIT",
    "homepage": "https://juzaweb.com",
    "require": {
        "php": "^8.2"
    },
    "autoload": {
        "psr-4": {
            "Juzaweb\\Modules\\Admin\\": "src/",
            "Juzaweb\\Modules\\Admin\\Database\\Factories\\": "database/factories/"
        }
    },
    "minimum-stability": "dev",
    "config": {
        "sort-packages": true
    }
}


================================================
FILE: modules/admin/database/factories/CategoryFactory.php
================================================
<?php

namespace Juzaweb\Modules\Admin\Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Juzaweb\Modules\Blog\Models\Category;

/**
 * @extends Factory<Category>
 */
class CategoryFactory extends Factory
{
    protected $model = Category::class;

    /**
     * Define the model's default state.
     *
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'parent_id' => null,
            'en' => [
                'name' => $this->faker->words(3, true),
                'description' => $this->faker->sentence(),
                'slug' => $this->faker->unique()->slug(),
                'locale' => 'en',
            ],
        ];
    }

    /**
     * Indicate that the category has a parent.
     */
    public function withParent(string $parentId): static
    {
        return $this->state(fn (array $attributes) => [
            'parent_id' => $parentId,
        ]);
    }
}


================================================
FILE: modules/admin/database/factories/MediaFactory.php
================================================
<?php

namespace Juzaweb\Modules\Admin\Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Juzaweb\Modules\Core\Models\Media;
use Juzaweb\Modules\Core\Models\Model;

/**
 * @extends Factory<Model>
 */
class MediaFactory extends Factory
{
    protected $model = Media::class;

    /**
     * Define the model's default state.
     *
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        $filename = $this->faker->uuid().'.jpg';

        return [
            'name' => $filename,
            'path' => 'tests/'.$filename,
            'mime_type' => 'image/jpeg',
            'size' => 102400, // 100KB
            'type' => 'file',
            'extension' => 'jpg',
            'image_size' => '200x200',
            'disk' => 'public',
        ];
    }
}


================================================
FILE: modules/admin/database/factories/MenuFactory.php
================================================
<?php

namespace Juzaweb\Modules\Admin\Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Juzaweb\Modules\Core\Models\Menus\Menu;

/**
 * @extends Factory<Menu>
 */
class MenuFactory extends Factory
{
    protected $model = Menu::class;

    public function definition(): array
    {
        return [
            'name' => $this->faker->words(3, true),
        ];
    }
}


================================================
FILE: modules/admin/database/factories/PageFactory.php
================================================
<?php

namespace Juzaweb\Modules\Admin\Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Juzaweb\Modules\Core\Enums\PageStatus;
use Juzaweb\Modules\Core\Models\Pages\Page;

/**
 * @extends Factory<Page>
 */
class PageFactory extends Factory
{
    protected $model = Page::class;

    /**
     * Define the model's default state.
     *
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'status' => PageStatus::PUBLISHED,
            'template' => null,
            'en' => [
                'title' => $this->faker->sentence(),
                'content' => $this->faker->paragraphs(3, true),
                'slug' => $this->faker->unique()->slug(),
                'locale' => 'en',
            ],
        ];
    }

    /**
     * Indicate that the page is a draft.
     */
    public function draft(): static
    {
        return $this->state(fn (array $attributes) => [
            'status' => PageStatus::DRAFT,
        ]);
    }

    /**
     * Indicate that the page has a specific template.
     */
    public function withTemplate(string $template): static
    {
        return $this->state(fn (array $attributes) => [
            'template' => $template,
        ]);
    }
}


================================================
FILE: modules/admin/database/factories/PostFactory.php
================================================
<?php

namespace Juzaweb\Modules\Admin\Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Juzaweb\Modules\Blog\Models\Post;
use Juzaweb\Modules\Core\Enums\PostStatus;

/**
 * @extends Factory<Post>
 */
class PostFactory extends Factory
{
    protected $model = Post::class;

    /**
     * Define the model's default state.
     *
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'status' => PostStatus::PUBLISHED,
            'en' => [
                'title' => $this->faker->sentence(),
                'content' => $this->faker->paragraphs(3, true),
                'slug' => $this->faker->unique()->slug(),
                'locale' => 'en',
            ],
        ];
    }

    /**
     * Indicate that the post is a draft.
     */
    public function draft(): static
    {
        return $this->state(fn (array $attributes) => [
            'status' => PostStatus::DRAFT,
        ]);
    }

    /**
     * Indicate that the post is private.
     */
    public function private(): static
    {
        return $this->state(fn (array $attributes) => [
            'status' => PostStatus::PRIVATE,
        ]);
    }
}


================================================
FILE: modules/admin/database/factories/UserFactory.php
================================================
<?php

namespace Juzaweb\Modules\Admin\Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use Juzaweb\Modules\Admin\Models\User;

/**
 * @extends Factory<User>
 */
class UserFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var class-string<Model>
     */
    protected $model = User::class;

    /**
     * The current password being used by the factory.
     */
    protected static ?string $password;

    /**
     * Define the model's default state.
     *
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'name' => fake()->name(),
            'email' => fake()->unique()->safeEmail(),
            'email_verified_at' => now(),
            'password' => static::$password ??= Hash::make('password'),
            'remember_token' => Str::random(10),
        ];
    }

    /**
     * Indicate that the model's email address should be unverified.
     */
    public function unverified(): static
    {
        return $this->state(fn (array $attributes) => [
            'email_verified_at' => null,
        ]);
    }
}


================================================
FILE: modules/admin/src/Enums/UserStatus.php
================================================
<?php

/**
 * JUZAWEB CMS - Laravel CMS for Your Project
 *
 * @author     The Anh Dang
 *
 * @link       https://cms.juzaweb.com
 */

namespace Juzaweb\Modules\Admin\Enums;

enum UserStatus: string
{
    case ACTIVE = 'active';
    case INACTIVE = 'inactive';
    case BANNED = 'banned';

    public static function all(): array
    {
        return [
            self::ACTIVE->value => self::ACTIVE->label(),
            self::INACTIVE->value => self::INACTIVE->label(),
            self::BANNED->value => self::BANNED->label(),
        ];
    }

    public function label(): string
    {
        return match ($this) {
            self::ACTIVE => __('core::translation.active'),
            self::INACTIVE => __('core::translation.inactive'),
            self::BANNED => __('core::translation.banned'),
        };
    }
}


================================================
FILE: modules/admin/src/Http/Controllers/DashboardController.php
================================================
<?php

/**
 * LARABIZ CMS - Full SPA Laravel CMS
 *
 * @author     The Anh Dang
 *
 * @link       https://cms.juzaweb.com
 */

namespace Juzaweb\Modules\Admin\Http\Controllers;

use Illuminate\Http\JsonResponse;
use Juzaweb\Modules\Admin\Models\User;
use Juzaweb\Modules\Core\Http\Controllers\AdminController;
use Juzaweb\Modules\Core\Models\Media;
use Juzaweb\Modules\Core\Models\Pages\Page;

class DashboardController extends AdminController
{
    public function index()
    {
        $totalUsers = $this->getTotalUsers();
        $totalPages = Page::count();
        $usedStorage = Media::cacheFor(3600)->sum('size');
        $storageFree = disk_free_space(storage_path());

        return view(
            'admin::dashboard.index',
            [
                'title' => __('core::translation.dashboard'),
                ...compact('totalUsers', 'storageFree', 'usedStorage', 'totalPages'),
            ]
        );
    }

    public function online(): JsonResponse
    {
        return response()->json([
            'total' => number_human_format(online_count()),
        ]);
    }

    protected function getTotalUsers(): int
    {
        return User::query()
            ->cacheFor(1800)
            ->count();
    }
}


================================================
FILE: modules/admin/src/Models/Client.php
================================================
<?php

/**
 * JUZAWEB CMS - Laravel CMS for Your Project
 *
 * @author     The Anh Dang
 *
 * @link       https://cms.juzaweb.com
 *
 * @license    GNU V2
 */

namespace Juzaweb\Modules\Admin\Models;

use Illuminate\Contracts\Auth\Authenticatable;
use Laravel\Passport\Client as BaseClient;
use Laravel\Passport\Scope;

class Client extends BaseClient
{
    /**
     * Determine if the client should skip the authorization prompt.
     *
     * @param  Scope[]  $scopes
     */
    public function skipsAuthorization(Authenticatable $user, array $scopes): bool
    {
        return $this->firstParty();
    }
}


================================================
FILE: modules/admin/src/Models/Guest.php
================================================
<?php

/**
 * JUZAWEB CMS - Laravel CMS for Your Project
 *
 * @author     The Anh Dang
 *
 * @link       https://cms.juzaweb.com
 */

namespace Juzaweb\Modules\Admin\Models;

use Juzaweb\Modules\Core\Models\Guest as CoreGuest;

class Guest extends CoreGuest
{
    //
}


================================================
FILE: modules/admin/src/Models/User.php
================================================
<?php

namespace Juzaweb\Modules\Admin\Models;

use Juzaweb\Modules\Core\Models\User as BaseUser;
use Laravel\Passport\HasApiTokens;

class User extends BaseUser
{
    use HasApiTokens;
}


================================================
FILE: modules/admin/src/Providers/AdminServiceProvider.php
================================================
<?php

/**
 * JUZAWEB CMS - Laravel CMS for Your Project
 *
 * @author     The Anh Dang
 *
 * @link       https://cms.juzaweb.com
 *
 * @license    GNU V2
 */

namespace Juzaweb\Modules\Admin\Providers;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Gate;
use Juzaweb\Modules\Admin\Models\Client;
use Juzaweb\Modules\Admin\Models\User;
use Juzaweb\Modules\Core\Providers\AdminServiceProvider as BaseAdminServiceProvider;
use Laravel\Passport\Passport;

class AdminServiceProvider extends BaseAdminServiceProvider
{
    public function boot(): void
    {
        parent::boot();

        Model::preventLazyLoading(! $this->app->isProduction());

        Gate::define('viewLogViewer', function (?User $user) {
            return $user && $user->isSuperAdmin();
        });

        Passport::useClientModel(Client::class);
    }

    public function register(): void
    {
        parent::register();

        $this->registerViews();
    }

    protected function registerViews(): void
    {
        $viewPath = resource_path('views/modules/admin');

        $sourcePath = __DIR__.'/../resources/views';

        $this->publishes([
            $sourcePath => $viewPath,
        ], ['views', 'admin-module-views']);

        $this->loadViewsFrom($sourcePath, 'admin');
    }
}


================================================
FILE: modules/admin/src/resources/views/dashboard/index.blade.php
================================================
@extends('core::layouts.admin')

@section('head')
    <link rel="stylesheet" href="{{ asset('assets/plugins/chartjs/Chart.min.css') }}">
@endsection

@section('content')
    <div class="row">
        <div class="col-12 col-sm-6 col-md-3">
            <div class="info-box mb-3">
            <span class="info-box-icon bg-primary elevation-1">
                <i class="fas fa-layer-group"></i>
            </span>

                <div class="info-box-content">
                    <span class="info-box-text">{{ __('core::translation.pages') }}</span>
                    <span class="info-box-number">{{ number_human_format($totalPages) }}</span>
                </div>
            </div>
        </div>

        <div class="col-12 col-sm-6 col-md-3">
            <div class="info-box mb-3">
            <span class="info-box-icon bg-warning elevation-1">
                <i class="fas fa-users"></i>
            </span>

                <div class="info-box-content">
                    <span class="info-box-text">{{ __('core::translation.members') }}</span>
                    <span class="info-box-number">{{ number_human_format($totalUsers) }}</span>
                </div>
            </div>
        </div>

        <div class="col-12 col-sm-6 col-md-3">
            <div class="info-box mb-3">
                <span class="info-box-icon bg-success elevation-1">
                    <i class="fas fa-user"></i>
                </span>

                <div class="info-box-content">
                    <span class="info-box-text">{{ __('core::translation.online') }}</span>
                    <span class="info-box-number" id="online-count">{{ number_human_format(online_count()) }}</span>
                </div>
            </div>
        </div>

        <div class="col-12 col-sm-6 col-md-3">
            <div class="info-box mb-3">
                <span class="info-box-icon bg-info elevation-1">
                    <i class="fas fa-database"></i>
                </span>

                <div class="info-box-content">
                    <span class="info-box-text">{{ __('core::translation.storage') }}</span>
                    <span class="info-box-number">{{ format_size_units($usedStorage) }}</span>
                    <div>
                        <small class="text-muted" style="opacity: 0.9;">
                            / {{ format_size_units($storageFree) }}
                        </small>
                    </div>
                </div>
            </div>
        </div>

    </div>

    @do_action('admin.dashboard.index')

    <div class="row">
        <div class="col-md-8">
            {{ \Juzaweb\Modules\Core\Support\Dashboard\UsersChart::make()->render() }}
        </div>

        <div class="col-md-4">
            {{ Chart::make('users-by-country')->render() }}
        </div>
    </div>

    <div class="row mt-4">
        <div class="col-md-8">
            {{ Chart::make('session-duration')->render() }}
        </div>

        <div class="col-md-4">
            {{ Chart::make('sessions-by-device')->render() }}
        </div>
    </div>

    <div class="row mt-4">
        <div class="col-md-8">
            {{ Chart::make('top-pages')->render() }}
        </div>

        <div class="col-md-4">
            {{ Chart::make('traffic-sources')->render() }}
        </div>
    </div>
@endsection

@section('scripts')
    <script type="text/javascript" src="{{ url('plugins/chartjs/Chart.min.js') }}"></script>
    <script type="text/javascript" nonce="{{ csp_script_nonce() }}">
        function updateOnlineCount() {
            $.ajax({
                url: "{{ route('admin.dashboard.online-count') }}",
                type: "GET",
                dataType: "json",
                success: function (response) {
                    $('#online-count').text(response.total);
                },
                error: function (xhr) {
                    console.error('Failed to load online count', xhr);
                }
            });
        }

        $(function () {
            setInterval(updateOnlineCount, 60000);
        });
    </script>
@endsection


================================================
FILE: package.json
================================================
{
    "name": "sitecreator",
    "version": "1.0.0",
    "private": true,
    "type": "commonjs",
    "scripts": {
        "build": "vite build",
        "dev": "vite",
        "prod": "mix --production",
        "hot": "mix watch --hot"
    },
    "devDependencies": {
        "autoprefixer": "^10.4.20",
        "axios": "^1.7.4",
        "concurrently": "^9.0.1",
        "laravel-mix": "^6.0.49",
        "laravel-vite-plugin": "^1.2.0",
        "postcss": "^8.4.47",
        "tailwindcss": "^3.4.13",
        "vite": "^6.0.11"
    },
    "dependencies": {
        "laravel-mix-merge-manifest": "^2.1.0"
    }
}


================================================
FILE: phpunit.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
         bootstrap="vendor/autoload.php"
         colors="true"
>
    <testsuites>
        <testsuite name="Unit">
            <directory>tests/Unit</directory>
        </testsuite>
        <testsuite name="Feature">
            <directory>tests/Feature</directory>
        </testsuite>
    </testsuites>
    <source>
        <include>
            <directory>app</directory>
        </include>
    </source>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="APP_MAINTENANCE_DRIVER" value="file"/>
        <env name="BCRYPT_ROUNDS" value="4"/>
        <env name="CACHE_STORE" value="array"/>
        <env name="DB_CONNECTION" value="mysql"/>
        <env name="DB_DATABASE" value="laravel"/>
        <env name="MAIL_MAILER" value="array"/>
        <env name="NETWORK_DOMAIN" value="localhost"/>
        <env name="PULSE_ENABLED" value="false"/>
        <env name="QUEUE_CONNECTION" value="sync"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="TELESCOPE_ENABLED" value="false"/>
    </php>
</phpunit>


================================================
FILE: postcss.config.js
================================================
export default {
    plugins: {
        tailwindcss: {},
        autoprefixer: {},
    },
};


================================================
FILE: public/.htaccess
================================================
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Handle X-XSRF-Token Header
    RewriteCond %{HTTP:x-xsrf-token} .
    RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>


================================================
FILE: public/index.php
================================================
<?php

use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

const JW_BASE_PATH = __DIR__.'/..';

// Determine if the application is in maintenance mode...
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
    require $maintenance;
}

if (file_exists(__DIR__.'/../vendor/juzaweb/core/helpers/before-init.php')) {
    require __DIR__.'/../vendor/juzaweb/core/helpers/before-init.php';
}

// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';

// Bootstrap Laravel and handle the request...
(require_once __DIR__.'/../bootstrap/app.php')
    ->handleRequest(Request::capture());


================================================
FILE: public/juzaweb/.gitignore
================================================
*
!.gitkeep
!.gitignore

================================================
FILE: public/juzaweb/.gitkeep
================================================


================================================
FILE: public/modules/.gitignore
================================================
*
!.gitkeep
!.gitignore

================================================
FILE: public/modules/.gitkeep
================================================


================================================
FILE: public/robots.txt
================================================
User-agent: *
Disallow: /search


================================================
FILE: public/themes/.gitignore
================================================
*
!.gitkeep
!.gitignore

================================================
FILE: public/themes/.gitkeep
================================================


================================================
FILE: public/vendor/installer/css/sass/_variables.sass
================================================
//colors
$color_0: #ff0
$color_1: #000
$color_2:  silver
$color_3: #666
$color_4: #111
$color_5: #1d73a2
$color_6: #175c82
$color_7: rgba(0, 0, 0, .19)
$color_8: rgba(0, 0, 0, .23)
$color_9: #357295
$color_10: #fff
$color_11: #cacfd2
$color_12: #34a0db
$color_13: rgba(0, 0, 0, .12)
$color_14: rgba(0, 0, 0, .24)
$color_15: #2490cb
$color_16: #eee
$color_17: #222
$color_18: rgba(0, 0, 0, .16)
$color_19: #2ecc71
$color_20: #e74c3c
$color_21: #f5f5f5
$color_22: rgba(0, 0, 0, .2)

//fonts
$font_0: Ionicons
$font_1: sans-serif
$font_2: monospace
$font_3: Roboto
$font_4: Helvetica Neue
$font_5: Helvetica
$font_6: Arial
$font_7: Courier New
$font_8: Courier
$font_9: Lucida Sans Typewriter
$font_10: Lucida Typewriter

//urls
$url_0: url(https://fonts.googleapis.com/css?family=Roboto:400,300,500,700,900)
$url_1: url(../fonts/ionicons.eot?v=2.0.1)
$url_2: url(../fonts/ionicons.eot?v=2.0.1#iefix)
$url_3: url(../fonts/ionicons.ttf?v=2.0.1)
$url_4: url(../fonts/ionicons.woff?v=2.0.1)
$url_5: url(../fonts/ionicons.svg?v=2.0.1#Ionicons)
$url_6: url(../img/background.png)

================================================
FILE: public/vendor/installer/css/sass/style.sass
================================================
// Variables
@import "variables";

//@extend-elements
//original selectors
//sub, sup
.extend_1
	font-size: 75%
	line-height: 0
	position: relative
	vertical-align: baseline


//original selectors
//button, input, optgroup, select, textarea
.extend_2
	color: inherit
	font: inherit
	margin: 0


@import $url_0;
html
	font-family: $font_1
	-ms-text-size-adjust: 100%
	-webkit-text-size-adjust: 100%
	font-family: $font_3, $font_4, $font_5, $font_6, $font_1
	font-weight: 300
	color: $color_3
	font-size: 12px
	line-height: 1.75em
	input[type=button]
		-webkit-appearance: button
		cursor: pointer

	input[disabled]
		cursor: default


body
	margin: 0
	text-rendering: optimizeLegibility
	-webkit-font-smoothing: antialiased
	-moz-osx-font-smoothing: grayscale
	-moz-font-feature-settings: "liga" on

article
	display: block

aside
	display: block

details
	display: block

figcaption
	display: block

figure
	display: block
	margin: 1em 40px

footer
	display: block

header
	display: block

hgroup
	display: block

main
	display: block

menu
	display: block

nav
	display: block

section
	display: block

summary
	display: block

audio
	display: inline-block
	vertical-align: baseline
	&:not([controls])
		display: none
		height: 0


canvas
	display: inline-block
	vertical-align: baseline

progress
	display: inline-block
	vertical-align: baseline

video
	display: inline-block
	vertical-align: baseline

[hidden]
	display: none

template
	display: none

a
	background-color: transparent
	text-decoration: none
	color: $color_5
	//If you use compass, instead of the line below you could use + transition($transition-1, $transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10)
	transition: all .2s
	margin: 0
	padding: 0
	&:active
		outline: 0

	&:hover
		outline: 0
		color: $color_6


abbr[title]
	border-bottom: 1px dotted

b
	font-weight: 700
	margin: 0
	padding: 0

strong
	font-weight: 700
	margin: 0
	padding: 0

dfn
	font-style: italic
	margin: 0
	padding: 0

h1
	font-size: 2em
	margin: .67em 0
	font-size: 27.85438995234061px
	margin-top: .942400822452556em
	line-height: 1.130880986943067em
	margin-bottom: .188480164490511em
	margin: 0
	padding: 0
	font-family: $font_3, $font_4, $font_5, $font_6, $font_1
	font-weight: 500
	color: $color_4
	clear: both

mark
	background: $color_0
	color: $color_1

small
	font-size: 80%
	margin: 0
	padding: 0
	line-height: 0

sub
	@extend %extend_1
	bottom: -.25em
	margin: 0
	padding: 0
	line-height: 0

sup
	@extend %extend_1
	top: -.5em
	margin: 0
	padding: 0
	line-height: 0

img
	border: 0
	margin: 0
	padding: 0

hr
	//If you use compass, instead of the line below you could use + box-sizing($bs)
	box-sizing: content-box
	height: 0

pre
	overflow: auto
	padding: .875em
	margin-bottom: 1.75em
	font-family: $font_2
	font-size: 1em
	margin: 0
	padding: 0
	margin-bottom: 1.75em
	code
		padding: 0


code
	font-family: $font_2
	font-size: 1em
	margin: 0
	padding: 0
	font-family: $font_7, $font_8, $font_9, $font_10, $font_2
	padding: .0875em .2625em
	line-height: 0

kbd
	font-family: $font_2
	font-size: 1em
	margin: 0
	padding: 0

samp
	font-family: $font_2
	font-size: 1em
	margin: 0
	padding: 0

button
	@extend %extend_2
	overflow: visible
	text-transform: none
	-webkit-appearance: button
	cursor: pointer
	display: block
	cursor: pointer
	font-size: 12px
	padding: .4375em 1.75em
	margin-bottom: 1.18125em

input
	@extend %extend_2
	line-height: normal

optgroup
	@extend %extend_2
	font-weight: 700

select
	@extend %extend_2
	text-transform: none

textarea
	@extend %extend_2
	overflow: auto
	display: block
	max-width: 100%
	padding: .4375em
	font-size: 12px
	margin-bottom: 1.18125em

input[type=reset]
	-webkit-appearance: button
	cursor: pointer

input[type=submit]
	-webkit-appearance: button
	cursor: pointer
	display: block
	cursor: pointer
	font-size: 12px
	padding: .4375em 1.75em
	margin-bottom: 1.18125em

button[disabled]
	cursor: default

button::-moz-focus-inner
	border: 0
	padding: 0

input::-moz-focus-inner
	border: 0
	padding: 0

input[type=checkbox]
	//If you use compass, instead of the line below you could use + box-sizing($bs)
	box-sizing: border-box
	padding: 0

input[type=radio]
	//If you use compass, instead of the line below you could use + box-sizing($bs)
	box-sizing: border-box
	padding: 0

input[type=number]::-webkit-inner-spin-button
	height: auto

input[type=number]::-webkit-outer-spin-button
	height: auto

input[type=search]
	-webkit-appearance: textfield
	//If you use compass, instead of the line below you could use + box-sizing($bs)
	box-sizing: content-box

input[type=search]::-webkit-search-cancel-button
	-webkit-appearance: none

input[type=search]::-webkit-search-decoration
	-webkit-appearance: none

fieldset
	border: 1px solid $color_2
	margin: 0 2px
	padding: .35em .625em .75em
	padding: .875em 1.75em 1.75em
	border-width: 1px
	border-style: solid
	max-width: 100%
	margin-bottom: 1.8375em
	margin: 0
	padding: 0
	button
		margin-bottom: 0

	input[type=submit]
		margin-bottom: 0


legend
	border: 0
	padding: 0
	color: $color_4
	font-weight: 700
	margin: 0
	padding: 0

table
	width: 100%
	border-spacing: 0
	border-collapse: collapse
	margin-bottom: 2.1875em
	margin: 0
	padding: 0
	margin-bottom: 1.75em

td
	padding: 0
	margin: 0
	padding: 0
	padding: .21875em .875em

th
	padding: 0
	margin: 0
	padding: 0
	text-align: left
	color: $color_4
	padding: .21875em .875em

@font-face
	font-family: $font_0
	src: $url_1
	src: $url_2 format("embedded-opentype"), $url_3 format("truetype"), $url_4 format("woff"), $url_5 format("svg")
	font-weight: 400
	font-style: normal

@media(min-width:600px)
	html
		font-size: calc(12px +8 *((100vw - 600px) / 540))

	h1
		font-size: calc(27.85438995234061px +18.56959 *((100vw - 600px) / 540))

	h2
		font-size: calc(23.53700340860508px +15.69134 *((100vw - 600px) / 540))

	h3
		font-size: calc(19.888804974891777px +13.2592 *((100vw - 600px) / 540))

	h4
		font-size: calc(16.806071548796314px +11.20405 *((100vw - 600px) / 540))

	h5
		font-size: calc(14.201156945318074px +9.46744 *((100vw - 600px) / 540))

	h6
		font-size: calc(12px +8 *((100vw - 600px) / 540))

	input[type=email]
		font-size: calc(12px +8 *((100vw - 600px) / 540))

	input[type=password]
		font-size: calc(12px +8 *((100vw - 600px) / 540))

	input[type=text]
		font-size: calc(12px +8 *((100vw - 600px) / 540))

	textarea
		font-size: calc(12px +8 *((100vw - 600px) / 540))

	button
		font-size: calc(12px +8 *((100vw - 600px) / 540))

	input[type=submit]
		font-size: calc(12px +8 *((100vw - 600px) / 540))


@media(min-width:1140px)
	html
		font-size: 20px

	h1
		font-size: 46.423983253901014px
		margin-top: .942400822452556em
		line-height: 1.130880986943067em
		margin-bottom: .188480164490511em

	h2
		font-size: 39.228339014341806px
		margin-top: 1.115265165420465em
		line-height: 1.338318198504558em
		margin-bottom: .240111086421698em

	h3
		font-size: 33.14800829148629px
		margin-top: 1.319837970815179em
		line-height: 1.583805564978215em
		margin-bottom: .287857499569283em

	h4
		font-size: 28.01011924799386px
		margin-top: 1.561935513828041em
		line-height: 1.87432261659365em
		margin-bottom: .345845057728222em

	h5
		font-size: 23.668594908863454px
		margin-top: 1.84844094752817em
		line-height: 2.218129137033805em
		margin-bottom: .369688189505634em

	h6
		font-size: 20px
		margin-top: 2.1875em
		line-height: 2.625em
		margin-bottom: .473958333333333em

	fieldset
		margin-bottom: 2.078125em

	input[type=email]
		font-size: 20px
		margin-bottom: .5140625em

	input[type=password]
		font-size: 20px
		margin-bottom: .5140625em

	input[type=text]
		font-size: 20px
		margin-bottom: .5140625em

	textarea
		font-size: 20px
		margin-bottom: .5140625em

	button
		font-size: 20px
		margin-bottom: 1.3125em

	input[type=submit]
		font-size: 20px
		margin-bottom: 1.3125em

	table
		margin-bottom: 2.05625em

	th
		padding: .4375em .875em

	td
		padding: .4375em .875em


abbr
	margin: 0
	padding: 0
	border-bottom: 1px dotted currentColor
	cursor: help

acronym
	margin: 0
	padding: 0
	border-bottom: 1px dotted currentColor
	cursor: help

address
	margin: 0
	padding: 0
	margin-bottom: 1.75em
	font-style: normal

big
	margin: 0
	padding: 0
	line-height: 0

blockquote
	margin: 0
	padding: 0
	margin-bottom: 1.75em
	font-style: italic
	cite
		display: block
		font-style: normal


caption
	margin: 0
	padding: 0

center
	margin: 0
	padding: 0

cite
	margin: 0
	padding: 0

dd
	margin: 0
	padding: 0

del
	margin: 0
	padding: 0

dl
	margin: 0
	padding: 0
	margin-bottom: 1.75em

dt
	margin: 0
	padding: 0
	color: $color_4
	font-weight: 700

em
	margin: 0
	padding: 0

form
	margin: 0
	padding: 0

h2
	margin: 0
	padding: 0
	font-family: $font_3, $font_4, $font_5, $font_6, $font_1
	font-weight: 500
	color: $color_4
	clear: both
	font-size: 23.53700340860508px
	margin-top: 1.115265165420465em
	line-height: 1.338318198504558em
	margin-bottom: .251483121980101em

h3
	margin: 0
	padding: 0
	font-family: $font_3, $font_4, $font_5, $font_6, $font_1
	font-weight: 500
	color: $color_4
	clear: both
	font-size: 19.888804974891777px
	margin-top: 1.319837970815179em
	line-height: 1.583805564978215em
	margin-bottom: .303784103173448em

h4
	margin: 0
	padding: 0
	font-family: $font_3, $font_4, $font_5, $font_6, $font_1
	font-weight: 500
	color: $color_4
	clear: both
	font-size: 16.806071548796314px
	margin-top: 1.561935513828041em
	line-height: 1.87432261659365em
	margin-bottom: .368150361036632em

h5
	margin: 0
	padding: 0
	font-family: $font_3, $font_4, $font_5, $font_6, $font_1
	font-weight: 500
	color: $color_4
	clear: both
	font-size: 14.201156945318074px
	margin-top: 1.84844094752817em
	line-height: 2.218129137033805em
	margin-bottom: .369688189505634em

h6
	margin: 0
	padding: 0
	font-family: $font_3, $font_4, $font_5, $font_6, $font_1
	font-weight: 500
	color: $color_4
	clear: both
	font-size: 12px
	margin-top: 2.1875em
	line-height: 2.625em
	margin-bottom: .619791666666667em

i
	margin: 0
	padding: 0

ins
	margin: 0
	padding: 0

label
	margin: 0
	padding: 0
	display: block
	padding-bottom: .21875em
	margin-bottom: -.21875em

li
	margin: 0
	padding: 0

ol
	margin: 0
	padding: 0
	margin-bottom: 1.75em
	padding-left: 1.4em

p
	margin: 0
	padding: 0
	margin-bottom: 1.75em

q
	margin: 0
	padding: 0

s
	margin: 0
	padding: 0

strike
	margin: 0
	padding: 0

tbody
	margin: 0
	padding: 0

tfoot
	margin: 0
	padding: 0

thead
	margin: 0
	padding: 0

tr
	margin: 0
	padding: 0

tt
	margin: 0
	padding: 0

u
	margin: 0
	padding: 0

ul
	margin: 0
	padding: 0
	margin-bottom: 1.75em
	padding-left: 1.1em

var
	margin: 0
	padding: 0

input[type=email]
	display: block
	max-width: 100%
	padding: .4375em
	font-size: 12px
	margin-bottom: 1.18125em

input[type=password]
	display: block
	max-width: 100%
	padding: .4375em
	font-size: 12px
	margin-bottom: 1.18125em

input[type=text]
	display: block
	max-width: 100%
	padding: .4375em
	font-size: 12px
	margin-bottom: 1.18125em

.master
	background-image: $url_6
	background-size: cover
	background-position: top
	min-height: 100vh
	display: -webkit-flex
	display: -ms-flexbox
	display: flex
	-webkit-justify-content: center
	-ms-flex-pack: center
	justify-content: center
	-webkit-align-items: center
	-ms-flex-align: center
	align-items: center

.box
	width: 450px
	//If you use compass, instead of the line below you could use + border-radius($radius, $vertical-radius)
	border-radius: 0 0 3px 3px
	overflow: hidden
	//If you use compass, instead of the line below you could use + box-sizing($bs)
	box-sizing: border-box
	//If you use compass, instead of the line below you could use + box-shadow($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10)
	box-shadow: 0 10px 10px $color_7, 0 6px 3px $color_8

.header
	background-color: $color_9
	padding: 30px 30px 40px
	//If you use compass, instead of the line below you could use + border-radius($radius, $vertical-radius)
	border-radius: 3px 3px 0 0
	text-align: center

.header__step
	font-weight: 300
	text-transform: uppercase
	font-size: 14px
	letter-spacing: 1.1px
	margin: 0 0 10px
	-webkit-user-select: none
	-moz-user-select: none
	-ms-user-select: none
	//If you use compass, instead of the line below you could use + user-select($select)
	user-select: none
	color: $color_10

.header__title
	-webkit-user-select: none
	-moz-user-select: none
	-ms-user-select: none
	//If you use compass, instead of the line below you could use + user-select($select)
	user-select: none
	color: $color_10
	font-weight: 400
	font-size: 20px
	margin: 0 0 15px

.step
	padding-left: 0
	list-style: none
	margin-bottom: 0
	display: -webkit-flex
	display: -ms-flexbox
	display: flex
	-webkit-flex-direction: row-reverse
	-ms-flex-direction: row-reverse
	flex-direction: row-reverse
	-webkit-justify-content: center
	-ms-flex-pack: center
	justify-content: center
	-webkit-align-items: center
	-ms-flex-align: center
	align-items: center
	margin-top: -20px

.step__divider
	background-color: $color_11
	-webkit-user-select: none
	-moz-user-select: none
	-ms-user-select: none
	//If you use compass, instead of the line below you could use + user-select($select)
	user-select: none
	width: 60px
	height: 3px
	&:first-child
		-webkit-flex: 1 0 auto
		-ms-flex: 1 0 auto
		flex: 1 0 auto

	&:last-child
		-webkit-flex: 1 0 auto
		-ms-flex: 1 0 auto
		flex: 1 0 auto


.step__icon
	background-color: $color_11
	font-style: normal
	width: 40px
	height: 40px
	display: -webkit-flex
	display: -ms-flexbox
	display: flex
	-webkit-justify-content: center
	-ms-flex-pack: center
	justify-content: center
	-webkit-align-items: center
	-ms-flex-align: center
	align-items: center
	//If you use compass, instead of the line below you could use + border-radius($radius, $vertical-radius)
	border-radius: 50%
	color: $color_10
	&.welcome:before
		content: '\f144'
		font-family: $font_0

	&.requirements:before
		content: '\f127'
		font-family: $font_0

	&.permissions:before
		content: '\f296'
		font-family: $font_0

	&.database:before
		content: '\f454'
		font-family: $font_0

	&.update:before
		content: '\f2bf'
		font-family: $font_0


.main
	margin-top: -20px
	background-color: $color_10
	//If you use compass, instead of the line below you could use + border-radius($radius, $vertical-radius)
	border-radius: 0 0 3px 3px
	padding: 40px 40px 30px

.buttons
	text-align: center

.buttons--right
	text-align: right

.button
	display: inline-block
	background-color: $color_12
	//If you use compass, instead of the line below you could use + border-radius($radius, $vertical-radius)
	border-radius: 2px
	padding: 7px 20px
	color: $color_10
	//If you use compass, instead of the line below you could use + box-shadow($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10)
	box-shadow: 0 1px 1.5px $color_13, 0 1px 1px $color_14
	text-decoration: none
	outline: none
	border: none
	//If you use compass, instead of the line below you could use + transition($transition-1, $transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10)
	transition: box-shadow .2s ease, background-color .2s ease
	&:hover
		color: $color_10
		//If you use compass, instead of the line below you could use + box-shadow($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10)
		box-shadow: 0 10px 10px $color_7, 0 6px 3px $color_8
		background-color: $color_15


.button--light
	padding: 3px 16px
	font-size: 16px
	border-top: 1px solid $color_16
	color: $color_17
	background: $color_10
	&:hover
		color: $color_17
		background: $color_10
		//If you use compass, instead of the line below you could use + box-shadow($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10)
		box-shadow: 0 3px 3px $color_18, 0 3px 3px $color_8


.list
	padding-left: 0
	list-style: none
	margin-bottom: 0
	margin: 20px 0 35px
	border: 1px solid $color_13
	//If you use compass, instead of the line below you could use + border-radius($radius, $vertical-radius)
	border-radius: 2px

.list__item
	position: relative
	overflow: hidden
	padding: 7px 20px
	border-bottom: 1px solid $color_13
	&:first-letter
		text-transform: uppercase

	&:last-child
		border-bottom: none

	&:before
		display: -webkit-flex
		display: -ms-flexbox
		display: flex
		-webkit-justify-content: center
		-ms-flex-pack: center
		justify-content: center
		-webkit-align-items: center
		-ms-flex-align: center
		align-items: center
		padding: 7px 20px
		position: absolute
		top: 0
		right: 0
		bottom: 0

	&.success:before
		color: $color_19
		content: '\f120'
		font-family: $font_0

	&.error:before
		color: $color_20
		content: '\f128'
		font-family: $font_0


.list__item--permissions
	&:before
		content: ''!important

	span
		display: -webkit-flex
		display: -ms-flexbox
		display: flex
		-webkit-justify-content: center
		-ms-flex-pack: center
		justify-content: center
		-webkit-align-items: center
		-ms-flex-align: center
		align-items: center
		padding: 7px 20px
		position: absolute
		top: 0
		right: 0
		bottom: 0
		background-color: $color_21
		font-weight: 700
		font-size: 16px
		&:before
			margin-right: 7px
			font-weight: 400


	&.success span:before
		color: $color_19
		content: '\f120'
		font-family: $font_0

	&.error span:before
		color: $color_20
		content: '\f128'
		font-family: $font_0


.textarea
	//If you use compass, instead of the line below you could use + box-sizing($bs)
	box-sizing: border-box
	width: 100%
	font-size: 14px
	line-height: 25px
	height: 150px
	outline: none
	border: 1px solid $color_22
	~ .button
		margin-bottom: 35px


.alert
	margin: 0 0 10px
	font-weight: 700
	font-size: 16px
	background-color: $color_21
	//If you use compass, instead of the line below you could use + border-radius($radius, $vertical-radius)
	border-radius: 2px
	padding: 0 10px

svg:not(:root)
	overflow: hidden

.ion-alert:before
	content: "\f101"

.ion-alert-circled:before
	content: "\f100"

.ion-android-add:before
	content: "\f2c7"

.ion-android-add-circle:before
	content: "\f359"

.ion-android-alarm-clock:before
	content: "\f35a"

.ion-android-alert:before
	content: "\f35b"

.ion-android-apps:before
	content: "\f35c"

.ion-android-archive:before
	content: "\f2c9"

.ion-android-arrow-back:before
	content: "\f2ca"

.ion-android-arrow-down:before
	content: "\f35d"

.ion-android-arrow-dropdown:before
	content: "\f35f"

.ion-android-arrow-dropdown-circle:before
	content: "\f35e"

.ion-android-arrow-dropleft:before
	content: "\f361"

.ion-android-arrow-dropleft-circle:before
	content: "\f360"

.ion-android-arrow-dropright:before
	content: "\f363"

.ion-android-arrow-dropright-circle:before
	content: "\f362"

.ion-android-arrow-dropup:before
	content: "\f365"

.ion-android-arrow-dropup-circle:before
	content: "\f364"

.ion-android-arrow-forward:before
	content: "\f30f"

.ion-android-arrow-up:before
	content: "\f366"

.ion-android-attach:before
	content: "\f367"

.ion-android-bar:before
	content: "\f368"

.ion-android-bicycle:before
	content: "\f369"

.ion-android-boat:before
	content: "\f36a"

.ion-android-bookmark:before
	content: "\f36b"

.ion-android-bulb:before
	content: "\f36c"

.ion-android-bus:before
	content: "\f36d"

.ion-android-calendar:before
	content: "\f2d1"

.ion-android-call:before
	content: "\f2d2"

.ion-android-camera:before
	content: "\f2d3"

.ion-android-cancel:before
	content: "\f36e"

.ion-android-car:before
	content: "\f36f"

.ion-android-cart:before
	content: "\f370"

.ion-android-chat:before
	content: "\f2d4"

.ion-android-checkbox:before
	content: "\f374"

.ion-android-checkbox-blank:before
	content: "\f371"

.ion-android-checkbox-outline:before
	content: "\f373"

.ion-android-checkbox-outline-blank:before
	content: "\f372"

.ion-android-checkmark-circle:before
	content: "\f375"

.ion-android-clipboard:before
	content: "\f376"

.ion-android-close:before
	content: "\f2d7"

.ion-android-cloud:before
	content: "\f37a"

.ion-android-cloud-circle:before
	content: "\f377"

.ion-android-cloud-done:before
	content: "\f378"

.ion-android-cloud-outline:before
	content: "\f379"

.ion-android-color-palette:before
	content: "\f37b"

.ion-android-compass:before
	content: "\f37c"

.ion-android-contact:before
	content: "\f2d8"

.ion-android-contacts:before
	content: "\f2d9"

.ion-android-contract:before
	content: "\f37d"

.ion-android-create:before
	content: "\f37e"

.ion-android-delete:before
	content: "\f37f"

.ion-android-desktop:before
	content: "\f380"

.ion-android-document:before
	content: "\f381"

.ion-android-done:before
	content: "\f383"

.ion-android-done-all:before
	content: "\f382"

.ion-android-download:before
	content: "\f2dd"

.ion-android-drafts:before
	content: "\f384"

.ion-android-exit:before
	content: "\f385"

.ion-android-expand:before
	content: "\f386"

.ion-android-favorite:before
	content: "\f388"

.ion-android-favorite-outline:before
	content: "\f387"

.ion-android-film:before
	content: "\f389"

.ion-android-folder:before
	content: "\f2e0"

.ion-android-folder-open:before
	content: "\f38a"

.ion-android-funnel:before
	content: "\f38b"

.ion-android-globe:before
	content: "\f38c"

.ion-android-hand:before
	content: "\f2e3"

.ion-android-hangout:before
	content: "\f38d"

.ion-android-happy:before
	content: "\f38e"

.ion-android-home:before
	content: "\f38f"

.ion-android-image:before
	content: "\f2e4"

.ion-android-laptop:before
	content: "\f390"

.ion-android-list:before
	content: "\f391"

.ion-android-locate:before
	content: "\f2e9"

.ion-android-lock:before
	content: "\f392"

.ion-android-mail:before
	content: "\f2eb"

.ion-android-map:before
	content: "\f393"

.ion-android-menu:before
	content: "\f394"

.ion-android-microphone:before
	content: "\f2ec"

.ion-android-microphone-off:before
	content: "\f395"

.ion-android-more-horizontal:before
	content: "\f396"

.ion-android-more-vertical:before
	content: "\f397"

.ion-android-navigate:before
	content: "\f398"

.ion-android-notifications:before
	content: "\f39b"

.ion-android-notifications-none:before
	content: "\f399"

.ion-android-notifications-off:before
	content: "\f39a"

.ion-android-open:before
	content: "\f39c"

.ion-android-options:before
	content: "\f39d"

.ion-android-people:before
	content: "\f39e"

.ion-android-person:before
	content: "\f3a0"

.ion-android-person-add:before
	content: "\f39f"

.ion-android-phone-landscape:before
	content: "\f3a1"

.ion-android-phone-portrait:before
	content: "\f3a2"

.ion-android-pin:before
	content: "\f3a3"

.ion-android-plane:before
	content: "\f3a4"

.ion-android-playstore:before
	content: "\f2f0"

.ion-android-print:before
	content: "\f3a5"

.ion-android-radio-button-off:before
	content: "\f3a6"

.ion-android-radio-button-on:before
	content: "\f3a7"

.ion-android-refresh:before
	content: "\f3a8"

.ion-android-remove:before
	content: "\f2f4"

.ion-android-remove-circle:before
	content: "\f3a9"

.ion-android-restaurant:before
	content: "\f3aa"

.ion-android-sad:before
	content: "\f3ab"

.ion-android-search:before
	content: "\f2f5"

.ion-android-send:before
	content: "\f2f6"

.ion-android-settings:before
	content: "\f2f7"

.ion-android-share:before
	content: "\f2f8"

.ion-android-share-alt:before
	content: "\f3ac"

.ion-android-star:before
	content: "\f2fc"

.ion-android-star-half:before
	content: "\f3ad"

.ion-android-star-outline:before
	content: "\f3ae"

.ion-android-stopwatch:before
	content: "\f2fd"

.ion-android-subway:before
	content: "\f3af"

.ion-android-sunny:before
	content: "\f3b0"

.ion-android-sync:before
	content: "\f3b1"

.ion-android-textsms:before
	content: "\f3b2"

.ion-android-time:before
	content: "\f3b3"

.ion-android-train:before
	content: "\f3b4"

.ion-android-unlock:before
	content: "\f3b5"

.ion-android-upload:before
	content: "\f3b6"

.ion-android-volume-down:before
	content: "\f3b7"

.ion-android-volume-mute:before
	content: "\f3b8"

.ion-android-volume-off:before
	content: "\f3b9"

.ion-android-volume-up:before
	content: "\f3ba"

.ion-android-walk:before
	content: "\f3bb"

.ion-android-warning:before
	content: "\f3bc"

.ion-android-watch:before
	content: "\f3bd"

.ion-android-wifi:before
	content: "\f305"

.ion-aperture:before
	content: "\f313"

.ion-archive:before
	content: "\f102"

.ion-arrow-down-a:before
	content: "\f103"

.ion-arrow-down-b:before
	content: "\f104"

.ion-arrow-down-c:before
	content: "\f105"

.ion-arrow-expand:before
	content: "\f25e"

.ion-arrow-graph-down-left:before
	content: "\f25f"

.ion-arrow-graph-down-right:before
	content: "\f260"

.ion-arrow-graph-up-left:before
	content: "\f261"

.ion-arrow-graph-up-right:before
	content: "\f262"

.ion-arrow-left-a:before
	content: "\f106"

.ion-arrow-left-b:before
	content: "\f107"

.ion-arrow-left-c:before
	content: "\f108"

.ion-arrow-move:before
	content: "\f263"

.ion-arrow-resize:before
	content: "\f264"

.ion-arrow-return-left:before
	content: "\f265"

.ion-arrow-return-right:before
	content: "\f266"

.ion-arrow-right-a:before
	content: "\f109"

.ion-arrow-right-b:before
	content: "\f10a"

.ion-arrow-right-c:before
	content: "\f10b"

.ion-arrow-shrink:before
	content: "\f267"

.ion-arrow-swap:before
	content: "\f268"

.ion-arrow-up-a:before
	content: "\f10c"

.ion-arrow-up-b:before
	content: "\f10d"

.ion-arrow-up-c:before
	content: "\f10e"

.ion-asterisk:before
	content: "\f314"

.ion-at:before
	content: "\f10f"

.ion-backspace:before
	content: "\f3bf"

.ion-backspace-outline:before
	content: "\f3be"

.ion-bag:before
	content: "\f110"

.ion-battery-charging:before
	content: "\f111"

.ion-battery-empty:before
	content: "\f112"

.ion-battery-full:before
	content: "\f113"

.ion-battery-half:before
	content: "\f114"

.ion-battery-low:before
	content: "\f115"

.ion-beaker:before
	content: "\f269"

.ion-beer:before
	content: "\f26a"

.ion-bluetooth:before
	content: "\f116"

.ion-bonfire:before
	content: "\f315"

.ion-bookmark:before
	content: "\f26b"

.ion-bowtie:before
	content: "\f3c0"

.ion-briefcase:before
	content: "\f26c"

.ion-bug:before
	content: "\f2be"

.ion-calculator:before
	content: "\f26d"

.ion-calendar:before
	content: "\f117"

.ion-camera:before
	content: "\f118"

.ion-card:before
	content: "\f119"

.ion-cash:before
	content: "\f316"

.ion-chatbox:before
	content: "\f11b"

.ion-chatbox-working:before
	content: "\f11a"

.ion-chatboxes:before
	content: "\f11c"

.ion-chatbubble:before
	content: "\f11e"

.ion-chatbubble-working:before
	content: "\f11d"

.ion-chatbubbles:before
	content: "\f11f"

.ion-checkmark:before
	content: "\f122"

.ion-checkmark-circled:before
	content: "\f120"

.ion-checkmark-round:before
	content: "\f121"

.ion-chevron-down:before
	content: "\f123"

.ion-chevron-left:before
	content: "\f124"

.ion-chevron-right:before
	content: "\f125"

.ion-chevron-up:before
	content: "\f126"

.ion-clipboard:before
	content: "\f127"

.ion-clock:before
	content: "\f26e"

.ion-close:before
	content: "\f12a"

.ion-close-circled:before
	content: "\f128"

.ion-close-round:before
	content: "\f129"

.ion-closed-captioning:before
	content: "\f317"

.ion-cloud:before
	content: "\f12b"

.ion-code:before
	content: "\f271"

.ion-code-download:before
	content: "\f26f"

.ion-code-working:before
	content: "\f270"

.ion-coffee:before
	content: "\f272"

.ion-compass:before
	content: "\f273"

.ion-compose:before
	content: "\f12c"

.ion-connection-bars:before
	content: "\f274"

.ion-contrast:before
	content: "\f275"

.ion-crop:before
	content: "\f3c1"

.ion-cube:before
	content: "\f318"

.ion-disc:before
	content: "\f12d"

.ion-document:before
	content: "\f12f"

.ion-document-text:before
	content: "\f12e"

.ion-drag:before
	content: "\f130"

.ion-earth:before
	content: "\f276"

.ion-easel:before
	content: "\f3c2"

.ion-edit:before
	content: "\f2bf"

.ion-egg:before
	content: "\f277"

.ion-eject:before
	content: "\f131"

.ion-email:before
	content: "\f132"

.ion-email-unread:before
	content: "\f3c3"

.ion-erlenmeyer-flask:before
	content: "\f3c5"

.ion-erlenmeyer-flask-bubbles:before
	content: "\f3c4"

.ion-eye:before
	content: "\f133"

.ion-eye-disabled:before
	content: "\f306"

.ion-female:before
	content: "\f278"

.ion-filing:before
	content: "\f134"

.ion-film-marker:before
	content: "\f135"

.ion-fireball:before
	content: "\f319"

.ion-flag:before
	content: "\f279"

.ion-flame:before
	content: "\f31a"

.ion-flash:before
	content: "\f137"

.ion-flash-off:before
	content: "\f136"

.ion-folder:before
	content: "\f139"

.ion-fork:before
	content: "\f27a"

.ion-fork-repo:before
	content: "\f2c0"

.ion-forward:before
	content: "\f13a"

.ion-funnel:before
	content: "\f31b"

.ion-gear-a:before
	content: "\f13d"

.ion-gear-b:before
	content: "\f13e"

.ion-grid:before
	content: "\f13f"

.ion-hammer:before
	content: "\f27b"

.ion-happy:before
	content: "\f31c"

.ion-happy-outline:before
	content: "\f3c6"

.ion-headphone:before
	content: "\f140"

.ion-heart:before
	content: "\f141"

.ion-heart-broken:before
	content: "\f31d"

.ion-help:before
	content: "\f143"

.ion-help-buoy:before
	content: "\f27c"

.ion-help-circled:before
	content: "\f142"

.ion-home:before
	content: "\f144"

.ion-icecream:before
	content: "\f27d"

.ion-image:before
	content: "\f147"

.ion-images:before
	content: "\f148"

.ion-information:before
	content: "\f14a"

.ion-information-circled:before
	content: "\f149"

.ion-ionic:before
	content: "\f14b"

.ion-ios-alarm:before
	content: "\f3c8"

.ion-ios-alarm-outline:before
	content: "\f3c7"

.ion-ios-albums:before
	content: "\f3ca"

.ion-ios-albums-outline:before
	content: "\f3c9"

.ion-ios-americanfootball:before
	content: "\f3cc"

.ion-ios-americanfootball-outline:before
	content: "\f3cb"

.ion-ios-analytics:before
	content: "\f3ce"

.ion-ios-analytics-outline:before
	content: "\f3cd"

.ion-ios-arrow-back:before
	content: "\f3cf"

.ion-ios-arrow-down:before
	content: "\f3d0"

.ion-ios-arrow-forward:before
	content: "\f3d1"

.ion-ios-arrow-left:before
	content: "\f3d2"

.ion-ios-arrow-right:before
	content: "\f3d3"

.ion-ios-arrow-thin-down:before
	content: "\f3d4"

.ion-ios-arrow-thin-left:before
	content: "\f3d5"

.ion-ios-arrow-thin-right:before
	content: "\f3d6"

.ion-ios-arrow-thin-up:before
	content: "\f3d7"

.ion-ios-arrow-up:before
	content: "\f3d8"

.ion-ios-at:before
	content: "\f3da"

.ion-ios-at-outline:before
	content: "\f3d9"

.ion-ios-barcode:before
	content: "\f3dc"

.ion-ios-barcode-outline:before
	content: "\f3db"

.ion-ios-baseball:before
	content: "\f3de"

.ion-ios-baseball-outline:before
	content: "\f3dd"

.ion-ios-basketball:before
	content: "\f3e0"

.ion-ios-basketball-outline:before
	content: "\f3df"

.ion-ios-bell:before
	content: "\f3e2"

.ion-ios-bell-outline:before
	content: "\f3e1"

.ion-ios-body:before
	content: "\f3e4"

.ion-ios-body-outline:before
	content: "\f3e3"

.ion-ios-bolt:before
	content: "\f3e6"

.ion-ios-bolt-outline:before
	content: "\f3e5"

.ion-ios-book:before
	content: "\f3e8"

.ion-ios-book-outline:before
	content: "\f3e7"

.ion-ios-bookmarks:before
	content: "\f3ea"

.ion-ios-bookmarks-outline:before
	content: "\f3e9"

.ion-ios-box:before
	content: "\f3ec"

.ion-ios-box-outline:before
	content: "\f3eb"

.ion-ios-briefcase:before
	content: "\f3ee"

.ion-ios-briefcase-outline:before
	content: "\f3ed"

.ion-ios-browsers:before
	content: "\f3f0"

.ion-ios-browsers-outline:before
	content: "\f3ef"

.ion-ios-calculator:before
	content: "\f3f2"

.ion-ios-calculator-outline:before
	content: "\f3f1"

.ion-ios-calendar:before
	content: "\f3f4"

.ion-ios-calendar-outline:before
	content: "\f3f3"

.ion-ios-camera:before
	content: "\f3f6"

.ion-ios-camera-outline:before
	content: "\f3f5"

.ion-ios-cart:before
	content: "\f3f8"

.ion-ios-cart-outline:before
	content: "\f3f7"

.ion-ios-chatboxes:before
	content: "\f3fa"

.ion-ios-chatboxes-outline:before
	content: "\f3f9"

.ion-ios-chatbubble:before
	content: "\f3fc"

.ion-ios-chatbubble-outline:before
	content: "\f3fb"

.ion-ios-checkmark:before
	content: "\f3ff"

.ion-ios-checkmark-empty:before
	content: "\f3fd"

.ion-ios-checkmark-outline:before
	content: "\f3fe"

.ion-ios-circle-filled:before
	content: "\f400"

.ion-ios-circle-outline:before
	content: "\f401"

.ion-ios-clock:before
	content: "\f403"

.ion-ios-clock-outline:before
	content: "\f402"

.ion-ios-close:before
	content: "\f406"

.ion-ios-close-empty:before
	content: "\f404"

.ion-ios-close-outline:before
	content: "\f405"

.ion-ios-cloud:before
	content: "\f40c"

.ion-ios-cloud-download:before
	content: "\f408"

.ion-ios-cloud-download-outline:before
	content: "\f407"

.ion-ios-cloud-outline:before
	content: "\f409"

.ion-ios-cloud-upload:before
	content: "\f40b"

.ion-ios-cloud-upload-outline:before
	content: "\f40a"

.ion-ios-cloudy:before
	content: "\f410"

.ion-ios-cloudy-night:before
	content: "\f40e"

.ion-ios-cloudy-night-outline:before
	content: "\f40d"

.ion-ios-cloudy-outline:before
	content: "\f40f"

.ion-ios-cog:before
	content: "\f412"

.ion-ios-cog-outline:before
	content: "\f411"

.ion-ios-color-filter:before
	content: "\f414"

.ion-ios-color-filter-outline:before
	content: "\f413"

.ion-ios-color-wand:before
	content: "\f416"

.ion-ios-color-wand-outline:before
	content: "\f415"

.ion-ios-compose:before
	content: "\f418"

.ion-ios-compose-outline:before
	content: "\f417"

.ion-ios-contact:before
	content: "\f41a"

.ion-ios-contact-outline:before
	content: "\f419"

.ion-ios-copy:before
	content: "\f41c"

.ion-ios-copy-outline:before
	content: "\f41b"

.ion-ios-crop:before
	content: "\f41e"

.ion-ios-crop-strong:before
	content: "\f41d"

.ion-ios-download:before
	content: "\f420"

.ion-ios-download-outline:before
	content: "\f41f"

.ion-ios-drag:before
	content: "\f421"

.ion-ios-email:before
	content: "\f423"

.ion-ios-email-outline:before
	content: "\f422"

.ion-ios-eye:before
	content: "\f425"

.ion-ios-eye-outline:before
	content: "\f424"

.ion-ios-fastforward:before
	content: "\f427"

.ion-ios-fastforward-outline:before
	content: "\f426"

.ion-ios-filing:before
	content: "\f429"

.ion-ios-filing-outline:before
	content: "\f428"

.ion-ios-film:before
	content: "\f42b"

.ion-ios-film-outline:before
	content: "\f42a"

.ion-ios-flag:before
	content: "\f42d"

.ion-ios-flag-outline:before
	content: "\f42c"

.ion-ios-flame:before
	content: "\f42f"

.ion-ios-flame-outline:before
	content: "\f42e"

.ion-ios-flask:before
	content: "\f431"

.ion-ios-flask-outline:before
	content: "\f430"

.ion-ios-flower:before
	content: "\f433"

.ion-ios-flower-outline:before
	content: "\f432"

.ion-ios-folder:before
	content: "\f435"

.ion-ios-folder-outline:before
	content: "\f434"

.ion-ios-football:before
	content: "\f437"

.ion-ios-football-outline:before
	content: "\f436"

.ion-ios-game-controller-a:before
	content: "\f439"

.ion-ios-game-controller-a-outline:before
	content: "\f438"

.ion-ios-game-controller-b:before
	content: "\f43b"

.ion-ios-game-controller-b-outline:before
	content: "\f43a"

.ion-ios-gear:before
	content: "\f43d"

.ion-ios-gear-outline:before
	content: "\f43c"

.ion-ios-glasses:before
	content: "\f43f"

.ion-ios-glasses-outline:before
	content: "\f43e"

.ion-ios-grid-view:before
	content: "\f441"

.ion-ios-grid-view-outline:before
	content: "\f440"

.ion-ios-heart:before
	content: "\f443"

.ion-ios-heart-outline:before
	content: "\f442"

.ion-ios-help:before
	content: "\f446"

.ion-ios-help-empty:before
	content: "\f444"

.ion-ios-help-outline:before
	content: "\f445"

.ion-ios-home:before
	content: "\f448"

.ion-ios-home-outline:before
	content: "\f447"

.ion-ios-infinite:before
	content: "\f44a"

.ion-ios-infinite-outline:before
	content: "\f449"

.ion-ios-information:before
	content: "\f44d"

.ion-ios-information-empty:before
	content: "\f44b"

.ion-ios-information-outline:before
	content: "\f44c"

.ion-ios-ionic-outline:before
	content: "\f44e"

.ion-ios-keypad:before
	content: "\f450"

.ion-ios-keypad-outline:before
	content: "\f44f"

.ion-ios-lightbulb:before
	content: "\f452"

.ion-ios-lightbulb-outline:before
	content: "\f451"

.ion-ios-list:before
	content: "\f454"

.ion-ios-list-outline:before
	content: "\f453"

.ion-ios-location:before
	content: "\f456"

.ion-ios-location-outline:before
	content: "\f455"

.ion-ios-locked:before
	content: "\f458"

.ion-ios-locked-outline:before
	content: "\f457"

.ion-ios-loop:before
	content: "\f45a"

.ion-ios-loop-strong:before
	content: "\f459"

.ion-ios-medical:before
	content: "\f45c"

.ion-ios-medical-outline:before
	content: "\f45b"

.ion-ios-medkit:before
	content: "\f45e"

.ion-ios-medkit-outline:before
	content: "\f45d"

.ion-ios-mic:before
	content: "\f461"

.ion-ios-mic-off:before
	content: "\f45f"

.ion-ios-mic-outline:before
	content: "\f460"

.ion-ios-minus:before
	content: "\f464"

.ion-ios-minus-empty:before
	content: "\f462"

.ion-ios-minus-outline:before
	content: "\f463"

.ion-ios-monitor:before
	content: "\f466"

.ion-ios-monitor-outline:before
	content: "\f465"

.ion-ios-moon:before
	content: "\f468"

.ion-ios-moon-outline:before
	content: "\f467"

.ion-ios-more:before
	content: "\f46a"

.ion-ios-more-outline:before
	content: "\f469"

.ion-ios-musical-note:before
	content: "\f46b"

.ion-ios-musical-notes:before
	content: "\f46c"

.ion-ios-navigate:before
	content: "\f46e"

.ion-ios-navigate-outline:before
	content: "\f46d"

.ion-ios-nutrition:before
	content: "\f470"

.ion-ios-nutrition-outline:before
	content: "\f46f"

.ion-ios-paper:before
	content: "\f472"

Download .txt
gitextract_t8xlnr9t/

├── .editorconfig
├── .gitattributes
├── .github/
│   └── workflows/
│       ├── release-test.yml
│       └── test.yml
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── app/
│   ├── Console/
│   │   ├── Commands/
│   │   │   └── .gitkeep
│   │   └── Kernel.php
│   └── Providers/
│       └── AppServiceProvider.php
├── artisan
├── bootstrap/
│   ├── app.php
│   ├── cache/
│   │   └── .gitignore
│   └── providers.php
├── changelog.md
├── composer.json
├── config/
│   ├── analytics.php
│   ├── app.php
│   ├── auth.php
│   ├── cache.php
│   ├── cors.php
│   ├── database.php
│   ├── datatables.php
│   ├── debugbar.php
│   ├── filesystems.php
│   ├── l5-swagger.php
│   ├── log-viewer.php
│   ├── logging.php
│   ├── mail.php
│   ├── queue.php
│   ├── services.php
│   ├── session.php
│   ├── translatable.php
│   └── translation-loader.php
├── database/
│   ├── .gitignore
│   └── seeders/
│       └── DatabaseSeeder.php
├── modules/
│   ├── .gitkeep
│   └── admin/
│       ├── composer.json
│       ├── database/
│       │   └── factories/
│       │       ├── CategoryFactory.php
│       │       ├── MediaFactory.php
│       │       ├── MenuFactory.php
│       │       ├── PageFactory.php
│       │       ├── PostFactory.php
│       │       └── UserFactory.php
│       └── src/
│           ├── Enums/
│           │   └── UserStatus.php
│           ├── Http/
│           │   └── Controllers/
│           │       └── DashboardController.php
│           ├── Models/
│           │   ├── Client.php
│           │   ├── Guest.php
│           │   └── User.php
│           ├── Providers/
│           │   └── AdminServiceProvider.php
│           └── resources/
│               └── views/
│                   └── dashboard/
│                       └── index.blade.php
├── package.json
├── phpunit.xml
├── postcss.config.js
├── public/
│   ├── .htaccess
│   ├── index.php
│   ├── juzaweb/
│   │   ├── .gitignore
│   │   └── .gitkeep
│   ├── modules/
│   │   ├── .gitignore
│   │   └── .gitkeep
│   ├── robots.txt
│   ├── themes/
│   │   ├── .gitignore
│   │   └── .gitkeep
│   └── vendor/
│       ├── installer/
│       │   ├── css/
│       │   │   ├── sass/
│       │   │   │   ├── _variables.sass
│       │   │   │   └── style.sass
│       │   │   ├── scss/
│       │   │   │   ├── _variables.scss
│       │   │   │   ├── font-awesome/
│       │   │   │   │   ├── _animated.scss
│       │   │   │   │   ├── _bordered-pulled.scss
│       │   │   │   │   ├── _core.scss
│       │   │   │   │   ├── _fixed-width.scss
│       │   │   │   │   ├── _icons.scss
│       │   │   │   │   ├── _larger.scss
│       │   │   │   │   ├── _list.scss
│       │   │   │   │   ├── _mixins.scss
│       │   │   │   │   ├── _path.scss
│       │   │   │   │   ├── _rotated-flipped.scss
│       │   │   │   │   ├── _screen-reader.scss
│       │   │   │   │   ├── _stacked.scss
│       │   │   │   │   ├── _variables.scss
│       │   │   │   │   └── font-awesome.scss
│       │   │   │   └── style.scss
│       │   │   └── style.css
│       │   └── fonts/
│       │       └── FontAwesome.otf
│       └── log-viewer/
│           ├── app.css
│           ├── app.js
│           └── mix-manifest.json
├── resources/
│   ├── lang/
│   │   ├── ca/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── ca.json
│   │   ├── cy/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── cy.json
│   │   ├── da/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── da.json
│   │   ├── el/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── el.json
│   │   ├── en/
│   │   │   ├── auth.php
│   │   │   ├── pagination.php
│   │   │   ├── passwords.php
│   │   │   └── validation.php
│   │   ├── en.json
│   │   └── zh/
│   │       ├── auth.php
│   │       ├── pagination.php
│   │       ├── passwords.php
│   │       └── validation.php
│   └── views/
│       ├── errors/
│       │   ├── 401.blade.php
│       │   ├── 402.blade.php
│       │   ├── 403.blade.php
│       │   ├── 404.blade.php
│       │   ├── 419.blade.php
│       │   ├── 429.blade.php
│       │   ├── 500.blade.php
│       │   ├── 503.blade.php
│       │   ├── layout.blade.php
│       │   └── minimal.blade.php
│       └── vendor/
│           ├── l5-swagger/
│           │   ├── .gitkeep
│           │   └── index.blade.php
│           └── mail/
│               ├── html/
│               │   ├── button.blade.php
│               │   ├── footer.blade.php
│               │   ├── header.blade.php
│               │   ├── layout.blade.php
│               │   ├── message.blade.php
│               │   ├── panel.blade.php
│               │   ├── subcopy.blade.php
│               │   ├── table.blade.php
│               │   └── themes/
│               │       └── default.css
│               └── text/
│                   ├── button.blade.php
│                   ├── footer.blade.php
│                   ├── header.blade.php
│                   ├── layout.blade.php
│                   ├── message.blade.php
│                   ├── panel.blade.php
│                   ├── subcopy.blade.php
│                   └── table.blade.php
├── storage/
│   ├── app/
│   │   └── .gitignore
│   ├── debugbar/
│   │   └── .gitignore
│   ├── framework/
│   │   ├── .gitignore
│   │   ├── cache/
│   │   │   └── .gitignore
│   │   ├── sessions/
│   │   │   └── .gitignore
│   │   ├── testing/
│   │   │   └── .gitignore
│   │   └── views/
│   │       └── .gitignore
│   └── logs/
│       └── .gitignore
├── tailwind.config.js
├── tests/
│   ├── CreatesApplication.php
│   ├── Feature/
│   │   └── ExampleTest.php
│   ├── TestCase.php
│   └── Unit/
│       └── ExampleTest.php
├── themes/
│   └── .gitkeep
├── vite.config.js
└── webpack.mix.js
Download .txt
SYMBOL INDEX (883 symbols across 20 files)

FILE: app/Console/Kernel.php
  class Kernel (line 8) | class Kernel extends ConsoleKernel
    method schedule (line 15) | protected function schedule(Schedule $schedule)
    method commands (line 25) | protected function commands()

FILE: app/Providers/AppServiceProvider.php
  class AppServiceProvider (line 7) | class AppServiceProvider extends ServiceProvider
    method register (line 12) | public function register(): void
    method boot (line 20) | public function boot(): void

FILE: database/seeders/DatabaseSeeder.php
  class DatabaseSeeder (line 10) | class DatabaseSeeder extends Seeder
    method run (line 15) | public function run(): void

FILE: modules/admin/database/factories/CategoryFactory.php
  class CategoryFactory (line 11) | class CategoryFactory extends Factory
    method definition (line 20) | public function definition(): array
    method withParent (line 36) | public function withParent(string $parentId): static

FILE: modules/admin/database/factories/MediaFactory.php
  class MediaFactory (line 12) | class MediaFactory extends Factory
    method definition (line 21) | public function definition(): array

FILE: modules/admin/database/factories/MenuFactory.php
  class MenuFactory (line 11) | class MenuFactory extends Factory
    method definition (line 15) | public function definition(): array

FILE: modules/admin/database/factories/PageFactory.php
  class PageFactory (line 12) | class PageFactory extends Factory
    method definition (line 21) | public function definition(): array
    method draft (line 38) | public function draft(): static
    method withTemplate (line 48) | public function withTemplate(string $template): static

FILE: modules/admin/database/factories/PostFactory.php
  class PostFactory (line 12) | class PostFactory extends Factory
    method definition (line 21) | public function definition(): array
    method draft (line 37) | public function draft(): static
    method private (line 47) | public function private(): static

FILE: modules/admin/database/factories/UserFactory.php
  class UserFactory (line 14) | class UserFactory extends Factory
    method definition (line 33) | public function definition(): array
    method unverified (line 47) | public function unverified(): static

FILE: modules/admin/src/Enums/UserStatus.php
  method all (line 19) | public static function all(): array
  method label (line 28) | public function label(): string

FILE: modules/admin/src/Http/Controllers/DashboardController.php
  class DashboardController (line 19) | class DashboardController extends AdminController
    method index (line 21) | public function index()
    method online (line 37) | public function online(): JsonResponse
    method getTotalUsers (line 44) | protected function getTotalUsers(): int

FILE: modules/admin/src/Models/Client.php
  class Client (line 19) | class Client extends BaseClient
    method skipsAuthorization (line 26) | public function skipsAuthorization(Authenticatable $user, array $scope...

FILE: modules/admin/src/Models/Guest.php
  class Guest (line 15) | class Guest extends CoreGuest

FILE: modules/admin/src/Models/User.php
  class User (line 8) | class User extends BaseUser

FILE: modules/admin/src/Providers/AdminServiceProvider.php
  class AdminServiceProvider (line 22) | class AdminServiceProvider extends BaseAdminServiceProvider
    method boot (line 24) | public function boot(): void
    method register (line 37) | public function register(): void
    method registerViews (line 44) | protected function registerViews(): void

FILE: public/vendor/log-viewer/app.js
  function o (line 2) | function o(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowe...
  function $ (line 2) | function $(e){if(v(e)){const t={};for(let n=0;n<e.length;n++){const r=e[...
  function K (line 2) | function K(e){const t={};return e.replace(Z,"").split(z).forEach((e=>{if...
  function Y (line 2) | function Y(e){let t="";if(w(e))t=e;else if(v(e))for(let n=0;n<e.length;n...
  function Q (line 2) | function Q(e){return!!e||""===e}
  function X (line 2) | function X(e,t){if(e===t)return!0;let n=m(e),r=m(t);if(n||r)return!(!n||...
  function ee (line 2) | function ee(e,t){return e.findIndex((e=>X(e,t)))}
  class le (line 2) | class le{constructor(e=!1){this.detached=e,this._active=!0,this.effects=...
    method constructor (line 2) | constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this...
    method active (line 2) | get active(){return this._active}
    method run (line 2) | run(e){if(this._active){const t=ie;try{return ie=this,e()}finally{ie=t...
    method on (line 2) | on(){ie=this}
    method off (line 2) | off(){ie=this.parent}
    method stop (line 2) | stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t<n;t++...
  function se (line 2) | function se(e){return new le(e)}
  function ue (line 2) | function ue(e,t=ie){t&&t.active&&t.effects.push(e)}
  function ce (line 2) | function ce(){return ie}
  function fe (line 2) | function fe(e){ie&&ie.cleanups.push(e)}
  class de (line 2) | class de{constructor(e,t,n,r){this.fn=e,this.trigger=t,this.scheduler=n,...
    method constructor (line 2) | constructor(e,t,n,r){this.fn=e,this.trigger=t,this.scheduler=n,this.ac...
    method dirty (line 2) | get dirty(){if(2===this._dirtyLevel||3===this._dirtyLevel){this._dirty...
    method dirty (line 2) | set dirty(e){this._dirtyLevel=e?4:0}
    method run (line 2) | run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=ye,t=a...
    method stop (line 2) | stop(){this.active&&(he(this),ve(this),this.onStop&&this.onStop(),this...
  function pe (line 2) | function pe(e){return e.value}
  function he (line 2) | function he(e){e._trackId++,e._depsLength=0}
  function ve (line 2) | function ve(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t...
  function ge (line 2) | function ge(e,t){const n=e.get(t);void 0!==n&&t._trackId!==n&&(e.delete(...
  function we (line 2) | function we(){be.push(ye),ye=!1}
  function Ce (line 2) | function Ce(){const e=be.pop();ye=void 0===e||e}
  function _e (line 2) | function _e(){me++}
  function xe (line 2) | function xe(){for(me--;!me&&ke.length;)ke.shift()()}
  function Oe (line 2) | function Oe(e,t,n){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const n...
  function Se (line 2) | function Se(e,t,n){_e();for(const n of e.keys()){let r;n._dirtyLevel<t&&...
  function je (line 2) | function je(e,t,n){if(ye&&ae){let t=Le.get(e);t||Le.set(e,t=new Map);let...
  function Te (line 2) | function Te(e,t,n,r,o,i){const a=Le.get(e);if(!a)return;let l=[];if("cle...
  function Me (line 2) | function Me(){const e={};return["includes","indexOf","lastIndexOf"].forE...
  function De (line 2) | function De(e){C(e)||(e=String(e));const t=xt(this);return je(t,0,e),t.h...
  class Be (line 2) | class Be{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get...
    method constructor (line 2) | constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}
    method get (line 2) | get(e,t,n){const r=this._isReadonly,o=this._isShallow;if("__v_isReacti...
  class Ne (line 2) | class Ne extends Be{constructor(e=!1){super(!1,e)}set(e,t,n,r){let o=e[t...
    method constructor (line 2) | constructor(e=!1){super(!1,e)}
    method set (line 2) | set(e,t,n,r){let o=e[t];if(!this._isShallow){const t=wt(o);if(Ct(n)||w...
    method deleteProperty (line 2) | deleteProperty(e,t){const n=h(e,t),r=(e[t],Reflect.deleteProperty(e,t)...
    method has (line 2) | has(e,t){const n=Reflect.has(e,t);return C(t)&&Fe.has(t)||je(e,0,t),n}
    method ownKeys (line 2) | ownKeys(e){return je(e,0,v(e)?"length":Pe),Reflect.ownKeys(e)}
  class Ue (line 2) | class Ue extends Be{constructor(e=!1){super(!0,e)}set(e,t){return!0}dele...
    method constructor (line 2) | constructor(e=!1){super(!0,e)}
    method set (line 2) | set(e,t){return!0}
    method deleteProperty (line 2) | deleteProperty(e,t){return!0}
  function We (line 2) | function We(e,t,n=!1,r=!1){const o=xt(e=e.__v_raw),i=xt(t);n||(D(t,i)&&j...
  function Ze (line 2) | function Ze(e,t=!1){const n=this.__v_raw,r=xt(n),o=xt(e);return t||(D(e,...
  function Ke (line 2) | function Ke(e,t=!1){return e=e.__v_raw,!t&&je(xt(e),0,Pe),Reflect.get(e,...
  function Ye (line 2) | function Ye(e,t=!1){t||Ct(e)||wt(e)||(e=xt(e));const n=xt(this);return z...
  function Ge (line 2) | function Ge(e,t,n=!1){n||Ct(t)||wt(t)||(t=xt(t));const r=xt(this),{has:o...
  function Je (line 2) | function Je(e){const t=xt(this),{has:n,get:r}=ze(t);let o=n.call(t,e);o|...
  function Qe (line 2) | function Qe(){const e=xt(this),t=0!==e.size,n=e.clear();return t&&Te(e,"...
  function Xe (line 2) | function Xe(e,t){return function(n,r){const o=this,i=o.__v_raw,a=xt(i),l...
  function et (line 2) | function et(e,t,n){return function(...r){const o=this.__v_raw,i=xt(o),a=...
  function tt (line 2) | function tt(e){return function(...t){return"delete"!==e&&("clear"===e?vo...
  function nt (line 2) | function nt(){const e={get(e){return We(this,e)},get size(){return Ke(th...
  function lt (line 2) | function lt(e,t){const n=t?e?at:it:e?ot:rt;return(t,r,o)=>"__v_isReactiv...
  function vt (line 2) | function vt(e){return wt(e)?e:mt(e,!1,Ve,st,ft)}
  function gt (line 2) | function gt(e){return mt(e,!1,qe,ut,dt)}
  function yt (line 2) | function yt(e){return mt(e,!0,He,ct,pt)}
  function mt (line 2) | function mt(e,t,n,r,o){if(!_(e))return e;if(e.__v_raw&&(!t||!e.__v_isRea...
  function bt (line 2) | function bt(e){return wt(e)?bt(e.__v_raw):!(!e||!e.__v_isReactive)}
  function wt (line 2) | function wt(e){return!(!e||!e.__v_isReadonly)}
  function Ct (line 2) | function Ct(e){return!(!e||!e.__v_isShallow)}
  function _t (line 2) | function _t(e){return!!e&&!!e.__v_raw}
  function xt (line 2) | function xt(e){const t=e&&e.__v_raw;return t?xt(t):e}
  function Ot (line 2) | function Ot(e){return Object.isExtensible(e)&&N(e,"__v_skip",!0),e}
  class Et (line 2) | class Et{constructor(e,t,n,r){this.getter=e,this._setter=t,this.dep=void...
    method constructor (line 2) | constructor(e,t,n,r){this.getter=e,this._setter=t,this.dep=void 0,this...
    method value (line 2) | get value(){const e=xt(this);return e._cacheable&&!e.effect.dirty||!D(...
    method value (line 2) | set value(e){this._setter(e)}
    method _dirty (line 2) | get _dirty(){return this.effect.dirty}
    method _dirty (line 2) | set _dirty(e){this.effect.dirty=e}
  function Lt (line 2) | function Lt(e,t,n=!1){let r,o;const i=b(e);i?(r=e,o=l):(r=e.get,o=e.set)...
  function Pt (line 2) | function Pt(e){var t;ye&&ae&&(e=xt(e),Oe(ae,null!=(t=e.dep)?t:e.dep=Ee((...
  function At (line 2) | function At(e,t=4,n,r){const o=(e=xt(e)).dep;o&&Se(o,t)}
  function jt (line 2) | function jt(e){return!(!e||!0!==e.__v_isRef)}
  function Tt (line 2) | function Tt(e){return Ft(e,!1)}
  function Rt (line 2) | function Rt(e){return Ft(e,!0)}
  function Ft (line 2) | function Ft(e,t){return jt(e)?e:new It(e,t)}
  class It (line 2) | class It{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_...
    method constructor (line 2) | constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!...
    method value (line 2) | get value(){return Pt(this),this._value}
    method value (line 2) | set value(e){const t=this.__v_isShallow||Ct(e)||wt(e);if(e=t?e:xt(e),D...
  function Mt (line 2) | function Mt(e){return jt(e)?e.value:e}
  function Bt (line 2) | function Bt(e){return bt(e)?e:new Proxy(e,Dt)}
  class Nt (line 2) | class Nt{constructor(e,t,n){this._object=e,this._key=t,this._defaultValu...
    method constructor (line 2) | constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,thi...
    method value (line 2) | get value(){const e=this._object[this._key];return void 0===e?this._de...
    method value (line 2) | set value(e){this._object[this._key]=e}
    method dep (line 2) | get dep(){return function(e,t){const n=Le.get(e);return n&&n.get(t)}(x...
  function Ut (line 2) | function Ut(e,t,n){const r=e[t];return jt(r)?r:new Nt(e,t,n)}
  function Vt (line 2) | function Vt(e,t,n,r){try{return r?e(...r):e()}catch(e){qt(e,t,n)}}
  function Ht (line 2) | function Ht(e,t,n,r){if(b(e)){const o=Vt(e,t,n,r);return o&&x(o)&&o.catc...
  function qt (line 2) | function qt(e,t,n,r=!0){t&&t.vnode;if(t){let r=t.parent;const o=t.proxy,...
  function Xt (line 2) | function Xt(e){const t=Qt||Jt;return e?t.then(this?e.bind(this):e):t}
  function en (line 2) | function en(e){Wt.length&&Wt.includes(e,$t&&e.allowRecurse?Zt+1:Zt)||(nu...
  function tn (line 2) | function tn(){$t||zt||(zt=!0,Qt=Jt.then(sn))}
  function nn (line 2) | function nn(e){v(e)?Kt.push(...e):Yt&&Yt.includes(e,e.allowRecurse?Gt+1:...
  function rn (line 2) | function rn(e,t,n=($t?Zt+1:0)){for(0;n<Wt.length;n++){const t=Wt[n];if(t...
  function on (line 2) | function on(e){if(Kt.length){const e=[...new Set(Kt)].sort(((e,t)=>an(e)...
  function sn (line 2) | function sn(e){zt=!1,$t=!0,Wt.sort(ln);try{for(Zt=0;Zt<Wt.length;Zt++){c...
  function fn (line 2) | function fn(e){const t=un;return un=e,cn=e&&e.type.__scopeId||null,t}
  function dn (line 2) | function dn(e,t=un,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r...
  function pn (line 2) | function pn(e,t){if(null===un)return e;const n=wi(un),r=e.dirs||(e.dirs=...
  function hn (line 2) | function hn(e,t,n,r){const o=e.dirs,i=t&&t.dirs;for(let a=0;a<o.length;a...
  function yn (line 2) | function yn(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leaving...
  method setup (line 2) | setup(e,{slots:t}){const n=ai(),r=yn();return()=>{const o=t.default&&En(...
  function _n (line 2) | function _n(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||...
  function xn (line 2) | function xn(e,t,n,r,o){const{appear:i,mode:a,persisted:l=!1,onBeforeEnte...
  function On (line 2) | function On(e){if(An(e))return(e=Ko(e)).children=null,e}
  function kn (line 2) | function kn(e){if(!An(e))return e;const{shapeFlag:t,children:n}=e;if(n){...
  function Sn (line 2) | function Sn(e,t){6&e.shapeFlag&&e.component?Sn(e.component.subTree,t):12...
  function En (line 2) | function En(e,t=!1,n){let r=[],o=0;for(let i=0;i<e.length;i++){let a=e[i...
  function Ln (line 2) | function Ln(e,t){return b(e)?(()=>f({name:e.name},t,{setup:e}))():e}
  function jn (line 2) | function jn(e,t){return v(e)?e.some((e=>jn(e,t))):w(e)?e.split(",").incl...
  function Tn (line 2) | function Tn(e,t){Fn(e,"a",t)}
  function Rn (line 2) | function Rn(e,t){Fn(e,"da",t)}
  function Fn (line 2) | function Fn(e,t,n=ii){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if...
  function In (line 2) | function In(e,t,n,r){const o=Bn(t,e,r,!0);zn((()=>{d(r[t],o)}),n)}
  function Mn (line 2) | function Mn(e){e.shapeFlag&=-257,e.shapeFlag&=-513}
  function Dn (line 2) | function Dn(e){return 128&e.shapeFlag?e.ssContent:e}
  function Bn (line 2) | function Bn(e,t,n=ii,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t._...
  function Yn (line 2) | function Yn(e,t=ii){Bn("ec",e,t)}
  function Qn (line 2) | function Qn(e,t,n=!0,r=!1){const o=un||ii;if(o){const n=o.type;if(e===Gn...
  function Xn (line 2) | function Xn(e,t){return e&&(e[t]||e[T(t)]||e[I(T(t))])}
  function er (line 2) | function er(e,t,n,r){let o;const i=n&&n[r];if(v(e)||w(e)){o=new Array(e....
  function tr (line 2) | function tr(e,t,n={},r,o){if(un.isCE||un.parent&&Pn(un.parent)&&un.paren...
  function nr (line 2) | function nr(e){return e.some((e=>!Vo(e)||e.type!==Ao&&!(e.type===Lo&&!nr...
  method get (line 2) | get({_:e},t){if("__v_skip"===t)return!0;const{ctx:n,setupState:r,data:o,...
  method set (line 2) | set({_:e},t,n){const{data:r,setupState:o,ctx:a}=e;return ir(o,t)?(o[t]=n...
  method has (line 2) | has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOption...
  method defineProperty (line 2) | defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:h(n,"value...
  function lr (line 2) | function lr(e){return v(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}
  function ur (line 2) | function ur(e){const t=dr(e),n=e.proxy,r=e.ctx;sr=!1,t.beforeCreate&&cr(...
  function cr (line 2) | function cr(e,t,n){Ht(v(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t...
  function fr (line 2) | function fr(e,t,n,r){const o=r.includes(".")?vo(n,r):()=>n[r];if(w(e)){c...
  function dr (line 2) | function dr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCa...
  function pr (line 2) | function pr(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&pr(e,i,n,!0),o&&o...
  function vr (line 2) | function vr(e,t){return t?e?function(){return f(b(e)?e.call(this,this):e...
  function gr (line 2) | function gr(e){if(v(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[...
  function yr (line 2) | function yr(e,t){return e?[...new Set([].concat(e,t))]:t}
  function mr (line 2) | function mr(e,t){return e?f(Object.create(null),e,t):t}
  function br (line 2) | function br(e,t){return e?v(e)&&v(t)?[...new Set([...e,...t])]:f(Object....
  function wr (line 2) | function wr(){return{app:null,config:{isNativeTag:s,performance:!1,globa...
  function _r (line 2) | function _r(e,t){return function(n,r=null){b(n)||(n=f({},n)),null==r||_(...
  function Or (line 2) | function Or(e,t){if(ii){let n=ii.provides;const r=ii.parent&&ii.parent.p...
  function kr (line 2) | function kr(e,t,n=!1){const r=ii||un;if(r||xr){const o=xr?xr._context.pr...
  function Pr (line 2) | function Pr(e,t,n,r){const[o,a]=e.propsOptions;let l,s=!1;if(t)for(let i...
  function Ar (line 2) | function Ar(e,t,n,r,o,i){const a=e[n];if(null!=a){const e=h(a,"default")...
  function Tr (line 2) | function Tr(e,t,n=!1){const r=n?jr:t.propsCache,o=r.get(e);if(o)return o...
  function Rr (line 2) | function Rr(e){return"$"!==e[0]&&!P(e)}
  function Hr (line 2) | function Hr(e,t,n,r,o=!1){if(v(e))return void e.forEach(((e,i)=>Hr(e,t&&...
  method process (line 2) | process(e,t,n,r,o,i,a,l,s,u){const{mc:c,pc:f,pbc:d,o:{insert:p,querySele...
  method remove (line 2) | remove(e,t,n,{um:r,o:{remove:o}},i){const{shapeFlag:a,children:l,anchor:...
  function Yr (line 2) | function Yr(e,t,n,{o:{insert:r},m:o},i=2){0===i&&r(e.targetAnchor,t,n);c...
  function Jr (line 2) | function Jr(e){const t=e.ctx;if(t&&t.ut){let n=e.children[0].el;for(;n&&...
  function Qr (line 2) | function Qr(e,t,n,r){const o=t.targetStart=n(""),i=t.targetAnchor=n("");...
  function eo (line 2) | function eo(e,t){"boolean"!=typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS...
  function to (line 2) | function to({type:e,props:t},n){return"svg"===n&&"foreignObject"===e||"m...
  function no (line 2) | function no({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}
  function ro (line 2) | function ro(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}
  function oo (line 2) | function oo(e,t,n=!1){const r=e.children,o=t.children;if(v(r)&&v(o))for(...
  function io (line 2) | function io(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.as...
  function ao (line 2) | function ao(e){if(e)for(let t=0;t<e.length;t++)e[t].active=!1}
  function uo (line 2) | function uo(e,t){return po(e,null,t)}
  function fo (line 2) | function fo(e,t,n){return po(e,t,n)}
  function po (line 2) | function po(e,t,{immediate:n,deep:r,flush:o,once:a,onTrack:s,onTrigger:u...
  function ho (line 2) | function ho(e,t,n){const r=this.proxy,o=w(e)?e.includes(".")?vo(r,e):()=...
  function vo (line 2) | function vo(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e<n...
  function go (line 2) | function go(e,t=1/0,n){if(t<=0||!_(e)||e.__v_skip)return e;if((n=n||new ...
  function mo (line 2) | function mo(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||i;l...
  function bo (line 2) | function bo(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(void 0!==o)retu...
  function wo (line 2) | function wo(e,t){return!(!e||!u(t))&&(t=t.slice(2).replace(/Once$/,""),h...
  function Co (line 2) | function Co(e){const{type:t,vnode:n,proxy:r,withProxy:o,propsOptions:[i]...
  function Oo (line 2) | function Oo(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).l...
  function ko (line 2) | function ko({vnode:e,parent:t},n){for(;t;){const r=t.subTree;if(r.suspen...
  function Eo (line 2) | function Eo(e,t){t&&t.pendingBranch?v(e)?t.effects.push(...e):t.effects....
  function Fo (line 2) | function Fo(e=!1){To.push(Ro=e?null:[])}
  function Io (line 2) | function Io(){To.pop(),Ro=To[To.length-1]||null}
  function Do (line 2) | function Do(e){Mo+=e,e<0&&Ro&&(Ro.hasOnce=!0)}
  function Bo (line 2) | function Bo(e){return e.dynamicChildren=Mo>0?Ro||a:null,Io(),Mo>0&&Ro&&R...
  function No (line 2) | function No(e,t,n,r,o,i){return Bo(zo(e,t,n,r,o,i,!0))}
  function Uo (line 2) | function Uo(e,t,n,r,o){return Bo(Wo(e,t,n,r,o,!0))}
  function Vo (line 2) | function Vo(e){return!!e&&!0===e.__v_isVNode}
  function Ho (line 2) | function Ho(e,t){return e.type===t.type&&e.key===t.key}
  function zo (line 2) | function zo(e,t=null,n=null,r=0,o=null,i=(e===Lo?0:1),a=!1,l=!1){const s...
  function Zo (line 2) | function Zo(e,t=null,n=null,r=0,o=null,i=!1){if(e&&e!==Jn||(e=Ao),Vo(e))...
  function Ko (line 2) | function Ko(e,t,n=!1,r=!1){const{props:o,ref:i,patchFlag:a,children:l,tr...
  function Yo (line 2) | function Yo(e=" ",t=0){return Wo(Po,null,e,t)}
  function Go (line 2) | function Go(e,t){const n=Wo(jo,null,e);return n.staticCount=t,n}
  function Jo (line 2) | function Jo(e="",t=!1){return t?(Fo(),Uo(Ao,null,e)):Wo(Ao,null,e)}
  function Qo (line 2) | function Qo(e){return null==e||"boolean"==typeof e?Wo(Ao):v(e)?Wo(Lo,nul...
  function Xo (line 2) | function Xo(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:Ko(e)}
  function ei (line 2) | function ei(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if(...
  function ti (line 2) | function ti(e,t,n,r=null){Ht(e,t,7,[n,r])}
  function oi (line 2) | function oi(e,t,n){const r=e.type,o=(t?t.appContext:e.appContext)||ni,a=...
  function fi (line 2) | function fi(e){return 4&e.vnode.shapeFlag}
  function vi (line 2) | function vi(e,t=!1,n=!1){t&&si(t);const{props:r,children:o}=e.vnode,i=fi...
  function gi (line 2) | function gi(e,t,n){b(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=...
  function yi (line 2) | function yi(e,t,n){const r=e.type;if(!e.render){if(!t&&di&&!r.render){co...
  function bi (line 2) | function bi(e){const t=t=>{e.exposed=t||{}};return{attrs:new Proxy(e.att...
  function wi (line 2) | function wi(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(...
  function Ci (line 2) | function Ci(e,t=!0){return b(e)?e.displayName||e.name:e.name||t&&e.__name}
  function _i (line 2) | function _i(e){return b(e)&&"__vccOpts"in e}
  function Oi (line 2) | function Oi(e,t,n){const r=arguments.length;return 2===r?_(t)&&!v(t)?Vo(...
  method setScopeId (line 2) | setScopeId(e,t){e.setAttribute(t,"")}
  method insertStaticContent (line 2) | insertStaticContent(e,t,n,r,o,i){const a=n?n.previousSibling:t.lastChild...
  function Mi (line 2) | function Mi(e){const t={};for(const n in e)n in Ri||(t[n]=e[n]);if(!1===...
  function Di (line 2) | function Di(e){return V(e)}
  function Bi (line 2) | function Bi(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e[j...
  function Ni (line 2) | function Ni(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));c...
  function Ui (line 2) | function Ui(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}
  function Hi (line 2) | function Hi(e,t,n,r){const o=e._endId=++Vi,i=()=>{o===e._endId&&r()};if(...
  function qi (line 2) | function qi(e,t){const n=window.getComputedStyle(e),r=e=>(n[e]||"").spli...
  function $i (line 2) | function $i(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(....
  function zi (line 2) | function zi(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","...
  function Wi (line 2) | function Wi(){return document.body.offsetHeight}
  method beforeMount (line 2) | beforeMount(e,{value:t},{transition:n}){e[Zi]="none"===e.style.display?"...
  method mounted (line 2) | mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)}
  method updated (line 2) | updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnt...
  method beforeUnmount (line 2) | beforeUnmount(e,{value:t}){Gi(e,t)}
  function Gi (line 2) | function Gi(e,t){e.style.display=t?e[Zi]:"none",e[Ki]=!t}
  function ea (line 2) | function ea(e,t,n){if(v(n))n.forEach((n=>ea(e,t,n)));else if(null==n&&(n...
  function oa (line 2) | function oa(e,t,n,r,o,i=J(t)){r&&t.startsWith("xlink:")?null==n?e.remove...
  function ia (line 2) | function ia(e,t,n,r){e.addEventListener(t,n,r)}
  function la (line 2) | function la(e,t,n,r,o=null){const i=e[aa]||(e[aa]={}),a=i[t];if(r&&a)a.v...
  function ha (line 2) | function ha(e){e.target.composing=!0}
  function va (line 2) | function va(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchE...
  method created (line 2) | created(e,{modifiers:{lazy:t,trim:n,number:r}},o){e[ga]=pa(o);const i=r|...
  method mounted (line 2) | mounted(e,{value:t}){e.value=null==t?"":t}
  method beforeUpdate (line 2) | beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:o,number:i}},a...
  method created (line 2) | created(e,{value:t,modifiers:{number:n}},r){const o=y(t);ia(e,"change",(...
  method mounted (line 2) | mounted(e,{value:t,modifiers:{number:n}}){ba(e,t)}
  method beforeUpdate (line 2) | beforeUpdate(e,t,n){e[ga]=pa(n)}
  method updated (line 2) | updated(e,{value:t,modifiers:{number:n}}){e._assigning||ba(e,t)}
  function ba (line 2) | function ba(e,t,n){const r=e.multiple,o=v(t);if(!r||o||y(t)){for(let n=0...
  function wa (line 2) | function wa(e){return"_value"in e?e._value:e.value}
  function La (line 2) | function La(){return Ea||(Ea=eo(Sa))}
  function Pa (line 2) | function Pa(e){return e instanceof SVGElement?"svg":"function"==typeof M...
  function Aa (line 2) | function Aa(e){if(w(e)){return document.querySelector(e)}return e}
  function Ta (line 2) | function Ta(e,t,n){return Array.isArray(e)?(e.length=Math.max(e.length,t...
  function Ma (line 2) | function Ma(e){return e&&"object"==typeof e&&"[object Object]"===Object....
  function Ua (line 2) | function Ua(e,t,n){const r=new XMLHttpRequest;r.open("GET",e),r.response...
  function Va (line 2) | function Va(e){const t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send...
  function Ha (line 2) | function Ha(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(t){con...
  function Ka (line 2) | function Ka(e,t,n,r=Za){e.push(t);const o=()=>{const n=e.indexOf(t);n>-1...
  function Ya (line 2) | function Ya(e,...t){e.slice().forEach((e=>{e(...t)}))}
  function Xa (line 2) | function Xa(e,t){e instanceof Map&&t instanceof Map?t.forEach(((t,n)=>e....
  function rl (line 2) | function rl(e){return!(!jt(e)||!e.effect)}
  function ol (line 2) | function ol(e,t,n,r){const{state:o,actions:i,getters:a}=t,l=n.state.valu...
  function il (line 2) | function il(e,t,n={},r,o,i){let a;const l=nl({actions:{}},n);const s={de...
  function al (line 2) | function al(e,t,n){let r,o;const i="function"==typeof t;function a(e,n){...
  function ll (line 2) | function ll(e,t){return function(){return e.apply(t,arguments)}}
  function Tl (line 2) | function Tl(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("obje...
  function Rl (line 2) | function Rl(e,t){t=t.toLowerCase();const n=Object.keys(e);let r,o=n.leng...
  function Kl (line 2) | function Kl(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.ca...
  function Xl (line 2) | function Xl(e){return Zl.isPlainObject(e)||Zl.isArray(e)}
  function es (line 2) | function es(e){return Zl.endsWith(e,"[]")?e.slice(0,-2):e}
  function ts (line 2) | function ts(e,t,n){return e?e.concat(t).map((function(e,t){return e=es(e...
  function s (line 2) | function s(e){if(null===e)return"";if(Zl.isDate(e))return e.toISOString(...
  function u (line 2) | function u(e,n,o){let l=e;if(e&&!o&&"object"==typeof e)if(Zl.endsWith(n,...
  function os (line 2) | function os(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E...
  function is (line 2) | function is(e,t){this._pairs=[],e&&rs(e,this,t)}
  function ss (line 2) | function ss(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace...
  function us (line 2) | function us(e,t,n){if(!t)return e;const r=n&&n.encode||ss;Zl.isFunction(...
  method constructor (line 2) | constructor(){this.handlers=[]}
  method use (line 2) | use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous...
  method eject (line 2) | eject(e){this.handlers[e]&&(this.handlers[e]=null)}
  method clear (line 2) | clear(){this.handlers&&(this.handlers=[])}
  method forEach (line 2) | forEach(e){Zl.forEach(this.handlers,(function(t){null!==t&&e(t)}))}
  function t (line 2) | function t(e,n,r,o){let i=e[o++];if("__proto__"===i)return!0;const a=Num...
  function Os (line 2) | function Os(e){return e&&String(e).trim().toLowerCase()}
  function ks (line 2) | function ks(e){return!1===e||null==e?e:Zl.isArray(e)?e.map(ks):String(e)}
  function Ss (line 2) | function Ss(e,t,n,r,o){return Zl.isFunction(r)?r.call(this,t,n):(o&&(t=n...
  class Es (line 2) | class Es{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function ...
    method constructor (line 2) | constructor(e){e&&this.set(e)}
    method set (line 2) | set(e,t,n){const r=this;function o(e,t,n){const o=Os(t);if(!o)throw ne...
    method get (line 2) | get(e,t){if(e=Os(e)){const n=Zl.findKey(this,e);if(n){const e=this[n];...
    method has (line 2) | has(e,t){if(e=Os(e)){const n=Zl.findKey(this,e);return!(!n||void 0===t...
    method delete (line 2) | delete(e,t){const n=this;let r=!1;function o(e){if(e=Os(e)){const o=Zl...
    method clear (line 2) | clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){cons...
    method normalize (line 2) | normalize(e){const t=this,n={};return Zl.forEach(this,((r,o)=>{const i...
    method concat (line 2) | concat(...e){return this.constructor.concat(this,...e)}
    method toJSON (line 2) | toJSON(e){const t=Object.create(null);return Zl.forEach(this,((n,r)=>{...
    method toString (line 2) | toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t...
    method from (line 2) | static from(e){return e instanceof this?e:new this(e)}
    method concat (line 2) | static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e...
    method accessor (line 2) | static accessor(e){const t=(this[xs]=this[xs]={accessors:{}}).accessor...
  method [Symbol.iterator] (line 2) | [Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator...
  method [Symbol.toStringTag] (line 2) | get[Symbol.toStringTag](){return"AxiosHeaders"}
  method set (line 2) | set(e){this[n]=e}
  function Ps (line 2) | function Ps(e,t){const n=this||Cs,r=t||n,o=Ls.from(r.headers);let i=r.da...
  function As (line 2) | function As(e){return!(!e||!e.__CANCEL__)}
  function js (line 2) | function js(e,t,n){Jl.call(this,null==e?"canceled":e,Jl.ERR_CANCELED,t,n...
  function Rs (line 2) | function Rs(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.sta...
  method write (line 2) | write(e,t,n,r,o,i){const a=[e+"="+encodeURIComponent(t)];Zl.isNumber(n)&...
  method read (line 2) | read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]...
  method remove (line 2) | remove(e){this.write(e,"",Date.now()-864e5)}
  method write (line 2) | write(){}
  method remove (line 2) | remove(){}
  function Vs (line 2) | function Vs(e,t,n){let r=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e...
  function qs (line 2) | function qs(e,t){t=t||{};const n={};function r(e,t,n,r){return Zl.isPlai...
  function h (line 2) | function h(){u&&u(),c&&c(),r.cancelToken&&r.cancelToken.unsubscribe(a),r...
  function g (line 2) | function g(){if(!v)return;const r=Ls.from("getAllResponseHeaders"in v&&v...
  method pull (line 2) | async pull(e){try{const{done:t,value:r}=await o.next();if(t)return l(),v...
  method duplex (line 2) | get duplex(){return e=!0,"half"}
  function fu (line 2) | function fu(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.sign...
  function du (line 2) | function du(e){fu(e),e.headers=Ls.from(e.headers),e.data=Ps.call(e,e.tra...
  class mu (line 2) | class mu{constructor(e){this.defaults=e,this.interceptors={request:new c...
    method constructor (line 2) | constructor(e){this.defaults=e,this.interceptors={request:new cs,respo...
    method request (line 2) | async request(e,t){try{return await this._request(e,t)}catch(e){if(e i...
    method _request (line 2) | _request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=qs(this.def...
    method getUri (line 2) | getUri(e){return us(Vs((e=qs(this.defaults,e)).baseURL,e.url,e.allowAb...
  function t (line 2) | function t(t){return function(n,r,o){return this.request(qs(o||{},{metho...
  class wu (line 2) | class wu{constructor(e){if("function"!=typeof e)throw new TypeError("exe...
    method constructor (line 2) | constructor(e){if("function"!=typeof e)throw new TypeError("executor m...
    method throwIfRequested (line 2) | throwIfRequested(){if(this.reason)throw this.reason}
    method subscribe (line 2) | subscribe(e){this.reason?e(this.reason):this._listeners?this._listener...
    method unsubscribe (line 2) | unsubscribe(e){if(!this._listeners)return;const t=this._listeners.inde...
    method toAbortSignal (line 2) | toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return t...
    method source (line 2) | static source(){let e;return{token:new wu((function(t){e=t})),cancel:e}}
  function Eu (line 2) | function Eu(e){return e.__esModule||"Module"===e[Symbol.toStringTag]}
  function Pu (line 2) | function Pu(e,t){const n={};for(const r in t){const o=t[r];n[r]=ju(o)?o....
  function Wu (line 2) | function Wu(e){return encodeURI(""+e).replace(qu,"|").replace(Bu,"[").re...
  function Zu (line 2) | function Zu(e){return Wu(e).replace(Du,"%2B").replace(zu,"+").replace(Tu...
  function Ku (line 2) | function Ku(e){return null==e?"":function(e){return Wu(e).replace(Tu,"%2...
  function Yu (line 2) | function Yu(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}
  function Qu (line 2) | function Qu(e,t,n="/"){let r,o={},i="",a="";const l=t.indexOf("#");let s...
  function Xu (line 2) | function Xu(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e...
  function ec (line 2) | function ec(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}
  function tc (line 2) | function tc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return...
  function nc (line 2) | function nc(e,t){return ju(e)?rc(e,t):ju(t)?rc(t,e):e===t}
  function rc (line 2) | function rc(e,t){return ju(t)?e.length===t.length&&e.every(((e,n)=>e===t...
  function lc (line 2) | function lc(e){if(!e)if(Su){const t=document.querySelector("base");e=(e=...
  function uc (line 2) | function uc(e,t){return e.replace(sc,"#")+t}
  function fc (line 2) | function fc(e){let t;if("el"in e){const n=e.el,r="string"==typeof n&&n.s...
  function dc (line 2) | function dc(e,t){return(history.state?history.state.position-t:-1)+e}
  function vc (line 2) | function vc(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if...
  function gc (line 2) | function gc(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:...
  function yc (line 2) | function yc(e){const t=function(e){const{history:t,location:n}=window,r=...
  function mc (line 2) | function mc(e){return"string"==typeof e||"symbol"==typeof e}
  function Cc (line 2) | function Cc(e,t){return Lu(new Error,{type:e,[bc]:!0},t)}
  function _c (line 2) | function _c(e,t){return e instanceof Error&&bc in e&&(null==t||!!(e.type...
  function Sc (line 2) | function Sc(e,t){let n=0;for(;n<e.length&&n<t.length;){const r=t[n]-e[n]...
  function Ec (line 2) | function Ec(e,t){let n=0;const r=e.score,o=t.score;for(;n<r.length&&n<o....
  function Lc (line 2) | function Lc(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}
  function jc (line 2) | function jc(e,t,n){const r=function(e,t){const n=Lu({},Oc,t),r=[];let o=...
  function Tc (line 2) | function Tc(e,t){const n=[],r=new Map;function o(e,n,r){const l=!r,s=fun...
  function Rc (line 2) | function Rc(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}
  function Fc (line 2) | function Fc(e){const t={},n=e.props||!1;if("component"in e)t.default=n;e...
  function Ic (line 2) | function Ic(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}
  function Mc (line 2) | function Mc(e){return e.reduce(((e,t)=>Lu(e,t.meta)),{})}
  function Dc (line 2) | function Dc(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];retur...
  function Bc (line 2) | function Bc({record:e}){return!!(e.name||e.components&&Object.keys(e.com...
  function Nc (line 2) | function Nc(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0...
  function Uc (line 2) | function Uc(e){let t="";for(let n in e){const r=e[n];if(n=Zu(n).replace(...
  function Vc (line 2) | function Vc(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[...
  function Zc (line 2) | function Zc(){let e=[];return{add:function(t){return e.push(t),()=>{cons...
  function Kc (line 2) | function Kc(e,t,n,r,o,i=e=>e()){const a=r&&(r.enterCallbacks[o]=r.enterC...
  function Yc (line 2) | function Yc(e,t,n,r,o=e=>e()){const i=[];for(const l of e){0;for(const e...
  function Gc (line 2) | function Gc(e){const t=kr($c),n=kr(zc);const r=xi((()=>{const n=Mt(e.to)...
  method setup (line 2) | setup(e,{slots:t}){const n=vt(Gc(e)),{options:r}=kr($c),o=xi((()=>({[Xc(...
  function Qc (line 2) | function Qc(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}
  function ef (line 2) | function ef(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}
  method setup (line 2) | setup(e,{attrs:t,slots:n}){const r=kr(Wc),o=xi((()=>e.route||r.value)),i...
  function nf (line 2) | function nf(){return kr($c)}
  function rf (line 2) | function rf(e){return kr(zc)}
  function cf (line 2) | function cf(){return kr(sf,(()=>""+ ++uf))()}
  function ff (line 2) | function ff(e){var t;if(null==e||null==e.value)return null;let n=null!=(...
  function df (line 2) | function df(e,t,...n){if(e in t){let r=t[e];return"function"==typeof r?r...
  method constructor (line 2) | constructor(){hf(this,"current",this.detect()),hf(this,"currentId",0)}
  method set (line 2) | set(e){this.current!==e&&(this.currentId=0,this.current=e)}
  method reset (line 2) | reset(){this.set(this.detect())}
  method nextId (line 2) | nextId(){return++this.currentId}
  method isServer (line 2) | get isServer(){return"server"===this.current}
  method isClient (line 2) | get isClient(){return"client"===this.current}
  method detect (line 2) | detect(){return"undefined"==typeof window||"undefined"==typeof document?...
  function gf (line 2) | function gf(e){if(vf.isServer)return null;if(e instanceof Node)return e....
  function Cf (line 2) | function Cf(e=document.body){return null==e?[]:Array.from(e.querySelecto...
  function xf (line 2) | function xf(e,t=0){var n;return e!==(null==(n=gf(e))?void 0:n.body)&&df(...
  function Of (line 2) | function Of(e){let t=gf(e);Xt((()=>{t&&!xf(t.activeElement,0)&&Sf(e)}))}
  function Sf (line 2) | function Sf(e){null==e||e.focus({preventScroll:!0})}
  function Lf (line 2) | function Lf(e,t=e=>e){return e.slice().sort(((e,n)=>{let r=t(e),o=t(n);i...
  function Pf (line 2) | function Pf(e,t,{sorted:n=!0,relativeTo:r=null,skipElements:o=[]}={}){va...
  function Af (line 2) | function Af(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi....
  function jf (line 2) | function jf(){return Af()||/Android/gi.test(window.navigator.userAgent)}
  function Tf (line 2) | function Tf(e,t,n){vf.isServer||uo((r=>{document.addEventListener(e,t,n)...
  function Rf (line 2) | function Rf(e,t,n){vf.isServer||uo((r=>{window.addEventListener(e,t,n),r...
  function Ff (line 2) | function Ff(e,t,n=xi((()=>!0))){function r(r,o){if(!n.value||r.defaultPr...
  function If (line 2) | function If(e,t){if(e)return e;let n=null!=t?t:"button";return"string"==...
  function Mf (line 2) | function Mf(e,t){let n=Tt(If(e.value.type,e.value.as));return Vn((()=>{n...
  function Bf (line 2) | function Bf(e){var t,n;let r=null!=(t=e.innerText)?t:"",o=e.cloneNode(!0...
  function Nf (line 2) | function Nf(e){let t=Tt(""),n=Tt("");return()=>{let r=ff(e);if(!r)return...
  function Uf (line 2) | function Uf(e){return[e.screenX,e.screenY]}
  function Vf (line 2) | function Vf(){let e=Tt([-1,-1]);return{wasMoved(t){let n=Uf(t);return(e....
  function $f (line 2) | function $f(){return kr(Hf,null)}
  function zf (line 2) | function zf(e){Or(Hf,e)}
  function Kf (line 2) | function Kf(e,t){let n=t.resolveItems();if(n.length<=0)return null;let r...
  function Jf (line 2) | function Jf({visible:e=!0,features:t=0,ourProps:n,theirProps:r,...o}){va...
  function Qf (line 2) | function Qf({props:e,attrs:t,slots:n,slot:r,name:o}){var i,a;let{as:l,.....
  function Xf (line 2) | function Xf(e){return e.flatMap((e=>e.type===Lo?Xf(e.children):[e]))}
  function ed (line 2) | function ed(...e){if(0===e.length)return{};if(1===e.length)return e[0];l...
  function td (line 2) | function td(e,t=[]){let n=Object.assign({},e);for(let e of t)e in n&&del...
  function id (line 2) | function id(e){let t=kr(od,null);if(null===t){let t=new Error(`<${e} /> ...
  method setup (line 2) | setup(e,{slots:t,attrs:n}){let r=Tt(1),o=Tt(null),i=Tt(null),a=Tt([]),l=...
  method setup (line 2) | setup(e,{attrs:t,slots:n,expose:r}){var o;let i=null!=(o=e.id)?o:`headle...
  method setup (line 2) | setup(e,{attrs:t,slots:n,expose:r}){var o;let i=null!=(o=e.id)?o:`headle...
  method setup (line 2) | setup(e,{slots:t,attrs:n,expose:r}){var o;let i=null!=(o=e.id)?o:`headle...
  function cd (line 2) | function cd(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function fd (line 2) | function fd(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function dd (line 2) | function dd(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function pd (line 2) | function pd(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function hd (line 2) | function hd(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function vd (line 2) | function vd(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function gd (line 2) | function gd(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function yd (line 2) | function yd(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function md (line 2) | function md(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function bd (line 2) | function bd(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Sd (line 2) | function Sd(e){return"function"==typeof e?e():Mt(e)}
  function Ed (line 2) | function Ed(e,t){return function(...n){return new Promise(((r,o)=>{Promi...
  function Pd (line 2) | function Pd(e){return!!ce()&&(fe(e),!0)}
  function Fd (line 2) | function Fd(e,t,n={}){const r=n,{eventFilter:o=Ld}=r,i=Rd(r,["eventFilte...
  function zd (line 2) | function zd(e,t,n={}){const r=n,{eventFilter:o}=r,i=$d(r,["eventFilter"]...
  function Wd (line 2) | function Wd(e){var t;const n=Sd(e);return null!=(t=null==n?void 0:n.$el)...
  function Kd (line 2) | function Kd(...e){let t,n,r,o;if(Od(e[0])||Array.isArray(e[0])?([n,r,o]=...
  function Qd (line 2) | function Qd(e,t){return Jd[e]||t}
  function Xd (line 2) | function Xd(e){return null==e?"any":e instanceof Set?"set":e instanceof ...
  function sp (line 2) | function sp(e,t,n,r={}){var o;const{flush:i="pre",deep:a=!0,listenToStor...
  function up (line 2) | function up(e,t,n={}){const{window:r=Zd}=n;return sp(e,t,null==r?void 0:...
  function Ep (line 2) | function Ep(e){return Ep="function"==typeof Symbol&&"symbol"==typeof Sym...
  function Lp (line 2) | function Lp(e){return function(e){if(Array.isArray(e))return Pp(e)}(e)||...
  function Pp (line 2) | function Pp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array...
  function Ap (line 2) | function Ap(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){v...
  function jp (line 2) | function jp(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments...
  function Tp (line 2) | function Tp(e,t,n){return(t=function(e){var t=function(e,t){if("object"!...
  function uh (line 2) | function uh(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function fh (line 2) | function fh(e){return fh="function"==typeof Symbol&&"symbol"==typeof Sym...
  function dh (line 2) | function dh(){dh=function(){return t};var e,t={},n=Object.prototype,r=n....
  function ph (line 2) | function ph(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return v...
  function a (line 2) | function a(e){ph(i,r,o,a,l,"next",e)}
  function l (line 2) | function l(e){ph(i,r,o,a,l,"throw",e)}
  function Lh (line 2) | function Lh(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Ph (line 2) | function Ph(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Ah (line 2) | function Ah(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function jh (line 2) | function jh(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Th (line 2) | function Th(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Rh (line 2) | function Rh(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Fh (line 2) | function Fh(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Ih (line 2) | function Ih(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function rv (line 2) | function rv(e={},t=null,n=[]){for(let[r,o]of Object.entries(e))iv(n,ov(t...
  function ov (line 2) | function ov(e,t){return e?e+"["+t+"]":t}
  function iv (line 2) | function iv(e,t,n){if(Array.isArray(n))for(let[r,o]of n.entries())iv(e,o...
  function av (line 2) | function av(e,t){return e===t}
  function fv (line 2) | function fv(e){let t=kr(cv,null);if(null===t){let t=new Error(`<${e} /> ...
  method setup (line 2) | setup(e,{slots:t,attrs:n,emit:r}){let o=Tt(1),i=Tt(null),a=Tt(null),l=Tt...
  method setup (line 2) | setup(e,{attrs:t,slots:n}){var r;let o=null!=(r=e.id)?r:`headlessui-list...
  method setup (line 2) | setup(e,{attrs:t,slots:n,expose:r}){var o;let i=null!=(o=e.id)?o:`headle...
  method setup (line 2) | setup(e,{attrs:t,slots:n,expose:r}){var o;let i=null!=(o=e.id)?o:`headle...
  method setup (line 2) | setup(e,{slots:t,attrs:n,expose:r}){var o;let i=null!=(o=e.id)?o:`headle...
  function yv (line 2) | function yv(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Ev (line 2) | function Ev(e){return Ev="function"==typeof Symbol&&"symbol"==typeof Sym...
  function Lv (line 2) | function Lv(){Lv=function(){return t};var e,t={},n=Object.prototype,r=n....
  function Pv (line 2) | function Pv(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return v...
  function Av (line 2) | function Av(e){return function(){var t=this,n=arguments;return new Promi...
  function Og (line 2) | function Og(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function kg (line 2) | function kg(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Sg (line 2) | function Sg(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Vg (line 2) | function Vg(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function ty (line 2) | function ty(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function vy (line 2) | function vy(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function gy (line 2) | function gy(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function yy (line 2) | function yy(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function my (line 2) | function my(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function by (line 2) | function by(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function wy (line 2) | function wy(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Cy (line 2) | function Cy(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function Ty (line 2) | function Ty(e,t){return Fo(),No("svg",{xmlns:"http://www.w3.org/2000/svg...
  function ym (line 2) | function ym(e){return function(e){if(Array.isArray(e))return mm(e)}(e)||...
  function mm (line 2) | function mm(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array...
  function Ab (line 2) | function Ab(e){"function"==typeof queueMicrotask?queueMicrotask(e):Promi...
  function jb (line 2) | function jb(){let e=[],t={addEventListener:(e,n,r,o)=>(e.addEventListene...
  function Tb (line 2) | function Tb(e,...t){e&&t.length>0&&e.classList.add(...t)}
  function Rb (line 2) | function Rb(e,...t){e&&t.length>0&&e.classList.remove(...t)}
  function Ib (line 2) | function Ib(e,t,n,r,o,i){let a=jb(),l=void 0!==i?function(e){let t={call...
  function Mb (line 2) | function Mb(e=""){return e.split(/\s+/).filter((e=>e.length>1))}
  function Ub (line 2) | function Ub(e){return"children"in e?Ub(e.children):e.value.filter((({sta...
  function Vb (line 2) | function Vb(e){let t=Tt([]),n=Tt(!1);function r(r,o=Gf.Hidden){let i=t.v...
  method setup (line 2) | setup(e,{emit:t,attrs:n,slots:r,expose:o}){let i=Tt(0);function a(){i.va...
  method setup (line 2) | setup(e,{emit:t,attrs:n,slots:r}){let o=$f(),i=xi((()=>null===e.show&&nu...
  function Wb (line 2) | function Wb(e,t,n,r){vf.isServer||uo((o=>{(e=null!=e?e:window).addEventL...
  function Yb (line 2) | function Yb(e){if(!e)return new Set;if("function"==typeof e)return new S...
  function t (line 2) | function t(){"loading"!==document.readyState&&(e(),document.removeEventL...
  function e (line 2) | function e(e){e.target instanceof HTMLElement&&e.target!==document.body&...
  method setup (line 2) | setup(e,{attrs:t,slots:n,expose:r}){let o=Tt(null);r({el:o,$el:o});let i...
  function Qb (line 2) | function Qb(e,t){for(let n of e)if(n.contains(t))return!0;return!1}
  function Xb (line 2) | function Xb(){let e;return{before({doc:t}){var n;let r=t.documentElement...
  function ew (line 2) | function ew(e){let t={};for(let n of e)Object.assign(t,n(t));return t}
  method dispatch (line 2) | dispatch(e,...o){let i=t[e].call(n,...o);i&&(n=i,r.forEach((e=>e())))}
  method PUSH (line 2) | PUSH(e,t){var n;let r=null!=(n=this.get(e))?n:{doc:e,count:0,d:jb(),meta...
  method POP (line 2) | POP(e,t){let n=this.get(e);return n&&(n.count--,n.meta.delete(t)),this}
  method SCROLL_PREVENT (line 2) | SCROLL_PREVENT({doc:e,d:t,meta:n}){let r={doc:e,d:t,meta:ew(n)},o=[Af()?...
  method SCROLL_ALLOW (line 2) | SCROLL_ALLOW({d:e}){e.dispose()}
  method TEARDOWN (line 2) | TEARDOWN({doc:e}){this.delete(e)}
  function nw (line 2) | function nw(e,t,n){let r=function(e){let t=Rt(e.getSnapshot());return zn...
  function iw (line 2) | function iw(e,t=Tt(!0)){uo((n=>{var r;if(!t.value)return;let o=ff(e);if(...
  function lw (line 2) | function lw(){return kr(aw,!1)}
  function fw (line 2) | function fw({type:e,enabled:t,element:n,onUpdate:r}){let o=kr(uw,(()=>{}...
  method setup (line 2) | setup(e,{attrs:t,slots:n}){var r;let o=null!=(r=e.id)?r:`headlessui-desc...
  function hw (line 2) | function hw(e,t){let n=t(function(e){var t;return null!=(t=pw.get(e))?t:...
  method setup (line 2) | setup(e,{slots:t,attrs:n}){let r=Tt(null),o=xi((()=>gf(r))),i=lw(),a=kr(...
  method setup (line 2) | setup(e,{attrs:t,slots:n}){let r=vt({resolveTarget:()=>e.target});return...
  function Cw (line 2) | function Cw(e){let t=kr(ww,null);if(null===t){let t=new Error(`<${e} /> ...
  method setup (line 2) | setup(e,{emit:t,attrs:n,slots:r,expose:o}){var i,a;let l=null!=(i=e.id)?...
  method setup (line 2) | setup(e,{attrs:t,slots:n}){var r;let o=null!=(r=e.id)?r:`headlessui-dial...
  method setup (line 2) | setup(e,{attrs:t,slots:n,expose:r}){var o;let i=null!=(o=e.id)?o:`headle...
  method setup (line 2) | setup(e,{attrs:t,slots:n,expose:r}){var o;let i=null!=(o=e.id)?o:`headle...
  method setup (line 2) | setup(e,{attrs:t,slots:n}){var r;let o=null!=(r=e.id)?r:`headlessui-dial...
  function bC (line 2) | function bC(e){return bC="function"==typeof Symbol&&"symbol"==typeof Sym...
  function wC (line 2) | function wC(){wC=function(){return t};var e,t={},n=Object.prototype,r=n....
  function CC (line 2) | function CC(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return v...
  function a (line 2) | function a(e){CC(i,r,o,a,l,"next",e)}
  function l (line 2) | function l(e){CC(i,r,o,a,l,"throw",e)}
  function MC (line 2) | function MC(e,t){return function(e){if(Array.isArray(e))return e}(e)||fu...
  function DC (line 2) | function DC(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array...
  function p (line 2) | function p(e,i){if(i=Lu({},i||s.value),"string"==typeof e){const r=Qu(n,...
  function h (line 2) | function h(e){return"string"==typeof e?Qu(n,e,s.value.path):Lu({},e)}
  function v (line 2) | function v(e,t){if(u!==e)return Cc(8,{from:t,to:e})}
  function g (line 2) | function g(e){return m(e)}
  function y (line 2) | function y(e){const t=e.matched[e.matched.length-1];if(t&&t.redirect){co...
  function m (line 2) | function m(e,t){const n=u=p(e),o=s.value,i=e.state,a=e.force,l=!0===e.re...
  function b (line 2) | function b(e,t){const n=v(e,t);return n?Promise.reject(n):Promise.resolv...
  function w (line 2) | function w(e){const t=F.values().next().value;return t&&"function"==type...
  function C (line 2) | function C(e,t){let n;const[r,o,l]=function(e,t){const n=[],r=[],o=[],i=...
  function _ (line 2) | function _(e,t,n){l.list().forEach((r=>w((()=>r(e,t,n)))))}
  function x (line 2) | function x(e,t,n,r,i){const a=v(e,t);if(a)return a;const l=t===oc,u=Su?h...
  function k (line 2) | function k(){O||(O=o.listen(((e,t,n)=>{if(!I.listening)return;const r=p(...
  function P (line 2) | function P(e,t,n){A(e);const r=L.list();return r.length&&r.forEach((r=>r...
  function A (line 2) | function A(e){return S||(S=!e,k(),E.list().forEach((([t,n])=>e?n(e):t())...
  function j (line 2) | function j(t,n,r,o){const{scrollBehavior:i}=e;if(!Su||!i)return Promise....
  method install (line 2) | install(e){e.component("RouterLink",Jc),e.component("RouterView",tf),e.c...
  function M (line 2) | function M(e){return e.reduce(((e,t)=>e.then((()=>w(t)))),Promise.resolv...
  method install (line 2) | install(e){Fa(o),ja||(o._a=e,e.provide(Ia,o),e.config.globalProperties.$...
  method use (line 2) | use(e){return this._a||ja?n.push(e):r.push(e),this}
  function l (line 2) | function l(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. L...
  function s (line 2) | function s(e,t,r){for(var o,i,a=[],l=t;l<r;l+=3)o=(e[l]<<16&16711680)+(e...
  function a (line 2) | function a(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}
  function l (line 2) | function l(e,t){if(a()<t)throw new RangeError("Invalid typed array lengt...
  function s (line 2) | function s(e,t,n){if(!(s.TYPED_ARRAY_SUPPORT||this instanceof s))return ...
  function u (line 2) | function u(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" a...
  function c (line 2) | function c(e){if("number"!=typeof e)throw new TypeError('"size" argument...
  function f (line 2) | function f(e,t){if(c(t),e=l(e,t<0?0:0|p(t)),!s.TYPED_ARRAY_SUPPORT)for(v...
  function d (line 2) | function d(e,t){var n=t.length<0?0:0|p(t.length);e=l(e,n);for(var r=0;r<...
  function p (line 2) | function p(e){if(e>=a())throw new RangeError("Attempt to allocate Buffer...
  function h (line 2) | function h(e,t){if(s.isBuffer(e))return e.length;if("undefined"!=typeof ...
  function v (line 2) | function v(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)ret...
  function g (line 2) | function g(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}
  function y (line 2) | function y(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=...
  function m (line 2) | function m(e,t,n,r,o){var i,a=1,l=e.length,s=t.length;if(void 0!==r&&("u...
  function b (line 2) | function b(e,t,n,r){n=Number(n)||0;var o=e.length-n;r?(r=Number(r))>o&&(...
  function w (line 2) | function w(e,t,n,r){return q(V(t,e.length-n),e,n,r)}
  function C (line 2) | function C(e,t,n,r){return q(function(e){for(var t=[],n=0;n<e.length;++n...
  function _ (line 2) | function _(e,t,n,r){return C(e,t,n,r)}
  function x (line 2) | function x(e,t,n,r){return q(H(t),e,n,r)}
  function O (line 2) | function O(e,t,n,r){return q(function(e,t){for(var n,r,o,i=[],a=0;a<e.le...
  function k (line 2) | function k(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromBy...
  function S (line 2) | function S(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o<n;){var i,a,...
  function L (line 2) | function L(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+...
  function P (line 2) | function P(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+...
  function A (line 2) | function A(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);...
  function j (line 2) | function j(e,t,n){for(var r=e.slice(t,n),o="",i=0;i<r.length;i+=2)o+=Str...
  function T (line 2) | function T(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uin...
  function R (line 2) | function R(e,t,n,r,o,i){if(!s.isBuffer(e))throw new TypeError('"buffer" ...
  function F (line 2) | function F(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n...
  function I (line 2) | function I(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.len...
  function M (line 2) | function M(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out ...
  function D (line 2) | function D(e,t,n,r,i){return i||M(e,0,n,4),o.write(e,t,n,r,23,4),n+4}
  function B (line 2) | function B(e,t,n,r,i){return i||M(e,0,n,8),o.write(e,t,n,r,52,8),n+8}
  function U (line 2) | function U(e){return e<16?"0"+e.toString(16):e.toString(16)}
  function V (line 2) | function V(e,t){var n;t=t||1/0;for(var r=e.length,o=null,i=[],a=0;a<r;++...
  function H (line 2) | function H(e){return r.toByteArray(function(e){if((e=function(e){return ...
  function q (line 2) | function q(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);++o)t...
  function Et (line 2) | function Et(e,t,n){switch(n.length){case 0:return e.call(t);case 1:retur...
    method constructor (line 2) | constructor(e,t,n,r){this.getter=e,this._setter=t,this.dep=void 0,this...
    method value (line 2) | get value(){const e=xt(this);return e._cacheable&&!e.effect.dirty||!D(...
    method value (line 2) | set value(e){this._setter(e)}
    method _dirty (line 2) | get _dirty(){return this.effect.dirty}
    method _dirty (line 2) | set _dirty(e){this.effect.dirty=e}
  function Lt (line 2) | function Lt(e,t,n,r){for(var o=-1,i=null==e?0:e.length;++o<i;){var a=e[o...
  function Pt (line 2) | function Pt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,...
  function At (line 2) | function At(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););re...
  function jt (line 2) | function jt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e...
  function Tt (line 2) | function Tt(e,t){for(var n=-1,r=null==e?0:e.length,o=0,i=[];++n<r;){var ...
  function Rt (line 2) | function Rt(e,t){return!!(null==e?0:e.length)&&qt(e,t,0)>-1}
  function Ft (line 2) | function Ft(e,t,n){for(var r=-1,o=null==e?0:e.length;++r<o;)if(n(t,e[r])...
  function It (line 2) | function It(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n<r;)o[n...
    method constructor (line 2) | constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!...
    method value (line 2) | get value(){return Pt(this),this._value}
    method value (line 2) | set value(e){const t=this.__v_isShallow||Ct(e)||wt(e);if(e=t?e:xt(e),D...
  function Mt (line 2) | function Mt(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];r...
  function Dt (line 2) | function Dt(e,t,n,r){var o=-1,i=null==e?0:e.length;for(r&&i&&(n=e[++o]);...
  function Bt (line 2) | function Bt(e,t,n,r){var o=null==e?0:e.length;for(r&&o&&(n=e[--o]);o--;)...
  function Nt (line 2) | function Nt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e)...
    method constructor (line 2) | constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,thi...
    method value (line 2) | get value(){const e=this._object[this._key];return void 0===e?this._de...
    method value (line 2) | set value(e){this._object[this._key]=e}
    method dep (line 2) | get dep(){return function(e,t){const n=Le.get(e);return n&&n.get(t)}(x...
  function Vt (line 2) | function Vt(e,t,n){var r;return n(e,(function(e,n,o){if(t(e,n,o))return ...
  function Ht (line 2) | function Ht(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i<o;)if(t(e...
  function qt (line 2) | function qt(e,t,n){return t==t?function(e,t,n){var r=n-1,o=e.length;for(...
  function $t (line 2) | function $t(e,t,n,r){for(var o=n-1,i=e.length;++o<i;)if(r(e[o],t))return...
  function zt (line 2) | function zt(e){return e!=e}
  function Wt (line 2) | function Wt(e,t){var n=null==e?0:e.length;return n?Gt(e,t)/n:v}
  function Zt (line 2) | function Zt(e){return function(t){return null==t?o:t[e]}}
  function Kt (line 2) | function Kt(e){return function(t){return null==e?o:e[t]}}
  function Yt (line 2) | function Yt(e,t,n,r,o){return o(e,(function(e,o,i){n=r?(r=!1,e):t(n,e,o,...
  function Gt (line 2) | function Gt(e,t){for(var n,r=-1,i=e.length;++r<i;){var a=t(e[r]);a!==o&&...
  function Jt (line 2) | function Jt(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}
  function Qt (line 2) | function Qt(e){return e?e.slice(0,gn(e)+1).replace(ae,""):e}
  function Xt (line 2) | function Xt(e){return function(t){return e(t)}}
  function en (line 2) | function en(e,t){return It(t,(function(t){return e[t]}))}
  function tn (line 2) | function tn(e,t){return e.has(t)}
  function nn (line 2) | function nn(e,t){for(var n=-1,r=e.length;++n<r&&qt(t,e[n],0)>-1;);return n}
  function rn (line 2) | function rn(e,t){for(var n=e.length;n--&&qt(t,e[n],0)>-1;);return n}
  function ln (line 2) | function ln(e){return"\\"+ct[e]}
  function sn (line 2) | function sn(e){return ot.test(e)}
  function un (line 2) | function un(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){...
  function cn (line 2) | function cn(e,t){return function(n){return e(t(n))}}
  function fn (line 2) | function fn(e,t){for(var n=-1,r=e.length,o=0,i=[];++n<r;){var a=e[n];a!=...
  function dn (line 2) | function dn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[...
  function pn (line 2) | function pn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[...
  function hn (line 2) | function hn(e){return sn(e)?function(e){var t=nt.lastIndex=0;for(;nt.tes...
  function vn (line 2) | function vn(e){return sn(e)?function(e){return e.match(nt)||[]}(e):funct...
  function gn (line 2) | function gn(e){for(var t=e.length;t--&&le.test(e.charAt(t)););return t}
  function Vn (line 2) | function Vn(e){if(nl(e)&&!za(e)&&!(e instanceof zn)){if(e instanceof $n)...
  function e (line 2) | function e(){}
  function qn (line 2) | function qn(){}
  function $n (line 2) | function $n(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!...
  function zn (line 2) | function zn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,thi...
  function Wn (line 2) | function Wn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){va...
  function Zn (line 2) | function Zn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){va...
  function Kn (line 2) | function Kn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){va...
  function Yn (line 2) | function Yn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Kn;++...
  function Gn (line 2) | function Gn(e){var t=this.__data__=new Zn(e);this.size=t.size}
  function Jn (line 2) | function Jn(e,t){var n=za(e),r=!n&&$a(e),o=!n&&!r&&Ya(e),i=!n&&!r&&!o&&c...
  function Qn (line 2) | function Qn(e){var t=e.length;return t?e[Yr(0,t-1)]:o}
  function Xn (line 2) | function Xn(e,t){return Mi(jo(e),sr(t,0,e.length))}
  function er (line 2) | function er(e){return Mi(jo(e))}
  function tr (line 2) | function tr(e,t,n){(n!==o&&!Va(e[t],n)||n===o&&!(t in e))&&ar(e,t,n)}
  function nr (line 2) | function nr(e,t,n){var r=e[t];Me.call(e,t)&&Va(r,n)&&(n!==o||t in e)||ar...
  function rr (line 2) | function rr(e,t){for(var n=e.length;n--;)if(Va(e[n][0],t))return n;retur...
  function or (line 2) | function or(e,t,n,r){return pr(e,(function(e,o,i){t(r,e,n(e),i)})),r}
  function ir (line 2) | function ir(e,t){return e&&To(t,Tl(t),e)}
  function ar (line 2) | function ar(e,t,n){"__proto__"==t&&nt?nt(e,t,{configurable:!0,enumerable...
  function lr (line 2) | function lr(e,t){for(var n=-1,i=t.length,a=r(i),l=null==e;++n<i;)a[n]=l?...
  function sr (line 2) | function sr(e,t,n){return e==e&&(n!==o&&(e=e<=n?e:n),t!==o&&(e=e>=t?e:t)...
  function ur (line 2) | function ur(e,t,n,r,i,a){var l,s=1&t,u=2&t,c=4&t;if(n&&(l=i?n(e,r,i,a):n...
  function cr (line 2) | function cr(e,t,n){var r=n.length;if(null==e)return!r;for(e=Ee(e);r--;){...
  function fr (line 2) | function fr(e,t,n){if("function"!=typeof e)throw new Ae(i);return Ti((fu...
  function dr (line 2) | function dr(e,t,n,r){var o=-1,i=Rt,a=!0,l=e.length,s=[],u=t.length;if(!l...
  function vr (line 2) | function vr(e,t){var n=!0;return pr(e,(function(e,r,o){return n=!!t(e,r,...
  function gr (line 2) | function gr(e,t,n){for(var r=-1,i=e.length;++r<i;){var a=e[r],l=t(a);if(...
  function yr (line 2) | function yr(e,t){var n=[];return pr(e,(function(e,r,o){t(e,r,o)&&n.push(...
  function mr (line 2) | function mr(e,t,n,r,o){var i=-1,a=e.length;for(n||(n=bi),o||(o=[]);++i<a...
  function Cr (line 2) | function Cr(e,t){return e&&br(e,t,Tl)}
  function _r (line 2) | function _r(e,t){return e&&wr(e,t,Tl)}
  function xr (line 2) | function xr(e,t){return Tt(t,(function(t){return Qa(e[t])}))}
  function Or (line 2) | function Or(e,t){for(var n=0,r=(t=Co(t,e)).length;null!=e&&n<r;)e=e[Bi(t...
  function kr (line 2) | function kr(e,t,n){var r=t(e);return za(e)?r:Mt(r,n(e))}
  function Sr (line 2) | function Sr(e){return null==e?e===o?"[object Undefined]":"[object Null]"...
  function Er (line 2) | function Er(e,t){return e>t}
  function Lr (line 2) | function Lr(e,t){return null!=e&&Me.call(e,t)}
  function Pr (line 2) | function Pr(e,t){return null!=e&&t in Ee(e)}
  function Ar (line 2) | function Ar(e,t,n){for(var i=n?Ft:Rt,a=e[0].length,l=e.length,s=l,u=r(l)...
  function jr (line 2) | function jr(e,t,n){var r=null==(e=Pi(e,t=Co(t,e)))?e:e[Bi(Ji(t))];return...
  function Tr (line 2) | function Tr(e){return nl(e)&&Sr(e)==m}
  function Rr (line 2) | function Rr(e,t,n,r,i){return e===t||(null==e||null==t||!nl(e)&&!nl(t)?e...
  function Fr (line 2) | function Fr(e,t,n,r){var i=n.length,a=i,l=!r;if(null==e)return!a;for(e=E...
  function Ir (line 2) | function Ir(e){return!(!tl(e)||(t=e,Be&&Be in t))&&(Qa(e)?He:me).test(Ni...
  function Mr (line 2) | function Mr(e){return"function"==typeof e?e:null==e?os:"object"==typeof ...
  function Dr (line 2) | function Dr(e){if(!ki(e))return Kt(e);var t=[];for(var n in Ee(e))Me.cal...
  function Br (line 2) | function Br(e){if(!tl(e))return function(e){var t=[];if(null!=e)for(var ...
  function Nr (line 2) | function Nr(e,t){return e<t}
  function Ur (line 2) | function Ur(e,t){var n=-1,o=Za(e)?r(e.length):[];return pr(e,(function(e...
  function Vr (line 2) | function Vr(e){var t=di(e);return 1==t.length&&t[0][2]?Ei(t[0][0],t[0][1...
  function Hr (line 2) | function Hr(e,t){return _i(e)&&Si(t)?Ei(Bi(e),t):function(n){var r=El(n,...
  function qr (line 2) | function qr(e,t,n,r,i){e!==t&&br(t,(function(a,l){if(i||(i=new Gn),tl(a)...
  function $r (line 2) | function $r(e,t){var n=e.length;if(n)return wi(t+=t<0?n:0,n)?e[t]:o}
  function zr (line 2) | function zr(e,t,n){t=t.length?It(t,(function(e){return za(e)?function(t)...
  function Wr (line 2) | function Wr(e,t,n){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],l=Or(...
  function Zr (line 2) | function Zr(e,t,n,r){var o=r?$t:qt,i=-1,a=t.length,l=e;for(e===t&&(t=jo(...
  function Kr (line 2) | function Kr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var o=t[n];if(n==r||...
  function Yr (line 2) | function Yr(e,t){return e+gt(xn()*(t-e+1))}
  function Gr (line 2) | function Gr(e,t){var n="";if(!e||t<1||t>h)return n;do{t%2&&(n+=e),(t=gt(...
  function Jr (line 2) | function Jr(e,t){return Ri(Li(e,t,os),e+"")}
  function Qr (line 2) | function Qr(e){return Qn(Vl(e))}
  function Xr (line 2) | function Xr(e,t){var n=Vl(e);return Mi(n,sr(t,0,n.length))}
  function eo (line 2) | function eo(e,t,n,r){if(!tl(e))return e;for(var i=-1,a=(t=Co(t,e)).lengt...
  function ro (line 2) | function ro(e){return Mi(Vl(e))}
  function oo (line 2) | function oo(e,t,n){var o=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0...
  function io (line 2) | function io(e,t){var n;return pr(e,(function(e,r,o){return!(n=t(e,r,o))}...
  function ao (line 2) | function ao(e,t,n){var r=0,o=null==e?r:e.length;if("number"==typeof t&&t...
  function lo (line 2) | function lo(e,t,n,r){var i=0,a=null==e?0:e.length;if(0===a)return 0;for(...
  function so (line 2) | function so(e,t){for(var n=-1,r=e.length,o=0,i=[];++n<r;){var a=e[n],l=t...
  function uo (line 2) | function uo(e){return"number"==typeof e?e:ul(e)?v:+e}
  function co (line 2) | function co(e){if("string"==typeof e)return e;if(za(e))return It(e,co)+"...
  function fo (line 2) | function fo(e,t,n){var r=-1,o=Rt,i=e.length,a=!0,l=[],s=l;if(n)a=!1,o=Ft...
  function po (line 2) | function po(e,t){return null==(e=Pi(e,t=Co(t,e)))||delete e[Bi(Ji(t))]}
  function ho (line 2) | function ho(e,t,n,r){return eo(e,t,n(Or(e,t)),r)}
  function vo (line 2) | function vo(e,t,n,r){for(var o=e.length,i=r?o:-1;(r?i--:++i<o)&&t(e[i],i...
  function go (line 2) | function go(e,t){var n=e;return n instanceof zn&&(n=n.value()),Dt(t,(fun...
  function yo (line 2) | function yo(e,t,n){var o=e.length;if(o<2)return o?fo(e[0]):[];for(var i=...
  function mo (line 2) | function mo(e,t,n){for(var r=-1,i=e.length,a=t.length,l={};++r<i;){var s...
  function bo (line 2) | function bo(e){return Ka(e)?e:[]}
  function wo (line 2) | function wo(e){return"function"==typeof e?e:os}
  function Co (line 2) | function Co(e,t){return za(e)?e:_i(e,t)?[e]:Di(bl(e))}
  function xo (line 2) | function xo(e,t,n){var r=e.length;return n=n===o?r:n,!t&&n>=r?e:oo(e,t,n)}
  function ko (line 2) | function ko(e,t){if(t)return e.slice();var n=e.length,r=We?We(n):new e.c...
  function So (line 2) | function So(e){var t=new e.constructor(e.byteLength);return new ze(t).se...
  function Eo (line 2) | function Eo(e,t){var n=t?So(e.buffer):e.buffer;return new e.constructor(...
  function Lo (line 2) | function Lo(e,t){if(e!==t){var n=e!==o,r=null===e,i=e==e,a=ul(e),l=t!==o...
  function Po (line 2) | function Po(e,t,n,o){for(var i=-1,a=e.length,l=n.length,s=-1,u=t.length,...
  function Ao (line 2) | function Ao(e,t,n,o){for(var i=-1,a=e.length,l=-1,s=n.length,u=-1,c=t.le...
  function jo (line 2) | function jo(e,t){var n=-1,o=e.length;for(t||(t=r(o));++n<o;)t[n]=e[n];re...
  function To (line 2) | function To(e,t,n,r){var i=!n;n||(n={});for(var a=-1,l=t.length;++a<l;){...
  function Ro (line 2) | function Ro(e,t){return function(n,r){var o=za(n)?Lt:or,i=t?t():{};retur...
  function Fo (line 2) | function Fo(e){return Jr((function(t,n){var r=-1,i=n.length,a=i>1?n[i-1]...
  function Io (line 2) | function Io(e,t){return function(n,r){if(null==n)return n;if(!Za(n))retu...
  function Mo (line 2) | function Mo(e){return function(t,n,r){for(var o=-1,i=Ee(t),a=r(t),l=a.le...
  function Do (line 2) | function Do(e){return function(t){var n=sn(t=bl(t))?vn(t):o,r=n?n[0]:t.c...
  function Bo (line 2) | function Bo(e){return function(t){return Dt(Ql($l(t).replace(et,"")),e,"...
  function No (line 2) | function No(e){return function(){var t=arguments;switch(t.length){case 0...
  function Uo (line 2) | function Uo(e){return function(t,n,r){var i=Ee(t);if(!Za(t)){var a=ci(n,...
  function Vo (line 2) | function Vo(e){return oi((function(t){var n=t.length,r=n,a=$n.prototype....
  function Ho (line 2) | function Ho(e,t,n,i,a,l,s,u,c,d){var p=t&f,h=1&t,v=2&t,g=24&t,y=512&t,m=...
  function qo (line 2) | function qo(e,t){return function(n,r){return function(e,t,n,r){return Cr...
  function $o (line 2) | function $o(e,t){return function(n,r){var i;if(n===o&&r===o)return t;if(...
  function zo (line 2) | function zo(e){return oi((function(t){return t=It(t,Xt(ci())),Jr((functi...
  function Wo (line 2) | function Wo(e,t){var n=(t=t===o?" ":co(t)).length;if(n<2)return n?Gr(t,e...
  function Zo (line 2) | function Zo(e){return function(t,n,i){return i&&"number"!=typeof i&&Ci(t...
  function Ko (line 2) | function Ko(e){return function(t,n){return"string"==typeof t&&"string"==...
  function Yo (line 2) | function Yo(e,t,n,r,i,a,l,s,f,d){var p=8&t;t|=p?u:c,4&(t&=~(p?c:u))||(t&...
  function Go (line 2) | function Go(e){var t=Se[e];return function(e,n){if(e=yl(e),(n=null==n?0:...
  function Qo (line 2) | function Qo(e){return function(t){var n=gi(t);return n==k?un(t):n==A?pn(...
  function Xo (line 2) | function Xo(e,t,n,a,p,h,v,g){var y=2&t;if(!y&&"function"!=typeof e)throw...
  function ei (line 2) | function ei(e,t,n,r){return e===o||Va(e,Re[n])&&!Me.call(r,n)?t:e}
  function ti (line 2) | function ti(e,t,n,r,i,a){return tl(e)&&tl(t)&&(a.set(t,e),qr(e,t,o,ti,a)...
  function ni (line 2) | function ni(e){return il(e)?o:e}
  function ri (line 2) | function ri(e,t,n,r,i,a){var l=1&n,s=e.length,u=t.length;if(s!=u&&!(l&&u...
  function oi (line 2) | function oi(e){return Ri(Li(e,o,Wi),e+"")}
  function ii (line 2) | function ii(e){return kr(e,Tl,hi)}
  function ai (line 2) | function ai(e){return kr(e,Rl,vi)}
  function si (line 2) | function si(e){for(var t=e.name+"",n=Tn[t],r=Me.call(Tn,t)?n.length:0;r-...
  function ui (line 2) | function ui(e){return(Me.call(Vn,"placeholder")?Vn:e).placeholder}
  function ci (line 2) | function ci(){var e=Vn.iteratee||is;return e=e===is?Mr:e,arguments.lengt...
  function fi (line 2) | function fi(e,t){var n,r,o=e.__data__;return("string"==(r=typeof(n=t))||...
  function di (line 2) | function di(e){for(var t=Tl(e),n=t.length;n--;){var r=t[n],o=e[r];t[n]=[...
  function pi (line 2) | function pi(e,t){var n=function(e,t){return null==e?o:e[t]}(e,t);return ...
  function yi (line 2) | function yi(e,t,n){for(var r=-1,o=(t=Co(t,e)).length,i=!1;++r<o;){var a=...
  function mi (line 2) | function mi(e){return"function"!=typeof e.constructor||ki(e)?{}:Hn(Ze(e))}
  function bi (line 2) | function bi(e){return za(e)||$a(e)||!!(Je&&e&&e[Je])}
  function wi (line 2) | function wi(e,t){var n=typeof e;return!!(t=null==t?h:t)&&("number"==n||"...
  function Ci (line 2) | function Ci(e,t,n){if(!tl(n))return!1;var r=typeof t;return!!("number"==...
  function _i (line 2) | function _i(e,t){if(za(e))return!1;var n=typeof e;return!("number"!=n&&"...
  function xi (line 2) | function xi(e){var t=si(e),n=Vn[t];if("function"!=typeof n||!(t in zn.pr...
  function ki (line 2) | function ki(e){var t=e&&e.constructor;return e===("function"==typeof t&&...
  function Si (line 2) | function Si(e){return e==e&&!tl(e)}
  function Ei (line 2) | function Ei(e,t){return function(n){return null!=n&&(n[e]===t&&(t!==o||e...
  function Li (line 2) | function Li(e,t,n){return t=bn(t===o?e.length-1:t,0),function(){for(var ...
  function Pi (line 2) | function Pi(e,t){return t.length<2?e:Or(e,oo(t,0,-1))}
  function Ai (line 2) | function Ai(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__pro...
  function Fi (line 2) | function Fi(e,t,n){var r=t+"";return Ri(e,function(e,t){var n=t.length;i...
  function Ii (line 2) | function Ii(e){var t=0,n=0;return function(){var r=Cn(),i=16-(r-n);if(n=...
  function Mi (line 2) | function Mi(e,t){var n=-1,r=e.length,i=r-1;for(t=t===o?r:t;++n<t;){var a...
  function Bi (line 2) | function Bi(e){if("string"==typeof e||ul(e))return e;var t=e+"";return"0...
  function Ni (line 2) | function Ni(e){if(null!=e){try{return Ie.call(e)}catch(e){}try{return e+...
  function Ui (line 2) | function Ui(e){if(e instanceof zn)return e.clone();var t=new $n(e.__wrap...
  function $i (line 2) | function $i(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=null==n...
  function zi (line 2) | function zi(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;ret...
  function Wi (line 2) | function Wi(e){return(null==e?0:e.length)?mr(e,1):[]}
  function Zi (line 2) | function Zi(e){return e&&e.length?e[0]:o}
  function Ji (line 2) | function Ji(e){var t=null==e?0:e.length;return t?e[t-1]:o}
  function Xi (line 2) | function Xi(e,t){return e&&e.length&&t&&t.length?Zr(e,t):e}
  function ta (line 2) | function ta(e){return null==e?e:On.call(e)}
  function ia (line 2) | function ia(e){if(!e||!e.length)return[];var t=0;return e=Tt(e,(function...
  function aa (line 2) | function aa(e,t){if(!e||!e.length)return[];var n=ia(e);return null==t?n:...
  function pa (line 2) | function pa(e){var t=Vn(e);return t.__chain__=!0,t}
  function ha (line 2) | function ha(e,t){return t(e)}
  function ba (line 2) | function ba(e,t){return(za(e)?Pt:pr)(e,ci(t,3))}
  function wa (line 2) | function wa(e,t){return(za(e)?At:hr)(e,ci(t,3))}
  function Oa (line 2) | function Oa(e,t){return(za(e)?It:Ur)(e,ci(t,3))}
  function La (line 2) | function La(e,t,n){return t=n?o:t,t=e&&null==t?e.length:t,Xo(e,f,o,o,o,o...
  function Pa (line 2) | function Pa(e,t){var n;if("function"!=typeof t)throw new Ae(i);return e=...
  function Ta (line 2) | function Ta(e,t,n){var r,a,l,s,u,c,f=0,d=!1,p=!1,h=!0;if("function"!=typ...
  function Ia (line 2) | function Ia(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)...
  function Ma (line 2) | function Ma(e){if("function"!=typeof e)throw new Ae(i);return function()...
  function Va (line 2) | function Va(e,t){return e===t||e!=e&&t!=t}
  function Za (line 2) | function Za(e){return null!=e&&el(e.length)&&!Qa(e)}
  function Ka (line 2) | function Ka(e){return nl(e)&&Za(e)}
  function Ja (line 2) | function Ja(e){if(!nl(e))return!1;var t=Sr(e);return t==_||"[object DOME...
  function Qa (line 2) | function Qa(e){if(!tl(e))return!1;var t=Sr(e);return t==x||t==O||"[objec...
  function Xa (line 2) | function Xa(e){return"number"==typeof e&&e==vl(e)}
  function el (line 2) | function el(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=h}
  function tl (line 2) | function tl(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}
  function nl (line 2) | function nl(e){return null!=e&&"object"==typeof e}
  function ol (line 2) | function ol(e){return"number"==typeof e||nl(e)&&Sr(e)==S}
  function il (line 2) | function il(e){if(!nl(e)||Sr(e)!=E)return!1;var t=Ze(e);if(null===t)retu...
  function sl (line 2) | function sl(e){return"string"==typeof e||!za(e)&&nl(e)&&Sr(e)==j}
  function ul (line 2) | function ul(e){return"symbol"==typeof e||nl(e)&&Sr(e)==T}
  function pl (line 2) | function pl(e){if(!e)return[];if(Za(e))return sl(e)?vn(e):jo(e);if(Qe&&e...
  function hl (line 2) | function hl(e){return e?(e=yl(e))===p||e===-1/0?17976931348623157e292*(e...
  function vl (line 2) | function vl(e){var t=hl(e),n=t%1;return t==t?n?t-n:t:0}
  function gl (line 2) | function gl(e){return e?sr(vl(e),0,g):0}
  function yl (line 2) | function yl(e){if("number"==typeof e)return e;if(ul(e))return v;if(tl(e)...
  function ml (line 2) | function ml(e){return To(e,Rl(e))}
  function bl (line 2) | function bl(e){return null==e?"":co(e)}
  function El (line 2) | function El(e,t,n){var r=null==e?o:Or(e,t);return r===o?n:r}
  function Ll (line 2) | function Ll(e,t){return null!=e&&yi(e,t,Pr)}
  function Tl (line 2) | function Tl(e){return Za(e)?Jn(e):Dr(e)}
  function Rl (line 2) | function Rl(e){return Za(e)?Jn(e,!0):Br(e)}
  function Bl (line 2) | function Bl(e,t){if(null==e)return{};var n=It(ai(e),(function(e){return[...
  function Vl (line 2) | function Vl(e){return null==e?[]:en(e,Tl(e))}
  function ql (line 2) | function ql(e){return Jl(bl(e).toLowerCase())}
  function $l (line 2) | function $l(e){return(e=bl(e))&&e.replace(Ce,on).replace(tt,"")}
  function Ql (line 2) | function Ql(e,t,n){return e=bl(e),(t=n?o:t)===o?function(e){return it.te...
  function ts (line 2) | function ts(e){return function(){return e}}
  function os (line 2) | function os(e){return e}
  function is (line 2) | function is(e){return Mr("function"==typeof e?e:ur(e,1))}
  function ss (line 2) | function ss(e,t,n){var r=Tl(t),o=xr(t,r);null!=n||tl(t)&&(o.length||!r.l...
  function us (line 2) | function us(){}
  function ps (line 2) | function ps(e){return _i(e)?Zt(Bi(e)):function(e){return function(t){ret...
  function gs (line 2) | function gs(){return[]}
  function ys (line 2) | function ys(){return!1}
  function o (line 2) | function o(){throw new Error("setTimeout has not been defined")}
  function i (line 2) | function i(){throw new Error("clearTimeout has not been defined")}
  function a (line 2) | function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&s...
  function f (line 2) | function f(){u&&l&&(u=!1,l.length?s=l.concat(s):c=-1,s.length&&d())}
  function d (line 2) | function d(){if(!u){var e=a(f);u=!0;for(var t=s.length;t;){for(l=s,s=[];...
  function p (line 2) | function p(e,t){this.fun=e,this.array=t}
  function h (line 2) | function h(){}
  function r (line 2) | function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={id:e...

FILE: tests/CreatesApplication.php
  type CreatesApplication (line 8) | trait CreatesApplication
    method createApplication (line 13) | public function createApplication(): Application

FILE: tests/Feature/ExampleTest.php
  class ExampleTest (line 8) | class ExampleTest extends TestCase
    method test_the_application_returns_a_successful_response (line 13) | public function test_the_application_returns_a_successful_response(): ...

FILE: tests/TestCase.php
  class TestCase (line 7) | abstract class TestCase extends BaseTestCase
    method setUp (line 11) | protected function setUp(): void

FILE: tests/Unit/ExampleTest.php
  class ExampleTest (line 7) | class ExampleTest extends TestCase
    method test_that_true_is_true (line 12) | public function test_that_true_is_true(): void
Condensed preview — 161 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,055K chars).
[
  {
    "path": ".editorconfig",
    "chars": 258,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 4\nindent_style = space\ninsert_final_newline = true\ntrim_"
  },
  {
    "path": ".gitattributes",
    "chars": 186,
    "preview": "* text=auto eol=lf\n\n*.blade.php diff=html\n*.css diff=css\n*.html diff=html\n*.md diff=markdown\n*.php diff=php\n\n/.github ex"
  },
  {
    "path": ".github/workflows/release-test.yml",
    "chars": 1423,
    "preview": "name: Release Test\n\non:\n  release:\n    types: [published]\n\njobs:\n  create-project-test:\n\n    runs-on: ubuntu-latest\n\n   "
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 1397,
    "preview": "name: Test\n\non:\n  push:\n    branches: [ \"develop\" ]\n  pull_request:\n    branches: [ \"master\", \"develop\" ]\n\njobs:\n  tests"
  },
  {
    "path": ".gitignore",
    "chars": 319,
    "preview": "/.phpunit.cache\n/node_modules\n/public/build\n/public/hot\n/public/storage\n/storage/*.key\n/storage/pail\n/storage/app/instal"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2045,
    "preview": "# Contributing\nContributions are welcome, and are accepted via pull requests.\nPlease review these guidelines before subm"
  },
  {
    "path": "LICENSE.md",
    "chars": 18092,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "README.md",
    "chars": 2895,
    "preview": "Juzaweb CMS - Laravel CMS for Your Project\n=====================================\n\n## About\n![https://buymeacoffee.com/ju"
  },
  {
    "path": "app/Console/Commands/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/Console/Kernel.php",
    "chars": 622,
    "preview": "<?php\n\nnamespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as C"
  },
  {
    "path": "app/Providers/AppServiceProvider.php",
    "chars": 361,
    "preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvid"
  },
  {
    "path": "artisan",
    "chars": 350,
    "preview": "#!/usr/bin/env php\n<?php\n\nuse Symfony\\Component\\Console\\Input\\ArgvInput;\n\ndefine('LARAVEL_START', microtime(true));\n\n// "
  },
  {
    "path": "bootstrap/app.php",
    "chars": 1398,
    "preview": "<?php\n\nuse Illuminate\\Foundation\\Configuration\\Exceptions;\nuse Illuminate\\Foundation\\Configuration\\Middleware;\nuse Illum"
  },
  {
    "path": "bootstrap/cache/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "bootstrap/providers.php",
    "chars": 180,
    "preview": "<?php\n\nuse App\\Providers\\AppServiceProvider;\nuse Juzaweb\\Modules\\Admin\\Providers\\AdminServiceProvider;\n\nreturn [\n    Adm"
  },
  {
    "path": "changelog.md",
    "chars": 3728,
    "preview": "### v5.0.0 \n* build(deps): update composer dependencies and regenerate the lock file.\n* refactor(ci): move create-projec"
  },
  {
    "path": "composer.json",
    "chars": 3442,
    "preview": "{\n    \"name\": \"juzaweb/cms\",\n    \"type\": \"project\",\n    \"homepage\": \"https://juzaweb.com\",\n    \"description\": \"Juzaweb C"
  },
  {
    "path": "config/analytics.php",
    "chars": 1019,
    "preview": "<?php\n\nreturn [\n\n    /*\n     * The property id of which you want to display data.\n     */\n    'property_id' => env('ANAL"
  },
  {
    "path": "config/app.php",
    "chars": 7078,
    "preview": "<?php\n\nuse Illuminate\\Auth\\AuthServiceProvider;\nuse Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider;\nuse Illumina"
  },
  {
    "path": "config/auth.php",
    "chars": 4169,
    "preview": "<?php\n\nuse Juzaweb\\Modules\\Admin\\Models\\User;\nuse Juzaweb\\Modules\\Core\\Models\\UserSocialConnection;\n\nreturn [\n\n    /*\n  "
  },
  {
    "path": "config/cache.php",
    "chars": 3473,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/cors.php",
    "chars": 838,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Cross-Orig"
  },
  {
    "path": "config/database.php",
    "chars": 6198,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/datatables.php",
    "chars": 4118,
    "preview": "<?php\n\nuse Yajra\\DataTables\\ApiResourceDataTable;\nuse Yajra\\DataTables\\CollectionDataTable;\nuse Yajra\\DataTables\\Eloquen"
  },
  {
    "path": "config/debugbar.php",
    "chars": 13920,
    "preview": "<?php\n\nreturn [\n\n    /*\n     |--------------------------------------------------------------------------\n     | Debugbar"
  },
  {
    "path": "config/filesystems.php",
    "chars": 4131,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Fi"
  },
  {
    "path": "config/l5-swagger.php",
    "chars": 13248,
    "preview": "<?php\n\nuse L5Swagger\\Generator;\nuse OpenApi\\scan;\n\nreturn [\n    'default' => 'default',\n    'documentations' => [\n      "
  },
  {
    "path": "config/log-viewer.php",
    "chars": 11662,
    "preview": "<?php\n\nuse Opcodes\\LogViewer\\Enums\\SortingMethod;\nuse Opcodes\\LogViewer\\Enums\\SortingOrder;\nuse Opcodes\\LogViewer\\Enums\\"
  },
  {
    "path": "config/logging.php",
    "chars": 4671,
    "preview": "<?php\n\nuse Juzaweb\\Modules\\Core\\Logging\\AddCustomInformation;\nuse Monolog\\Handler\\NullHandler;\nuse Monolog\\Handler\\Strea"
  },
  {
    "path": "config/mail.php",
    "chars": 3579,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Ma"
  },
  {
    "path": "config/queue.php",
    "chars": 3828,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Qu"
  },
  {
    "path": "config/services.php",
    "chars": 1103,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Third Part"
  },
  {
    "path": "config/session.php",
    "chars": 7858,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/translatable.php",
    "chars": 5298,
    "preview": "<?php\n\nuse Astrotomic\\Translatable\\Validation\\RuleFactory;\n\nreturn [\n\n    /*\n    |--------------------------------------"
  },
  {
    "path": "config/translation-loader.php",
    "chars": 815,
    "preview": "<?php\n\nuse Juzaweb\\Modules\\Core\\Translations\\Models\\LanguageLine;\nuse Spatie\\TranslationLoader\\TranslationLoaderManager;"
  },
  {
    "path": "database/.gitignore",
    "chars": 10,
    "preview": "*.sqlite*\n"
  },
  {
    "path": "database/seeders/DatabaseSeeder.php",
    "chars": 475,
    "preview": "<?php\n\nnamespace Database\\Seeders;\n\nuse Illuminate\\Database\\Seeder;\nuse Juzaweb\\Modules\\Admin\\Models\\User;\n\n// use Illum"
  },
  {
    "path": "modules/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "modules/admin/composer.json",
    "chars": 471,
    "preview": "{\n    \"name\": \"juzaweb/admin\",\n    \"description\": \"Juzaweb CMS Admin\",\n    \"keywords\": [],\n    \"license\": \"MIT\",\n    \"ho"
  },
  {
    "path": "modules/admin/database/factories/CategoryFactory.php",
    "chars": 973,
    "preview": "<?php\n\nnamespace Juzaweb\\Modules\\Admin\\Database\\Factories;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Juza"
  },
  {
    "path": "modules/admin/database/factories/MediaFactory.php",
    "chars": 823,
    "preview": "<?php\n\nnamespace Juzaweb\\Modules\\Admin\\Database\\Factories;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Juza"
  },
  {
    "path": "modules/admin/database/factories/MenuFactory.php",
    "chars": 398,
    "preview": "<?php\n\nnamespace Juzaweb\\Modules\\Admin\\Database\\Factories;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Juza"
  },
  {
    "path": "modules/admin/database/factories/PageFactory.php",
    "chars": 1280,
    "preview": "<?php\n\nnamespace Juzaweb\\Modules\\Admin\\Database\\Factories;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Juza"
  },
  {
    "path": "modules/admin/database/factories/PostFactory.php",
    "chars": 1216,
    "preview": "<?php\n\nnamespace Juzaweb\\Modules\\Admin\\Database\\Factories;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Juza"
  },
  {
    "path": "modules/admin/database/factories/UserFactory.php",
    "chars": 1270,
    "preview": "<?php\n\nnamespace Juzaweb\\Modules\\Admin\\Database\\Factories;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Illu"
  },
  {
    "path": "modules/admin/src/Enums/UserStatus.php",
    "chars": 825,
    "preview": "<?php\n\n/**\n * JUZAWEB CMS - Laravel CMS for Your Project\n *\n * @author     The Anh Dang\n *\n * @link       https://cms.ju"
  },
  {
    "path": "modules/admin/src/Http/Controllers/DashboardController.php",
    "chars": 1233,
    "preview": "<?php\n\n/**\n * LARABIZ CMS - Full SPA Laravel CMS\n *\n * @author     The Anh Dang\n *\n * @link       https://cms.juzaweb.co"
  },
  {
    "path": "modules/admin/src/Models/Client.php",
    "chars": 611,
    "preview": "<?php\n\n/**\n * JUZAWEB CMS - Laravel CMS for Your Project\n *\n * @author     The Anh Dang\n *\n * @link       https://cms.ju"
  },
  {
    "path": "modules/admin/src/Models/Guest.php",
    "chars": 270,
    "preview": "<?php\n\n/**\n * JUZAWEB CMS - Laravel CMS for Your Project\n *\n * @author     The Anh Dang\n *\n * @link       https://cms.ju"
  },
  {
    "path": "modules/admin/src/Models/User.php",
    "chars": 188,
    "preview": "<?php\n\nnamespace Juzaweb\\Modules\\Admin\\Models;\n\nuse Juzaweb\\Modules\\Core\\Models\\User as BaseUser;\nuse Laravel\\Passport\\H"
  },
  {
    "path": "modules/admin/src/Providers/AdminServiceProvider.php",
    "chars": 1299,
    "preview": "<?php\n\n/**\n * JUZAWEB CMS - Laravel CMS for Your Project\n *\n * @author     The Anh Dang\n *\n * @link       https://cms.ju"
  },
  {
    "path": "modules/admin/src/resources/views/dashboard/index.blade.php",
    "chars": 4115,
    "preview": "@extends('core::layouts.admin')\n\n@section('head')\n    <link rel=\"stylesheet\" href=\"{{ asset('assets/plugins/chartjs/Char"
  },
  {
    "path": "package.json",
    "chars": 616,
    "preview": "{\n    \"name\": \"sitecreator\",\n    \"version\": \"1.0.0\",\n    \"private\": true,\n    \"type\": \"commonjs\",\n    \"scripts\": {\n     "
  },
  {
    "path": "phpunit.xml",
    "chars": 1226,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:noNam"
  },
  {
    "path": "postcss.config.js",
    "chars": 93,
    "preview": "export default {\n    plugins: {\n        tailwindcss: {},\n        autoprefixer: {},\n    },\n};\n"
  },
  {
    "path": "public/.htaccess",
    "chars": 740,
    "preview": "<IfModule mod_rewrite.c>\n    <IfModule mod_negotiation.c>\n        Options -MultiViews -Indexes\n    </IfModule>\n\n    Rewr"
  },
  {
    "path": "public/index.php",
    "chars": 657,
    "preview": "<?php\n\nuse Illuminate\\Http\\Request;\n\ndefine('LARAVEL_START', microtime(true));\n\nconst JW_BASE_PATH = __DIR__.'/..';\n\n// "
  },
  {
    "path": "public/juzaweb/.gitignore",
    "chars": 23,
    "preview": "*\n!.gitkeep\n!.gitignore"
  },
  {
    "path": "public/juzaweb/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "public/modules/.gitignore",
    "chars": 23,
    "preview": "*\n!.gitkeep\n!.gitignore"
  },
  {
    "path": "public/modules/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "public/robots.txt",
    "chars": 32,
    "preview": "User-agent: *\nDisallow: /search\n"
  },
  {
    "path": "public/themes/.gitignore",
    "chars": 23,
    "preview": "*\n!.gitkeep\n!.gitignore"
  },
  {
    "path": "public/themes/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "public/vendor/installer/css/sass/_variables.sass",
    "chars": 1071,
    "preview": "//colors\n$color_0: #ff0\n$color_1: #000\n$color_2:  silver\n$color_3: #666\n$color_4: #111\n$color_5: #1d73a2\n$color_6: #175c"
  },
  {
    "path": "public/vendor/installer/css/sass/style.sass",
    "chars": 51426,
    "preview": "// Variables\n@import \"variables\";\n\n//@extend-elements\n//original selectors\n//sub, sup\n.extend_1\n\tfont-size: 75%\n\tline-he"
  },
  {
    "path": "public/vendor/installer/css/scss/_variables.scss",
    "chars": 1222,
    "preview": "//colors\n$color_0: #ff0;\n$color_1: #000;\n$color_2:  silver;\n$color_3: #666;\n$color_4: #111;\n$color_5: #1d73a2;\n$color_6:"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_animated.scss",
    "chars": 715,
    "preview": "// Spinning Icons\n// --------------------------\n\n.#{$fa-css-prefix}-spin {\n  -webkit-animation: fa-spin 2s infinite line"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_bordered-pulled.scss",
    "chars": 592,
    "preview": "// Bordered & Pulled\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n  padding: .2em .25em .15em;\n  border: so"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_core.scss",
    "chars": 459,
    "preview": "// Base Class Definition\n// -------------------------\n\n.#{$fa-css-prefix} {\n  display: inline-block;\n  font: normal norm"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_fixed-width.scss",
    "chars": 120,
    "preview": "// Fixed Width Icons\n// -------------------------\n.#{$fa-css-prefix}-fw {\n  width: (18em / 14);\n  text-align: center;\n}\n"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_icons.scss",
    "chars": 50498,
    "preview": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters th"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_larger.scss",
    "chars": 375,
    "preview": "// Icon Sizes\n// -------------------------\n\n/* makes the font 33% larger relative to the icon container */\n.#{$fa-css-pr"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_list.scss",
    "chars": 378,
    "preview": "// List Icons\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n  padding-left: 0;\n  margin-left: $fa-li-width;\n  li"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_mixins.scss",
    "chars": 1637,
    "preview": "// Mixins\n// --------------------------\n\n@mixin fa-icon() {\n  display: inline-block;\n  font: normal normal normal #{$fa-"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_path.scss",
    "chars": 783,
    "preview": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('#{$fa-font-path}/f"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_rotated-flipped.scss",
    "chars": 672,
    "preview": "// Rotated & Flipped Icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90  { @include fa-icon-rotate(90deg, "
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_screen-reader.scss",
    "chars": 134,
    "preview": "// Screen Readers\n// -------------------------\n\n.sr-only { @include sr-only(); }\n.sr-only-focusable { @include sr-only-f"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_stacked.scss",
    "chars": 482,
    "preview": "// Stacked Icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n  position: relative;\n  display: inline-block;"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/_variables.scss",
    "chars": 22644,
    "preview": "// Variables\n// --------------------------\n\n$fa-font-path:        \"../fonts\" !default;\n$fa-font-size-base:   14px !defau"
  },
  {
    "path": "public/vendor/installer/css/scss/font-awesome/font-awesome.scss",
    "chars": 430,
    "preview": "/*!\n *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/lice"
  },
  {
    "path": "public/vendor/installer/css/scss/style.scss",
    "chars": 27192,
    "preview": "// Variables\n@import \"variables\";\n\n// Font Awesome\n@import \"font-awesome/font-awesome\";\n\n//@extend-elements\n//original s"
  },
  {
    "path": "public/vendor/installer/css/style.css",
    "chars": 63136,
    "preview": "@charset \"UTF-8\";\n/*!\n *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://f"
  },
  {
    "path": "public/vendor/log-viewer/app.css",
    "chars": 78863,
    "preview": "/*! tailwindcss v3.4.10 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e4e4e7;box-sizing:bord"
  },
  {
    "path": "public/vendor/log-viewer/app.js",
    "chars": 463264,
    "preview": "/*! For license information please see app.js.LICENSE.txt */\n(()=>{var e,t={267:(e,t,n)=>{\"use strict\";var r={};function"
  },
  {
    "path": "public/vendor/log-viewer/mix-manifest.json",
    "chars": 407,
    "preview": "{\n    \"/app.js\": \"/app.js?id=b5eb6497b80ecd00237a857b35fcc1d6\",\n    \"/app.css\": \"/app.css?id=bf9e77abce3da8caacd004d57e4"
  },
  {
    "path": "resources/lang/ca/auth.php",
    "chars": 273,
    "preview": "<?php\n\nreturn [\n    'failed' => 'Aquestes credencials no coincideixen amb els nostres registres.',\n    'password' => 'La"
  },
  {
    "path": "resources/lang/ca/pagination.php",
    "chars": 90,
    "preview": "<?php\n\nreturn [\n    'previous' => '&laquo; Anterior',\n    'next' => 'Següent &raquo;',\n];\n"
  },
  {
    "path": "resources/lang/ca/passwords.php",
    "chars": 407,
    "preview": "<?php\n\nreturn [\n    'reset' => 'La vostra contrasenya s\\'ha restablert!',\n    'sent' => 'Us hem enviat l\\'enllaç de rest"
  },
  {
    "path": "resources/lang/ca/validation.php",
    "chars": 7674,
    "preview": "<?php\n\nreturn [\n    'accepted' => 'El camp :attribute ha de ser acceptat.',\n    'accepted_if' => 'El camp :attribute ha "
  },
  {
    "path": "resources/lang/ca.json",
    "chars": 681,
    "preview": "{\n    \"The :attribute must contain at least one letter.\": \"L':attribute ha de contenir almenys una lletra.\",\n    \"The :a"
  },
  {
    "path": "resources/lang/cy/auth.php",
    "chars": 253,
    "preview": "<?php\n\nreturn [\n    'failed' => 'Nid yw\\'r manylion hyn yn cyfateb i\\'n cofnodion.',\n    'password' => 'Mae\\'r cyfrinair"
  },
  {
    "path": "resources/lang/cy/pagination.php",
    "chars": 89,
    "preview": "<?php\n\nreturn [\n    'previous' => '&laquo; Blaenorol',\n    'next' => 'Nesaf &raquo;',\n];\n"
  },
  {
    "path": "resources/lang/cy/passwords.php",
    "chars": 333,
    "preview": "<?php\n\nreturn [\n    'reset' => 'Mae eich cyfrinair wedi\\'i ailosod!',\n    'sent' => 'Rydym wedi e-bostio eich dolen ailo"
  },
  {
    "path": "resources/lang/cy/validation.php",
    "chars": 7211,
    "preview": "<?php\n\nreturn [\n    'accepted' => 'Rhaid derbyn y :attribute.',\n    'accepted_if' => 'Rhaid derbyn y :attribute pan fydd"
  },
  {
    "path": "resources/lang/cy.json",
    "chars": 677,
    "preview": "{\n    \"The :attribute must contain at least one letter.\": \"Rhaid i'r :attribute gynnwys o leiaf un llythyren.\",\n    \"The"
  },
  {
    "path": "resources/lang/da/auth.php",
    "chars": 237,
    "preview": "<?php\n\nreturn [\n    'failed' => 'Disse legitimationsoplysninger passer ikke med vores optegnelser.',\n    'password' => '"
  },
  {
    "path": "resources/lang/da/pagination.php",
    "chars": 87,
    "preview": "<?php\n\nreturn [\n    'previous' => '&laquo; Forrige',\n    'next' => 'Næste &raquo;',\n];\n"
  },
  {
    "path": "resources/lang/da/passwords.php",
    "chars": 343,
    "preview": "<?php\n\nreturn [\n    'reset' => 'Din adgangskode er blevet nulstillet!',\n    'sent' => 'Vi har sendt dig et link til nuls"
  },
  {
    "path": "resources/lang/da/validation.php",
    "chars": 6854,
    "preview": "<?php\n\nreturn [\n    'accepted' => ':attribute skal accepteres.',\n    'accepted_if' => ':attribute skal accepteres, når :"
  },
  {
    "path": "resources/lang/da.json",
    "chars": 643,
    "preview": "{\n    \"The :attribute must contain at least one letter.\": \":attribute skal indeholde mindst ét bogstav.\",\n    \"The :attr"
  },
  {
    "path": "resources/lang/el/auth.php",
    "chars": 278,
    "preview": "<?php\n\nreturn [\n    'failed' => 'Αυτά τα διαπιστευτήρια δεν ταιριάζουν με τα αρχεία μας.',\n    'password' => 'Ο κωδικός "
  },
  {
    "path": "resources/lang/el/pagination.php",
    "chars": 93,
    "preview": "<?php\n\nreturn [\n    'previous' => '&laquo; Προηγούμενο',\n    'next' => 'Επόμενο &raquo;',\n];\n"
  },
  {
    "path": "resources/lang/el/passwords.php",
    "chars": 389,
    "preview": "<?php\n\nreturn [\n    'reset' => 'Ο κωδικός πρόσβασής σας έχει επαναφερθεί!',\n    'sent' => 'Σας στείλαμε με email τον σύν"
  },
  {
    "path": "resources/lang/el/validation.php",
    "chars": 7828,
    "preview": "<?php\n\nreturn [\n    'accepted' => 'Το :attribute πρέπει να γίνει δεκτό.',\n    'accepted_if' => 'Το :attribute πρέπει να "
  },
  {
    "path": "resources/lang/el.json",
    "chars": 727,
    "preview": "{\n    \"The :attribute must contain at least one letter.\": \"Το :attribute πρέπει να περιέχει τουλάχιστον ένα γράμμα.\",\n  "
  },
  {
    "path": "resources/lang/en/auth.php",
    "chars": 223,
    "preview": "<?php\n\nreturn [\n    'failed' => 'These credentials do not match our records.',\n    'password' => 'The provided password "
  },
  {
    "path": "resources/lang/en/pagination.php",
    "chars": 87,
    "preview": "<?php\n\nreturn [\n    'previous' => '&laquo; Previous',\n    'next' => 'Next &raquo;',\n];\n"
  },
  {
    "path": "resources/lang/en/passwords.php",
    "chars": 297,
    "preview": "<?php\n\nreturn [\n    'reset' => 'Your password has been reset!',\n    'sent' => 'We have emailed your password reset link!"
  },
  {
    "path": "resources/lang/en/validation.php",
    "chars": 7266,
    "preview": "<?php\n\nreturn [\n    'accepted' => 'The :attribute must be accepted.',\n    'accepted_if' => 'The :attribute must be accep"
  },
  {
    "path": "resources/lang/en.json",
    "chars": 677,
    "preview": "{\n    \"The :attribute must contain at least one letter.\": \"The :attribute must contain at least one letter.\",\n    \"The :"
  },
  {
    "path": "resources/lang/zh/auth.php",
    "chars": 132,
    "preview": "<?php\n\nreturn [\n    'failed' => '这些凭证与我们的记录不匹配。',\n    'password' => '提供的密码不正确。',\n    'throttle' => '登录尝试次数过多。请在 :seconds"
  },
  {
    "path": "resources/lang/zh/pagination.php",
    "chars": 81,
    "preview": "<?php\n\nreturn [\n    'previous' => '&laquo; 上一页',\n    'next' => '下一页 &raquo;',\n];\n"
  },
  {
    "path": "resources/lang/zh/passwords.php",
    "chars": 171,
    "preview": "<?php\n\nreturn [\n    'reset' => '您的密码已重置!',\n    'sent' => '我们已发送密码重置链接到您的邮箱!',\n    'throttled' => '请稍候再试。',\n    'token' ="
  },
  {
    "path": "resources/lang/zh/validation.php",
    "chars": 5192,
    "preview": "<?php\n\nreturn [\n    'accepted' => ':attribute 必须接受。',\n    'accepted_if' => '当 :other 为 :value 时,:attribute 必须接受。',\n    '"
  },
  {
    "path": "resources/views/errors/401.blade.php",
    "chars": 276,
    "preview": "@extends('errors::minimal')\n\n@section('title', __('Unauthorized'))\n@section('code', '401')\n@section('icon', 'fas fa-lock"
  },
  {
    "path": "resources/views/errors/402.blade.php",
    "chars": 295,
    "preview": "@extends('errors::minimal')\n\n@section('title', __('Payment Required'))\n@section('code', '402')\n@section('icon', 'fas fa-"
  },
  {
    "path": "resources/views/errors/403.blade.php",
    "chars": 333,
    "preview": "@extends('errors::minimal')\n\n@section('title', __('Forbidden'))\n@section('code', '403')\n@section('icon', 'fas fa-ban')\n@"
  },
  {
    "path": "resources/views/errors/404.blade.php",
    "chars": 332,
    "preview": "@extends('errors::minimal')\n\n@section('title', __('Not Found'))\n@section('code', '404')\n@section('icon', 'fas fa-search'"
  },
  {
    "path": "resources/views/errors/419.blade.php",
    "chars": 260,
    "preview": "@extends('errors::minimal')\n\n@section('title', __('Page Expired'))\n@section('code', '419')\n@section('icon', 'fas fa-cloc"
  },
  {
    "path": "resources/views/errors/429.blade.php",
    "chars": 305,
    "preview": "@extends('errors::minimal')\n\n@section('title', __('Too Many Requests'))\n@section('code', '429')\n@section('icon', 'fas fa"
  },
  {
    "path": "resources/views/errors/500.blade.php",
    "chars": 295,
    "preview": "@extends('errors::minimal')\n\n@section('title', __('Server Error'))\n@section('code', '500')\n@section('icon', 'fas fa-serv"
  },
  {
    "path": "resources/views/errors/503.blade.php",
    "chars": 304,
    "preview": "@extends('errors::minimal')\n\n@section('title', __('Service Unavailable'))\n@section('code', '503')\n@section('icon', 'fas "
  },
  {
    "path": "resources/views/errors/layout.blade.php",
    "chars": 4013,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <meta name=\"viewport\" content=\"width="
  },
  {
    "path": "resources/views/errors/minimal.blade.php",
    "chars": 4711,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <meta name=\"viewport\" content=\"width="
  },
  {
    "path": "resources/views/vendor/l5-swagger/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "resources/views/vendor/l5-swagger/index.blade.php",
    "chars": 6123,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>{{config('l5-swagger.documentations.'.$doc"
  },
  {
    "path": "resources/views/vendor/mail/html/button.blade.php",
    "chars": 578,
    "preview": "@props([\n    'url',\n    'color' => 'primary',\n    'align' => 'center',\n])\n<table class=\"action\" align=\"{{ $align }}\" wid"
  },
  {
    "path": "resources/views/vendor/mail/html/footer.blade.php",
    "chars": 236,
    "preview": "<tr>\n<td>\n<table class=\"footer\" align=\"center\" width=\"570\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\">\n<tr>\n<td"
  },
  {
    "path": "resources/views/vendor/mail/html/header.blade.php",
    "chars": 352,
    "preview": "@props(['url'])\n<tr>\n    <td class=\"header\">\n        <a href=\"{{ $url }}\" style=\"display: inline-block;\">\n            @i"
  },
  {
    "path": "resources/views/vendor/mail/html/layout.blade.php",
    "chars": 2050,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio"
  },
  {
    "path": "resources/views/vendor/mail/html/message.blade.php",
    "chars": 740,
    "preview": "<x-mail::layout>\n    {{-- Header --}}\n    <x-slot:header>\n        <x-mail::header :url=\"config('app.url')\">\n            "
  },
  {
    "path": "resources/views/vendor/mail/html/panel.blade.php",
    "chars": 453,
    "preview": "<table class=\"panel\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\">\n    <tr>\n        <td class=\"panel"
  },
  {
    "path": "resources/views/vendor/mail/html/subcopy.blade.php",
    "chars": 201,
    "preview": "<table class=\"subcopy\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\">\n    <tr>\n        <td>\n         "
  },
  {
    "path": "resources/views/vendor/mail/html/table.blade.php",
    "chars": 72,
    "preview": "<div class=\"table\">\n{{ Illuminate\\Mail\\Markdown::parse($slot) }}\n</div>\n"
  },
  {
    "path": "resources/views/vendor/mail/html/themes/default.css",
    "chars": 4683,
    "preview": "/* Base */\n\nbody,\nbody *:not(html):not(style):not(br):not(tr):not(code) {\n    box-sizing: border-box;\n    font-family: -"
  },
  {
    "path": "resources/views/vendor/mail/text/button.blade.php",
    "chars": 24,
    "preview": "{{ $slot }}: {{ $url }}\n"
  },
  {
    "path": "resources/views/vendor/mail/text/footer.blade.php",
    "chars": 12,
    "preview": "{{ $slot }}\n"
  },
  {
    "path": "resources/views/vendor/mail/text/header.blade.php",
    "chars": 24,
    "preview": "{{ $slot }}: {{ $url }}\n"
  },
  {
    "path": "resources/views/vendor/mail/text/layout.blade.php",
    "chars": 153,
    "preview": "{!! strip_tags($header ?? '') !!}\n\n{!! strip_tags($slot) !!}\n@isset($subcopy)\n\n{!! strip_tags($subcopy) !!}\n@endisset\n\n{"
  },
  {
    "path": "resources/views/vendor/mail/text/message.blade.php",
    "chars": 647,
    "preview": "<x-mail::layout>\n    {{-- Header --}}\n    <x-slot:header>\n        <x-mail::header :url=\"config('app.url')\">\n            "
  },
  {
    "path": "resources/views/vendor/mail/text/panel.blade.php",
    "chars": 12,
    "preview": "{{ $slot }}\n"
  },
  {
    "path": "resources/views/vendor/mail/text/subcopy.blade.php",
    "chars": 12,
    "preview": "{{ $slot }}\n"
  },
  {
    "path": "resources/views/vendor/mail/text/table.blade.php",
    "chars": 12,
    "preview": "{{ $slot }}\n"
  },
  {
    "path": "storage/app/.gitignore",
    "chars": 33,
    "preview": "*\n!private/\n!public/\n!.gitignore\n"
  },
  {
    "path": "storage/debugbar/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/.gitignore",
    "chars": 119,
    "preview": "compiled.php\nconfig.php\ndown\nevents.scanned.php\nmaintenance.php\nroutes.php\nroutes.scanned.php\nschedule-*\nservices.json\n"
  },
  {
    "path": "storage/framework/cache/.gitignore",
    "chars": 21,
    "preview": "*\n!data/\n!.gitignore\n"
  },
  {
    "path": "storage/framework/sessions/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/testing/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/views/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "storage/logs/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "tailwind.config.js",
    "chars": 551,
    "preview": "import defaultTheme from 'tailwindcss/defaultTheme';\n\n/** @type {import('tailwindcss').Config} */\nexport default {\n    c"
  },
  {
    "path": "tests/CreatesApplication.php",
    "chars": 375,
    "preview": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Contracts\\Console\\Kernel;\nuse Illuminate\\Foundation\\Application;\n\ntrait CreatesA"
  },
  {
    "path": "tests/Feature/ExampleTest.php",
    "chars": 359,
    "preview": "<?php\n\nnamespace Tests\\Feature;\n\n// use Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Tests\\TestCase;\n\nclass Exampl"
  },
  {
    "path": "tests/TestCase.php",
    "chars": 238,
    "preview": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Foundation\\Testing\\TestCase as BaseTestCase;\n\nabstract class TestCase extends Ba"
  },
  {
    "path": "tests/Unit/ExampleTest.php",
    "chars": 243,
    "preview": "<?php\n\nnamespace Tests\\Unit;\n\nuse PHPUnit\\Framework\\TestCase;\n\nclass ExampleTest extends TestCase\n{\n    /**\n     * A bas"
  },
  {
    "path": "themes/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "vite.config.js",
    "chars": 263,
    "preview": "import { defineConfig } from 'vite';\nimport laravel from 'laravel-vite-plugin';\n\nexport default defineConfig({\n    plugi"
  },
  {
    "path": "webpack.mix.js",
    "chars": 792,
    "preview": "let mix = require('laravel-mix');\nrequire('laravel-mix-merge-manifest');\n\nconst modulePath = `${__dirname}/modules`;\ncon"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the juzaweb/juzacms GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 161 files (975.6 KB), approximately 334.0k tokens, and a symbol index with 883 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!