Full Code of supunlakmal/thismypc for AI

master 3f0c0cbd98b3 cached
1506 files
38.7 MB
10.2M tokens
8420 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (41,228K chars total). Download the full file to get everything.
Repository: supunlakmal/thismypc
Branch: master
Commit: 3f0c0cbd98b3
Files: 1506
Total size: 38.7 MB

Directory structure:
gitextract_bb8nwbbk/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   └── workflows/
│       └── yarn-build-test.yml
├── .gitignore
├── .gitlab-ci.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── thisMyPCApp/
│   ├── .eslintrc.js
│   ├── README.md
│   ├── assets/
│   │   ├── css/
│   │   │   ├── home.css
│   │   │   └── login.css
│   │   ├── js/
│   │   │   ├── home.js
│   │   │   └── login.js
│   │   └── libs/
│   │       └── socket.io.js
│   ├── html/
│   │   ├── index.html
│   │   └── login.html
│   ├── log.txt
│   ├── main.js
│   ├── package.json
│   └── setup.js
├── thisMyPCServer/
│   ├── .eslintrc.js
│   ├── .gitignore
│   ├── components/
│   │   ├── api.components.js
│   │   ├── computer.components.js
│   │   ├── logger.js
│   │   └── user.components.js
│   ├── config/
│   │   ├── config.js
│   │   └── db.js
│   ├── delete_code_from_index.txt
│   ├── example.env
│   ├── index.js
│   ├── models/
│   │   ├── PCOwner.js
│   │   ├── UserLog.js
│   │   ├── admin.js
│   │   ├── appNotification.js
│   │   ├── pc.js
│   │   ├── software.js
│   │   ├── user.js
│   │   └── userAndPC.js
│   ├── mongo.MD
│   └── package.json
├── thisMyPCWeb/
│   ├── angular-deprecated/
│   │   ├── .editorconfig
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── angular.json
│   │   ├── e2e/
│   │   │   ├── protractor.conf.js
│   │   │   ├── src/
│   │   │   │   ├── app.e2e-spec.ts
│   │   │   │   └── app.po.ts
│   │   │   └── tsconfig.e2e.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── app-routing.module.ts
│   │   │   │   ├── app.component.css
│   │   │   │   ├── app.component.html
│   │   │   │   ├── app.component.spec.ts
│   │   │   │   ├── app.component.ts
│   │   │   │   ├── app.module.ts
│   │   │   │   ├── auth/
│   │   │   │   │   ├── auth.guard.spec.ts
│   │   │   │   │   ├── auth.guard.ts
│   │   │   │   │   ├── auth.service.spec.ts
│   │   │   │   │   └── auth.service.ts
│   │   │   │   ├── components/
│   │   │   │   │   ├── account/
│   │   │   │   │   │   ├── account.component.css
│   │   │   │   │   │   ├── account.component.html
│   │   │   │   │   │   ├── account.component.spec.ts
│   │   │   │   │   │   └── account.component.ts
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── config.js
│   │   │   │   │   ├── home/
│   │   │   │   │   │   ├── home.component.css
│   │   │   │   │   │   ├── home.component.html
│   │   │   │   │   │   ├── home.component.spec.ts
│   │   │   │   │   │   └── home.component.ts
│   │   │   │   │   └── system/
│   │   │   │   │       ├── system.component.css
│   │   │   │   │       ├── system.component.html
│   │   │   │   │       ├── system.component.spec.ts
│   │   │   │   │       └── system.component.ts
│   │   │   │   └── guards/
│   │   │   │       └── auth-guard.service.ts
│   │   │   ├── assets/
│   │   │   │   ├── css/
│   │   │   │   │   ├── introjs.css
│   │   │   │   │   └── main.css
│   │   │   │   ├── fonts/
│   │   │   │   │   └── flaticon/
│   │   │   │   │       ├── backup.txt
│   │   │   │   │       └── font/
│   │   │   │   │           ├── _flaticon.scss
│   │   │   │   │           ├── flaticon.css
│   │   │   │   │           └── flaticon.html
│   │   │   │   ├── images/
│   │   │   │   │   └── feedback/
│   │   │   │   │       ├── Jacob-Bogers.jfif
│   │   │   │   │       └── aditya.jfif
│   │   │   │   └── js/
│   │   │   │       └── intro.js
│   │   │   ├── browserslist
│   │   │   ├── environments/
│   │   │   │   ├── environment.prod.ts
│   │   │   │   └── environment.ts
│   │   │   ├── index.html
│   │   │   ├── karma.conf.js
│   │   │   ├── main.ts
│   │   │   ├── polyfills.ts
│   │   │   ├── styles.css
│   │   │   ├── test.ts
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.spec.json
│   │   │   └── tslint.json
│   │   ├── tsconfig.json
│   │   └── tslint.json
│   └── react_js/
│       ├── .gitignore
│       ├── .storybook/
│       │   ├── main.js
│       │   └── preview.js
│       ├── AdminLTE-3.1.0/
│       │   ├── .babelrc.js
│       │   ├── .browserslistrc
│       │   ├── .bundlewatch.config.json
│       │   ├── .editorconfig
│       │   ├── .eslintignore
│       │   ├── .eslintrc.json
│       │   ├── .gitattributes
│       │   ├── .gitignore
│       │   ├── .gitpod.yml
│       │   ├── .lgtm.yml
│       │   ├── .npmignore
│       │   ├── .stylelintignore
│       │   ├── .stylelintrc
│       │   ├── CODE_OF_CONDUCT.md
│       │   ├── LICENSE
│       │   ├── README.md
│       │   ├── build/
│       │   │   ├── config/
│       │   │   │   ├── .eslintrc.json
│       │   │   │   ├── postcss.config.js
│       │   │   │   └── rollup.config.js
│       │   │   ├── js/
│       │   │   │   ├── AdminLTE.js
│       │   │   │   ├── CardRefresh.js
│       │   │   │   ├── CardWidget.js
│       │   │   │   ├── ControlSidebar.js
│       │   │   │   ├── DirectChat.js
│       │   │   │   ├── Dropdown.js
│       │   │   │   ├── ExpandableTable.js
│       │   │   │   ├── Fullscreen.js
│       │   │   │   ├── IFrame.js
│       │   │   │   ├── Layout.js
│       │   │   │   ├── NavbarSearch.js
│       │   │   │   ├── PushMenu.js
│       │   │   │   ├── SidebarSearch.js
│       │   │   │   ├── Toasts.js
│       │   │   │   ├── TodoList.js
│       │   │   │   └── Treeview.js
│       │   │   ├── npm/
│       │   │   │   ├── .eslintrc.json
│       │   │   │   ├── DocsPlugins.js
│       │   │   │   ├── DocsPublish.js
│       │   │   │   ├── Plugins.js
│       │   │   │   ├── Publish.js
│       │   │   │   └── vnu-jar.js
│       │   │   └── scss/
│       │   │       ├── _adminlte.raw.scss
│       │   │       ├── _alerts.scss
│       │   │       ├── _animation-effects.scss
│       │   │       ├── _bootstrap-variables.scss
│       │   │       ├── _brand.scss
│       │   │       ├── _buttons.scss
│       │   │       ├── _callout.scss
│       │   │       ├── _cards.scss
│       │   │       ├── _carousel.scss
│       │   │       ├── _close.scss
│       │   │       ├── _colors.scss
│       │   │       ├── _control-sidebar.scss
│       │   │       ├── _direct-chat.scss
│       │   │       ├── _dropdown.scss
│       │   │       ├── _elevation.scss
│       │   │       ├── _forms.scss
│       │   │       ├── _info-box.scss
│       │   │       ├── _layout.scss
│       │   │       ├── _main-header.scss
│       │   │       ├── _main-sidebar.scss
│       │   │       ├── _miscellaneous.scss
│       │   │       ├── _mixins.scss
│       │   │       ├── _modals.scss
│       │   │       ├── _navs.scss
│       │   │       ├── _pagination.scss
│       │   │       ├── _preloader.scss
│       │   │       ├── _print.scss
│       │   │       ├── _products.scss
│       │   │       ├── _progress-bars.scss
│       │   │       ├── _root.scss
│       │   │       ├── _sidebar-mini.scss
│       │   │       ├── _small-box.scss
│       │   │       ├── _social-widgets.scss
│       │   │       ├── _table.scss
│       │   │       ├── _text.scss
│       │   │       ├── _timeline.scss
│       │   │       ├── _toasts.scss
│       │   │       ├── _users-list.scss
│       │   │       ├── _variables-alt.scss
│       │   │       ├── _variables.scss
│       │   │       ├── adminlte.scss
│       │   │       ├── mixins/
│       │   │       │   ├── _accent.scss
│       │   │       │   ├── _animations.scss
│       │   │       │   ├── _backgrounds.scss
│       │   │       │   ├── _cards.scss
│       │   │       │   ├── _custom-forms.scss
│       │   │       │   ├── _direct-chat.scss
│       │   │       │   ├── _miscellaneous.scss
│       │   │       │   ├── _navbar.scss
│       │   │       │   ├── _sidebar.scss
│       │   │       │   ├── _toasts.scss
│       │   │       │   └── _touch-support.scss
│       │   │       ├── pages/
│       │   │       │   ├── _404_500_errors.scss
│       │   │       │   ├── _e-commerce.scss
│       │   │       │   ├── _iframe.scss
│       │   │       │   ├── _invoice.scss
│       │   │       │   ├── _kanban.scss
│       │   │       │   ├── _lockscreen.scss
│       │   │       │   ├── _login_and_register.scss
│       │   │       │   ├── _mailbox.scss
│       │   │       │   ├── _profile.scss
│       │   │       │   └── _projects.scss
│       │   │       ├── parts/
│       │   │       │   ├── _components.scss
│       │   │       │   ├── _core.scss
│       │   │       │   ├── _extra-components.scss
│       │   │       │   ├── _miscellaneous.scss
│       │   │       │   ├── _pages.scss
│       │   │       │   ├── _plugins.scss
│       │   │       │   ├── adminlte.components.scss
│       │   │       │   ├── adminlte.core.scss
│       │   │       │   ├── adminlte.extra-components.scss
│       │   │       │   ├── adminlte.pages.scss
│       │   │       │   └── adminlte.plugins.scss
│       │   │       └── plugins/
│       │   │           ├── _bootstrap-slider.scss
│       │   │           ├── _bootstrap-switch.scss
│       │   │           ├── _fullcalendar.scss
│       │   │           ├── _icheck-bootstrap.scss
│       │   │           ├── _jqvmap.scss
│       │   │           ├── _mapael.scss
│       │   │           ├── _miscellaneous.scss
│       │   │           ├── _mixins.scss
│       │   │           ├── _pace.scss
│       │   │           ├── _select2.scss
│       │   │           ├── _sweetalert2.scss
│       │   │           └── _toastr.scss
│       │   ├── composer.json
│       │   ├── dist/
│       │   │   ├── css/
│       │   │   │   ├── adminlte.css
│       │   │   │   └── alt/
│       │   │   │       ├── adminlte.components.css
│       │   │   │       ├── adminlte.core.css
│       │   │   │       ├── adminlte.extra-components.css
│       │   │   │       ├── adminlte.pages.css
│       │   │   │       └── adminlte.plugins.css
│       │   │   └── js/
│       │   │       ├── .eslintrc.json
│       │   │       ├── adminlte.js
│       │   │       ├── demo.js
│       │   │       └── pages/
│       │   │           ├── dashboard.js
│       │   │           ├── dashboard2.js
│       │   │           └── dashboard3.js
│       │   ├── docs/
│       │   │   ├── 404.html
│       │   │   ├── Gemfile
│       │   │   ├── _config.yml
│       │   │   ├── _includes/
│       │   │   │   ├── foot.html
│       │   │   │   ├── footer.html
│       │   │   │   ├── head.html
│       │   │   │   ├── navbar.html
│       │   │   │   ├── preloader.html
│       │   │   │   └── sidebar.html
│       │   │   ├── _layouts/
│       │   │   │   ├── default.html
│       │   │   │   └── page.html
│       │   │   ├── additional-styles.md
│       │   │   ├── assets/
│       │   │   │   ├── css/
│       │   │   │   │   ├── adminlte.css
│       │   │   │   │   ├── alt/
│       │   │   │   │   │   ├── adminlte.components.css
│       │   │   │   │   │   ├── adminlte.core.css
│       │   │   │   │   │   ├── adminlte.extra-components.css
│       │   │   │   │   │   ├── adminlte.pages.css
│       │   │   │   │   │   └── adminlte.plugins.css
│       │   │   │   │   ├── docs.css
│       │   │   │   │   └── highlighter.css
│       │   │   │   ├── js/
│       │   │   │   │   ├── adminlte.js
│       │   │   │   │   ├── demo.js
│       │   │   │   │   └── pages/
│       │   │   │   │       ├── dashboard.js
│       │   │   │   │       ├── dashboard2.js
│       │   │   │   │       └── dashboard3.js
│       │   │   │   └── plugins/
│       │   │   │       ├── bootstrap/
│       │   │   │       │   └── js/
│       │   │   │       │       ├── bootstrap.bundle.js
│       │   │   │       │       └── bootstrap.js
│       │   │   │       ├── fontawesome-free/
│       │   │   │       │   └── css/
│       │   │   │       │       ├── all.css
│       │   │   │       │       ├── brands.css
│       │   │   │       │       ├── fontawesome.css
│       │   │   │       │       ├── regular.css
│       │   │   │       │       ├── solid.css
│       │   │   │       │       ├── svg-with-js.css
│       │   │   │       │       └── v4-shims.css
│       │   │   │       ├── jquery/
│       │   │   │       │   ├── jquery.js
│       │   │   │       │   └── jquery.slim.js
│       │   │   │       ├── overlayScrollbars/
│       │   │   │       │   ├── css/
│       │   │   │       │   │   └── OverlayScrollbars.css
│       │   │   │       │   └── js/
│       │   │   │       │       ├── OverlayScrollbars.js
│       │   │   │       │       └── jquery.overlayScrollbars.js
│       │   │   │       └── popper/
│       │   │   │           ├── esm/
│       │   │   │           │   ├── popper-utils.js
│       │   │   │           │   └── popper.js
│       │   │   │           ├── popper-utils.js
│       │   │   │           ├── popper.js
│       │   │   │           └── umd/
│       │   │   │               ├── popper-utils.js
│       │   │   │               ├── popper.js
│       │   │   │               └── popper.js.flow
│       │   │   ├── browser-support.md
│       │   │   ├── components/
│       │   │   │   ├── boxes.md
│       │   │   │   ├── cards.md
│       │   │   │   ├── control-sidebar.md
│       │   │   │   ├── direct-chat.md
│       │   │   │   ├── main-header.md
│       │   │   │   ├── main-sidebar.md
│       │   │   │   ├── miscellaneous.md
│       │   │   │   ├── plugins.md
│       │   │   │   ├── ribbons.md
│       │   │   │   └── timeline.md
│       │   │   ├── dependencies.md
│       │   │   ├── faq.md
│       │   │   ├── how-to-contribute.md
│       │   │   ├── implementations.md
│       │   │   ├── index.md
│       │   │   ├── javascript/
│       │   │   │   ├── card-refresh.md
│       │   │   │   ├── card-widget.md
│       │   │   │   ├── control-sidebar.md
│       │   │   │   ├── direct-chat.md
│       │   │   │   ├── expandable-tables.md
│       │   │   │   ├── iframe.md
│       │   │   │   ├── layout.md
│       │   │   │   ├── navbar-search.md
│       │   │   │   ├── push-menu.md
│       │   │   │   ├── sidebar-search.md
│       │   │   │   ├── toasts.md
│       │   │   │   ├── todo-list.md
│       │   │   │   └── treeview.md
│       │   │   ├── layout.md
│       │   │   ├── license.md
│       │   │   └── upgrade-guide.md
│       │   ├── iframe.html
│       │   ├── index.html
│       │   ├── index2.html
│       │   ├── index3.html
│       │   ├── package.json
│       │   ├── pages/
│       │   │   ├── UI/
│       │   │   │   ├── buttons.html
│       │   │   │   ├── general.html
│       │   │   │   ├── icons.html
│       │   │   │   ├── modals.html
│       │   │   │   ├── navbar.html
│       │   │   │   ├── ribbons.html
│       │   │   │   ├── sliders.html
│       │   │   │   └── timeline.html
│       │   │   ├── calendar.html
│       │   │   ├── charts/
│       │   │   │   ├── chartjs.html
│       │   │   │   ├── flot.html
│       │   │   │   ├── inline.html
│       │   │   │   └── uplot.html
│       │   │   ├── examples/
│       │   │   │   ├── 404.html
│       │   │   │   ├── 500.html
│       │   │   │   ├── blank.html
│       │   │   │   ├── contact-us.html
│       │   │   │   ├── contacts.html
│       │   │   │   ├── e-commerce.html
│       │   │   │   ├── faq.html
│       │   │   │   ├── forgot-password-v2.html
│       │   │   │   ├── forgot-password.html
│       │   │   │   ├── invoice-print.html
│       │   │   │   ├── invoice.html
│       │   │   │   ├── language-menu.html
│       │   │   │   ├── legacy-user-menu.html
│       │   │   │   ├── lockscreen.html
│       │   │   │   ├── login-v2.html
│       │   │   │   ├── login.html
│       │   │   │   ├── pace.html
│       │   │   │   ├── profile.html
│       │   │   │   ├── project-add.html
│       │   │   │   ├── project-detail.html
│       │   │   │   ├── project-edit.html
│       │   │   │   ├── projects.html
│       │   │   │   ├── recover-password-v2.html
│       │   │   │   ├── recover-password.html
│       │   │   │   ├── register-v2.html
│       │   │   │   └── register.html
│       │   │   ├── forms/
│       │   │   │   ├── advanced.html
│       │   │   │   ├── editors.html
│       │   │   │   ├── general.html
│       │   │   │   └── validation.html
│       │   │   ├── gallery.html
│       │   │   ├── kanban.html
│       │   │   ├── layout/
│       │   │   │   ├── boxed.html
│       │   │   │   ├── collapsed-sidebar.html
│       │   │   │   ├── fixed-footer.html
│       │   │   │   ├── fixed-sidebar-custom.html
│       │   │   │   ├── fixed-sidebar.html
│       │   │   │   ├── fixed-topnav.html
│       │   │   │   ├── top-nav-sidebar.html
│       │   │   │   └── top-nav.html
│       │   │   ├── mailbox/
│       │   │   │   ├── compose.html
│       │   │   │   ├── mailbox.html
│       │   │   │   └── read-mail.html
│       │   │   ├── search/
│       │   │   │   ├── enhanced-results.html
│       │   │   │   ├── enhanced.html
│       │   │   │   ├── simple-results.html
│       │   │   │   └── simple.html
│       │   │   ├── tables/
│       │   │   │   ├── data.html
│       │   │   │   ├── jsgrid.html
│       │   │   │   └── simple.html
│       │   │   └── widgets.html
│       │   ├── plugins/
│       │   │   ├── bootstrap/
│       │   │   │   └── js/
│       │   │   │       ├── bootstrap.bundle.js
│       │   │   │       └── bootstrap.js
│       │   │   ├── bootstrap-colorpicker/
│       │   │   │   ├── css/
│       │   │   │   │   └── bootstrap-colorpicker.css
│       │   │   │   └── js/
│       │   │   │       └── bootstrap-colorpicker.js
│       │   │   ├── bootstrap-slider/
│       │   │   │   ├── bootstrap-slider.js
│       │   │   │   └── css/
│       │   │   │       └── bootstrap-slider.css
│       │   │   ├── bootstrap-switch/
│       │   │   │   ├── css/
│       │   │   │   │   ├── bootstrap2/
│       │   │   │   │   │   └── bootstrap-switch.css
│       │   │   │   │   └── bootstrap3/
│       │   │   │   │       └── bootstrap-switch.css
│       │   │   │   └── js/
│       │   │   │       └── bootstrap-switch.js
│       │   │   ├── bootstrap4-duallistbox/
│       │   │   │   ├── bootstrap-duallistbox.css
│       │   │   │   └── jquery.bootstrap-duallistbox.js
│       │   │   ├── bs-custom-file-input/
│       │   │   │   └── bs-custom-file-input.js
│       │   │   ├── bs-stepper/
│       │   │   │   ├── css/
│       │   │   │   │   └── bs-stepper.css
│       │   │   │   └── js/
│       │   │   │       └── bs-stepper.js
│       │   │   ├── chart.js/
│       │   │   │   ├── Chart.bundle.js
│       │   │   │   ├── Chart.css
│       │   │   │   └── Chart.js
│       │   │   ├── codemirror/
│       │   │   │   ├── addon/
│       │   │   │   │   ├── comment/
│       │   │   │   │   │   ├── comment.js
│       │   │   │   │   │   └── continuecomment.js
│       │   │   │   │   ├── dialog/
│       │   │   │   │   │   ├── dialog.css
│       │   │   │   │   │   └── dialog.js
│       │   │   │   │   ├── display/
│       │   │   │   │   │   ├── autorefresh.js
│       │   │   │   │   │   ├── fullscreen.css
│       │   │   │   │   │   ├── fullscreen.js
│       │   │   │   │   │   ├── panel.js
│       │   │   │   │   │   ├── placeholder.js
│       │   │   │   │   │   └── rulers.js
│       │   │   │   │   ├── edit/
│       │   │   │   │   │   ├── closebrackets.js
│       │   │   │   │   │   ├── closetag.js
│       │   │   │   │   │   ├── continuelist.js
│       │   │   │   │   │   ├── matchbrackets.js
│       │   │   │   │   │   ├── matchtags.js
│       │   │   │   │   │   └── trailingspace.js
│       │   │   │   │   ├── fold/
│       │   │   │   │   │   ├── brace-fold.js
│       │   │   │   │   │   ├── comment-fold.js
│       │   │   │   │   │   ├── foldcode.js
│       │   │   │   │   │   ├── foldgutter.css
│       │   │   │   │   │   ├── foldgutter.js
│       │   │   │   │   │   ├── indent-fold.js
│       │   │   │   │   │   ├── markdown-fold.js
│       │   │   │   │   │   └── xml-fold.js
│       │   │   │   │   ├── hint/
│       │   │   │   │   │   ├── anyword-hint.js
│       │   │   │   │   │   ├── css-hint.js
│       │   │   │   │   │   ├── html-hint.js
│       │   │   │   │   │   ├── javascript-hint.js
│       │   │   │   │   │   ├── show-hint.css
│       │   │   │   │   │   ├── show-hint.js
│       │   │   │   │   │   ├── sql-hint.js
│       │   │   │   │   │   └── xml-hint.js
│       │   │   │   │   ├── lint/
│       │   │   │   │   │   ├── coffeescript-lint.js
│       │   │   │   │   │   ├── css-lint.js
│       │   │   │   │   │   ├── html-lint.js
│       │   │   │   │   │   ├── javascript-lint.js
│       │   │   │   │   │   ├── json-lint.js
│       │   │   │   │   │   ├── lint.css
│       │   │   │   │   │   ├── lint.js
│       │   │   │   │   │   └── yaml-lint.js
│       │   │   │   │   ├── merge/
│       │   │   │   │   │   ├── merge.css
│       │   │   │   │   │   └── merge.js
│       │   │   │   │   ├── mode/
│       │   │   │   │   │   ├── loadmode.js
│       │   │   │   │   │   ├── multiplex.js
│       │   │   │   │   │   ├── multiplex_test.js
│       │   │   │   │   │   ├── overlay.js
│       │   │   │   │   │   └── simple.js
│       │   │   │   │   ├── runmode/
│       │   │   │   │   │   ├── colorize.js
│       │   │   │   │   │   ├── runmode-standalone.js
│       │   │   │   │   │   ├── runmode.js
│       │   │   │   │   │   └── runmode.node.js
│       │   │   │   │   ├── scroll/
│       │   │   │   │   │   ├── annotatescrollbar.js
│       │   │   │   │   │   ├── scrollpastend.js
│       │   │   │   │   │   ├── simplescrollbars.css
│       │   │   │   │   │   └── simplescrollbars.js
│       │   │   │   │   ├── search/
│       │   │   │   │   │   ├── jump-to-line.js
│       │   │   │   │   │   ├── match-highlighter.js
│       │   │   │   │   │   ├── matchesonscrollbar.css
│       │   │   │   │   │   ├── matchesonscrollbar.js
│       │   │   │   │   │   ├── search.js
│       │   │   │   │   │   └── searchcursor.js
│       │   │   │   │   ├── selection/
│       │   │   │   │   │   ├── active-line.js
│       │   │   │   │   │   ├── mark-selection.js
│       │   │   │   │   │   └── selection-pointer.js
│       │   │   │   │   ├── tern/
│       │   │   │   │   │   ├── tern.css
│       │   │   │   │   │   ├── tern.js
│       │   │   │   │   │   └── worker.js
│       │   │   │   │   └── wrap/
│       │   │   │   │       └── hardwrap.js
│       │   │   │   ├── codemirror.css
│       │   │   │   ├── codemirror.js
│       │   │   │   ├── keymap/
│       │   │   │   │   ├── emacs.js
│       │   │   │   │   ├── sublime.js
│       │   │   │   │   └── vim.js
│       │   │   │   ├── mode/
│       │   │   │   │   ├── apl/
│       │   │   │   │   │   └── apl.js
│       │   │   │   │   ├── asciiarmor/
│       │   │   │   │   │   └── asciiarmor.js
│       │   │   │   │   ├── asn.1/
│       │   │   │   │   │   └── asn.1.js
│       │   │   │   │   ├── asterisk/
│       │   │   │   │   │   └── asterisk.js
│       │   │   │   │   ├── brainfuck/
│       │   │   │   │   │   └── brainfuck.js
│       │   │   │   │   ├── clike/
│       │   │   │   │   │   └── clike.js
│       │   │   │   │   ├── clojure/
│       │   │   │   │   │   └── clojure.js
│       │   │   │   │   ├── cmake/
│       │   │   │   │   │   └── cmake.js
│       │   │   │   │   ├── cobol/
│       │   │   │   │   │   └── cobol.js
│       │   │   │   │   ├── coffeescript/
│       │   │   │   │   │   └── coffeescript.js
│       │   │   │   │   ├── commonlisp/
│       │   │   │   │   │   └── commonlisp.js
│       │   │   │   │   ├── crystal/
│       │   │   │   │   │   └── crystal.js
│       │   │   │   │   ├── css/
│       │   │   │   │   │   └── css.js
│       │   │   │   │   ├── cypher/
│       │   │   │   │   │   └── cypher.js
│       │   │   │   │   ├── d/
│       │   │   │   │   │   └── d.js
│       │   │   │   │   ├── dart/
│       │   │   │   │   │   └── dart.js
│       │   │   │   │   ├── diff/
│       │   │   │   │   │   └── diff.js
│       │   │   │   │   ├── django/
│       │   │   │   │   │   └── django.js
│       │   │   │   │   ├── dockerfile/
│       │   │   │   │   │   └── dockerfile.js
│       │   │   │   │   ├── dtd/
│       │   │   │   │   │   └── dtd.js
│       │   │   │   │   ├── dylan/
│       │   │   │   │   │   └── dylan.js
│       │   │   │   │   ├── ebnf/
│       │   │   │   │   │   └── ebnf.js
│       │   │   │   │   ├── ecl/
│       │   │   │   │   │   └── ecl.js
│       │   │   │   │   ├── eiffel/
│       │   │   │   │   │   └── eiffel.js
│       │   │   │   │   ├── elm/
│       │   │   │   │   │   └── elm.js
│       │   │   │   │   ├── erlang/
│       │   │   │   │   │   └── erlang.js
│       │   │   │   │   ├── factor/
│       │   │   │   │   │   └── factor.js
│       │   │   │   │   ├── fcl/
│       │   │   │   │   │   └── fcl.js
│       │   │   │   │   ├── forth/
│       │   │   │   │   │   └── forth.js
│       │   │   │   │   ├── fortran/
│       │   │   │   │   │   └── fortran.js
│       │   │   │   │   ├── gas/
│       │   │   │   │   │   └── gas.js
│       │   │   │   │   ├── gfm/
│       │   │   │   │   │   └── gfm.js
│       │   │   │   │   ├── gherkin/
│       │   │   │   │   │   └── gherkin.js
│       │   │   │   │   ├── go/
│       │   │   │   │   │   └── go.js
│       │   │   │   │   ├── groovy/
│       │   │   │   │   │   └── groovy.js
│       │   │   │   │   ├── haml/
│       │   │   │   │   │   └── haml.js
│       │   │   │   │   ├── handlebars/
│       │   │   │   │   │   └── handlebars.js
│       │   │   │   │   ├── haskell/
│       │   │   │   │   │   └── haskell.js
│       │   │   │   │   ├── haskell-literate/
│       │   │   │   │   │   └── haskell-literate.js
│       │   │   │   │   ├── haxe/
│       │   │   │   │   │   └── haxe.js
│       │   │   │   │   ├── htmlembedded/
│       │   │   │   │   │   └── htmlembedded.js
│       │   │   │   │   ├── htmlmixed/
│       │   │   │   │   │   └── htmlmixed.js
│       │   │   │   │   ├── http/
│       │   │   │   │   │   └── http.js
│       │   │   │   │   ├── idl/
│       │   │   │   │   │   └── idl.js
│       │   │   │   │   ├── javascript/
│       │   │   │   │   │   └── javascript.js
│       │   │   │   │   ├── jinja2/
│       │   │   │   │   │   └── jinja2.js
│       │   │   │   │   ├── jsx/
│       │   │   │   │   │   └── jsx.js
│       │   │   │   │   ├── julia/
│       │   │   │   │   │   └── julia.js
│       │   │   │   │   ├── livescript/
│       │   │   │   │   │   └── livescript.js
│       │   │   │   │   ├── lua/
│       │   │   │   │   │   └── lua.js
│       │   │   │   │   ├── markdown/
│       │   │   │   │   │   └── markdown.js
│       │   │   │   │   ├── mathematica/
│       │   │   │   │   │   └── mathematica.js
│       │   │   │   │   ├── mbox/
│       │   │   │   │   │   └── mbox.js
│       │   │   │   │   ├── meta.js
│       │   │   │   │   ├── mirc/
│       │   │   │   │   │   └── mirc.js
│       │   │   │   │   ├── mllike/
│       │   │   │   │   │   └── mllike.js
│       │   │   │   │   ├── modelica/
│       │   │   │   │   │   └── modelica.js
│       │   │   │   │   ├── mscgen/
│       │   │   │   │   │   └── mscgen.js
│       │   │   │   │   ├── mumps/
│       │   │   │   │   │   └── mumps.js
│       │   │   │   │   ├── nginx/
│       │   │   │   │   │   └── nginx.js
│       │   │   │   │   ├── nsis/
│       │   │   │   │   │   └── nsis.js
│       │   │   │   │   ├── ntriples/
│       │   │   │   │   │   └── ntriples.js
│       │   │   │   │   ├── octave/
│       │   │   │   │   │   └── octave.js
│       │   │   │   │   ├── oz/
│       │   │   │   │   │   └── oz.js
│       │   │   │   │   ├── pascal/
│       │   │   │   │   │   └── pascal.js
│       │   │   │   │   ├── pegjs/
│       │   │   │   │   │   └── pegjs.js
│       │   │   │   │   ├── perl/
│       │   │   │   │   │   └── perl.js
│       │   │   │   │   ├── php/
│       │   │   │   │   │   └── php.js
│       │   │   │   │   ├── pig/
│       │   │   │   │   │   └── pig.js
│       │   │   │   │   ├── powershell/
│       │   │   │   │   │   └── powershell.js
│       │   │   │   │   ├── properties/
│       │   │   │   │   │   └── properties.js
│       │   │   │   │   ├── protobuf/
│       │   │   │   │   │   └── protobuf.js
│       │   │   │   │   ├── pug/
│       │   │   │   │   │   └── pug.js
│       │   │   │   │   ├── puppet/
│       │   │   │   │   │   └── puppet.js
│       │   │   │   │   ├── python/
│       │   │   │   │   │   └── python.js
│       │   │   │   │   ├── q/
│       │   │   │   │   │   └── q.js
│       │   │   │   │   ├── r/
│       │   │   │   │   │   └── r.js
│       │   │   │   │   ├── rpm/
│       │   │   │   │   │   └── rpm.js
│       │   │   │   │   ├── rst/
│       │   │   │   │   │   └── rst.js
│       │   │   │   │   ├── ruby/
│       │   │   │   │   │   └── ruby.js
│       │   │   │   │   ├── rust/
│       │   │   │   │   │   └── rust.js
│       │   │   │   │   ├── sas/
│       │   │   │   │   │   └── sas.js
│       │   │   │   │   ├── sass/
│       │   │   │   │   │   └── sass.js
│       │   │   │   │   ├── scheme/
│       │   │   │   │   │   └── scheme.js
│       │   │   │   │   ├── shell/
│       │   │   │   │   │   └── shell.js
│       │   │   │   │   ├── sieve/
│       │   │   │   │   │   └── sieve.js
│       │   │   │   │   ├── slim/
│       │   │   │   │   │   └── slim.js
│       │   │   │   │   ├── smalltalk/
│       │   │   │   │   │   └── smalltalk.js
│       │   │   │   │   ├── smarty/
│       │   │   │   │   │   └── smarty.js
│       │   │   │   │   ├── solr/
│       │   │   │   │   │   └── solr.js
│       │   │   │   │   ├── soy/
│       │   │   │   │   │   └── soy.js
│       │   │   │   │   ├── sparql/
│       │   │   │   │   │   └── sparql.js
│       │   │   │   │   ├── spreadsheet/
│       │   │   │   │   │   └── spreadsheet.js
│       │   │   │   │   ├── sql/
│       │   │   │   │   │   └── sql.js
│       │   │   │   │   ├── stex/
│       │   │   │   │   │   └── stex.js
│       │   │   │   │   ├── stylus/
│       │   │   │   │   │   └── stylus.js
│       │   │   │   │   ├── swift/
│       │   │   │   │   │   └── swift.js
│       │   │   │   │   ├── tcl/
│       │   │   │   │   │   └── tcl.js
│       │   │   │   │   ├── textile/
│       │   │   │   │   │   └── textile.js
│       │   │   │   │   ├── tiddlywiki/
│       │   │   │   │   │   ├── tiddlywiki.css
│       │   │   │   │   │   └── tiddlywiki.js
│       │   │   │   │   ├── tiki/
│       │   │   │   │   │   ├── tiki.css
│       │   │   │   │   │   └── tiki.js
│       │   │   │   │   ├── toml/
│       │   │   │   │   │   └── toml.js
│       │   │   │   │   ├── tornado/
│       │   │   │   │   │   └── tornado.js
│       │   │   │   │   ├── troff/
│       │   │   │   │   │   └── troff.js
│       │   │   │   │   ├── ttcn/
│       │   │   │   │   │   └── ttcn.js
│       │   │   │   │   ├── ttcn-cfg/
│       │   │   │   │   │   └── ttcn-cfg.js
│       │   │   │   │   ├── turtle/
│       │   │   │   │   │   └── turtle.js
│       │   │   │   │   ├── twig/
│       │   │   │   │   │   └── twig.js
│       │   │   │   │   ├── vb/
│       │   │   │   │   │   └── vb.js
│       │   │   │   │   ├── vbscript/
│       │   │   │   │   │   └── vbscript.js
│       │   │   │   │   ├── velocity/
│       │   │   │   │   │   └── velocity.js
│       │   │   │   │   ├── verilog/
│       │   │   │   │   │   └── verilog.js
│       │   │   │   │   ├── vhdl/
│       │   │   │   │   │   └── vhdl.js
│       │   │   │   │   ├── vue/
│       │   │   │   │   │   └── vue.js
│       │   │   │   │   ├── wast/
│       │   │   │   │   │   └── wast.js
│       │   │   │   │   ├── webidl/
│       │   │   │   │   │   └── webidl.js
│       │   │   │   │   ├── xml/
│       │   │   │   │   │   └── xml.js
│       │   │   │   │   ├── xquery/
│       │   │   │   │   │   └── xquery.js
│       │   │   │   │   ├── yacas/
│       │   │   │   │   │   └── yacas.js
│       │   │   │   │   ├── yaml/
│       │   │   │   │   │   └── yaml.js
│       │   │   │   │   ├── yaml-frontmatter/
│       │   │   │   │   │   └── yaml-frontmatter.js
│       │   │   │   │   └── z80/
│       │   │   │   │       └── z80.js
│       │   │   │   └── theme/
│       │   │   │       ├── 3024-day.css
│       │   │   │       ├── 3024-night.css
│       │   │   │       ├── abcdef.css
│       │   │   │       ├── ambiance-mobile.css
│       │   │   │       ├── ambiance.css
│       │   │   │       ├── ayu-dark.css
│       │   │   │       ├── ayu-mirage.css
│       │   │   │       ├── base16-dark.css
│       │   │   │       ├── base16-light.css
│       │   │   │       ├── bespin.css
│       │   │   │       ├── blackboard.css
│       │   │   │       ├── cobalt.css
│       │   │   │       ├── colorforth.css
│       │   │   │       ├── darcula.css
│       │   │   │       ├── dracula.css
│       │   │   │       ├── duotone-dark.css
│       │   │   │       ├── duotone-light.css
│       │   │   │       ├── eclipse.css
│       │   │   │       ├── elegant.css
│       │   │   │       ├── erlang-dark.css
│       │   │   │       ├── gruvbox-dark.css
│       │   │   │       ├── hopscotch.css
│       │   │   │       ├── icecoder.css
│       │   │   │       ├── idea.css
│       │   │   │       ├── isotope.css
│       │   │   │       ├── lesser-dark.css
│       │   │   │       ├── liquibyte.css
│       │   │   │       ├── lucario.css
│       │   │   │       ├── material-darker.css
│       │   │   │       ├── material-ocean.css
│       │   │   │       ├── material-palenight.css
│       │   │   │       ├── material.css
│       │   │   │       ├── mbo.css
│       │   │   │       ├── mdn-like.css
│       │   │   │       ├── midnight.css
│       │   │   │       ├── monokai.css
│       │   │   │       ├── moxer.css
│       │   │   │       ├── neat.css
│       │   │   │       ├── neo.css
│       │   │   │       ├── night.css
│       │   │   │       ├── nord.css
│       │   │   │       ├── oceanic-next.css
│       │   │   │       ├── panda-syntax.css
│       │   │   │       ├── paraiso-dark.css
│       │   │   │       ├── paraiso-light.css
│       │   │   │       ├── pastel-on-dark.css
│       │   │   │       ├── railscasts.css
│       │   │   │       ├── rubyblue.css
│       │   │   │       ├── seti.css
│       │   │   │       ├── shadowfox.css
│       │   │   │       ├── solarized.css
│       │   │   │       ├── ssms.css
│       │   │   │       ├── the-matrix.css
│       │   │   │       ├── tomorrow-night-bright.css
│       │   │   │       ├── tomorrow-night-eighties.css
│       │   │   │       ├── ttcn.css
│       │   │   │       ├── twilight.css
│       │   │   │       ├── vibrant-ink.css
│       │   │   │       ├── xq-dark.css
│       │   │   │       ├── xq-light.css
│       │   │   │       ├── yeti.css
│       │   │   │       ├── yonce.css
│       │   │   │       └── zenburn.css
│       │   │   ├── datatables/
│       │   │   │   └── jquery.dataTables.js
│       │   │   ├── datatables-autofill/
│       │   │   │   ├── css/
│       │   │   │   │   └── autoFill.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── autoFill.bootstrap4.js
│       │   │   │       └── dataTables.autoFill.js
│       │   │   ├── datatables-bs4/
│       │   │   │   ├── css/
│       │   │   │   │   └── dataTables.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       └── dataTables.bootstrap4.js
│       │   │   ├── datatables-buttons/
│       │   │   │   ├── css/
│       │   │   │   │   └── buttons.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── buttons.bootstrap4.js
│       │   │   │       ├── buttons.colVis.js
│       │   │   │       ├── buttons.flash.js
│       │   │   │       ├── buttons.html5.js
│       │   │   │       ├── buttons.print.js
│       │   │   │       └── dataTables.buttons.js
│       │   │   ├── datatables-colreorder/
│       │   │   │   ├── css/
│       │   │   │   │   └── colReorder.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── colReorder.bootstrap4.js
│       │   │   │       └── dataTables.colReorder.js
│       │   │   ├── datatables-fixedcolumns/
│       │   │   │   ├── css/
│       │   │   │   │   └── fixedColumns.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.fixedColumns.js
│       │   │   │       └── fixedColumns.bootstrap4.js
│       │   │   ├── datatables-fixedheader/
│       │   │   │   ├── css/
│       │   │   │   │   └── fixedHeader.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.fixedHeader.js
│       │   │   │       └── fixedHeader.bootstrap4.js
│       │   │   ├── datatables-keytable/
│       │   │   │   ├── css/
│       │   │   │   │   └── keyTable.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.keyTable.js
│       │   │   │       └── keyTable.bootstrap4.js
│       │   │   ├── datatables-responsive/
│       │   │   │   ├── css/
│       │   │   │   │   └── responsive.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.responsive.js
│       │   │   │       └── responsive.bootstrap4.js
│       │   │   ├── datatables-rowgroup/
│       │   │   │   ├── css/
│       │   │   │   │   └── rowGroup.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.rowGroup.js
│       │   │   │       └── rowGroup.bootstrap4.js
│       │   │   ├── datatables-rowreorder/
│       │   │   │   ├── css/
│       │   │   │   │   └── rowReorder.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.rowReorder.js
│       │   │   │       └── rowReorder.bootstrap4.js
│       │   │   ├── datatables-scroller/
│       │   │   │   ├── css/
│       │   │   │   │   └── scroller.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.scroller.js
│       │   │   │       └── scroller.bootstrap4.js
│       │   │   ├── datatables-searchbuilder/
│       │   │   │   ├── css/
│       │   │   │   │   └── searchBuilder.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.searchBuilder.js
│       │   │   │       └── searchBuilder.bootstrap4.js
│       │   │   ├── datatables-searchpanes/
│       │   │   │   ├── css/
│       │   │   │   │   └── searchPanes.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.searchPanes.js
│       │   │   │       └── searchPanes.bootstrap4.js
│       │   │   ├── datatables-select/
│       │   │   │   ├── css/
│       │   │   │   │   └── select.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.select.js
│       │   │   │       └── select.bootstrap4.js
│       │   │   ├── daterangepicker/
│       │   │   │   ├── daterangepicker.css
│       │   │   │   └── daterangepicker.js
│       │   │   ├── dropzone/
│       │   │   │   ├── basic.css
│       │   │   │   ├── dropzone-amd-module.js
│       │   │   │   ├── dropzone.css
│       │   │   │   ├── dropzone.js
│       │   │   │   └── min/
│       │   │   │       ├── basic.css
│       │   │   │       └── dropzone.css
│       │   │   ├── ekko-lightbox/
│       │   │   │   ├── ekko-lightbox.css
│       │   │   │   └── ekko-lightbox.js
│       │   │   ├── fastclick/
│       │   │   │   └── fastclick.js
│       │   │   ├── flag-icon-css/
│       │   │   │   └── css/
│       │   │   │       └── flag-icon.css
│       │   │   ├── flot/
│       │   │   │   ├── jquery.flot.js
│       │   │   │   └── plugins/
│       │   │   │       ├── jquery.flot.axislabels.js
│       │   │   │       ├── jquery.flot.browser.js
│       │   │   │       ├── jquery.flot.categories.js
│       │   │   │       ├── jquery.flot.composeImages.js
│       │   │   │       ├── jquery.flot.crosshair.js
│       │   │   │       ├── jquery.flot.drawSeries.js
│       │   │   │       ├── jquery.flot.errorbars.js
│       │   │   │       ├── jquery.flot.fillbetween.js
│       │   │   │       ├── jquery.flot.flatdata.js
│       │   │   │       ├── jquery.flot.hover.js
│       │   │   │       ├── jquery.flot.image.js
│       │   │   │       ├── jquery.flot.legend.js
│       │   │   │       ├── jquery.flot.logaxis.js
│       │   │   │       ├── jquery.flot.navigate.js
│       │   │   │       ├── jquery.flot.pie.js
│       │   │   │       ├── jquery.flot.resize.js
│       │   │   │       ├── jquery.flot.saturated.js
│       │   │   │       ├── jquery.flot.selection.js
│       │   │   │       ├── jquery.flot.stack.js
│       │   │   │       ├── jquery.flot.symbol.js
│       │   │   │       ├── jquery.flot.threshold.js
│       │   │   │       ├── jquery.flot.time.js
│       │   │   │       ├── jquery.flot.touch.js
│       │   │   │       ├── jquery.flot.touchNavigate.js
│       │   │   │       └── jquery.flot.uiConstants.js
│       │   │   ├── fontawesome-free/
│       │   │   │   └── css/
│       │   │   │       ├── all.css
│       │   │   │       ├── brands.css
│       │   │   │       ├── fontawesome.css
│       │   │   │       ├── regular.css
│       │   │   │       ├── solid.css
│       │   │   │       ├── svg-with-js.css
│       │   │   │       └── v4-shims.css
│       │   │   ├── fullcalendar/
│       │   │   │   ├── LICENSE.txt
│       │   │   │   ├── locales/
│       │   │   │   │   ├── af.js
│       │   │   │   │   ├── ar-dz.js
│       │   │   │   │   ├── ar-kw.js
│       │   │   │   │   ├── ar-ly.js
│       │   │   │   │   ├── ar-ma.js
│       │   │   │   │   ├── ar-sa.js
│       │   │   │   │   ├── ar-tn.js
│       │   │   │   │   ├── ar.js
│       │   │   │   │   ├── az.js
│       │   │   │   │   ├── bg.js
│       │   │   │   │   ├── bs.js
│       │   │   │   │   ├── ca.js
│       │   │   │   │   ├── cs.js
│       │   │   │   │   ├── cy.js
│       │   │   │   │   ├── da.js
│       │   │   │   │   ├── de-at.js
│       │   │   │   │   ├── de.js
│       │   │   │   │   ├── el.js
│       │   │   │   │   ├── en-au.js
│       │   │   │   │   ├── en-gb.js
│       │   │   │   │   ├── en-nz.js
│       │   │   │   │   ├── eo.js
│       │   │   │   │   ├── es-us.js
│       │   │   │   │   ├── es.js
│       │   │   │   │   ├── et.js
│       │   │   │   │   ├── eu.js
│       │   │   │   │   ├── fa.js
│       │   │   │   │   ├── fi.js
│       │   │   │   │   ├── fr-ca.js
│       │   │   │   │   ├── fr-ch.js
│       │   │   │   │   ├── fr.js
│       │   │   │   │   ├── gl.js
│       │   │   │   │   ├── he.js
│       │   │   │   │   ├── hi.js
│       │   │   │   │   ├── hr.js
│       │   │   │   │   ├── hu.js
│       │   │   │   │   ├── hy-am.js
│       │   │   │   │   ├── id.js
│       │   │   │   │   ├── is.js
│       │   │   │   │   ├── it.js
│       │   │   │   │   ├── ja.js
│       │   │   │   │   ├── ka.js
│       │   │   │   │   ├── kk.js
│       │   │   │   │   ├── ko.js
│       │   │   │   │   ├── lb.js
│       │   │   │   │   ├── lt.js
│       │   │   │   │   ├── lv.js
│       │   │   │   │   ├── mk.js
│       │   │   │   │   ├── ms.js
│       │   │   │   │   ├── nb.js
│       │   │   │   │   ├── ne.js
│       │   │   │   │   ├── nl.js
│       │   │   │   │   ├── nn.js
│       │   │   │   │   ├── pl.js
│       │   │   │   │   ├── pt-br.js
│       │   │   │   │   ├── pt.js
│       │   │   │   │   ├── ro.js
│       │   │   │   │   ├── ru.js
│       │   │   │   │   ├── sk.js
│       │   │   │   │   ├── sl.js
│       │   │   │   │   ├── sq.js
│       │   │   │   │   ├── sr-cyrl.js
│       │   │   │   │   ├── sr.js
│       │   │   │   │   ├── sv.js
│       │   │   │   │   ├── ta-in.js
│       │   │   │   │   ├── th.js
│       │   │   │   │   ├── tr.js
│       │   │   │   │   ├── ug.js
│       │   │   │   │   ├── uk.js
│       │   │   │   │   ├── uz.js
│       │   │   │   │   ├── vi.js
│       │   │   │   │   ├── zh-cn.js
│       │   │   │   │   └── zh-tw.js
│       │   │   │   ├── locales-all.js
│       │   │   │   ├── main.css
│       │   │   │   └── main.js
│       │   │   ├── icheck-bootstrap/
│       │   │   │   ├── LICENSE
│       │   │   │   └── icheck-bootstrap.css
│       │   │   ├── inputmask/
│       │   │   │   ├── inputmask.js
│       │   │   │   └── jquery.inputmask.js
│       │   │   ├── ion-rangeslider/
│       │   │   │   ├── License.md
│       │   │   │   ├── css/
│       │   │   │   │   └── ion.rangeSlider.css
│       │   │   │   └── js/
│       │   │   │       └── ion.rangeSlider.js
│       │   │   ├── jquery/
│       │   │   │   ├── jquery.js
│       │   │   │   └── jquery.slim.js
│       │   │   ├── jquery-mapael/
│       │   │   │   ├── jquery.mapael.js
│       │   │   │   └── maps/
│       │   │   │       ├── README.txt
│       │   │   │       ├── france_departments.js
│       │   │   │       ├── usa_states.js
│       │   │   │       ├── world_countries.js
│       │   │   │       ├── world_countries_mercator.js
│       │   │   │       └── world_countries_miller.js
│       │   │   ├── jquery-mousewheel/
│       │   │   │   ├── LICENSE.txt
│       │   │   │   └── jquery.mousewheel.js
│       │   │   ├── jquery-ui/
│       │   │   │   ├── LICENSE.txt
│       │   │   │   ├── jquery-ui.css
│       │   │   │   ├── jquery-ui.js
│       │   │   │   ├── jquery-ui.structure.css
│       │   │   │   └── jquery-ui.theme.css
│       │   │   ├── jquery-validation/
│       │   │   │   ├── additional-methods.js
│       │   │   │   ├── jquery.validate.js
│       │   │   │   └── localization/
│       │   │   │       ├── messages_ar.js
│       │   │   │       ├── messages_az.js
│       │   │   │       ├── messages_bg.js
│       │   │   │       ├── messages_bn_BD.js
│       │   │   │       ├── messages_ca.js
│       │   │   │       ├── messages_cs.js
│       │   │   │       ├── messages_da.js
│       │   │   │       ├── messages_de.js
│       │   │   │       ├── messages_el.js
│       │   │   │       ├── messages_es.js
│       │   │   │       ├── messages_es_AR.js
│       │   │   │       ├── messages_es_PE.js
│       │   │   │       ├── messages_et.js
│       │   │   │       ├── messages_eu.js
│       │   │   │       ├── messages_fa.js
│       │   │   │       ├── messages_fi.js
│       │   │   │       ├── messages_fr.js
│       │   │   │       ├── messages_ge.js
│       │   │   │       ├── messages_gl.js
│       │   │   │       ├── messages_he.js
│       │   │   │       ├── messages_hr.js
│       │   │   │       ├── messages_hu.js
│       │   │   │       ├── messages_hy_AM.js
│       │   │   │       ├── messages_id.js
│       │   │   │       ├── messages_is.js
│       │   │   │       ├── messages_it.js
│       │   │   │       ├── messages_ja.js
│       │   │   │       ├── messages_ka.js
│       │   │   │       ├── messages_kk.js
│       │   │   │       ├── messages_ko.js
│       │   │   │       ├── messages_lt.js
│       │   │   │       ├── messages_lv.js
│       │   │   │       ├── messages_mk.js
│       │   │   │       ├── messages_my.js
│       │   │   │       ├── messages_nl.js
│       │   │   │       ├── messages_no.js
│       │   │   │       ├── messages_pl.js
│       │   │   │       ├── messages_pt_BR.js
│       │   │   │       ├── messages_pt_PT.js
│       │   │   │       ├── messages_ro.js
│       │   │   │       ├── messages_ru.js
│       │   │   │       ├── messages_sd.js
│       │   │   │       ├── messages_si.js
│       │   │   │       ├── messages_sk.js
│       │   │   │       ├── messages_sl.js
│       │   │   │       ├── messages_sr.js
│       │   │   │       ├── messages_sr_lat.js
│       │   │   │       ├── messages_sv.js
│       │   │   │       ├── messages_th.js
│       │   │   │       ├── messages_tj.js
│       │   │   │       ├── messages_tr.js
│       │   │   │       ├── messages_uk.js
│       │   │   │       ├── messages_ur.js
│       │   │   │       ├── messages_vi.js
│       │   │   │       ├── messages_zh.js
│       │   │   │       ├── messages_zh_TW.js
│       │   │   │       ├── methods_de.js
│       │   │   │       ├── methods_es_CL.js
│       │   │   │       ├── methods_fi.js
│       │   │   │       ├── methods_it.js
│       │   │   │       ├── methods_nl.js
│       │   │   │       └── methods_pt.js
│       │   │   ├── jqvmap/
│       │   │   │   ├── jquery.vmap.js
│       │   │   │   ├── jqvmap.css
│       │   │   │   └── maps/
│       │   │   │       ├── continents/
│       │   │   │       │   ├── jquery.vmap.africa.js
│       │   │   │       │   ├── jquery.vmap.asia.js
│       │   │   │       │   ├── jquery.vmap.australia.js
│       │   │   │       │   ├── jquery.vmap.europe.js
│       │   │   │       │   ├── jquery.vmap.north-america.js
│       │   │   │       │   └── jquery.vmap.south-america.js
│       │   │   │       ├── jquery.vmap.algeria.js
│       │   │   │       ├── jquery.vmap.argentina.js
│       │   │   │       ├── jquery.vmap.brazil.js
│       │   │   │       ├── jquery.vmap.canada.js
│       │   │   │       ├── jquery.vmap.croatia.js
│       │   │   │       ├── jquery.vmap.europe.js
│       │   │   │       ├── jquery.vmap.france.js
│       │   │   │       ├── jquery.vmap.germany.js
│       │   │   │       ├── jquery.vmap.greece.js
│       │   │   │       ├── jquery.vmap.indonesia.js
│       │   │   │       ├── jquery.vmap.iran.js
│       │   │   │       ├── jquery.vmap.iraq.js
│       │   │   │       ├── jquery.vmap.new_regions_france.js
│       │   │   │       ├── jquery.vmap.russia.js
│       │   │   │       ├── jquery.vmap.serbia.js
│       │   │   │       ├── jquery.vmap.tunisia.js
│       │   │   │       ├── jquery.vmap.turkey.js
│       │   │   │       ├── jquery.vmap.ukraine.js
│       │   │   │       ├── jquery.vmap.usa.counties.js
│       │   │   │       ├── jquery.vmap.usa.districts.js
│       │   │   │       ├── jquery.vmap.usa.js
│       │   │   │       └── jquery.vmap.world.js
│       │   │   ├── jsgrid/
│       │   │   │   ├── i18n/
│       │   │   │   │   ├── jsgrid-de.js
│       │   │   │   │   ├── jsgrid-es.js
│       │   │   │   │   ├── jsgrid-fr.js
│       │   │   │   │   ├── jsgrid-he.js
│       │   │   │   │   ├── jsgrid-ja.js
│       │   │   │   │   ├── jsgrid-ka.js
│       │   │   │   │   ├── jsgrid-pl.js
│       │   │   │   │   ├── jsgrid-pt-br.js
│       │   │   │   │   ├── jsgrid-pt.js
│       │   │   │   │   ├── jsgrid-ru.js
│       │   │   │   │   ├── jsgrid-tr.js
│       │   │   │   │   ├── jsgrid-zh-cn.js
│       │   │   │   │   └── jsgrid-zh-tw.js
│       │   │   │   ├── jsgrid-theme.css
│       │   │   │   ├── jsgrid.css
│       │   │   │   └── jsgrid.js
│       │   │   ├── jszip/
│       │   │   │   └── jszip.js
│       │   │   ├── moment/
│       │   │   │   ├── locale/
│       │   │   │   │   ├── af.js
│       │   │   │   │   ├── ar-dz.js
│       │   │   │   │   ├── ar-kw.js
│       │   │   │   │   ├── ar-ly.js
│       │   │   │   │   ├── ar-ma.js
│       │   │   │   │   ├── ar-sa.js
│       │   │   │   │   ├── ar-tn.js
│       │   │   │   │   ├── ar.js
│       │   │   │   │   ├── az.js
│       │   │   │   │   ├── be.js
│       │   │   │   │   ├── bg.js
│       │   │   │   │   ├── bm.js
│       │   │   │   │   ├── bn-bd.js
│       │   │   │   │   ├── bn.js
│       │   │   │   │   ├── bo.js
│       │   │   │   │   ├── br.js
│       │   │   │   │   ├── bs.js
│       │   │   │   │   ├── ca.js
│       │   │   │   │   ├── cs.js
│       │   │   │   │   ├── cv.js
│       │   │   │   │   ├── cy.js
│       │   │   │   │   ├── da.js
│       │   │   │   │   ├── de-at.js
│       │   │   │   │   ├── de-ch.js
│       │   │   │   │   ├── de.js
│       │   │   │   │   ├── dv.js
│       │   │   │   │   ├── el.js
│       │   │   │   │   ├── en-SG.js
│       │   │   │   │   ├── en-au.js
│       │   │   │   │   ├── en-ca.js
│       │   │   │   │   ├── en-gb.js
│       │   │   │   │   ├── en-ie.js
│       │   │   │   │   ├── en-il.js
│       │   │   │   │   ├── en-in.js
│       │   │   │   │   ├── en-nz.js
│       │   │   │   │   ├── eo.js
│       │   │   │   │   ├── es-do.js
│       │   │   │   │   ├── es-mx.js
│       │   │   │   │   ├── es-us.js
│       │   │   │   │   ├── es.js
│       │   │   │   │   ├── et.js
│       │   │   │   │   ├── eu.js
│       │   │   │   │   ├── fa.js
│       │   │   │   │   ├── fi.js
│       │   │   │   │   ├── fil.js
│       │   │   │   │   ├── fo.js
│       │   │   │   │   ├── fr-ca.js
│       │   │   │   │   ├── fr-ch.js
│       │   │   │   │   ├── fr.js
│       │   │   │   │   ├── fy.js
│       │   │   │   │   ├── ga.js
│       │   │   │   │   ├── gd.js
│       │   │   │   │   ├── gl.js
│       │   │   │   │   ├── gom-deva.js
│       │   │   │   │   ├── gom-latn.js
│       │   │   │   │   ├── gu.js
│       │   │   │   │   ├── he.js
│       │   │   │   │   ├── hi.js
│       │   │   │   │   ├── hr.js
│       │   │   │   │   ├── hu.js
│       │   │   │   │   ├── hy-am.js
│       │   │   │   │   ├── id.js
│       │   │   │   │   ├── is.js
│       │   │   │   │   ├── it-ch.js
│       │   │   │   │   ├── it.js
│       │   │   │   │   ├── ja.js
│       │   │   │   │   ├── jv.js
│       │   │   │   │   ├── ka.js
│       │   │   │   │   ├── kk.js
│       │   │   │   │   ├── km.js
│       │   │   │   │   ├── kn.js
│       │   │   │   │   ├── ko.js
│       │   │   │   │   ├── ku.js
│       │   │   │   │   ├── ky.js
│       │   │   │   │   ├── lb.js
│       │   │   │   │   ├── lo.js
│       │   │   │   │   ├── lt.js
│       │   │   │   │   ├── lv.js
│       │   │   │   │   ├── me.js
│       │   │   │   │   ├── mi.js
│       │   │   │   │   ├── mk.js
│       │   │   │   │   ├── ml.js
│       │   │   │   │   ├── mn.js
│       │   │   │   │   ├── mr.js
│       │   │   │   │   ├── ms-my.js
│       │   │   │   │   ├── ms.js
│       │   │   │   │   ├── mt.js
│       │   │   │   │   ├── my.js
│       │   │   │   │   ├── nb.js
│       │   │   │   │   ├── ne.js
│       │   │   │   │   ├── nl-be.js
│       │   │   │   │   ├── nl.js
│       │   │   │   │   ├── nn.js
│       │   │   │   │   ├── oc-lnc.js
│       │   │   │   │   ├── pa-in.js
│       │   │   │   │   ├── pl.js
│       │   │   │   │   ├── pt-br.js
│       │   │   │   │   ├── pt.js
│       │   │   │   │   ├── ro.js
│       │   │   │   │   ├── ru.js
│       │   │   │   │   ├── sd.js
│       │   │   │   │   ├── se.js
│       │   │   │   │   ├── si.js
│       │   │   │   │   ├── sk.js
│       │   │   │   │   ├── sl.js
│       │   │   │   │   ├── sq.js
│       │   │   │   │   ├── sr-cyrl.js
│       │   │   │   │   ├── sr.js
│       │   │   │   │   ├── ss.js
│       │   │   │   │   ├── sv.js
│       │   │   │   │   ├── sw.js
│       │   │   │   │   ├── ta.js
│       │   │   │   │   ├── te.js
│       │   │   │   │   ├── tet.js
│       │   │   │   │   ├── tg.js
│       │   │   │   │   ├── th.js
│       │   │   │   │   ├── tk.js
│       │   │   │   │   ├── tl-ph.js
│       │   │   │   │   ├── tlh.js
│       │   │   │   │   ├── tr.js
│       │   │   │   │   ├── tzl.js
│       │   │   │   │   ├── tzm-latn.js
│       │   │   │   │   ├── tzm.js
│       │   │   │   │   ├── ug-cn.js
│       │   │   │   │   ├── uk.js
│       │   │   │   │   ├── ur.js
│       │   │   │   │   ├── uz-latn.js
│       │   │   │   │   ├── uz.js
│       │   │   │   │   ├── vi.js
│       │   │   │   │   ├── x-pseudo.js
│       │   │   │   │   ├── yo.js
│       │   │   │   │   ├── zh-cn.js
│       │   │   │   │   ├── zh-hk.js
│       │   │   │   │   ├── zh-mo.js
│       │   │   │   │   └── zh-tw.js
│       │   │   │   ├── locales.js
│       │   │   │   └── moment-with-locales.js
│       │   │   ├── overlayScrollbars/
│       │   │   │   ├── css/
│       │   │   │   │   └── OverlayScrollbars.css
│       │   │   │   └── js/
│       │   │   │       ├── OverlayScrollbars.js
│       │   │   │       └── jquery.overlayScrollbars.js
│       │   │   ├── pace-progress/
│       │   │   │   ├── pace.js
│       │   │   │   └── themes/
│       │   │   │       ├── black/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── blue/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── green/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── orange/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── pink/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── purple/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── red/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── silver/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── white/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       └── yellow/
│       │   │   │           ├── pace-theme-barber-shop.css
│       │   │   │           ├── pace-theme-big-counter.css
│       │   │   │           ├── pace-theme-bounce.css
│       │   │   │           ├── pace-theme-center-atom.css
│       │   │   │           ├── pace-theme-center-circle.css
│       │   │   │           ├── pace-theme-center-radar.css
│       │   │   │           ├── pace-theme-center-simple.css
│       │   │   │           ├── pace-theme-corner-indicator.css
│       │   │   │           ├── pace-theme-fill-left.css
│       │   │   │           ├── pace-theme-flash.css
│       │   │   │           ├── pace-theme-flat-top.css
│       │   │   │           ├── pace-theme-loading-bar.css
│       │   │   │           ├── pace-theme-mac-osx.css
│       │   │   │           ├── pace-theme-material.css
│       │   │   │           └── pace-theme-minimal.css
│       │   │   ├── pdfmake/
│       │   │   │   ├── pdfmake.js
│       │   │   │   └── vfs_fonts.js
│       │   │   ├── popper/
│       │   │   │   ├── esm/
│       │   │   │   │   ├── popper-utils.js
│       │   │   │   │   └── popper.js
│       │   │   │   ├── popper-utils.js
│       │   │   │   ├── popper.js
│       │   │   │   └── umd/
│       │   │   │       ├── popper-utils.js
│       │   │   │       ├── popper.js
│       │   │   │       └── popper.js.flow
│       │   │   ├── raphael/
│       │   │   │   ├── Gruntfile.js
│       │   │   │   ├── license.txt
│       │   │   │   ├── raphael.js
│       │   │   │   └── raphael.no-deps.js
│       │   │   ├── select2/
│       │   │   │   ├── css/
│       │   │   │   │   └── select2.css
│       │   │   │   └── js/
│       │   │   │       ├── i18n/
│       │   │   │       │   ├── af.js
│       │   │   │       │   ├── ar.js
│       │   │   │       │   ├── az.js
│       │   │   │       │   ├── bg.js
│       │   │   │       │   ├── bn.js
│       │   │   │       │   ├── bs.js
│       │   │   │       │   ├── build.txt
│       │   │   │       │   ├── ca.js
│       │   │   │       │   ├── cs.js
│       │   │   │       │   ├── da.js
│       │   │   │       │   ├── de.js
│       │   │   │       │   ├── dsb.js
│       │   │   │       │   ├── el.js
│       │   │   │       │   ├── en.js
│       │   │   │       │   ├── es.js
│       │   │   │       │   ├── et.js
│       │   │   │       │   ├── eu.js
│       │   │   │       │   ├── fa.js
│       │   │   │       │   ├── fi.js
│       │   │   │       │   ├── fr.js
│       │   │   │       │   ├── gl.js
│       │   │   │       │   ├── he.js
│       │   │   │       │   ├── hi.js
│       │   │   │       │   ├── hr.js
│       │   │   │       │   ├── hsb.js
│       │   │   │       │   ├── hu.js
│       │   │   │       │   ├── hy.js
│       │   │   │       │   ├── id.js
│       │   │   │       │   ├── is.js
│       │   │   │       │   ├── it.js
│       │   │   │       │   ├── ja.js
│       │   │   │       │   ├── ka.js
│       │   │   │       │   ├── km.js
│       │   │   │       │   ├── ko.js
│       │   │   │       │   ├── lt.js
│       │   │   │       │   ├── lv.js
│       │   │   │       │   ├── mk.js
│       │   │   │       │   ├── ms.js
│       │   │   │       │   ├── nb.js
│       │   │   │       │   ├── ne.js
│       │   │   │       │   ├── nl.js
│       │   │   │       │   ├── pl.js
│       │   │   │       │   ├── ps.js
│       │   │   │       │   ├── pt-BR.js
│       │   │   │       │   ├── pt.js
│       │   │   │       │   ├── ro.js
│       │   │   │       │   ├── ru.js
│       │   │   │       │   ├── sk.js
│       │   │   │       │   ├── sl.js
│       │   │   │       │   ├── sq.js
│       │   │   │       │   ├── sr-Cyrl.js
│       │   │   │       │   ├── sr.js
│       │   │   │       │   ├── sv.js
│       │   │   │       │   ├── th.js
│       │   │   │       │   ├── tk.js
│       │   │   │       │   ├── tr.js
│       │   │   │       │   ├── uk.js
│       │   │   │       │   ├── vi.js
│       │   │   │       │   ├── zh-CN.js
│       │   │   │       │   └── zh-TW.js
│       │   │   │       ├── select2.full.js
│       │   │   │       └── select2.js
│       │   │   ├── select2-bootstrap4-theme/
│       │   │   │   └── select2-bootstrap4.css
│       │   │   ├── sparklines/
│       │   │   │   ├── sparkline.js
│       │   │   │   └── sparkline.mjs
│       │   │   ├── summernote/
│       │   │   │   ├── lang/
│       │   │   │   │   ├── summernote-ar-AR.js
│       │   │   │   │   ├── summernote-ar-AR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-az-AZ.js
│       │   │   │   │   ├── summernote-az-AZ.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-bg-BG.js
│       │   │   │   │   ├── summernote-bg-BG.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ca-ES.js
│       │   │   │   │   ├── summernote-ca-ES.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-cs-CZ.js
│       │   │   │   │   ├── summernote-cs-CZ.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-da-DK.js
│       │   │   │   │   ├── summernote-da-DK.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-de-DE.js
│       │   │   │   │   ├── summernote-de-DE.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-el-GR.js
│       │   │   │   │   ├── summernote-el-GR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-es-ES.js
│       │   │   │   │   ├── summernote-es-ES.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-es-EU.js
│       │   │   │   │   ├── summernote-es-EU.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-fa-IR.js
│       │   │   │   │   ├── summernote-fa-IR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-fi-FI.js
│       │   │   │   │   ├── summernote-fi-FI.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-fr-FR.js
│       │   │   │   │   ├── summernote-fr-FR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-gl-ES.js
│       │   │   │   │   ├── summernote-gl-ES.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-he-IL.js
│       │   │   │   │   ├── summernote-he-IL.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-hr-HR.js
│       │   │   │   │   ├── summernote-hr-HR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-hu-HU.js
│       │   │   │   │   ├── summernote-hu-HU.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-id-ID.js
│       │   │   │   │   ├── summernote-id-ID.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-it-IT.js
│       │   │   │   │   ├── summernote-it-IT.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ja-JP.js
│       │   │   │   │   ├── summernote-ja-JP.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ko-KR.js
│       │   │   │   │   ├── summernote-ko-KR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-lt-LT.js
│       │   │   │   │   ├── summernote-lt-LT.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-lt-LV.js
│       │   │   │   │   ├── summernote-lt-LV.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-mn-MN.js
│       │   │   │   │   ├── summernote-mn-MN.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-nb-NO.js
│       │   │   │   │   ├── summernote-nb-NO.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-nl-NL.js
│       │   │   │   │   ├── summernote-nl-NL.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-pl-PL.js
│       │   │   │   │   ├── summernote-pl-PL.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-pt-BR.js
│       │   │   │   │   ├── summernote-pt-BR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-pt-PT.js
│       │   │   │   │   ├── summernote-pt-PT.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ro-RO.js
│       │   │   │   │   ├── summernote-ro-RO.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ru-RU.js
│       │   │   │   │   ├── summernote-ru-RU.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sk-SK.js
│       │   │   │   │   ├── summernote-sk-SK.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sl-SI.js
│       │   │   │   │   ├── summernote-sl-SI.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sr-RS-Latin.js
│       │   │   │   │   ├── summernote-sr-RS-Latin.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sr-RS.js
│       │   │   │   │   ├── summernote-sr-RS.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sv-SE.js
│       │   │   │   │   ├── summernote-sv-SE.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ta-IN.js
│       │   │   │   │   ├── summernote-ta-IN.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-th-TH.js
│       │   │   │   │   ├── summernote-th-TH.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-tr-TR.js
│       │   │   │   │   ├── summernote-tr-TR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-uk-UA.js
│       │   │   │   │   ├── summernote-uk-UA.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-uz-UZ.js
│       │   │   │   │   ├── summernote-uz-UZ.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-vi-VN.js
│       │   │   │   │   ├── summernote-vi-VN.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-zh-CN.js
│       │   │   │   │   ├── summernote-zh-CN.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-zh-TW.js
│       │   │   │   │   └── summernote-zh-TW.min.js.LICENSE.txt
│       │   │   │   ├── plugin/
│       │   │   │   │   ├── databasic/
│       │   │   │   │   │   ├── summernote-ext-databasic.css
│       │   │   │   │   │   └── summernote-ext-databasic.js
│       │   │   │   │   ├── hello/
│       │   │   │   │   │   └── summernote-ext-hello.js
│       │   │   │   │   └── specialchars/
│       │   │   │   │       └── summernote-ext-specialchars.js
│       │   │   │   ├── summernote-bs4.css
│       │   │   │   ├── summernote-bs4.js
│       │   │   │   ├── summernote-bs4.min.js.LICENSE.txt
│       │   │   │   ├── summernote-lite.css
│       │   │   │   ├── summernote-lite.js
│       │   │   │   ├── summernote-lite.min.js.LICENSE.txt
│       │   │   │   ├── summernote.css
│       │   │   │   ├── summernote.js
│       │   │   │   └── summernote.min.js.LICENSE.txt
│       │   │   ├── sweetalert2/
│       │   │   │   ├── sweetalert2.all.js
│       │   │   │   ├── sweetalert2.css
│       │   │   │   └── sweetalert2.js
│       │   │   ├── sweetalert2-theme-bootstrap-4/
│       │   │   │   └── bootstrap-4.css
│       │   │   ├── tempusdominus-bootstrap-4/
│       │   │   │   ├── css/
│       │   │   │   │   └── tempusdominus-bootstrap-4.css
│       │   │   │   └── js/
│       │   │   │       └── tempusdominus-bootstrap-4.js
│       │   │   ├── toastr/
│       │   │   │   └── toastr.css
│       │   │   └── uplot/
│       │   │       ├── uPlot.cjs.js
│       │   │       ├── uPlot.esm.js
│       │   │       └── uPlot.iife.js
│       │   └── starter.html
│       ├── README.md
│       ├── package.json
│       ├── public/
│       │   ├── index.html
│       │   ├── manifest.json
│       │   └── robots.txt
│       ├── src/
│       │   ├── App.test.tsx
│       │   ├── App.tsx
│       │   ├── Helper/
│       │   │   └── index.ts
│       │   ├── Hooks/
│       │   │   └── useApi.ts
│       │   ├── api/
│       │   │   └── commonApi.ts
│       │   ├── assets/
│       │   │   ├── css/
│       │   │   │   ├── adminlte.css
│       │   │   │   └── alt/
│       │   │   │       ├── adminlte.components.css
│       │   │   │       ├── adminlte.core.css
│       │   │   │       ├── adminlte.extra-components.css
│       │   │   │       ├── adminlte.pages.css
│       │   │   │       └── adminlte.plugins.css
│       │   │   └── plugins/
│       │   │       └── fontawesome-free/
│       │   │           └── css/
│       │   │               ├── all.css
│       │   │               ├── brands.css
│       │   │               ├── fontawesome.css
│       │   │               ├── regular.css
│       │   │               ├── solid.css
│       │   │               ├── svg-with-js.css
│       │   │               └── v4-shims.css
│       │   ├── index.tsx
│       │   ├── pages/
│       │   │   ├── ErrorPage/
│       │   │   │   └── Error404.tsx
│       │   │   └── Register/
│       │   │       └── Register.tsx
│       │   ├── react-app-env.d.ts
│       │   ├── redux/
│       │   │   ├── auth/
│       │   │   │   ├── authReducer.ts
│       │   │   │   └── authTypes.ts
│       │   │   ├── root-reducer.ts
│       │   │   └── store.ts
│       │   ├── reportWebVitals.ts
│       │   ├── routes/
│       │   │   └── index.tsx
│       │   ├── setupTests.ts
│       │   └── stories/
│       │       ├── Button.stories.tsx
│       │       ├── Button.tsx
│       │       ├── Header.stories.tsx
│       │       ├── Header.tsx
│       │       ├── Introduction.stories.mdx
│       │       ├── Page.stories.tsx
│       │       ├── Page.tsx
│       │       ├── button.css
│       │       ├── header.css
│       │       └── page.css
│       └── tsconfig.json
└── web-and-server/
    ├── .eslintrc.json
    ├── .gitignore
    ├── README.md
    ├── next.config.js
    ├── package.json
    ├── pages/
    │   ├── _app.tsx
    │   ├── _document.tsx
    │   ├── api/
    │   │   └── hello.ts
    │   └── index.tsx
    ├── styles/
    │   ├── Home.module.css
    │   └── globals.css
    └── tsconfig.json

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

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
 - OS: [e.g. iOS]
 - Browser [e.g. chrome, safari]
 - Version [e.g. 22]

**Smartphone (please complete the following information):**
 - Device: [e.g. iPhone6]
 - OS: [e.g. iOS8.1]
 - Browser [e.g. stock browser, safari]
 - Version [e.g. 22]

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/workflows/yarn-build-test.yml
================================================
name: Build and Test Next js (That working on my Computer 🫡)
on: pull_request

jobs:
  build:
    runs-on: ubuntu-latest
    name: Build and Test
    steps:
      - uses: actions/checkout@v2
        name: Check out repository
      - uses: actions/setup-node@v1
        name: Set up Node.js
        with:
          node-version: 14
      - run: |
          cd web-and-server
          yarn
          yarn build
        name: Build and Test


================================================
FILE: .gitignore
================================================
thisMyPCApp/Desktop-win32-x64/
thisMyPCApp/node_modules/
thisMyPCServer/node_modules/
thisMyPCWeb/node_modules/
thisMyPCApp/ThisMyPC-win32-x64/
thisMyPCWeb/firebase/node_modules/
thisMyPCApp/ThisMyPC-win32-x64.zip
.idea
.vscode


================================================
FILE: .gitlab-ci.yml
================================================
    image: node:10.9.0

    stages:
      - build
      - test

    cache:
      paths:
        - thisMyPCWeb/node_modules
        - thisMyPCApp/node_modules/
        - thisMyPCServer/node_modules/

    install_dependencies:
      stage: build
      script:
        - git clone https://gitlab.com/supunlakmal/thismypc.git
        - cd thismypc
        - cd thisMyPCWeb
        - npm i
        - npm i -g @angular/cli
        - ng build --prod --base-href /
        - cd ..
        - cd thisMyPCApp
        - npm i
        - cd ..
        - cd thisMyPCServer
        - npm i
      artifacts:
        paths:
        - thisMyPCWeb/node_modules
        - thisMyPCApp/node_modules/
        - thisMyPCServer/node_modules/


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
 advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
 address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
 professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at supunlakmal61@gmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq


================================================
FILE: CONTRIBUTING.md
================================================



================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2019 Supun Lakmal Abesekara

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# This My PC

<div align="center">
    <a href="http://thismypc.com/">
        <img src="https://raw.githubusercontent.com/supunlakmal/thismypc/master/thisMyPCWeb/angular-deprecated/src/assets/images/logo/logo-mini.png" crossorigin>
    </a>
</div>

<br />

<div align="center">

[![forthebadge](https://forthebadge.com/images/badges/made-with-javascript.svg)](http://thismypc.com/)
<br />
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/5b677e607def4466b8084eb76be4f0d7)](https://app.codacy.com/app/supunlakmal/thismypc?utm_source=github.com&utm_medium=referral&utm_content=supunlakmal/thismypc&utm_campaign=Badge_Grade_Dashboard)
![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat) [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/supunlakmal/thismypc/graphs/commit-activity) [![Website thismypc.com](https://img.shields.io/website-up-down-green-red/http/shields.io.svg)](http://thismypc.com/) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/supunlakmal/thismypc/blob/master/LICENSE)
[![Gitter](https://badges.gitter.im/gitterHQ/gitter.svg)](https://gitter.im/Thismypc/community)

</div>

> ThisMyPC provides a neat web interface that can be used for browsing your desktop drives from any device in your browser itself. With the help of NodeJs, the file details are displayed in JSON format that can then be easily displayed in web browsers.

> The source code is open so that you can download the source code and set it up with ease if you would like to have your own exclusive environment.

![Web Site System](https://raw.githubusercontent.com/supunlakmal/thismypc/master/doc/gifAnimations/web_site_system.gif)

## App Screenshots

|                                                                                    Desktop App Login                                                                                     |                                                                                   Desktop App Open                                                                                   |                                                                                Web App computer hard drives                                                                                |                                                                             Web App computer hard drives Open                                                                              |
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| <img src="https://raw.githubusercontent.com/supunlakmal/thismypc/master/thisMyPCWeb/angular-deprecated/src/assets/images/screen/app-login.PNG" title="Desktop App  Login " width="100%" crossorigin> | <img src="https://raw.githubusercontent.com/supunlakmal/thismypc/master/thisMyPCWeb/angular-deprecated/src/assets/images/screen/app-home.PNG" title="Desktop App Open" width="100%" crossorigin> | <img src="https://raw.githubusercontent.com/supunlakmal/thismypc/master/thisMyPCWeb/angular-deprecated/src/assets/images/screen/web-system.PNG" title="Web App  PC  Drivers" width="100%" crossorigin> | <img src="https://raw.githubusercontent.com/supunlakmal/thismypc/master/thisMyPCWeb/angular-deprecated/src/assets/images/screen/web-system.PNG" title="Web App  PC  Drivers" width="100%" crossorigin> |

## Folder Structure

    .
    ├── .github/ISSUE_TEMPLATE
    ├── doc                          # All Api doc and gif files
    ├── thisMyPCApp                  # Electron JS app folder
    ├── thisMyPCServer               # Node JS MongoDB and Express JS server folder
    ├── thisMyPCWeb                  # Angular website folder
    ├── .gitignore
    ├── .gitlab-ci.yml
    ├── CODE_OF_CONDUCT.md
    ├── LICENSE
    └── README.md

## What (This my pc) ?

The concept behind thismypc app was to transfer your computer folder and file information through a nodeJS server to the web end as JSON data.

## Why (This my pc) ?

- The app's responsive web interface helps you to browse file in any resolution device.
- You can use source code for your own projects.
- It works well in low bandwidth environments.

## How to (Wiki) ?

All usage instruction and information update on [Github Wiki](https://github.com/supunlakmal/thismypc/wiki).

## Developing

### Platforms

| Platform          | Status     |
| ----------------- | ---------- |
| Microsoft Windows | Developing |
| Linux             | Pending    |
| Mac os            | Pending    |
| Android           | Developing |

#### Built With

- [Node JS](https://nodejs.org/en/)
- [GraphQL](http://graphql.org)
- [Express JS](https://expressjs.com/)
- [Socket IO](https://socket.io/)
- [Angular](https://angularjs.org/)
- [Electron JS](https://electronjs.org/)
- [Mongodb](https://www.mongodb.com/)
- [React Native](https://facebook.github.io/react-native/)

#### Clone Project

```shell
git clone https://github.com/supunlakmal/thismypc.git
```

![git clone https://github.com/supunlakmal/thismypc.git](https://raw.githubusercontent.com/supunlakmal/thismypc/master/doc/gifAnimations/gitClone.gif)

This Command will copy a full project to your local environment

## Angular Project

### Setting up Angular Project

```shell
    cd thisMyPCWeb
    npm i
```

![Setting up Angular Project](https://raw.githubusercontent.com/supunlakmal/thismypc/master/doc/gifAnimations/angularSetup.gif)

`cd thisMyPCWeb` Move into angular Project Folder
`npm i` install all dependency.

### Run Angular Project

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

## Electron Project

### Setting up Electron Project

```shell
cd thisMyPCApp
npm i
```

![ Setting up Electron Project](https://raw.githubusercontent.com/supunlakmal/thismypc/master/doc/gifAnimations/electronSetup.gif)

`cd thisMyPCWeb` Move into Electron Project Folder
`npm i` install all dependency.

### Run Electron Project

Run `npm run start` start electron app in debug mode

## Node Server

### Setting up Node Server

```shell
cd thisMyPCServer
npm i
```

`cd thisMyPCServer` Move into Node Project Folder
`npm i` install all dependency.

### Run Node Project

Run `npm node index.js` to start node server

## Graphql

| URL             |
| --------------- |
| /api/v1/graphql |

## REST API

### API Reference

- PC - Personal Computer
- thismypc.com:5000 - This is Thismypc web site API url. You can use your own localhost server link instead default Link.
- ":userID" - User ID
- ":computerKey" - Computer Key

### Web API

| Web API                      | URL                                        | Description |
| ---------------------------- | ------------------------------------------ | ----------- |
| User Register                | /api/v1/user/register                      | -           |
| User Login                   | /api/v1/user/login                         | -           |
| User Logout                  | /api/v1/user/:userID/logout                | -           |
| User Auth                    | /api/v1/user/authentication                | -           |
| User Info                    | /api/v1/user/:userID                       | -           |
| User Online PC List          | /api/v1/user/computer/online               | -           |
| Public PC Access             | /api/v1/computer/public/access             | -           |
| User PC List                 | /api/v1/user/computer                      | -           |
| Update User Account          | /api/v1/user/update                        | -           |
| Update User Password         | /api/v1/user/password/edit                 | -           |
| Update User PC Public status | /api/v1/user/computer/public/status/update | -           |
| Update User PC Public Key    | /api/v1/user/computer/public/key/update    | -           |

### Web socket IO

| Socket Name                    | Socket                 | Type | Description |
| ------------------------------ | ---------------------- | ---- | ----------- |
| Join Socket from Web           | joinFromWeb            | emit | -           |
| Folder or Driver Open Request  | openFolder             | emit | -           |
| PC access Requests             | pcAccessRequest        | emit | -           |
| Get Hard Drive List            | hDDList                | on   | -           |
| Folder or hard drive open data | openFolderRequestToWeb | on   | -           |

### App API

| APP API             | URL                                        | Description |
| ------------------- | ------------------------------------------ | ----------- |
| User Login From App | /api/v1/user/computer/login                | -           |
| User Info           | /api/v1/user/:userID/computer/:computerKey | -           |
| User Logout         | /api/v1/user/:userID/computer/logout       | -           |

### App socket IO

| Socket Name                             | Socket                | Type | Description |
| --------------------------------------- | --------------------- | ---- | ----------- |
| Join Socket from APP                    | joinFromApp           | emit | -           |
| Send Hard Drive List                    | hDDList               | emit | -           |
| Send Data inside Folder or Hard Drive   | sendOpenFolderRequest | emit | -           |
| Send callback of Folder Create Function | folderCreateCallback  | emit | -           |
| PC access user and data                 | pcAccessRequest       | on   | -           |
| Folder or Hard drive open request       | openFolderRequest     | on   | -           |
| Folder Validation                       | validateFolderName    | on   | -           |

## Database

MongoDB use as Database.

## Licensing

The MIT License 2019 Supun Lakmal


================================================
FILE: thisMyPCApp/.eslintrc.js
================================================
module.exports = {
  'env': {
    'browser': true,
    'commonjs': true,
    'es6': true,
  },
  'extends': 'google',
  'globals': {
    'Atomics': 'readonly',
    'SharedArrayBuffer': 'readonly',
  },
  'parserOptions': {
    'ecmaVersion': 2018,
  },
  'rules': {
  },
};


================================================
FILE: thisMyPCApp/README.md
================================================

# This My PC

<div align="center">
    <a href="http://thismypc.com/">
        <img src="../thisMyPCWeb/src/assets/images/logo/logo-mini.png">
    </a>
</div>
<br />



### Electron JS


```shell
npm i --save-dev electron
```

```shell
npm i electron-packager --save-dev
```
```shell
npm i electron-packager -g
```

```shell
npm i electron-reload
```


```shell
npm i node-fetch --save
```



####  Create  exe file  with  encrypt  source code

```shell
electron-packager . --asar
```


#### Build   This MY PC  App  for  windose
```shell
 npm  run  windose
```


- "windose": "electron-packager . --asar --icon=assets/icon/icon.ico"


================================================
FILE: thisMyPCApp/assets/css/home.css
================================================
.click-btn {
    cursor: pointer;
}

.frontside .card,
.backside .card {
    min-height: 100%;
}

.frontside .card .card-title,
.backside .card .card-title {
    color: #007b5e !important;
}

.frontside .card .card-body img {
    border-radius: 50%;
    height: 120px;
    width: 120px;
}

.progress {
    width: 100%;
}

.progress-bar {
    display: inline;
    text-align: left;
}

.download-box {
    padding: 20px
}

img.logo {
    width: 163px;
}

.top_alert_position .alert {
    bottom: 10px;
    position: fixed;
    right: 10px;
    z-index: 1;
    z-index: 2000;
}

.mouse {
    cursor: pointer;
}

.software_venison {
    font-size: 14px;
    color: gray;
}

.box {
    border-radius: 3px;
    border: 1px solid #DCDEE0;
    font-size: 14px;
    height: auto;
    margin-bottom: 10px;
    min-height: 60px;
    padding: 10px 10px;
    vertical-align: middle;
    width: 100%;
}

.box:hover {
    background-color: #f8f8f8;
    border: 1px solid #1e88e5;
}

.box .card-subtitle {
    font-size: 13px;
}

#remoteUserBox i {
    color: #1e88e5;
    font-size: 28px;
}

.app-store-icon {
    color: #0080ff;
    font-size: 20px;
    line-height: 39px !important;
}

.app-store-text {
    font-size: 14px;
    line-height: 39px !important;
}

.app-store-model-header {
    border: none;
}

.app-store-title {
    font-size: 18px;
    font-weight: 600;
}

.app-store-info {
    color: #5f6368;
    font-weight: 600;
}

.btn-circle {
    width: 87px;
    height: 30px;
    padding: 5px 8px;
    border-radius: 100px;
    font-size: 14px;
    line-height: 1.33;
}

================================================
FILE: thisMyPCApp/assets/css/login.css
================================================
@import url("https://fonts.googleapis.com/css?family=Lato:300,400,700");
.logo {
  width: 163px;
}

.nav-bar-bg {
  background-color: #ffffff00 !important;
  padding-bottom: 0px;
  padding-left: 8%;
  padding-right: 8%;
  padding-top: 21px;
  width: 100%;
  z-index: 2;
}

.mouse {
  cursor: pointer;
}

.top_alert_position {
  position: fixed;
  right: 10px;
  top: 10px;
  z-index: 1;
  z-index: 2000;
}

.logo-modal {
  width: 143px;
}

.green-btn {
  background-color: #15CD72;
  border: 1px solid #15CD72;
  color: #ffffff !important;
}

.green-btn:hover {
  background-color: #18e07c;
  border: 1px solid #15CD72;
  color: #ffffff !important;
}

.blue-btn {
  background-color: #0080ff !important;
  color: #ffffff !important;
}

.blue-text {
  color: #0080ff !important;
}

.green-text {
  color: #15CD72 !important;
}

.text-weight-600 {
  font-weight: 600 !important;
}

body {
  background-image: url("../images/background_img.png");
  background-size: cover;
  padding-bottom: 4%;
}

.left-box {
  color: white;
  padding-bottom: 11%;
  padding-top: 11%;
}

.text-home-mini {
  font-size: 35px;
  font-weight: 400;
}

.text-home-max {
  font-size: 70px;
  font-weight: bold;
}

.text-home-how {
  font-size: 35px;
  font-weight: lighter;
}

.main-page-big-text {
  color: #ffffff;
  font-size: 42px;
  font-weight: bold;
  line-height: 48px;
  padding-top: 30px;
  text-align: center;
}

.main-page-mini-text {
  color: rgba(196, 227, 255, 0.8);
  font-size: 27px;
  font-weight: 400;
  line-height: 30px;
  margin: -16px auto 16px auto;
  max-width: 700px;
  padding-top: 30px;
  text-align: center;
  text-transform: none;
}

.type-text {
  -webkit-transition: all cubic-bezier(0.645, 0.045, 0.355, 1) 0.25s;
  background: #fff;
  border: 1px solid #f1f1f1;
  border-radius: 5px;
  color: rgba(3, 27, 78, 0.7);
  height: 48px;
  max-width: 100%;
  padding: 0 16px;
  position: relative;
  transition: all cubic-bezier(0.645, 0.045, 0.355, 1) 0.25s;
  width: 100%;
}

.type-text:focus {
  border-color: #0069ff;
  outline: none;
}

.form-col {
  padding-top: 15px;
}

.error_message,
.error_message a {
  border-color: #ff4d4a;
  color: #e53935;
}

.success_message,
.warning_message,
.error_message,
.promo_message,
.info_message,
.resolved_message {
  position: relative;
  font-size: 15px;
  max-width: 1290px;
  margin: 0px auto 30px auto;
  padding: 10px 24px 10px 10px;
  text-align: left;
  border-radius: 5px;
  border-width: 1px;
  border-style: solid;
}

.system-font {
  color: #616366 !important;
  font-size: 15px;
}

.site-font {
  font-family: 'Lato', sans-serif;
}

.hddBox {
  background-color: #ffffff;
  color: #555555;
  font-size: 14px;
  font-weight: inherit;
}

.box {
  border: 1px solid #DCDEE0;
  border-radius: 3px;
  height: auto;
  margin-bottom: 10px;
  padding: 10px 10px;
  vertical-align: middle;
}

.card-box-title {
  color: #9DA2A6;
  font-size: 13px;
  font-weight: 600;
}

.top-main-container {
  padding: 0px 5% 0 5%;
}

#site-main-nav.onScrolled {
  background: #fff !important;
  position: fixed;
}

.hide {
  display: none;
}

.show {
  display: block;
}

.main_text {
  color: #fff;
  font-size: 30px;
}

.mini_text {
  color: #fff;
  font-size: 20px;
}

/**System Block**/
.box-active {
  border: 1px solid #1e88e5;
  background-color: #f5f9ff;
}

.box:hover {
  border: 1px solid #1e88e5;
  background-color: #f8f8f8;
}

.folder-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/**System Block End**/
/**
Account Block
 */
#header2_left h1 {
  color: #363B40;
  font-size: 25px;
  font-weight: 500;
  line-height: 34px;
  margin: 0px 0px 10px 0px;
  text-transform: capitalize;
}

#pills-account-tab {
  padding-left: 0px;
}

.pills-tab-account {
  border-bottom: 1px solid #ebebeb;
}

.account-a {
  color: #616366 !important;
}

.account-a.active {
  color: #1e88e5 !important;
}

.account-box {
  margin-left: auto;
  margin-right: auto;
}

.header {
  color: #363B40;
  font-size: 25px;
  font-weight: 500;
  line-height: 34px;
  margin: 0px 0px 10px 0px;
  text-transform: capitalize;
}

.copyIcon {
  font-size: 22px;
  margin-left: 12px;
}

/* iPads (portrait and landscape) ----------- */
@media only screen and (min-device-width: 768px) and (max-device-width: 1440px) {
  /* Styles */
  .text-home-mini {
    font-size: 25px;
    font-weight: 400;
  }
  .text-home-max {
    font-size: 49px;
    font-weight: bold;
  }
  .text-home-how {
    font-size: 25px;
    font-weight: lighter;
  }
}


================================================
FILE: thisMyPCApp/assets/js/home.js
================================================
"use strict";
const socket = io.connect(`http://localhost:5000`);
const remoteServer = `http://localhost:5000`;
const { ipcRenderer } = require(`electron`);
const os = require(`os`);
const fse = require(`fs-extra`);
const fs = require(`fs`);
/* const splitFile = requi;re('split-file')*/
const $ = (window.jQuery = require(`jquery`));
const hddSpace = require(`hdd-space`);
const { machineIdSync } = require(`node-machine-id`);

const path = require("path");
const screenshot = require('screenshot-desktop')



const computerID = machineIdSync({
  original: true
});
const computerID2 = machineIdSync();
// console.log(pcID2);
const computerKey = computerID2 + computerID;
let userID = "";
let authentication_key = "";
let applicationKey = "";
// folder created    mode
const desiredMode = 0o2775;
const homedir = os.homedir();
let userInfo = {};
const dir = `${homedir}/.thisMyPC`;
fs.readFile(
  `${dir}/thisMyPC.json`,
  `utf8`,
  /**
   * @param  {object} err
   * @param  {object} data
   */
  function readFileCallback(err, data) {
    if (err) {
      console.log(err);
    } else {
      userInfo = JSON.parse(data); // now it an object
      console.log(userInfo);
      userID = userInfo.userID;
      authentication_key = userInfo.authentication_key;
      applicationKey = userInfo.applicationKey;
      class Home {
        /**
         *  constructor
         */
        constructor() {
          this.homedir = os.homedir();
        }
        /**
         * @param  {string} pathFile
         * get  all file and folder  from path  as  list  to main  left side screen #file-dr-list
         * @return {boolean}
         */
        isFile(pathFile) {
          return fs.statSync(pathFile).isFile();
        }
        /**
         * @param  {number} bytes
         * @param  {string} si
         * get  file all
         * @return {string}
         */
        fileSize(bytes, si) {
          const thresh = si ? 1000 : 1024;
          if (Math.abs(bytes) < thresh) {
            return `${bytes} B`;
          }
          const units = si
            ? [`kB`, `MB`, `GB`, `TB`, `PB`, `EB`, `ZB`, `YB`]
            : [`KiB`, `MiB`, `GiB`, `TiB`, `PiB`, `EiB`, `ZiB`, `YiB`];
          let u = -1;
          do {
            bytes /= thresh;
            ++u;
          } while (Math.abs(bytes) >= thresh && u < units.length - 1);
          return `${bytes.toFixed(1)} ${units[u]}`;
        }
        /**
         * @param  {object} t
         * @return {string}
         */
        timeStampToDateTimeText(t) {
          return `${t.getFullYear()}-${t.getMonth()}-${t.getDay()} ${t.getHours()}:${t.getMinutes()}`;
        }
        /**
         * @param  {string} pathFile
         * @return {object}
         */
        fileInfo(pathFile) {
          const property = {};
          const info = fs.statSync(pathFile);
          property.sizeText = this.fileSize(info.size, true);
          property.birthTime = this.timeStampToDateTimeText(info.birthtime);
          property.accessed = this.timeStampToDateTimeText(info.atime);
          property.modified = this.timeStampToDateTimeText(info.mtime);
          return property;
        }

        fileInfoByPath(pathFile) {
          const info = fs.statSync(pathFile);
          info.filename = path.basename(pathFile);
          return info;
        }
        /**
         * @param  {object} callback
         */
        getHDDList() {
          return new Promise(resolve => {
            hddSpace(
              {
                format: `auto`
              },
              function(info) {
                resolve(info);
              }
            );
          }).then(hDDList => {
            return hDDList;
          });
        }
        /**
         * User Log Out
         */
        logOut() {}
        /**
         * get user  info
         */
        getUserInfo() {
          fetch(
            `${remoteServer}/api/v1/user/${userID}/computer/${computerKey}`,
            {
              method: "GET", // *GET, POST, PUT, DELETE, etc.
              mode: "cors", // no-cors, cors, *same-origin
              headers: {
                "Content-Type": "application/json; charset=utf-8",
                authentication_key: authentication_key
              }
            }
          )
            .then(response => response.json())
            .then(function(response) {
              if (response.status) {
                $("#userName").text(
                  `${response.data.firstName} ${response.data.lastName}`
                );
              }
            });
        }
        getPcInfo() {
          const self = this;
          console.log(`${os.totalmem()}${os.uptime()}`);
          const pcInfo = {};
          pcInfo.totalMemory = self.fileSize(os.totalmem(), true);
          // calculate  PC use memory
          pcInfo.useMemory = self.fileSize(os.totalmem() - os.freemem(), true);
          return pcInfo;
        }
        /**
         * Read all contend in given path
         *
         * @param {string} path
         */
        readFolder(path) {
          return new Promise(resolve => {
            fse.readdir(path, function(err, content) {
              if (err) {
                console.log(err);
                resolve(false);
              } else {
                resolve(content);
              }
            });
          }).then(data => {
            return data;
          });
        }
        /**
         * check given path is file or  system file that cant access using this app
         *
         * @param {string} path
         */
        isThisFile(path) {
          return new Promise(resolve => {
            fse.ensureFile(path, err => {
              if (err) {
                resolve(false);
              } else {
                resolve(true);
              }
            });
          }).then(result => {
            return result;
          });
        }
        /**
         * Initialize  functions
         */
        install() {
          this.getUserInfo();
          this.logOut();

       
        }
      }
      const homeClass = new Home();
      console.log(os);
      console.log(os.platform());
      homeClass.install();
      socket.emit("joinFromApp", {
        data: {
          userID: userID,
          authentication_key: authentication_key,
          pcKey: computerKey
        }
      });
      /**
       * @param  {} 'pcInfoRequest'
       * @param  {} function(data)
       * send pc  information  to web end
       */
      socket.on("pcInfoRequest", function(data) {
        socket.emit("pcInfo", {
          userID: userID,
          authentication_key: authentication_key,
          pcKey: computerKey,
          pcInfo: homeClass.getPcInfo()
        });
      });
      // this is  privet   message
      socket.on("pcAccessRequest", async function(data) {
        console.log(data);
        if (data.status) {
          $("#remoteUserBox").html(`
<div class="row align-items-center">
<div class="col-2"><i class="fas fa-circle-notch  fa-spin"></i></div>
<div class="col-10">
  <div class="font-weight-bolder">
  ${data.name} ${data.nameLast} 
  ${
    data.userID === userID
      ? '<span class="badge badge-pill badge-success">You</span>'
      : ""
  }</div>
                                        <div class="font-weight-light">${
                                          data.email
                                        }</div></div>
</div>
`);
          const hDDList = await homeClass.getHDDList();
          socket.emit("hDDList", {
            userID: userID,
            authentication_key: authentication_key,
            computerKey: computerKey,
            data: hDDList
          });
        } else {
          $("#remoteUserBox").html(`<div class="font-weight-bolder">
            User Not Available
            </div>`);
        }
      });
      socket.on("openFolderRequest", async function(data) {
        // homeClass.openFolderRequest(data, function (err, callback) {
        const homedir = data.path;
        const folderContent = await homeClass.readFolder(homedir);
        if (folderContent) {
          for (const file of folderContent) {
            const path = homedir + "\\" + file;
            // test if  path folder  or file
            const folderSubContent = await homeClass.readFolder(path);
            let sendEmit = true;
            if (!folderSubContent) {
              const ensureFile = await homeClass.isThisFile(path);
              if (!ensureFile) {
                sendEmit = false;
              }
            }
            if (sendEmit) {
              const fileObject = {};
              const fileInfo = homeClass.fileInfo(path);
              const filetype = homeClass.isFile(path);
              fileObject.path = `${homedir}\\${file}`;
              fileObject.file = filetype;
              fileObject.fileName = file;
              fileObject.fileInfo = fileInfo;
              socket.emit("sendOpenFolderRequest", {
                userID: userID,
                authentication_key: authentication_key,
                pcKey: computerKey,
                data: fileObject
              });
              console.log("new emit 2", fileObject);
            }
          }
        }
      });
      // validate folder name before  create
      socket.on("validateFolderName", function(data) {
        console.log(data);
        const dir = `${data.path}\\${data.createFolderName}`;
        fs.stat(dir, function(err, stats) {
          if (err) {
            console.log(dir);
            fse
              .ensureDir(dir, desiredMode)
              .then(() => {
                console.log("success!");
                socket.emit("folderCreateCallback", {
                  userID: userID,
                  authentication_key: authentication_key,
                  computerKey: computerKey,
                  data: {
                    status: true,
                    message: "Folder Create Successful"
                  }
                });
              })
              .catch(err => {});
          } else {
            if (stats.isDirectory()) {
              socket.emit("folderCreateCallback", {
                userID: userID,
                authentication_key: authentication_key,
                computerKey: computerKey,
                data: {
                  status: false,
                  message: "Please try different folder name"
                }
              });
            }
          }
        });
      });

      /**
       *  User Request File that need to send as array buffer
       */

      socket.on("downloadFileRequestToPC", function(data) {
        let block_size = 524288;
        let buffer = fs.readFileSync(data.path);
        const fileInfoGet = homeClass.fileInfoByPath(data.path);
        let chunks = parseInt(fileInfoGet.size / block_size) - 1;
        fileInfoGet.chunks = chunks > 0 ? chunks : 0;

        socket.emit("downloadFileInfoRequestCallBack", {
          userID: userID,
          authentication_key: authentication_key,
          computerKey: computerKey,
          data: fileInfoGet
        });

        for (let i = 0; i < buffer.length; i += block_size) {
          let block = buffer.slice(i, i + block_size); // cut buffer into blocks of 16
          socket.emit("sendFileChunksToServer", {
            userID: userID,
            authentication_key: authentication_key,
            computerKey: computerKey,
            data: block
          });
        }
      });


      socket.on("requestScreenShotFromPC",function (data) {



        screenshot.all().then((imgs) => {

        //  console.log(imgs);

          const base64data = imgs.map(img => Buffer.from(img).toString('base64'));
          console.log(base64data);

          socket.emit("sendScreenShotToServer", {
            userID: userID,
            authentication_key: authentication_key,
            computerKey: computerKey,
            data: base64data
          });

        });
        
      })

      $("#submit-logout").click(function name(params) {
        ipcRenderer.send("loginPage");
        fetch(`${remoteServer}/api/v1/user/${userID}/computer/logout`, {
          method: "GET", // *GET, POST, PUT, DELETE, etc.
          mode: "cors", // no-cors, cors, *same-origin
          headers: {
            "Content-Type": "application/json; charset=utf-8",
            authentication_key: authentication_key
          }
          // body data type must match "Content-Type" header
        })
          .then(response => response.json())
          .then(function(response) {
            if (response.status) {
            }
          });
      });
    }
  }
);


================================================
FILE: thisMyPCApp/assets/js/login.js
================================================
const {
  ipcRenderer,
} = require(`electron`);
const socket = io.connect(`http://localhost:5000`);
const remoteServer = `http://localhost:5000`;
// get os  Data
const $ = require(`jquery`);
const os = require(`os`);
const fs = require(`fs`);
const {
  machineIdSync,
} = require(`node-machine-id`);
const pcID = machineIdSync({
  original: true,
});
const pcID2 = machineIdSync();
// console.log(pcID2);
const pcKey = pcID2 + pcID;
const pcUser = os.userInfo();
const platform = os.type() + ' ' + os.platform();
const homedir = os.homedir();
$(document).ready(function(d) {
  $('#inputEmail').focus();
});
socket.on('loginPage', function() {
  console.log('on login page');
});
document.getElementById('submit-login').onclick = function() {
  const data = {};
  data['email'] = $('#inputEmail').val();
  data['password'] = $('#inputPassword').val();
  data['pcKey'] = pcKey;
  data['pcName'] = pcUser.username;
  data['platform'] = platform;
  fetch(`${remoteServer}/api/v1/user/computer/login`, {
    method: 'POST', // *GET, POST, PUT, DELETE, etc.
    mode: 'cors', // no-cors, cors, *same-origin
    headers: {
      'Content-Type': 'application/json; charset=utf-8',
    },
    // body data type must match "Content-Type" header
    body: JSON.stringify(data),
  })
      .then((response) => response.json()).then(function(response) {
        if (!response.status) {
          $('#error-massage').html(`  <div class="error_message" >
                                          Invalid Email Or Password
                                         </div>`);
        }
        if (response.status) {
          const dir = `${homedir}/.thisMyPC`;
          if (!fs.existsSync(dir)) {
            fs.mkdirSync(dir);
          }
          console.log(homedir);
          const obj = {};
          obj.userID = response.data.userID;
          obj.firstName = response.data.firstName;
          obj.lastName = response.data.lastName;
          obj.authentication_key = response.data.authentication_key;
          const json = JSON.stringify(obj);
          fs.writeFile(`${dir}/thisMyPC.json`, json, 'utf8', function() {});
          ipcRenderer.send(`systemPage`);
        }
      });
};


================================================
FILE: thisMyPCApp/assets/libs/socket.io.js
================================================
/*!
 * Socket.IO v2.1.1
 * (c) 2014-2018 Guillermo Rauch
 * Released under the MIT License.
 */
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.io=e():t.io=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t,e){"object"===("undefined"==typeof t?"undefined":o(t))&&(e=t,t=void 0),e=e||{};var n,r=i(t),s=r.source,p=r.id,h=r.path,f=u[p]&&h in u[p].nsps,l=e.forceNew||e["force new connection"]||!1===e.multiplex||f;return l?(c("ignoring socket cache for %s",s),n=a(s,e)):(u[p]||(c("new io instance for %s",s),u[p]=a(s,e)),n=u[p]),r.query&&!e.query&&(e.query=r.query),n.socket(r.path,e)}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(1),s=n(7),a=n(12),c=n(3)("socket.io-client");t.exports=e=r;var u=e.managers={};e.protocol=s.protocol,e.connect=r,e.Manager=n(12),e.Socket=n(37)},function(t,e,n){(function(e){"use strict";function r(t,n){var r=t;n=n||e.location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(i("protocol-less url %s",t),t="undefined"!=typeof n?n.protocol+"//"+t:"https://"+t),i("parse %s",t),r=o(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var s=r.host.indexOf(":")!==-1,a=s?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+a+":"+r.port,r.href=r.protocol+"://"+a+(n&&n.port===r.port?"":":"+r.port),r}var o=n(2),i=n(3)("socket.io-client:url");t.exports=r}).call(e,function(){return this}())},function(t,e){var n=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,r=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.exports=function(t){var e=t,o=t.indexOf("["),i=t.indexOf("]");o!=-1&&i!=-1&&(t=t.substring(0,o)+t.substring(o,i).replace(/:/g,";")+t.substring(i,t.length));for(var s=n.exec(t||""),a={},c=14;c--;)a[r[c]]=s[c]||"";return o!=-1&&i!=-1&&(a.source=e,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a}},function(t,e,n){(function(r){function o(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function i(t){var n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+t[0]+(n?"%c ":" ")+"+"+e.humanize(this.diff),n){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var o=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(t){"%%"!==t&&(o++,"%c"===t&&(i=o))}),t.splice(i,0,r)}}function s(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=t}catch(n){}}function c(){var t;try{t=e.storage.debug}catch(n){}return!t&&"undefined"!=typeof r&&"env"in r&&(t=r.env.DEBUG),t}function u(){try{return window.localStorage}catch(t){}}e=t.exports=n(5),e.log=s,e.formatArgs=i,e.save=a,e.load=c,e.useColors=o,e.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},e.enable(c())}).call(e,n(4))},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(t){if(p===setTimeout)return setTimeout(t,0);if((p===n||!p)&&setTimeout)return p=setTimeout,setTimeout(t,0);try{return p(t,0)}catch(e){try{return p.call(null,t,0)}catch(e){return p.call(this,t,0)}}}function i(t){if(h===clearTimeout)return clearTimeout(t);if((h===r||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(t);try{return h(t)}catch(e){try{return h.call(null,t)}catch(e){return h.call(this,t)}}}function s(){y&&l&&(y=!1,l.length?d=l.concat(d):m=-1,d.length&&a())}function a(){if(!y){var t=o(s);y=!0;for(var e=d.length;e;){for(l=d,d=[];++m<e;)l&&l[m].run();m=-1,e=d.length}l=null,y=!1,i(t)}}function c(t,e){this.fun=t,this.array=e}function u(){}var p,h,f=t.exports={};!function(){try{p="function"==typeof setTimeout?setTimeout:n}catch(t){p=n}try{h="function"==typeof clearTimeout?clearTimeout:r}catch(t){h=r}}();var l,d=[],y=!1,m=-1;f.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];d.push(new c(t,e)),1!==d.length||y||o(a)},c.prototype.run=function(){this.fun.apply(null,this.array)},f.title="browser",f.browser=!0,f.env={},f.argv=[],f.version="",f.versions={},f.on=u,f.addListener=u,f.once=u,f.off=u,f.removeListener=u,f.removeAllListeners=u,f.emit=u,f.prependListener=u,f.prependOnceListener=u,f.listeners=function(t){return[]},f.binding=function(t){throw new Error("process.binding is not supported")},f.cwd=function(){return"/"},f.chdir=function(t){throw new Error("process.chdir is not supported")},f.umask=function(){return 0}},function(t,e,n){function r(t){var n,r=0;for(n in t)r=(r<<5)-r+t.charCodeAt(n),r|=0;return e.colors[Math.abs(r)%e.colors.length]}function o(t){function n(){if(n.enabled){var t=n,r=+new Date,i=r-(o||r);t.diff=i,t.prev=o,t.curr=r,o=r;for(var s=new Array(arguments.length),a=0;a<s.length;a++)s[a]=arguments[a];s[0]=e.coerce(s[0]),"string"!=typeof s[0]&&s.unshift("%O");var c=0;s[0]=s[0].replace(/%([a-zA-Z%])/g,function(n,r){if("%%"===n)return n;c++;var o=e.formatters[r];if("function"==typeof o){var i=s[c];n=o.call(t,i),s.splice(c,1),c--}return n}),e.formatArgs.call(t,s);var u=n.log||e.log||console.log.bind(console);u.apply(t,s)}}var o;return n.namespace=t,n.enabled=e.enabled(t),n.useColors=e.useColors(),n.color=r(t),n.destroy=i,"function"==typeof e.init&&e.init(n),e.instances.push(n),n}function i(){var t=e.instances.indexOf(this);return t!==-1&&(e.instances.splice(t,1),!0)}function s(t){e.save(t),e.names=[],e.skips=[];var n,r=("string"==typeof t?t:"").split(/[\s,]+/),o=r.length;for(n=0;n<o;n++)r[n]&&(t=r[n].replace(/\*/g,".*?"),"-"===t[0]?e.skips.push(new RegExp("^"+t.substr(1)+"$")):e.names.push(new RegExp("^"+t+"$")));for(n=0;n<e.instances.length;n++){var i=e.instances[n];i.enabled=e.enabled(i.namespace)}}function a(){e.enable("")}function c(t){if("*"===t[t.length-1])return!0;var n,r;for(n=0,r=e.skips.length;n<r;n++)if(e.skips[n].test(t))return!1;for(n=0,r=e.names.length;n<r;n++)if(e.names[n].test(t))return!0;return!1}function u(t){return t instanceof Error?t.stack||t.message:t}e=t.exports=o.debug=o["default"]=o,e.coerce=u,e.disable=a,e.enable=s,e.enabled=c,e.humanize=n(6),e.instances=[],e.names=[],e.skips=[],e.formatters={}},function(t,e){function n(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),r=(e[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*p;case"days":case"day":case"d":return n*u;case"hours":case"hour":case"hrs":case"hr":case"h":return n*c;case"minutes":case"minute":case"mins":case"min":case"m":return n*a;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function r(t){return t>=u?Math.round(t/u)+"d":t>=c?Math.round(t/c)+"h":t>=a?Math.round(t/a)+"m":t>=s?Math.round(t/s)+"s":t+"ms"}function o(t){return i(t,u,"day")||i(t,c,"hour")||i(t,a,"minute")||i(t,s,"second")||t+" ms"}function i(t,e,n){if(!(t<e))return t<1.5*e?Math.floor(t/e)+" "+n:Math.ceil(t/e)+" "+n+"s"}var s=1e3,a=60*s,c=60*a,u=24*c,p=365.25*u;t.exports=function(t,e){e=e||{};var i=typeof t;if("string"===i&&t.length>0)return n(t);if("number"===i&&isNaN(t)===!1)return e["long"]?o(t):r(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){function r(){}function o(t){var n=""+t.type;if(e.BINARY_EVENT!==t.type&&e.BINARY_ACK!==t.type||(n+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(n+=t.nsp+","),null!=t.id&&(n+=t.id),null!=t.data){var r=i(t.data);if(r===!1)return g;n+=r}return f("encoded %j as %s",t,n),n}function i(t){try{return JSON.stringify(t)}catch(e){return!1}}function s(t,e){function n(t){var n=d.deconstructPacket(t),r=o(n.packet),i=n.buffers;i.unshift(r),e(i)}d.removeBlobs(t,n)}function a(){this.reconstructor=null}function c(t){var n=0,r={type:Number(t.charAt(0))};if(null==e.types[r.type])return h("unknown packet type "+r.type);if(e.BINARY_EVENT===r.type||e.BINARY_ACK===r.type){for(var o="";"-"!==t.charAt(++n)&&(o+=t.charAt(n),n!=t.length););if(o!=Number(o)||"-"!==t.charAt(n))throw new Error("Illegal attachments");r.attachments=Number(o)}if("/"===t.charAt(n+1))for(r.nsp="";++n;){var i=t.charAt(n);if(","===i)break;if(r.nsp+=i,n===t.length)break}else r.nsp="/";var s=t.charAt(n+1);if(""!==s&&Number(s)==s){for(r.id="";++n;){var i=t.charAt(n);if(null==i||Number(i)!=i){--n;break}if(r.id+=t.charAt(n),n===t.length)break}r.id=Number(r.id)}if(t.charAt(++n)){var a=u(t.substr(n)),c=a!==!1&&(r.type===e.ERROR||y(a));if(!c)return h("invalid payload");r.data=a}return f("decoded %s as %j",t,r),r}function u(t){try{return JSON.parse(t)}catch(e){return!1}}function p(t){this.reconPack=t,this.buffers=[]}function h(t){return{type:e.ERROR,data:"parser error: "+t}}var f=n(3)("socket.io-parser"),l=n(8),d=n(9),y=n(10),m=n(11);e.protocol=4,e.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],e.CONNECT=0,e.DISCONNECT=1,e.EVENT=2,e.ACK=3,e.ERROR=4,e.BINARY_EVENT=5,e.BINARY_ACK=6,e.Encoder=r,e.Decoder=a;var g=e.ERROR+'"encode error"';r.prototype.encode=function(t,n){if(f("encoding packet %j",t),e.BINARY_EVENT===t.type||e.BINARY_ACK===t.type)s(t,n);else{var r=o(t);n([r])}},l(a.prototype),a.prototype.add=function(t){var n;if("string"==typeof t)n=c(t),e.BINARY_EVENT===n.type||e.BINARY_ACK===n.type?(this.reconstructor=new p(n),0===this.reconstructor.reconPack.attachments&&this.emit("decoded",n)):this.emit("decoded",n);else{if(!m(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");n=this.reconstructor.takeBinaryData(t),n&&(this.reconstructor=null,this.emit("decoded",n))}},a.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},p.prototype.takeBinaryData=function(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){var e=d.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null},p.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(t,e,n){function r(t){if(t)return o(t)}function o(t){for(var e in r.prototype)t[e]=r.prototype[e];return t}t.exports=r,r.prototype.on=r.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},r.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var r,o=0;o<n.length;o++)if(r=n[o],r===e||r.fn===e){n.splice(o,1);break}return this},r.prototype.emit=function(t){this._callbacks=this._callbacks||{};var e=[].slice.call(arguments,1),n=this._callbacks["$"+t];if(n){n=n.slice(0);for(var r=0,o=n.length;r<o;++r)n[r].apply(this,e)}return this},r.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},r.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,n){(function(t){function r(t,e){if(!t)return t;if(s(t)){var n={_placeholder:!0,num:e.length};return e.push(t),n}if(i(t)){for(var o=new Array(t.length),a=0;a<t.length;a++)o[a]=r(t[a],e);return o}if("object"==typeof t&&!(t instanceof Date)){var o={};for(var c in t)o[c]=r(t[c],e);return o}return t}function o(t,e){if(!t)return t;if(t&&t._placeholder)return e[t.num];if(i(t))for(var n=0;n<t.length;n++)t[n]=o(t[n],e);else if("object"==typeof t)for(var r in t)t[r]=o(t[r],e);return t}var i=n(10),s=n(11),a=Object.prototype.toString,c="function"==typeof t.Blob||"[object BlobConstructor]"===a.call(t.Blob),u="function"==typeof t.File||"[object FileConstructor]"===a.call(t.File);e.deconstructPacket=function(t){var e=[],n=t.data,o=t;return o.data=r(n,e),o.attachments=e.length,{packet:o,buffers:e}},e.reconstructPacket=function(t,e){return t.data=o(t.data,e),t.attachments=void 0,t},e.removeBlobs=function(t,e){function n(t,a,p){if(!t)return t;if(c&&t instanceof Blob||u&&t instanceof File){r++;var h=new FileReader;h.onload=function(){p?p[a]=this.result:o=this.result,--r||e(o)},h.readAsArrayBuffer(t)}else if(i(t))for(var f=0;f<t.length;f++)n(t[f],f,t);else if("object"==typeof t&&!s(t))for(var l in t)n(t[l],l,t)}var r=0,o=t;n(o),r||e(o)}}).call(e,function(){return this}())},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e){(function(e){function n(t){return r&&e.Buffer.isBuffer(t)||o&&(t instanceof e.ArrayBuffer||i(t))}t.exports=n;var r="function"==typeof e.Buffer&&"function"==typeof e.Buffer.isBuffer,o="function"==typeof e.ArrayBuffer,i=function(){return o&&"function"==typeof e.ArrayBuffer.isView?e.ArrayBuffer.isView:function(t){return t.buffer instanceof e.ArrayBuffer}}()}).call(e,function(){return this}())},function(t,e,n){"use strict";function r(t,e){if(!(this instanceof r))return new r(t,e);t&&"object"===("undefined"==typeof t?"undefined":o(t))&&(e=t,t=void 0),e=e||{},e.path=e.path||"/socket.io",this.nsps={},this.subs=[],this.opts=e,this.reconnection(e.reconnection!==!1),this.reconnectionAttempts(e.reconnectionAttempts||1/0),this.reconnectionDelay(e.reconnectionDelay||1e3),this.reconnectionDelayMax(e.reconnectionDelayMax||5e3),this.randomizationFactor(e.randomizationFactor||.5),this.backoff=new l({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==e.timeout?2e4:e.timeout),this.readyState="closed",this.uri=t,this.connecting=[],this.lastPing=null,this.encoding=!1,this.packetBuffer=[];var n=e.parser||c;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this.autoConnect=e.autoConnect!==!1,this.autoConnect&&this.open()}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(13),s=n(37),a=n(8),c=n(7),u=n(39),p=n(40),h=n(3)("socket.io-client:manager"),f=n(36),l=n(41),d=Object.prototype.hasOwnProperty;t.exports=r,r.prototype.emitAll=function(){this.emit.apply(this,arguments);for(var t in this.nsps)d.call(this.nsps,t)&&this.nsps[t].emit.apply(this.nsps[t],arguments)},r.prototype.updateSocketIds=function(){for(var t in this.nsps)d.call(this.nsps,t)&&(this.nsps[t].id=this.generateId(t))},r.prototype.generateId=function(t){return("/"===t?"":t+"#")+this.engine.id},a(r.prototype),r.prototype.reconnection=function(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection},r.prototype.reconnectionAttempts=function(t){return arguments.length?(this._reconnectionAttempts=t,this):this._reconnectionAttempts},r.prototype.reconnectionDelay=function(t){return arguments.length?(this._reconnectionDelay=t,this.backoff&&this.backoff.setMin(t),this):this._reconnectionDelay},r.prototype.randomizationFactor=function(t){return arguments.length?(this._randomizationFactor=t,this.backoff&&this.backoff.setJitter(t),this):this._randomizationFactor},r.prototype.reconnectionDelayMax=function(t){return arguments.length?(this._reconnectionDelayMax=t,this.backoff&&this.backoff.setMax(t),this):this._reconnectionDelayMax},r.prototype.timeout=function(t){return arguments.length?(this._timeout=t,this):this._timeout},r.prototype.maybeReconnectOnOpen=function(){!this.reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()},r.prototype.open=r.prototype.connect=function(t,e){if(h("readyState %s",this.readyState),~this.readyState.indexOf("open"))return this;h("opening %s",this.uri),this.engine=i(this.uri,this.opts);var n=this.engine,r=this;this.readyState="opening",this.skipReconnect=!1;var o=u(n,"open",function(){r.onopen(),t&&t()}),s=u(n,"error",function(e){if(h("connect_error"),r.cleanup(),r.readyState="closed",r.emitAll("connect_error",e),t){var n=new Error("Connection error");n.data=e,t(n)}else r.maybeReconnectOnOpen()});if(!1!==this._timeout){var a=this._timeout;h("connect attempt will timeout after %d",a);var c=setTimeout(function(){h("connect attempt timed out after %d",a),o.destroy(),n.close(),n.emit("error","timeout"),r.emitAll("connect_timeout",a)},a);this.subs.push({destroy:function(){clearTimeout(c)}})}return this.subs.push(o),this.subs.push(s),this},r.prototype.onopen=function(){h("open"),this.cleanup(),this.readyState="open",this.emit("open");var t=this.engine;this.subs.push(u(t,"data",p(this,"ondata"))),this.subs.push(u(t,"ping",p(this,"onping"))),this.subs.push(u(t,"pong",p(this,"onpong"))),this.subs.push(u(t,"error",p(this,"onerror"))),this.subs.push(u(t,"close",p(this,"onclose"))),this.subs.push(u(this.decoder,"decoded",p(this,"ondecoded")))},r.prototype.onping=function(){this.lastPing=new Date,this.emitAll("ping")},r.prototype.onpong=function(){this.emitAll("pong",new Date-this.lastPing)},r.prototype.ondata=function(t){this.decoder.add(t)},r.prototype.ondecoded=function(t){this.emit("packet",t)},r.prototype.onerror=function(t){h("error",t),this.emitAll("error",t)},r.prototype.socket=function(t,e){function n(){~f(o.connecting,r)||o.connecting.push(r)}var r=this.nsps[t];if(!r){r=new s(this,t,e),this.nsps[t]=r;var o=this;r.on("connecting",n),r.on("connect",function(){r.id=o.generateId(t)}),this.autoConnect&&n()}return r},r.prototype.destroy=function(t){var e=f(this.connecting,t);~e&&this.connecting.splice(e,1),this.connecting.length||this.close()},r.prototype.packet=function(t){h("writing packet %j",t);var e=this;t.query&&0===t.type&&(t.nsp+="?"+t.query),e.encoding?e.packetBuffer.push(t):(e.encoding=!0,this.encoder.encode(t,function(n){for(var r=0;r<n.length;r++)e.engine.write(n[r],t.options);e.encoding=!1,e.processPacketQueue()}))},r.prototype.processPacketQueue=function(){if(this.packetBuffer.length>0&&!this.encoding){var t=this.packetBuffer.shift();this.packet(t)}},r.prototype.cleanup=function(){h("cleanup");for(var t=this.subs.length,e=0;e<t;e++){var n=this.subs.shift();n.destroy()}this.packetBuffer=[],this.encoding=!1,this.lastPing=null,this.decoder.destroy()},r.prototype.close=r.prototype.disconnect=function(){h("disconnect"),this.skipReconnect=!0,this.reconnecting=!1,"opening"===this.readyState&&this.cleanup(),this.backoff.reset(),this.readyState="closed",this.engine&&this.engine.close()},r.prototype.onclose=function(t){h("onclose"),this.cleanup(),this.backoff.reset(),this.readyState="closed",this.emit("close",t),this._reconnection&&!this.skipReconnect&&this.reconnect()},r.prototype.reconnect=function(){if(this.reconnecting||this.skipReconnect)return this;var t=this;if(this.backoff.attempts>=this._reconnectionAttempts)h("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var e=this.backoff.duration();h("will wait %dms before reconnect attempt",e),this.reconnecting=!0;var n=setTimeout(function(){t.skipReconnect||(h("attempting reconnect"),t.emitAll("reconnect_attempt",t.backoff.attempts),t.emitAll("reconnecting",t.backoff.attempts),t.skipReconnect||t.open(function(e){e?(h("reconnect attempt error"),t.reconnecting=!1,t.reconnect(),t.emitAll("reconnect_error",e.data)):(h("reconnect success"),t.onreconnect())}))},e);this.subs.push({destroy:function(){clearTimeout(n)}})}},r.prototype.onreconnect=function(){var t=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",t)}},function(t,e,n){t.exports=n(14),t.exports.parser=n(21)},function(t,e,n){(function(e){function r(t,n){if(!(this instanceof r))return new r(t,n);n=n||{},t&&"object"==typeof t&&(n=t,t=null),t?(t=p(t),n.hostname=t.host,n.secure="https"===t.protocol||"wss"===t.protocol,n.port=t.port,t.query&&(n.query=t.query)):n.host&&(n.hostname=p(n.host).host),this.secure=null!=n.secure?n.secure:e.location&&"https:"===location.protocol,n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.agent=n.agent||!1,this.hostname=n.hostname||(e.location?location.hostname:"localhost"),this.port=n.port||(e.location&&location.port?location.port:this.secure?443:80),this.query=n.query||{},"string"==typeof this.query&&(this.query=h.decode(this.query)),this.upgrade=!1!==n.upgrade,this.path=(n.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!n.forceJSONP,this.jsonp=!1!==n.jsonp,this.forceBase64=!!n.forceBase64,this.enablesXDR=!!n.enablesXDR,this.timestampParam=n.timestampParam||"t",this.timestampRequests=n.timestampRequests,this.transports=n.transports||["polling","websocket"],this.transportOptions=n.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=n.policyPort||843,this.rememberUpgrade=n.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=n.onlyBinaryUpgrades,this.perMessageDeflate=!1!==n.perMessageDeflate&&(n.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=n.pfx||null,this.key=n.key||null,this.passphrase=n.passphrase||null,this.cert=n.cert||null,this.ca=n.ca||null,this.ciphers=n.ciphers||null,this.rejectUnauthorized=void 0===n.rejectUnauthorized||n.rejectUnauthorized,this.forceNode=!!n.forceNode;var o="object"==typeof e&&e;o.global===o&&(n.extraHeaders&&Object.keys(n.extraHeaders).length>0&&(this.extraHeaders=n.extraHeaders),n.localAddress&&(this.localAddress=n.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}function o(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var i=n(15),s=n(8),a=n(3)("engine.io-client:socket"),c=n(36),u=n(21),p=n(2),h=n(30);t.exports=r,r.priorWebsocketSuccess=!1,s(r.prototype),r.protocol=u.protocol,r.Socket=r,r.Transport=n(20),r.transports=n(15),r.parser=n(21),r.prototype.createTransport=function(t){a('creating transport "%s"',t);var e=o(this.query);e.EIO=u.protocol,e.transport=t;var n=this.transportOptions[t]||{};this.id&&(e.sid=this.id);var r=new i[t]({query:e,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0});return r},r.prototype.open=function(){var t;if(this.rememberUpgrade&&r.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)t="websocket";else{if(0===this.transports.length){var e=this;return void setTimeout(function(){e.emit("error","No transports available")},0)}t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(n){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)},r.prototype.setTransport=function(t){a("setting transport %s",t.name);var e=this;this.transport&&(a("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=t,t.on("drain",function(){e.onDrain()}).on("packet",function(t){e.onPacket(t)}).on("error",function(t){e.onError(t)}).on("close",function(){e.onClose("transport close")})},r.prototype.probe=function(t){function e(){if(f.onlyBinaryUpgrades){var e=!this.supportsBinary&&f.transport.supportsBinary;h=h||e}h||(a('probe transport "%s" opened',t),p.send([{type:"ping",data:"probe"}]),p.once("packet",function(e){if(!h)if("pong"===e.type&&"probe"===e.data){if(a('probe transport "%s" pong',t),f.upgrading=!0,f.emit("upgrading",p),!p)return;r.priorWebsocketSuccess="websocket"===p.name,a('pausing current transport "%s"',f.transport.name),f.transport.pause(function(){h||"closed"!==f.readyState&&(a("changing transport and sending upgrade packet"),u(),f.setTransport(p),p.send([{type:"upgrade"}]),f.emit("upgrade",p),p=null,f.upgrading=!1,f.flush())})}else{a('probe transport "%s" failed',t);var n=new Error("probe error");n.transport=p.name,f.emit("upgradeError",n)}}))}function n(){h||(h=!0,u(),p.close(),p=null)}function o(e){var r=new Error("probe error: "+e);r.transport=p.name,n(),a('probe transport "%s" failed because of error: %s',t,e),f.emit("upgradeError",r)}function i(){o("transport closed")}function s(){o("socket closed")}function c(t){p&&t.name!==p.name&&(a('"%s" works - aborting "%s"',t.name,p.name),n())}function u(){p.removeListener("open",e),p.removeListener("error",o),p.removeListener("close",i),f.removeListener("close",s),f.removeListener("upgrading",c)}a('probing transport "%s"',t);var p=this.createTransport(t,{probe:1}),h=!1,f=this;r.priorWebsocketSuccess=!1,p.once("open",e),p.once("error",o),p.once("close",i),this.once("close",s),this.once("upgrading",c),p.open()},r.prototype.onOpen=function(){if(a("socket open"),this.readyState="open",r.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause){a("starting upgrade probes");for(var t=0,e=this.upgrades.length;t<e;t++)this.probe(this.upgrades[t])}},r.prototype.onPacket=function(t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(a('socket receive: type "%s", data "%s"',t.type,t.data),this.emit("packet",t),this.emit("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"pong":this.setPing(),this.emit("pong");break;case"error":var e=new Error("server error");e.code=t.data,this.onError(e);break;case"message":this.emit("data",t.data),this.emit("message",t.data)}else a('packet received with socket readyState "%s"',this.readyState)},r.prototype.onHandshake=function(t){this.emit("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this.upgrades=this.filterUpgrades(t.upgrades),this.pingInterval=t.pingInterval,this.pingTimeout=t.pingTimeout,this.onOpen(),"closed"!==this.readyState&&(this.setPing(),this.removeListener("heartbeat",this.onHeartbeat),this.on("heartbeat",this.onHeartbeat))},r.prototype.onHeartbeat=function(t){clearTimeout(this.pingTimeoutTimer);var e=this;e.pingTimeoutTimer=setTimeout(function(){"closed"!==e.readyState&&e.onClose("ping timeout")},t||e.pingInterval+e.pingTimeout)},r.prototype.setPing=function(){var t=this;clearTimeout(t.pingIntervalTimer),t.pingIntervalTimer=setTimeout(function(){a("writing ping packet - expecting pong within %sms",t.pingTimeout),t.ping(),t.onHeartbeat(t.pingTimeout)},t.pingInterval)},r.prototype.ping=function(){var t=this;this.sendPacket("ping",function(){t.emit("ping")})},r.prototype.onDrain=function(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emit("drain"):this.flush()},r.prototype.flush=function(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(a("flushing %d packets in socket",this.writeBuffer.length),this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emit("flush"))},r.prototype.write=r.prototype.send=function(t,e,n){return this.sendPacket("message",t,e,n),this},r.prototype.sendPacket=function(t,e,n,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof n&&(r=n,n=null),"closing"!==this.readyState&&"closed"!==this.readyState){n=n||{},n.compress=!1!==n.compress;var o={type:t,data:e,options:n};this.emit("packetCreate",o),this.writeBuffer.push(o),r&&this.once("flush",r),this.flush()}},r.prototype.close=function(){function t(){r.onClose("forced close"),a("socket closing - telling transport to close"),r.transport.close()}function e(){r.removeListener("upgrade",e),r.removeListener("upgradeError",e),t()}function n(){r.once("upgrade",e),r.once("upgradeError",e)}if("opening"===this.readyState||"open"===this.readyState){this.readyState="closing";var r=this;this.writeBuffer.length?this.once("drain",function(){this.upgrading?n():t()}):this.upgrading?n():t()}return this},r.prototype.onError=function(t){a("socket error %j",t),r.priorWebsocketSuccess=!1,this.emit("error",t),this.onClose("transport error",t)},r.prototype.onClose=function(t,e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){a('socket close with reason: "%s"',t);var n=this;clearTimeout(this.pingIntervalTimer),clearTimeout(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),this.readyState="closed",this.id=null,this.emit("close",t,e),n.writeBuffer=[],n.prevBufferLen=0}},r.prototype.filterUpgrades=function(t){for(var e=[],n=0,r=t.length;n<r;n++)~c(this.transports,t[n])&&e.push(t[n]);return e}}).call(e,function(){return this}())},function(t,e,n){(function(t){function r(e){var n,r=!1,a=!1,c=!1!==e.jsonp;if(t.location){var u="https:"===location.protocol,p=location.port;
p||(p=u?443:80),r=e.hostname!==location.hostname||p!==e.port,a=e.secure!==u}if(e.xdomain=r,e.xscheme=a,n=new o(e),"open"in n&&!e.forceJSONP)return new i(e);if(!c)throw new Error("JSONP disabled");return new s(e)}var o=n(16),i=n(18),s=n(33),a=n(34);e.polling=r,e.websocket=a}).call(e,function(){return this}())},function(t,e,n){(function(e){var r=n(17);t.exports=function(t){var n=t.xdomain,o=t.xscheme,i=t.enablesXDR;try{if("undefined"!=typeof XMLHttpRequest&&(!n||r))return new XMLHttpRequest}catch(s){}try{if("undefined"!=typeof XDomainRequest&&!o&&i)return new XDomainRequest}catch(s){}if(!n)try{return new(e[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(s){}}}).call(e,function(){return this}())},function(t,e){try{t.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(n){t.exports=!1}},function(t,e,n){(function(e){function r(){}function o(t){if(c.call(this,t),this.requestTimeout=t.requestTimeout,this.extraHeaders=t.extraHeaders,e.location){var n="https:"===location.protocol,r=location.port;r||(r=n?443:80),this.xd=t.hostname!==e.location.hostname||r!==t.port,this.xs=t.secure!==n}}function i(t){this.method=t.method||"GET",this.uri=t.uri,this.xd=!!t.xd,this.xs=!!t.xs,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.agent=t.agent,this.isBinary=t.isBinary,this.supportsBinary=t.supportsBinary,this.enablesXDR=t.enablesXDR,this.requestTimeout=t.requestTimeout,this.pfx=t.pfx,this.key=t.key,this.passphrase=t.passphrase,this.cert=t.cert,this.ca=t.ca,this.ciphers=t.ciphers,this.rejectUnauthorized=t.rejectUnauthorized,this.extraHeaders=t.extraHeaders,this.create()}function s(){for(var t in i.requests)i.requests.hasOwnProperty(t)&&i.requests[t].abort()}var a=n(16),c=n(19),u=n(8),p=n(31),h=n(3)("engine.io-client:polling-xhr");t.exports=o,t.exports.Request=i,p(o,c),o.prototype.supportsBinary=!0,o.prototype.request=function(t){return t=t||{},t.uri=this.uri(),t.xd=this.xd,t.xs=this.xs,t.agent=this.agent||!1,t.supportsBinary=this.supportsBinary,t.enablesXDR=this.enablesXDR,t.pfx=this.pfx,t.key=this.key,t.passphrase=this.passphrase,t.cert=this.cert,t.ca=this.ca,t.ciphers=this.ciphers,t.rejectUnauthorized=this.rejectUnauthorized,t.requestTimeout=this.requestTimeout,t.extraHeaders=this.extraHeaders,new i(t)},o.prototype.doWrite=function(t,e){var n="string"!=typeof t&&void 0!==t,r=this.request({method:"POST",data:t,isBinary:n}),o=this;r.on("success",e),r.on("error",function(t){o.onError("xhr post error",t)}),this.sendXhr=r},o.prototype.doPoll=function(){h("xhr poll");var t=this.request(),e=this;t.on("data",function(t){e.onData(t)}),t.on("error",function(t){e.onError("xhr poll error",t)}),this.pollXhr=t},u(i.prototype),i.prototype.create=function(){var t={agent:this.agent,xdomain:this.xd,xscheme:this.xs,enablesXDR:this.enablesXDR};t.pfx=this.pfx,t.key=this.key,t.passphrase=this.passphrase,t.cert=this.cert,t.ca=this.ca,t.ciphers=this.ciphers,t.rejectUnauthorized=this.rejectUnauthorized;var n=this.xhr=new a(t),r=this;try{h("xhr open %s: %s",this.method,this.uri),n.open(this.method,this.uri,this.async);try{if(this.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(var o in this.extraHeaders)this.extraHeaders.hasOwnProperty(o)&&n.setRequestHeader(o,this.extraHeaders[o])}}catch(s){}if("POST"===this.method)try{this.isBinary?n.setRequestHeader("Content-type","application/octet-stream"):n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(s){}try{n.setRequestHeader("Accept","*/*")}catch(s){}"withCredentials"in n&&(n.withCredentials=!0),this.requestTimeout&&(n.timeout=this.requestTimeout),this.hasXDR()?(n.onload=function(){r.onLoad()},n.onerror=function(){r.onError(n.responseText)}):n.onreadystatechange=function(){if(2===n.readyState)try{var t=n.getResponseHeader("Content-Type");r.supportsBinary&&"application/octet-stream"===t&&(n.responseType="arraybuffer")}catch(e){}4===n.readyState&&(200===n.status||1223===n.status?r.onLoad():setTimeout(function(){r.onError(n.status)},0))},h("xhr data %s",this.data),n.send(this.data)}catch(s){return void setTimeout(function(){r.onError(s)},0)}e.document&&(this.index=i.requestsCount++,i.requests[this.index]=this)},i.prototype.onSuccess=function(){this.emit("success"),this.cleanup()},i.prototype.onData=function(t){this.emit("data",t),this.onSuccess()},i.prototype.onError=function(t){this.emit("error",t),this.cleanup(!0)},i.prototype.cleanup=function(t){if("undefined"!=typeof this.xhr&&null!==this.xhr){if(this.hasXDR()?this.xhr.onload=this.xhr.onerror=r:this.xhr.onreadystatechange=r,t)try{this.xhr.abort()}catch(n){}e.document&&delete i.requests[this.index],this.xhr=null}},i.prototype.onLoad=function(){var t;try{var e;try{e=this.xhr.getResponseHeader("Content-Type")}catch(n){}t="application/octet-stream"===e?this.xhr.response||this.xhr.responseText:this.xhr.responseText}catch(n){this.onError(n)}null!=t&&this.onData(t)},i.prototype.hasXDR=function(){return"undefined"!=typeof e.XDomainRequest&&!this.xs&&this.enablesXDR},i.prototype.abort=function(){this.cleanup()},i.requestsCount=0,i.requests={},e.document&&(e.attachEvent?e.attachEvent("onunload",s):e.addEventListener&&e.addEventListener("beforeunload",s,!1))}).call(e,function(){return this}())},function(t,e,n){function r(t){var e=t&&t.forceBase64;p&&!e||(this.supportsBinary=!1),o.call(this,t)}var o=n(20),i=n(30),s=n(21),a=n(31),c=n(32),u=n(3)("engine.io-client:polling");t.exports=r;var p=function(){var t=n(16),e=new t({xdomain:!1});return null!=e.responseType}();a(r,o),r.prototype.name="polling",r.prototype.doOpen=function(){this.poll()},r.prototype.pause=function(t){function e(){u("paused"),n.readyState="paused",t()}var n=this;if(this.readyState="pausing",this.polling||!this.writable){var r=0;this.polling&&(u("we are currently polling - waiting to pause"),r++,this.once("pollComplete",function(){u("pre-pause polling complete"),--r||e()})),this.writable||(u("we are currently writing - waiting to pause"),r++,this.once("drain",function(){u("pre-pause writing complete"),--r||e()}))}else e()},r.prototype.poll=function(){u("polling"),this.polling=!0,this.doPoll(),this.emit("poll")},r.prototype.onData=function(t){var e=this;u("polling got data %s",t);var n=function(t,n,r){return"opening"===e.readyState&&e.onOpen(),"close"===t.type?(e.onClose(),!1):void e.onPacket(t)};s.decodePayload(t,this.socket.binaryType,n),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState?this.poll():u('ignoring poll - transport state "%s"',this.readyState))},r.prototype.doClose=function(){function t(){u("writing close packet"),e.write([{type:"close"}])}var e=this;"open"===this.readyState?(u("transport open - closing"),t()):(u("transport not open - deferring close"),this.once("open",t))},r.prototype.write=function(t){var e=this;this.writable=!1;var n=function(){e.writable=!0,e.emit("drain")};s.encodePayload(t,this.supportsBinary,function(t){e.doWrite(t,n)})},r.prototype.uri=function(){var t=this.query||{},e=this.secure?"https":"http",n="";!1!==this.timestampRequests&&(t[this.timestampParam]=c()),this.supportsBinary||t.sid||(t.b64=1),t=i.encode(t),this.port&&("https"===e&&443!==Number(this.port)||"http"===e&&80!==Number(this.port))&&(n=":"+this.port),t.length&&(t="?"+t);var r=this.hostname.indexOf(":")!==-1;return e+"://"+(r?"["+this.hostname+"]":this.hostname)+n+this.path+t}},function(t,e,n){function r(t){this.path=t.path,this.hostname=t.hostname,this.port=t.port,this.secure=t.secure,this.query=t.query,this.timestampParam=t.timestampParam,this.timestampRequests=t.timestampRequests,this.readyState="",this.agent=t.agent||!1,this.socket=t.socket,this.enablesXDR=t.enablesXDR,this.pfx=t.pfx,this.key=t.key,this.passphrase=t.passphrase,this.cert=t.cert,this.ca=t.ca,this.ciphers=t.ciphers,this.rejectUnauthorized=t.rejectUnauthorized,this.forceNode=t.forceNode,this.extraHeaders=t.extraHeaders,this.localAddress=t.localAddress}var o=n(21),i=n(8);t.exports=r,i(r.prototype),r.prototype.onError=function(t,e){var n=new Error(t);return n.type="TransportError",n.description=e,this.emit("error",n),this},r.prototype.open=function(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this},r.prototype.close=function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this},r.prototype.send=function(t){if("open"!==this.readyState)throw new Error("Transport not open");this.write(t)},r.prototype.onOpen=function(){this.readyState="open",this.writable=!0,this.emit("open")},r.prototype.onData=function(t){var e=o.decodePacket(t,this.socket.binaryType);this.onPacket(e)},r.prototype.onPacket=function(t){this.emit("packet",t)},r.prototype.onClose=function(){this.readyState="closed",this.emit("close")}},function(t,e,n){(function(t){function r(t,n){var r="b"+e.packets[t.type]+t.data.data;return n(r)}function o(t,n,r){if(!n)return e.encodeBase64Packet(t,r);var o=t.data,i=new Uint8Array(o),s=new Uint8Array(1+o.byteLength);s[0]=v[t.type];for(var a=0;a<i.length;a++)s[a+1]=i[a];return r(s.buffer)}function i(t,n,r){if(!n)return e.encodeBase64Packet(t,r);var o=new FileReader;return o.onload=function(){t.data=o.result,e.encodePacket(t,n,!0,r)},o.readAsArrayBuffer(t.data)}function s(t,n,r){if(!n)return e.encodeBase64Packet(t,r);if(g)return i(t,n,r);var o=new Uint8Array(1);o[0]=v[t.type];var s=new k([o.buffer,t.data]);return r(s)}function a(t){try{t=d.decode(t,{strict:!1})}catch(e){return!1}return t}function c(t,e,n){for(var r=new Array(t.length),o=l(t.length,n),i=function(t,n,o){e(n,function(e,n){r[t]=n,o(e,r)})},s=0;s<t.length;s++)i(s,t[s],o)}var u,p=n(22),h=n(23),f=n(24),l=n(25),d=n(26);t&&t.ArrayBuffer&&(u=n(28));var y="undefined"!=typeof navigator&&/Android/i.test(navigator.userAgent),m="undefined"!=typeof navigator&&/PhantomJS/i.test(navigator.userAgent),g=y||m;e.protocol=3;var v=e.packets={open:0,close:1,ping:2,pong:3,message:4,upgrade:5,noop:6},b=p(v),w={type:"error",data:"parser error"},k=n(29);e.encodePacket=function(e,n,i,a){"function"==typeof n&&(a=n,n=!1),"function"==typeof i&&(a=i,i=null);var c=void 0===e.data?void 0:e.data.buffer||e.data;if(t.ArrayBuffer&&c instanceof ArrayBuffer)return o(e,n,a);if(k&&c instanceof t.Blob)return s(e,n,a);if(c&&c.base64)return r(e,a);var u=v[e.type];return void 0!==e.data&&(u+=i?d.encode(String(e.data),{strict:!1}):String(e.data)),a(""+u)},e.encodeBase64Packet=function(n,r){var o="b"+e.packets[n.type];if(k&&n.data instanceof t.Blob){var i=new FileReader;return i.onload=function(){var t=i.result.split(",")[1];r(o+t)},i.readAsDataURL(n.data)}var s;try{s=String.fromCharCode.apply(null,new Uint8Array(n.data))}catch(a){for(var c=new Uint8Array(n.data),u=new Array(c.length),p=0;p<c.length;p++)u[p]=c[p];s=String.fromCharCode.apply(null,u)}return o+=t.btoa(s),r(o)},e.decodePacket=function(t,n,r){if(void 0===t)return w;if("string"==typeof t){if("b"===t.charAt(0))return e.decodeBase64Packet(t.substr(1),n);if(r&&(t=a(t),t===!1))return w;var o=t.charAt(0);return Number(o)==o&&b[o]?t.length>1?{type:b[o],data:t.substring(1)}:{type:b[o]}:w}var i=new Uint8Array(t),o=i[0],s=f(t,1);return k&&"blob"===n&&(s=new k([s])),{type:b[o],data:s}},e.decodeBase64Packet=function(t,e){var n=b[t.charAt(0)];if(!u)return{type:n,data:{base64:!0,data:t.substr(1)}};var r=u.decode(t.substr(1));return"blob"===e&&k&&(r=new k([r])),{type:n,data:r}},e.encodePayload=function(t,n,r){function o(t){return t.length+":"+t}function i(t,r){e.encodePacket(t,!!s&&n,!1,function(t){r(null,o(t))})}"function"==typeof n&&(r=n,n=null);var s=h(t);return n&&s?k&&!g?e.encodePayloadAsBlob(t,r):e.encodePayloadAsArrayBuffer(t,r):t.length?void c(t,i,function(t,e){return r(e.join(""))}):r("0:")},e.decodePayload=function(t,n,r){if("string"!=typeof t)return e.decodePayloadAsBinary(t,n,r);"function"==typeof n&&(r=n,n=null);var o;if(""===t)return r(w,0,1);for(var i,s,a="",c=0,u=t.length;c<u;c++){var p=t.charAt(c);if(":"===p){if(""===a||a!=(i=Number(a)))return r(w,0,1);if(s=t.substr(c+1,i),a!=s.length)return r(w,0,1);if(s.length){if(o=e.decodePacket(s,n,!1),w.type===o.type&&w.data===o.data)return r(w,0,1);var h=r(o,c+i,u);if(!1===h)return}c+=i,a=""}else a+=p}return""!==a?r(w,0,1):void 0},e.encodePayloadAsArrayBuffer=function(t,n){function r(t,n){e.encodePacket(t,!0,!0,function(t){return n(null,t)})}return t.length?void c(t,r,function(t,e){var r=e.reduce(function(t,e){var n;return n="string"==typeof e?e.length:e.byteLength,t+n.toString().length+n+2},0),o=new Uint8Array(r),i=0;return e.forEach(function(t){var e="string"==typeof t,n=t;if(e){for(var r=new Uint8Array(t.length),s=0;s<t.length;s++)r[s]=t.charCodeAt(s);n=r.buffer}e?o[i++]=0:o[i++]=1;for(var a=n.byteLength.toString(),s=0;s<a.length;s++)o[i++]=parseInt(a[s]);o[i++]=255;for(var r=new Uint8Array(n),s=0;s<r.length;s++)o[i++]=r[s]}),n(o.buffer)}):n(new ArrayBuffer(0))},e.encodePayloadAsBlob=function(t,n){function r(t,n){e.encodePacket(t,!0,!0,function(t){var e=new Uint8Array(1);if(e[0]=1,"string"==typeof t){for(var r=new Uint8Array(t.length),o=0;o<t.length;o++)r[o]=t.charCodeAt(o);t=r.buffer,e[0]=0}for(var i=t instanceof ArrayBuffer?t.byteLength:t.size,s=i.toString(),a=new Uint8Array(s.length+1),o=0;o<s.length;o++)a[o]=parseInt(s[o]);if(a[s.length]=255,k){var c=new k([e.buffer,a.buffer,t]);n(null,c)}})}c(t,r,function(t,e){return n(new k(e))})},e.decodePayloadAsBinary=function(t,n,r){"function"==typeof n&&(r=n,n=null);for(var o=t,i=[];o.byteLength>0;){for(var s=new Uint8Array(o),a=0===s[0],c="",u=1;255!==s[u];u++){if(c.length>310)return r(w,0,1);c+=s[u]}o=f(o,2+c.length),c=parseInt(c);var p=f(o,0,c);if(a)try{p=String.fromCharCode.apply(null,new Uint8Array(p))}catch(h){var l=new Uint8Array(p);p="";for(var u=0;u<l.length;u++)p+=String.fromCharCode(l[u])}i.push(p),o=f(o,c)}var d=i.length;i.forEach(function(t,o){r(e.decodePacket(t,n,!0),o,d)})}}).call(e,function(){return this}())},function(t,e){t.exports=Object.keys||function(t){var e=[],n=Object.prototype.hasOwnProperty;for(var r in t)n.call(t,r)&&e.push(r);return e}},function(t,e,n){(function(e){function r(t){if(!t||"object"!=typeof t)return!1;if(o(t)){for(var n=0,i=t.length;n<i;n++)if(r(t[n]))return!0;return!1}if("function"==typeof e.Buffer&&e.Buffer.isBuffer&&e.Buffer.isBuffer(t)||"function"==typeof e.ArrayBuffer&&t instanceof ArrayBuffer||s&&t instanceof Blob||a&&t instanceof File)return!0;if(t.toJSON&&"function"==typeof t.toJSON&&1===arguments.length)return r(t.toJSON(),!0);for(var c in t)if(Object.prototype.hasOwnProperty.call(t,c)&&r(t[c]))return!0;return!1}var o=n(10),i=Object.prototype.toString,s="function"==typeof e.Blob||"[object BlobConstructor]"===i.call(e.Blob),a="function"==typeof e.File||"[object FileConstructor]"===i.call(e.File);t.exports=r}).call(e,function(){return this}())},function(t,e){t.exports=function(t,e,n){var r=t.byteLength;if(e=e||0,n=n||r,t.slice)return t.slice(e,n);if(e<0&&(e+=r),n<0&&(n+=r),n>r&&(n=r),e>=r||e>=n||0===r)return new ArrayBuffer(0);for(var o=new Uint8Array(t),i=new Uint8Array(n-e),s=e,a=0;s<n;s++,a++)i[a]=o[s];return i.buffer}},function(t,e){function n(t,e,n){function o(t,r){if(o.count<=0)throw new Error("after called too many times");--o.count,t?(i=!0,e(t),e=n):0!==o.count||i||e(null,r)}var i=!1;return n=n||r,o.count=t,0===t?e():o}function r(){}t.exports=n},function(t,e,n){var r;(function(t,o){!function(i){function s(t){for(var e,n,r=[],o=0,i=t.length;o<i;)e=t.charCodeAt(o++),e>=55296&&e<=56319&&o<i?(n=t.charCodeAt(o++),56320==(64512&n)?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e),o--)):r.push(e);return r}function a(t){for(var e,n=t.length,r=-1,o="";++r<n;)e=t[r],e>65535&&(e-=65536,o+=w(e>>>10&1023|55296),e=56320|1023&e),o+=w(e);return o}function c(t,e){if(t>=55296&&t<=57343){if(e)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function u(t,e){return w(t>>e&63|128)}function p(t,e){if(0==(4294967168&t))return w(t);var n="";return 0==(4294965248&t)?n=w(t>>6&31|192):0==(4294901760&t)?(c(t,e)||(t=65533),n=w(t>>12&15|224),n+=u(t,6)):0==(4292870144&t)&&(n=w(t>>18&7|240),n+=u(t,12),n+=u(t,6)),n+=w(63&t|128)}function h(t,e){e=e||{};for(var n,r=!1!==e.strict,o=s(t),i=o.length,a=-1,c="";++a<i;)n=o[a],c+=p(n,r);return c}function f(){if(b>=v)throw Error("Invalid byte index");var t=255&g[b];if(b++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function l(t){var e,n,r,o,i;if(b>v)throw Error("Invalid byte index");if(b==v)return!1;if(e=255&g[b],b++,0==(128&e))return e;if(192==(224&e)){if(n=f(),i=(31&e)<<6|n,i>=128)return i;throw Error("Invalid continuation byte")}if(224==(240&e)){if(n=f(),r=f(),i=(15&e)<<12|n<<6|r,i>=2048)return c(i,t)?i:65533;throw Error("Invalid continuation byte")}if(240==(248&e)&&(n=f(),r=f(),o=f(),i=(7&e)<<18|n<<12|r<<6|o,i>=65536&&i<=1114111))return i;throw Error("Invalid UTF-8 detected")}function d(t,e){e=e||{};var n=!1!==e.strict;g=s(t),v=g.length,b=0;for(var r,o=[];(r=l(n))!==!1;)o.push(r);return a(o)}var y="object"==typeof e&&e,m=("object"==typeof t&&t&&t.exports==y&&t,"object"==typeof o&&o);m.global!==m&&m.window!==m||(i=m);var g,v,b,w=String.fromCharCode,k={version:"2.1.2",encode:h,decode:d};r=function(){return k}.call(e,n,e,t),!(void 0!==r&&(t.exports=r))}(this)}).call(e,n(27)(t),function(){return this}())},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){!function(){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=new Uint8Array(256),r=0;r<t.length;r++)n[t.charCodeAt(r)]=r;e.encode=function(e){var n,r=new Uint8Array(e),o=r.length,i="";for(n=0;n<o;n+=3)i+=t[r[n]>>2],i+=t[(3&r[n])<<4|r[n+1]>>4],i+=t[(15&r[n+1])<<2|r[n+2]>>6],i+=t[63&r[n+2]];return o%3===2?i=i.substring(0,i.length-1)+"=":o%3===1&&(i=i.substring(0,i.length-2)+"=="),i},e.decode=function(t){var e,r,o,i,s,a=.75*t.length,c=t.length,u=0;"="===t[t.length-1]&&(a--,"="===t[t.length-2]&&a--);var p=new ArrayBuffer(a),h=new Uint8Array(p);for(e=0;e<c;e+=4)r=n[t.charCodeAt(e)],o=n[t.charCodeAt(e+1)],i=n[t.charCodeAt(e+2)],s=n[t.charCodeAt(e+3)],h[u++]=r<<2|o>>4,h[u++]=(15&o)<<4|i>>2,h[u++]=(3&i)<<6|63&s;return p}}()},function(t,e){(function(e){function n(t){for(var e=0;e<t.length;e++){var n=t[e];if(n.buffer instanceof ArrayBuffer){var r=n.buffer;if(n.byteLength!==r.byteLength){var o=new Uint8Array(n.byteLength);o.set(new Uint8Array(r,n.byteOffset,n.byteLength)),r=o.buffer}t[e]=r}}}function r(t,e){e=e||{};var r=new i;n(t);for(var o=0;o<t.length;o++)r.append(t[o]);return e.type?r.getBlob(e.type):r.getBlob()}function o(t,e){return n(t),new Blob(t,e||{})}var i=e.BlobBuilder||e.WebKitBlobBuilder||e.MSBlobBuilder||e.MozBlobBuilder,s=function(){try{var t=new Blob(["hi"]);return 2===t.size}catch(e){return!1}}(),a=s&&function(){try{var t=new Blob([new Uint8Array([1,2])]);return 2===t.size}catch(e){return!1}}(),c=i&&i.prototype.append&&i.prototype.getBlob;t.exports=function(){return s?a?e.Blob:o:c?r:void 0}()}).call(e,function(){return this}())},function(t,e){e.encode=function(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e},e.decode=function(t){for(var e={},n=t.split("&"),r=0,o=n.length;r<o;r++){var i=n[r].split("=");e[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return e}},function(t,e){t.exports=function(t,e){var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e){"use strict";function n(t){var e="";do e=s[t%a]+e,t=Math.floor(t/a);while(t>0);return e}function r(t){var e=0;for(p=0;p<t.length;p++)e=e*a+c[t.charAt(p)];return e}function o(){var t=n(+new Date);return t!==i?(u=0,i=t):t+"."+n(u++)}for(var i,s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),a=64,c={},u=0,p=0;p<a;p++)c[s[p]]=p;o.encode=n,o.decode=r,t.exports=o},function(t,e,n){(function(e){function r(){}function o(t){i.call(this,t),this.query=this.query||{},a||(e.___eio||(e.___eio=[]),a=e.___eio),this.index=a.length;var n=this;a.push(function(t){n.onData(t)}),this.query.j=this.index,e.document&&e.addEventListener&&e.addEventListener("beforeunload",function(){n.script&&(n.script.onerror=r)},!1)}var i=n(19),s=n(31);t.exports=o;var a,c=/\n/g,u=/\\n/g;s(o,i),o.prototype.supportsBinary=!1,o.prototype.doClose=function(){this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),i.prototype.doClose.call(this)},o.prototype.doPoll=function(){var t=this,e=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),e.async=!0,e.src=this.uri(),e.onerror=function(e){t.onError("jsonp poll error",e)};var n=document.getElementsByTagName("script")[0];n?n.parentNode.insertBefore(e,n):(document.head||document.body).appendChild(e),this.script=e;var r="undefined"!=typeof navigator&&/gecko/i.test(navigator.userAgent);r&&setTimeout(function(){var t=document.createElement("iframe");document.body.appendChild(t),document.body.removeChild(t)},100)},o.prototype.doWrite=function(t,e){function n(){r(),e()}function r(){if(o.iframe)try{o.form.removeChild(o.iframe)}catch(t){o.onError("jsonp polling iframe removal error",t)}try{var e='<iframe src="javascript:0" name="'+o.iframeId+'">';i=document.createElement(e)}catch(t){i=document.createElement("iframe"),i.name=o.iframeId,i.src="javascript:0"}i.id=o.iframeId,o.form.appendChild(i),o.iframe=i}var o=this;if(!this.form){var i,s=document.createElement("form"),a=document.createElement("textarea"),p=this.iframeId="eio_iframe_"+this.index;s.className="socketio",s.style.position="absolute",s.style.top="-1000px",s.style.left="-1000px",s.target=p,s.method="POST",s.setAttribute("accept-charset","utf-8"),a.name="d",s.appendChild(a),document.body.appendChild(s),this.form=s,this.area=a}this.form.action=this.uri(),r(),t=t.replace(u,"\\\n"),this.area.value=t.replace(c,"\\n");try{this.form.submit()}catch(h){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===o.iframe.readyState&&n()}:this.iframe.onload=n}}).call(e,function(){return this}())},function(t,e,n){(function(e){function r(t){var e=t&&t.forceBase64;e&&(this.supportsBinary=!1),this.perMessageDeflate=t.perMessageDeflate,this.usingBrowserWebSocket=h&&!t.forceNode,this.protocols=t.protocols,this.usingBrowserWebSocket||(l=o),i.call(this,t)}var o,i=n(20),s=n(21),a=n(30),c=n(31),u=n(32),p=n(3)("engine.io-client:websocket"),h=e.WebSocket||e.MozWebSocket;if("undefined"==typeof window)try{o=n(35)}catch(f){}var l=h;l||"undefined"!=typeof window||(l=o),t.exports=r,c(r,i),r.prototype.name="websocket",r.prototype.supportsBinary=!0,r.prototype.doOpen=function(){if(this.check()){var t=this.uri(),e=this.protocols,n={agent:this.agent,perMessageDeflate:this.perMessageDeflate};n.pfx=this.pfx,n.key=this.key,n.passphrase=this.passphrase,n.cert=this.cert,n.ca=this.ca,n.ciphers=this.ciphers,n.rejectUnauthorized=this.rejectUnauthorized,this.extraHeaders&&(n.headers=this.extraHeaders),this.localAddress&&(n.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket?e?new l(t,e):new l(t):new l(t,e,n)}catch(r){return this.emit("error",r)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},r.prototype.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.onOpen()},this.ws.onclose=function(){t.onClose()},this.ws.onmessage=function(e){t.onData(e.data)},this.ws.onerror=function(e){t.onError("websocket error",e)}},r.prototype.write=function(t){function n(){r.emit("flush"),setTimeout(function(){r.writable=!0,r.emit("drain")},0)}var r=this;this.writable=!1;for(var o=t.length,i=0,a=o;i<a;i++)!function(t){s.encodePacket(t,r.supportsBinary,function(i){if(!r.usingBrowserWebSocket){var s={};if(t.options&&(s.compress=t.options.compress),r.perMessageDeflate){var a="string"==typeof i?e.Buffer.byteLength(i):i.length;a<r.perMessageDeflate.threshold&&(s.compress=!1)}}try{r.usingBrowserWebSocket?r.ws.send(i):r.ws.send(i,s)}catch(c){p("websocket closed before onclose event")}--o||n()})}(t[i])},r.prototype.onClose=function(){i.prototype.onClose.call(this)},r.prototype.doClose=function(){"undefined"!=typeof this.ws&&this.ws.close()},r.prototype.uri=function(){var t=this.query||{},e=this.secure?"wss":"ws",n="";this.port&&("wss"===e&&443!==Number(this.port)||"ws"===e&&80!==Number(this.port))&&(n=":"+this.port),this.timestampRequests&&(t[this.timestampParam]=u()),this.supportsBinary||(t.b64=1),t=a.encode(t),t.length&&(t="?"+t);var r=this.hostname.indexOf(":")!==-1;return e+"://"+(r?"["+this.hostname+"]":this.hostname)+n+this.path+t},r.prototype.check=function(){return!(!l||"__initialize"in l&&this.name===r.prototype.name)}}).call(e,function(){return this}())},function(t,e){},function(t,e){var n=[].indexOf;t.exports=function(t,e){if(n)return t.indexOf(e);for(var r=0;r<t.length;++r)if(t[r]===e)return r;return-1}},function(t,e,n){"use strict";function r(t,e,n){this.io=t,this.nsp=e,this.json=this,this.ids=0,this.acks={},this.receiveBuffer=[],this.sendBuffer=[],this.connected=!1,this.disconnected=!0,this.flags={},n&&n.query&&(this.query=n.query),this.io.autoConnect&&this.open()}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(7),s=n(8),a=n(38),c=n(39),u=n(40),p=n(3)("socket.io-client:socket"),h=n(30),f=n(23);t.exports=e=r;var l={connect:1,connect_error:1,connect_timeout:1,connecting:1,disconnect:1,error:1,reconnect:1,reconnect_attempt:1,reconnect_failed:1,reconnect_error:1,reconnecting:1,ping:1,pong:1},d=s.prototype.emit;s(r.prototype),r.prototype.subEvents=function(){if(!this.subs){var t=this.io;this.subs=[c(t,"open",u(this,"onopen")),c(t,"packet",u(this,"onpacket")),c(t,"close",u(this,"onclose"))]}},r.prototype.open=r.prototype.connect=function(){return this.connected?this:(this.subEvents(),this.io.open(),"open"===this.io.readyState&&this.onopen(),this.emit("connecting"),this)},r.prototype.send=function(){var t=a(arguments);return t.unshift("message"),this.emit.apply(this,t),this},r.prototype.emit=function(t){if(l.hasOwnProperty(t))return d.apply(this,arguments),this;var e=a(arguments),n={type:(void 0!==this.flags.binary?this.flags.binary:f(e))?i.BINARY_EVENT:i.EVENT,data:e};return n.options={},n.options.compress=!this.flags||!1!==this.flags.compress,"function"==typeof e[e.length-1]&&(p("emitting packet with ack id %d",this.ids),this.acks[this.ids]=e.pop(),n.id=this.ids++),this.connected?this.packet(n):this.sendBuffer.push(n),this.flags={},this},r.prototype.packet=function(t){t.nsp=this.nsp,this.io.packet(t)},r.prototype.onopen=function(){if(p("transport is open - connecting"),"/"!==this.nsp)if(this.query){var t="object"===o(this.query)?h.encode(this.query):this.query;p("sending connect packet with query %s",t),this.packet({type:i.CONNECT,query:t})}else this.packet({type:i.CONNECT})},r.prototype.onclose=function(t){p("close (%s)",t),this.connected=!1,this.disconnected=!0,delete this.id,this.emit("disconnect",t)},r.prototype.onpacket=function(t){var e=t.nsp===this.nsp,n=t.type===i.ERROR&&"/"===t.nsp;if(e||n)switch(t.type){case i.CONNECT:this.onconnect();break;case i.EVENT:this.onevent(t);break;case i.BINARY_EVENT:this.onevent(t);break;case i.ACK:this.onack(t);break;case i.BINARY_ACK:this.onack(t);break;case i.DISCONNECT:this.ondisconnect();break;case i.ERROR:this.emit("error",t.data)}},r.prototype.onevent=function(t){var e=t.data||[];p("emitting event %j",e),null!=t.id&&(p("attaching ack callback to event"),e.push(this.ack(t.id))),this.connected?d.apply(this,e):this.receiveBuffer.push(e)},r.prototype.ack=function(t){var e=this,n=!1;return function(){if(!n){n=!0;var r=a(arguments);p("sending ack %j",r),e.packet({type:f(r)?i.BINARY_ACK:i.ACK,id:t,data:r})}}},r.prototype.onack=function(t){var e=this.acks[t.id];"function"==typeof e?(p("calling ack %s with %j",t.id,t.data),e.apply(this,t.data),delete this.acks[t.id]):p("bad ack %s",t.id)},r.prototype.onconnect=function(){this.connected=!0,this.disconnected=!1,this.emit("connect"),this.emitBuffered()},r.prototype.emitBuffered=function(){var t;for(t=0;t<this.receiveBuffer.length;t++)d.apply(this,this.receiveBuffer[t]);for(this.receiveBuffer=[],t=0;t<this.sendBuffer.length;t++)this.packet(this.sendBuffer[t]);this.sendBuffer=[]},r.prototype.ondisconnect=function(){p("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")},r.prototype.destroy=function(){if(this.subs){for(var t=0;t<this.subs.length;t++)this.subs[t].destroy();this.subs=null}this.io.destroy(this)},r.prototype.close=r.prototype.disconnect=function(){return this.connected&&(p("performing disconnect (%s)",this.nsp),this.packet({type:i.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this},r.prototype.compress=function(t){return this.flags.compress=t,this},r.prototype.binary=function(t){return this.flags.binary=t,this}},function(t,e){function n(t,e){var n=[];e=e||0;for(var r=e||0;r<t.length;r++)n[r-e]=t[r];return n}t.exports=n},function(t,e){"use strict";function n(t,e,n){return t.on(e,n),{destroy:function(){t.removeListener(e,n)}}}t.exports=n},function(t,e){var n=[].slice;t.exports=function(t,e){if("string"==typeof e&&(e=t[e]),"function"!=typeof e)throw new Error("bind() requires a function");var r=n.call(arguments,2);return function(){return e.apply(t,r.concat(n.call(arguments)))}}},function(t,e){function n(t){t=t||{},this.ms=t.min||100,this.max=t.max||1e4,this.factor=t.factor||2,this.jitter=t.jitter>0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=n,n.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},n.prototype.reset=function(){this.attempts=0},n.prototype.setMin=function(t){this.ms=t},n.prototype.setMax=function(t){this.max=t},n.prototype.setJitter=function(t){this.jitter=t}}])});
//# sourceMappingURL=socket.io.js.map

================================================
FILE: thisMyPCApp/html/index.html
================================================
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>ThisMyPC</title>
    <!-- Bootstrap core CSS -->
    <link href="../assets/libs/bootstrap/bootstrap.min.css" rel="stylesheet">
    <!-- Custom styles for this template -->
    <link href="../assets/css/home.css" rel="stylesheet">
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css"
        integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
    <script src="../assets/libs/socket.io.js"></script>
    <link rel="icon" type="image/x-icon" href="../assets/icon/logo.ico">
</head>

<body>
    <section>
        <div class="container-fluid">
            <nav class="navbar navbar-expand-lg navbar-light nav-bar-bg">
                <a class="navbar-brand" href="#" style="cursor:default;"><img class="logo"
                        src="../assets/images/logo/logo.png" alt="logo"> 
                </a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText"
                    aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarText">
                    <ul class="navbar-nav mr-auto">
                    </ul>
                    <span class="navbar-text">
                        <ul class="navbar-nav mr-auto">
                            <li class="nav-item active">
                                <div class="nav-link mouse">
                                    <div class="dropdown">
                                        <div id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true"
                                            aria-expanded="false">
                                            Welcome back, <span id="userName"></span>! <i class="fas fa-angle-down"></i>
                                        </div>
                                        <div class="dropdown-menu dropdown-menu-right system-font"
                                            aria-labelledby="dropdownMenuButton">
                                            <!--
                  <div class="dropdown-divider"></div>-->
                                            <a class="dropdown-item" href="#" data-toggle="modal"
                                                data-target="#logout">Logout</a>
                                        </div>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </span>
                </div>
            </nav>
            <div class="row">
                <div class="col-md-12" id="notifications_live"></div>
                <div class="col-md-12 top_alert_position" id="notifications_api">
                </div>
                <div class="col-md-12">
                    <div class="row">
                        <div class="col-xl-12">
                            <div class="row">
                                <div class="col-xl-4 col-md-4">
                                    <div class="box">
                                        <div class="card-subtitle font-weight-normal  text-muted">Remote User</div>
                                        <span id="remoteUserBox">
                                            <div class="font-weight-bolder">User Not Available</div>
                                        </span>
                                    </div>
                                </div>
                                <div class="col-xl-4 col-md-4"></div>
                                <div class="col-xl-4 col-md-4"></div>
                            </div>
                        </div>
                        <div class="col-xl-12">
                            <span>
                                <h3 class="mt-5 font-weight-light text-center">More Option Coming Soon..</h3>
                            </span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
    <!-- Modal -->
    <!-- Modal -->
    <div class="modal fade" id="logout" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
        aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">LogOut</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    Are you sure you want to log out?
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close
                    </button>
                    <button type="button" class="btn btn-primary" id="submit-logout">LogOut
                    </button>
                </div>
            </div>
        </div>
    </div>
    <script src="../assets/js/home.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
        integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous">
        </script>
</body>

</html>

================================================
FILE: thisMyPCApp/html/login.html
================================================
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- Bootstrap core CSS -->
    <link href="../assets/libs/bootstrap/bootstrap.min.css" rel="stylesheet">
    <!-- Custom styles for this template -->
    <link href="../assets/css/login.css" rel="stylesheet">
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css"
    integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
    <script type="text/javascript" src="../assets/libs/jquery-3.3.1.min.js"></script>
    <script src="../assets/libs/socket.io.js"></script>
    <link rel="icon" type="image/x-icon" href="../assets/icon/logo.ico">
</head>

<body>
    <div class="container-fluid">
        <div class="row">
            <div class="col-xl-12 mt-5 text-center main_text">ThisMyPC is a next-generation open source solution for remote computer.</div>
        </div>
        <div class="modal" style="display: block;">
            <div class="modal-dialog modal-dialog-centered" role="document">
                <div class="modal-content">
                    <div class="modal-body">
                        <div class="row">
                            <div class="col-xl-12 text-center">
                                <img class="logo-modal" src="../assets/images/logo/logo.png" alt="logo">
                            </div>
                            <div class="col-xl-12">
                                <form>
                                    <div class="row">
                                        <div class="col-xl-12 form-col" id="error-massage">
                                        </div>
                                        <div class="col-xl-12 form-col"><input type="text" class="type-text"
                                                id="inputEmail" placeholder="Email Address" name="email" required></div>
                                        <div class="col-xl-12 form-col"><input type="password" class="type-text"
                                                id="inputPassword" placeholder="Password" name="password" required>
                                        </div>
                                        <div class="col-xl-12 form-col">
                                            <button type="button" class="btn btn-primary w-100 blue-btn "
                                                id="submit-login">Login
                                            </button>
                                        </div>
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <script src="../assets/js/login.js"></script>
</body>

</html>

================================================
FILE: thisMyPCApp/log.txt
================================================
Some log


================================================
FILE: thisMyPCApp/main.js
================================================
'use strict';
const {
  app,
  BrowserWindow,
  ipcMain,
} = require('electron');
// reload  application   while   coding
require('electron-reload')(__dirname);
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let win;

/**
 * Creat Window
 */
function createWindow() {
  // Create the browser window.
  win = new BrowserWindow({
    height: 600,
    minHeight: 500,
    minWidth: 500,
    width: 900,
    icon: 'assets/images/logo/logo-icon.png',
    show: false,
    /* , frame: false*/
  });
  // and load the index.html of the app.
  win.loadFile('html/login.html');
  // Open the DevTools.
win.webContents.openDevTools();

  win.setMenu(null);
  win.once('ready-to-show', () => {
    win.show();
  });
}
/**
 * Open System Page
 */
ipcMain.on('systemPage', () => {
  win.loadFile('html/index.html');
});

/**
 * Open login Page
 */
ipcMain.on('loginPage', () => {
  win.loadFile('html/login.html');
});
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow);
// Quit when all windows are closed.
app.on('window-all-closed', () => {
  // On macOS it is common for applications and their menu bar
  // to stay active until the user quits explicitly with Cmd + Q
  if (process.platform !== 'darwin') {
    app.quit();
  }
});
app.on('activate', () => {
  // On macOS it's common to re-create a window in the app when the
  // dock icon is clicked and there are no other windows open.
  if (win === null) {
    createWindow();
  }
});
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.


================================================
FILE: thisMyPCApp/package.json
================================================
{
  "name": "ThisMyPC",
  "version": "0.2.0",
  "description": "This is Electron JS ,Node JS and Angular project (ThisMyPC)",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "windose": "electron-packager . --asar --icon=assets/icon/logo.ico",
    "package-win": "electron-packager . ThisMyPC --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icon/logo.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"ThisMyPC\"",
    "pack": "electron-builder --dir",
    "dist": "electron-builder"
  },
  "author": "Supun Lakmal",
  "license": "MIT",
  "devDependencies": {
    "@types/socket.io-client": "^1.4.32",
    "electron": "^7.2.4",
    "electron-builder": "^20.39.0",
    "electron-packager": "^12.2.0",
    "electron-winstaller": "^2.7.0",
    "eslint": "^5.16.0",
    "eslint-config-google": "^0.13.0",
    "socket.io-client": "^2.2.0"
  },
  "dependencies": {
    "electron-reload": "^1.5.0",
    "electron-updater": "^4.0.6",
    "file-api": "^0.10.4",
    "fs-extra": "^7.0.1",
    "hdd-space": "^1.2.0",
    "jquery": "^3.5.0",
    "junk": "^2.1.0",
    "node-fetch": "^2.6.1",
    "node-machine-id": "^1.1.10",
    "screenshot-desktop": "^1.10.0",
    "socket.io-stream": "^0.9.1",
    "split-file": "^2.1.1"
  },
  "build": {
    "appId": "com.thismypc.thismypc",
    "productName": "This My PC",
    "copyright": "Copyright © 2019 ${author}",
    "target": "NSIS",
    "directories": {
      "output": "build"
    },
    "nsis": {
      "allowToChangeInstallationDirectory": true,
      "oneClick": false
    }
  }
}


================================================
FILE: thisMyPCApp/setup.js
================================================
var electronInstaller = require('electron-winstaller');
resultPromise = electronInstaller.createWindowsInstaller({
    appDirectory: 'release-builds/ThisMyPC-win32-ia32',
    outputDirectory: '',
    authors: 'ThisMyPC',
    exe: 'ThisMyPC.exe',

});

resultPromise.then(() => console.log("It worked!"), (e) => console.log(`No dice: ${e.message}`));

================================================
FILE: thisMyPCServer/.eslintrc.js
================================================
module.exports = {
  'env': {
    'commonjs': true,
    'es6': true,
    'node': true,
  },
  'extends': 'google',
  'globals': {
    'Atomics': 'readonly',
    'SharedArrayBuffer': 'readonly',
  },
  'parserOptions': {
    'ecmaVersion': 2018,
  },
  'rules': {
  },
};


================================================
FILE: thisMyPCServer/.gitignore
================================================
node_modules/


================================================
FILE: thisMyPCServer/components/api.components.js
================================================


/**
 * User Class
 */
class ApiComponent {
  constructor() {

  }

  respond(type, msg, data) {
    const res = {};
    res.data = data;
    res.message = msg;
    res.status = type;
    return res;
  }
}
module.exports = ApiComponent;


================================================
FILE: thisMyPCServer/components/computer.components.js
================================================
/**
 * User Module
 */
const PC = require('../models/pc');
const UserComponent = require('./user.components');
// md5 encrypt
const md5 = require('js-md5');
/**
 * User Class
 */
class ComputerComponent extends UserComponent {
  constructor() {
    super();
    this.computerDbObject ={};
    this.computer={};
  }
  deconstructionComputerObject() {
    this.computerDbObject ={};
    this.computer={};
  }
  async getComputerDataFromDBUsingUserID(userID) {
    this.deconstructionComputerObject();
    this.computerDbObject = await PC.getUser(userID);
    return this;
  }
  /**
 * Get Computer information user ID and  computer Key
 */
  async getComputerDataFromDBUsingUserIdAndComputerKey(userID, computerKey) {
    this.deconstructionComputerObject();
    this.computerDbObject = PC.getPCByUserIDAndPCKey(computerKey, userID);
    return this;
  }
 /**
  * Get computer  Key
  */
  getComputerKey() {
    this.computer.computerKey = this.computerDbObject.pcKey;
    return this;
  }
  /**
   * User ID
   */
  getUserID() {}
  /**
   * Computer  public access key that  alow to other user can use computer
   */
  getPublicAccessKey() {
    this.computer.publicAccessKey = this.computerDbObject.publicAccessKey;
    return this;
  }
  /**
   * Public access status
   */
  getPublicAccessStatus() {}
  /**
   * Computer Name
   */
  getPcName() {}
  /**
   * Computer Platform
   */
  getPlatform() {}
  /**
   * Is  computer online
   */
  getPcOnline() {}
  /**
   * get computer authentication
   */
  getComputerAuthentication() {
    this.computer.authentication_key = this.computerDbObject.authApp;
    return this;
  }
  /**
 * Get  computer  user  information
 */
  async getComputerUserInformation(userID) {
    const userInformation = new UserComponent();
    await userInformation.getUserDataFromDB(userID);
    this.computer.userID = userInformation.userID('get');
    this.computer.firstName = userInformation.userFirstName('get');
    this.computer.lastName = userInformation.userLastName('get');
    this.computer.email = userInformation.userEmail('get');
    return this;
  }
  /**
   *
   * @param {Object} res
   * @param {String} userID
   * @param {String} authentication_key
   * @param {String} computerKey
   */
  async authentication(res, userID, authentication_key, computerKey) {
    if (!await PC.authApp(userID, authentication_key, computerKey)) {
      res.status(401);
      return res.json(this.respond(false, 'Invalid User', null));
    }
  }
  /**
   *
   * @param {object} user  user information
   * @param {*} pcKey  Computer key
   * @return {object} new auth key
   */
  async updateAppUserAuth(user, pcKey) {
    this.deconstructionComputerObject();
    const date = new Date();
    const input = {};
    input.auth = md5(user._id + date + pcKey);
    input.id = user._id;
    const updateUserAuthApp = await PC.updateUserAuthApp(pcKey, input, {
      new: true,
    });
    this.computerDbObject = updateUserAuthApp;
  }
  /**
   * Get computer information
   */
  getComputer() {
    return this.computer;
  }

  /**
   * Get computer information
   */
  setComputer(data) {
    this.deconstructionComputerObject();
    this.computerDbObject = data;
  }
}
module.exports = ComputerComponent;


================================================
FILE: thisMyPCServer/components/logger.js
================================================
'use strict';

/**
*  log class
*  pattern - Singletons
*/
class Logger {
  /**
  * @param {object} message
  */
  log(message) {
    const timestamp = new Date().toISOString();
    console.log(`${timestamp} - ${message}`);
  }
}
module.exports = new Logger();


================================================
FILE: thisMyPCServer/components/user.components.js
================================================
/**
 * User Module
 */
const User = require('../models/user');
const ApiComponent = require('./api.components');
/**
 * User Class
 */
class UserComponent extends ApiComponent {
  constructor() {
    super();
    this.userDbObject = {};
    this.user = {};
  }
  /**
 * Deconstruction user and  class object
 */
  deconstructionUserObject() {
    this.userDbObject = {};
    this.user = {};
    return this;
  }
  /**
   * get User Data from DB
   *
   * @param {String} userID
   */
  async getUserDataFromDB(userID) {
    this.deconstructionUserObject();
    this.userDbObject = await User.getUser(userID);
    return this;
  }
  /**
   * Set User data from out side to class
   *
   * @param {Object} userData
   */
  setUserDataToClass(userData) {
    this.deconstructionUserObject();
    this.userDbObject = userData;
    return this;
  }
  /**
   * Get all user data
   */
  allUserData() {
    return this.userDbObject;
  }
  /**
 * User first name
 */
  userFirstName(type=false) {
    this.user.firstName = this.userDbObject.name;
    return type?this.userDbObject.name: this;
  }
  /**
 * User last name
 */
  userLastName(type=false) {
    this.user.lastName = this.userDbObject.nameLast;
    return type?this.userDbObject.nameLast:this;
  }
  /**
 * User Email
 */
  userEmail(type=false) {
    this.user.email = this.userDbObject.email;
    return type? this.userDbObject.email:this;
  }
  /**
 * User ID
 */
  userID(type=false) {
    this.user.userID = this.userDbObject._id;
    return type? this.userDbObject._id:this;
  }
  /**
   * Return constructed user Data
   */
  getUser() {
    const userInformation = this.user;
    this.user ={};
    return userInformation;
  }
  /**
   * get authentication data
   */
  getAuthenticationKey() {
    this.user.authentication_key = this.userDbObject.auth;
    return this;
  }
  /**
 *
 * @param {Object} res
 * @param {String} userID
 * @param {String} authentication_key
 */
  async authentication(res, userID, authentication_key) {
    if (!await User.authUser(userID, authentication_key)) {
      res.status(401);
      return res.json(this.respond(false, 'Invalid User', null));
    }
  }
}
module.exports = UserComponent;


================================================
FILE: thisMyPCServer/config/config.js
================================================
module.exports = {
	port:5000
};


================================================
FILE: thisMyPCServer/config/db.js
================================================
let db = {
  //Mongo DB
  host: process.env.MONGO_DB_HOST, // web site  for  DB
  dbName: process.env.MONGO_DB_NAME, //Data base name
  password: process.env.MONGO_DB_PASSWORD,
  user: process.env.MONGO_DB_USER,
  mongodbType: process.env.MONGO_DB_TYPE, // atlas , localhost
  parameter: "?retryWrites=true&w=majority", // parameters
};

// db connection Url
let url;
if (db.mongodbType == "atlas") {
  url = `mongodb+srv://${db.user}:${db.password}@${db.host}/${db.dbName}${db.parameter}`;
}

if (db.mongodbType == "localhost") {
  url = `mongodb://${db.user}:${db.password}@${db.host}/${db.dbName}`;
}

module.exports = url;


================================================
FILE: thisMyPCServer/delete_code_from_index.txt
================================================
// admin module
const Admin = require('./models/admin');

// this api  function    for  admin
// create  app frp for app Store
app.post('/admin/create/app', function(req, res) {
  const limit = req.body.limit;
  const out = {};
  out.auth = req.headers.token;
  out.uID = req.headers.uid;
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          const app = {};
          app.appImageUrl = req.body.appImageUrl;
          app.appInfo = req.body.appInfo;
          app.appName = req.body.appName;
          app.userID = req.body.userID;
          app.version = req.body.version;
          App.createApp(app, function(err, app) {});
          res.status(200);
          res.json(respond(true, 'Done', app));
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
// delete  app frp for app Store
app.post('/admin/update/app/image', function(req, res) {
  const id = req.body.id;
  const image = req.files.image;
  const imageName = image.name;
  const out = {};
  out.auth = req.headers.token;
  out.uID = req.headers.uid;
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          const imagePath = 'assets/images/app/' + imageName;
          image.mv('../' + imagePath, function(err) {
            if (err) return res.status(500).send(err);
            App.appImageUpdate(id, imagePath, {}, function(err, update) {});
            res.status(200);
            res.json(respond(true, 'Image Update Done', app));
          });
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
app.post('/admin/update/app', function(req, res) {
  const id = req.body.id;
  const out = {};
  out.auth = req.headers.token;
  out.uID = req.headers.uid;
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          App.appUpdateData(id, req.body, {}, function(err, data) {});
          res.status(200);
          res.json(respond(true, 'info Update Done', app));
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
// delete  app frp for app Store
app.post('/admin/delete/app', function(req, res) {
  const id = req.body.id;
  const out = {};
  out.auth = req.headers.token;
  out.uID = req.headers.uid;
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          App.deleteApp(id, function(err, app) {});
          res.status(200);
          res.json(respond(true, 'Delete Done', app));
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
// get all  PC
app.post('/admin/pc', function(req, res) {
  const limit = req.body.limit;
  const out = {};
  out.auth = req.headers.token;
  out.uID = req.headers.uid;
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          PC.getAllPC(limit, function(err, pc) {
            if (user) {
              res.status(200);
              res.json(respond(true, 'All PC', pc));
            } else {
              res.status(401);
              res.json(respond(false, 'Invalid User', null));
            }
          });
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
// get all  users
app.post('/admin/users', function(req, res) {
  const limit = req.body.limit;
  const out = {};
  out.auth = req.headers.token;
  out.uID = req.headers.uid;
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          User.getUsers(limit, function(err, user) {
            if (user) {
              res.status(200);
              res.json(respond(true, 'All Users', user));
            } else {
              res.status(401);
              res.json(respond(false, 'Invalid User', null));
            }
          });
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
app.post('/admin/admin/create', function(req, res) {
  const out = {};
  out.auth = req.headers.token;
  out.id = req.body.userID;
  out.uID = req.headers.uid;
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          Admin.searchAdmin(out.id, function(err, admin) {
            if (!admin) {
              Admin.createAdmin(out, function(err, admin) {
                if (err) {
                  throw err;
                }
                //  get user info  using   id
                User.getUser(out.id, function(err, user) {
                  if (user) {
                    res.status(200);
                    res.json(respond(true, ' New Admin', user));
                  } else {
                    res.status(401);
                    res.json(respond(false, 'Invalid User', null));
                  }
                });
              });
            } else {
              res.status(401);
              res.json(respond(false, 'Admin  Already exit', null));
            }
          });
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
app.post('/admin/user/status', function(req, res) {
  const out = {};
  out.auth = req.headers.token;
  out.id = req.body.userID;
  out.status = req.body.status;
  out.uID = req.headers.uid;
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          User.updateUserStatus(out.id, out, {}, function(err, user) {
            User.getUser(out.id, function(err, userWithNewStatus) {
              res.status(200);
              res.json(respond(true, 'Status Update', userWithNewStatus));
            });
          });
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
//  create   software   version
app.post('/admin/software/create', function(req, res) {
  const out = {};
  out.auth = req.headers.token;
  out.status = req.body.status;
  out.uID = req.headers.uid;
  out.version = req.body.version;
  out.versionKey = md5(req.body.version);
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          Software.getSoftware(out.versionKey, function(err, softwareIn) {
            if (!softwareIn) {
              Software.createSoftwareVersion(out, function(err, software) {
                if (err) {
                  throw err;
                }
                res.status(200);
                res.json(respond(true, 'new Software ', software));
              });
            } else {
              res.status(401);
              res.json(respond(false, 'Software  Already exit', null));
            }
          });
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
//  get all   software   version
app.post('/admin/software/all', function(req, res) {
  const out = {};
  out.auth = req.headers.token;
  out.limit = req.body.limit;
  out.uID = req.headers.uid;
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          Software.getSoftwares(out, function(err, software) {
            res.status(200);
            res.json(respond(software, true, 'All Software '));
          });
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});
// TODO  need to  complete
app.post('/admin/software/notification', function(req, res) {
  const out = {};
  out.auth = req.headers.token;
  out.status = req.body.status;
  out.uID = req.headers.uid;
  out.version = req.body.version;
  out.versionKey = md5(req.body.version);
  User.authUser(out.uID, out.auth, function(err, user) {
    if (user) {
      Admin.authAdmin(out.uID, function(err, admin) {
        if (admin) {
          Software.getSoftware(out.versionKey, function(err, softwareIn) {
            if (!softwareIn) {
              Software.createSoftwareVersion(out, function(err, software) {
                if (err) {
                  throw err;
                }
                res.status(200);
                res.json(respond(true, 'new Software ', software));
              });
            } else {
              res.status(401);
              res.json(respond(false, 'Software  Already exit', null));
            }
          });
        } else {
          res.status(401);
          res.json(respond(false, 'Authenticating Error Admin', null));
        }
      });
    } else {
      res.status(401);
      res.json(respond(false, 'Authenticating Error', null));
    }
  });
});


  app.post('/pc/downloadFileRequest', function(req, res) {
    const auth = req.headers.token;
    const id = req.body.id;
    const path = req.body.path;
    const pcKeyPublic = req.body.pcKeyPublic;
    User.authUser(id, auth, function(err, user) {
      if (user) {
        const output = {};
        output.path = path;
        getPCSocketID(user, pcKeyPublic, function(socket) {
          io.sockets.to(socket).emit('downloadFileRequest', output);
        });
      }
    });
  });

    // copy file  location ad paste file  location
  socket.on('copyPasteToPC', function(input) {
    const auth = input.auth;
    const id = input.id;
    User.authUser(id, auth, function(err, user) {
      if (user) {
        io.sockets.in(user.ioSocketID).emit('copyPasteToPCApp', input.data);
      }
    });
  });
  // copy  and paste  Done
  socket.on('pasteDone', function(input) {
    const auth = input.auth;
    const id = input.id;
    const pcKey = md5(input.pcKey);
    PC.authApp(id, auth, pcKey, function(err, pc) {
      User.getUser(id, function(err, user) {
        if (user) {
          roomID = user.ioSocketID;
        }
      });
      if (pc) {
        io.sockets.in(user.ioSocketID).emit('pasteDone', input.data);
      }
    });
  });
  // file  transfer
  socket.on('uploadFileInfo_to_pc', function(input) {
    const auth = input.auth;
    const id = input.id;
    User.authUser(id, auth, function(err, user) {
      if (user) {
        io.sockets.in(user.ioSocketID).emit('uploadFileInfo_from_web', input.data);
      }
    });
  });
  socket.on('uploadFile_chunk_to_pc', function(input) {
    const auth = input.auth;
    const id = input.id;
    User.authUser(id, auth, function(err, user) {
      if (user) {
        io.sockets.in(user.ioSocketID).emit('uploadFile_chunk_from_web', input.data);
      }
    });
  });
  socket.on('fileSendingFromPc', function(input) {});

================================================
FILE: thisMyPCServer/example.env
================================================
MONGO_DB_HOST=""
MONGO_DB_NAME=""
MONGO_DB_PASSWORD=""
MONGO_DB_USER=""
MONGO_DB_TYPE=""


================================================
FILE: thisMyPCServer/index.js
================================================
/*
! TODO Do not send user auth key and other information to client side app
*/
"use strict";
require("dotenv").config();
// https://javascript.info/async-await
const app = require("express")();
const bodyParser = require("body-parser");
// MongoDb config variables
const db = require("./config/db");
// config  variables
const config = require("./config/config");
// const fileUpload = require('express-fileupload');
// md5 encrypt
const md5 = require("js-md5");
const mongoose = require("mongoose");
// validate inputs
const validator = require("validator");
const graphqlHTTP = require("express-graphql");
const { buildSchema } = require("graphql");
/**
 * components
 */
// logger
const logger = require("./components/logger");

// MongoDB server connection Atlas
mongoose.connect(`${db}`, {
  useNewUrlParser: true,
});
// Set mongoose.Promise to any Promise implementation
mongoose.Promise = Promise;
const http = require("http").Server(app);
const io = require("socket.io")(http);
/**
 * REST api call  convert to  json object before send
 *
 * @param {object} type
 * @param {object} msg
 * @param {object} data
 * @return {object}
 */
function respond(type, msg, data) {
  const res = {};
  res.data = data;
  res.message = msg;
  res.status = type;
  return res;
}
/**
 * Mongo DB modules
 */
// user module
const User = require("./models/user");
// software module
const Software = require("./models/software");
// pc  module
const PC = require("./models/pc");
// pc and user  module
const UserAndPC = require("./models/userAndPC");
// pc and PC Owner  module
const PcOwner = require("./models/PCOwner");
app.use(bodyParser.json());
app.disable("x-powered-by");
app.use(function (req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept ,authentication_key ,userID"
  );
  next();
});
/**
 * Import Component
 */
/**
 * User Component
 */
const userComponent = require("./components/user.components");
const computerComponent = require("./components/computer.components");
/**
 * GraphQL
 */
const schema = buildSchema(`
type Query {
  user(userID: String!) : UserData,
  userWebLogin(email:String! , password:String!) : userWebLoginData
}
type userWebLoginData {
  userID :String
  firstName :String
  lastName :String
  email :String
  authentication_key:String
}
type UserData {
  userID :String
  firstName :String
  lastName :String
  email :String
}
`);
/**
 * User login
 *
 * @param {Object} args
 */
const userWebLogin = async ({ email, password }) => {
  // convert   password to  md54
  password = md5(password);
  const userLogin = await User.loginUser(email, password);
  if (!userLogin) {
    throw new Error("Invalid  User");
  }
  const date = new Date();
  userLogin.authentication_key = md5(userLogin._id + date);
  const userClass = new userComponent();
  await userClass.setUserDataToClass(
    await User.updateUserAuth(userLogin._id, userLogin, {
      new: true,
    })
  );
  return userClass
    .userEmail()
    .userFirstName()
    .userID()
    .userLastName()
    .getAuthenticationKey()
    .getUser();
};
/**
 * User Information  by ID
 *
 * @param {object} args
 */
const getUserData = async (args, req) => {
  const authentication_key = req.headers.authentication_key;
  if (!(await User.authUser(args.userID, authentication_key))) {
    throw new Error("Unauthenticated");
  }
  const userID = args.userID;
  const userClass = new userComponent();
  await userClass.getUserDataFromDB(userID);
  return userClass
    .userEmail()
    .userFirstName()
    .userID()
    .userLastName()
    .getUser();
};
// Root resolver
const root = {
  user: getUserData,
  userWebLogin: userWebLogin,
};
app.use(
  "/api/v1/graphql",
  graphqlHTTP({
    schema: schema,
    rootValue: root,
    graphiql: true,
  })
);
// app.use(fileUpload());
// server port ex-5000
http.listen(process.env.PORT || config.port);
logger.log(`Sever start on Port ${config.port}`);
/**
 * REST API V1
 */
/**
 * API main end point
 */
app.get("/api/", async (req, res) => {
  res.status(200).json(respond(true, "REST API working", null));
});
/**
 *  API variation end point
 */
app.get("/api/v1/", async (req, res) => {
  res.status(200).json(respond(true, "REST API working", null));
});
/**
 * User information
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
// TODO  authentication method
app.get("/api/v1/user/:userID", async (req, res) => {
  // authentication  key from  headers
  const authentication_key = req.headers.authentication_key;
  // user ID
  const userID = req.params.userID;
  // user  class
  const userClass = new userComponent();
  const authentication = await userClass.authentication(
    res,
    userID,
    authentication_key
  );
  if (authentication) {
    return (res = authentication);
  }
  await userClass.getUserDataFromDB(userID);
  userClass
    .userID()
    .userFirstName()
    .userLastName()
    .userEmail()
    .getAuthenticationKey();
  res.status(200).json(respond(true, "User Information", userClass.getUser()));
});
/**
 * User information
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
// TODO  authentication method
app.get("/api/v1/user/:userID/computer/:computerKey", async (req, res) => {
  // authentication  key from  headers
  const authentication_key = req.headers.authentication_key;
  // user ID
  const userID = req.params.userID;
  const computerKey = md5(req.params.computerKey);
  const userClass = new userComponent();
  const computerClass = new computerComponent();
  const authentication = await computerClass.authentication(
    res,
    userID,
    authentication_key,
    computerKey
  );
  if (authentication) {
    return (res = authentication);
  }
  // user Information
  // user  class
  await userClass.getUserDataFromDB(userID);
  userClass
    .userID()
    .userFirstName()
    .userLastName()
    .userEmail()
    .getAuthenticationKey();
  res.status(200).json(respond(true, "User Information", userClass.getUser()));
});
/**
 * New user registration
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.post("/api/v1/user/register", async (req, res) => {
  const email = req.body.email;
  const password = md5(req.body.password);
  req.body.password = password;
  const userData = req.body;
  if (
    req.body.email === "" ||
    req.body.password === "" ||
    req.body.firstName === "" ||
    req.body.lastName === ""
  ) {
    res.status(401);
    return res.json(
      respond(false, "username/password/first name/last name required", null)
    );
  }
  if (
    !validator.isAlpha(req.body.firstName) ||
    !validator.isAlpha(req.body.lastName)
  ) {
    res.status(401);
    return res.json(
      respond(false, "First Name and Last Name need to be only string", null)
    );
  }
  if (!validator.isEmail(email)) {
    res.status(401);
    return res.json(respond(false, "Invalid Email", null));
  }
  // search user by user name
  const user = await User.searchEmailUser(email);
  if (!user) {
    const userClass = new userComponent();
    // create  room id
    const ioSocketID = md5(req.body.email + Date.now());
    userData.ioSocketID = ioSocketID;
    userData.authentication_key = md5(ioSocketID);
    const newUser = await User.createUser(userData);
    if (newUser) {
      // user  class
      userClass
        .setUserDataToClass(newUser)
        .userID()
        .userFirstName()
        .userLastName()
        .userEmail()
        .getAuthenticationKey();
      res
        .status(200)
        .json(respond(true, "User Information", userClass.getUser()));
    }
  } else {
    res.status(401);
    res.json(respond(false, "User  Already exit", null));
  }
});
/**
 * User logging {async}
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.post("/api/v1/user/login", async (req, res) => {
  const email = req.body.email;
  const password = md5(req.body.password);
  req.body.password = password;
  if (req.body.email === "" || req.body.password === "") {
    res.status(401);
    return res.json(respond(false, "username/password required", null));
  }
  // wait till the promise resolves (*)
  const userLogin = await User.loginUser(email, password);
  if (userLogin) {
    const userClass = new userComponent();
    const date = new Date();
    userLogin.authentication_key = md5(userLogin._id + date);
    const user = await User.updateUserAuth(userLogin._id, userLogin, {
      new: true,
    });
    userClass
      .setUserDataToClass(user)
      .userID()
      .userFirstName()
      .userLastName()
      .userEmail()
      .getAuthenticationKey();
    res.status(200);
    res.json(respond(true, "User login information", userClass.getUser()));
  } else {
    res.status(401);
    res.json(respond(false, "Invalid User", null));
  }
});
/**
 * Update user password
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.post("/api/v1/user/password/edit", async (req, res) => {
  // authentication  key from  headers
  const authentication_key = req.headers.authentication_key;
  const userID = req.body.userID;
  const newPassword = md5(req.body.newPassword);
  const password = md5(req.body.password);
  if (!(await User.authUser(userID, authentication_key))) {
    res.status(401);
    return res.json(respond(false, "Invalid User", null));
  }
  if (
    req.body.password === "" ||
    req.body.newPassword === "" ||
    req.body.confirmNewPassword === ""
  ) {
    res.status(401);
    return res.json(
      respond(false, "Password/New Password/Confirm Password required", null)
    );
  }
  if (req.body.newPassword !== req.body.confirmNewPassword) {
    res.status(401);
    return res.json(
      respond(false, "New Password and  Confirm Password not equal", null)
    );
  }
  const user = await User.passwordConfirm(userID, password);
  if (!user) {
    res.status(401);
    return res.json(respond(false, "Invalid User", null));
  }
  user.password = newPassword;
  await User.updateUserPassword(userID, user, {});
  res.status(200);
  res.json(respond(true, "Update Done", null));
});
/**
 * update user information
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.post("/api/v1/user/update", async (req, res) => {
  // authentication  key from  headers
  const authentication_key = req.headers.authentication_key;
  const userID = req.body.userID;
  if (!(await User.authUser(userID, authentication_key))) {
    res.status(401);
    return res.json(respond(false, "Invalid User", null));
  }
  if (req.body.firstName === "" || req.body.lastName === "") {
    res.status(401);
    return res.json(respond(false, "First name /Last name required", null));
  }
  await User.updateUserInfo(userID, req.body, {});
  res.status(200);
  res.json(respond(true, "Update Done", null));
});
/**
 * User logout from web
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.get("/api/v1/user/:userID/logout", async (req, res) => {
  const userID = req.params.userID;
  const authentication_key = req.headers.authentication_key;
  if (!(await User.authUser(userID, authentication_key))) {
    res.status(401);
    return res.json(respond(false, "Invalid User", null));
  }
  if (user) {
    const out = {};
    out.authentication_key = md5(userID + new Date()) + "_logout";
    await User.updateUserAuth(userID, out, {});
    res.status(200);
    res.json(respond(true, "logout!", null));
  } else {
    res.status(401);
    res.json(respond(true, "Invalid User", null));
  }
});
/**
 * User logout from computer
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.get("/api/v1/user/:userID/computer/logout", async (req, res) => {
  const userID = req.params.userID;
  const authentication_key = req.headers.authentication_key;
  if (!(await User.authApp(userID, authentication_key))) {
    res.status(401);
    return res.json(respond(false, "Invalid User", null));
  }
  if (user) {
    const out = {};
    out.authentication_key = md5(userID + new Date()) + "_logout";
    await User.updateUserAuth(userID, out, {});
    res.status(200);
    res.json(respond(true, "logout!", null));
  } else {
    res.status(401);
    res.json(respond(true, "Invalid User", null));
  }
});
/**
 * Update allow pubic access status
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.post("/api/v1/user/computer/public/status/update", async (req, res) => {
  const authentication_key = req.headers.authentication_key;
  const computerKey = req.body.computerKey;
  const userID = req.body.userID;
  const publicAccessStatus = req.body.status;
  const user = await User.authUser(userID, authentication_key);
  if (!user) {
    res.status(401);
    return res.json(respond(false, "Invalid User", null));
  }
  let publicAccessKey = computerKey + Date.now();
  if (publicAccessStatus === 1) {
    publicAccessKey = md5(publicAccessKey);
  } else {
    publicAccessKey = md5(publicAccessKey);
  }
  const out = {};
  out.publicAccessKey = publicAccessKey;
  out.publicAccessStatus = publicAccessStatus;
  const computerClassData = await PC.updatePublicAccessStatus(
    computerKey,
    out,
    {
      new: true,
    }
  );
  if (computerClassData) {
    const computerClass = new computerComponent();

    computerClass.setComputer(computerClassData);
    computerClass.getComputerAuthentication();
    computerClass.getPublicAccessKey();
    res.status(200);
    res.json(respond(true, "Update Done", computerClass.getComputer()));
  }
});
/**
 * Update user public key that allow to access other your computer.
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.post("/api/v1/user/computer/public/key/update", async (req, res) => {
  const authentication_key = req.headers.authentication_key;
  const computerKey = req.body.computerKey;
  const userID = req.body.userID;
  const user = await User.authUser(userID, authentication_key);
  if (!user) {
    res.status(401);
    return res.json(respond(false, "Invalid User", null));
  }
  let publicAccessKey = computerKey + Date.now();
  publicAccessKey = md5(publicAccessKey);
  const out = {};
  out.publicAccessKey = publicAccessKey;
  const pc = await PC.newPublicAccessKey(pcID, out, {
    new: true,
  });
  if (pc) {
    res.status(200);
    res.json(respond(true, "Update Done", out));
  }
});
/**
 * Get user all online computers list
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.post("/api/v1/user/computer/online", async (req, res) => {
  const userID = req.body.userID;
  const authentication_key = req.headers.authentication_key;
  const user = await User.authUser(userID, authentication_key);
  if (!user) {
    res.status(401);
    return res.json(respond(false, "Invalid User", null));
  }
  const pc = await PC.getPCByUserIDOnline(userID);
  if (pc) {
    res.status(200);
    res.json(respond(true, "Computer  Information", pc));
  } else {
    res.status(401);
    res.json(respond(false, "Invalid User", null));
  }
});
/**
 * Get all user computer names and IDs
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.post("/api/v1/user/computer", async (req, res) => {
  const userID = req.body.userID;
  const authentication_key = req.headers.authentication_key;
  const user = await User.authUser(userID, authentication_key);
  if (!user) {
    res.status(401);
    return res.json(respond(false, "Invalid User", null));
  }
  const pc = await PC.getPCByUserID(userID);
  if (pc) {
    res.status(200);
    res.json(respond(true, "good call", pc));
  } else {
    res.status(401);
    res.json(respond(false, "Invalid User", null));
  }
});
/**
 * User authentications
 *
 * @param  {json} req
 * req : Request
 * req->
 *
 * @param  {json} res
 * res:Respond
 * res<-
 */
app.post("/api/v1/user/authentication", async (req, res) => {
  const userID = req.body.userID;
  const authentication_key = req.headers.authentication_key;
  const user = await User.authUser(userID, authentication_key);
  if (user) {
    res.status(200);
    res.json(respond(true, "good call", null));
  } else {
    res.status(401);
    res.json(respond(false, "Invalid User", null));
  }
});
const isValidFoldersName = (() => {
  const rg1 = /^[^\\/:\*\?"<>\|]+$/; // forbidden characters \ / : * ? " < > |
  const rg2 = /^\./; // cannot start with dot (.)
  const rg3 = /^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i; // forbidden file names
  return function isValidFoldersName(fname) {
    return rg1.test(fname) && !rg2.test(fname) && !rg3.test(fname);
  };
})();
io.on("connection", (socket) => {
  logger.log(socket.id);
  // TODO this user  login from app need to add few   function to  it
  socket.on("loginPage", () => {});
  // some  user  or  app get disconnected  from serve
  socket.on("disconnect", async () => {
    const pc = await PC.getPCSocketID(socket.id);
    if (pc) {
      const pcInfo = {};
      pcInfo.pcOnline = 0;
      pcInfo.pcSocketID = socket.id;
      await PC.updatePcOnlineStatus(pc._id, pcInfo, {});
    } else {
      const user = await User.getUserSocketId(socket.id);
      if (user) {
        const pc = await PC.getPCUsingID(user.userNowAccessPCID);
        if (pc) {
          const sendUserInfoToApp = {};
          sendUserInfoToApp.status = false;
          io.sockets
            .to(pc.pcSocketID)
            .emit("pcAccessRequest", sendUserInfoToApp);
        }
      }
    }
  });
  /**
   *
   * @param {object} user  user information
   * @param {*} pcKey  Computer key
   * @return {object} new auth key
   */
  async function updateAppUserAuth(user, pcKey) {
    const date = new Date();
    const input = {};
    input.auth = md5(user._id + date + pcKey);
    input.id = user._id;
    const updateUserAuthApp = await PC.updateUserAuthApp(pcKey, input, {
      new: true,
    });
    return updateUserAuthApp;
  }
  app.post("/api/v1/user/computer/login", async (req, res) => {
    const email = req.body.email;
    // const key = req.body.appKey;
    const password = md5(req.body.password);
    const pcKey = md5(req.body.pcKey);
    const pcName = req.body.pcName;
    const platform = req.body.platform;
    req.body.password = password;
    if (req.body.email === "" || req.body.password === "") {
      res.status(401);
      return res.json(respond(false, "username/password required", null));
    }
    // const software = await Software.getActiveSoftware(key);
    // if (software) {
    const computerClass = new computerComponent();
    const user = await User.loginUser(email, password);
    if (user) {
      //  set  if  user  got  new pc  key  or  update  if  got  old one
      const pc = await PC.getPCByUserIDAndPCKey(pcKey, user._id);
      if (pc) {
        const pcInfo = {};
        pcInfo.pcOnline = 1;
        pcInfo.pcSocketID = socket.id;
        await PC.updatePcOnlineStatus(pc._id, pcInfo, {});
        const pcOwner = {};
        pcOwner.pcID = pc._id;
        pcOwner.pcKey = pcKey;
        pcOwner.userID = user._id;
        const pcOwnerData = await PcOwner.pcAndOwner(pcOwner);
        if (pcOwnerData) {
          const userInformation = await User.getUser(user._id);
          await computerClass.updateAppUserAuth(user, pcKey);
          computerClass.getComputerAuthentication();
          await computerClass.getComputerUserInformation(user._id);
          res.status(200);
          res.json(respond(true, "Hello!", computerClass.getComputer()));
        }
      } else {
        const pc = {};
        pc.pcKey = pcKey;
        pc.pcName = pcName;
        pc.pcOnline = 1;
        pc.pcSocketID = socket.id;
        pc.platform = platform;
        pc.publicAccessKey = md5(pcKey + Date.now());
        pc.userID = user._id;
        const pcData = await PC.createNewPC(pc);
        if (pcData) {
          const pcOwner = {};
          pcOwner.pcID = pcData._id;
          pcOwner.pcKey = pcKey;
          pcOwner.userID = user._id;
          const pcOwnerData = await PcOwner.pcAndOwner(pcOwner);
          if (pcOwnerData) {
            await computerClass.updateAppUserAuth(user, pcKey);
            computerClass.getComputerAuthentication();
            await computerClass.getComputerUserInformation(user._id);
            res.status(200);
            res.json(respond(true, "Hello!", computerClass.getComputer()));
          }
        }
      }
      socket.join(user.ioSocketID);
    } else {
      res.status(401);
      res.json(respond(false, "Invalid User", null));
    }
    // } else {
    //   res.status(401);
    //   res.json(respond(false, 'This  software version  no  longer  work', null));
    // }
  });
  // join user from  web
  socket.on("joinFromWeb", async (data) => {
    //  logger.log(data);
    const userID = data.data.userID;
    const authentication_key = data.data.authentication_key;
    const user = await User.authUser(userID, authentication_key);
    if (user) {
      socket.join(user.ioSocketID);
      // update user Current socket ID
      const userData = {};
      userData.userCurrentSocketId = socket.id;
      await User.updateUserCurrentSocketId(user._id, userData, {});
      // pulling data from app
      io.sockets.in(user.ioSocketID).emit("getAppData", {
        data: "start",
      });
    }
  });
  // join user from  app
  socket.on("joinFromApp", async (data) => {
    const authentication_key = data.data.authentication_key;
    const userID = data.data.userID;
    const pcKey = md5(data.data.pcKey);
    const pc = await PC.authApp(userID, authentication_key, pcKey);
    if (pc) {
      const user = await User.getUser(userID);
      if (user) {
        socket.join(user.ioSocketID);
        const pcData = await PC.getPC(pcKey);
        if (pcData) {
          const pcInfo = {};
          pcInfo.pcSocketID = socket.id;
          await PC.updatePcSocketID(pcData._id, pcInfo, {});
        }
      }
    }
  });
  socket.on("pcAccessRequest", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const pcID = input.pcID;
    const user = await User.authUser(userID, authentication_key);
    if (user) {
      // logger.log(user);
      const userInfo = {};
      userInfo.pcID = pcID;
      await User.updateUserNowAccessPCID(userID, userInfo, {});
      const pc = await PC.getPCUsingID(pcID);
      if (pc) {
        //  logger.log(pc);
        const sendUserInfoToApp = {};
        sendUserInfoToApp.email = user.email;
        sendUserInfoToApp.name = user.name;
        sendUserInfoToApp.nameLast = user.nameLast;
        sendUserInfoToApp.status = true;
        sendUserInfoToApp.userID = user._id;
        logger.log(pc.pcSocketID);
        io.sockets.to(pc.pcSocketID).emit("pcAccessRequest", sendUserInfoToApp);
      }
    }
  });
  /**
   * get user socketID
   *
   * @param {object} pcData
   * @param {object} user
   * @param {callback} callback
   */
  async function getUserSocketID(pcData, user) {
    const pc = await PC.getPC(pcData.pcKey);
    if (pc) {
      if (pc.publicAccessStatus === 1) {
        const userAndPc = await UserAndPC.getUserAndPCUsingKey(
          pc.publicAccessKey
        );
        if (userAndPc) {
          const userData = await User.getUser(userAndPc.userID);
          // data that need to return from function
          return userData.ioSocketID;
        } else {
          return user.ioSocketID;
        }
      } else {
        return user.ioSocketID;
      }
    }
  }
  /**
   * Get owner pc  socket id  or public key socket id
   *
   * @param {object} user  user information
   * @param {string} pcKeyPublic computer public access key
   * @param {callback} callback
   */
  async function getPCSocketID(user, pcKeyPublic, callback) {
    if (pcKeyPublic === "") {
      const userPC = await PC.getPCUsingID(user.userNowAccessPCID);
      return userPC.pcSocketID;
    } else {
      const pc = await PC.getPCPublicKey(pcKeyPublic);
      if (pc.publicAccessStatus === 1) {
        return pc.pcSocketID;
      } else {
        const userPC = PC.getPCUsingID(user.userNowAccessPCID);
        return userPC.pcSocketID;
      }
    }
  }
  /**
   * Request  Computer Hard drive list
   */
  socket.on("hDDList", async (input) => {
    console.log(input);
    const userID = input.userID;
    const authentication_key = input.authentication_key;
    const computerKey = md5(input.computerKey);
    const pc = await PC.authApp(userID, authentication_key, computerKey);
    if (pc) {
      const user = await User.getUser(userID);
      if (user) {
        // to  web
        const socketID = await getUserSocketID(pc, user);
        io.sockets.in(socketID).emit("hDDList", input.data);
      }
    }
  });
  /**
   * Request  computer information
   */
  socket.on("pcInfoRequest", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const pcID = input.pcID;
    const user = await User.authUser(userID, authentication_key);
    if (user) {
      const userInfo = {};
      userInfo.pcID = pcID;
      await User.updateUserNowAccessPCID(userID, userInfo, {});
      const pc = await PC.getPCUsingID(pcID);
      if (pc) {
        const sendUserInfoToApp = {};
        sendUserInfoToApp.email = user.email;
        sendUserInfoToApp.name = user.name;
        sendUserInfoToApp.nameLast = user.nameLast;
        sendUserInfoToApp.status = true;
        sendUserInfoToApp.userID = user._id;
        io.sockets.to(pc.pcSocketID).emit("pcInfoRequest", sendUserInfoToApp);
      }
    }
  });
  /**
   *
   */
  socket.on("pcInfo", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const pcKey = md5(input.pcKey);
    const pc = await PC.authApp(userID, authentication_key, pcKey);
    if (pc) {
      const user = await User.getUser(userID);
      if (user) {
        // to  web
        const socketID = await getUserSocketID(pc, user);
        io.sockets.in(socketID).emit("pcInfo", input.pcInfo);
      }
    }
  });
  /**
   * Request for open folder
   */
  socket.on("openFolder", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const pcKeyPublic = input.pcKeyPublic;
    const user = await User.authUser(userID, authentication_key);
    if (user) {
      const socket = await getPCSocketID(user, pcKeyPublic);
      io.sockets.to(socket).emit("openFolderRequest", input);
    }
  });
  // from  pc
  socket.on("sendOpenFolderRequest", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const pcKey = md5(input.pcKey);
    const pc = await PC.authApp(userID, authentication_key, pcKey);
    if (pc) {
      const user = await User.getUser(userID);
      if (user) {
        // to  web
        const socketID = await getUserSocketID(pc, user);
        io.sockets.in(socketID).emit("openFolderRequestToWeb", input.data);
      }
    }
  });
  // get  access for  public pc key
  /**
   * User
   */
  app.post("/api/v1/computer/public/access", async (req, res) => {
    const authentication_key = req.headers.authentication_key;
    const userID = req.body.userID;
    const pcKeyPublic = req.body.pcKeyPublic;
    const user = await User.authUser(userID, authentication_key);
    if (!user) {
      res.status(401);
      return res.json(respond(false, "Invalid User", null));
    }
    const sendUserInfoToApp = {};
    sendUserInfoToApp.email = user.email;
    sendUserInfoToApp.name = user.name;
    sendUserInfoToApp.nameLast = user.nameLast;
    sendUserInfoToApp.userID = user._id;
    const pcInfo = await PC.getPCPublicKey(pcKeyPublic);
    if (pcInfo) {
      if (pcInfo.publicAccessStatus === 1) {
        const pc = {};
        pc.pcKeyPublic = pcKeyPublic;
        pc.userID = id;
        await UserAndPC.createNewUserAndPC(pc);
        io.sockets
          .to(pcInfo.pcSocketID)
          .emit("pcAccessRequest", sendUserInfoToApp);
      }
    }
  });
  // validate folder name
  app.post("/api/v1/user/computer/validateFolderName", async (req, res) => {
    const authentication_key = req.headers.authentication_key;
    const createFolderName = req.body.createFolderName;
    const userID = req.body.userID;
    const path = req.body.path;
    const pcKeyPublic = req.body.pcKeyPublic;
    const user = await User.authUser(userID, authentication_key);
    if (user) {
      res.status(200);
      if (!isValidFoldersName(createFolderName)) {
        res.json(
          respond(
            isValidFoldersName(createFolderName),
            "Invalid Folder name",
            null
          )
        );
      } else {
        res.json(respond(true, "", null));
        const output = {};
        output.path = path;
        output.createFolderName = createFolderName;
        const socket = await getPCSocketID(user, pcKeyPublic);
        io.sockets.to(socket).emit("validateFolderName", output);
      }
    }
  });
  // from  pc  send  information after create  folder
  socket.on("folderCreateCallback", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const computerKey = md5(input.computerKey);
    const computer = await PC.authApp(userID, authentication_key, computerKey);
    if (computer) {
      const user = await User.getUser(userID);
      if (user) {
        const socketID = await getUserSocketID(computer, user);
        io.sockets.in(socketID).emit("folderCreateCallbackToWeb", input.data);
      }
    }
  });

  // Download file request
  socket.on("downloadFileRequest", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const pcKeyPublic = input.pcKeyPublic;
    const user = await User.authUser(userID, authentication_key);
    if (user) {
      const socket = await getPCSocketID(user, pcKeyPublic);
      io.sockets.to(socket).emit("downloadFileRequestToPC", input);
    }
  });

  // Download file request
  socket.on("downloadFileInfoRequestCallBack", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const computerKey = md5(input.computerKey);
    const computer = await PC.authApp(userID, authentication_key, computerKey);
    if (computer) {
      const user = await User.getUser(userID);
      if (user) {
        const socketID = await getUserSocketID(computer, user);
        io.sockets.in(socketID).emit("downloadFileInfoSendToWeb", input.data);
      }
    }
  });

  //get data from app and send to web
  socket.on("sendFileChunksToServer", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const computerKey = md5(input.computerKey);
    const computer = await PC.authApp(userID, authentication_key, computerKey);
    if (computer) {
      const user = await User.getUser(userID);
      if (user) {
        const socketID = await getUserSocketID(computer, user);
        io.sockets.in(socketID).emit("sendFileChunksToWeb", input.data);
      }
    }
  });

  //requestScreenShot

  socket.on("requestScreenShot", async (input) => {
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const pcKeyPublic = "";
    const user = await User.authUser(userID, authentication_key);

    if (user) {
      const socket = await getPCSocketID(user, pcKeyPublic);

      io.sockets.to(socket).emit("requestScreenShotFromPC", input);
    }
  });

  //sendScreenShotToServer

  socket.on("sendScreenShotToServer", async (input) => {
    //  console.log(input.authentication_key,input.userID,input.computerKey);
    const authentication_key = input.authentication_key;
    const userID = input.userID;
    const pcKey = md5(input.computerKey);

    const pc = await PC.authApp(userID, authentication_key, pcKey);
    if (pc) {
      //  console.log(pc)
      const user = await User.getUser(userID);
      if (user) {
        // to  web

        //  console.log(user)
        const socketID = await getUserSocketID(pc, user);
        io.sockets.in(socketID).emit("sendScreenShotToWeb", input.data);
      }
    }
  });
});


================================================
FILE: thisMyPCServer/models/PCOwner.js
================================================
const mongoose = require('mongoose');
const PCOwner = mongoose.Schema({
  userID: {
    type: String,
    required: true,
  },
  pcID: { // User Personal Computer ID
    type: String,
    required: true,
  },
  pcKey: { // Unique Key that belong to pc
    type: String,
    required: true,
  },
  status: {
    type: Number,
    required: true,
    default: 1, //
  },
  loginDate: {
    type: Date,
    default: Date.now,
  },
});
const pCOwner = module.exports = mongoose.model('pcOwner', PCOwner);
// create   PC and pc Owner
module.exports.pcAndOwner = function(pcOwner) {
  return new Promise((resolve,reject)=>{
  pCOwner.create({
    'userID': pcOwner.userID,
    'pcID': pcOwner.pcID,
    'pcKey': pcOwner.pcKey,
  }, function (err, owner) {
    resolve(owner);
        });
    }).then(result=>{return result;});
};


================================================
FILE: thisMyPCServer/models/UserLog.js
================================================
const mongoose = require('mongoose');
const pcLog = mongoose.Schema({
  userID: {
    type: String,
    required: true,
  },
  pcID: {
    type: String,
    required: true,
  },
  message: {
    type: String,
    required: true,
  },
  logDate: {
    type: Date,
    default: Date.now,
  },
});
const PCLog = module.exports = mongoose.model('pcAndlog', userAndPC);
// create  PC Log
module.exports.createPCLog = function(pc, callback) {
  pcLog.create({
    'userID': pc.userID,
    'pcID': pc.pcID,
    'message': pc.message,
  }, callback);
};
//  get  pc log  using pc ID
module.exports.getPCLog = function(pcID, callback) {
  UserAndPC.find().where('pcID', pcID).exec(callback);
};


================================================
FILE: thisMyPCServer/models/admin.js
================================================
const mongoose = require('mongoose');
// db.createCollection('Admin')
const adminSchema = mongoose.Schema({
  userID: {
    type: String,
    required: true,
  },
  status: {
    type: Number,
    required: true,
    default: 1, //
  },
});
const Admin = module.exports = mongoose.model('Admin', adminSchema);
// creat  user
module.exports.createAdmin = function(admin, callback) {
  Admin.create({
    'userID': admin.id,
  }, callback);
};
// search  user
module.exports.searchAdmin = function(id, callback) {
  Admin.findOne().where({
    'userID': id,
    'status': 1,
  }).exec(callback);
};
// auth  admin
module.exports.authAdmin = function(id, callback) {
  Admin.findOne().where({
    'userID': id,
  }).exec(callback);
};


================================================
FILE: thisMyPCServer/models/appNotification.js
================================================
const mongoose = require('mongoose');
const appNotification = mongoose.Schema({
  softWareID: {
    type: String,
    required: true,
  },
  message: {
    type: String,
    required: true,
  },
  messageType: {
    type: String,
    required: true,
  },
  softWareID: {
    type: String,
    required: true,
  },
  dismissible: {
    type: Number,
    required: true,
    default: 1, //
  },
  status: {
    type: Number,
    required: true,
    default: 1, //
  },
  addDate: {
    type: Date,
    default: Date.now,
  },
});
const AppNotification = module.exports = mongoose.model('userAndPC', appNotification);
// create   notification
module.exports.pcAndOwner = function(notification, callback) {
  AppNotification.create({
    'softWareID': notification.softWareID,
    'message': notification.message,
    'messageType': notification.messageType,
    'dismissible': notification.dismissible,
  }, callback);
};


================================================
FILE: thisMyPCServer/models/pc.js
================================================
const mongoose = require('mongoose');
const pcSchema = mongoose.Schema({
  pcKey: { // Personal Computer Unique Key
    type: String,
    required: true,
  },
  userID: { // User ID
    type: String,
    required: true,
  },
  status: { 
    type: Number,
    required: true,
    default: 1, //
  },
  startDate: {
    type: Date,
    default: Date.now,
  },
  publicAccessKey: { //Personal computer Public Access Key
    type: String,
    default: Date.now,
    unique: true,
  },
  publicAccessStatus: {
    type: Number,
    required: true,
    default: 0, //
  },
  pcName: { // Person Computer name
    type: String,
  },
  platform: { // Computer OS
    type: String,
  },
  pcOnline: { // Computer offline online
    type: Number,
    required: true,
    default: 0, //
  },
  pcSocketID: { // Computer  socket ID
    type: String,
  },
  authApp: { // Auth key from App side
    type: String,
  },
});
const PC = module.exports = mongoose.model('pc', pcSchema);
// create   pc
module.exports.createNewPC = function(pc) {
  return new Promise((resolve,reject)=>{
  PC.create({
    'pcKey': pc.pcKey,
    'userID': pc.userID,
    'pcName': pc.pcName,
    'platform': pc.platform,
    'publicAccessKey': pc.publicAccessKey,
    'pcOnline': pc.pcOnline,
    'pcSocketID': pc.pcSocketID,
  }, function (err, pc) {
    resolve(pc);
        });
      }).then(result=>{return result;});
};
//  get  pc using _id
module.exports.getPCUsingID = function(key) {
  return new Promise((resolve,reject)=>{
  PC.findOne().where('_id', key).exec(function (err, pc) {
    resolve(pc);
        });
    }).then(result=>{return result;});
};
//  get all pc
module.exports.getAllPC = function(limit, callback) {
  PC.find(callback).limit(limit);
};
//  get  pc using pcKey
module.exports.getPC = function(key) {
  return new Promise((resolve,reject)=>{
  PC.findOne().where('pcKey', key).exec(function (err, pc) {
    resolve(pc);
        });
    }).then(result=>{return result;});
}; //  get  pc using socket ID
module.exports.getPCSocketID = function(pcSocketID) {
  return new Promise((resolve,reject)=>{
  PC.findOne().where('pcSocketID', pcSocketID).exec(function (err, pc) {
    resolve(pc);
        });
    }).then(result=>{return result;});
};
//  get  pc using pcKey and user ID
module.exports.getPCByUserIDAndPCKey = function(key, userID) {
  return new Promise((resolve,reject)=>{
  PC.findOne().where({
    'pcKey': key,
    'userID': userID,
  }).exec(function (err, pc) {
    resolve(pc);
        });
    }).then(result=>{return result;});
};
//  get all  pc using  user id
module.exports.getPCByUserID = function(userID) {
  return new Promise((resolve,reject)=>{
  PC.find().where({
    'userID': userID,
    'status': 1,
  }).exec(function (err, pc) {
    resolve(pc);
        });
    }).then(result=>{return result;});
};
//  get all online  pc using  user id
module.exports.getPCByUserIDOnline = function(userID) {
  return new Promise((resolve,reject)=>{
  PC.find().select('_id pcName platform email').where({
    'userID': userID,
    'status': 1,
    'pcOnline': 1,
  }).exec(function (err, pc) {
resolve(pc);
    });
}).then(result=>{return result;});
}; //  get   pc using  pc id
module.exports.getPCByPCID = function(pcID, callback) {
  PC.findOne().where({
    'pcID': pcID,
    'status': 1,
  }).exec(callback);
};
//  generate public access key
module.exports.newPublicAccessKey = function(pcID, pc) {
  return new Promise((resolve,reject)=>{
  const query = {
    _id: pcID,
  };
  const update = {
    publicAccessKey: pc.key,
  };
  PC.findOneAndUpdate(query, update, option, function (err , pc) {
    resolve(pc);
  });
}).then(result=>{return result;});
};
//  update public access key access
module.exports.updatePublicAccessStatus = function(pcID, pc, option) {
return new Promise((resolve,reject)=>{
  const query = {
    _id: pcID,
  };
  const update = {
    publicAccessStatus: pc.publicAccessStatus,
    publicAccessKey: pc.publicAccessKey,
  };
  PC.findOneAndUpdate(query, update, option, function (err , pc) {
    resolve(pc);
  });
}).then(result=>{return result;});
};
//  update PC  online status
module.exports.updatePcOnlineStatus = function(pcID, pc, option) {
  return new Promise((resolve,reject)=>{
  const query = {
    _id: pcID,
  };
  const update = {
    pcOnline: pc.pcOnline,
    pcSocketID: pc.pcSocketID,
  };
  PC.findOneAndUpdate(query, update, option, function (err , pc) {
    resolve(pc);
  });
}).then(result=>{return result;});
};
//  update PC  socket ID
module.exports.updatePcSocketID = function(pcID, pc, option) { 
  return  new Promise((resolve, reject) => {
  const query = {
    _id: pcID,
  };
  const update = {
    pcSocketID: pc.pcSocketID,
  };
  PC.findOneAndUpdate(query, update, option, function (err , pc) {
    resolve(pc);
  });
}).then(result=>{return result;});  
};
// user app update auth from pc key
module.exports.updateUserAuthApp = function(pcKey, pc, option) {
  return  new Promise((resolve, reject) => {
  const query = {
    pcKey: pcKey,
    userID: pc.id,
  };
  const update = {
    authApp: pc.auth,
  };
  PC.findOneAndUpdate(query, update, option, function (err , pc) {
    resolve(pc);
  });
}).then(result=>{return result;});
};
// auth  App
module.exports.authApp = function(id, auth, pcKey) {
  return  new Promise((resolve, reject) => {
  PC.findOne().where({
    'userID': id,
    'authApp': auth,
    'pcKey': pcKey,
  }).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
};
//  get  pc using public access key
module.exports.getPCPublicKey = function(key) {
  return  new Promise((resolve, reject) => {
  PC.findOne().where('publicAccessKey', key).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
};
// all active   user
module.exports.countPC = function(callback) {
  PC.findOne().where({
    'status': 1,
  }).count(callback);
};

================================================
FILE: thisMyPCServer/models/software.js
================================================
const mongoose = require('mongoose');
const softwareSchema = mongoose.Schema({
  version: {
    type: String,
    required: true,
  },
  versionKey: {
    type: String,
    required: true,
  },
  status: {
    type: Number,
    required: true,
    default: 1, //
  },
  released_date: {
    type: Date,
    default: Date.now,
  },
});
const Software = module.exports = mongoose.model('software', softwareSchema);
// create   software
module.exports.createSoftwareVersion = function(software, callback) {
  Software.create({
    'version': software.version,
    'versionKey': software.versionKey,
    'status': software.status,
  }, callback);
};
//  get  software using id
module.exports.getSoftware = function(key, callback) {
  Software.findOne().where('versionKey', key).exec(callback);
};
//  get active   software using id
module.exports.getActiveSoftware = function(key) {
  return new Promise((resolve,reject)=>{
  Software.findOne().where({
    'versionKey': key,
    'status': 1,
  }).exec(function (err, software) {
    resolve(software);
        });
    }).then(result=>{return result;});
};
//  get  all software
module.exports.getSoftwares = function(data, callback) {
  Software.find(callback).limit(data.limit);
};

================================================
FILE: thisMyPCServer/models/user.js
================================================
const mongoose = require('mongoose');
const userSchema = mongoose.Schema({
  name: { // User name
    type: String,
    required: true,
  },
  nameLast: { // TODO Remove nameLast from next release
    type: String,
  },
  email: { // User Email
    type: String,
    required: true,
  },
  password: { // User Password
    type: String,
    required: true,
  },
  created_date: { // User Account Created Date
    type: Date,
    default: Date.now,
  },
  last_login: { // User last Login to System
    type: Date,
    default: Date.now,
  },
  auth: { // User Auth key
    type: String,
  },
  ioSocketID: { // TODO need to  remove  from next release
    type: String,
  },
  authApp: {
    type: String,
  },
  status: { // User Status 1,0
    type: Number,
    required: true,
    default: 1, //
  },
  userNowAccessPCID: {// User currently accessing PC ID
    type: String,
  },
  userCurrentSocketId: { // User current SocketID
    type: String,
  },
});
const User = module.exports = mongoose.model('Users', userSchema);
//  get  users
module.exports.getUsers = function (limit, callback) {
  User.find(callback).limit(limit);
};
//  get  user using id
module.exports.getUser = function (id) {
  return  new Promise((resolve, reject) => {
  User.findOne().where('_id', id).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
}; //  get  user using id for  public  use
module.exports.getUserPublic = function (id) {
  return  new Promise((resolve, reject) => {
  User.findOne().select('_id name nameLast email').where('_id', id).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
};
// search  user
module.exports.searchEmailUser =  function (email) {
  return  new Promise((resolve, reject) => {
  User.findOne().where('email', email).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
};
// login  user
module.exports.loginUser =  function (email, password) {
  return  new Promise((resolve, reject) => {
    User.findOne().where({
      'email': email,
      'password': password,
      'status': 1,
    }).exec(function(err,result){
      resolve(result);
    });
  }).then(result=>{return result});
};
// confirm user  password
module.exports.passwordConfirm = function (id, password, callback) {
  return  new Promise((resolve, reject) => {
  User.findOne().where({
    '_id': id,
    'password': password,
    'status': 1,
  }).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
};
// auth  user
module.exports.authUser = function (id, auth) {
  return  new Promise((resolve, reject) => {
  User.findOne().where({
    '_id': id,
    'auth': auth,
  }).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
};
// auth  App
module.exports.authApp = function (id, auth) {
  return  new Promise((resolve, reject) => {
  User.findOne().where({
    '_id': id,
    'authApp': auth,
  }).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
};
// create   user OLD
module.exports.createUser = function (user) {
  return  new Promise((resolve, reject) => {
  User.create({
    'name': user.firstName,
    'nameLast': user.lastName,
    'email': user.email,
    'password': user.password,
    'ioSocketID': user.ioSocketID,
    'auth': user.authentication_key,
  }, function(err,user){
    resolve(user);
  });
}).then(user=>{return user});
};
//  update  user  info
module.exports.updateUserInfo = function (id, user, option) {
  return  new Promise((resolve, reject) => {
  const query = {
    _id: id,
  };
  const update = {
    name: user.firstName,
    nameLast: user.lastName,
  };
  User.findOneAndUpdate(query, update, option, function(err,user){
    resolve(user);
  });
}).then(user=>{return user});
}; //  update  user  userCurrentSocketId
module.exports.updateUserCurrentSocketId = function (id, user, option) {
  return  new Promise((resolve, reject) => {
  const query = {
    _id: id,
  };
  const update = {
    userCurrentSocketId: user.userCurrentSocketId,
  };
  User.findOneAndUpdate(query, update, option, function(err,user){
    resolve(user);
  });
}).then(user=>{return user});
};
//  get  user using SocketId
module.exports.getUserSocketId = function (userCurrentSocketId) {
  return  new Promise((resolve, reject) => {
  User.findOne().where('userCurrentSocketId', userCurrentSocketId).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
};
//  update  user  password
module.exports.updateUserPassword = function (id, user, option) {
  return  new Promise((resolve, reject) => {
  const query = {
    _id: id,
  };
  const update = {
    password: user.password,
  };
  User.findOneAndUpdate(query, update, option, function (err,data) { 
    resolve(data);
   });
 } );
};
// user update auth
module.exports.updateUserAuth = function (id, user, option) {
  return  new Promise((resolve, reject) => {
  const query = {
    _id: id,
  };
  const update = {
    auth: user.authentication_key,
  };
  User.findOneAndUpdate(query, update, option, function (err , data) {
    resolve(data);
  });
  });
};
// user update  status
module.exports.updateUserStatus = function (id, user, option, callback) {
  const query = {
    _id: id,
  };
  const update = {
    status: user.status,
  };
  User.findOneAndUpdate(query, update, option, callback);
}; // user update  current pc id
module.exports.updateUserNowAccessPCID = function (id, user, option, callback) {
  return  new Promise((resolve, reject) => {
  const query = {
    _id: id,
  };
  const update = {
    userNowAccessPCID: user.pcID,
  };
  User.findOneAndUpdate(query, update, option, function (err,data) { resolve(data);  });
  });
};
// user  info  (My account)
// auth  user
module.exports.userInfo = function (id, auth) {
  return  new Promise((resolve, reject) => {
  User.findOne().select({
    name: 1,
    email: 1,
    status: 1,
    nameLast: 1,
  }).where({
    '_id': id,
    'auth': auth,
  }).exec(function(err,result){
    resolve(result);
  });
}).then(result=>{return result});
};
// all active   user
module.exports.countUsers = function (callback) {
  User.findOne().where({
    'status': 1,
  }).count(callback);
};

================================================
FILE: thisMyPCServer/models/userAndPC.js
================================================
const mongoose = require('mongoose');
const userAndPC = mongoose.Schema({
  userID: {
    type: String,
    required: true,
  },
  pcKeyPublic: { // Personal Computer public Access Key
    type: String,
    required: true,
  },
  status: {
    type: Number,
    required: true,
    default: 1, //
  },
  released_date: {
    type: Date,
    default: Date.now,
  },
});
const UserAndPC = module.exports = mongoose.model('userAndPC', userAndPC);
// create   User and pc public access
module.exports.createNewUserAndPC = function(userPC, callback) {
  return new Promise((resolve,reject)=>{
  UserAndPC.create({
    'userID': userPC.userID,
    'pcKeyPublic': userPC.pcKeyPublic,
  }, callback);
});
};
//  get  pc  using pc key
module.exports.getUserAndPCUsingKey = function(key) {
  return new Promise((resolve,reject)=>{
  UserAndPC.findOne().where('pcKeyPublic', key).exec(function (err, result) {
    resolve(result);
        });
    }).then(result=>{return result;});
};

================================================
FILE: thisMyPCServer/mongo.MD
================================================
# MongoDB Commands Cheatsheet

	db.help()                    help on db methods
	db.mycoll.help()             help on collection methods
	sh.help()                    sharding helpers
	rs.help()                    replica set helpers
	help admin                   administrative help
	help connect                 connecting to a db help
	help keys                    key shortcuts
	help misc                    misc things to know
	help mr                      mapreduce

	show dbs                     show database names
	show collections             show collections in current database
	show users                   show users in current database
	show profile                 show most recent system.profile entries with time >= 1ms
	show logs                    show the accessible logger names
	show log [name]              prints out the last segment of log in memory, 'global' is default
	use <db_name>                set current database
	db.foo.find()                list objects in collection foo
	db.foo.find( { a : 1 } )     list objects in foo where a == 1
	it                           result of the last line evaluated; use to further iterate
	DBQuery.shellBatchSize = x   set default number of items to display on shell
	exit                         quit the mongo shell

	db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ]
	db.auth(username, password)
	db.cloneDatabase(fromhost)
	db.commandHelp(name) returns the help for the command
	db.copyDatabase(fromdb, todb, fromhost)
	db.createCollection(name, { size : ..., capped : ..., max : ... } )
	db.createUser(userDocument)
	db.currentOp() displays currently executing operations in the db
	db.dropDatabase()
	db.eval() - deprecated
	db.fsyncLock() flush data to disk and lock server for backups
	db.fsyncUnlock() unlocks server following a db.fsyncLock()
	db.getCollection(cname) same as db['cname'] or db.cname
	db.getCollectionInfos([filter]) - returns a list that contains the names and options of the db's collections
	db.getCollectionNames()
	db.getLastError() - just returns the err msg string
	db.getLastErrorObj() - return full status object
	db.getLogComponents()
	db.getMongo() get the server connection object
	db.getMongo().setSlaveOk() allow queries on a replication slave server
	db.getName()
	db.getPrevError()
	db.getProfilingLevel() - deprecated
	db.getProfilingStatus() - returns if profiling is on and slow threshold
	db.getReplicationInfo()
	db.getSiblingDB(name) get the db at the same server as this one
	db.getWriteConcern() - returns the write concern used for any operations on this db, inherited from server object if set
	db.hostInfo() get details about the server's host
	db.isMaster() check replica primary status
	db.killOp(opid) kills the current operation in the db
	db.listCommands() lists all the db commands
	db.loadServerScripts() loads all the scripts in db.system.js
	db.logout()
	db.printCollectionStats()
	db.printReplicationInfo()
	db.printShardingStatus()
	db.printSlaveReplicationInfo()
	db.dropUser(username)
	db.repairDatabase()
	db.resetError()
	db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into { cmdObj : 1 }
	db.serverStatus()
	db.setLogLevel(level,<component>)
	db.setProfilingLevel(level,<slowms>) 0=off 1=slow 2=all
	db.setWriteConcern( <write concern doc> ) - sets the write concern for writes to the db
	db.unsetWriteConcern( <write concern doc> ) - unsets the write concern for writes to the db
	db.setVerboseShell(flag) display extra information in shell output
	db.shutdownServer()
	db.stats()
	db.version() current version of the server

	db.User.find().help() - show DBCursor help
	db.User.bulkWrite( operations, <optional params> ) - bulk execute write operations, optional parameters are: w, wtimeout, j
	db.User.count( query = {}, <optional params> ) - count the number of documents that matches the query, optional parameters are: limit, skip, hint, maxTimeMS
	db.User.copyTo(newColl) - duplicates collection by copying all documents to newColl; no indexes are copied.
	db.User.convertToCapped(maxBytes) - calls {convertToCapped:'User', size:maxBytes}} command
	db.User.createIndex(keypattern[,options])
	db.User.createIndexes([keypatterns], <options>)
	db.User.dataSize()
	db.User.deleteOne( filter, <optional params> ) - delete first matching document, optional parameters are: w, wtimeout, j
	db.User.deleteMany( filter, <optional params> ) - delete all matching documents, optional parameters are: w, wtimeout, j
	db.User.distinct( key, query, <optional params> ) - e.g. db.User.distinct( 'x' ), optional parameters are: maxTimeMS
	db.User.drop() drop the collection
	db.User.dropIndex(index) - e.g. db.User.dropIndex( "indexName" ) or db.User.dropIndex( { "indexKey" : 1 } )
	db.User.dropIndexes()
	db.User.ensureIndex(keypattern[,options]) - DEPRECATED, use createIndex() instead
	db.User.explain().help() - show explain help
	db.User.reIndex()
	db.User.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.
						      e.g. db.User.find( {x:77} , {name:1, x:1} )
	db.User.find(...).count()
	db.User.find(...).limit(n)
	db.User.find(...).skip(n)
	db.User.find(...).sort(...)
	db.User.findOne([query], [fields], [options], [readConcern])
	db.User.findOneAndDelete( filter, <optional params> ) - delete first matching document, optional parameters are: projection, sort, maxTimeMS
	db.User.findOneAndReplace( filter, replacement, <optional params> ) - replace first matching document, optional parameters are: projection, sort, maxTimeMS, upsert, returnNewDocument
	db.User.findOneAndUpdate( filter, update, <optional params> ) - update first matching document, optional parameters are: projection, sort, maxTimeMS, upsert, returnNewDocument
	db.User.getDB() get DB object associated with collection
	db.User.getPlanCache() get query plan cache associated with collection
	db.User.getIndexes()
	db.User.group( { key : ..., initial: ..., reduce : ...[, cond: ...] } )
	db.User.insert(obj)
	db.User.insertOne( obj, <optional params> ) - insert a document, optional parameters are: w, wtimeout, j
	db.User.insertMany( [objects], <optional params> ) - insert multiple documents, optional parameters are: w, wtimeout, j
	db.User.mapReduce( mapFunction , reduceFunction , <optional params> )
	db.User.aggregate( [pipeline], <optional params> ) - performs an aggregation on a collection; returns a cursor
	db.User.remove(query)
	db.User.replaceOne( filter, replacement, <optional params> ) - replace the first matching document, optional parameters are: upsert, w, wtimeout, j
	db.User.renameCollection( newName , <dropTarget> ) renames the collection.
	db.User.runCommand( name , <options> ) runs a db command with the given name where the first param is the collection name
	db.User.save(obj)
	db.User.stats({scale: N, indexDetails: true/false, indexDetailsKey: <index key>, indexDetailsName: <index name>})
	db.User.storageSize() - includes free space allocated to this collection
	db.User.totalIndexSize() - size in bytes of all the indexes
	db.User.totalSize() - storage allocated for all data and indexes
	db.User.update( query, object[, upsert_bool, multi_bool] ) - instead of two flags, you can pass an object with fields: upsert, multi
	db.User.updateOne( filter, update, <optional params> ) - update the first matching document, optional parameters are: upsert, w, wtimeout, j
	db.User.updateMany( filter, update, <optional params> ) - update all matching documents, optional parameters are: upsert, w, wtimeout, j
	db.User.validate( <full> ) - SLOW
	db.User.getShardVersion() - only for use with sharding
	db.User.getShardDistribution() - prints statistics about data distribution in the cluster
	db.User.getSplitKeysForChunks( <maxChunkSize> ) - calculates split points over all chunks and returns splitter function
	db.User.getWriteConcern() - returns the write concern used for any operations on this collection, inherited from server/db if set
	db.User.setWriteConcern( <write concern doc> ) - sets the write concern for writes to the collection
	db.User.unsetWriteConcern( <write concern doc> ) - unsets the write concern for writes to the collection
	


================================================
FILE: thisMyPCServer/package.json
================================================
{
  "name": "mid",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "Supun",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.18.3",
    "dotenv": "^10.0.0",
    "express": "^4.16.4",
    "express-fileupload": "^1.1.6",
    "express-graphql": "^0.9.0",
    "express-validator": "^5.3.1",
    "graphql": "^14.4.2",
    "js-md5": "^0.7.3",
    "mongodb": "^3.5.5",
    "mongoose": "^5.9.7",
    "nodemailer": "^6.0.0",
    "socket.io": "^2.1.1",
    "validator": "^10.11.0"
  },
  "devDependencies": {
    "eslint": "^5.16.0",
    "eslint-config-google": "^0.13.0"
  }
}


================================================
FILE: thisMyPCWeb/angular-deprecated/.editorconfig
================================================
# Editor configuration, see https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
max_line_length = off
trim_trailing_whitespace = false


================================================
FILE: thisMyPCWeb/angular-deprecated/.gitignore
================================================
# See http://help.github.com/ignore-files/ for more about ignoring files.

# compiled output
/dist
/tmp
/out-tsc

# dependencies
/node_modules

# profiling files
chrome-profiler-events.json
speed-measure-plugin.json

# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
yarn-error.log
testem.log
/typings

# System Files
.DS_Store
Thumbs.db


================================================
FILE: thisMyPCWeb/angular-deprecated/README.md
=============================
Download .txt
gitextract_bb8nwbbk/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   └── workflows/
│       └── yarn-build-test.yml
├── .gitignore
├── .gitlab-ci.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── thisMyPCApp/
│   ├── .eslintrc.js
│   ├── README.md
│   ├── assets/
│   │   ├── css/
│   │   │   ├── home.css
│   │   │   └── login.css
│   │   ├── js/
│   │   │   ├── home.js
│   │   │   └── login.js
│   │   └── libs/
│   │       └── socket.io.js
│   ├── html/
│   │   ├── index.html
│   │   └── login.html
│   ├── log.txt
│   ├── main.js
│   ├── package.json
│   └── setup.js
├── thisMyPCServer/
│   ├── .eslintrc.js
│   ├── .gitignore
│   ├── components/
│   │   ├── api.components.js
│   │   ├── computer.components.js
│   │   ├── logger.js
│   │   └── user.components.js
│   ├── config/
│   │   ├── config.js
│   │   └── db.js
│   ├── delete_code_from_index.txt
│   ├── example.env
│   ├── index.js
│   ├── models/
│   │   ├── PCOwner.js
│   │   ├── UserLog.js
│   │   ├── admin.js
│   │   ├── appNotification.js
│   │   ├── pc.js
│   │   ├── software.js
│   │   ├── user.js
│   │   └── userAndPC.js
│   ├── mongo.MD
│   └── package.json
├── thisMyPCWeb/
│   ├── angular-deprecated/
│   │   ├── .editorconfig
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── angular.json
│   │   ├── e2e/
│   │   │   ├── protractor.conf.js
│   │   │   ├── src/
│   │   │   │   ├── app.e2e-spec.ts
│   │   │   │   └── app.po.ts
│   │   │   └── tsconfig.e2e.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── app-routing.module.ts
│   │   │   │   ├── app.component.css
│   │   │   │   ├── app.component.html
│   │   │   │   ├── app.component.spec.ts
│   │   │   │   ├── app.component.ts
│   │   │   │   ├── app.module.ts
│   │   │   │   ├── auth/
│   │   │   │   │   ├── auth.guard.spec.ts
│   │   │   │   │   ├── auth.guard.ts
│   │   │   │   │   ├── auth.service.spec.ts
│   │   │   │   │   └── auth.service.ts
│   │   │   │   ├── components/
│   │   │   │   │   ├── account/
│   │   │   │   │   │   ├── account.component.css
│   │   │   │   │   │   ├── account.component.html
│   │   │   │   │   │   ├── account.component.spec.ts
│   │   │   │   │   │   └── account.component.ts
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── config.js
│   │   │   │   │   ├── home/
│   │   │   │   │   │   ├── home.component.css
│   │   │   │   │   │   ├── home.component.html
│   │   │   │   │   │   ├── home.component.spec.ts
│   │   │   │   │   │   └── home.component.ts
│   │   │   │   │   └── system/
│   │   │   │   │       ├── system.component.css
│   │   │   │   │       ├── system.component.html
│   │   │   │   │       ├── system.component.spec.ts
│   │   │   │   │       └── system.component.ts
│   │   │   │   └── guards/
│   │   │   │       └── auth-guard.service.ts
│   │   │   ├── assets/
│   │   │   │   ├── css/
│   │   │   │   │   ├── introjs.css
│   │   │   │   │   └── main.css
│   │   │   │   ├── fonts/
│   │   │   │   │   └── flaticon/
│   │   │   │   │       ├── backup.txt
│   │   │   │   │       └── font/
│   │   │   │   │           ├── _flaticon.scss
│   │   │   │   │           ├── flaticon.css
│   │   │   │   │           └── flaticon.html
│   │   │   │   ├── images/
│   │   │   │   │   └── feedback/
│   │   │   │   │       ├── Jacob-Bogers.jfif
│   │   │   │   │       └── aditya.jfif
│   │   │   │   └── js/
│   │   │   │       └── intro.js
│   │   │   ├── browserslist
│   │   │   ├── environments/
│   │   │   │   ├── environment.prod.ts
│   │   │   │   └── environment.ts
│   │   │   ├── index.html
│   │   │   ├── karma.conf.js
│   │   │   ├── main.ts
│   │   │   ├── polyfills.ts
│   │   │   ├── styles.css
│   │   │   ├── test.ts
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.spec.json
│   │   │   └── tslint.json
│   │   ├── tsconfig.json
│   │   └── tslint.json
│   └── react_js/
│       ├── .gitignore
│       ├── .storybook/
│       │   ├── main.js
│       │   └── preview.js
│       ├── AdminLTE-3.1.0/
│       │   ├── .babelrc.js
│       │   ├── .browserslistrc
│       │   ├── .bundlewatch.config.json
│       │   ├── .editorconfig
│       │   ├── .eslintignore
│       │   ├── .eslintrc.json
│       │   ├── .gitattributes
│       │   ├── .gitignore
│       │   ├── .gitpod.yml
│       │   ├── .lgtm.yml
│       │   ├── .npmignore
│       │   ├── .stylelintignore
│       │   ├── .stylelintrc
│       │   ├── CODE_OF_CONDUCT.md
│       │   ├── LICENSE
│       │   ├── README.md
│       │   ├── build/
│       │   │   ├── config/
│       │   │   │   ├── .eslintrc.json
│       │   │   │   ├── postcss.config.js
│       │   │   │   └── rollup.config.js
│       │   │   ├── js/
│       │   │   │   ├── AdminLTE.js
│       │   │   │   ├── CardRefresh.js
│       │   │   │   ├── CardWidget.js
│       │   │   │   ├── ControlSidebar.js
│       │   │   │   ├── DirectChat.js
│       │   │   │   ├── Dropdown.js
│       │   │   │   ├── ExpandableTable.js
│       │   │   │   ├── Fullscreen.js
│       │   │   │   ├── IFrame.js
│       │   │   │   ├── Layout.js
│       │   │   │   ├── NavbarSearch.js
│       │   │   │   ├── PushMenu.js
│       │   │   │   ├── SidebarSearch.js
│       │   │   │   ├── Toasts.js
│       │   │   │   ├── TodoList.js
│       │   │   │   └── Treeview.js
│       │   │   ├── npm/
│       │   │   │   ├── .eslintrc.json
│       │   │   │   ├── DocsPlugins.js
│       │   │   │   ├── DocsPublish.js
│       │   │   │   ├── Plugins.js
│       │   │   │   ├── Publish.js
│       │   │   │   └── vnu-jar.js
│       │   │   └── scss/
│       │   │       ├── _adminlte.raw.scss
│       │   │       ├── _alerts.scss
│       │   │       ├── _animation-effects.scss
│       │   │       ├── _bootstrap-variables.scss
│       │   │       ├── _brand.scss
│       │   │       ├── _buttons.scss
│       │   │       ├── _callout.scss
│       │   │       ├── _cards.scss
│       │   │       ├── _carousel.scss
│       │   │       ├── _close.scss
│       │   │       ├── _colors.scss
│       │   │       ├── _control-sidebar.scss
│       │   │       ├── _direct-chat.scss
│       │   │       ├── _dropdown.scss
│       │   │       ├── _elevation.scss
│       │   │       ├── _forms.scss
│       │   │       ├── _info-box.scss
│       │   │       ├── _layout.scss
│       │   │       ├── _main-header.scss
│       │   │       ├── _main-sidebar.scss
│       │   │       ├── _miscellaneous.scss
│       │   │       ├── _mixins.scss
│       │   │       ├── _modals.scss
│       │   │       ├── _navs.scss
│       │   │       ├── _pagination.scss
│       │   │       ├── _preloader.scss
│       │   │       ├── _print.scss
│       │   │       ├── _products.scss
│       │   │       ├── _progress-bars.scss
│       │   │       ├── _root.scss
│       │   │       ├── _sidebar-mini.scss
│       │   │       ├── _small-box.scss
│       │   │       ├── _social-widgets.scss
│       │   │       ├── _table.scss
│       │   │       ├── _text.scss
│       │   │       ├── _timeline.scss
│       │   │       ├── _toasts.scss
│       │   │       ├── _users-list.scss
│       │   │       ├── _variables-alt.scss
│       │   │       ├── _variables.scss
│       │   │       ├── adminlte.scss
│       │   │       ├── mixins/
│       │   │       │   ├── _accent.scss
│       │   │       │   ├── _animations.scss
│       │   │       │   ├── _backgrounds.scss
│       │   │       │   ├── _cards.scss
│       │   │       │   ├── _custom-forms.scss
│       │   │       │   ├── _direct-chat.scss
│       │   │       │   ├── _miscellaneous.scss
│       │   │       │   ├── _navbar.scss
│       │   │       │   ├── _sidebar.scss
│       │   │       │   ├── _toasts.scss
│       │   │       │   └── _touch-support.scss
│       │   │       ├── pages/
│       │   │       │   ├── _404_500_errors.scss
│       │   │       │   ├── _e-commerce.scss
│       │   │       │   ├── _iframe.scss
│       │   │       │   ├── _invoice.scss
│       │   │       │   ├── _kanban.scss
│       │   │       │   ├── _lockscreen.scss
│       │   │       │   ├── _login_and_register.scss
│       │   │       │   ├── _mailbox.scss
│       │   │       │   ├── _profile.scss
│       │   │       │   └── _projects.scss
│       │   │       ├── parts/
│       │   │       │   ├── _components.scss
│       │   │       │   ├── _core.scss
│       │   │       │   ├── _extra-components.scss
│       │   │       │   ├── _miscellaneous.scss
│       │   │       │   ├── _pages.scss
│       │   │       │   ├── _plugins.scss
│       │   │       │   ├── adminlte.components.scss
│       │   │       │   ├── adminlte.core.scss
│       │   │       │   ├── adminlte.extra-components.scss
│       │   │       │   ├── adminlte.pages.scss
│       │   │       │   └── adminlte.plugins.scss
│       │   │       └── plugins/
│       │   │           ├── _bootstrap-slider.scss
│       │   │           ├── _bootstrap-switch.scss
│       │   │           ├── _fullcalendar.scss
│       │   │           ├── _icheck-bootstrap.scss
│       │   │           ├── _jqvmap.scss
│       │   │           ├── _mapael.scss
│       │   │           ├── _miscellaneous.scss
│       │   │           ├── _mixins.scss
│       │   │           ├── _pace.scss
│       │   │           ├── _select2.scss
│       │   │           ├── _sweetalert2.scss
│       │   │           └── _toastr.scss
│       │   ├── composer.json
│       │   ├── dist/
│       │   │   ├── css/
│       │   │   │   ├── adminlte.css
│       │   │   │   └── alt/
│       │   │   │       ├── adminlte.components.css
│       │   │   │       ├── adminlte.core.css
│       │   │   │       ├── adminlte.extra-components.css
│       │   │   │       ├── adminlte.pages.css
│       │   │   │       └── adminlte.plugins.css
│       │   │   └── js/
│       │   │       ├── .eslintrc.json
│       │   │       ├── adminlte.js
│       │   │       ├── demo.js
│       │   │       └── pages/
│       │   │           ├── dashboard.js
│       │   │           ├── dashboard2.js
│       │   │           └── dashboard3.js
│       │   ├── docs/
│       │   │   ├── 404.html
│       │   │   ├── Gemfile
│       │   │   ├── _config.yml
│       │   │   ├── _includes/
│       │   │   │   ├── foot.html
│       │   │   │   ├── footer.html
│       │   │   │   ├── head.html
│       │   │   │   ├── navbar.html
│       │   │   │   ├── preloader.html
│       │   │   │   └── sidebar.html
│       │   │   ├── _layouts/
│       │   │   │   ├── default.html
│       │   │   │   └── page.html
│       │   │   ├── additional-styles.md
│       │   │   ├── assets/
│       │   │   │   ├── css/
│       │   │   │   │   ├── adminlte.css
│       │   │   │   │   ├── alt/
│       │   │   │   │   │   ├── adminlte.components.css
│       │   │   │   │   │   ├── adminlte.core.css
│       │   │   │   │   │   ├── adminlte.extra-components.css
│       │   │   │   │   │   ├── adminlte.pages.css
│       │   │   │   │   │   └── adminlte.plugins.css
│       │   │   │   │   ├── docs.css
│       │   │   │   │   └── highlighter.css
│       │   │   │   ├── js/
│       │   │   │   │   ├── adminlte.js
│       │   │   │   │   ├── demo.js
│       │   │   │   │   └── pages/
│       │   │   │   │       ├── dashboard.js
│       │   │   │   │       ├── dashboard2.js
│       │   │   │   │       └── dashboard3.js
│       │   │   │   └── plugins/
│       │   │   │       ├── bootstrap/
│       │   │   │       │   └── js/
│       │   │   │       │       ├── bootstrap.bundle.js
│       │   │   │       │       └── bootstrap.js
│       │   │   │       ├── fontawesome-free/
│       │   │   │       │   └── css/
│       │   │   │       │       ├── all.css
│       │   │   │       │       ├── brands.css
│       │   │   │       │       ├── fontawesome.css
│       │   │   │       │       ├── regular.css
│       │   │   │       │       ├── solid.css
│       │   │   │       │       ├── svg-with-js.css
│       │   │   │       │       └── v4-shims.css
│       │   │   │       ├── jquery/
│       │   │   │       │   ├── jquery.js
│       │   │   │       │   └── jquery.slim.js
│       │   │   │       ├── overlayScrollbars/
│       │   │   │       │   ├── css/
│       │   │   │       │   │   └── OverlayScrollbars.css
│       │   │   │       │   └── js/
│       │   │   │       │       ├── OverlayScrollbars.js
│       │   │   │       │       └── jquery.overlayScrollbars.js
│       │   │   │       └── popper/
│       │   │   │           ├── esm/
│       │   │   │           │   ├── popper-utils.js
│       │   │   │           │   └── popper.js
│       │   │   │           ├── popper-utils.js
│       │   │   │           ├── popper.js
│       │   │   │           └── umd/
│       │   │   │               ├── popper-utils.js
│       │   │   │               ├── popper.js
│       │   │   │               └── popper.js.flow
│       │   │   ├── browser-support.md
│       │   │   ├── components/
│       │   │   │   ├── boxes.md
│       │   │   │   ├── cards.md
│       │   │   │   ├── control-sidebar.md
│       │   │   │   ├── direct-chat.md
│       │   │   │   ├── main-header.md
│       │   │   │   ├── main-sidebar.md
│       │   │   │   ├── miscellaneous.md
│       │   │   │   ├── plugins.md
│       │   │   │   ├── ribbons.md
│       │   │   │   └── timeline.md
│       │   │   ├── dependencies.md
│       │   │   ├── faq.md
│       │   │   ├── how-to-contribute.md
│       │   │   ├── implementations.md
│       │   │   ├── index.md
│       │   │   ├── javascript/
│       │   │   │   ├── card-refresh.md
│       │   │   │   ├── card-widget.md
│       │   │   │   ├── control-sidebar.md
│       │   │   │   ├── direct-chat.md
│       │   │   │   ├── expandable-tables.md
│       │   │   │   ├── iframe.md
│       │   │   │   ├── layout.md
│       │   │   │   ├── navbar-search.md
│       │   │   │   ├── push-menu.md
│       │   │   │   ├── sidebar-search.md
│       │   │   │   ├── toasts.md
│       │   │   │   ├── todo-list.md
│       │   │   │   └── treeview.md
│       │   │   ├── layout.md
│       │   │   ├── license.md
│       │   │   └── upgrade-guide.md
│       │   ├── iframe.html
│       │   ├── index.html
│       │   ├── index2.html
│       │   ├── index3.html
│       │   ├── package.json
│       │   ├── pages/
│       │   │   ├── UI/
│       │   │   │   ├── buttons.html
│       │   │   │   ├── general.html
│       │   │   │   ├── icons.html
│       │   │   │   ├── modals.html
│       │   │   │   ├── navbar.html
│       │   │   │   ├── ribbons.html
│       │   │   │   ├── sliders.html
│       │   │   │   └── timeline.html
│       │   │   ├── calendar.html
│       │   │   ├── charts/
│       │   │   │   ├── chartjs.html
│       │   │   │   ├── flot.html
│       │   │   │   ├── inline.html
│       │   │   │   └── uplot.html
│       │   │   ├── examples/
│       │   │   │   ├── 404.html
│       │   │   │   ├── 500.html
│       │   │   │   ├── blank.html
│       │   │   │   ├── contact-us.html
│       │   │   │   ├── contacts.html
│       │   │   │   ├── e-commerce.html
│       │   │   │   ├── faq.html
│       │   │   │   ├── forgot-password-v2.html
│       │   │   │   ├── forgot-password.html
│       │   │   │   ├── invoice-print.html
│       │   │   │   ├── invoice.html
│       │   │   │   ├── language-menu.html
│       │   │   │   ├── legacy-user-menu.html
│       │   │   │   ├── lockscreen.html
│       │   │   │   ├── login-v2.html
│       │   │   │   ├── login.html
│       │   │   │   ├── pace.html
│       │   │   │   ├── profile.html
│       │   │   │   ├── project-add.html
│       │   │   │   ├── project-detail.html
│       │   │   │   ├── project-edit.html
│       │   │   │   ├── projects.html
│       │   │   │   ├── recover-password-v2.html
│       │   │   │   ├── recover-password.html
│       │   │   │   ├── register-v2.html
│       │   │   │   └── register.html
│       │   │   ├── forms/
│       │   │   │   ├── advanced.html
│       │   │   │   ├── editors.html
│       │   │   │   ├── general.html
│       │   │   │   └── validation.html
│       │   │   ├── gallery.html
│       │   │   ├── kanban.html
│       │   │   ├── layout/
│       │   │   │   ├── boxed.html
│       │   │   │   ├── collapsed-sidebar.html
│       │   │   │   ├── fixed-footer.html
│       │   │   │   ├── fixed-sidebar-custom.html
│       │   │   │   ├── fixed-sidebar.html
│       │   │   │   ├── fixed-topnav.html
│       │   │   │   ├── top-nav-sidebar.html
│       │   │   │   └── top-nav.html
│       │   │   ├── mailbox/
│       │   │   │   ├── compose.html
│       │   │   │   ├── mailbox.html
│       │   │   │   └── read-mail.html
│       │   │   ├── search/
│       │   │   │   ├── enhanced-results.html
│       │   │   │   ├── enhanced.html
│       │   │   │   ├── simple-results.html
│       │   │   │   └── simple.html
│       │   │   ├── tables/
│       │   │   │   ├── data.html
│       │   │   │   ├── jsgrid.html
│       │   │   │   └── simple.html
│       │   │   └── widgets.html
│       │   ├── plugins/
│       │   │   ├── bootstrap/
│       │   │   │   └── js/
│       │   │   │       ├── bootstrap.bundle.js
│       │   │   │       └── bootstrap.js
│       │   │   ├── bootstrap-colorpicker/
│       │   │   │   ├── css/
│       │   │   │   │   └── bootstrap-colorpicker.css
│       │   │   │   └── js/
│       │   │   │       └── bootstrap-colorpicker.js
│       │   │   ├── bootstrap-slider/
│       │   │   │   ├── bootstrap-slider.js
│       │   │   │   └── css/
│       │   │   │       └── bootstrap-slider.css
│       │   │   ├── bootstrap-switch/
│       │   │   │   ├── css/
│       │   │   │   │   ├── bootstrap2/
│       │   │   │   │   │   └── bootstrap-switch.css
│       │   │   │   │   └── bootstrap3/
│       │   │   │   │       └── bootstrap-switch.css
│       │   │   │   └── js/
│       │   │   │       └── bootstrap-switch.js
│       │   │   ├── bootstrap4-duallistbox/
│       │   │   │   ├── bootstrap-duallistbox.css
│       │   │   │   └── jquery.bootstrap-duallistbox.js
│       │   │   ├── bs-custom-file-input/
│       │   │   │   └── bs-custom-file-input.js
│       │   │   ├── bs-stepper/
│       │   │   │   ├── css/
│       │   │   │   │   └── bs-stepper.css
│       │   │   │   └── js/
│       │   │   │       └── bs-stepper.js
│       │   │   ├── chart.js/
│       │   │   │   ├── Chart.bundle.js
│       │   │   │   ├── Chart.css
│       │   │   │   └── Chart.js
│       │   │   ├── codemirror/
│       │   │   │   ├── addon/
│       │   │   │   │   ├── comment/
│       │   │   │   │   │   ├── comment.js
│       │   │   │   │   │   └── continuecomment.js
│       │   │   │   │   ├── dialog/
│       │   │   │   │   │   ├── dialog.css
│       │   │   │   │   │   └── dialog.js
│       │   │   │   │   ├── display/
│       │   │   │   │   │   ├── autorefresh.js
│       │   │   │   │   │   ├── fullscreen.css
│       │   │   │   │   │   ├── fullscreen.js
│       │   │   │   │   │   ├── panel.js
│       │   │   │   │   │   ├── placeholder.js
│       │   │   │   │   │   └── rulers.js
│       │   │   │   │   ├── edit/
│       │   │   │   │   │   ├── closebrackets.js
│       │   │   │   │   │   ├── closetag.js
│       │   │   │   │   │   ├── continuelist.js
│       │   │   │   │   │   ├── matchbrackets.js
│       │   │   │   │   │   ├── matchtags.js
│       │   │   │   │   │   └── trailingspace.js
│       │   │   │   │   ├── fold/
│       │   │   │   │   │   ├── brace-fold.js
│       │   │   │   │   │   ├── comment-fold.js
│       │   │   │   │   │   ├── foldcode.js
│       │   │   │   │   │   ├── foldgutter.css
│       │   │   │   │   │   ├── foldgutter.js
│       │   │   │   │   │   ├── indent-fold.js
│       │   │   │   │   │   ├── markdown-fold.js
│       │   │   │   │   │   └── xml-fold.js
│       │   │   │   │   ├── hint/
│       │   │   │   │   │   ├── anyword-hint.js
│       │   │   │   │   │   ├── css-hint.js
│       │   │   │   │   │   ├── html-hint.js
│       │   │   │   │   │   ├── javascript-hint.js
│       │   │   │   │   │   ├── show-hint.css
│       │   │   │   │   │   ├── show-hint.js
│       │   │   │   │   │   ├── sql-hint.js
│       │   │   │   │   │   └── xml-hint.js
│       │   │   │   │   ├── lint/
│       │   │   │   │   │   ├── coffeescript-lint.js
│       │   │   │   │   │   ├── css-lint.js
│       │   │   │   │   │   ├── html-lint.js
│       │   │   │   │   │   ├── javascript-lint.js
│       │   │   │   │   │   ├── json-lint.js
│       │   │   │   │   │   ├── lint.css
│       │   │   │   │   │   ├── lint.js
│       │   │   │   │   │   └── yaml-lint.js
│       │   │   │   │   ├── merge/
│       │   │   │   │   │   ├── merge.css
│       │   │   │   │   │   └── merge.js
│       │   │   │   │   ├── mode/
│       │   │   │   │   │   ├── loadmode.js
│       │   │   │   │   │   ├── multiplex.js
│       │   │   │   │   │   ├── multiplex_test.js
│       │   │   │   │   │   ├── overlay.js
│       │   │   │   │   │   └── simple.js
│       │   │   │   │   ├── runmode/
│       │   │   │   │   │   ├── colorize.js
│       │   │   │   │   │   ├── runmode-standalone.js
│       │   │   │   │   │   ├── runmode.js
│       │   │   │   │   │   └── runmode.node.js
│       │   │   │   │   ├── scroll/
│       │   │   │   │   │   ├── annotatescrollbar.js
│       │   │   │   │   │   ├── scrollpastend.js
│       │   │   │   │   │   ├── simplescrollbars.css
│       │   │   │   │   │   └── simplescrollbars.js
│       │   │   │   │   ├── search/
│       │   │   │   │   │   ├── jump-to-line.js
│       │   │   │   │   │   ├── match-highlighter.js
│       │   │   │   │   │   ├── matchesonscrollbar.css
│       │   │   │   │   │   ├── matchesonscrollbar.js
│       │   │   │   │   │   ├── search.js
│       │   │   │   │   │   └── searchcursor.js
│       │   │   │   │   ├── selection/
│       │   │   │   │   │   ├── active-line.js
│       │   │   │   │   │   ├── mark-selection.js
│       │   │   │   │   │   └── selection-pointer.js
│       │   │   │   │   ├── tern/
│       │   │   │   │   │   ├── tern.css
│       │   │   │   │   │   ├── tern.js
│       │   │   │   │   │   └── worker.js
│       │   │   │   │   └── wrap/
│       │   │   │   │       └── hardwrap.js
│       │   │   │   ├── codemirror.css
│       │   │   │   ├── codemirror.js
│       │   │   │   ├── keymap/
│       │   │   │   │   ├── emacs.js
│       │   │   │   │   ├── sublime.js
│       │   │   │   │   └── vim.js
│       │   │   │   ├── mode/
│       │   │   │   │   ├── apl/
│       │   │   │   │   │   └── apl.js
│       │   │   │   │   ├── asciiarmor/
│       │   │   │   │   │   └── asciiarmor.js
│       │   │   │   │   ├── asn.1/
│       │   │   │   │   │   └── asn.1.js
│       │   │   │   │   ├── asterisk/
│       │   │   │   │   │   └── asterisk.js
│       │   │   │   │   ├── brainfuck/
│       │   │   │   │   │   └── brainfuck.js
│       │   │   │   │   ├── clike/
│       │   │   │   │   │   └── clike.js
│       │   │   │   │   ├── clojure/
│       │   │   │   │   │   └── clojure.js
│       │   │   │   │   ├── cmake/
│       │   │   │   │   │   └── cmake.js
│       │   │   │   │   ├── cobol/
│       │   │   │   │   │   └── cobol.js
│       │   │   │   │   ├── coffeescript/
│       │   │   │   │   │   └── coffeescript.js
│       │   │   │   │   ├── commonlisp/
│       │   │   │   │   │   └── commonlisp.js
│       │   │   │   │   ├── crystal/
│       │   │   │   │   │   └── crystal.js
│       │   │   │   │   ├── css/
│       │   │   │   │   │   └── css.js
│       │   │   │   │   ├── cypher/
│       │   │   │   │   │   └── cypher.js
│       │   │   │   │   ├── d/
│       │   │   │   │   │   └── d.js
│       │   │   │   │   ├── dart/
│       │   │   │   │   │   └── dart.js
│       │   │   │   │   ├── diff/
│       │   │   │   │   │   └── diff.js
│       │   │   │   │   ├── django/
│       │   │   │   │   │   └── django.js
│       │   │   │   │   ├── dockerfile/
│       │   │   │   │   │   └── dockerfile.js
│       │   │   │   │   ├── dtd/
│       │   │   │   │   │   └── dtd.js
│       │   │   │   │   ├── dylan/
│       │   │   │   │   │   └── dylan.js
│       │   │   │   │   ├── ebnf/
│       │   │   │   │   │   └── ebnf.js
│       │   │   │   │   ├── ecl/
│       │   │   │   │   │   └── ecl.js
│       │   │   │   │   ├── eiffel/
│       │   │   │   │   │   └── eiffel.js
│       │   │   │   │   ├── elm/
│       │   │   │   │   │   └── elm.js
│       │   │   │   │   ├── erlang/
│       │   │   │   │   │   └── erlang.js
│       │   │   │   │   ├── factor/
│       │   │   │   │   │   └── factor.js
│       │   │   │   │   ├── fcl/
│       │   │   │   │   │   └── fcl.js
│       │   │   │   │   ├── forth/
│       │   │   │   │   │   └── forth.js
│       │   │   │   │   ├── fortran/
│       │   │   │   │   │   └── fortran.js
│       │   │   │   │   ├── gas/
│       │   │   │   │   │   └── gas.js
│       │   │   │   │   ├── gfm/
│       │   │   │   │   │   └── gfm.js
│       │   │   │   │   ├── gherkin/
│       │   │   │   │   │   └── gherkin.js
│       │   │   │   │   ├── go/
│       │   │   │   │   │   └── go.js
│       │   │   │   │   ├── groovy/
│       │   │   │   │   │   └── groovy.js
│       │   │   │   │   ├── haml/
│       │   │   │   │   │   └── haml.js
│       │   │   │   │   ├── handlebars/
│       │   │   │   │   │   └── handlebars.js
│       │   │   │   │   ├── haskell/
│       │   │   │   │   │   └── haskell.js
│       │   │   │   │   ├── haskell-literate/
│       │   │   │   │   │   └── haskell-literate.js
│       │   │   │   │   ├── haxe/
│       │   │   │   │   │   └── haxe.js
│       │   │   │   │   ├── htmlembedded/
│       │   │   │   │   │   └── htmlembedded.js
│       │   │   │   │   ├── htmlmixed/
│       │   │   │   │   │   └── htmlmixed.js
│       │   │   │   │   ├── http/
│       │   │   │   │   │   └── http.js
│       │   │   │   │   ├── idl/
│       │   │   │   │   │   └── idl.js
│       │   │   │   │   ├── javascript/
│       │   │   │   │   │   └── javascript.js
│       │   │   │   │   ├── jinja2/
│       │   │   │   │   │   └── jinja2.js
│       │   │   │   │   ├── jsx/
│       │   │   │   │   │   └── jsx.js
│       │   │   │   │   ├── julia/
│       │   │   │   │   │   └── julia.js
│       │   │   │   │   ├── livescript/
│       │   │   │   │   │   └── livescript.js
│       │   │   │   │   ├── lua/
│       │   │   │   │   │   └── lua.js
│       │   │   │   │   ├── markdown/
│       │   │   │   │   │   └── markdown.js
│       │   │   │   │   ├── mathematica/
│       │   │   │   │   │   └── mathematica.js
│       │   │   │   │   ├── mbox/
│       │   │   │   │   │   └── mbox.js
│       │   │   │   │   ├── meta.js
│       │   │   │   │   ├── mirc/
│       │   │   │   │   │   └── mirc.js
│       │   │   │   │   ├── mllike/
│       │   │   │   │   │   └── mllike.js
│       │   │   │   │   ├── modelica/
│       │   │   │   │   │   └── modelica.js
│       │   │   │   │   ├── mscgen/
│       │   │   │   │   │   └── mscgen.js
│       │   │   │   │   ├── mumps/
│       │   │   │   │   │   └── mumps.js
│       │   │   │   │   ├── nginx/
│       │   │   │   │   │   └── nginx.js
│       │   │   │   │   ├── nsis/
│       │   │   │   │   │   └── nsis.js
│       │   │   │   │   ├── ntriples/
│       │   │   │   │   │   └── ntriples.js
│       │   │   │   │   ├── octave/
│       │   │   │   │   │   └── octave.js
│       │   │   │   │   ├── oz/
│       │   │   │   │   │   └── oz.js
│       │   │   │   │   ├── pascal/
│       │   │   │   │   │   └── pascal.js
│       │   │   │   │   ├── pegjs/
│       │   │   │   │   │   └── pegjs.js
│       │   │   │   │   ├── perl/
│       │   │   │   │   │   └── perl.js
│       │   │   │   │   ├── php/
│       │   │   │   │   │   └── php.js
│       │   │   │   │   ├── pig/
│       │   │   │   │   │   └── pig.js
│       │   │   │   │   ├── powershell/
│       │   │   │   │   │   └── powershell.js
│       │   │   │   │   ├── properties/
│       │   │   │   │   │   └── properties.js
│       │   │   │   │   ├── protobuf/
│       │   │   │   │   │   └── protobuf.js
│       │   │   │   │   ├── pug/
│       │   │   │   │   │   └── pug.js
│       │   │   │   │   ├── puppet/
│       │   │   │   │   │   └── puppet.js
│       │   │   │   │   ├── python/
│       │   │   │   │   │   └── python.js
│       │   │   │   │   ├── q/
│       │   │   │   │   │   └── q.js
│       │   │   │   │   ├── r/
│       │   │   │   │   │   └── r.js
│       │   │   │   │   ├── rpm/
│       │   │   │   │   │   └── rpm.js
│       │   │   │   │   ├── rst/
│       │   │   │   │   │   └── rst.js
│       │   │   │   │   ├── ruby/
│       │   │   │   │   │   └── ruby.js
│       │   │   │   │   ├── rust/
│       │   │   │   │   │   └── rust.js
│       │   │   │   │   ├── sas/
│       │   │   │   │   │   └── sas.js
│       │   │   │   │   ├── sass/
│       │   │   │   │   │   └── sass.js
│       │   │   │   │   ├── scheme/
│       │   │   │   │   │   └── scheme.js
│       │   │   │   │   ├── shell/
│       │   │   │   │   │   └── shell.js
│       │   │   │   │   ├── sieve/
│       │   │   │   │   │   └── sieve.js
│       │   │   │   │   ├── slim/
│       │   │   │   │   │   └── slim.js
│       │   │   │   │   ├── smalltalk/
│       │   │   │   │   │   └── smalltalk.js
│       │   │   │   │   ├── smarty/
│       │   │   │   │   │   └── smarty.js
│       │   │   │   │   ├── solr/
│       │   │   │   │   │   └── solr.js
│       │   │   │   │   ├── soy/
│       │   │   │   │   │   └── soy.js
│       │   │   │   │   ├── sparql/
│       │   │   │   │   │   └── sparql.js
│       │   │   │   │   ├── spreadsheet/
│       │   │   │   │   │   └── spreadsheet.js
│       │   │   │   │   ├── sql/
│       │   │   │   │   │   └── sql.js
│       │   │   │   │   ├── stex/
│       │   │   │   │   │   └── stex.js
│       │   │   │   │   ├── stylus/
│       │   │   │   │   │   └── stylus.js
│       │   │   │   │   ├── swift/
│       │   │   │   │   │   └── swift.js
│       │   │   │   │   ├── tcl/
│       │   │   │   │   │   └── tcl.js
│       │   │   │   │   ├── textile/
│       │   │   │   │   │   └── textile.js
│       │   │   │   │   ├── tiddlywiki/
│       │   │   │   │   │   ├── tiddlywiki.css
│       │   │   │   │   │   └── tiddlywiki.js
│       │   │   │   │   ├── tiki/
│       │   │   │   │   │   ├── tiki.css
│       │   │   │   │   │   └── tiki.js
│       │   │   │   │   ├── toml/
│       │   │   │   │   │   └── toml.js
│       │   │   │   │   ├── tornado/
│       │   │   │   │   │   └── tornado.js
│       │   │   │   │   ├── troff/
│       │   │   │   │   │   └── troff.js
│       │   │   │   │   ├── ttcn/
│       │   │   │   │   │   └── ttcn.js
│       │   │   │   │   ├── ttcn-cfg/
│       │   │   │   │   │   └── ttcn-cfg.js
│       │   │   │   │   ├── turtle/
│       │   │   │   │   │   └── turtle.js
│       │   │   │   │   ├── twig/
│       │   │   │   │   │   └── twig.js
│       │   │   │   │   ├── vb/
│       │   │   │   │   │   └── vb.js
│       │   │   │   │   ├── vbscript/
│       │   │   │   │   │   └── vbscript.js
│       │   │   │   │   ├── velocity/
│       │   │   │   │   │   └── velocity.js
│       │   │   │   │   ├── verilog/
│       │   │   │   │   │   └── verilog.js
│       │   │   │   │   ├── vhdl/
│       │   │   │   │   │   └── vhdl.js
│       │   │   │   │   ├── vue/
│       │   │   │   │   │   └── vue.js
│       │   │   │   │   ├── wast/
│       │   │   │   │   │   └── wast.js
│       │   │   │   │   ├── webidl/
│       │   │   │   │   │   └── webidl.js
│       │   │   │   │   ├── xml/
│       │   │   │   │   │   └── xml.js
│       │   │   │   │   ├── xquery/
│       │   │   │   │   │   └── xquery.js
│       │   │   │   │   ├── yacas/
│       │   │   │   │   │   └── yacas.js
│       │   │   │   │   ├── yaml/
│       │   │   │   │   │   └── yaml.js
│       │   │   │   │   ├── yaml-frontmatter/
│       │   │   │   │   │   └── yaml-frontmatter.js
│       │   │   │   │   └── z80/
│       │   │   │   │       └── z80.js
│       │   │   │   └── theme/
│       │   │   │       ├── 3024-day.css
│       │   │   │       ├── 3024-night.css
│       │   │   │       ├── abcdef.css
│       │   │   │       ├── ambiance-mobile.css
│       │   │   │       ├── ambiance.css
│       │   │   │       ├── ayu-dark.css
│       │   │   │       ├── ayu-mirage.css
│       │   │   │       ├── base16-dark.css
│       │   │   │       ├── base16-light.css
│       │   │   │       ├── bespin.css
│       │   │   │       ├── blackboard.css
│       │   │   │       ├── cobalt.css
│       │   │   │       ├── colorforth.css
│       │   │   │       ├── darcula.css
│       │   │   │       ├── dracula.css
│       │   │   │       ├── duotone-dark.css
│       │   │   │       ├── duotone-light.css
│       │   │   │       ├── eclipse.css
│       │   │   │       ├── elegant.css
│       │   │   │       ├── erlang-dark.css
│       │   │   │       ├── gruvbox-dark.css
│       │   │   │       ├── hopscotch.css
│       │   │   │       ├── icecoder.css
│       │   │   │       ├── idea.css
│       │   │   │       ├── isotope.css
│       │   │   │       ├── lesser-dark.css
│       │   │   │       ├── liquibyte.css
│       │   │   │       ├── lucario.css
│       │   │   │       ├── material-darker.css
│       │   │   │       ├── material-ocean.css
│       │   │   │       ├── material-palenight.css
│       │   │   │       ├── material.css
│       │   │   │       ├── mbo.css
│       │   │   │       ├── mdn-like.css
│       │   │   │       ├── midnight.css
│       │   │   │       ├── monokai.css
│       │   │   │       ├── moxer.css
│       │   │   │       ├── neat.css
│       │   │   │       ├── neo.css
│       │   │   │       ├── night.css
│       │   │   │       ├── nord.css
│       │   │   │       ├── oceanic-next.css
│       │   │   │       ├── panda-syntax.css
│       │   │   │       ├── paraiso-dark.css
│       │   │   │       ├── paraiso-light.css
│       │   │   │       ├── pastel-on-dark.css
│       │   │   │       ├── railscasts.css
│       │   │   │       ├── rubyblue.css
│       │   │   │       ├── seti.css
│       │   │   │       ├── shadowfox.css
│       │   │   │       ├── solarized.css
│       │   │   │       ├── ssms.css
│       │   │   │       ├── the-matrix.css
│       │   │   │       ├── tomorrow-night-bright.css
│       │   │   │       ├── tomorrow-night-eighties.css
│       │   │   │       ├── ttcn.css
│       │   │   │       ├── twilight.css
│       │   │   │       ├── vibrant-ink.css
│       │   │   │       ├── xq-dark.css
│       │   │   │       ├── xq-light.css
│       │   │   │       ├── yeti.css
│       │   │   │       ├── yonce.css
│       │   │   │       └── zenburn.css
│       │   │   ├── datatables/
│       │   │   │   └── jquery.dataTables.js
│       │   │   ├── datatables-autofill/
│       │   │   │   ├── css/
│       │   │   │   │   └── autoFill.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── autoFill.bootstrap4.js
│       │   │   │       └── dataTables.autoFill.js
│       │   │   ├── datatables-bs4/
│       │   │   │   ├── css/
│       │   │   │   │   └── dataTables.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       └── dataTables.bootstrap4.js
│       │   │   ├── datatables-buttons/
│       │   │   │   ├── css/
│       │   │   │   │   └── buttons.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── buttons.bootstrap4.js
│       │   │   │       ├── buttons.colVis.js
│       │   │   │       ├── buttons.flash.js
│       │   │   │       ├── buttons.html5.js
│       │   │   │       ├── buttons.print.js
│       │   │   │       └── dataTables.buttons.js
│       │   │   ├── datatables-colreorder/
│       │   │   │   ├── css/
│       │   │   │   │   └── colReorder.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── colReorder.bootstrap4.js
│       │   │   │       └── dataTables.colReorder.js
│       │   │   ├── datatables-fixedcolumns/
│       │   │   │   ├── css/
│       │   │   │   │   └── fixedColumns.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.fixedColumns.js
│       │   │   │       └── fixedColumns.bootstrap4.js
│       │   │   ├── datatables-fixedheader/
│       │   │   │   ├── css/
│       │   │   │   │   └── fixedHeader.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.fixedHeader.js
│       │   │   │       └── fixedHeader.bootstrap4.js
│       │   │   ├── datatables-keytable/
│       │   │   │   ├── css/
│       │   │   │   │   └── keyTable.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.keyTable.js
│       │   │   │       └── keyTable.bootstrap4.js
│       │   │   ├── datatables-responsive/
│       │   │   │   ├── css/
│       │   │   │   │   └── responsive.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.responsive.js
│       │   │   │       └── responsive.bootstrap4.js
│       │   │   ├── datatables-rowgroup/
│       │   │   │   ├── css/
│       │   │   │   │   └── rowGroup.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.rowGroup.js
│       │   │   │       └── rowGroup.bootstrap4.js
│       │   │   ├── datatables-rowreorder/
│       │   │   │   ├── css/
│       │   │   │   │   └── rowReorder.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.rowReorder.js
│       │   │   │       └── rowReorder.bootstrap4.js
│       │   │   ├── datatables-scroller/
│       │   │   │   ├── css/
│       │   │   │   │   └── scroller.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.scroller.js
│       │   │   │       └── scroller.bootstrap4.js
│       │   │   ├── datatables-searchbuilder/
│       │   │   │   ├── css/
│       │   │   │   │   └── searchBuilder.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.searchBuilder.js
│       │   │   │       └── searchBuilder.bootstrap4.js
│       │   │   ├── datatables-searchpanes/
│       │   │   │   ├── css/
│       │   │   │   │   └── searchPanes.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.searchPanes.js
│       │   │   │       └── searchPanes.bootstrap4.js
│       │   │   ├── datatables-select/
│       │   │   │   ├── css/
│       │   │   │   │   └── select.bootstrap4.css
│       │   │   │   └── js/
│       │   │   │       ├── dataTables.select.js
│       │   │   │       └── select.bootstrap4.js
│       │   │   ├── daterangepicker/
│       │   │   │   ├── daterangepicker.css
│       │   │   │   └── daterangepicker.js
│       │   │   ├── dropzone/
│       │   │   │   ├── basic.css
│       │   │   │   ├── dropzone-amd-module.js
│       │   │   │   ├── dropzone.css
│       │   │   │   ├── dropzone.js
│       │   │   │   └── min/
│       │   │   │       ├── basic.css
│       │   │   │       └── dropzone.css
│       │   │   ├── ekko-lightbox/
│       │   │   │   ├── ekko-lightbox.css
│       │   │   │   └── ekko-lightbox.js
│       │   │   ├── fastclick/
│       │   │   │   └── fastclick.js
│       │   │   ├── flag-icon-css/
│       │   │   │   └── css/
│       │   │   │       └── flag-icon.css
│       │   │   ├── flot/
│       │   │   │   ├── jquery.flot.js
│       │   │   │   └── plugins/
│       │   │   │       ├── jquery.flot.axislabels.js
│       │   │   │       ├── jquery.flot.browser.js
│       │   │   │       ├── jquery.flot.categories.js
│       │   │   │       ├── jquery.flot.composeImages.js
│       │   │   │       ├── jquery.flot.crosshair.js
│       │   │   │       ├── jquery.flot.drawSeries.js
│       │   │   │       ├── jquery.flot.errorbars.js
│       │   │   │       ├── jquery.flot.fillbetween.js
│       │   │   │       ├── jquery.flot.flatdata.js
│       │   │   │       ├── jquery.flot.hover.js
│       │   │   │       ├── jquery.flot.image.js
│       │   │   │       ├── jquery.flot.legend.js
│       │   │   │       ├── jquery.flot.logaxis.js
│       │   │   │       ├── jquery.flot.navigate.js
│       │   │   │       ├── jquery.flot.pie.js
│       │   │   │       ├── jquery.flot.resize.js
│       │   │   │       ├── jquery.flot.saturated.js
│       │   │   │       ├── jquery.flot.selection.js
│       │   │   │       ├── jquery.flot.stack.js
│       │   │   │       ├── jquery.flot.symbol.js
│       │   │   │       ├── jquery.flot.threshold.js
│       │   │   │       ├── jquery.flot.time.js
│       │   │   │       ├── jquery.flot.touch.js
│       │   │   │       ├── jquery.flot.touchNavigate.js
│       │   │   │       └── jquery.flot.uiConstants.js
│       │   │   ├── fontawesome-free/
│       │   │   │   └── css/
│       │   │   │       ├── all.css
│       │   │   │       ├── brands.css
│       │   │   │       ├── fontawesome.css
│       │   │   │       ├── regular.css
│       │   │   │       ├── solid.css
│       │   │   │       ├── svg-with-js.css
│       │   │   │       └── v4-shims.css
│       │   │   ├── fullcalendar/
│       │   │   │   ├── LICENSE.txt
│       │   │   │   ├── locales/
│       │   │   │   │   ├── af.js
│       │   │   │   │   ├── ar-dz.js
│       │   │   │   │   ├── ar-kw.js
│       │   │   │   │   ├── ar-ly.js
│       │   │   │   │   ├── ar-ma.js
│       │   │   │   │   ├── ar-sa.js
│       │   │   │   │   ├── ar-tn.js
│       │   │   │   │   ├── ar.js
│       │   │   │   │   ├── az.js
│       │   │   │   │   ├── bg.js
│       │   │   │   │   ├── bs.js
│       │   │   │   │   ├── ca.js
│       │   │   │   │   ├── cs.js
│       │   │   │   │   ├── cy.js
│       │   │   │   │   ├── da.js
│       │   │   │   │   ├── de-at.js
│       │   │   │   │   ├── de.js
│       │   │   │   │   ├── el.js
│       │   │   │   │   ├── en-au.js
│       │   │   │   │   ├── en-gb.js
│       │   │   │   │   ├── en-nz.js
│       │   │   │   │   ├── eo.js
│       │   │   │   │   ├── es-us.js
│       │   │   │   │   ├── es.js
│       │   │   │   │   ├── et.js
│       │   │   │   │   ├── eu.js
│       │   │   │   │   ├── fa.js
│       │   │   │   │   ├── fi.js
│       │   │   │   │   ├── fr-ca.js
│       │   │   │   │   ├── fr-ch.js
│       │   │   │   │   ├── fr.js
│       │   │   │   │   ├── gl.js
│       │   │   │   │   ├── he.js
│       │   │   │   │   ├── hi.js
│       │   │   │   │   ├── hr.js
│       │   │   │   │   ├── hu.js
│       │   │   │   │   ├── hy-am.js
│       │   │   │   │   ├── id.js
│       │   │   │   │   ├── is.js
│       │   │   │   │   ├── it.js
│       │   │   │   │   ├── ja.js
│       │   │   │   │   ├── ka.js
│       │   │   │   │   ├── kk.js
│       │   │   │   │   ├── ko.js
│       │   │   │   │   ├── lb.js
│       │   │   │   │   ├── lt.js
│       │   │   │   │   ├── lv.js
│       │   │   │   │   ├── mk.js
│       │   │   │   │   ├── ms.js
│       │   │   │   │   ├── nb.js
│       │   │   │   │   ├── ne.js
│       │   │   │   │   ├── nl.js
│       │   │   │   │   ├── nn.js
│       │   │   │   │   ├── pl.js
│       │   │   │   │   ├── pt-br.js
│       │   │   │   │   ├── pt.js
│       │   │   │   │   ├── ro.js
│       │   │   │   │   ├── ru.js
│       │   │   │   │   ├── sk.js
│       │   │   │   │   ├── sl.js
│       │   │   │   │   ├── sq.js
│       │   │   │   │   ├── sr-cyrl.js
│       │   │   │   │   ├── sr.js
│       │   │   │   │   ├── sv.js
│       │   │   │   │   ├── ta-in.js
│       │   │   │   │   ├── th.js
│       │   │   │   │   ├── tr.js
│       │   │   │   │   ├── ug.js
│       │   │   │   │   ├── uk.js
│       │   │   │   │   ├── uz.js
│       │   │   │   │   ├── vi.js
│       │   │   │   │   ├── zh-cn.js
│       │   │   │   │   └── zh-tw.js
│       │   │   │   ├── locales-all.js
│       │   │   │   ├── main.css
│       │   │   │   └── main.js
│       │   │   ├── icheck-bootstrap/
│       │   │   │   ├── LICENSE
│       │   │   │   └── icheck-bootstrap.css
│       │   │   ├── inputmask/
│       │   │   │   ├── inputmask.js
│       │   │   │   └── jquery.inputmask.js
│       │   │   ├── ion-rangeslider/
│       │   │   │   ├── License.md
│       │   │   │   ├── css/
│       │   │   │   │   └── ion.rangeSlider.css
│       │   │   │   └── js/
│       │   │   │       └── ion.rangeSlider.js
│       │   │   ├── jquery/
│       │   │   │   ├── jquery.js
│       │   │   │   └── jquery.slim.js
│       │   │   ├── jquery-mapael/
│       │   │   │   ├── jquery.mapael.js
│       │   │   │   └── maps/
│       │   │   │       ├── README.txt
│       │   │   │       ├── france_departments.js
│       │   │   │       ├── usa_states.js
│       │   │   │       ├── world_countries.js
│       │   │   │       ├── world_countries_mercator.js
│       │   │   │       └── world_countries_miller.js
│       │   │   ├── jquery-mousewheel/
│       │   │   │   ├── LICENSE.txt
│       │   │   │   └── jquery.mousewheel.js
│       │   │   ├── jquery-ui/
│       │   │   │   ├── LICENSE.txt
│       │   │   │   ├── jquery-ui.css
│       │   │   │   ├── jquery-ui.js
│       │   │   │   ├── jquery-ui.structure.css
│       │   │   │   └── jquery-ui.theme.css
│       │   │   ├── jquery-validation/
│       │   │   │   ├── additional-methods.js
│       │   │   │   ├── jquery.validate.js
│       │   │   │   └── localization/
│       │   │   │       ├── messages_ar.js
│       │   │   │       ├── messages_az.js
│       │   │   │       ├── messages_bg.js
│       │   │   │       ├── messages_bn_BD.js
│       │   │   │       ├── messages_ca.js
│       │   │   │       ├── messages_cs.js
│       │   │   │       ├── messages_da.js
│       │   │   │       ├── messages_de.js
│       │   │   │       ├── messages_el.js
│       │   │   │       ├── messages_es.js
│       │   │   │       ├── messages_es_AR.js
│       │   │   │       ├── messages_es_PE.js
│       │   │   │       ├── messages_et.js
│       │   │   │       ├── messages_eu.js
│       │   │   │       ├── messages_fa.js
│       │   │   │       ├── messages_fi.js
│       │   │   │       ├── messages_fr.js
│       │   │   │       ├── messages_ge.js
│       │   │   │       ├── messages_gl.js
│       │   │   │       ├── messages_he.js
│       │   │   │       ├── messages_hr.js
│       │   │   │       ├── messages_hu.js
│       │   │   │       ├── messages_hy_AM.js
│       │   │   │       ├── messages_id.js
│       │   │   │       ├── messages_is.js
│       │   │   │       ├── messages_it.js
│       │   │   │       ├── messages_ja.js
│       │   │   │       ├── messages_ka.js
│       │   │   │       ├── messages_kk.js
│       │   │   │       ├── messages_ko.js
│       │   │   │       ├── messages_lt.js
│       │   │   │       ├── messages_lv.js
│       │   │   │       ├── messages_mk.js
│       │   │   │       ├── messages_my.js
│       │   │   │       ├── messages_nl.js
│       │   │   │       ├── messages_no.js
│       │   │   │       ├── messages_pl.js
│       │   │   │       ├── messages_pt_BR.js
│       │   │   │       ├── messages_pt_PT.js
│       │   │   │       ├── messages_ro.js
│       │   │   │       ├── messages_ru.js
│       │   │   │       ├── messages_sd.js
│       │   │   │       ├── messages_si.js
│       │   │   │       ├── messages_sk.js
│       │   │   │       ├── messages_sl.js
│       │   │   │       ├── messages_sr.js
│       │   │   │       ├── messages_sr_lat.js
│       │   │   │       ├── messages_sv.js
│       │   │   │       ├── messages_th.js
│       │   │   │       ├── messages_tj.js
│       │   │   │       ├── messages_tr.js
│       │   │   │       ├── messages_uk.js
│       │   │   │       ├── messages_ur.js
│       │   │   │       ├── messages_vi.js
│       │   │   │       ├── messages_zh.js
│       │   │   │       ├── messages_zh_TW.js
│       │   │   │       ├── methods_de.js
│       │   │   │       ├── methods_es_CL.js
│       │   │   │       ├── methods_fi.js
│       │   │   │       ├── methods_it.js
│       │   │   │       ├── methods_nl.js
│       │   │   │       └── methods_pt.js
│       │   │   ├── jqvmap/
│       │   │   │   ├── jquery.vmap.js
│       │   │   │   ├── jqvmap.css
│       │   │   │   └── maps/
│       │   │   │       ├── continents/
│       │   │   │       │   ├── jquery.vmap.africa.js
│       │   │   │       │   ├── jquery.vmap.asia.js
│       │   │   │       │   ├── jquery.vmap.australia.js
│       │   │   │       │   ├── jquery.vmap.europe.js
│       │   │   │       │   ├── jquery.vmap.north-america.js
│       │   │   │       │   └── jquery.vmap.south-america.js
│       │   │   │       ├── jquery.vmap.algeria.js
│       │   │   │       ├── jquery.vmap.argentina.js
│       │   │   │       ├── jquery.vmap.brazil.js
│       │   │   │       ├── jquery.vmap.canada.js
│       │   │   │       ├── jquery.vmap.croatia.js
│       │   │   │       ├── jquery.vmap.europe.js
│       │   │   │       ├── jquery.vmap.france.js
│       │   │   │       ├── jquery.vmap.germany.js
│       │   │   │       ├── jquery.vmap.greece.js
│       │   │   │       ├── jquery.vmap.indonesia.js
│       │   │   │       ├── jquery.vmap.iran.js
│       │   │   │       ├── jquery.vmap.iraq.js
│       │   │   │       ├── jquery.vmap.new_regions_france.js
│       │   │   │       ├── jquery.vmap.russia.js
│       │   │   │       ├── jquery.vmap.serbia.js
│       │   │   │       ├── jquery.vmap.tunisia.js
│       │   │   │       ├── jquery.vmap.turkey.js
│       │   │   │       ├── jquery.vmap.ukraine.js
│       │   │   │       ├── jquery.vmap.usa.counties.js
│       │   │   │       ├── jquery.vmap.usa.districts.js
│       │   │   │       ├── jquery.vmap.usa.js
│       │   │   │       └── jquery.vmap.world.js
│       │   │   ├── jsgrid/
│       │   │   │   ├── i18n/
│       │   │   │   │   ├── jsgrid-de.js
│       │   │   │   │   ├── jsgrid-es.js
│       │   │   │   │   ├── jsgrid-fr.js
│       │   │   │   │   ├── jsgrid-he.js
│       │   │   │   │   ├── jsgrid-ja.js
│       │   │   │   │   ├── jsgrid-ka.js
│       │   │   │   │   ├── jsgrid-pl.js
│       │   │   │   │   ├── jsgrid-pt-br.js
│       │   │   │   │   ├── jsgrid-pt.js
│       │   │   │   │   ├── jsgrid-ru.js
│       │   │   │   │   ├── jsgrid-tr.js
│       │   │   │   │   ├── jsgrid-zh-cn.js
│       │   │   │   │   └── jsgrid-zh-tw.js
│       │   │   │   ├── jsgrid-theme.css
│       │   │   │   ├── jsgrid.css
│       │   │   │   └── jsgrid.js
│       │   │   ├── jszip/
│       │   │   │   └── jszip.js
│       │   │   ├── moment/
│       │   │   │   ├── locale/
│       │   │   │   │   ├── af.js
│       │   │   │   │   ├── ar-dz.js
│       │   │   │   │   ├── ar-kw.js
│       │   │   │   │   ├── ar-ly.js
│       │   │   │   │   ├── ar-ma.js
│       │   │   │   │   ├── ar-sa.js
│       │   │   │   │   ├── ar-tn.js
│       │   │   │   │   ├── ar.js
│       │   │   │   │   ├── az.js
│       │   │   │   │   ├── be.js
│       │   │   │   │   ├── bg.js
│       │   │   │   │   ├── bm.js
│       │   │   │   │   ├── bn-bd.js
│       │   │   │   │   ├── bn.js
│       │   │   │   │   ├── bo.js
│       │   │   │   │   ├── br.js
│       │   │   │   │   ├── bs.js
│       │   │   │   │   ├── ca.js
│       │   │   │   │   ├── cs.js
│       │   │   │   │   ├── cv.js
│       │   │   │   │   ├── cy.js
│       │   │   │   │   ├── da.js
│       │   │   │   │   ├── de-at.js
│       │   │   │   │   ├── de-ch.js
│       │   │   │   │   ├── de.js
│       │   │   │   │   ├── dv.js
│       │   │   │   │   ├── el.js
│       │   │   │   │   ├── en-SG.js
│       │   │   │   │   ├── en-au.js
│       │   │   │   │   ├── en-ca.js
│       │   │   │   │   ├── en-gb.js
│       │   │   │   │   ├── en-ie.js
│       │   │   │   │   ├── en-il.js
│       │   │   │   │   ├── en-in.js
│       │   │   │   │   ├── en-nz.js
│       │   │   │   │   ├── eo.js
│       │   │   │   │   ├── es-do.js
│       │   │   │   │   ├── es-mx.js
│       │   │   │   │   ├── es-us.js
│       │   │   │   │   ├── es.js
│       │   │   │   │   ├── et.js
│       │   │   │   │   ├── eu.js
│       │   │   │   │   ├── fa.js
│       │   │   │   │   ├── fi.js
│       │   │   │   │   ├── fil.js
│       │   │   │   │   ├── fo.js
│       │   │   │   │   ├── fr-ca.js
│       │   │   │   │   ├── fr-ch.js
│       │   │   │   │   ├── fr.js
│       │   │   │   │   ├── fy.js
│       │   │   │   │   ├── ga.js
│       │   │   │   │   ├── gd.js
│       │   │   │   │   ├── gl.js
│       │   │   │   │   ├── gom-deva.js
│       │   │   │   │   ├── gom-latn.js
│       │   │   │   │   ├── gu.js
│       │   │   │   │   ├── he.js
│       │   │   │   │   ├── hi.js
│       │   │   │   │   ├── hr.js
│       │   │   │   │   ├── hu.js
│       │   │   │   │   ├── hy-am.js
│       │   │   │   │   ├── id.js
│       │   │   │   │   ├── is.js
│       │   │   │   │   ├── it-ch.js
│       │   │   │   │   ├── it.js
│       │   │   │   │   ├── ja.js
│       │   │   │   │   ├── jv.js
│       │   │   │   │   ├── ka.js
│       │   │   │   │   ├── kk.js
│       │   │   │   │   ├── km.js
│       │   │   │   │   ├── kn.js
│       │   │   │   │   ├── ko.js
│       │   │   │   │   ├── ku.js
│       │   │   │   │   ├── ky.js
│       │   │   │   │   ├── lb.js
│       │   │   │   │   ├── lo.js
│       │   │   │   │   ├── lt.js
│       │   │   │   │   ├── lv.js
│       │   │   │   │   ├── me.js
│       │   │   │   │   ├── mi.js
│       │   │   │   │   ├── mk.js
│       │   │   │   │   ├── ml.js
│       │   │   │   │   ├── mn.js
│       │   │   │   │   ├── mr.js
│       │   │   │   │   ├── ms-my.js
│       │   │   │   │   ├── ms.js
│       │   │   │   │   ├── mt.js
│       │   │   │   │   ├── my.js
│       │   │   │   │   ├── nb.js
│       │   │   │   │   ├── ne.js
│       │   │   │   │   ├── nl-be.js
│       │   │   │   │   ├── nl.js
│       │   │   │   │   ├── nn.js
│       │   │   │   │   ├── oc-lnc.js
│       │   │   │   │   ├── pa-in.js
│       │   │   │   │   ├── pl.js
│       │   │   │   │   ├── pt-br.js
│       │   │   │   │   ├── pt.js
│       │   │   │   │   ├── ro.js
│       │   │   │   │   ├── ru.js
│       │   │   │   │   ├── sd.js
│       │   │   │   │   ├── se.js
│       │   │   │   │   ├── si.js
│       │   │   │   │   ├── sk.js
│       │   │   │   │   ├── sl.js
│       │   │   │   │   ├── sq.js
│       │   │   │   │   ├── sr-cyrl.js
│       │   │   │   │   ├── sr.js
│       │   │   │   │   ├── ss.js
│       │   │   │   │   ├── sv.js
│       │   │   │   │   ├── sw.js
│       │   │   │   │   ├── ta.js
│       │   │   │   │   ├── te.js
│       │   │   │   │   ├── tet.js
│       │   │   │   │   ├── tg.js
│       │   │   │   │   ├── th.js
│       │   │   │   │   ├── tk.js
│       │   │   │   │   ├── tl-ph.js
│       │   │   │   │   ├── tlh.js
│       │   │   │   │   ├── tr.js
│       │   │   │   │   ├── tzl.js
│       │   │   │   │   ├── tzm-latn.js
│       │   │   │   │   ├── tzm.js
│       │   │   │   │   ├── ug-cn.js
│       │   │   │   │   ├── uk.js
│       │   │   │   │   ├── ur.js
│       │   │   │   │   ├── uz-latn.js
│       │   │   │   │   ├── uz.js
│       │   │   │   │   ├── vi.js
│       │   │   │   │   ├── x-pseudo.js
│       │   │   │   │   ├── yo.js
│       │   │   │   │   ├── zh-cn.js
│       │   │   │   │   ├── zh-hk.js
│       │   │   │   │   ├── zh-mo.js
│       │   │   │   │   └── zh-tw.js
│       │   │   │   ├── locales.js
│       │   │   │   └── moment-with-locales.js
│       │   │   ├── overlayScrollbars/
│       │   │   │   ├── css/
│       │   │   │   │   └── OverlayScrollbars.css
│       │   │   │   └── js/
│       │   │   │       ├── OverlayScrollbars.js
│       │   │   │       └── jquery.overlayScrollbars.js
│       │   │   ├── pace-progress/
│       │   │   │   ├── pace.js
│       │   │   │   └── themes/
│       │   │   │       ├── black/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── blue/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── green/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── orange/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── pink/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── purple/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── red/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── silver/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       ├── white/
│       │   │   │       │   ├── pace-theme-barber-shop.css
│       │   │   │       │   ├── pace-theme-big-counter.css
│       │   │   │       │   ├── pace-theme-bounce.css
│       │   │   │       │   ├── pace-theme-center-atom.css
│       │   │   │       │   ├── pace-theme-center-circle.css
│       │   │   │       │   ├── pace-theme-center-radar.css
│       │   │   │       │   ├── pace-theme-center-simple.css
│       │   │   │       │   ├── pace-theme-corner-indicator.css
│       │   │   │       │   ├── pace-theme-fill-left.css
│       │   │   │       │   ├── pace-theme-flash.css
│       │   │   │       │   ├── pace-theme-flat-top.css
│       │   │   │       │   ├── pace-theme-loading-bar.css
│       │   │   │       │   ├── pace-theme-mac-osx.css
│       │   │   │       │   ├── pace-theme-material.css
│       │   │   │       │   └── pace-theme-minimal.css
│       │   │   │       └── yellow/
│       │   │   │           ├── pace-theme-barber-shop.css
│       │   │   │           ├── pace-theme-big-counter.css
│       │   │   │           ├── pace-theme-bounce.css
│       │   │   │           ├── pace-theme-center-atom.css
│       │   │   │           ├── pace-theme-center-circle.css
│       │   │   │           ├── pace-theme-center-radar.css
│       │   │   │           ├── pace-theme-center-simple.css
│       │   │   │           ├── pace-theme-corner-indicator.css
│       │   │   │           ├── pace-theme-fill-left.css
│       │   │   │           ├── pace-theme-flash.css
│       │   │   │           ├── pace-theme-flat-top.css
│       │   │   │           ├── pace-theme-loading-bar.css
│       │   │   │           ├── pace-theme-mac-osx.css
│       │   │   │           ├── pace-theme-material.css
│       │   │   │           └── pace-theme-minimal.css
│       │   │   ├── pdfmake/
│       │   │   │   ├── pdfmake.js
│       │   │   │   └── vfs_fonts.js
│       │   │   ├── popper/
│       │   │   │   ├── esm/
│       │   │   │   │   ├── popper-utils.js
│       │   │   │   │   └── popper.js
│       │   │   │   ├── popper-utils.js
│       │   │   │   ├── popper.js
│       │   │   │   └── umd/
│       │   │   │       ├── popper-utils.js
│       │   │   │       ├── popper.js
│       │   │   │       └── popper.js.flow
│       │   │   ├── raphael/
│       │   │   │   ├── Gruntfile.js
│       │   │   │   ├── license.txt
│       │   │   │   ├── raphael.js
│       │   │   │   └── raphael.no-deps.js
│       │   │   ├── select2/
│       │   │   │   ├── css/
│       │   │   │   │   └── select2.css
│       │   │   │   └── js/
│       │   │   │       ├── i18n/
│       │   │   │       │   ├── af.js
│       │   │   │       │   ├── ar.js
│       │   │   │       │   ├── az.js
│       │   │   │       │   ├── bg.js
│       │   │   │       │   ├── bn.js
│       │   │   │       │   ├── bs.js
│       │   │   │       │   ├── build.txt
│       │   │   │       │   ├── ca.js
│       │   │   │       │   ├── cs.js
│       │   │   │       │   ├── da.js
│       │   │   │       │   ├── de.js
│       │   │   │       │   ├── dsb.js
│       │   │   │       │   ├── el.js
│       │   │   │       │   ├── en.js
│       │   │   │       │   ├── es.js
│       │   │   │       │   ├── et.js
│       │   │   │       │   ├── eu.js
│       │   │   │       │   ├── fa.js
│       │   │   │       │   ├── fi.js
│       │   │   │       │   ├── fr.js
│       │   │   │       │   ├── gl.js
│       │   │   │       │   ├── he.js
│       │   │   │       │   ├── hi.js
│       │   │   │       │   ├── hr.js
│       │   │   │       │   ├── hsb.js
│       │   │   │       │   ├── hu.js
│       │   │   │       │   ├── hy.js
│       │   │   │       │   ├── id.js
│       │   │   │       │   ├── is.js
│       │   │   │       │   ├── it.js
│       │   │   │       │   ├── ja.js
│       │   │   │       │   ├── ka.js
│       │   │   │       │   ├── km.js
│       │   │   │       │   ├── ko.js
│       │   │   │       │   ├── lt.js
│       │   │   │       │   ├── lv.js
│       │   │   │       │   ├── mk.js
│       │   │   │       │   ├── ms.js
│       │   │   │       │   ├── nb.js
│       │   │   │       │   ├── ne.js
│       │   │   │       │   ├── nl.js
│       │   │   │       │   ├── pl.js
│       │   │   │       │   ├── ps.js
│       │   │   │       │   ├── pt-BR.js
│       │   │   │       │   ├── pt.js
│       │   │   │       │   ├── ro.js
│       │   │   │       │   ├── ru.js
│       │   │   │       │   ├── sk.js
│       │   │   │       │   ├── sl.js
│       │   │   │       │   ├── sq.js
│       │   │   │       │   ├── sr-Cyrl.js
│       │   │   │       │   ├── sr.js
│       │   │   │       │   ├── sv.js
│       │   │   │       │   ├── th.js
│       │   │   │       │   ├── tk.js
│       │   │   │       │   ├── tr.js
│       │   │   │       │   ├── uk.js
│       │   │   │       │   ├── vi.js
│       │   │   │       │   ├── zh-CN.js
│       │   │   │       │   └── zh-TW.js
│       │   │   │       ├── select2.full.js
│       │   │   │       └── select2.js
│       │   │   ├── select2-bootstrap4-theme/
│       │   │   │   └── select2-bootstrap4.css
│       │   │   ├── sparklines/
│       │   │   │   ├── sparkline.js
│       │   │   │   └── sparkline.mjs
│       │   │   ├── summernote/
│       │   │   │   ├── lang/
│       │   │   │   │   ├── summernote-ar-AR.js
│       │   │   │   │   ├── summernote-ar-AR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-az-AZ.js
│       │   │   │   │   ├── summernote-az-AZ.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-bg-BG.js
│       │   │   │   │   ├── summernote-bg-BG.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ca-ES.js
│       │   │   │   │   ├── summernote-ca-ES.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-cs-CZ.js
│       │   │   │   │   ├── summernote-cs-CZ.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-da-DK.js
│       │   │   │   │   ├── summernote-da-DK.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-de-DE.js
│       │   │   │   │   ├── summernote-de-DE.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-el-GR.js
│       │   │   │   │   ├── summernote-el-GR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-es-ES.js
│       │   │   │   │   ├── summernote-es-ES.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-es-EU.js
│       │   │   │   │   ├── summernote-es-EU.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-fa-IR.js
│       │   │   │   │   ├── summernote-fa-IR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-fi-FI.js
│       │   │   │   │   ├── summernote-fi-FI.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-fr-FR.js
│       │   │   │   │   ├── summernote-fr-FR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-gl-ES.js
│       │   │   │   │   ├── summernote-gl-ES.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-he-IL.js
│       │   │   │   │   ├── summernote-he-IL.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-hr-HR.js
│       │   │   │   │   ├── summernote-hr-HR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-hu-HU.js
│       │   │   │   │   ├── summernote-hu-HU.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-id-ID.js
│       │   │   │   │   ├── summernote-id-ID.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-it-IT.js
│       │   │   │   │   ├── summernote-it-IT.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ja-JP.js
│       │   │   │   │   ├── summernote-ja-JP.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ko-KR.js
│       │   │   │   │   ├── summernote-ko-KR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-lt-LT.js
│       │   │   │   │   ├── summernote-lt-LT.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-lt-LV.js
│       │   │   │   │   ├── summernote-lt-LV.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-mn-MN.js
│       │   │   │   │   ├── summernote-mn-MN.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-nb-NO.js
│       │   │   │   │   ├── summernote-nb-NO.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-nl-NL.js
│       │   │   │   │   ├── summernote-nl-NL.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-pl-PL.js
│       │   │   │   │   ├── summernote-pl-PL.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-pt-BR.js
│       │   │   │   │   ├── summernote-pt-BR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-pt-PT.js
│       │   │   │   │   ├── summernote-pt-PT.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ro-RO.js
│       │   │   │   │   ├── summernote-ro-RO.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ru-RU.js
│       │   │   │   │   ├── summernote-ru-RU.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sk-SK.js
│       │   │   │   │   ├── summernote-sk-SK.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sl-SI.js
│       │   │   │   │   ├── summernote-sl-SI.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sr-RS-Latin.js
│       │   │   │   │   ├── summernote-sr-RS-Latin.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sr-RS.js
│       │   │   │   │   ├── summernote-sr-RS.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-sv-SE.js
│       │   │   │   │   ├── summernote-sv-SE.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-ta-IN.js
│       │   │   │   │   ├── summernote-ta-IN.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-th-TH.js
│       │   │   │   │   ├── summernote-th-TH.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-tr-TR.js
│       │   │   │   │   ├── summernote-tr-TR.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-uk-UA.js
│       │   │   │   │   ├── summernote-uk-UA.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-uz-UZ.js
│       │   │   │   │   ├── summernote-uz-UZ.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-vi-VN.js
│       │   │   │   │   ├── summernote-vi-VN.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-zh-CN.js
│       │   │   │   │   ├── summernote-zh-CN.min.js.LICENSE.txt
│       │   │   │   │   ├── summernote-zh-TW.js
│       │   │   │   │   └── summernote-zh-TW.min.js.LICENSE.txt
│       │   │   │   ├── plugin/
│       │   │   │   │   ├── databasic/
│       │   │   │   │   │   ├── summernote-ext-databasic.css
│       │   │   │   │   │   └── summernote-ext-databasic.js
│       │   │   │   │   ├── hello/
│       │   │   │   │   │   └── summernote-ext-hello.js
│       │   │   │   │   └── specialchars/
│       │   │   │   │       └── summernote-ext-specialchars.js
│       │   │   │   ├── summernote-bs4.css
│       │   │   │   ├── summernote-bs4.js
│       │   │   │   ├── summernote-bs4.min.js.LICENSE.txt
│       │   │   │   ├── summernote-lite.css
│       │   │   │   ├── summernote-lite.js
│       │   │   │   ├── summernote-lite.min.js.LICENSE.txt
│       │   │   │   ├── summernote.css
│       │   │   │   ├── summernote.js
│       │   │   │   └── summernote.min.js.LICENSE.txt
│       │   │   ├── sweetalert2/
│       │   │   │   ├── sweetalert2.all.js
│       │   │   │   ├── sweetalert2.css
│       │   │   │   └── sweetalert2.js
│       │   │   ├── sweetalert2-theme-bootstrap-4/
│       │   │   │   └── bootstrap-4.css
│       │   │   ├── tempusdominus-bootstrap-4/
│       │   │   │   ├── css/
│       │   │   │   │   └── tempusdominus-bootstrap-4.css
│       │   │   │   └── js/
│       │   │   │       └── tempusdominus-bootstrap-4.js
│       │   │   ├── toastr/
│       │   │   │   └── toastr.css
│       │   │   └── uplot/
│       │   │       ├── uPlot.cjs.js
│       │   │       ├── uPlot.esm.js
│       │   │       └── uPlot.iife.js
│       │   └── starter.html
│       ├── README.md
│       ├── package.json
│       ├── public/
│       │   ├── index.html
│       │   ├── manifest.json
│       │   └── robots.txt
│       ├── src/
│       │   ├── App.test.tsx
│       │   ├── App.tsx
│       │   ├── Helper/
│       │   │   └── index.ts
│       │   ├── Hooks/
│       │   │   └── useApi.ts
│       │   ├── api/
│       │   │   └── commonApi.ts
│       │   ├── assets/
│       │   │   ├── css/
│       │   │   │   ├── adminlte.css
│       │   │   │   └── alt/
│       │   │   │       ├── adminlte.components.css
│       │   │   │       ├── adminlte.core.css
│       │   │   │       ├── adminlte.extra-components.css
│       │   │   │       ├── adminlte.pages.css
│       │   │   │       └── adminlte.plugins.css
│       │   │   └── plugins/
│       │   │       └── fontawesome-free/
│       │   │           └── css/
│       │   │               ├── all.css
│       │   │               ├── brands.css
│       │   │               ├── fontawesome.css
│       │   │               ├── regular.css
│       │   │               ├── solid.css
│       │   │               ├── svg-with-js.css
│       │   │               └── v4-shims.css
│       │   ├── index.tsx
│       │   ├── pages/
│       │   │   ├── ErrorPage/
│       │   │   │   └── Error404.tsx
│       │   │   └── Register/
│       │   │       └── Register.tsx
│       │   ├── react-app-env.d.ts
│       │   ├── redux/
│       │   │   ├── auth/
│       │   │   │   ├── authReducer.ts
│       │   │   │   └── authTypes.ts
│       │   │   ├── root-reducer.ts
│       │   │   └── store.ts
│       │   ├── reportWebVitals.ts
│       │   ├── routes/
│       │   │   └── index.tsx
│       │   ├── setupTests.ts
│       │   └── stories/
│       │       ├── Button.stories.tsx
│       │       ├── Button.tsx
│       │       ├── Header.stories.tsx
│       │       ├── Header.tsx
│       │       ├── Introduction.stories.mdx
│       │       ├── Page.stories.tsx
│       │       ├── Page.tsx
│       │       ├── button.css
│       │       ├── header.css
│       │       └── page.css
│       └── tsconfig.json
└── web-and-server/
    ├── .eslintrc.json
    ├── .gitignore
    ├── README.md
    ├── next.config.js
    ├── package.json
    ├── pages/
    │   ├── _app.tsx
    │   ├── _document.tsx
    │   ├── api/
    │   │   └── hello.ts
    │   └── index.tsx
    ├── styles/
    │   ├── Home.module.css
    │   └── globals.css
    └── tsconfig.json
Download .txt
Showing preview only (704K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8420 symbols across 381 files)

FILE: thisMyPCApp/assets/js/home.js
  class Home (line 48) | class Home {
    method constructor (line 52) | constructor() {
    method isFile (line 60) | isFile(pathFile) {
    method fileSize (line 69) | fileSize(bytes, si) {
    method timeStampToDateTimeText (line 88) | timeStampToDateTimeText(t) {
    method fileInfo (line 95) | fileInfo(pathFile) {
    method fileInfoByPath (line 105) | fileInfoByPath(pathFile) {
    method getHDDList (line 113) | getHDDList() {
    method logOut (line 130) | logOut() {}
    method getUserInfo (line 134) | getUserInfo() {
    method getPcInfo (line 155) | getPcInfo() {
    method readFolder (line 169) | readFolder(path) {
    method isThisFile (line 188) | isThisFile(path) {
    method install (line 204) | install() {

FILE: thisMyPCApp/assets/libs/socket.io.js
  function e (line 6) | function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,lo...
  function r (line 6) | function r(t,e){"object"===("undefined"==typeof t?"undefined":o(t))&&(e=...
  function r (line 6) | function r(t,n){var r=t;n=n||e.location,null==t&&(t=n.protocol+"//"+n.ho...
  function o (line 6) | function o(){return!("undefined"==typeof window||!window.process||"rende...
  function i (line 6) | function i(t){var n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n...
  function s (line 6) | function s(){return"object"==typeof console&&console.log&&Function.proto...
  function a (line 6) | function a(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=...
  function c (line 6) | function c(){var t;try{t=e.storage.debug}catch(n){}return!t&&"undefined"...
  function u (line 6) | function u(){try{return window.localStorage}catch(t){}}
  function n (line 6) | function n(){throw new Error("setTimeout has not been defined")}
  function r (line 6) | function r(){throw new Error("clearTimeout has not been defined")}
  function o (line 6) | function o(t){if(p===setTimeout)return setTimeout(t,0);if((p===n||!p)&&s...
  function i (line 6) | function i(t){if(h===clearTimeout)return clearTimeout(t);if((h===r||!h)&...
  function s (line 6) | function s(){y&&l&&(y=!1,l.length?d=l.concat(d):m=-1,d.length&&a())}
  function a (line 6) | function a(){if(!y){var t=o(s);y=!0;for(var e=d.length;e;){for(l=d,d=[];...
  function c (line 6) | function c(t,e){this.fun=t,this.array=e}
  function u (line 6) | function u(){}
  function r (line 6) | function r(t){var n,r=0;for(n in t)r=(r<<5)-r+t.charCodeAt(n),r|=0;retur...
  function o (line 6) | function o(t){function n(){if(n.enabled){var t=n,r=+new Date,i=r-(o||r);...
  function i (line 6) | function i(){var t=e.instances.indexOf(this);return t!==-1&&(e.instances...
  function s (line 6) | function s(t){e.save(t),e.names=[],e.skips=[];var n,r=("string"==typeof ...
  function a (line 6) | function a(){e.enable("")}
  function c (line 6) | function c(t){if("*"===t[t.length-1])return!0;var n,r;for(n=0,r=e.skips....
  function u (line 6) | function u(t){return t instanceof Error?t.stack||t.message:t}
  function n (line 6) | function n(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *...
  function r (line 6) | function r(t){return t>=u?Math.round(t/u)+"d":t>=c?Math.round(t/c)+"h":t...
  function o (line 6) | function o(t){return i(t,u,"day")||i(t,c,"hour")||i(t,a,"minute")||i(t,s...
  function i (line 6) | function i(t,e,n){if(!(t<e))return t<1.5*e?Math.floor(t/e)+" "+n:Math.ce...
  function r (line 6) | function r(){}
  function o (line 6) | function o(t){var n=""+t.type;if(e.BINARY_EVENT!==t.type&&e.BINARY_ACK!=...
  function i (line 6) | function i(t){try{return JSON.stringify(t)}catch(e){return!1}}
  function s (line 6) | function s(t,e){function n(t){var n=d.deconstructPacket(t),r=o(n.packet)...
  function a (line 6) | function a(){this.reconstructor=null}
  function c (line 6) | function c(t){var n=0,r={type:Number(t.charAt(0))};if(null==e.types[r.ty...
  function u (line 6) | function u(t){try{return JSON.parse(t)}catch(e){return!1}}
  function p (line 6) | function p(t){this.reconPack=t,this.buffers=[]}
  function h (line 6) | function h(t){return{type:e.ERROR,data:"parser error: "+t}}
  function r (line 6) | function r(t){if(t)return o(t)}
  function o (line 6) | function o(t){for(var e in r.prototype)t[e]=r.prototype[e];return t}
  function n (line 6) | function n(){this.off(t,n),e.apply(this,arguments)}
  function r (line 6) | function r(t,e){if(!t)return t;if(s(t)){var n={_placeholder:!0,num:e.len...
  function o (line 6) | function o(t,e){if(!t)return t;if(t&&t._placeholder)return e[t.num];if(i...
  function n (line 6) | function n(t,a,p){if(!t)return t;if(c&&t instanceof Blob||u&&t instanceo...
  function n (line 6) | function n(t){return r&&e.Buffer.isBuffer(t)||o&&(t instanceof e.ArrayBu...
  function r (line 6) | function r(t,e){if(!(this instanceof r))return new r(t,e);t&&"object"===...
  function n (line 6) | function n(){~f(o.connecting,r)||o.connecting.push(r)}
  function r (line 6) | function r(t,n){if(!(this instanceof r))return new r(t,n);n=n||{},t&&"ob...
  function o (line 6) | function o(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);r...
  function e (line 6) | function e(){if(f.onlyBinaryUpgrades){var e=!this.supportsBinary&&f.tran...
  function n (line 6) | function n(){h||(h=!0,u(),p.close(),p=null)}
  function o (line 6) | function o(e){var r=new Error("probe error: "+e);r.transport=p.name,n(),...
  function i (line 6) | function i(){o("transport closed")}
  function s (line 6) | function s(){o("socket closed")}
  function c (line 6) | function c(t){p&&t.name!==p.name&&(a('"%s" works - aborting "%s"',t.name...
  function u (line 6) | function u(){p.removeListener("open",e),p.removeListener("error",o),p.re...
  function t (line 6) | function t(){r.onClose("forced close"),a("socket closing - telling trans...
  function e (line 6) | function e(){r.removeListener("upgrade",e),r.removeListener("upgradeErro...
  function n (line 6) | function n(){r.once("upgrade",e),r.once("upgradeError",e)}
  function r (line 6) | function r(e){var n,r=!1,a=!1,c=!1!==e.jsonp;if(t.location){var u="https...
  function r (line 7) | function r(){}
  function o (line 7) | function o(t){if(c.call(this,t),this.requestTimeout=t.requestTimeout,thi...
  function i (line 7) | function i(t){this.method=t.method||"GET",this.uri=t.uri,this.xd=!!t.xd,...
  function s (line 7) | function s(){for(var t in i.requests)i.requests.hasOwnProperty(t)&&i.req...
  function r (line 7) | function r(t){var e=t&&t.forceBase64;p&&!e||(this.supportsBinary=!1),o.c...
  function e (line 7) | function e(){u("paused"),n.readyState="paused",t()}
  function t (line 7) | function t(){u("writing close packet"),e.write([{type:"close"}])}
  function r (line 7) | function r(t){this.path=t.path,this.hostname=t.hostname,this.port=t.port...
  function r (line 7) | function r(t,n){var r="b"+e.packets[t.type]+t.data.data;return n(r)}
  function o (line 7) | function o(t,n,r){if(!n)return e.encodeBase64Packet(t,r);var o=t.data,i=...
  function i (line 7) | function i(t,n,r){if(!n)return e.encodeBase64Packet(t,r);var o=new FileR...
  function s (line 7) | function s(t,n,r){if(!n)return e.encodeBase64Packet(t,r);if(g)return i(t...
  function a (line 7) | function a(t){try{t=d.decode(t,{strict:!1})}catch(e){return!1}return t}
  function c (line 7) | function c(t,e,n){for(var r=new Array(t.length),o=l(t.length,n),i=functi...
  function o (line 7) | function o(t){return t.length+":"+t}
  function i (line 7) | function i(t,r){e.encodePacket(t,!!s&&n,!1,function(t){r(null,o(t))})}
  function r (line 7) | function r(t,n){e.encodePacket(t,!0,!0,function(t){return n(null,t)})}
  function r (line 7) | function r(t,n){e.encodePacket(t,!0,!0,function(t){var e=new Uint8Array(...
  function r (line 7) | function r(t){if(!t||"object"!=typeof t)return!1;if(o(t)){for(var n=0,i=...
  function n (line 7) | function n(t,e,n){function o(t,r){if(o.count<=0)throw new Error("after c...
  function r (line 7) | function r(){}
  function s (line 7) | function s(t){for(var e,n,r=[],o=0,i=t.length;o<i;)e=t.charCodeAt(o++),e...
  function a (line 7) | function a(t){for(var e,n=t.length,r=-1,o="";++r<n;)e=t[r],e>65535&&(e-=...
  function c (line 7) | function c(t,e){if(t>=55296&&t<=57343){if(e)throw Error("Lone surrogate ...
  function u (line 7) | function u(t,e){return w(t>>e&63|128)}
  function p (line 7) | function p(t,e){if(0==(4294967168&t))return w(t);var n="";return 0==(429...
  function h (line 7) | function h(t,e){e=e||{};for(var n,r=!1!==e.strict,o=s(t),i=o.length,a=-1...
  function f (line 7) | function f(){if(b>=v)throw Error("Invalid byte index");var t=255&g[b];if...
  function l (line 7) | function l(t){var e,n,r,o,i;if(b>v)throw Error("Invalid byte index");if(...
  function d (line 7) | function d(t,e){e=e||{};var n=!1!==e.strict;g=s(t),v=g.length,b=0;for(va...
  function n (line 7) | function n(t){for(var e=0;e<t.length;e++){var n=t[e];if(n.buffer instanc...
  function r (line 7) | function r(t,e){e=e||{};var r=new i;n(t);for(var o=0;o<t.length;o++)r.ap...
  function o (line 7) | function o(t,e){return n(t),new Blob(t,e||{})}
  function n (line 7) | function n(t){var e="";do e=s[t%a]+e,t=Math.floor(t/a);while(t>0);return e}
  function r (line 7) | function r(t){var e=0;for(p=0;p<t.length;p++)e=e*a+c[t.charAt(p)];return e}
  function o (line 7) | function o(){var t=n(+new Date);return t!==i?(u=0,i=t):t+"."+n(u++)}
  function r (line 7) | function r(){}
  function o (line 7) | function o(t){i.call(this,t),this.query=this.query||{},a||(e.___eio||(e....
  function n (line 7) | function n(){r(),e()}
  function r (line 7) | function r(){if(o.iframe)try{o.form.removeChild(o.iframe)}catch(t){o.onE...
  function r (line 7) | function r(t){var e=t&&t.forceBase64;e&&(this.supportsBinary=!1),this.pe...
  function n (line 7) | function n(){r.emit("flush"),setTimeout(function(){r.writable=!0,r.emit(...
  function r (line 7) | function r(t,e,n){this.io=t,this.nsp=e,this.json=this,this.ids=0,this.ac...
  function n (line 7) | function n(t,e){var n=[];e=e||0;for(var r=e||0;r<t.length;r++)n[r-e]=t[r...
  function n (line 7) | function n(t,e,n){return t.on(e,n),{destroy:function(){t.removeListener(...
  function n (line 7) | function n(t){t=t||{},this.ms=t.min||100,this.max=t.max||1e4,this.factor...

FILE: thisMyPCApp/main.js
  function createWindow (line 16) | function createWindow() {

FILE: thisMyPCServer/components/api.components.js
  class ApiComponent (line 6) | class ApiComponent {
    method constructor (line 7) | constructor() {
    method respond (line 11) | respond(type, msg, data) {

FILE: thisMyPCServer/components/computer.components.js
  class ComputerComponent (line 11) | class ComputerComponent extends UserComponent {
    method constructor (line 12) | constructor() {
    method deconstructionComputerObject (line 17) | deconstructionComputerObject() {
    method getComputerDataFromDBUsingUserID (line 21) | async getComputerDataFromDBUsingUserID(userID) {
    method getComputerDataFromDBUsingUserIdAndComputerKey (line 29) | async getComputerDataFromDBUsingUserIdAndComputerKey(userID, computerK...
    method getComputerKey (line 37) | getComputerKey() {
    method getUserID (line 44) | getUserID() {}
    method getPublicAccessKey (line 48) | getPublicAccessKey() {
    method getPublicAccessStatus (line 55) | getPublicAccessStatus() {}
    method getPcName (line 59) | getPcName() {}
    method getPlatform (line 63) | getPlatform() {}
    method getPcOnline (line 67) | getPcOnline() {}
    method getComputerAuthentication (line 71) | getComputerAuthentication() {
    method getComputerUserInformation (line 78) | async getComputerUserInformation(userID) {
    method authentication (line 94) | async authentication(res, userID, authentication_key, computerKey) {
    method updateAppUserAuth (line 106) | async updateAppUserAuth(user, pcKey) {
    method getComputer (line 120) | getComputer() {
    method setComputer (line 127) | setComputer(data) {

FILE: thisMyPCServer/components/logger.js
  class Logger (line 7) | class Logger {
    method log (line 11) | log(message) {

FILE: thisMyPCServer/components/user.components.js
  class UserComponent (line 9) | class UserComponent extends ApiComponent {
    method constructor (line 10) | constructor() {
    method deconstructionUserObject (line 18) | deconstructionUserObject() {
    method getUserDataFromDB (line 28) | async getUserDataFromDB(userID) {
    method setUserDataToClass (line 38) | setUserDataToClass(userData) {
    method allUserData (line 46) | allUserData() {
    method userFirstName (line 52) | userFirstName(type=false) {
    method userLastName (line 59) | userLastName(type=false) {
    method userEmail (line 66) | userEmail(type=false) {
    method userID (line 73) | userID(type=false) {
    method getUser (line 80) | getUser() {
    method getAuthenticationKey (line 88) | getAuthenticationKey() {
    method authentication (line 98) | async authentication(res, userID, authentication_key) {

FILE: thisMyPCServer/index.js
  function respond (line 43) | function respond(type, msg, data) {
  function updateAppUserAuth (line 698) | async function updateAppUserAuth(user, pcKey) {
  function getUserSocketID (line 848) | async function getUserSocketID(pcData, user) {
  function getPCSocketID (line 874) | async function getPCSocketID(user, pcKeyPublic, callback) {

FILE: thisMyPCWeb/angular-deprecated/e2e/protractor.conf.js
  method onPrepare (line 22) | onPrepare() {

FILE: thisMyPCWeb/angular-deprecated/e2e/src/app.po.ts
  class AppPage (line 3) | class AppPage {
    method navigateTo (line 4) | navigateTo() {
    method getTitleText (line 8) | getTitleText() {

FILE: thisMyPCWeb/angular-deprecated/src/app/app-routing.module.ts
  class AppRoutingModule (line 10) | class AppRoutingModule { }

FILE: thisMyPCWeb/angular-deprecated/src/app/app.component.ts
  class AppComponent (line 8) | class AppComponent {

FILE: thisMyPCWeb/angular-deprecated/src/app/app.module.ts
  class AppModule (line 42) | class AppModule {

FILE: thisMyPCWeb/angular-deprecated/src/app/auth/auth.guard.ts
  class AuthGuard (line 9) | class AuthGuard implements CanActivate {
    method constructor (line 10) | constructor(private authService: AuthService, private router: Router) {}
    method canActivate (line 12) | canActivate(
    method checkLogin (line 20) | checkLogin(url: string): boolean {

FILE: thisMyPCWeb/angular-deprecated/src/app/auth/auth.service.ts
  class AuthService (line 9) | class AuthService {
    method login (line 15) | login(): Observable<boolean> {
    method logout (line 24) | logout(): void {

FILE: thisMyPCWeb/angular-deprecated/src/app/components/account/account.component.ts
  class AccountComponent (line 25) | class AccountComponent implements OnInit {
    method constructor (line 55) | constructor(private http: HttpClient, private router: Router, private ...
    method ngOnInit (line 71) | ngOnInit() {
    method onUpdate (line 117) | onUpdate(e) {
    method onUpdatePassword (line 149) | onUpdatePassword(e) {
    method allowPublic (line 177) | allowPublic(id, index, e) {
    method logout (line 205) | logout() {

FILE: thisMyPCWeb/angular-deprecated/src/app/components/home/home.component.ts
  class HomeComponent (line 23) | class HomeComponent implements OnInit {
    method constructor (line 31) | constructor(private http: HttpClient, private router: Router) {}
    method ngOnInit (line 32) | ngOnInit() {
    method resetModel (line 40) | resetModel() {
    method onSubmit (line 44) | onSubmit(e) {
    method onRegister (line 80) | onRegister(e) {

FILE: thisMyPCWeb/angular-deprecated/src/app/components/system/system.component.ts
  class SystemComponent (line 27) | class SystemComponent implements OnInit {
    method constructor (line 89) | constructor(private http: HttpClient, private router: Router, private ...
    method processAlert (line 110) | processAlert(e) {
    method breadcrumb (line 117) | breadcrumb(path) {
    method downloadPercentage (line 135) | downloadPercentage(total, now) {
    method ngOnInit (line 139) | ngOnInit() {
    method openDrive (line 293) | openDrive(path, i) {
    method openFolder (line 314) | openFolder(path, fileName) {
    method fileOption (line 331) | fileOption(info) {
    method logout (line 335) | logout() {
    method selectPC (line 354) | selectPC(pcID) {
    method pcInfo (line 377) | pcInfo() {
    method getAccessToPC (line 388) | getAccessToPC() {
    method getPCScreenShot (line 408) | getPCScreenShot() {
    method propertyFunction (line 420) | propertyFunction(e) {
    method validateFolder (line 423) | validateFolder(e) {
    method downloadFile (line 446) | downloadFile(folder) {

FILE: thisMyPCWeb/angular-deprecated/src/app/guards/auth-guard.service.ts
  class AuthGuard (line 10) | class AuthGuard implements CanActivate {
    method constructor (line 12) | constructor(private router: Router , private http: HttpClient) {
    method canActivate (line 15) | canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot):...

FILE: thisMyPCWeb/angular-deprecated/src/assets/js/intro.js
  function IntroJs (line 42) | function IntroJs(obj) {
  function _introForElement (line 117) | function _introForElement(targetElm, group) {
  function _onResize (line 281) | function _onResize () {
  function _onKeyDown (line 303) | function _onKeyDown (e) {
  function _cloneObject (line 356) | function _cloneObject(object) {
  function _goToStep (line 376) | function _goToStep(step) {
  function _goToStepNumber (line 390) | function _goToStepNumber(step) {
  function _nextStep (line 403) | function _nextStep() {
  function _previousStep (line 453) | function _previousStep() {
  function _refresh (line 482) | function _refresh() {
  function _exitIntro (line 509) | function _exitIntro(targetElement, force) {
  function _placeTooltip (line 592) | function _placeTooltip(targetElement, tooltipLayer, arrowLayer, helperNu...
  function _checkRight (line 766) | function _checkRight(targetOffset, tooltipLayerStyleLeft, tooltipOffset,...
  function _checkLeft (line 781) | function _checkLeft(targetOffset, tooltipLayerStyleRight, tooltipOffset,...
  function _determineAutoPosition (line 800) | function _determineAutoPosition(targetElement, tooltipLayer, desiredTool...
  function _determineAutoAlignment (line 882) | function _determineAutoAlignment (offsetLeft, tooltipWidth, windowSize, ...
  function _removeEntry (line 931) | function _removeEntry(stringArray, stringToRemove) {
  function _setHelperLayerPosition (line 944) | function _setHelperLayerPosition(helperLayer) {
  function _disableInteraction (line 981) | function _disableInteraction() {
  function _setAnchorAsButton (line 999) | function _setAnchorAsButton(anchor){
  function _showElement (line 1011) | function _showElement(targetElement) {
  function _scrollTo (line 1392) | function _scrollTo(scrollTo, targetElement, tooltipLayer) {
  function _removeShowElement (line 1428) | function _removeShowElement() {
  function _setShowElement (line 1444) | function _setShowElement(targetElement) {
  function _forEach (line 1497) | function _forEach(arr, forEachFnc, completeFnc) {
  function DOMEvent (line 1547) | function DOMEvent () {
  function _addClass (line 1629) | function _addClass(element, className) {
  function _removeClass (line 1658) | function _removeClass(element, classNameRegex) {
  function _getPropValue (line 1678) | function _getPropValue (element, propName) {
  function _isFixed (line 1702) | function _isFixed (element) {
  function _getWinSize (line 1724) | function _getWinSize() {
  function _elementInViewport (line 1741) | function _elementInViewport(el) {
  function _addOverlayLayer (line 1759) | function _addOverlayLayer(targetElm) {
  function _removeHintTooltip (line 1802) | function _removeHintTooltip() {
  function _populateHints (line 1819) | function _populateHints(targetElm) {
  function _reAlignHints (line 1884) | function _reAlignHints() {
  function _hintQuerySelectorAll (line 1900) | function _hintQuerySelectorAll(selector) {
  function _hideHint (line 1911) | function _hideHint(stepId) {
  function _hideHints (line 1932) | function _hideHints() {
  function _showHints (line 1946) | function _showHints() {
  function _showHint (line 1964) | function _showHint(stepId) {
  function _removeHints (line 1979) | function _removeHints() {
  function _removeHint (line 1995) | function _removeHint(stepId) {
  function _addHints (line 2009) | function _addHints() {
  function _alignHintPosition (line 2101) | function _alignHintPosition(position, hint, element) {
  function _showHintDialog (line 2156) | function _showHintDialog(stepId) {
  function _getOffset (line 2234) | function _getOffset(element) {
  function _getScrollParent (line 2255) | function _getScrollParent(element) {
  function _scrollParentToElement (line 2280) | function _scrollParentToElement (parent, element) {
  function _getProgress (line 2291) | function _getProgress() {
  function _mergeOptions (line 2305) | function _mergeOptions(obj1,obj2) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/CardRefresh.js
  constant NAME (line 15) | const NAME = 'CardRefresh'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.cardrefresh'
  constant EVENT_KEY (line 17) | const EVENT_KEY = `.${DATA_KEY}`
  constant JQUERY_NO_CONFLICT (line 18) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant EVENT_LOADED (line 20) | const EVENT_LOADED = `loaded${EVENT_KEY}`
  constant EVENT_OVERLAY_ADDED (line 21) | const EVENT_OVERLAY_ADDED = `overlay.added${EVENT_KEY}`
  constant EVENT_OVERLAY_REMOVED (line 22) | const EVENT_OVERLAY_REMOVED = `overlay.removed${EVENT_KEY}`
  constant CLASS_NAME_CARD (line 24) | const CLASS_NAME_CARD = 'card'
  constant SELECTOR_CARD (line 26) | const SELECTOR_CARD = `.${CLASS_NAME_CARD}`
  constant SELECTOR_DATA_REFRESH (line 27) | const SELECTOR_DATA_REFRESH = '[data-card-widget="card-refresh"]'
  method onLoadStart (line 39) | onLoadStart() {}
  method onLoadDone (line 40) | onLoadDone(response) {
  class CardRefresh (line 45) | class CardRefresh {
    method constructor (line 46) | constructor(element, settings) {
    method load (line 61) | load() {
    method _addOverlay (line 81) | _addOverlay() {
    method _removeOverlay (line 86) | _removeOverlay() {
    method _init (line 93) | _init() {
    method _jQueryInterface (line 105) | static _jQueryInterface(config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/CardWidget.js
  constant NAME (line 15) | const NAME = 'CardWidget'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.cardwidget'
  constant EVENT_KEY (line 17) | const EVENT_KEY = `.${DATA_KEY}`
  constant JQUERY_NO_CONFLICT (line 18) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant EVENT_EXPANDED (line 20) | const EVENT_EXPANDED = `expanded${EVENT_KEY}`
  constant EVENT_COLLAPSED (line 21) | const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`
  constant EVENT_MAXIMIZED (line 22) | const EVENT_MAXIMIZED = `maximized${EVENT_KEY}`
  constant EVENT_MINIMIZED (line 23) | const EVENT_MINIMIZED = `minimized${EVENT_KEY}`
  constant EVENT_REMOVED (line 24) | const EVENT_REMOVED = `removed${EVENT_KEY}`
  constant CLASS_NAME_CARD (line 26) | const CLASS_NAME_CARD = 'card'
  constant CLASS_NAME_COLLAPSED (line 27) | const CLASS_NAME_COLLAPSED = 'collapsed-card'
  constant CLASS_NAME_COLLAPSING (line 28) | const CLASS_NAME_COLLAPSING = 'collapsing-card'
  constant CLASS_NAME_EXPANDING (line 29) | const CLASS_NAME_EXPANDING = 'expanding-card'
  constant CLASS_NAME_WAS_COLLAPSED (line 30) | const CLASS_NAME_WAS_COLLAPSED = 'was-collapsed'
  constant CLASS_NAME_MAXIMIZED (line 31) | const CLASS_NAME_MAXIMIZED = 'maximized-card'
  constant SELECTOR_DATA_REMOVE (line 33) | const SELECTOR_DATA_REMOVE = '[data-card-widget="remove"]'
  constant SELECTOR_DATA_COLLAPSE (line 34) | const SELECTOR_DATA_COLLAPSE = '[data-card-widget="collapse"]'
  constant SELECTOR_DATA_MAXIMIZE (line 35) | const SELECTOR_DATA_MAXIMIZE = '[data-card-widget="maximize"]'
  constant SELECTOR_CARD (line 36) | const SELECTOR_CARD = `.${CLASS_NAME_CARD}`
  constant SELECTOR_CARD_HEADER (line 37) | const SELECTOR_CARD_HEADER = '.card-header'
  constant SELECTOR_CARD_BODY (line 38) | const SELECTOR_CARD_BODY = '.card-body'
  constant SELECTOR_CARD_FOOTER (line 39) | const SELECTOR_CARD_FOOTER = '.card-footer'
  class CardWidget (line 52) | class CardWidget {
    method constructor (line 53) | constructor(element, settings) {
    method collapse (line 64) | collapse() {
    method expand (line 77) | expand() {
    method remove (line 90) | remove() {
    method toggle (line 95) | toggle() {
    method maximize (line 104) | maximize() {
    method minimize (line 127) | minimize() {
    method toggleMaximize (line 151) | toggleMaximize() {
    method _init (line 162) | _init(card) {
    method _jQueryInterface (line 180) | static _jQueryInterface(config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/ControlSidebar.js
  constant NAME (line 15) | const NAME = 'ControlSidebar'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.controlsidebar'
  constant EVENT_KEY (line 17) | const EVENT_KEY = `.${DATA_KEY}`
  constant JQUERY_NO_CONFLICT (line 18) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant EVENT_COLLAPSED (line 20) | const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`
  constant EVENT_EXPANDED (line 21) | const EVENT_EXPANDED = `expanded${EVENT_KEY}`
  constant SELECTOR_CONTROL_SIDEBAR (line 23) | const SELECTOR_CONTROL_SIDEBAR = '.control-sidebar'
  constant SELECTOR_CONTROL_SIDEBAR_CONTENT (line 24) | const SELECTOR_CONTROL_SIDEBAR_CONTENT = '.control-sidebar-content'
  constant SELECTOR_DATA_TOGGLE (line 25) | const SELECTOR_DATA_TOGGLE = '[data-widget="control-sidebar"]'
  constant SELECTOR_HEADER (line 26) | const SELECTOR_HEADER = '.main-header'
  constant SELECTOR_FOOTER (line 27) | const SELECTOR_FOOTER = '.main-footer'
  constant CLASS_NAME_CONTROL_SIDEBAR_ANIMATE (line 29) | const CLASS_NAME_CONTROL_SIDEBAR_ANIMATE = 'control-sidebar-animate'
  constant CLASS_NAME_CONTROL_SIDEBAR_OPEN (line 30) | const CLASS_NAME_CONTROL_SIDEBAR_OPEN = 'control-sidebar-open'
  constant CLASS_NAME_CONTROL_SIDEBAR_SLIDE (line 31) | const CLASS_NAME_CONTROL_SIDEBAR_SLIDE = 'control-sidebar-slide-open'
  constant CLASS_NAME_LAYOUT_FIXED (line 32) | const CLASS_NAME_LAYOUT_FIXED = 'layout-fixed'
  constant CLASS_NAME_NAVBAR_FIXED (line 33) | const CLASS_NAME_NAVBAR_FIXED = 'layout-navbar-fixed'
  constant CLASS_NAME_NAVBAR_SM_FIXED (line 34) | const CLASS_NAME_NAVBAR_SM_FIXED = 'layout-sm-navbar-fixed'
  constant CLASS_NAME_NAVBAR_MD_FIXED (line 35) | const CLASS_NAME_NAVBAR_MD_FIXED = 'layout-md-navbar-fixed'
  constant CLASS_NAME_NAVBAR_LG_FIXED (line 36) | const CLASS_NAME_NAVBAR_LG_FIXED = 'layout-lg-navbar-fixed'
  constant CLASS_NAME_NAVBAR_XL_FIXED (line 37) | const CLASS_NAME_NAVBAR_XL_FIXED = 'layout-xl-navbar-fixed'
  constant CLASS_NAME_FOOTER_FIXED (line 38) | const CLASS_NAME_FOOTER_FIXED = 'layout-footer-fixed'
  constant CLASS_NAME_FOOTER_SM_FIXED (line 39) | const CLASS_NAME_FOOTER_SM_FIXED = 'layout-sm-footer-fixed'
  constant CLASS_NAME_FOOTER_MD_FIXED (line 40) | const CLASS_NAME_FOOTER_MD_FIXED = 'layout-md-footer-fixed'
  constant CLASS_NAME_FOOTER_LG_FIXED (line 41) | const CLASS_NAME_FOOTER_LG_FIXED = 'layout-lg-footer-fixed'
  constant CLASS_NAME_FOOTER_XL_FIXED (line 42) | const CLASS_NAME_FOOTER_XL_FIXED = 'layout-xl-footer-fixed'
  class ControlSidebar (line 56) | class ControlSidebar {
    method constructor (line 57) | constructor(element, config) {
    method collapse (line 64) | collapse() {
    method show (line 84) | show() {
    method toggle (line 108) | toggle() {
    method _init (line 124) | _init() {
    method _isNavbarFixed (line 155) | _isNavbarFixed() {
    method _isFooterFixed (line 166) | _isFooterFixed() {
    method _fixScrollHeight (line 177) | _fixScrollHeight() {
    method _fixHeight (line 239) | _fixHeight() {
    method _jQueryInterface (line 276) | static _jQueryInterface(operation) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/DirectChat.js
  constant NAME (line 15) | const NAME = 'DirectChat'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.directchat'
  constant EVENT_KEY (line 17) | const EVENT_KEY = `.${DATA_KEY}`
  constant JQUERY_NO_CONFLICT (line 18) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant EVENT_TOGGLED (line 20) | const EVENT_TOGGLED = `toggled${EVENT_KEY}`
  constant SELECTOR_DATA_TOGGLE (line 22) | const SELECTOR_DATA_TOGGLE = '[data-widget="chat-pane-toggle"]'
  constant SELECTOR_DIRECT_CHAT (line 23) | const SELECTOR_DIRECT_CHAT = '.direct-chat'
  constant CLASS_NAME_DIRECT_CHAT_OPEN (line 25) | const CLASS_NAME_DIRECT_CHAT_OPEN = 'direct-chat-contacts-open'
  class DirectChat (line 32) | class DirectChat {
    method constructor (line 33) | constructor(element) {
    method toggle (line 37) | toggle() {
    method _jQueryInterface (line 44) | static _jQueryInterface(config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Dropdown.js
  constant NAME (line 15) | const NAME = 'Dropdown'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.dropdown'
  constant JQUERY_NO_CONFLICT (line 17) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant SELECTOR_NAVBAR (line 19) | const SELECTOR_NAVBAR = '.navbar'
  constant SELECTOR_DROPDOWN_MENU (line 20) | const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'
  constant SELECTOR_DROPDOWN_MENU_ACTIVE (line 21) | const SELECTOR_DROPDOWN_MENU_ACTIVE = '.dropdown-menu.show'
  constant SELECTOR_DROPDOWN_TOGGLE (line 22) | const SELECTOR_DROPDOWN_TOGGLE = '[data-toggle="dropdown"]'
  constant CLASS_NAME_DROPDOWN_RIGHT (line 24) | const CLASS_NAME_DROPDOWN_RIGHT = 'dropdown-menu-right'
  constant CLASS_NAME_DROPDOWN_SUBMENU (line 25) | const CLASS_NAME_DROPDOWN_SUBMENU = 'dropdown-submenu'
  class Dropdown (line 35) | class Dropdown {
    method constructor (line 36) | constructor(element, config) {
    method toggleSubmenu (line 43) | toggleSubmenu() {
    method fixPosition (line 55) | fixPosition() {
    method _jQueryInterface (line 93) | static _jQueryInterface(config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/ExpandableTable.js
  constant NAME (line 15) | const NAME = 'ExpandableTable'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.expandableTable'
  constant EVENT_KEY (line 17) | const EVENT_KEY = `.${DATA_KEY}`
  constant JQUERY_NO_CONFLICT (line 18) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant EVENT_EXPANDED (line 20) | const EVENT_EXPANDED = `expanded${EVENT_KEY}`
  constant EVENT_COLLAPSED (line 21) | const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`
  constant SELECTOR_TABLE (line 23) | const SELECTOR_TABLE = '.expandable-table'
  constant SELECTOR_EXPANDABLE_BODY (line 24) | const SELECTOR_EXPANDABLE_BODY = '.expandable-body'
  constant SELECTOR_DATA_TOGGLE (line 25) | const SELECTOR_DATA_TOGGLE = '[data-widget="expandable-table"]'
  constant SELECTOR_ARIA_ATTR (line 26) | const SELECTOR_ARIA_ATTR = 'aria-expanded'
  class ExpandableTable (line 32) | class ExpandableTable {
    method constructor (line 33) | constructor(element, options) {
    method init (line 40) | init() {
    method toggleRow (line 53) | toggleRow() {
    method _jQueryInterface (line 76) | static _jQueryInterface(operation) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Fullscreen.js
  constant NAME (line 15) | const NAME = 'Fullscreen'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.fullscreen'
  constant JQUERY_NO_CONFLICT (line 17) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant SELECTOR_DATA_WIDGET (line 19) | const SELECTOR_DATA_WIDGET = '[data-widget="fullscreen"]'
  constant SELECTOR_ICON (line 20) | const SELECTOR_ICON = `${SELECTOR_DATA_WIDGET} i`
  class Fullscreen (line 32) | class Fullscreen {
    method constructor (line 33) | constructor(_element, _options) {
    method toggle (line 40) | toggle() {
    method fullscreen (line 51) | fullscreen() {
    method windowed (line 63) | windowed() {
    method _jQueryInterface (line 77) | static _jQueryInterface(config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/IFrame.js
  constant NAME (line 15) | const NAME = 'IFrame'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.iframe'
  constant JQUERY_NO_CONFLICT (line 17) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant SELECTOR_DATA_TOGGLE (line 19) | const SELECTOR_DATA_TOGGLE = '[data-widget="iframe"]'
  constant SELECTOR_DATA_TOGGLE_CLOSE (line 20) | const SELECTOR_DATA_TOGGLE_CLOSE = '[data-widget="iframe-close"]'
  constant SELECTOR_DATA_TOGGLE_SCROLL_LEFT (line 21) | const SELECTOR_DATA_TOGGLE_SCROLL_LEFT = '[data-widget="iframe-scrolllef...
  constant SELECTOR_DATA_TOGGLE_SCROLL_RIGHT (line 22) | const SELECTOR_DATA_TOGGLE_SCROLL_RIGHT = '[data-widget="iframe-scrollri...
  constant SELECTOR_DATA_TOGGLE_FULLSCREEN (line 23) | const SELECTOR_DATA_TOGGLE_FULLSCREEN = '[data-widget="iframe-fullscreen"]'
  constant SELECTOR_CONTENT_WRAPPER (line 24) | const SELECTOR_CONTENT_WRAPPER = '.content-wrapper'
  constant SELECTOR_CONTENT_IFRAME (line 25) | const SELECTOR_CONTENT_IFRAME = `${SELECTOR_CONTENT_WRAPPER} iframe`
  constant SELECTOR_TAB_NAV (line 26) | const SELECTOR_TAB_NAV = `${SELECTOR_DATA_TOGGLE}.iframe-mode .nav`
  constant SELECTOR_TAB_NAVBAR_NAV (line 27) | const SELECTOR_TAB_NAVBAR_NAV = `${SELECTOR_DATA_TOGGLE}.iframe-mode .na...
  constant SELECTOR_TAB_NAVBAR_NAV_ITEM (line 28) | const SELECTOR_TAB_NAVBAR_NAV_ITEM = `${SELECTOR_TAB_NAVBAR_NAV} .nav-item`
  constant SELECTOR_TAB_NAVBAR_NAV_LINK (line 29) | const SELECTOR_TAB_NAVBAR_NAV_LINK = `${SELECTOR_TAB_NAVBAR_NAV} .nav-link`
  constant SELECTOR_TAB_CONTENT (line 30) | const SELECTOR_TAB_CONTENT = `${SELECTOR_DATA_TOGGLE}.iframe-mode .tab-c...
  constant SELECTOR_TAB_EMPTY (line 31) | const SELECTOR_TAB_EMPTY = `${SELECTOR_TAB_CONTENT} .tab-empty`
  constant SELECTOR_TAB_LOADING (line 32) | const SELECTOR_TAB_LOADING = `${SELECTOR_TAB_CONTENT} .tab-loading`
  constant SELECTOR_TAB_PANE (line 33) | const SELECTOR_TAB_PANE = `${SELECTOR_TAB_CONTENT} .tab-pane`
  constant SELECTOR_SIDEBAR_MENU_ITEM (line 34) | const SELECTOR_SIDEBAR_MENU_ITEM = '.main-sidebar .nav-item > a.nav-link'
  constant SELECTOR_SIDEBAR_SEARCH_ITEM (line 35) | const SELECTOR_SIDEBAR_SEARCH_ITEM = '.sidebar-search-results .list-grou...
  constant SELECTOR_HEADER_MENU_ITEM (line 36) | const SELECTOR_HEADER_MENU_ITEM = '.main-header .nav-item a.nav-link'
  constant SELECTOR_HEADER_DROPDOWN_ITEM (line 37) | const SELECTOR_HEADER_DROPDOWN_ITEM = '.main-header a.dropdown-item'
  constant CLASS_NAME_IFRAME_MODE (line 38) | const CLASS_NAME_IFRAME_MODE = 'iframe-mode'
  constant CLASS_NAME_FULLSCREEN_MODE (line 39) | const CLASS_NAME_FULLSCREEN_MODE = 'iframe-mode-fullscreen'
  method onTabClick (line 42) | onTabClick(item) {
  method onTabChanged (line 45) | onTabChanged(item) {
  method onTabCreated (line 48) | onTabCreated(item) {
  class IFrame (line 68) | class IFrame {
    method constructor (line 69) | constructor(element, config) {
    method onTabClick (line 78) | onTabClick(item) {
    method onTabChanged (line 82) | onTabChanged(item) {
    method onTabCreated (line 86) | onTabCreated(item) {
    method createTab (line 90) | createTab(title, link, uniqueName, autoOpen) {
    method openTabSidebar (line 128) | openTabSidebar(item, autoOpen = this._config.autoShowNewTab) {
    method switchTab (line 157) | switchTab(item) {
    method removeActiveTab (line 174) | removeActiveTab(type, element) {
    method toggleFullscreen (line 211) | toggleFullscreen() {
    method _init (line 229) | _init() {
    method _navScroll (line 244) | _navScroll(offset) {
    method _setupListeners (line 249) | _setupListeners() {
    method _setItemActive (line 336) | _setItemActive(href) {
    method _fixHeight (line 356) | _fixHeight(tabEmpty = false) {
    method _jQueryInterface (line 377) | static _jQueryInterface(operation, ...args) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Layout.js
  constant NAME (line 15) | const NAME = 'Layout'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.layout'
  constant JQUERY_NO_CONFLICT (line 17) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant SELECTOR_HEADER (line 19) | const SELECTOR_HEADER = '.main-header'
  constant SELECTOR_MAIN_SIDEBAR (line 20) | const SELECTOR_MAIN_SIDEBAR = '.main-sidebar'
  constant SELECTOR_SIDEBAR (line 21) | const SELECTOR_SIDEBAR = '.main-sidebar .sidebar'
  constant SELECTOR_CONTENT (line 22) | const SELECTOR_CONTENT = '.content-wrapper'
  constant SELECTOR_CONTROL_SIDEBAR_CONTENT (line 23) | const SELECTOR_CONTROL_SIDEBAR_CONTENT = '.control-sidebar-content'
  constant SELECTOR_CONTROL_SIDEBAR_BTN (line 24) | const SELECTOR_CONTROL_SIDEBAR_BTN = '[data-widget="control-sidebar"]'
  constant SELECTOR_FOOTER (line 25) | const SELECTOR_FOOTER = '.main-footer'
  constant SELECTOR_PUSHMENU_BTN (line 26) | const SELECTOR_PUSHMENU_BTN = '[data-widget="pushmenu"]'
  constant SELECTOR_LOGIN_BOX (line 27) | const SELECTOR_LOGIN_BOX = '.login-box'
  constant SELECTOR_REGISTER_BOX (line 28) | const SELECTOR_REGISTER_BOX = '.register-box'
  constant SELECTOR_PRELOADER (line 29) | const SELECTOR_PRELOADER = '.preloader'
  constant CLASS_NAME_SIDEBAR_COLLAPSED (line 31) | const CLASS_NAME_SIDEBAR_COLLAPSED = 'sidebar-collapse'
  constant CLASS_NAME_SIDEBAR_FOCUSED (line 32) | const CLASS_NAME_SIDEBAR_FOCUSED = 'sidebar-focused'
  constant CLASS_NAME_LAYOUT_FIXED (line 33) | const CLASS_NAME_LAYOUT_FIXED = 'layout-fixed'
  constant CLASS_NAME_CONTROL_SIDEBAR_SLIDE_OPEN (line 34) | const CLASS_NAME_CONTROL_SIDEBAR_SLIDE_OPEN = 'control-sidebar-slide-open'
  constant CLASS_NAME_CONTROL_SIDEBAR_OPEN (line 35) | const CLASS_NAME_CONTROL_SIDEBAR_OPEN = 'control-sidebar-open'
  class Layout (line 51) | class Layout {
    method constructor (line 52) | constructor(element, config) {
    method fixLayoutHeight (line 59) | fixLayoutHeight(extra = null) {
    method fixLoginRegisterHeight (line 116) | fixLoginRegisterHeight() {
    method _init (line 134) | _init() {
    method _max (line 190) | _max(numbers) {
    method _isFooterFixed (line 203) | _isFooterFixed() {
    method _jQueryInterface (line 209) | static _jQueryInterface(config = '') {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/NavbarSearch.js
  constant NAME (line 15) | const NAME = 'NavbarSearch'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.navbar-search'
  constant JQUERY_NO_CONFLICT (line 17) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant SELECTOR_TOGGLE_BUTTON (line 19) | const SELECTOR_TOGGLE_BUTTON = '[data-widget="navbar-search"]'
  constant SELECTOR_SEARCH_BLOCK (line 20) | const SELECTOR_SEARCH_BLOCK = '.navbar-search-block'
  constant SELECTOR_SEARCH_INPUT (line 21) | const SELECTOR_SEARCH_INPUT = '.form-control'
  constant CLASS_NAME_OPEN (line 23) | const CLASS_NAME_OPEN = 'navbar-search-open'
  class NavbarSearch (line 35) | class NavbarSearch {
    method constructor (line 36) | constructor(_element, _options) {
    method open (line 43) | open() {
    method close (line 48) | close() {
    method toggle (line 56) | toggle() {
    method _jQueryInterface (line 66) | static _jQueryInterface(options) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/PushMenu.js
  constant NAME (line 15) | const NAME = 'PushMenu'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.pushmenu'
  constant EVENT_KEY (line 17) | const EVENT_KEY = `.${DATA_KEY}`
  constant JQUERY_NO_CONFLICT (line 18) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant EVENT_COLLAPSED (line 20) | const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`
  constant EVENT_SHOWN (line 21) | const EVENT_SHOWN = `shown${EVENT_KEY}`
  constant SELECTOR_TOGGLE_BUTTON (line 23) | const SELECTOR_TOGGLE_BUTTON = '[data-widget="pushmenu"]'
  constant SELECTOR_BODY (line 24) | const SELECTOR_BODY = 'body'
  constant SELECTOR_OVERLAY (line 25) | const SELECTOR_OVERLAY = '#sidebar-overlay'
  constant SELECTOR_WRAPPER (line 26) | const SELECTOR_WRAPPER = '.wrapper'
  constant CLASS_NAME_COLLAPSED (line 28) | const CLASS_NAME_COLLAPSED = 'sidebar-collapse'
  constant CLASS_NAME_OPEN (line 29) | const CLASS_NAME_OPEN = 'sidebar-open'
  constant CLASS_NAME_IS_OPENING (line 30) | const CLASS_NAME_IS_OPENING = 'sidebar-is-opening'
  constant CLASS_NAME_CLOSED (line 31) | const CLASS_NAME_CLOSED = 'sidebar-closed'
  class PushMenu (line 44) | class PushMenu {
    method constructor (line 45) | constructor(element, options) {
    method expand (line 58) | expand() {
    method collapse (line 77) | collapse() {
    method toggle (line 93) | toggle() {
    method autoCollapse (line 101) | autoCollapse(resize = false) {
    method remember (line 121) | remember() {
    method _init (line 150) | _init() {
    method _addOverlay (line 159) | _addOverlay() {
    method _jQueryInterface (line 173) | static _jQueryInterface(operation) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/SidebarSearch.js
  constant NAME (line 15) | const NAME = 'SidebarSearch'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.sidebar-search'
  constant JQUERY_NO_CONFLICT (line 17) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant CLASS_NAME_OPEN (line 19) | const CLASS_NAME_OPEN = 'sidebar-search-open'
  constant CLASS_NAME_ICON_SEARCH (line 20) | const CLASS_NAME_ICON_SEARCH = 'fa-search'
  constant CLASS_NAME_ICON_CLOSE (line 21) | const CLASS_NAME_ICON_CLOSE = 'fa-times'
  constant CLASS_NAME_HEADER (line 22) | const CLASS_NAME_HEADER = 'nav-header'
  constant CLASS_NAME_SEARCH_RESULTS (line 23) | const CLASS_NAME_SEARCH_RESULTS = 'sidebar-search-results'
  constant CLASS_NAME_LIST_GROUP (line 24) | const CLASS_NAME_LIST_GROUP = 'list-group'
  constant SELECTOR_DATA_WIDGET (line 26) | const SELECTOR_DATA_WIDGET = '[data-widget="sidebar-search"]'
  constant SELECTOR_SIDEBAR (line 27) | const SELECTOR_SIDEBAR = '.main-sidebar .nav-sidebar'
  constant SELECTOR_NAV_LINK (line 28) | const SELECTOR_NAV_LINK = '.nav-link'
  constant SELECTOR_NAV_TREEVIEW (line 29) | const SELECTOR_NAV_TREEVIEW = '.nav-treeview'
  constant SELECTOR_SEARCH_INPUT (line 30) | const SELECTOR_SEARCH_INPUT = `${SELECTOR_DATA_WIDGET} .form-control`
  constant SELECTOR_SEARCH_BUTTON (line 31) | const SELECTOR_SEARCH_BUTTON = `${SELECTOR_DATA_WIDGET} .btn`
  constant SELECTOR_SEARCH_ICON (line 32) | const SELECTOR_SEARCH_ICON = `${SELECTOR_SEARCH_BUTTON} i`
  constant SELECTOR_SEARCH_LIST_GROUP (line 33) | const SELECTOR_SEARCH_LIST_GROUP = `.${CLASS_NAME_LIST_GROUP}`
  constant SELECTOR_SEARCH_RESULTS (line 34) | const SELECTOR_SEARCH_RESULTS = `.${CLASS_NAME_SEARCH_RESULTS}`
  constant SELECTOR_SEARCH_RESULTS_GROUP (line 35) | const SELECTOR_SEARCH_RESULTS_GROUP = `${SELECTOR_SEARCH_RESULTS} .${CLA...
  class SidebarSearch (line 54) | class SidebarSearch {
    method constructor (line 55) | constructor(_element, _options) {
    method init (line 63) | init() {
    method search (line 87) | search() {
    method open (line 111) | open() {
    method close (line 116) | close() {
    method toggle (line 121) | toggle() {
    method _parseItem (line 131) | _parseItem(item, path = []) {
    method _trimText (line 157) | _trimText(text) {
    method _renderItem (line 161) | _renderItem(name, link, path) {
    method _addNotFound (line 204) | _addNotFound() {
    method _jQueryInterface (line 210) | static _jQueryInterface(config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Toasts.js
  constant NAME (line 15) | const NAME = 'Toasts'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.toasts'
  constant EVENT_KEY (line 17) | const EVENT_KEY = `.${DATA_KEY}`
  constant JQUERY_NO_CONFLICT (line 18) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant EVENT_INIT (line 20) | const EVENT_INIT = `init${EVENT_KEY}`
  constant EVENT_CREATED (line 21) | const EVENT_CREATED = `created${EVENT_KEY}`
  constant EVENT_REMOVED (line 22) | const EVENT_REMOVED = `removed${EVENT_KEY}`
  constant SELECTOR_CONTAINER_TOP_RIGHT (line 24) | const SELECTOR_CONTAINER_TOP_RIGHT = '#toastsContainerTopRight'
  constant SELECTOR_CONTAINER_TOP_LEFT (line 25) | const SELECTOR_CONTAINER_TOP_LEFT = '#toastsContainerTopLeft'
  constant SELECTOR_CONTAINER_BOTTOM_RIGHT (line 26) | const SELECTOR_CONTAINER_BOTTOM_RIGHT = '#toastsContainerBottomRight'
  constant SELECTOR_CONTAINER_BOTTOM_LEFT (line 27) | const SELECTOR_CONTAINER_BOTTOM_LEFT = '#toastsContainerBottomLeft'
  constant CLASS_NAME_TOP_RIGHT (line 29) | const CLASS_NAME_TOP_RIGHT = 'toasts-top-right'
  constant CLASS_NAME_TOP_LEFT (line 30) | const CLASS_NAME_TOP_LEFT = 'toasts-top-left'
  constant CLASS_NAME_BOTTOM_RIGHT (line 31) | const CLASS_NAME_BOTTOM_RIGHT = 'toasts-bottom-right'
  constant CLASS_NAME_BOTTOM_LEFT (line 32) | const CLASS_NAME_BOTTOM_LEFT = 'toasts-bottom-left'
  constant POSITION_TOP_RIGHT (line 34) | const POSITION_TOP_RIGHT = 'topRight'
  constant POSITION_TOP_LEFT (line 35) | const POSITION_TOP_LEFT = 'topLeft'
  constant POSITION_BOTTOM_RIGHT (line 36) | const POSITION_BOTTOM_RIGHT = 'bottomRight'
  constant POSITION_BOTTOM_LEFT (line 37) | const POSITION_BOTTOM_LEFT = 'bottomLeft'
  class Toasts (line 61) | class Toasts {
    method constructor (line 62) | constructor(element, config) {
    method create (line 71) | create() {
    method _getContainerId (line 142) | _getContainerId() {
    method _prepareContainer (line 160) | _prepareContainer() {
    method _jQueryInterface (line 185) | static _jQueryInterface(option, config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/TodoList.js
  constant NAME (line 15) | const NAME = 'TodoList'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.todolist'
  constant JQUERY_NO_CONFLICT (line 17) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant SELECTOR_DATA_TOGGLE (line 19) | const SELECTOR_DATA_TOGGLE = '[data-widget="todo-list"]'
  constant CLASS_NAME_TODO_LIST_DONE (line 20) | const CLASS_NAME_TODO_LIST_DONE = 'done'
  method onCheck (line 23) | onCheck(item) {
  method onUnCheck (line 26) | onUnCheck(item) {
  class TodoList (line 36) | class TodoList {
    method constructor (line 37) | constructor(element, config) {
    method toggle (line 46) | toggle(item) {
    method check (line 56) | check(item) {
    method unCheck (line 60) | unCheck(item) {
    method _init (line 66) | _init() {
    method _jQueryInterface (line 77) | static _jQueryInterface(config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Treeview.js
  constant NAME (line 15) | const NAME = 'Treeview'
  constant DATA_KEY (line 16) | const DATA_KEY = 'lte.treeview'
  constant EVENT_KEY (line 17) | const EVENT_KEY = `.${DATA_KEY}`
  constant JQUERY_NO_CONFLICT (line 18) | const JQUERY_NO_CONFLICT = $.fn[NAME]
  constant EVENT_EXPANDED (line 20) | const EVENT_EXPANDED = `expanded${EVENT_KEY}`
  constant EVENT_COLLAPSED (line 21) | const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`
  constant EVENT_LOAD_DATA_API (line 22) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`
  constant SELECTOR_LI (line 24) | const SELECTOR_LI = '.nav-item'
  constant SELECTOR_LINK (line 25) | const SELECTOR_LINK = '.nav-link'
  constant SELECTOR_TREEVIEW_MENU (line 26) | const SELECTOR_TREEVIEW_MENU = '.nav-treeview'
  constant SELECTOR_OPEN (line 27) | const SELECTOR_OPEN = '.menu-open'
  constant SELECTOR_DATA_WIDGET (line 28) | const SELECTOR_DATA_WIDGET = '[data-widget="treeview"]'
  constant CLASS_NAME_OPEN (line 30) | const CLASS_NAME_OPEN = 'menu-open'
  constant CLASS_NAME_IS_OPENING (line 31) | const CLASS_NAME_IS_OPENING = 'menu-is-opening'
  constant CLASS_NAME_SIDEBAR_COLLAPSED (line 32) | const CLASS_NAME_SIDEBAR_COLLAPSED = 'sidebar-collapse'
  class Treeview (line 46) | class Treeview {
    method constructor (line 47) | constructor(element, config) {
    method init (line 54) | init() {
    method expand (line 59) | expand(treeviewMenu, parentLi) {
    method collapse (line 79) | collapse(treeviewMenu, parentLi) {
    method toggle (line 90) | toggle(event) {
    method _setupListeners (line 120) | _setupListeners() {
    method _expandSidebar (line 127) | _expandSidebar() {
    method _jQueryInterface (line 135) | static _jQueryInterface(config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/npm/DocsPublish.js
  class Publish (line 10) | class Publish {
    method constructor (line 11) | constructor() {
    method getArguments (line 19) | getArguments() {
    method run (line 33) | run() {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/build/npm/Publish.js
  class Publish (line 9) | class Publish {
    method constructor (line 10) | constructor() {
    method getArguments (line 18) | getArguments() {
    method run (line 32) | run() {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/dist/js/adminlte.js
  function _interopDefaultLegacy (line 12) | function _interopDefaultLegacy (e) { return e && typeof e === 'object' &...
  function CardRefresh (line 54) | function CardRefresh(element, settings) {
  function CardWidget (line 215) | function CardWidget(element, settings) {
  function ControlSidebar (line 444) | function ControlSidebar(element, config) {
  function DirectChat (line 719) | function DirectChat(element) {
  function Dropdown (line 801) | function Dropdown(element, config) {
  function ExpandableTable (line 940) | function ExpandableTable(element, options) {
  function Fullscreen (line 1052) | function Fullscreen(_element, _options) {
  function IFrame (line 1198) | function IFrame(element, config) {
  function Layout (line 1629) | function Layout(element, config) {
  function PushMenu (line 1868) | function PushMenu(element, options) {
  function SidebarSearch (line 2097) | function SidebarSearch(_element, _options) {
  function NavbarSearch (line 2374) | function NavbarSearch(_element, _options) {
  function Toasts (line 2507) | function Toasts(element, config) {
  function TodoList (line 2686) | function TodoList(element, config) {
  function Treeview (line 2809) | function Treeview(element, config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/dist/js/demo.js
  function capitalizeFirstLetter (line 13) | function capitalizeFirstLetter(string) {
  function createSkinBlock (line 17) | function createSkinBlock(colors, callback, noneSelected) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/js/adminlte.js
  function _interopDefaultLegacy (line 12) | function _interopDefaultLegacy (e) { return e && typeof e === 'object' &...
  function CardRefresh (line 54) | function CardRefresh(element, settings) {
  function CardWidget (line 215) | function CardWidget(element, settings) {
  function ControlSidebar (line 444) | function ControlSidebar(element, config) {
  function DirectChat (line 719) | function DirectChat(element) {
  function Dropdown (line 801) | function Dropdown(element, config) {
  function ExpandableTable (line 940) | function ExpandableTable(element, options) {
  function Fullscreen (line 1052) | function Fullscreen(_element, _options) {
  function IFrame (line 1198) | function IFrame(element, config) {
  function Layout (line 1629) | function Layout(element, config) {
  function PushMenu (line 1868) | function PushMenu(element, options) {
  function SidebarSearch (line 2097) | function SidebarSearch(_element, _options) {
  function NavbarSearch (line 2374) | function NavbarSearch(_element, _options) {
  function Toasts (line 2507) | function Toasts(element, config) {
  function TodoList (line 2686) | function TodoList(element, config) {
  function Treeview (line 2809) | function Treeview(element, config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/js/demo.js
  function capitalizeFirstLetter (line 13) | function capitalizeFirstLetter(string) {
  function createSkinBlock (line 17) | function createSkinBlock(colors, callback, noneSelected) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/bootstrap/js/bootstrap.bundle.js
  function _interopDefaultLegacy (line 12) | function _interopDefaultLegacy (e) { return e && typeof e === 'object' &...
  function _defineProperties (line 16) | function _defineProperties(target, props) {
  function _createClass (line 26) | function _createClass(Constructor, protoProps, staticProps) {
  function _extends (line 32) | function _extends() {
  function _inheritsLoose (line 50) | function _inheritsLoose(subClass, superClass) {
  function toType (line 72) | function toType(obj) {
  function getSpecialTransitionEndEvent (line 80) | function getSpecialTransitionEndEvent() {
  function transitionEndEmulator (line 94) | function transitionEndEmulator(duration) {
  function setTransitionEndSupport (line 109) | function setTransitionEndSupport() {
  function Alert (line 256) | function Alert(element) {
  function Button (line 418) | function Button(element) {
  function Carousel (line 664) | function Carousel(element, config) {
  function Collapse (line 1224) | function Collapse(element, config) {
  function microtaskDebounce (line 1569) | function microtaskDebounce(fn) {
  function taskDebounce (line 1583) | function taskDebounce(fn) {
  function isFunction (line 1616) | function isFunction(functionToCheck) {
  function getStyleComputedProperty (line 1628) | function getStyleComputedProperty(element, property) {
  function getParentNode (line 1645) | function getParentNode(element) {
  function getScrollParent (line 1659) | function getScrollParent(element) {
  function getReferenceNode (line 1694) | function getReferenceNode(reference) {
  function isIE (line 1708) | function isIE(version) {
  function getOffsetParent (line 1725) | function getOffsetParent(element) {
  function isOffsetContainer (line 1754) | function isOffsetContainer(element) {
  function getRoot (line 1770) | function getRoot(node) {
  function findCommonOffsetParent (line 1786) | function findCommonOffsetParent(element1, element2) {
  function getScroll (line 1830) | function getScroll(element) {
  function includeScroll (line 1854) | function includeScroll(rect, element) {
  function getBordersSize (line 1877) | function getBordersSize(styles, axis) {
  function getSize (line 1884) | function getSize(axis, body, html, computedStyle) {
  function getWindowSizes (line 1888) | function getWindowSizes(document) {
  function defineProperties (line 1906) | function defineProperties(target, props) {
  function getClientRect (line 1963) | function getClientRect(offsets) {
  function getBoundingClientRect (line 1977) | function getBoundingClientRect(element) {
  function getOffsetRectRelativeToArbitraryNode (line 2026) | function getOffsetRectRelativeToArbitraryNode(children, parent) {
  function getViewportOffsetRectRelativeToArtbitraryNode (line 2078) | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
  function isFixed (line 2107) | function isFixed(element) {
  function getFixedPositionOffsetParent (line 2130) | function getFixedPositionOffsetParent(element) {
  function getBoundaries (line 2153) | function getBoundaries(popper, reference, padding, boundariesElement) {
  function getArea (line 2207) | function getArea(_ref) {
  function computeAutoPlacement (line 2223) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
  function getReferenceOffsets (line 2284) | function getReferenceOffsets(state, popper, reference) {
  function getOuterSizes (line 2298) | function getOuterSizes(element) {
  function getOppositePlacement (line 2317) | function getOppositePlacement(placement) {
  function getPopperOffsets (line 2334) | function getPopperOffsets(popper, referenceOffsets, placement) {
  function find (line 2372) | function find(arr, check) {
  function findIndex (line 2391) | function findIndex(arr, prop, value) {
  function runModifiers (line 2416) | function runModifiers(modifiers, data, ends) {
  function update (line 2446) | function update() {
  function isModifierEnabled (line 2498) | function isModifierEnabled(modifiers, modifierName) {
  function getSupportedPropertyName (line 2513) | function getSupportedPropertyName(property) {
  function destroy (line 2532) | function destroy() {
  function getWindow (line 2562) | function getWindow(element) {
  function attachToScrollParents (line 2567) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
  function setupEventListeners (line 2584) | function setupEventListeners(reference, options, state, updateBound) {
  function enableEventListeners (line 2604) | function enableEventListeners() {
  function removeEventListeners (line 2616) | function removeEventListeners(reference, state) {
  function disableEventListeners (line 2640) | function disableEventListeners() {
  function isNumeric (line 2654) | function isNumeric(n) {
  function setStyles (line 2666) | function setStyles(element, styles) {
  function setAttributes (line 2685) | function setAttributes(element, attributes) {
  function applyStyle (line 2705) | function applyStyle(data) {
  function applyStyleOnLoad (line 2734) | function applyStyleOnLoad(reference, popper, options, modifierOptions, s...
  function getRoundedOffsets (line 2771) | function getRoundedOffsets(data, shouldRound) {
  function computeStyle (line 2810) | function computeStyle(data, options) {
  function isModifierRequired (line 2911) | function isModifierRequired(modifiers, requestingName, requestedName) {
  function arrow (line 2936) | function arrow(data, options) {
  function getOppositeVariation (line 3018) | function getOppositeVariation(variation) {
  function clockwise (line 3073) | function clockwise(placement) {
  function flip (line 3094) | function flip(data, options) {
  function keepTogether (line 3191) | function keepTogether(data) {
  function toValue (line 3225) | function toValue(str, measurement, popperOffsets, referenceOffsets) {
  function parseOffset (line 3277) | function parseOffset(offset, popperOffsets, referenceOffsets, basePlacem...
  function offset (line 3353) | function offset(data, _ref) {
  function preventOverflow (line 3394) | function preventOverflow(data, options) {
  function shift (line 3465) | function shift(data) {
  function hide (line 3498) | function hide(data) {
  function inner (line 3536) | function inner(data) {
  function Popper (line 4003) | function Popper(reference, popper) {
  function Dropdown (line 4221) | function Dropdown(element, config) {
  function Modal (line 4719) | function Modal(element, config) {
  function allowedAttribute (line 5332) | function allowedAttribute(attr, allowedAttributeList) {
  function sanitizeHtml (line 5356) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
  function Tooltip (line 5485) | function Tooltip(element, config) {
  function Popover (line 6163) | function Popover() {
  function ScrollSpy (line 6337) | function ScrollSpy(element, config) {
  function Tab (line 6621) | function Tab(element) {
  function Toast (line 6849) | function Toast(element, config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/bootstrap/js/bootstrap.js
  function _interopDefaultLegacy (line 12) | function _interopDefaultLegacy (e) { return e && typeof e === 'object' &...
  function _defineProperties (line 17) | function _defineProperties(target, props) {
  function _createClass (line 27) | function _createClass(Constructor, protoProps, staticProps) {
  function _extends (line 33) | function _extends() {
  function _inheritsLoose (line 51) | function _inheritsLoose(subClass, superClass) {
  function toType (line 73) | function toType(obj) {
  function getSpecialTransitionEndEvent (line 81) | function getSpecialTransitionEndEvent() {
  function transitionEndEmulator (line 95) | function transitionEndEmulator(duration) {
  function setTransitionEndSupport (line 110) | function setTransitionEndSupport() {
  function Alert (line 257) | function Alert(element) {
  function Button (line 419) | function Button(element) {
  function Carousel (line 665) | function Carousel(element, config) {
  function Collapse (line 1225) | function Collapse(element, config) {
  function Dropdown (line 1608) | function Dropdown(element, config) {
  function Modal (line 2106) | function Modal(element, config) {
  function allowedAttribute (line 2719) | function allowedAttribute(attr, allowedAttributeList) {
  function sanitizeHtml (line 2743) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
  function Tooltip (line 2872) | function Tooltip(element, config) {
  function Popover (line 3550) | function Popover() {
  function ScrollSpy (line 3724) | function ScrollSpy(element, config) {
  function Tab (line 4008) | function Tab(element) {
  function Toast (line 4236) | function Toast(element, config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/jquery/jquery.js
  function DOMEval (line 107) | function DOMEval( code, node, doc ) {
  function toType (line 137) | function toType( obj ) {
  function isArrayLike (line 507) | function isArrayLike( obj ) {
  function Sizzle (line 759) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 907) | function createCache() {
  function markFunction (line 927) | function markFunction( fn ) {
  function assert (line 936) | function assert( fn ) {
  function addHandle (line 960) | function addHandle( attrs, handler ) {
  function siblingCheck (line 975) | function siblingCheck( a, b ) {
  function createInputPseudo (line 1001) | function createInputPseudo( type ) {
  function createButtonPseudo (line 1012) | function createButtonPseudo( type ) {
  function createDisabledPseudo (line 1023) | function createDisabledPseudo( disabled ) {
  function createPositionalPseudo (line 1079) | function createPositionalPseudo( fn ) {
  function testContext (line 1102) | function testContext( context ) {
  function setFilters (line 2313) | function setFilters() {}
  function toSelector (line 2387) | function toSelector( tokens ) {
  function addCombinator (line 2397) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2464) | function elementMatcher( matchers ) {
  function multipleContexts (line 2478) | function multipleContexts( selector, contexts, results ) {
  function condense (line 2487) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2508) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2608) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2671) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function nodeName (line 3029) | function nodeName( elem, name ) {
  function winnow (line 3039) | function winnow( elements, qualifier, not ) {
  function sibling (line 3334) | function sibling( cur, dir ) {
  function createOptions (line 3427) | function createOptions( options ) {
  function Identity (line 3652) | function Identity( v ) {
  function Thrower (line 3655) | function Thrower( ex ) {
  function adoptValue (line 3659) | function adoptValue( value, resolve, reject, noValue ) {
  function resolve (line 3752) | function resolve( depth, deferred, handler, special ) {
  function completed (line 4117) | function completed() {
  function fcamelCase (line 4212) | function fcamelCase( _all, letter ) {
  function camelCase (line 4219) | function camelCase( string ) {
  function Data (line 4236) | function Data() {
  function getData (line 4405) | function getData( data ) {
  function dataAttr (line 4430) | function dataAttr( elem, key, data ) {
  function adjustCSS (line 4742) | function adjustCSS( elem, prop, valueParts, tween ) {
  function getDefaultDisplay (line 4810) | function getDefaultDisplay( elem ) {
  function showHide (line 4833) | function showHide( elements, show ) {
  function getAll (line 4965) | function getAll( context, tag ) {
  function setGlobalEval (line 4990) | function setGlobalEval( elems, refElements ) {
  function buildFragment (line 5006) | function buildFragment( elems, context, scripts, selection, ignored ) {
  function returnTrue (line 5098) | function returnTrue() {
  function returnFalse (line 5102) | function returnFalse() {
  function expectSync (line 5112) | function expectSync( elem, type ) {
  function safeActiveElement (line 5119) | function safeActiveElement() {
  function on (line 5125) | function on( elem, types, selector, data, fn, one ) {
  function leverageNative (line 5613) | function leverageNative( el, type, expectSync ) {
  function manipulationTarget (line 5962) | function manipulationTarget( elem, content ) {
  function disableScript (line 5973) | function disableScript( elem ) {
  function restoreScript (line 5977) | function restoreScript( elem ) {
  function cloneCopyEvent (line 5987) | function cloneCopyEvent( src, dest ) {
  function fixInput (line 6020) | function fixInput( src, dest ) {
  function domManip (line 6033) | function domManip( collection, args, callback, ignored ) {
  function remove (line 6125) | function remove( elem, selector, keepData ) {
  function computeStyleTests (line 6439) | function computeStyleTests() {
  function roundPixelMeasures (line 6483) | function roundPixelMeasures( measure ) {
  function curCSS (line 6576) | function curCSS( elem, name, computed ) {
  function addGetHookIf (line 6629) | function addGetHookIf( conditionFn, hookFn ) {
  function vendorPropName (line 6654) | function vendorPropName( name ) {
  function finalPropName (line 6669) | function finalPropName( name ) {
  function setPositiveNumber (line 6695) | function setPositiveNumber( _elem, value, subtract ) {
  function boxModelAdjustment (line 6707) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
  function getWidthOrHeight (line 6775) | function getWidthOrHeight( elem, dimension, extra ) {
  function Tween (line 7151) | function Tween( elem, options, prop, end, easing ) {
  function schedule (line 7274) | function schedule() {
  function createFxNow (line 7287) | function createFxNow() {
  function genFx (line 7295) | function genFx( type, includeWidth ) {
  function createTween (line 7315) | function createTween( value, prop, animation ) {
  function defaultPrefilter (line 7329) | function defaultPrefilter( elem, props, opts ) {
  function propFilter (line 7501) | function propFilter( props, specialEasing ) {
  function Animation (line 7538) | function Animation( elem, properties, options ) {
  function stripAndCollapse (line 8254) | function stripAndCollapse( value ) {
  function getClass (line 8260) | function getClass( elem ) {
  function classesToArray (line 8264) | function classesToArray( value ) {
  function buildParams (line 8894) | function buildParams( prefix, obj, traditional, add ) {
  function addToPrefiltersOrTransports (line 9047) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 9081) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 9110) | function ajaxExtend( target, src ) {
  function ajaxHandleResponses (line 9130) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 9188) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function done (line 9704) | function done( status, nativeStatusText, responses, headers ) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/jquery/jquery.slim.js
  function DOMEval (line 107) | function DOMEval( code, node, doc ) {
  function toType (line 137) | function toType( obj ) {
  function isArrayLike (line 507) | function isArrayLike( obj ) {
  function Sizzle (line 759) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 907) | function createCache() {
  function markFunction (line 927) | function markFunction( fn ) {
  function assert (line 936) | function assert( fn ) {
  function addHandle (line 960) | function addHandle( attrs, handler ) {
  function siblingCheck (line 975) | function siblingCheck( a, b ) {
  function createInputPseudo (line 1001) | function createInputPseudo( type ) {
  function createButtonPseudo (line 1012) | function createButtonPseudo( type ) {
  function createDisabledPseudo (line 1023) | function createDisabledPseudo( disabled ) {
  function createPositionalPseudo (line 1079) | function createPositionalPseudo( fn ) {
  function testContext (line 1102) | function testContext( context ) {
  function setFilters (line 2313) | function setFilters() {}
  function toSelector (line 2387) | function toSelector( tokens ) {
  function addCombinator (line 2397) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2464) | function elementMatcher( matchers ) {
  function multipleContexts (line 2478) | function multipleContexts( selector, contexts, results ) {
  function condense (line 2487) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2508) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2608) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2671) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function nodeName (line 3029) | function nodeName( elem, name ) {
  function winnow (line 3039) | function winnow( elements, qualifier, not ) {
  function sibling (line 3334) | function sibling( cur, dir ) {
  function createOptions (line 3427) | function createOptions( options ) {
  function Identity (line 3652) | function Identity( v ) {
  function Thrower (line 3655) | function Thrower( ex ) {
  function adoptValue (line 3659) | function adoptValue( value, resolve, reject, noValue ) {
  function resolve (line 3752) | function resolve( depth, deferred, handler, special ) {
  function completed (line 4117) | function completed() {
  function fcamelCase (line 4212) | function fcamelCase( _all, letter ) {
  function camelCase (line 4219) | function camelCase( string ) {
  function Data (line 4236) | function Data() {
  function getData (line 4405) | function getData( data ) {
  function dataAttr (line 4430) | function dataAttr( elem, key, data ) {
  function adjustCSS (line 4742) | function adjustCSS( elem, prop, valueParts, tween ) {
  function getDefaultDisplay (line 4810) | function getDefaultDisplay( elem ) {
  function showHide (line 4833) | function showHide( elements, show ) {
  function getAll (line 4965) | function getAll( context, tag ) {
  function setGlobalEval (line 4990) | function setGlobalEval( elems, refElements ) {
  function buildFragment (line 5006) | function buildFragment( elems, context, scripts, selection, ignored ) {
  function returnTrue (line 5098) | function returnTrue() {
  function returnFalse (line 5102) | function returnFalse() {
  function expectSync (line 5112) | function expectSync( elem, type ) {
  function safeActiveElement (line 5119) | function safeActiveElement() {
  function on (line 5125) | function on( elem, types, selector, data, fn, one ) {
  function leverageNative (line 5613) | function leverageNative( el, type, expectSync ) {
  function manipulationTarget (line 5962) | function manipulationTarget( elem, content ) {
  function disableScript (line 5973) | function disableScript( elem ) {
  function restoreScript (line 5977) | function restoreScript( elem ) {
  function cloneCopyEvent (line 5987) | function cloneCopyEvent( src, dest ) {
  function fixInput (line 6020) | function fixInput( src, dest ) {
  function domManip (line 6033) | function domManip( collection, args, callback, ignored ) {
  function remove (line 6125) | function remove( elem, selector, keepData ) {
  function computeStyleTests (line 6439) | function computeStyleTests() {
  function roundPixelMeasures (line 6483) | function roundPixelMeasures( measure ) {
  function curCSS (line 6576) | function curCSS( elem, name, computed ) {
  function addGetHookIf (line 6629) | function addGetHookIf( conditionFn, hookFn ) {
  function vendorPropName (line 6654) | function vendorPropName( name ) {
  function finalPropName (line 6669) | function finalPropName( name ) {
  function setPositiveNumber (line 6695) | function setPositiveNumber( _elem, value, subtract ) {
  function boxModelAdjustment (line 6707) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
  function getWidthOrHeight (line 6775) | function getWidthOrHeight( elem, dimension, extra ) {
  function stripAndCollapse (line 7460) | function stripAndCollapse( value ) {
  function getClass (line 7466) | function getClass( elem ) {
  function classesToArray (line 7470) | function classesToArray( value ) {
  function buildParams (line 8094) | function buildParams( prefix, obj, traditional, add ) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/overlayScrollbars/js/OverlayScrollbars.js
  function firstLetterToUpper (line 61) | function firstLetterToUpper(str) {
  function windowSize (line 143) | function windowSize(x) {
  function bind (line 146) | function bind(func, thisObj) {
  function extend (line 559) | function extend() {
  function inArray (line 622) | function inArray(item, arr, fromIndex) {
  function isFunction (line 629) | function isFunction(obj) {
  function isEmptyObject (line 633) | function isEmptyObject(obj) {
  function isPlainObject (line 639) | function isPlainObject(obj) {
  function each (line 659) | function each(obj, callback) {
  function isArrayLike (line 678) | function isArrayLike(obj) {
  function stripAndCollapse (line 684) | function stripAndCollapse(value) {
  function matches (line 689) | function matches(elem, selector) {
  function insertAdjacentElement (line 700) | function insertAdjacentElement(el, strategy, child) {
  function setCSSVal (line 711) | function setCSSVal(el, prop, val) {
  function parseCSSVal (line 718) | function parseCSSVal(prop, val) {
  function startNextAnimationInQ (line 724) | function startNextAnimationInQ(animObj, removeFromQ) {
  function setAnimationValue (line 740) | function setAnimationValue(el, prop, value) {
  function animate (line 747) | function animate(el, props, options, easing, complete, guaranteedNext) {
  function stop (line 882) | function stop(el, clearQ, jumpToEnd) {
  function elementIsVisible (line 910) | function elementIsVisible(el) {
  function FakejQuery (line 914) | function FakejQuery(selector) {
  function initOverlayScrollbarsStatics (line 1711) | function initOverlayScrollbarsStatics() {
  function OverlayScrollbarsGlobals (line 1723) | function OverlayScrollbarsGlobals(defaultOptions) {
  function OverlayScrollbarsAutoUpdateLoop (line 1924) | function OverlayScrollbarsAutoUpdateLoop(globals) {
  function OverlayScrollbarsInstance (line 2033) | function OverlayScrollbarsInstance(pluginTargetElement, options, extensi...

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/overlayScrollbars/js/jquery.overlayScrollbars.js
  function firstLetterToUpper (line 61) | function firstLetterToUpper(str) {
  function windowSize (line 143) | function windowSize(x) {
  function bind (line 146) | function bind(func, thisObj) {
  function initOverlayScrollbarsStatics (line 628) | function initOverlayScrollbarsStatics() {
  function OverlayScrollbarsGlobals (line 640) | function OverlayScrollbarsGlobals(defaultOptions) {
  function OverlayScrollbarsAutoUpdateLoop (line 841) | function OverlayScrollbarsAutoUpdateLoop(globals) {
  function OverlayScrollbarsInstance (line 950) | function OverlayScrollbarsInstance(pluginTargetElement, options, extensi...

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/popper/esm/popper-utils.js
  function getStyleComputedProperty (line 32) | function getStyleComputedProperty(element, property) {
  function getParentNode (line 49) | function getParentNode(element) {
  function getScrollParent (line 63) | function getScrollParent(element) {
  function getReferenceNode (line 98) | function getReferenceNode(reference) {
  function isIE (line 114) | function isIE(version) {
  function getOffsetParent (line 131) | function getOffsetParent(element) {
  function isOffsetContainer (line 160) | function isOffsetContainer(element) {
  function getRoot (line 176) | function getRoot(node) {
  function findCommonOffsetParent (line 192) | function findCommonOffsetParent(element1, element2) {
  function getScroll (line 236) | function getScroll(element) {
  function includeScroll (line 260) | function includeScroll(rect, element) {
  function getBordersSize (line 283) | function getBordersSize(styles, axis) {
  function getSize (line 290) | function getSize(axis, body, html, computedStyle) {
  function getWindowSizes (line 294) | function getWindowSizes(document) {
  function getClientRect (line 326) | function getClientRect(offsets) {
  function getBoundingClientRect (line 340) | function getBoundingClientRect(element) {
  function getOffsetRectRelativeToArbitraryNode (line 389) | function getOffsetRectRelativeToArbitraryNode(children, parent) {
  function getViewportOffsetRectRelativeToArtbitraryNode (line 441) | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
  function isFixed (line 470) | function isFixed(element) {
  function getFixedPositionOffsetParent (line 493) | function getFixedPositionOffsetParent(element) {
  function getBoundaries (line 516) | function getBoundaries(popper, reference, padding, boundariesElement) {
  function getArea (line 570) | function getArea(_ref) {
  function computeAutoPlacement (line 586) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
  function microtaskDebounce (line 647) | function microtaskDebounce(fn) {
  function taskDebounce (line 661) | function taskDebounce(fn) {
  function find (line 696) | function find(arr, check) {
  function findIndex (line 715) | function findIndex(arr, prop, value) {
  function getOffsetRect (line 737) | function getOffsetRect(element) {
  function getOuterSizes (line 770) | function getOuterSizes(element) {
  function getOppositePlacement (line 789) | function getOppositePlacement(placement) {
  function getPopperOffsets (line 806) | function getPopperOffsets(popper, referenceOffsets, placement) {
  function getReferenceOffsets (line 845) | function getReferenceOffsets(state, popper, reference) {
  function getSupportedPropertyName (line 859) | function getSupportedPropertyName(property) {
  function isFunction (line 880) | function isFunction(functionToCheck) {
  function isModifierEnabled (line 891) | function isModifierEnabled(modifiers, modifierName) {
  function isModifierRequired (line 909) | function isModifierRequired(modifiers, requestingName, requestedName) {
  function isNumeric (line 934) | function isNumeric(n) {
  function getWindow (line 943) | function getWindow(element) {
  function removeEventListeners (line 954) | function removeEventListeners(reference, state) {
  function runModifiers (line 981) | function runModifiers(modifiers, data, ends) {
  function setAttributes (line 1012) | function setAttributes(element, attributes) {
  function setStyles (line 1031) | function setStyles(element, styles) {
  function attachToScrollParents (line 1042) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
  function setupEventListeners (line 1059) | function setupEventListeners(reference, options, state, updateBound) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/popper/esm/popper.js
  function microtaskDebounce (line 37) | function microtaskDebounce(fn) {
  function taskDebounce (line 51) | function taskDebounce(fn) {
  function isFunction (line 84) | function isFunction(functionToCheck) {
  function getStyleComputedProperty (line 96) | function getStyleComputedProperty(element, property) {
  function getParentNode (line 113) | function getParentNode(element) {
  function getScrollParent (line 127) | function getScrollParent(element) {
  function getReferenceNode (line 162) | function getReferenceNode(reference) {
  function isIE (line 176) | function isIE(version) {
  function getOffsetParent (line 193) | function getOffsetParent(element) {
  function isOffsetContainer (line 222) | function isOffsetContainer(element) {
  function getRoot (line 238) | function getRoot(node) {
  function findCommonOffsetParent (line 254) | function findCommonOffsetParent(element1, element2) {
  function getScroll (line 298) | function getScroll(element) {
  function includeScroll (line 322) | function includeScroll(rect, element) {
  function getBordersSize (line 345) | function getBordersSize(styles, axis) {
  function getSize (line 352) | function getSize(axis, body, html, computedStyle) {
  function getWindowSizes (line 356) | function getWindowSizes(document) {
  function defineProperties (line 374) | function defineProperties(target, props) {
  function getClientRect (line 431) | function getClientRect(offsets) {
  function getBoundingClientRect (line 445) | function getBoundingClientRect(element) {
  function getOffsetRectRelativeToArbitraryNode (line 494) | function getOffsetRectRelativeToArbitraryNode(children, parent) {
  function getViewportOffsetRectRelativeToArtbitraryNode (line 546) | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
  function isFixed (line 575) | function isFixed(element) {
  function getFixedPositionOffsetParent (line 598) | function getFixedPositionOffsetParent(element) {
  function getBoundaries (line 621) | function getBoundaries(popper, reference, padding, boundariesElement) {
  function getArea (line 675) | function getArea(_ref) {
  function computeAutoPlacement (line 691) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
  function getReferenceOffsets (line 752) | function getReferenceOffsets(state, popper, reference) {
  function getOuterSizes (line 766) | function getOuterSizes(element) {
  function getOppositePlacement (line 785) | function getOppositePlacement(placement) {
  function getPopperOffsets (line 802) | function getPopperOffsets(popper, referenceOffsets, placement) {
  function find (line 840) | function find(arr, check) {
  function findIndex (line 859) | function findIndex(arr, prop, value) {
  function runModifiers (line 884) | function runModifiers(modifiers, data, ends) {
  function update (line 914) | function update() {
  function isModifierEnabled (line 966) | function isModifierEnabled(modifiers, modifierName) {
  function getSupportedPropertyName (line 981) | function getSupportedPropertyName(property) {
  function destroy (line 1000) | function destroy() {
  function getWindow (line 1030) | function getWindow(element) {
  function attachToScrollParents (line 1035) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
  function setupEventListeners (line 1052) | function setupEventListeners(reference, options, state, updateBound) {
  function enableEventListeners (line 1072) | function enableEventListeners() {
  function removeEventListeners (line 1084) | function removeEventListeners(reference, state) {
  function disableEventListeners (line 1108) | function disableEventListeners() {
  function isNumeric (line 1122) | function isNumeric(n) {
  function setStyles (line 1134) | function setStyles(element, styles) {
  function setAttributes (line 1153) | function setAttributes(element, attributes) {
  function applyStyle (line 1173) | function applyStyle(data) {
  function applyStyleOnLoad (line 1202) | function applyStyleOnLoad(reference, popper, options, modifierOptions, s...
  function getRoundedOffsets (line 1239) | function getRoundedOffsets(data, shouldRound) {
  function computeStyle (line 1278) | function computeStyle(data, options) {
  function isModifierRequired (line 1379) | function isModifierRequired(modifiers, requestingName, requestedName) {
  function arrow (line 1404) | function arrow(data, options) {
  function getOppositeVariation (line 1486) | function getOppositeVariation(variation) {
  function clockwise (line 1541) | function clockwise(placement) {
  function flip (line 1562) | function flip(data, options) {
  function keepTogether (line 1659) | function keepTogether(data) {
  function toValue (line 1693) | function toValue(str, measurement, popperOffsets, referenceOffsets) {
  function parseOffset (line 1745) | function parseOffset(offset, popperOffsets, referenceOffsets, basePlacem...
  function offset (line 1821) | function offset(data, _ref) {
  function preventOverflow (line 1862) | function preventOverflow(data, options) {
  function shift (line 1933) | function shift(data) {
  function hide (line 1966) | function hide(data) {
  function inner (line 2004) | function inner(data) {
  function Popper (line 2471) | function Popper(reference, popper) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/popper/popper-utils.js
  function getStyleComputedProperty (line 32) | function getStyleComputedProperty(element, property) {
  function getParentNode (line 49) | function getParentNode(element) {
  function getScrollParent (line 63) | function getScrollParent(element) {
  function getReferenceNode (line 93) | function getReferenceNode(reference) {
  function isIE (line 109) | function isIE(version) {
  function getOffsetParent (line 126) | function getOffsetParent(element) {
  function isOffsetContainer (line 155) | function isOffsetContainer(element) {
  function getRoot (line 170) | function getRoot(node) {
  function findCommonOffsetParent (line 186) | function findCommonOffsetParent(element1, element2) {
  function getScroll (line 229) | function getScroll(element, side = 'top') {
  function includeScroll (line 251) | function includeScroll(rect, element, subtract = false) {
  function getBordersSize (line 272) | function getBordersSize(styles, axis) {
  function getSize (line 279) | function getSize(axis, body, html, computedStyle) {
  function getWindowSizes (line 283) | function getWindowSizes(document) {
  function getClientRect (line 315) | function getClientRect(offsets) {
  function getBoundingClientRect (line 329) | function getBoundingClientRect(element) {
  function getOffsetRectRelativeToArbitraryNode (line 378) | function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPos...
  function getViewportOffsetRectRelativeToArtbitraryNode (line 428) | function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeS...
  function isFixed (line 455) | function isFixed(element) {
  function getFixedPositionOffsetParent (line 478) | function getFixedPositionOffsetParent(element) {
  function getBoundaries (line 501) | function getBoundaries(popper, reference, padding, boundariesElement, fi...
  function getArea (line 550) | function getArea({ width, height }) {
  function computeAutoPlacement (line 563) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
  function microtaskDebounce (line 614) | function microtaskDebounce(fn) {
  function taskDebounce (line 628) | function taskDebounce(fn) {
  function find (line 663) | function find(arr, check) {
  function findIndex (line 682) | function findIndex(arr, prop, value) {
  function getOffsetRect (line 700) | function getOffsetRect(element) {
  function getOuterSizes (line 730) | function getOuterSizes(element) {
  function getOppositePlacement (line 749) | function getOppositePlacement(placement) {
  function getPopperOffsets (line 764) | function getPopperOffsets(popper, referenceOffsets, placement) {
  function getReferenceOffsets (line 803) | function getReferenceOffsets(state, popper, reference, fixedPosition = n...
  function getSupportedPropertyName (line 815) | function getSupportedPropertyName(property) {
  function isFunction (line 836) | function isFunction(functionToCheck) {
  function isModifierEnabled (line 847) | function isModifierEnabled(modifiers, modifierName) {
  function isModifierRequired (line 861) | function isModifierRequired(modifiers, requestingName, requestedName) {
  function isNumeric (line 883) | function isNumeric(n) {
  function getWindow (line 892) | function getWindow(element) {
  function removeEventListeners (line 903) | function removeEventListeners(reference, state) {
  function runModifiers (line 930) | function runModifiers(modifiers, data, ends) {
  function setAttributes (line 961) | function setAttributes(element, attributes) {
  function setStyles (line 980) | function setStyles(element, styles) {
  function attachToScrollParents (line 991) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
  function setupEventListeners (line 1008) | function setupEventListeners(reference, options, state, updateBound) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/popper/popper.js
  function microtaskDebounce (line 37) | function microtaskDebounce(fn) {
  function taskDebounce (line 51) | function taskDebounce(fn) {
  function isFunction (line 84) | function isFunction(functionToCheck) {
  function getStyleComputedProperty (line 96) | function getStyleComputedProperty(element, property) {
  function getParentNode (line 113) | function getParentNode(element) {
  function getScrollParent (line 127) | function getScrollParent(element) {
  function getReferenceNode (line 157) | function getReferenceNode(reference) {
  function isIE (line 171) | function isIE(version) {
  function getOffsetParent (line 188) | function getOffsetParent(element) {
  function isOffsetContainer (line 217) | function isOffsetContainer(element) {
  function getRoot (line 232) | function getRoot(node) {
  function findCommonOffsetParent (line 248) | function findCommonOffsetParent(element1, element2) {
  function getScroll (line 291) | function getScroll(element, side = 'top') {
  function includeScroll (line 313) | function includeScroll(rect, element, subtract = false) {
  function getBordersSize (line 334) | function getBordersSize(styles, axis) {
  function getSize (line 341) | function getSize(axis, body, html, computedStyle) {
  function getWindowSizes (line 345) | function getWindowSizes(document) {
  function getClientRect (line 377) | function getClientRect(offsets) {
  function getBoundingClientRect (line 391) | function getBoundingClientRect(element) {
  function getOffsetRectRelativeToArbitraryNode (line 440) | function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPos...
  function getViewportOffsetRectRelativeToArtbitraryNode (line 490) | function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeS...
  function isFixed (line 517) | function isFixed(element) {
  function getFixedPositionOffsetParent (line 540) | function getFixedPositionOffsetParent(element) {
  function getBoundaries (line 563) | function getBoundaries(popper, reference, padding, boundariesElement, fi...
  function getArea (line 612) | function getArea({ width, height }) {
  function computeAutoPlacement (line 625) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
  function getReferenceOffsets (line 676) | function getReferenceOffsets(state, popper, reference, fixedPosition = n...
  function getOuterSizes (line 688) | function getOuterSizes(element) {
  function getOppositePlacement (line 707) | function getOppositePlacement(placement) {
  function getPopperOffsets (line 722) | function getPopperOffsets(popper, referenceOffsets, placement) {
  function find (line 760) | function find(arr, check) {
  function findIndex (line 779) | function findIndex(arr, prop, value) {
  function runModifiers (line 800) | function runModifiers(modifiers, data, ends) {
  function update (line 830) | function update() {
  function isModifierEnabled (line 882) | function isModifierEnabled(modifiers, modifierName) {
  function getSupportedPropertyName (line 893) | function getSupportedPropertyName(property) {
  function destroy (line 912) | function destroy() {
  function getWindow (line 942) | function getWindow(element) {
  function attachToScrollParents (line 947) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
  function setupEventListeners (line 964) | function setupEventListeners(reference, options, state, updateBound) {
  function enableEventListeners (line 984) | function enableEventListeners() {
  function removeEventListeners (line 996) | function removeEventListeners(reference, state) {
  function disableEventListeners (line 1020) | function disableEventListeners() {
  function isNumeric (line 1034) | function isNumeric(n) {
  function setStyles (line 1046) | function setStyles(element, styles) {
  function setAttributes (line 1065) | function setAttributes(element, attributes) {
  function applyStyle (line 1085) | function applyStyle(data) {
  function applyStyleOnLoad (line 1114) | function applyStyleOnLoad(reference, popper, options, modifierOptions, s...
  function getRoundedOffsets (line 1151) | function getRoundedOffsets(data, shouldRound) {
  function computeStyle (line 1184) | function computeStyle(data, options) {
  function isModifierRequired (line 1280) | function isModifierRequired(modifiers, requestingName, requestedName) {
  function arrow (line 1302) | function arrow(data, options) {
  function getOppositeVariation (line 1382) | function getOppositeVariation(variation) {
  function clockwise (line 1437) | function clockwise(placement, counter = false) {
  constant BEHAVIORS (line 1443) | const BEHAVIORS = {
  function flip (line 1456) | function flip(data, options) {
  function keepTogether (line 1553) | function keepTogether(data) {
  function toValue (line 1584) | function toValue(str, measurement, popperOffsets, referenceOffsets) {
  function parseOffset (line 1636) | function parseOffset(offset, popperOffsets, referenceOffsets, basePlacem...
  function offset (line 1706) | function offset(data, { offset }) {
  function preventOverflow (line 1742) | function preventOverflow(data, options) {
  function shift (line 1810) | function shift(data) {
  function hide (line 1842) | function hide(data) {
  function inner (line 1878) | function inner(data) {
  class Popper (line 2333) | class Popper {
    method constructor (line 2342) | constructor(reference, popper, options = {}) {
    method update (line 2399) | update() {
    method destroy (line 2402) | destroy() {
    method enableEventListeners (line 2405) | enableEventListeners() {
    method disableEventListeners (line 2408) | disableEventListeners() {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/popper/umd/popper-utils.js
  function getStyleComputedProperty (line 38) | function getStyleComputedProperty(element, property) {
  function getParentNode (line 55) | function getParentNode(element) {
  function getScrollParent (line 69) | function getScrollParent(element) {
  function getReferenceNode (line 104) | function getReferenceNode(reference) {
  function isIE (line 120) | function isIE(version) {
  function getOffsetParent (line 137) | function getOffsetParent(element) {
  function isOffsetContainer (line 166) | function isOffsetContainer(element) {
  function getRoot (line 182) | function getRoot(node) {
  function findCommonOffsetParent (line 198) | function findCommonOffsetParent(element1, element2) {
  function getScroll (line 242) | function getScroll(element) {
  function includeScroll (line 266) | function includeScroll(rect, element) {
  function getBordersSize (line 289) | function getBordersSize(styles, axis) {
  function getSize (line 296) | function getSize(axis, body, html, computedStyle) {
  function getWindowSizes (line 300) | function getWindowSizes(document) {
  function getClientRect (line 332) | function getClientRect(offsets) {
  function getBoundingClientRect (line 346) | function getBoundingClientRect(element) {
  function getOffsetRectRelativeToArbitraryNode (line 395) | function getOffsetRectRelativeToArbitraryNode(children, parent) {
  function getViewportOffsetRectRelativeToArtbitraryNode (line 447) | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
  function isFixed (line 476) | function isFixed(element) {
  function getFixedPositionOffsetParent (line 499) | function getFixedPositionOffsetParent(element) {
  function getBoundaries (line 522) | function getBoundaries(popper, reference, padding, boundariesElement) {
  function getArea (line 576) | function getArea(_ref) {
  function computeAutoPlacement (line 592) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
  function microtaskDebounce (line 653) | function microtaskDebounce(fn) {
  function taskDebounce (line 667) | function taskDebounce(fn) {
  function find (line 702) | function find(arr, check) {
  function findIndex (line 721) | function findIndex(arr, prop, value) {
  function getOffsetRect (line 743) | function getOffsetRect(element) {
  function getOuterSizes (line 776) | function getOuterSizes(element) {
  function getOppositePlacement (line 795) | function getOppositePlacement(placement) {
  function getPopperOffsets (line 812) | function getPopperOffsets(popper, referenceOffsets, placement) {
  function getReferenceOffsets (line 851) | function getReferenceOffsets(state, popper, reference) {
  function getSupportedPropertyName (line 865) | function getSupportedPropertyName(property) {
  function isFunction (line 886) | function isFunction(functionToCheck) {
  function isModifierEnabled (line 897) | function isModifierEnabled(modifiers, modifierName) {
  function isModifierRequired (line 915) | function isModifierRequired(modifiers, requestingName, requestedName) {
  function isNumeric (line 940) | function isNumeric(n) {
  function getWindow (line 949) | function getWindow(element) {
  function removeEventListeners (line 960) | function removeEventListeners(reference, state) {
  function runModifiers (line 987) | function runModifiers(modifiers, data, ends) {
  function setAttributes (line 1018) | function setAttributes(element, attributes) {
  function setStyles (line 1037) | function setStyles(element, styles) {
  function attachToScrollParents (line 1048) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
  function setupEventListeners (line 1065) | function setupEventListeners(reference, options, state, updateBound) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/docs/assets/plugins/popper/umd/popper.js
  function microtaskDebounce (line 43) | function microtaskDebounce(fn) {
  function taskDebounce (line 57) | function taskDebounce(fn) {
  function isFunction (line 90) | function isFunction(functionToCheck) {
  function getStyleComputedProperty (line 102) | function getStyleComputedProperty(element, property) {
  function getParentNode (line 119) | function getParentNode(element) {
  function getScrollParent (line 133) | function getScrollParent(element) {
  function getReferenceNode (line 168) | function getReferenceNode(reference) {
  function isIE (line 182) | function isIE(version) {
  function getOffsetParent (line 199) | function getOffsetParent(element) {
  function isOffsetContainer (line 228) | function isOffsetContainer(element) {
  function getRoot (line 244) | function getRoot(node) {
  function findCommonOffsetParent (line 260) | function findCommonOffsetParent(element1, element2) {
  function getScroll (line 304) | function getScroll(element) {
  function includeScroll (line 328) | function includeScroll(rect, element) {
  function getBordersSize (line 351) | function getBordersSize(styles, axis) {
  function getSize (line 358) | function getSize(axis, body, html, computedStyle) {
  function getWindowSizes (line 362) | function getWindowSizes(document) {
  function defineProperties (line 380) | function defineProperties(target, props) {
  function getClientRect (line 437) | function getClientRect(offsets) {
  function getBoundingClientRect (line 451) | function getBoundingClientRect(element) {
  function getOffsetRectRelativeToArbitraryNode (line 500) | function getOffsetRectRelativeToArbitraryNode(children, parent) {
  function getViewportOffsetRectRelativeToArtbitraryNode (line 552) | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
  function isFixed (line 581) | function isFixed(element) {
  function getFixedPositionOffsetParent (line 604) | function getFixedPositionOffsetParent(element) {
  function getBoundaries (line 627) | function getBoundaries(popper, reference, padding, boundariesElement) {
  function getArea (line 681) | function getArea(_ref) {
  function computeAutoPlacement (line 697) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
  function getReferenceOffsets (line 758) | function getReferenceOffsets(state, popper, reference) {
  function getOuterSizes (line 772) | function getOuterSizes(element) {
  function getOppositePlacement (line 791) | function getOppositePlacement(placement) {
  function getPopperOffsets (line 808) | function getPopperOffsets(popper, referenceOffsets, placement) {
  function find (line 846) | function find(arr, check) {
  function findIndex (line 865) | function findIndex(arr, prop, value) {
  function runModifiers (line 890) | function runModifiers(modifiers, data, ends) {
  function update (line 920) | function update() {
  function isModifierEnabled (line 972) | function isModifierEnabled(modifiers, modifierName) {
  function getSupportedPropertyName (line 987) | function getSupportedPropertyName(property) {
  function destroy (line 1006) | function destroy() {
  function getWindow (line 1036) | function getWindow(element) {
  function attachToScrollParents (line 1041) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
  function setupEventListeners (line 1058) | function setupEventListeners(reference, options, state, updateBound) {
  function enableEventListeners (line 1078) | function enableEventListeners() {
  function removeEventListeners (line 1090) | function removeEventListeners(reference, state) {
  function disableEventListeners (line 1114) | function disableEventListeners() {
  function isNumeric (line 1128) | function isNumeric(n) {
  function setStyles (line 1140) | function setStyles(element, styles) {
  function setAttributes (line 1159) | function setAttributes(element, attributes) {
  function applyStyle (line 1179) | function applyStyle(data) {
  function applyStyleOnLoad (line 1208) | function applyStyleOnLoad(reference, popper, options, modifierOptions, s...
  function getRoundedOffsets (line 1245) | function getRoundedOffsets(data, shouldRound) {
  function computeStyle (line 1284) | function computeStyle(data, options) {
  function isModifierRequired (line 1385) | function isModifierRequired(modifiers, requestingName, requestedName) {
  function arrow (line 1410) | function arrow(data, options) {
  function getOppositeVariation (line 1492) | function getOppositeVariation(variation) {
  function clockwise (line 1547) | function clockwise(placement) {
  function flip (line 1568) | function flip(data, options) {
  function keepTogether (line 1665) | function keepTogether(data) {
  function toValue (line 1699) | function toValue(str, measurement, popperOffsets, referenceOffsets) {
  function parseOffset (line 1751) | function parseOffset(offset, popperOffsets, referenceOffsets, basePlacem...
  function offset (line 1827) | function offset(data, _ref) {
  function preventOverflow (line 1868) | function preventOverflow(data, options) {
  function shift (line 1939) | function shift(data) {
  function hide (line 1972) | function hide(data) {
  function inner (line 2010) | function inner(data) {
  function Popper (line 2477) | function Popper(reference, popper) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js
  function __webpack_require__ (line 24) | function __webpack_require__(moduleId) {
  function defineProperties (line 122) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 128) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 130) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Extension (line 140) | function Extension(colorpicker) {
  function defineProperties (line 327) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 336) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 338) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function HSVAColor (line 351) | function HSVAColor(h, s, v, a) {
  function ColorItem (line 447) | function ColorItem() {
  function defineProperties (line 1389) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 1399) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 1401) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 1403) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 1405) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Palette (line 1461) | function Palette(colorpicker) {
  function comparativeDistance (line 1922) | function comparativeDistance(x, y) {
  function _interopRequireDefault (line 2636) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function defineProperties (line 2695) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 2741) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 2743) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Colorpicker (line 2825) | function Colorpicker(element, options) {
  function _interopRequireDefault (line 3284) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function defineProperties (line 3308) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 3320) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 3322) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 3324) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 3326) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Debugger (line 3336) | function Debugger(colorpicker) {
  function defineProperties (line 3490) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 3502) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 3504) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 3506) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 3508) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Preview (line 3517) | function Preview(colorpicker) {
  function defineProperties (line 3580) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 3592) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 3594) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 3596) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 3598) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Swatches (line 3613) | function Swatches(colorpicker) {
  function defineProperties (line 3688) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 3694) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 3696) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function SliderHandler (line 3706) | function SliderHandler(colorpicker) {
  function defineProperties (line 3966) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 3976) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 3978) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function PopupHandler (line 3989) | function PopupHandler(colorpicker, root) {
  function defineProperties (line 4437) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 4447) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 4449) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function InputHandler (line 4459) | function InputHandler(colorpicker) {
  function Color (line 4774) | function Color(obj, model) {
  function roundTo (line 5169) | function roundTo(num, places) {
  function roundToPlace (line 5173) | function roundToPlace(places) {
  function getset (line 5179) | function getset(model, channel, modifier) {
  function maxfn (line 5210) | function maxfn(max) {
  function assertArray (line 5216) | function assertArray(val) {
  function zeroArray (line 5220) | function zeroArray(arr, length) {
  function clamp (line 5463) | function clamp(num, min, max) {
  function hexDouble (line 5467) | function hexDouble(num) {
  function wrapRaw (line 5537) | function wrapRaw(fn) {
  function wrapRounded (line 5558) | function wrapRounded(fn) {
  function buildGraph (line 5627) | function buildGraph() {
  function deriveBFS (line 5645) | function deriveBFS(fromModel) {
  function link (line 5670) | function link(from, to) {
  function wrapConversion (line 5676) | function wrapConversion(toModel, graph) {
  function defineProperties (line 5724) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 5734) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 5736) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function ColorHandler (line 5746) | function ColorHandler(colorpicker) {
  function defineProperties (line 6012) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 6018) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 6020) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function PickerHandler (line 6030) | function PickerHandler(colorpicker) {
  function defineProperties (line 6171) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 6173) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function AddonHandler (line 6179) | function AddonHandler(colorpicker) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/bootstrap-slider/bootstrap-slider.js
  function noop (line 95) | function noop() {}
  function defineBridget (line 99) | function defineBridget($) {
  function createNewSlider (line 333) | function createNewSlider(element, options) {
  function getPositionPercentages (line 1207) | function getPositionPercentages(state, reversed) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/bootstrap-switch/js/bootstrap-switch.js
  function _interopRequireDefault (line 27) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 47) | function _classCallCheck(instance, Constructor) {
  function defineProperties (line 54) | function defineProperties(target, props) {
  function BootstrapSwitch (line 74) | function BootstrapSwitch(element) {
  function reducer (line 748) | function reducer(ret, next) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/bootstrap/js/bootstrap.bundle.js
  function _interopDefaultLegacy (line 12) | function _interopDefaultLegacy (e) { return e && typeof e === 'object' &...
  function _defineProperties (line 16) | function _defineProperties(target, props) {
  function _createClass (line 26) | function _createClass(Constructor, protoProps, staticProps) {
  function _extends (line 32) | function _extends() {
  function _inheritsLoose (line 50) | function _inheritsLoose(subClass, superClass) {
  function toType (line 72) | function toType(obj) {
  function getSpecialTransitionEndEvent (line 80) | function getSpecialTransitionEndEvent() {
  function transitionEndEmulator (line 94) | function transitionEndEmulator(duration) {
  function setTransitionEndSupport (line 109) | function setTransitionEndSupport() {
  function Alert (line 256) | function Alert(element) {
  function Button (line 418) | function Button(element) {
  function Carousel (line 664) | function Carousel(element, config) {
  function Collapse (line 1224) | function Collapse(element, config) {
  function microtaskDebounce (line 1569) | function microtaskDebounce(fn) {
  function taskDebounce (line 1583) | function taskDebounce(fn) {
  function isFunction (line 1616) | function isFunction(functionToCheck) {
  function getStyleComputedProperty (line 1628) | function getStyleComputedProperty(element, property) {
  function getParentNode (line 1645) | function getParentNode(element) {
  function getScrollParent (line 1659) | function getScrollParent(element) {
  function getReferenceNode (line 1694) | function getReferenceNode(reference) {
  function isIE (line 1708) | function isIE(version) {
  function getOffsetParent (line 1725) | function getOffsetParent(element) {
  function isOffsetContainer (line 1754) | function isOffsetContainer(element) {
  function getRoot (line 1770) | function getRoot(node) {
  function findCommonOffsetParent (line 1786) | function findCommonOffsetParent(element1, element2) {
  function getScroll (line 1830) | function getScroll(element) {
  function includeScroll (line 1854) | function includeScroll(rect, element) {
  function getBordersSize (line 1877) | function getBordersSize(styles, axis) {
  function getSize (line 1884) | function getSize(axis, body, html, computedStyle) {
  function getWindowSizes (line 1888) | function getWindowSizes(document) {
  function defineProperties (line 1906) | function defineProperties(target, props) {
  function getClientRect (line 1963) | function getClientRect(offsets) {
  function getBoundingClientRect (line 1977) | function getBoundingClientRect(element) {
  function getOffsetRectRelativeToArbitraryNode (line 2026) | function getOffsetRectRelativeToArbitraryNode(children, parent) {
  function getViewportOffsetRectRelativeToArtbitraryNode (line 2078) | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
  function isFixed (line 2107) | function isFixed(element) {
  function getFixedPositionOffsetParent (line 2130) | function getFixedPositionOffsetParent(element) {
  function getBoundaries (line 2153) | function getBoundaries(popper, reference, padding, boundariesElement) {
  function getArea (line 2207) | function getArea(_ref) {
  function computeAutoPlacement (line 2223) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
  function getReferenceOffsets (line 2284) | function getReferenceOffsets(state, popper, reference) {
  function getOuterSizes (line 2298) | function getOuterSizes(element) {
  function getOppositePlacement (line 2317) | function getOppositePlacement(placement) {
  function getPopperOffsets (line 2334) | function getPopperOffsets(popper, referenceOffsets, placement) {
  function find (line 2372) | function find(arr, check) {
  function findIndex (line 2391) | function findIndex(arr, prop, value) {
  function runModifiers (line 2416) | function runModifiers(modifiers, data, ends) {
  function update (line 2446) | function update() {
  function isModifierEnabled (line 2498) | function isModifierEnabled(modifiers, modifierName) {
  function getSupportedPropertyName (line 2513) | function getSupportedPropertyName(property) {
  function destroy (line 2532) | function destroy() {
  function getWindow (line 2562) | function getWindow(element) {
  function attachToScrollParents (line 2567) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
  function setupEventListeners (line 2584) | function setupEventListeners(reference, options, state, updateBound) {
  function enableEventListeners (line 2604) | function enableEventListeners() {
  function removeEventListeners (line 2616) | function removeEventListeners(reference, state) {
  function disableEventListeners (line 2640) | function disableEventListeners() {
  function isNumeric (line 2654) | function isNumeric(n) {
  function setStyles (line 2666) | function setStyles(element, styles) {
  function setAttributes (line 2685) | function setAttributes(element, attributes) {
  function applyStyle (line 2705) | function applyStyle(data) {
  function applyStyleOnLoad (line 2734) | function applyStyleOnLoad(reference, popper, options, modifierOptions, s...
  function getRoundedOffsets (line 2771) | function getRoundedOffsets(data, shouldRound) {
  function computeStyle (line 2810) | function computeStyle(data, options) {
  function isModifierRequired (line 2911) | function isModifierRequired(modifiers, requestingName, requestedName) {
  function arrow (line 2936) | function arrow(data, options) {
  function getOppositeVariation (line 3018) | function getOppositeVariation(variation) {
  function clockwise (line 3073) | function clockwise(placement) {
  function flip (line 3094) | function flip(data, options) {
  function keepTogether (line 3191) | function keepTogether(data) {
  function toValue (line 3225) | function toValue(str, measurement, popperOffsets, referenceOffsets) {
  function parseOffset (line 3277) | function parseOffset(offset, popperOffsets, referenceOffsets, basePlacem...
  function offset (line 3353) | function offset(data, _ref) {
  function preventOverflow (line 3394) | function preventOverflow(data, options) {
  function shift (line 3465) | function shift(data) {
  function hide (line 3498) | function hide(data) {
  function inner (line 3536) | function inner(data) {
  function Popper (line 4003) | function Popper(reference, popper) {
  function Dropdown (line 4221) | function Dropdown(element, config) {
  function Modal (line 4719) | function Modal(element, config) {
  function allowedAttribute (line 5332) | function allowedAttribute(attr, allowedAttributeList) {
  function sanitizeHtml (line 5356) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
  function Tooltip (line 5485) | function Tooltip(element, config) {
  function Popover (line 6163) | function Popover() {
  function ScrollSpy (line 6337) | function ScrollSpy(element, config) {
  function Tab (line 6621) | function Tab(element) {
  function Toast (line 6849) | function Toast(element, config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/bootstrap/js/bootstrap.js
  function _interopDefaultLegacy (line 12) | function _interopDefaultLegacy (e) { return e && typeof e === 'object' &...
  function _defineProperties (line 17) | function _defineProperties(target, props) {
  function _createClass (line 27) | function _createClass(Constructor, protoProps, staticProps) {
  function _extends (line 33) | function _extends() {
  function _inheritsLoose (line 51) | function _inheritsLoose(subClass, superClass) {
  function toType (line 73) | function toType(obj) {
  function getSpecialTransitionEndEvent (line 81) | function getSpecialTransitionEndEvent() {
  function transitionEndEmulator (line 95) | function transitionEndEmulator(duration) {
  function setTransitionEndSupport (line 110) | function setTransitionEndSupport() {
  function Alert (line 257) | function Alert(element) {
  function Button (line 419) | function Button(element) {
  function Carousel (line 665) | function Carousel(element, config) {
  function Collapse (line 1225) | function Collapse(element, config) {
  function Dropdown (line 1608) | function Dropdown(element, config) {
  function Modal (line 2106) | function Modal(element, config) {
  function allowedAttribute (line 2719) | function allowedAttribute(attr, allowedAttributeList) {
  function sanitizeHtml (line 2743) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
  function Tooltip (line 2872) | function Tooltip(element, config) {
  function Popover (line 3550) | function Popover() {
  function ScrollSpy (line 3724) | function ScrollSpy(element, config) {
  function Tab (line 4008) | function Tab(element) {
  function Toast (line 4236) | function Toast(element, config) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/bootstrap4-duallistbox/jquery.bootstrap-duallistbox.js
  function BootstrapDualListbox (line 68) | function BootstrapDualListbox(element, options) {
  function triggerChangeEvent (line 80) | function triggerChangeEvent(dualListbox) {
  function updateSelectionStates (line 84) | function updateSelectionStates(dualListbox) {
  function changeSelectionState (line 96) | function changeSelectionState(dualListbox, original_index, selected) {
  function formatString (line 111) | function formatString(s, args) {
  function refreshInfo (line 118) | function refreshInfo(dualListbox) {
  function refreshSelects (line 152) | function refreshSelects(dualListbox) {
  function filter (line 175) | function filter(dualListbox, selectIndex) {
  function saveSelections (line 214) | function saveSelections(dualListbox, selectIndex) {
  function sortOptionsByInputOrder (line 222) | function sortOptionsByInputOrder(select){
  function sortOptions (line 241) | function sortOptions(select, dualListbox) {
  function clearSelections (line 250) | function clearSelections(dualListbox) {
  function move (line 256) | function move(dualListbox) {
  function remove (line 280) | function remove(dualListbox) {
  function moveAll (line 303) | function moveAll(dualListbox) {
  function removeAll (line 324) | function removeAll(dualListbox) {
  function bindEvents (line 344) | function bindEvents(dualListbox) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/bs-custom-file-input/bs-custom-file-input.js
  function handleInputChange (line 77) | function handleInputChange() {
  function handleFormReset (line 92) | function handleFormReset() {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/bs-stepper/js/bs-stepper.js
  function _extends (line 12) | function _extends() {
  function polyfill (line 47) | function polyfill() {
  function complete (line 198) | function complete() {
  function listener (line 247) | function listener() {
  function Stepper (line 305) | function Stepper(element, _options) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/chart.js/Chart.bundle.js
  function commonjsRequire (line 15) | function commonjsRequire () {
  function createCommonjsModule (line 19) | function createCommonjsModule(fn, module) {
  function getCjsExportFromNamespace (line 23) | function getCjsExportFromNamespace (n) {
  function comparativeDistance (line 352) | function comparativeDistance(x, y) {
  function buildGraph (line 1075) | function buildGraph() {
  function deriveBFS (line 1093) | function deriveBFS(fromModel) {
  function link (line 1118) | function link(from, to) {
  function wrapConversion (line 1124) | function wrapConversion(toModel, graph) {
  function wrapRaw (line 1163) | function wrapRaw(fn) {
  function wrapRounded (line 1184) | function wrapRounded(fn) {
  function getRgba (line 1408) | function getRgba(string) {
  function getHsla (line 1477) | function getHsla(string) {
  function getHwb (line 1493) | function getHwb(string) {
  function getRgb (line 1509) | function getRgb(string) {
  function getHsl (line 1514) | function getHsl(string) {
  function getAlpha (line 1519) | function getAlpha(string) {
  function hexString (line 1533) | function hexString(rgba, a) {
  function rgbString (line 1545) | function rgbString(rgba, alpha) {
  function rgbaString (line 1552) | function rgbaString(rgba, alpha) {
  function percentString (line 1560) | function percentString(rgba, alpha) {
  function percentaString (line 1571) | function percentaString(rgba, alpha) {
  function hslString (line 1578) | function hslString(hsla, alpha) {
  function hslaString (line 1585) | function hslaString(hsla, alpha) {
  function hwbString (line 1595) | function hwbString(hwb, alpha) {
  function keyword (line 1603) | function keyword(rgb) {
  function scale (line 1608) | function scale(num, min, max) {
  function hexDouble (line 1612) | function hexDouble(num) {
  function isValidKey (line 2110) | function isValidKey(key) {
  function toFontString (line 3018) | function toFontString(font) {
  function interpolate (line 3291) | function interpolate(start, view, model, ease) {
  function listenArrayEvents (line 3571) | function listenArrayEvents(array, listener) {
  function unlistenArrayEvents (line 3612) | function unlistenArrayEvents(array, listener) {
  function clipArc (line 4147) | function clipArc(ctx, arc) {
  function drawFullCircleBorders (line 4169) | function drawFullCircleBorders(ctx, vm, arc, inner) {
  function drawBorder (line 4196) | function drawBorder(ctx, vm, arc) {
  function xRange (line 4463) | function xRange(mouseX) {
  function yRange (line 4468) | function yRange(mouseY) {
  function isVertical (line 4544) | function isVertical(vm) {
  function getBarBounds (line 4554) | function getBarBounds(vm) {
  function swap (line 4579) | function swap(orig, v1, v2) {
  function parseBorderSkipped (line 4583) | function parseBorderSkipped(vm) {
  function parseBorderWidth (line 4603) | function parseBorderWidth(vm, maxW, maxH) {
  function boundingRects (line 4625) | function boundingRects(vm) {
  function inRange (line 4647) | function inRange(vm, x, y) {
  function computeMinSampleSize (line 4785) | function computeMinSampleSize(scale, pixels) {
  function computeFitCategoryTraits (line 4808) | function computeFitCategoryTraits(index, ruler, options) {
  function computeFlexCategoryTraits (line 4841) | function computeFlexCategoryTraits(index, ruler, options) {
  function scaleClip (line 5807) | function scaleClip(scale, halfBorderWidth) {
  function defaultClip (line 5818) | function defaultClip(xScale, yScale, borderWidth) {
  function toClip (line 5831) | function toClip(value) {
  function capControlPoint (line 6055) | function capControlPoint(pt, min, max) {
  function capControlPoint (line 6612) | function capControlPoint(pt, min, max) {
  function getRelativePosition (line 6715) | function getRelativePosition(e, chart) {
  function parseVisibleItems (line 6731) | function parseVisibleItems(chart, handler) {
  function getIntersectItems (line 6752) | function getIntersectItems(chart, position) {
  function getNearestItems (line 6772) | function getNearestItems(chart, position, intersect, distanceMetric) {
  function getDistanceMetricForAxis (line 6800) | function getDistanceMetricForAxis(axis) {
  function indexMode (line 6811) | function indexMode(chart, e, options) {
  function filterByPosition (line 7011) | function filterByPosition(array, position) {
  function sortByWeight (line 7017) | function sortByWeight(array, reverse) {
  function wrapBoxes (line 7027) | function wrapBoxes(boxes) {
  function setLayoutDims (line 7044) | function setLayoutDims(layouts, params) {
  function buildLayoutBoxes (line 7057) | function buildLayoutBoxes(boxes) {
  function getCombinedMax (line 7073) | function getCombinedMax(maxPadding, chartArea, a, b) {
  function updateDims (line 7077) | function updateDims(chartArea, params, layout) {
  function handleMaxPadding (line 7110) | function handleMaxPadding(chartArea) {
  function getMargins (line 7124) | function getMargins(horizontal, chartArea) {
  function fitBoxes (line 7140) | function fitBoxes(boxes, chartArea, params) {
  function placeBoxes (line 7169) | function placeBoxes(boxes, chartArea, params) {
  function readUsedSize (line 7452) | function readUsedSize(element, property) {
  function initCanvas (line 7463) | function initCanvas(canvas, config) {
  function addListener (line 7538) | function addListener(node, type, listener) {
  function removeListener (line 7542) | function removeListener(node, type, listener) {
  function createEvent (line 7546) | function createEvent(type, chart, x, y, nativeEvent) {
  function fromNativeEvent (line 7556) | function fromNativeEvent(event, chart) {
  function throttled (line 7562) | function throttled(fn, thisArg) {
  function createDiv (line 7580) | function createDiv(cls) {
  function createResizer (line 7587) | function createResizer(handler) {
  function watchForRender (line 7620) | function watchForRender(node, handler) {
  function unwatchForRender (line 7642) | function unwatchForRender(node) {
  function addResizeListener (line 7657) | function addResizeListener(node, listener, chart) {
  function removeResizeListener (line 7694) | function removeResizeListener(node) {
  function injectCSS (line 7711) | function injectCSS(rootNode, css) {
  function pushOrConcat (line 8310) | function pushOrConcat(base, toPush) {
  function splitNewlines (line 8329) | function splitNewlines(str) {
  function createTooltipItem (line 8342) | function createTooltipItem(element) {
  function getBaseModel (line 8367) | function getBaseModel(tooltipOpts) {
  function getTooltipSize (line 8422) | function getTooltipSize(tooltip, model) {
  function determineAlignment (line 8490) | function determineAlignment(tooltip, size) {
  function getBackgroundPoint (line 8563) | function getBackgroundPoint(vm, size, alignment, chart) {
  function getAlignedX (line 8614) | function getAlignedX(vm, align) {
  function getBeforeAfterBodyLines (line 8625) | function getBeforeAfterBodyLines(callback) {
  function mergeScaleConfig (line 9192) | function mergeScaleConfig(/* config objects ... */) {
  function mergeConfig (line 9232) | function mergeConfig(/* config objects ... */) {
  function initConfig (line 9251) | function initConfig(config) {
  function updateConfig (line 9268) | function updateConfig(chart) {
  function nextAvailableScaleId (line 9289) | function nextAvailableScaleId(axesOpts, prefix, index) {
  function positionIsHorizontal (line 9302) | function positionIsHorizontal(position) {
  function compare2Level (line 9306) | function compare2Level(l1, l2) {
  function parseMaxStyle (line 10692) | function parseMaxStyle(styleValue, node, parentProperty) {
  function isConstrainedValue (line 10712) | function isConstrainedValue(value) {
  function getConstraintDimension (line 10723) | function getConstraintDimension(domNode, maxStyle, percentageProperty) {
  function abstract (line 10917) | function abstract() {
  function DateAdapter (line 10941) | function DateAdapter(options) {
  function sample (line 11171) | function sample(arr, numItems) {
  function getPixelForGridLine (line 11183) | function getPixelForGridLine(scale, index, offsetGridLines) {
  function garbageCollect (line 11210) | function garbageCollect(caches, length) {
  function computeLabelSizes (line 11228) | function computeLabelSizes(ctx, tickFonts, ticks, caches) {
  function getTickMarkLength (line 11286) | function getTickMarkLength(options) {
  function getScaleLabelHeight (line 11290) | function getScaleLabelHeight(options) {
  function parseFontOptions (line 11303) | function parseFontOptions(options, nestedOpts) {
  function parseTickFontOptions (line 11314) | function parseTickFontOptions(options) {
  function nonSkipped (line 11321) | function nonSkipped(ticksToFilter) {
  function getEvenSpacing (line 11333) | function getEvenSpacing(arr) {
  function calculateSpacing (line 11349) | function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {
  function getMajorIndices (line 11370) | function getMajorIndices(ticks) {
  function skipMajors (line 11381) | function skipMajors(ticks, majorIndices, spacing) {
  function skip (line 11399) | function skip(ticks, spacing, majorStart, majorEnd) {
  function generateTicks (line 12686) | function generateTicks(generationOptions, dataRange) {
  function getOrCreateStack (line 12937) | function getOrCreateStack(stacks, stacked, meta) {
  function stackData (line 12955) | function stackData(scale, stacks, meta, data) {
  function updateMinMax (line 12983) | function updateMinMax(scale, meta, data) {
  function generateTicks$1 (line 13099) | function generateTicks$1(generationOptions, dataRange) {
  function nonNegativeOrDefault (line 13149) | function nonNegativeOrDefault(value, defaultValue) {
  function IDMatches (line 13160) | function IDMatches(meta) {
  function getTickBackdropHeight (line 13447) | function getTickBackdropHeight(opts) {
  function measureLabelSize (line 13456) | function measureLabelSize(ctx, lineHeight, label) {
  function determineLimits (line 13470) | function determineLimits(angle, pos, size, min, max) {
  function fitWithPointLabels (line 13492) | function fitWithPointLabels(scale) {
  function getTextAlignForAngle (line 13572) | function getTextAlignForAngle(angle) {
  function fillText (line 13582) | function fillText(ctx, text, position, lineHeight) {
  function adjustPointPositionForLabelHeight (line 13596) | function adjustPointPositionForLabelHeight(angle, textSize, position) {
  function drawPointLabels (line 13604) | function drawPointLabels(scale) {
  function drawRadiusLine (line 13635) | function drawRadiusLine(scale, gridLineOpts, radius, index) {
  function numberOrZero (line 13674) | function numberOrZero(param) {
  function sorter (line 14003) | function sorter(a, b) {
  function arrayUnique (line 14007) | function arrayUnique(items) {
  function getMin (line 14023) | function getMin(options) {
  function getMax (line 14027) | function getMax(options) {
  function buildLookupTable (line 14046) | function buildLookupTable(timestamps, min, max, distribution) {
  function lookup (line 14082) | function lookup(table, key, value) {
  function interpolate$1 (line 14114) | function interpolate$1(table, skey, sval, tkey) {
  function toTimestamp (line 14128) | function toTimestamp(scale, input) {
  function parse (line 14164) | function parse(scale, input) {
  function determineUnitForAutoTicks (line 14185) | function determineUnitForAutoTicks(minUnit, min, max, capacity) {
  function determineUnitForFormatting (line 14204) | function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {
  function determineMajorUnit (line 14217) | function determineMajorUnit(unit) {
  function generate (line 14231) | function generate(scale, min, max, capacity) {
  function computeOffsets (line 14272) | function computeOffsets(table, ticks, min, max, options) {
  function setMajorTicks (line 14295) | function setMajorTicks(scale, ticks, map, majorUnit) {
  function ticksFromTimestamps (line 14310) | function ticksFromTimestamps(scale, values, majorUnit) {
  function hooks (line 14719) | function hooks () {
  function setHookCallback (line 14725) | function setHookCallback (callback) {
  function isArray (line 14729) | function isArray(input) {
  function isObject (line 14733) | function isObject(input) {
  function isObjectEmpty (line 14739) | function isObjectEmpty(obj) {
  function isUndefined (line 14753) | function isUndefined(input) {
  function isNumber (line 14757) | function isNumber(input) {
  function isDate (line 14761) | function isDate(input) {
  function map (line 14765) | function map(arr, fn) {
  function hasOwnProp (line 14773) | function hasOwnProp(a, b) {
  function extend (line 14777) | function extend(a, b) {
  function createUTC (line 14795) | function createUTC (input, format, locale, strict) {
  function defaultParsingFlags (line 14799) | function defaultParsingFlags() {
  function getParsingFlags (line 14819) | function getParsingFlags(m) {
  function isValid (line 14844) | function isValid(m) {
  function createInvalid (line 14878) | function createInvalid (flags) {
  function copyConfig (line 14894) | function copyConfig(to, from) {
  function Moment (line 14944) | function Moment(config) {
  function isMoment (line 14959) | function isMoment (obj) {
  function absFloor (line 14963) | function absFloor (number) {
  function toInt (line 14972) | function toInt(argumentForCoercion) {
  function compareArrays (line 14984) | function compareArrays(array1, array2, dontConvert) {
  function warn (line 14998) | function warn(msg) {
  function deprecate (line 15005) | function deprecate(msg, fn) {
  function deprecateSimple (line 15037) | function deprecateSimple(name, msg) {
  function isFunction (line 15050) | function isFunction(input) {
  function set (line 15054) | function set (config) {
  function mergeConfigs (line 15073) | function mergeConfigs(parentConfig, childConfig) {
  function Locale (line 15099) | function Locale(config) {
  function calendar (line 15130) | function calendar (key, mom, now) {
  function longDateFormat (line 15144) | function longDateFormat (key) {
  function invalidDate (line 15161) | function invalidDate () {
  function ordinal (line 15168) | function ordinal (number) {
  function relativeTime (line 15189) | function relativeTime (number, withoutSuffix, string, isFuture) {
  function pastFuture (line 15196) | function pastFuture (diff, output) {
  function addUnitAlias (line 15203) | function addUnitAlias (unit, shorthand) {
  function normalizeUnits (line 15208) | function normalizeUnits(units) {
  function normalizeObjectUnits (line 15212) | function normalizeObjectUnits(inputObject) {
  function addUnitPriority (line 15231) | function addUnitPriority(unit, priority) {
  function getPrioritizedUnits (line 15235) | function getPrioritizedUnits(unitsObj) {
  function zeroFill (line 15246) | function zeroFill(number, targetLength, forceSign) {
  function addFormatToken (line 15266) | function addFormatToken (token, padded, ordinal, callback) {
  function removeFormattingTokens (line 15288) | function removeFormattingTokens(input) {
  function makeFormatFunction (line 15295) | function makeFormatFunction(format) {
  function formatMoment (line 15316) | function formatMoment(m, format) {
  function expandFormat (line 15327) | function expandFormat(format, locale) {
  function addRegexToken (line 15370) | function addRegexToken (token, regex, strictRegex) {
  function getParseRegexForToken (line 15376) | function getParseRegexForToken (token, config) {
  function unescapeFormat (line 15385) | function unescapeFormat(s) {
  function regexEscape (line 15391) | function regexEscape(s) {
  function addParseToken (line 15397) | function addParseToken (token, callback) {
  function addWeekParseToken (line 15412) | function addWeekParseToken (token, callback) {
  function addTimeToArrayFromToken (line 15419) | function addTimeToArrayFromToken(token, input, config) {
  function daysInYear (line 15479) | function daysInYear(year) {
  function isLeapYear (line 15483) | function isLeapYear(year) {
  function getIsLeapYear (line 15497) | function getIsLeapYear () {
  function makeGetSet (line 15501) | function makeGetSet (unit, keepTime) {
  function get (line 15513) | function get (mom, unit) {
  function set$1 (line 15518) | function set$1 (mom, unit, value) {
  function stringGet (line 15531) | function stringGet (units) {
  function stringSet (line 15540) | function stringSet (units, value) {
  function mod (line 15556) | function mod(n, x) {
  function daysInMonth (line 15577) | function daysInMonth(year, month) {
  function localeMonths (line 15637) | function localeMonths (m, format) {
  function localeMonthsShort (line 15647) | function localeMonthsShort (m, format) {
  function handleStrictParse (line 15656) | function handleStrictParse(monthName, format, strict) {
  function localeMonthsParse (line 15697) | function localeMonthsParse (monthName, format, strict) {
  function setMonth (line 15737) | function setMonth (mom, value) {
  function getSetMonth (line 15762) | function getSetMonth (value) {
  function getDaysInMonth (line 15772) | function getDaysInMonth () {
  function monthsShortRegex (line 15777) | function monthsShortRegex (isStrict) {
  function monthsRegex (line 15797) | function monthsRegex (isStrict) {
  function computeMonthsParse (line 15816) | function computeMonthsParse () {
  function createDate (line 15850) | function createDate (y, m, d, h, M, s, ms) {
  function createUTCDate (line 15868) | function createUTCDate (y) {
  function firstWeekOffset (line 15887) | function firstWeekOffset(year, dow, doy) {
  function dayOfYearFromWeeks (line 15897) | function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
  function weekOfYear (line 15920) | function weekOfYear(mom, dow, doy) {
  function weeksInYear (line 15942) | function weeksInYear(year, dow, doy) {
  function localeWeek (line 15978) | function localeWeek (mom) {
  function localeFirstDayOfWeek (line 15987) | function localeFirstDayOfWeek () {
  function localeFirstDayOfYear (line 15991) | function localeFirstDayOfYear () {
  function getSetWeek (line 15997) | function getSetWeek (input) {
  function getSetISOWeek (line 16002) | function getSetISOWeek (input) {
  function parseWeekday (line 16068) | function parseWeekday(input, locale) {
  function parseIsoWeekday (line 16085) | function parseIsoWeekday(input, locale) {
  function shiftWeekdays (line 16093) | function shiftWeekdays (ws, n) {
  function localeWeekdays (line 16098) | function localeWeekdays (m, format) {
  function localeWeekdaysShort (line 16106) | function localeWeekdaysShort (m) {
  function localeWeekdaysMin (line 16112) | function localeWeekdaysMin (m) {
  function handleStrictParse$1 (line 16117) | function handleStrictParse$1(weekdayName, format, strict) {
  function localeWeekdaysParse (line 16181) | function localeWeekdaysParse (weekdayName, format, strict) {
  function getSetDayOfWeek (line 16223) | function getSetDayOfWeek (input) {
  function getSetLocaleDayOfWeek (line 16236) | function getSetLocaleDayOfWeek (input) {
  function getSetISODayOfWeek (line 16244) | function getSetISODayOfWeek (input) {
  function weekdaysRegex (line 16262) | function weekdaysRegex (isStrict) {
  function weekdaysShortRegex (line 16282) | function weekdaysShortRegex (isStrict) {
  function weekdaysMinRegex (line 16302) | function weekdaysMinRegex (isStrict) {
  function computeWeekdaysParse (line 16322) | function computeWeekdaysParse () {
  function hFormat (line 16365) | function hFormat() {
  function kFormat (line 16369) | function kFormat() {
  function meridiem (line 16395) | function meridiem (token, lowercase) {
  function matchMeridiem (line 16413) | function matchMeridiem (isStrict, locale) {
  function localeIsPM (line 16473) | function localeIsPM (input) {
  function localeMeridiem (line 16480) | function localeMeridiem (hours, minutes, isLower) {
  function normalizeLocale (line 16522) | function normalizeLocale(key) {
  function chooseLocale (line 16529) | function chooseLocale(names) {
  function loadLocale (line 16553) | function loadLocale(name) {
  function getSetGlobalLocale (line 16571) | function getSetGlobalLocale (key, values) {
  function defineLocale (line 16596) | function defineLocale (name, config) {
  function updateLocale (line 16648) | function updateLocale(name, config) {
  function getLocale (line 16677) | function getLocale (key) {
  function listLocales (line 16700) | function listLocales() {
  function checkOverflow (line 16704) | function checkOverflow (m) {
  function defaults (line 16735) | function defaults(a, b, c) {
  function currentDateArray (line 16745) | function currentDateArray(config) {
  function configFromArray (line 16758) | function configFromArray (config) {
  function dayOfYearFromWeekInfo (line 16827) | function dayOfYearFromWeekInfo(config) {
  function configFromISO (line 16922) | function configFromISO(config) {
  function extractFromRFC2822Strings (line 16977) | function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, m...
  function untruncateYear (line 16993) | function untruncateYear(yearStr) {
  function preprocessRFC2822 (line 17003) | function preprocessRFC2822(s) {
  function checkWeekday (line 17008) | function checkWeekday(weekdayStr, parsedInput, config) {
  function calculateOffset (line 17035) | function calculateOffset(obsOffset, militaryOffset, numOffset) {
  function configFromRFC2822 (line 17049) | function configFromRFC2822(config) {
  function configFromString (line 17070) | function configFromString(config) {
  function configFromStringAndFormat (line 17113) | function configFromStringAndFormat(config) {
  function meridiemFixWrap (line 17185) | function meridiemFixWrap (locale, hour, meridiem) {
  function configFromStringAndArray (line 17211) | function configFromStringAndArray(config) {
  function configFromObject (line 17255) | function configFromObject(config) {
  function createFromConfig (line 17268) | function createFromConfig (config) {
  function prepareConfig (line 17279) | function prepareConfig (config) {
  function configFromInput (line 17312) | function configFromInput(config) {
  function createLocalOrUTC (line 17335) | function createLocalOrUTC (input, format, locale, strict, isUTC) {
  function createLocal (line 17359) | function createLocal (input, format, locale, strict) {
  function pickBy (line 17392) | function pickBy(fn, moments) {
  function min (line 17410) | function min () {
  function max (line 17416) | function max () {
  function isDurationValid (line 17428) | function isDurationValid(m) {
  function isValid$1 (line 17450) | function isValid$1() {
  function createInvalid$1 (line 17454) | function createInvalid$1() {
  function Duration (line 17458) | function Duration (duration) {
  function isDuration (line 17495) | function isDuration (obj) {
  function absRound (line 17499) | function absRound (number) {
  function offset (line 17509) | function offset (token, separator) {
  function offsetFromString (line 17540) | function offsetFromString(matcher, string) {
  function cloneWithOffset (line 17557) | function cloneWithOffset(input, model) {
  function getDateOffset (line 17571) | function getDateOffset (m) {
  function getSetOffset (line 17595) | function getSetOffset (input, keepLocalTime, keepMinutes) {
  function getSetZone (line 17633) | function getSetZone (input, keepLocalTime) {
  function setOffsetToUTC (line 17647) | function setOffsetToUTC (keepLocalTime) {
  function setOffsetToLocal (line 17651) | function setOffsetToLocal (keepLocalTime) {
  function setOffsetToParsedOffset (line 17663) | function setOffsetToParsedOffset () {
  function hasAlignedHourOffset (line 17678) | function hasAlignedHourOffset (input) {
  function isDaylightSavingTime (line 17687) | function isDaylightSavingTime () {
  function isDaylightSavingTimeShifted (line 17694) | function isDaylightSavingTimeShifted () {
  function isLocal (line 17715) | function isLocal () {
  function isUtcOffset (line 17719) | function isUtcOffset () {
  function isUtc (line 17723) | function isUtc () {
  function createDuration (line 17735) | function createDuration (input, key) {
  function parseIso (line 17799) | function parseIso (inp, sign) {
  function positiveMomentsDifference (line 17808) | function positiveMomentsDifference(base, other) {
  function momentsDifference (line 17822) | function momentsDifference(base, other) {
  function createAdder (line 17841) | function createAdder(direction, name) {
  function addSubtract (line 17858) | function addSubtract (mom, duration, isAdding, updateOffset) {
  function getCalendarFormat (line 17887) | function getCalendarFormat(myMoment, now) {
  function calendar$1 (line 17897) | function calendar$1 (time, formats) {
  function clone (line 17909) | function clone () {
  function isAfter (line 17913) | function isAfter (input, units) {
  function isBefore (line 17926) | function isBefore (input, units) {
  function isBetween (line 17939) | function isBetween (from, to, units, inclusivity) {
  function isSame (line 17950) | function isSame (input, units) {
  function isSameOrAfter (line 17965) | function isSameOrAfter (input, units) {
  function isSameOrBefore (line 17969) | function isSameOrBefore (input, units) {
  function diff (line 17973) | function diff (input, units, asFloat) {
  function monthDiff (line 18007) | function monthDiff (a, b) {
  function toString (line 18031) | function toString () {
  function toISOString (line 18035) | function toISOString(keepOffset) {
  function inspect (line 18061) | function inspect () {
  function format (line 18079) | function format (inputString) {
  function from (line 18087) | function from (time, withoutSuffix) {
  function fromNow (line 18097) | function fromNow (withoutSuffix) {
  function to (line 18101) | function to (time, withoutSuffix) {
  function toNow (line 18111) | function toNow (withoutSuffix) {
  function locale (line 18118) | function locale (key) {
  function localeData (line 18143) | function localeData () {
  function mod$1 (line 18153) | function mod$1(dividend, divisor) {
  function localStartOfDate (line 18157) | function localStartOfDate(y, m, d) {
  function utcStartOfDate (line 18167) | function utcStartOfDate(y, m, d) {
  function startOf (line 18177) | function startOf (units) {
  function endOf (line 18225) | function endOf (units) {
  function valueOf (line 18273) | function valueOf () {
  function unix (line 18277) | function unix () {
  function toDate (line 18281) | function toDate () {
  function toArray (line 18285) | function toArray () {
  function toObject (line 18290) | function toObject () {
  function toJSON (line 18303) | function toJSON () {
  function isValid$2 (line 18308) | function isValid$2 () {
  function parsingFlags (line 18312) | function parsingFlags () {
  function invalidAt (line 18316) | function invalidAt () {
  function creationData (line 18320) | function creationData() {
  function addWeekYearFormatToken (line 18340) | function addWeekYearFormatToken (token, getter) {
  function getSetWeekYear (line 18381) | function getSetWeekYear (input) {
  function getSetISOWeekYear (line 18390) | function getSetISOWeekYear (input) {
  function getISOWeeksInYear (line 18395) | function getISOWeeksInYear () {
  function getWeeksInYear (line 18399) | function getWeeksInYear () {
  function getSetWeekYearHelper (line 18404) | function getSetWeekYearHelper(input, week, weekday, dow, doy) {
  function setWeekAll (line 18417) | function setWeekAll(weekYear, week, weekday, dow, doy) {
  function getSetQuarter (line 18448) | function getSetQuarter (input) {
  function getSetDayOfYear (line 18506) | function getSetDayOfYear (input) {
  function parseMs (line 18605) | function parseMs(input, array) {
  function getZoneAbbr (line 18623) | function getZoneAbbr () {
  function getZoneName (line 18627) | function getZoneName () {
  function createUnix (line 18709) | function createUnix (input) {
  function createInZone (line 18713) | function createInZone () {
  function preParsePostFormat (line 18717) | function preParsePostFormat (string) {
  function get$1 (line 18754) | function get$1 (format, index, field, setter) {
  function listMonthsImpl (line 18760) | function listMonthsImpl (format, index, field) {
  function listWeekdaysImpl (line 18788) | function listWeekdaysImpl (localeSorted, format, index, field) {
  function listMonths (line 18824) | function listMonths (format, index) {
  function listMonthsShort (line 18828) | function listMonthsShort (format, index) {
  function listWeekdays (line 18832) | function listWeekdays (localeSorted, format, index) {
  function listWeekdaysShort (line 18836) | function listWeekdaysShort (localeSorted, format, index) {
  function listWeekdaysMin (line 18840) | function listWeekdaysMin (localeSorted, format, index) {
  function abs (line 18863) | function abs () {
  function addSubtract$1 (line 18880) | function addSubtract$1 (duration, input, value, direction) {
  function add$1 (line 18891) | function add$1 (input, value) {
  function subtract$1 (line 18896) | function subtract$1 (input, value) {
  function absCeil (line 18900) | function absCeil (number) {
  function bubble (line 18908) | function bubble () {
  function daysToMonths (line 18955) | function daysToMonths (days) {
  function monthsToDays (line 18961) | function monthsToDays (months) {
  function as (line 18966) | function as (units) {
  function valueOf$1 (line 19001) | function valueOf$1 () {
  function makeAs (line 19013) | function makeAs (alias) {
  function clone$1 (line 19029) | function clone$1 () {
  function get$2 (line 19033) | function get$2 (units) {
  function makeGetter (line 19038) | function makeGetter(name) {
  function weeks (line 19052) | function weeks () {
  function substituteTimeAgo (line 19067) | function substituteTimeAgo(string, number, withoutSuffix, isFuture, loca...
  function relativeTime$1 (line 19071) | function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
  function getSetRelativeTimeRounding (line 19099) | function getSetRelativeTimeRounding (roundingFunction) {
  function getSetRelativeTimeThreshold (line 19111) | function getSetRelativeTimeThreshold (threshold, limit) {
  function humanize (line 19125) | function humanize (withSuffix) {
  function sign (line 19142) | function sign(x) {
  function toISOString$1 (line 19146) | function toISOString$1() {
  function decodeFill (line 19422) | function decodeFill(el, index, count) {
  function computeLinearBoundary (line 19471) | function computeLinearBoundary(source) {
  function computeCircularBoundary (line 19513) | function computeCircularBoundary(source) {
  function computeBoundary (line 19542) | function computeBoundary(source) {
  function resolveTarget (line 19551) | function resolveTarget(sources, index, propagate) {
  function createMapper (line 19582) | function createMapper(source) {
  function isDrawable (line 19597) | function isDrawable(point) {
  function drawArea (line 19601) | function drawArea(ctx, curve0, curve1, len0, len1) {
  function doFill (line 19633) | function doFill(ctx, points, mapper, view, color, loop) {
  function getBoxWidth (line 19847) | function getBoxWidth(labelOpts, fontSize) {
  function createNewLegendAndAttach (line 20319) | function createNewLegendAndAttach(chart, legendOpts) {
  function createNewTitleBlockAndAttach (line 20563) | function createNewTitleBlockAndAttach(chart, titleOpts) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/chart.js/Chart.js
  function createCommonjsModule (line 15) | function createCommonjsModule(fn, module) {
  function getCjsExportFromNamespace (line 19) | function getCjsExportFromNamespace (n) {
  function comparativeDistance (line 348) | function comparativeDistance(x, y) {
  function buildGraph (line 1071) | function buildGraph() {
  function deriveBFS (line 1089) | function deriveBFS(fromModel) {
  function link (line 1114) | function link(from, to) {
  function wrapConversion (line 1120) | function wrapConversion(toModel, graph) {
  function wrapRaw (line 1159) | function wrapRaw(fn) {
  function wrapRounded (line 1180) | function wrapRounded(fn) {
  function getRgba (line 1404) | function getRgba(string) {
  function getHsla (line 1473) | function getHsla(string) {
  function getHwb (line 1489) | function getHwb(string) {
  function getRgb (line 1505) | function getRgb(string) {
  function getHsl (line 1510) | function getHsl(string) {
  function getAlpha (line 1515) | function getAlpha(string) {
  function hexString (line 1529) | function hexString(rgba, a) {
  function rgbString (line 1541) | function rgbString(rgba, alpha) {
  function rgbaString (line 1548) | function rgbaString(rgba, alpha) {
  function percentString (line 1556) | function percentString(rgba, alpha) {
  function percentaString (line 1567) | function percentaString(rgba, alpha) {
  function hslString (line 1574) | function hslString(hsla, alpha) {
  function hslaString (line 1581) | function hslaString(hsla, alpha) {
  function hwbString (line 1591) | function hwbString(hwb, alpha) {
  function keyword (line 1599) | function keyword(rgb) {
  function scale (line 1604) | function scale(num, min, max) {
  function hexDouble (line 1608) | function hexDouble(num) {
  function isValidKey (line 2106) | function isValidKey(key) {
  function toFontString (line 3014) | function toFontString(font) {
  function interpolate (line 3287) | function interpolate(start, view, model, ease) {
  function listenArrayEvents (line 3567) | function listenArrayEvents(array, listener) {
  function unlistenArrayEvents (line 3608) | function unlistenArrayEvents(array, listener) {
  function clipArc (line 4143) | function clipArc(ctx, arc) {
  function drawFullCircleBorders (line 4165) | function drawFullCircleBorders(ctx, vm, arc, inner) {
  function drawBorder (line 4192) | function drawBorder(ctx, vm, arc) {
  function xRange (line 4459) | function xRange(mouseX) {
  function yRange (line 4464) | function yRange(mouseY) {
  function isVertical (line 4540) | function isVertical(vm) {
  function getBarBounds (line 4550) | function getBarBounds(vm) {
  function swap (line 4575) | function swap(orig, v1, v2) {
  function parseBorderSkipped (line 4579) | function parseBorderSkipped(vm) {
  function parseBorderWidth (line 4599) | function parseBorderWidth(vm, maxW, maxH) {
  function boundingRects (line 4621) | function boundingRects(vm) {
  function inRange (line 4643) | function inRange(vm, x, y) {
  function computeMinSampleSize (line 4781) | function computeMinSampleSize(scale, pixels) {
  function computeFitCategoryTraits (line 4804) | function computeFitCategoryTraits(index, ruler, options) {
  function computeFlexCategoryTraits (line 4837) | function computeFlexCategoryTraits(index, ruler, options) {
  function scaleClip (line 5803) | function scaleClip(scale, halfBorderWidth) {
  function defaultClip (line 5814) | function defaultClip(xScale, yScale, borderWidth) {
  function toClip (line 5827) | function toClip(value) {
  function capControlPoint (line 6051) | function capControlPoint(pt, min, max) {
  function capControlPoint (line 6608) | function capControlPoint(pt, min, max) {
  function getRelativePosition (line 6711) | function getRelativePosition(e, chart) {
  function parseVisibleItems (line 6727) | function parseVisibleItems(chart, handler) {
  function getIntersectItems (line 6748) | function getIntersectItems(chart, position) {
  function getNearestItems (line 6768) | function getNearestItems(chart, position, intersect, distanceMetric) {
  function getDistanceMetricForAxis (line 6796) | function getDistanceMetricForAxis(axis) {
  function indexMode (line 6807) | function indexMode(chart, e, options) {
  function filterByPosition (line 7007) | function filterByPosition(array, position) {
  function sortByWeight (line 7013) | function sortByWeight(array, reverse) {
  function wrapBoxes (line 7023) | function wrapBoxes(boxes) {
  function setLayoutDims (line 7040) | function setLayoutDims(layouts, params) {
  function buildLayoutBoxes (line 7053) | function buildLayoutBoxes(boxes) {
  function getCombinedMax (line 7069) | function getCombinedMax(maxPadding, chartArea, a, b) {
  function updateDims (line 7073) | function updateDims(chartArea, params, layout) {
  function handleMaxPadding (line 7106) | function handleMaxPadding(chartArea) {
  function getMargins (line 7120) | function getMargins(horizontal, chartArea) {
  function fitBoxes (line 7136) | function fitBoxes(boxes, chartArea, params) {
  function placeBoxes (line 7165) | function placeBoxes(boxes, chartArea, params) {
  function readUsedSize (line 7448) | function readUsedSize(element, property) {
  function initCanvas (line 7459) | function initCanvas(canvas, config) {
  function addListener (line 7534) | function addListener(node, type, listener) {
  function removeListener (line 7538) | function removeListener(node, type, listener) {
  function createEvent (line 7542) | function createEvent(type, chart, x, y, nativeEvent) {
  function fromNativeEvent (line 7552) | function fromNativeEvent(event, chart) {
  function throttled (line 7558) | function throttled(fn, thisArg) {
  function createDiv (line 7576) | function createDiv(cls) {
  function createResizer (line 7583) | function createResizer(handler) {
  function watchForRender (line 7616) | function watchForRender(node, handler) {
  function unwatchForRender (line 7638) | function unwatchForRender(node) {
  function addResizeListener (line 7653) | function addResizeListener(node, listener, chart) {
  function removeResizeListener (line 7690) | function removeResizeListener(node) {
  function injectCSS (line 7707) | function injectCSS(rootNode, css) {
  function pushOrConcat (line 8306) | function pushOrConcat(base, toPush) {
  function splitNewlines (line 8325) | function splitNewlines(str) {
  function createTooltipItem (line 8338) | function createTooltipItem(element) {
  function getBaseModel (line 8363) | function getBaseModel(tooltipOpts) {
  function getTooltipSize (line 8418) | function getTooltipSize(tooltip, model) {
  function determineAlignment (line 8486) | function determineAlignment(tooltip, size) {
  function getBackgroundPoint (line 8559) | function getBackgroundPoint(vm, size, alignment, chart) {
  function getAlignedX (line 8610) | function getAlignedX(vm, align) {
  function getBeforeAfterBodyLines (line 8621) | function getBeforeAfterBodyLines(callback) {
  function mergeScaleConfig (line 9188) | function mergeScaleConfig(/* config objects ... */) {
  function mergeConfig (line 9228) | function mergeConfig(/* config objects ... */) {
  function initConfig (line 9247) | function initConfig(config) {
  function updateConfig (line 9264) | function updateConfig(chart) {
  function nextAvailableScaleId (line 9285) | function nextAvailableScaleId(axesOpts, prefix, index) {
  function positionIsHorizontal (line 9298) | function positionIsHorizontal(position) {
  function compare2Level (line 9302) | function compare2Level(l1, l2) {
  function parseMaxStyle (line 10688) | function parseMaxStyle(styleValue, node, parentProperty) {
  function isConstrainedValue (line 10708) | function isConstrainedValue(value) {
  function getConstraintDimension (line 10719) | function getConstraintDimension(domNode, maxStyle, percentageProperty) {
  function abstract (line 10913) | function abstract() {
  function DateAdapter (line 10937) | function DateAdapter(options) {
  function sample (line 11167) | function sample(arr, numItems) {
  function getPixelForGridLine (line 11179) | function getPixelForGridLine(scale, index, offsetGridLines) {
  function garbageCollect (line 11206) | function garbageCollect(caches, length) {
  function computeLabelSizes (line 11224) | function computeLabelSizes(ctx, tickFonts, ticks, caches) {
  function getTickMarkLength (line 11282) | function getTickMarkLength(options) {
  function getScaleLabelHeight (line 11286) | function getScaleLabelHeight(options) {
  function parseFontOptions (line 11299) | function parseFontOptions(options, nestedOpts) {
  function parseTickFontOptions (line 11310) | function parseTickFontOptions(options) {
  function nonSkipped (line 11317) | function nonSkipped(ticksToFilter) {
  function getEvenSpacing (line 11329) | function getEvenSpacing(arr) {
  function calculateSpacing (line 11345) | function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {
  function getMajorIndices (line 11366) | function getMajorIndices(ticks) {
  function skipMajors (line 11377) | function skipMajors(ticks, majorIndices, spacing) {
  function skip (line 11395) | function skip(ticks, spacing, majorStart, majorEnd) {
  function generateTicks (line 12682) | function generateTicks(generationOptions, dataRange) {
  function getOrCreateStack (line 12933) | function getOrCreateStack(stacks, stacked, meta) {
  function stackData (line 12951) | function stackData(scale, stacks, meta, data) {
  function updateMinMax (line 12979) | function updateMinMax(scale, meta, data) {
  function generateTicks$1 (line 13095) | function generateTicks$1(generationOptions, dataRange) {
  function nonNegativeOrDefault (line 13145) | function nonNegativeOrDefault(value, defaultValue) {
  function IDMatches (line 13156) | function IDMatches(meta) {
  function getTickBackdropHeight (line 13443) | function getTickBackdropHeight(opts) {
  function measureLabelSize (line 13452) | function measureLabelSize(ctx, lineHeight, label) {
  function determineLimits (line 13466) | function determineLimits(angle, pos, size, min, max) {
  function fitWithPointLabels (line 13488) | function fitWithPointLabels(scale) {
  function getTextAlignForAngle (line 13568) | function getTextAlignForAngle(angle) {
  function fillText (line 13578) | function fillText(ctx, text, position, lineHeight) {
  function adjustPointPositionForLabelHeight (line 13592) | function adjustPointPositionForLabelHeight(angle, textSize, position) {
  function drawPointLabels (line 13600) | function drawPointLabels(scale) {
  function drawRadiusLine (line 13631) | function drawRadiusLine(scale, gridLineOpts, radius, index) {
  function numberOrZero (line 13670) | function numberOrZero(param) {
  function sorter (line 13999) | function sorter(a, b) {
  function arrayUnique (line 14003) | function arrayUnique(items) {
  function getMin (line 14019) | function getMin(options) {
  function getMax (line 14023) | function getMax(options) {
  function buildLookupTable (line 14042) | function buildLookupTable(timestamps, min, max, distribution) {
  function lookup (line 14078) | function lookup(table, key, value) {
  function interpolate$1 (line 14110) | function interpolate$1(table, skey, sval, tkey) {
  function toTimestamp (line 14124) | function toTimestamp(scale, input) {
  function parse (line 14160) | function parse(scale, input) {
  function determineUnitForAutoTicks (line 14181) | function determineUnitForAutoTicks(minUnit, min, max, capacity) {
  function determineUnitForFormatting (line 14200) | function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {
  function determineMajorUnit (line 14213) | function determineMajorUnit(unit) {
  function generate (line 14227) | function generate(scale, min, max, capacity) {
  function computeOffsets (line 14268) | function computeOffsets(table, ticks, min, max, options) {
  function setMajorTicks (line 14291) | function setMajorTicks(scale, ticks, map, majorUnit) {
  function ticksFromTimestamps (line 14306) | function ticksFromTimestamps(scale, values, majorUnit) {
  function decodeFill (line 14818) | function decodeFill(el, index, count) {
  function computeLinearBoundary (line 14867) | function computeLinearBoundary(source) {
  function computeCircularBoundary (line 14909) | function computeCircularBoundary(source) {
  function computeBoundary (line 14938) | function computeBoundary(source) {
  function resolveTarget (line 14947) | function resolveTarget(sources, index, propagate) {
  function createMapper (line 14978) | function createMapper(source) {
  function isDrawable (line 14993) | function isDrawable(point) {
  function drawArea (line 14997) | function drawArea(ctx, curve0, curve1, len0, len1) {
  function doFill (line 15029) | function doFill(ctx, points, mapper, view, color, loop) {
  function getBoxWidth (line 15243) | function getBoxWidth(labelOpts, fontSize) {
  function createNewLegendAndAttach (line 15715) | function createNewLegendAndAttach(chart, legendOpts) {
  function createNewTitleBlockAndAttach (line 15959) | function createNewTitleBlockAndAttach(chart, titleOpts) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/comment/comment.js
  function firstNonWS (line 18) | function firstNonWS(str) {
  function probablyInsideString (line 48) | function probablyInsideString(cm, pos, line) {
  function getMode (line 52) | function getMode(cm, pos) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/comment/continuecomment.js
  function continueComment (line 14) | function continueComment(cm) {
  function nonspaceAfter (line 87) | function nonspaceAfter(ch, str) {
  function continueLineCommentEnabled (line 93) | function continueLineCommentEnabled(cm) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/dialog/dialog.js
  function dialogDiv (line 14) | function dialogDiv(cm, template, bottom) {
  function closeNotification (line 32) | function closeNotification(cm, newVal) {
  function close (line 45) | function close(newVal) {
  function close (line 106) | function close() {
  function close (line 145) | function close() {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/display/autorefresh.js
  function startListening (line 23) | function startListening(cm, state) {
  function stopListening (line 42) | function stopListening(_cm, state) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/display/fullscreen.js
  function setFullscreen (line 21) | function setFullscreen(cm) {
  function setNormal (line 32) | function setNormal(cm) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/display/panel.js
  function Panel (line 51) | function Panel(cm, node, options, height) {
  function initPanels (line 78) | function initPanels(cm) {
  function removePanels (line 114) | function removePanels(cm) {
  function isAtTop (line 128) | function isAtTop(cm, dom) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/display/placeholder.js
  function clearPlaceholder (line 33) | function clearPlaceholder(cm) {
  function setPlaceholder (line 39) | function setPlaceholder(cm) {
  function onComposition (line 51) | function onComposition(cm) {
  function onBlur (line 64) | function onBlur(cm) {
  function onChange (line 67) | function onChange(cm) {
  function isEmpty (line 75) | function isEmpty(cm) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/display/rulers.js
  function drawRulers (line 28) | function drawRulers(cm) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/edit/closebrackets.js
  function getOption (line 33) | function getOption(conf, name) {
  function ensureBound (line 40) | function ensureBound(chars) {
  function handler (line 48) | function handler(ch) {
  function getConfig (line 52) | function getConfig(cm) {
  function handleBackspace (line 59) | function handleBackspace(cm) {
  function handleEnter (line 76) | function handleEnter(cm) {
  function moveSel (line 100) | function moveSel(cm, dir) {
  function contractSelection (line 111) | function contractSelection(sel) {
  function handleChar (line 117) | function handleChar(cm, ch) {
  function charsAround (line 190) | function charsAround(cm, pos) {
  function stringStartsAfter (line 196) | function stringStartsAfter(cm, pos) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/edit/closetag.js
  function autoCloseGT (line 55) | function autoCloseGT(cm) {
  function autoCloseCurrent (line 108) | function autoCloseCurrent(cm, typingSlash) {
  function autoCloseSlash (line 148) | function autoCloseSlash(cm) {
  function indexOf (line 155) | function indexOf(collection, elt) {
  function closingTagExists (line 164) | function closingTagExists(cm, context, tagName, pos, newTag) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/edit/continuelist.js
  function incrementRemainingMarkdownListNumbers (line 67) | function incrementRemainingMarkdownListNumbers(cm, pos) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/edit/matchbrackets.js
  function bracketRegex (line 19) | function bracketRegex(config) {
  function findMatchingBracket (line 23) | function findMatchingBracket(cm, where, config) {
  function scanForBracket (line 54) | function scanForBracket(cm, where, dir, style, config) {
  function matchBrackets (line 82) | function matchBrackets(cm, autoclear, config) {
  function doMatchBrackets (line 112) | function doMatchBrackets(cm) {
  function clearHighlighted (line 122) | function clearHighlighted(cm) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/edit/matchtags.js
  function clear (line 28) | function clear(cm) {
  function doMatchTags (line 34) | function doMatchTags(cm) {
  function maybeUpdateMatch (line 55) | function maybeUpdateMatch(cm) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/fold/brace-fold.js
  function findOpening (line 18) | function findOpening(openCh) {
  function hasImport (line 66) | function hasImport(line) {
  function hasInclude (line 90) | function hasInclude(line) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/fold/foldcode.js
  function doFold (line 14) | function doFold(cm, pos, options, force) {
  function makeWidget (line 61) | function makeWidget(cm, options, range) {
  function getOption (line 145) | function getOption(cm, options, name) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/fold/foldgutter.js
  function State (line 39) | function State(options) {
  function parseOptions (line 44) | function parseOptions(opts) {
  function isFolded (line 52) | function isFolded(cm, line) {
  function marker (line 63) | function marker(spec) {
  function updateFoldInfo (line 73) | function updateFoldInfo(cm, from, to) {
  function classTest (line 102) | function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)...
  function updateInViewport (line 104) | function updateInViewport(cm) {
  function onGutterClick (line 113) | function onGutterClick(cm, line, gutter) {
  function onChange (line 123) | function onChange(cm) {
  function onViewportChange (line 132) | function onViewportChange(cm) {
  function onFold (line 156) | function onFold(cm, from) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/fold/indent-fold.js
  function lineIndent (line 14) | function lineIndent(cm, lineNo) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/fold/markdown-fold.js
  function isHeader (line 17) | function isHeader(lineNo) {
  function headerLevel (line 22) | function headerLevel(lineNo, line, nextLine) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/fold/xml-fold.js
  function cmp (line 15) | function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }
  function Iter (line 21) | function Iter(cm, line, ch, range) {
  function tagAt (line 28) | function tagAt(iter, ch) {
  function nextLine (line 33) | function nextLine(iter) {
  function prevLine (line 39) | function prevLine(iter) {
  function toTagEnd (line 46) | function toTagEnd(iter) {
  function toTagStart (line 57) | function toTagStart(iter) {
  function toNextTag (line 69) | function toNextTag(iter) {
  function toPrevTag (line 79) | function toPrevTag(iter) {
  function findMatchingClose (line 91) | function findMatchingClose(iter, tag) {
  function findMatchingOpen (line 112) | function findMatchingOpen(iter, tag) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/hint/css-hint.js
  function add (line 41) | function add(keywords) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/hint/html-hint.js
  function populate (line 335) | function populate(obj) {
  function htmlHint (line 345) | function htmlHint(cm, options) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/hint/javascript-hint.js
  function forEach (line 14) | function forEach(arr, f) {
  function arrayContains (line 18) | function arrayContains(arr, item) {
  function scriptHint (line 31) | function scriptHint(editor, keywords, getToken, options) {
  function javascriptHint (line 62) | function javascriptHint(editor, options) {
  function getCoffeeScriptToken (line 69) | function getCoffeeScriptToken(editor, cur) {
  function coffeescriptHint (line 87) | function coffeescriptHint(editor, options) {
  function forAllProps (line 102) | function forAllProps(obj, callback) {
  function getCompletions (line 111) | function getCompletions(token, context, keywords, options) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/hint/show-hint.js
  function Completion (line 55) | function Completion(cm, options) {
  function parseOptions (line 159) | function parseOptions(cm, pos, options) {
  function getText (line 171) | function getText(completion) {
  function buildKeyMap (line 176) | function buildKeyMap(completion, handle) {
  function getHintElement (line 219) | function getHintElement(hintsElement, el) {
  function Widget (line 226) | function Widget(completion, data) {
  function applicableHelpers (line 423) | function applicableHelpers(cm, helpers) {
  function fetchHints (line 431) | function fetchHints(hint, cm, options, callback) {
  function resolveAutoHints (line 441) | function resolveAutoHints(cm, pos) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/hint/sql-hint.js
  function isArray (line 24) | function isArray(val) { return Object.prototype.toString.call(val) == "[...
  function getKeywords (line 26) | function getKeywords(editor) {
  function getIdentifierQuote (line 32) | function getIdentifierQuote(editor) {
  function getText (line 38) | function getText(item) {
  function wrapTable (line 42) | function wrapTable(name, value) {
  function parseTables (line 48) | function parseTables(input) {
  function getTable (line 62) | function getTable(name) {
  function shallowClone (line 66) | function shallowClone(object) {
  function match (line 73) | function match(string, word) {
  function addMatches (line 79) | function addMatches(result, search, wordlist, formatter) {
  function cleanName (line 95) | function cleanName(name) {
  function insertIdentifierQuotes (line 108) | function insertIdentifierQuotes(name) {
  function nameCompletion (line 122) | function nameCompletion(cur, token, result, editor) {
  function eachWord (line 187) | function eachWord(lineText, f) {
  function findTableByAlias (line 193) | function findTableByAlias(alias, editor) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/hint/xml-hint.js
  function matches (line 16) | function matches(hint, typed, matchInMiddle) {
  function getHints (line 21) | function getHints(cm, options) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/lint/javascript-lint.js
  function validator (line 17) | function validator(text, options) {
  function parseErrors (line 34) | function parseErrors(errors, output) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/lint/lint.js
  function showTooltip (line 15) | function showTooltip(cm, e, content) {
  function rm (line 34) | function rm(elt) {
  function hideTooltip (line 37) | function hideTooltip(tt) {
  function showTooltipFor (line 44) | function showTooltipFor(cm, e, content, node) {
  function LintState (line 61) | function LintState(cm, options, hasGutter) {
  function parseOptions (line 70) | function parseOptions(_cm, options) {
  function clearMarks (line 76) | function clearMarks(cm) {
  function makeMarker (line 84) | function makeMarker(cm, labels, severity, multiple, tooltips) {
  function getMaxSeverity (line 99) | function getMaxSeverity(a, b) {
  function groupByLine (line 104) | function groupByLine(annotations) {
  function annotationTooltip (line 113) | function annotationTooltip(ann) {
  function lintAsync (line 126) | function lintAsync(cm, getAnnotations, passOptions) {
  function startLinting (line 142) | function startLinting(cm) {
  function updateLinting (line 163) | function updateLinting(cm, annotationsNotSorted) {
  function onChange (line 202) | function onChange(cm) {
  function popupTooltips (line 209) | function popupTooltips(cm, annotations, e) {
  function onMouseOver (line 219) | function onMouseOver(cm, e) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/merge/merge.js
  function DiffView (line 18) | function DiffView(mv, type) {
  function ensureDiff (line 74) | function ensureDiff(dv) {
  function registerUpdate (line 84) | function registerUpdate(dv) {
  function registerScroll (line 149) | function registerScroll(dv, otherDv) {
  function syncScroll (line 159) | function syncScroll(dv, toOrig) {
  function getOffsets (line 205) | function getOffsets(editor, around) {
  function setScrollLock (line 212) | function setScrollLock(dv, val, action) {
  function removeClass (line 220) | function removeClass(editor, line, classes) {
  function clearMarks (line 229) | function clearMarks(editor, arr, classes) {
  function updateMarks (line 241) | function updateMarks(editor, diff, state, type, classes) {
  function addClass (line 261) | function addClass(editor, lineNr, classes, main, start, end) {
  function markChanges (line 271) | function markChanges(editor, diff, type, marks, from, to, classes) {
  function makeConnections (line 315) | function makeConnections(dv) {
  function getMatchingOrigLine (line 337) | function getMatchingOrigLine(editLine, chunks) {
  function alignableFor (line 352) | function alignableFor(cm, chunks, isOrig) {
  function mergeAlignable (line 374) | function mergeAlignable(result, origAlignable, chunks, setIndex) {
  function findAlignedLines (line 409) | function findAlignedLines(dv, other) {
  function alignChunks (line 426) | function alignChunks(dv, force) {
  function alignLines (line 462) | function alignLines(cm, cmOffset, lines, aligners) {
  function padAbove (line 476) | function padAbove(cm, line, size) {
  function drawConnectorsForChunk (line 488) | function drawConnectorsForChunk(dv, chunk, sTopOrig, sTopEdit, w) {
  function copyChunk (line 525) | function copyChunk(dv, to, from, chunk) {
  function buildGap (line 600) | function buildGap(dv) {
  function asString (line 645) | function asString(obj) {
  function getDiff (line 652) | function getDiff(a, b, ignoreWhitespace) {
  function getChunks (line 669) | function getChunks(diff) {
  function endOfLineClean (line 697) | function endOfLineClean(diff, i) {
  function startOfLineClean (line 706) | function startOfLineClean(diff, i) {
  function chunkBoundariesAround (line 715) | function chunkBoundariesAround(chunks, n, nInEdit) {
  function collapseSingle (line 731) | function collapseSingle(cm, from, to) {
  function collapseStretch (line 753) | function collapseStretch(size, editors) {
  function unclearNearChunks (line 767) | function unclearNearChunks(dv, margin, off, clear) {
  function collapseIdenticalStretches (line 777) | function collapseIdenticalStretches(mv, margin) {
  function elt (line 801) | function elt(tag, content, className, style) {
  function clear (line 810) | function clear(node) {
  function attrs (line 815) | function attrs(elt) {
  function copyObj (line 820) | function copyObj(obj, target) {
  function moveOver (line 826) | function moveOver(pos, str, copy, other) {
  function TrackAlignable (line 845) | function TrackAlignable(cm) {
  function posMin (line 965) | function posMin(a, b) { return (a.line - b.line || a.ch - b.ch) < 0 ? a ...
  function posMax (line 966) | function posMax(a, b) { return (a.line - b.line || a.ch - b.ch) > 0 ? a ...
  function posEq (line 967) | function posEq(a, b) { return a.line == b.line && a.ch == b.ch; }
  function findPrevDiff (line 969) | function findPrevDiff(chunks, start, isOrig) {
  function findNextDiff (line 977) | function findNextDiff(chunks, start, isOrig) {
  function goNearbyDiff (line 985) | function goNearbyDiff(cm, dir) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/mode/loadmode.js
  function splitCallback (line 15) | function splitCallback(cont, n) {
  function ensureDeps (line 19) | function ensureDeps(mode, cont, options) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/mode/multiplex.js
  function indexOf (line 18) | function indexOf(string, pattern, from, returnEnd) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/mode/multiplex_test.js
  function MT (line 22) | function MT(name) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/mode/simple.js
  function ensureState (line 61) | function ensureState(states, name) {
  function toRegex (line 66) | function toRegex(val, caret) {
  function asToken (line 78) | function asToken(val) {
  function Rule (line 88) | function Rule(data, states) {
  function tokenFunction (line 95) | function tokenFunction(states, config) {
  function cmp (line 157) | function cmp(a, b) {
  function enterLocalMode (line 169) | function enterLocalMode(config, state, spec, token) {
  function indexOf (line 185) | function indexOf(val, arr) {
  function indentFunction (line 189) | function indentFunction(states, meta) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/runmode/colorize.js
  function textContent (line 16) | function textContent(node, out) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/runmode/runmode-standalone.js
  function copyObj (line 4) | function copyObj(obj, target, overwrite) {
  function countColumn (line 14) | function countColumn(string, end, tabSize, startIndex, startValue) {
  function nothing (line 29) | function nothing() {}
  function createObj (line 31) | function createObj(base, props) {
  function defineMode (line 134) | function defineMode(name, mode) {
  function defineMIME (line 140) | function defineMIME(mime, spec) {
  function resolveMode (line 146) | function resolveMode(spec) {
  function getMode (line 165) | function getMode(options, spec) {
  function extendMode (line 189) | function extendMode(mode, properties) {
  function copyState (line 194) | function copyState(mode, state) {
  function innerMode (line 208) | function innerMode(mode, state) {
  function startState (line 219) | function startState(mode, a1, a2) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/runmode/runmode.node.js
  function copyObj (line 3) | function copyObj(obj, target, overwrite) {
  function countColumn (line 13) | function countColumn(string, end, tabSize, startIndex, startValue) {
  function nothing (line 28) | function nothing() {}
  function createObj (line 30) | function createObj(base, props) {
  function defineMode (line 133) | function defineMode(name, mode) {
  function defineMIME (line 139) | function defineMIME(mime, spec) {
  function resolveMode (line 145) | function resolveMode(spec) {
  function getMode (line 164) | function getMode(options, spec) {
  function extendMode (line 188) | function extendMode(mode, properties) {
  function copyState (line 193) | function copyState(mode, state) {
  function innerMode (line 207) | function innerMode(mode, state) {
  function startState (line 218) | function startState(mode, a1, a2) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/scroll/annotatescrollbar.js
  function Annotation (line 21) | function Annotation(cm, options) {
  function getY (line 76) | function getY(pos, top) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/scroll/scrollpastend.js
  function onChange (line 28) | function onChange(cm, change) {
  function updateBottomMargin (line 33) | function updateBottomMargin(cm) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/scroll/simplescrollbars.js
  function Bar (line 14) | function Bar(cls, orientation, scroll) {
  function SimpleScrollbars (line 96) | function SimpleScrollbars(cls, place, scroll) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/search/jump-to-line.js
  function dialog (line 19) | function dialog(cm, text, shortText, deflt, f) {
  function getJumpDialog (line 24) | function getJumpDialog(cm) {
  function interpretLine (line 28) | function interpretLine(cm, string) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/search/match-highlighter.js
  function State (line 42) | function State(options) {
  function cursorActivity (line 71) | function cursorActivity(cm) {
  function onFocus (line 76) | function onFocus(cm) {
  function scheduleHighlight (line 84) | function scheduleHighlight(cm, state) {
  function addOverlay (line 89) | function addOverlay(cm, query, hasBoundary, style) {
  function removeOverlay (line 101) | function removeOverlay(cm) {
  function highlightMatches (line 113) | function highlightMatches(cm) {
  function isWord (line 136) | function isWord(cm, from, to) {
  function boundariesAround (line 153) | function boundariesAround(stream, re) {
  function makeOverlay (line 158) | function makeOverlay(query, hasBoundary, style) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/search/matchesonscrollbar.js
  function SearchAnnotation (line 20) | function SearchAnnotation(cm, query, caseFold, options) {
  function offsetLine (line 60) | function offsetLine(line, changeStart, sizeChange) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/search/search.js
  function searchOverlay (line 25) | function searchOverlay(query, caseInsensitive) {
  function SearchState (line 45) | function SearchState() {
  function getSearchState (line 50) | function getSearchState(cm) {
  function queryCaseInsensitive (line 54) | function queryCaseInsensitive(query) {
  function getSearchCursor (line 58) | function getSearchCursor(cm, query, pos) {
  function persistentDialog (line 63) | function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {
  function dialog (line 74) | function dialog(cm, text, shortText, deflt, f) {
  function confirmDialog (line 79) | function confirmDialog(cm, text, shortText, fs) {
  function parseString (line 84) | function parseString(string) {
  function parseQuery (line 94) | function parseQuery(query) {
  function startSearch (line 107) | function startSearch(cm, state, query) {
  function doSearch (line 119) | function doSearch(cm, rev, persistent, immediate) {
  function findNext (line 170) | function findNext(cm, rev, callback) {cm.operation(function() {
  function clearSearch (line 183) | function clearSearch(cm) {cm.operation(function() {
  function getQueryDialog (line 193) | function getQueryDialog(cm)  {
  function getReplaceQueryDialog (line 196) | function getReplaceQueryDialog(cm) {
  function getReplacementQueryDialog (line 199) | function getReplacementQueryDialog(cm) {
  function getDoReplaceConfirm (line 202) | function getDoReplaceConfirm(cm) {
  function replaceAll (line 206) | function replaceAll(cm, query, text) {
  function replace (line 217) | function replace(cm, all) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/search/searchcursor.js
  function regexpFlags (line 15) | function regexpFlags(regexp) {
  function ensureFlags (line 22) | function ensureFlags(regexp, flags) {
  function maybeMultiline (line 29) | function maybeMultiline(regexp) {
  function searchRegexpForward (line 33) | function searchRegexpForward(doc, regexp, start) {
  function searchRegexpForwardMultiline (line 45) | function searchRegexpForwardMultiline(doc, regexp, start) {
  function lastMatchIn (line 75) | function lastMatchIn(string, regexp, endMargin) {
  function searchRegexpBackward (line 90) | function searchRegexpBackward(doc, regexp, start) {
  function searchRegexpBackwardMultiline (line 102) | function searchRegexpBackwardMultiline(doc, regexp, start) {
  function adjustPos (line 136) | function adjustPos(orig, folded, pos, foldFunc) {
  function searchStringForward (line 148) | function searchStringForward(doc, query, start, caseFold) {
  function searchStringBackward (line 176) | function searchStringBackward(doc, query, start, caseFold) {
  function SearchCursor (line 203) | function SearchCursor(doc, query, pos, options) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/selection/active-line.js
  function clearActiveLines (line 32) | function clearActiveLines(cm) {
  function sameArray (line 40) | function sameArray(a, b) {
  function updateActiveLines (line 47) | function updateActiveLines(cm, ranges) {
  function selectionChange (line 69) | function selectionChange(cm, sel) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/selection/mark-selection.js
  function onCursorActivity (line 36) | function onCursorActivity(cm) {
  function onChange (line 41) | function onChange(cm) {
  function coverRange (line 50) | function coverRange(cm, from, to, addAt) {
  function clear (line 66) | function clear(cm) {
  function reset (line 72) | function reset(cm) {
  function update (line 79) | function update(cm) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/selection/selection-pointer.js
  function mousemove (line 43) | function mousemove(cm, event) {
  function mouseout (line 54) | function mouseout(cm, event) {
  function reset (line 62) | function reset(cm) {
  function scheduleUpdate (line 67) | function scheduleUpdate(cm) {
  function update (line 77) | function update(cm) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/tern/tern.js
  function getFile (line 150) | function getFile(ts, name, c) {
  function findDoc (line 160) | function findDoc(ts, doc, name) {
  function resolveDoc (line 172) | function resolveDoc(ts, id) {
  function trackChange (line 178) | function trackChange(ts, doc, change) {
  function sendDoc (line 198) | function sendDoc(ts, doc) {
  function hint (line 207) | function hint(ts, cm, c) {
  function typeToIcon (line 242) | function typeToIcon(type) {
  function showContextInfo (line 254) | function showContextInfo(ts, cm, pos, queryName, c) {
  function updateArgHints (line 277) | function updateArgHints(ts, cm) {
  function showArgHints (line 319) | function showArgHints(ts, cm, pos) {
  function parseFnType (line 344) | function parseFnType(text) {
  function jumpToDef (line 377) | function jumpToDef(ts, cm) {
  function jumpBack (line 405) | function jumpBack(ts, cm) {
  function moveTo (line 411) | function moveTo(ts, curDoc, doc, start, end) {
  function findContext (line 420) | function findContext(doc, data) {
  function atInterestingExpression (line 450) | function atInterestingExpression(cm) {
  function rename (line 458) | function rename(ts, cm) {
  function selectName (line 469) | function selectName(ts, cm) {
  function applyChanges (line 488) | function applyChanges(ts, changes) {
  function buildRequest (line 508) | function buildRequest(ts, doc, query, pos) {
  function getFragmentAround (line 550) | function getFragmentAround(data, start, end) {
  function elt (line 581) | function elt(tagname, cls /*, ... elts*/) {
  function dialog (line 592) | function dialog(cm, text, f) {
  function tempTooltip (line 601) | function tempTooltip(cm, content, ts) {
  function onEditorActivity (line 627) | function onEditorActivity(cm, f) {
  function makeTooltip (line 640) | function makeTooltip(x, y, content, cm) {
  function remove (line 649) | function remove(node) {
  function fadeOut (line 654) | function fadeOut(tooltip) {
  function showError (line 659) | function showError(ts, cm, msg) {
  function closeArgHints (line 666) | function closeArgHints(ts) {
  function docValue (line 674) | function docValue(ts, doc) {
  function WorkerServer (line 682) | function WorkerServer(ts) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/tern/worker.js
  function getFile (line 26) | function getFile(file, c) {
  function startServer (line 31) | function startServer(defs, plugins, scripts) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/addon/wrap/hardwrap.js
  function findParagraph (line 16) | function findParagraph(cm, pos, options) {
  function findBreakPoint (line 32) | function findBreakPoint(text, column, wrapOn, killTrailingSpace, forceBr...
  function wrapRange (line 55) | function wrapRange(cm, from, to, options) {

FILE: thisMyPCWeb/react_js/AdminLTE-3.1.0/plugins/codemirror/codemirror.js
  function classTest (line 50) | function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)...
  function removeChildren (line 61) | function removeChildren(e) {
  function removeChildrenAndAdd (line 67) | function removeChildrenAndAdd(parent, e) {
  function elt (line 71) | function elt(tag, content, className, style) {
  function eltP (line 80) | function eltP(tag, content, className, style) {
  function contains (line 103) | function contains(parent, child) {
  function activeElt (line 114) | function activeElt() {
  function addClass (line 129) | function addClass(node, cls) {
  function joinClasses (line 133) | function joinClasses(a, b) {
  function bind (line 146) | function bind(f) {
  function copyObj (line 151) | function copyObj(obj, target, overwrite) {
  function countColumn (line 161) | function countColumn(string, end, tabSize, startIndex, startValue) {
  function indexOf (line 200) | function indexOf(array, elt) {
  function findColumn (line 218) | function findColumn(string, goal, tabSize) {
  function spaceStr (line 233) | function spaceStr(n) {
  function lst (line 239) | function lst(arr) { return arr[arr.length-1] }
  function map (line 241) | function map(array, f) {
  function insertSorted (line 247) | function insertSorted(array, value, score) {
  function nothing (line 253) | function nothing() {}
  function createObj (line 255) | function createObj(base, props) {
  function isWordCharBasic (line 268) | function isWordCharBasic(ch) {
  function isWordChar (line 272) | function isWordChar(ch, helper) {
  function isEmpty (line 278) | function isEmpty(obj) {
  function isExtendingChar (line 289) | function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendi...
  function skipExtendingChars (line 292) | function skipExtendingChars(str, pos, dir) {
  function findFirst (line 300) | function findFirst(pred, from, to) {
  function iterateBidiSections (line 315) | function iterateBidiSections(order, from, to, f) {
  function getBidiPartAt (line 329) | function getBidiPartAt(order, ch, sticky) {
  function charType (line 375) | function charType(code) {
  function BidiSpan (line 388) | function BidiSpan(level, from, to) {
  function getOrder (line 521) | function getOrder(line, direction) {
  function getHandlers (line 545) | function getHandlers(emitter, type) {
  function off (line 549) | function off(emitter, type, f) {
  function signal (line 564) | function signal(emitter, type /*, values...*/) {
  function signalDOMEvent (line 574) | function signalDOMEvent(cm, e, override) {
  function signalCursorActivity (line 581) | function signalCursorActivity(cm) {
  function hasHandler (line 589) | function hasHandler(emitter, type) {
  function eventMixin (line 595) | function eventMixin(ctor) {
  function e_preventDefault (line 603) | function e_preventDefault(e) {
  function e_stopPropagation (line 607) | function e_stopPropagation(e) {
  function e_defaultPrevented (line 611) | function e_defaultPrevented(e) {
  function e_stop (line 614) | function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}
  function e
Copy disabled (too large) Download .json
Condensed preview — 1506 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (42,749K chars).
[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 834,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 595,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
  },
  {
    "path": ".github/workflows/yarn-build-test.yml",
    "chars": 440,
    "preview": "name: Build and Test Next js (That working on my Computer 🫡)\non: pull_request\n\njobs:\n  build:\n    runs-on: ubuntu-latest"
  },
  {
    "path": ".gitignore",
    "chars": 228,
    "preview": "thisMyPCApp/Desktop-win32-x64/\nthisMyPCApp/node_modules/\nthisMyPCServer/node_modules/\nthisMyPCWeb/node_modules/\nthisMyPC"
  },
  {
    "path": ".gitlab-ci.yml",
    "chars": 716,
    "preview": "    image: node:10.9.0\n\n    stages:\n      - build\n      - test\n\n    cache:\n      paths:\n        - thisMyPCWeb/node_modul"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3355,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "LICENSE",
    "chars": 1079,
    "preview": "MIT License\n\nCopyright (c) 2019 Supun Lakmal Abesekara\n\nPermission is hereby granted, free of charge, to any person obta"
  },
  {
    "path": "README.md",
    "chars": 10552,
    "preview": "# This My PC\n\n<div align=\"center\">\n    <a href=\"http://thismypc.com/\">\n        <img src=\"https://raw.githubusercontent.c"
  },
  {
    "path": "thisMyPCApp/.eslintrc.js",
    "chars": 274,
    "preview": "module.exports = {\n  'env': {\n    'browser': true,\n    'commonjs': true,\n    'es6': true,\n  },\n  'extends': 'google',\n  "
  },
  {
    "path": "thisMyPCApp/README.md",
    "chars": 635,
    "preview": "\n# This My PC\n\n<div align=\"center\">\n    <a href=\"http://thismypc.com/\">\n        <img src=\"../thisMyPCWeb/src/assets/imag"
  },
  {
    "path": "thisMyPCApp/assets/css/home.css",
    "chars": 1566,
    "preview": ".click-btn {\n    cursor: pointer;\n}\n\n.frontside .card,\n.backside .card {\n    min-height: 100%;\n}\n\n.frontside .card .card"
  },
  {
    "path": "thisMyPCApp/assets/css/login.css",
    "chars": 4488,
    "preview": "@import url(\"https://fonts.googleapis.com/css?family=Lato:300,400,700\");\n.logo {\n  width: 163px;\n}\n\n.nav-bar-bg {\n  back"
  },
  {
    "path": "thisMyPCApp/assets/js/home.js",
    "chars": 12643,
    "preview": "\"use strict\";\nconst socket = io.connect(`http://localhost:5000`);\nconst remoteServer = `http://localhost:5000`;\nconst { "
  },
  {
    "path": "thisMyPCApp/assets/js/login.js",
    "chars": 2184,
    "preview": "const {\n  ipcRenderer,\n} = require(`electron`);\nconst socket = io.connect(`http://localhost:5000`);\nconst remoteServer ="
  },
  {
    "path": "thisMyPCApp/assets/libs/socket.io.js",
    "chars": 62438,
    "preview": "/*!\n * Socket.IO v2.1.1\n * (c) 2014-2018 Guillermo Rauch\n * Released under the MIT License.\n */\n!function(t,e){\"object\"="
  },
  {
    "path": "thisMyPCApp/html/index.html",
    "chars": 5601,
    "preview": "<!DOCTYPE html>\n<html>\n\n<head>\n    <meta charset=\"UTF-8\">\n    <title>ThisMyPC</title>\n    <!-- Bootstrap core CSS -->\n  "
  },
  {
    "path": "thisMyPCApp/html/login.html",
    "chars": 2922,
    "preview": "<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale"
  },
  {
    "path": "thisMyPCApp/log.txt",
    "chars": 9,
    "preview": "Some log\n"
  },
  {
    "path": "thisMyPCApp/main.js",
    "chars": 1836,
    "preview": "'use strict';\nconst {\n  app,\n  BrowserWindow,\n  ipcMain,\n} = require('electron');\n// reload  application   while   codin"
  },
  {
    "path": "thisMyPCApp/package.json",
    "chars": 1645,
    "preview": "{\n  \"name\": \"ThisMyPC\",\n  \"version\": \"0.2.0\",\n  \"description\": \"This is Electron JS ,Node JS and Angular project (ThisMy"
  },
  {
    "path": "thisMyPCApp/setup.js",
    "chars": 349,
    "preview": "var electronInstaller = require('electron-winstaller');\nresultPromise = electronInstaller.createWindowsInstaller({\n    a"
  },
  {
    "path": "thisMyPCServer/.eslintrc.js",
    "chars": 271,
    "preview": "module.exports = {\n  'env': {\n    'commonjs': true,\n    'es6': true,\n    'node': true,\n  },\n  'extends': 'google',\n  'gl"
  },
  {
    "path": "thisMyPCServer/.gitignore",
    "chars": 14,
    "preview": "node_modules/\n"
  },
  {
    "path": "thisMyPCServer/components/api.components.js",
    "chars": 238,
    "preview": "\n\n/**\n * User Class\n */\nclass ApiComponent {\n  constructor() {\n\n  }\n\n  respond(type, msg, data) {\n    const res = {};\n  "
  },
  {
    "path": "thisMyPCServer/components/computer.components.js",
    "chars": 3238,
    "preview": "/**\n * User Module\n */\nconst PC = require('../models/pc');\nconst UserComponent = require('./user.components');\n// md5 en"
  },
  {
    "path": "thisMyPCServer/components/logger.js",
    "chars": 261,
    "preview": "'use strict';\n\n/**\n*  log class\n*  pattern - Singletons\n*/\nclass Logger {\n  /**\n  * @param {object} message\n  */\n  log(m"
  },
  {
    "path": "thisMyPCServer/components/user.components.js",
    "chars": 2189,
    "preview": "/**\n * User Module\n */\nconst User = require('../models/user');\nconst ApiComponent = require('./api.components');\n/**\n * "
  },
  {
    "path": "thisMyPCServer/config/config.js",
    "chars": 33,
    "preview": "module.exports = {\n\tport:5000\n};\n"
  },
  {
    "path": "thisMyPCServer/config/db.js",
    "chars": 627,
    "preview": "let db = {\n  //Mongo DB\n  host: process.env.MONGO_DB_HOST, // web site  for  DB\n  dbName: process.env.MONGO_DB_NAME, //D"
  },
  {
    "path": "thisMyPCServer/delete_code_from_index.txt",
    "chars": 12521,
    "preview": "// admin module\nconst Admin = require('./models/admin');\n\n// this api  function    for  admin\n// create  app frp for app"
  },
  {
    "path": "thisMyPCServer/example.env",
    "chars": 89,
    "preview": "MONGO_DB_HOST=\"\"\nMONGO_DB_NAME=\"\"\nMONGO_DB_PASSWORD=\"\"\nMONGO_DB_USER=\"\"\nMONGO_DB_TYPE=\"\"\n"
  },
  {
    "path": "thisMyPCServer/index.js",
    "chars": 32637,
    "preview": "/*\n! TODO Do not send user auth key and other information to client side app\n*/\n\"use strict\";\nrequire(\"dotenv\").config()"
  },
  {
    "path": "thisMyPCServer/models/PCOwner.js",
    "chars": 824,
    "preview": "const mongoose = require('mongoose');\nconst PCOwner = mongoose.Schema({\n  userID: {\n    type: String,\n    required: true"
  },
  {
    "path": "thisMyPCServer/models/UserLog.js",
    "chars": 686,
    "preview": "const mongoose = require('mongoose');\nconst pcLog = mongoose.Schema({\n  userID: {\n    type: String,\n    required: true,\n"
  },
  {
    "path": "thisMyPCServer/models/admin.js",
    "chars": 732,
    "preview": "const mongoose = require('mongoose');\n// db.createCollection('Admin')\nconst adminSchema = mongoose.Schema({\n  userID: {\n"
  },
  {
    "path": "thisMyPCServer/models/appNotification.js",
    "chars": 919,
    "preview": "const mongoose = require('mongoose');\nconst appNotification = mongoose.Schema({\n  softWareID: {\n    type: String,\n    re"
  },
  {
    "path": "thisMyPCServer/models/pc.js",
    "chars": 5908,
    "preview": "const mongoose = require('mongoose');\nconst pcSchema = mongoose.Schema({\n  pcKey: { // Personal Computer Unique Key\n    "
  },
  {
    "path": "thisMyPCServer/models/software.js",
    "chars": 1229,
    "preview": "const mongoose = require('mongoose');\nconst softwareSchema = mongoose.Schema({\n  version: {\n    type: String,\n    requir"
  },
  {
    "path": "thisMyPCServer/models/user.js",
    "chars": 6270,
    "preview": "const mongoose = require('mongoose');\nconst userSchema = mongoose.Schema({\n  name: { // User name\n    type: String,\n    "
  },
  {
    "path": "thisMyPCServer/models/userAndPC.js",
    "chars": 973,
    "preview": "const mongoose = require('mongoose');\nconst userAndPC = mongoose.Schema({\n  userID: {\n    type: String,\n    required: tr"
  },
  {
    "path": "thisMyPCServer/mongo.MD",
    "chars": 8241,
    "preview": "# MongoDB Commands Cheatsheet\n\n\tdb.help()                    help on db methods\n\tdb.mycoll.help()             help on co"
  },
  {
    "path": "thisMyPCServer/package.json",
    "chars": 660,
    "preview": "{\n  \"name\": \"mid\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"node in"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/.editorconfig",
    "chars": 246,
    "preview": "# Editor configuration, see https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size ="
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/.gitignore",
    "chars": 576,
    "preview": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist\n/tmp\n/out-tsc\n\n# depe"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/README.md",
    "chars": 1057,
    "preview": "# ThisMyPCWeb\n\nThis project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.1.4.\n\n## "
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/angular.json",
    "chars": 3909,
    "preview": "{\n  \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n  \"version\": 1,\n  \"newProjectRoot\": \"projects\",\n  \""
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/e2e/protractor.conf.js",
    "chars": 752,
    "preview": "// Protractor configuration file, see link for more information\n// https://github.com/angular/protractor/blob/master/lib"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/e2e/src/app.e2e-spec.ts",
    "chars": 303,
    "preview": "import { AppPage } from './app.po';\n\ndescribe('workspace-project App', () => {\n  let page: AppPage;\n\n  beforeEach(() => "
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/e2e/src/app.po.ts",
    "chars": 204,
    "preview": "import { browser, by, element } from 'protractor';\n\nexport class AppPage {\n  navigateTo() {\n    return browser.get('/');"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/e2e/tsconfig.e2e.json",
    "chars": 213,
    "preview": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"../out-tsc/app\",\n    \"module\": \"commonjs\",\n    "
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/package.json",
    "chars": 1543,
    "preview": "{\n  \"name\": \"this-my-pcweb\",\n  \"version\": \"0.0.0\",\n  \"scripts\": {\n    \"ng\": \"ng\",\n    \"start\": \"ng serve\",\n    \"build\": "
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/app-routing.module.ts",
    "chars": 245,
    "preview": "import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes "
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/app.component.css",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/app.component.html",
    "chars": 60,
    "preview": "<!--<app-home></app-home>-->\n<router-outlet></router-outlet>"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/app.component.spec.ts",
    "chars": 1110,
    "preview": "import { TestBed, async } from '@angular/core/testing';\nimport { RouterTestingModule } from '@angular/router/testing';\ni"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/app.component.ts",
    "chars": 212,
    "preview": "import { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html',\n"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/app.module.ts",
    "chars": 1375,
    "preview": "import {BrowserModule} from '@angular/platform-browser';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} fr"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/auth/auth.guard.spec.ts",
    "chars": 346,
    "preview": "import { TestBed, async, inject } from '@angular/core/testing';\n\nimport { AuthGuard } from './auth.guard';\n\ndescribe('Au"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/auth/auth.guard.ts",
    "chars": 863,
    "preview": "import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } "
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/auth/auth.service.spec.ts",
    "chars": 323,
    "preview": "import { TestBed } from '@angular/core/testing';\n\nimport { AuthService } from './auth.service';\n\ndescribe('AuthService',"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/auth/auth.service.ts",
    "chars": 524,
    "preview": "import { Injectable } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\nimport { tap, delay } from 'rxjs/ope"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/account/account.component.css",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/account/account.component.html",
    "chars": 8445,
    "preview": "<div class=\"alert {{alert.class}} alert-dismissible fade show top_alert_position\" role=\"alert\" *ngIf=\"alert.openAlert\">\n"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/account/account.component.spec.ts",
    "chars": 646,
    "preview": "import {\n  async,\n  ComponentFixture,\n  TestBed\n} from '@angular/core/testing';\nimport {\n  AccountComponent\n} from './ac"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/account/account.component.ts",
    "chars": 6460,
    "preview": "import {\n  Component,\n  OnInit\n} from '@angular/core';\nimport {\n  Router,\n  RouterModule,\n  Routes\n} from '@angular/rout"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/config/config.js",
    "chars": 116,
    "preview": "let config = {\n  \"url\": \"http://localhost\",\n  \"port\": \":5000\",\n}\nexport {\n  config\n}; // a list of exported variable"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/home/home.component.css",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/home/home.component.html",
    "chars": 20672,
    "preview": "<section class=\"top-section\">\n  <nav class=\"navbar navbar-expand-lg navbar-dark  ftco-navbar-light nav-bar-bg\" id=\"site-"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/home/home.component.spec.ts",
    "chars": 625,
    "preview": "import {\n  async,\n  ComponentFixture,\n  TestBed\n} from '@angular/core/testing';\nimport {\n  HomeComponent\n} from './home."
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/home/home.component.ts",
    "chars": 3726,
    "preview": "import {\n  Component,\n  OnInit\n} from '@angular/core';\nimport {\n  HttpClient,\n  HttpHeaders\n} from '@angular/common/http"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/system/system.component.css",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/system/system.component.html",
    "chars": 10460,
    "preview": "<div *ngIf=\"alert.openAlert\" class=\"alert {{alert.class}} alert-dismissible fade show top_alert_position\" role=\"alert\">\n"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/system/system.component.spec.ts",
    "chars": 639,
    "preview": "import {\n  async,\n  ComponentFixture,\n  TestBed\n} from '@angular/core/testing';\nimport {\n  SystemComponent\n} from './sys"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/components/system/system.component.ts",
    "chars": 13196,
    "preview": "import {\n  Component,\n  OnInit\n} from '@angular/core';\nimport {\n  Router,\n  RouterModule,\n  Routes\n} from '@angular/rout"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/app/guards/auth-guard.service.ts",
    "chars": 1617,
    "preview": "import {Injectable} from '@angular/core';\nimport {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router, Rout"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/assets/css/introjs.css",
    "chars": 12300,
    "preview": ".introjs-overlay {\n  position: absolute;\n  box-sizing: content-box;\n  z-index: 999999;\n  background-color: #000;\n  opaci"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/assets/css/main.css",
    "chars": 14430,
    "preview": "@import url(\"https://fonts.googleapis.com/css?family=Lato:300,400,700\");\nhtml {\n  scroll-behavior: smooth;\n}\n\n.logo {\n  "
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/assets/fonts/flaticon/backup.txt",
    "chars": 584,
    "preview": "eyIxIjp7IklEIjoxLCJuYW1lIjoiTXkgaWNvbnMgY29sbGVjdGlvbiIsImJvb2ttYXJrX2lkIjoiZHpvejQ5Z2pvNjAwMDAwMCIsImNyZWF0ZWQiOm51bGws"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/assets/fonts/flaticon/font/_flaticon.scss",
    "chars": 1208,
    "preview": "    /*\n    Flaticon icon font: Flaticon\n    Creation date: 08/08/2018 11:48\n    */\n\n    @font-face {\n  font-family: \"Fla"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/assets/fonts/flaticon/font/flaticon.css",
    "chars": 923,
    "preview": "\t/*\n  \tFlaticon icon font: Flaticon\n  \tCreation date: 08/08/2018 11:48\n  \t*/\n\n@font-face {\n  font-family: \"Flaticon\";\n  "
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/assets/fonts/flaticon/font/flaticon.html",
    "chars": 17331,
    "preview": "<!DOCTYPE html>\n<!--\n  Flaticon icon font: Flaticon\n  Creation date: 08/08/2018 11:48\n-->\n<html>\n<!DOCTYPE html>\n<html>\n"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/assets/js/intro.js",
    "chars": 82132,
    "preview": "/**\n * Intro.js v2.9.3\n * https://github.com/usablica/intro.js\n *\n * Copyright (C) 2017 Afshin Mehrabani (@afshinmeh)\n *"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/browserslist",
    "chars": 388,
    "preview": "# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers\n# For additional inf"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/environments/environment.prod.ts",
    "chars": 51,
    "preview": "export const environment = {\n  production: true\n};\n"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/environments/environment.ts",
    "chars": 662,
    "preview": "// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environm"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/index.html",
    "chars": 4906,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>ThisMyPC | Open Source Remote PC Project</tit"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/karma.conf.js",
    "chars": 980,
    "preview": "// Karma configuration file, see link for more information\n// https://karma-runner.github.io/1.0/config/configuration-fi"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/main.ts",
    "chars": 369,
    "preview": "import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynami"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/polyfills.ts",
    "chars": 3571,
    "preview": "/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfi"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/styles.css",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/test.ts",
    "chars": 642,
    "preview": "// This file is required by karma.conf.js and loads recursively all the .spec and framework files\n\nimport 'zone.js/dist/"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/tsconfig.app.json",
    "chars": 166,
    "preview": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"../out-tsc/app\",\n    \"types\": []\n  },\n  \"exclud"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/tsconfig.spec.json",
    "chars": 256,
    "preview": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"../out-tsc/spec\",\n    \"types\": [\n      \"jasmine"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/src/tslint.json",
    "chars": 314,
    "preview": "{\n    \"extends\": \"../tslint.json\",\n    \"rules\": {\n        \"directive-selector\": [\n            true,\n            \"attribu"
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/tsconfig.json",
    "chars": 423,
    "preview": "{\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"baseUrl\": \"./\",\n    \"outDir\": \"angular(deprecated)/dist/out-tsc\""
  },
  {
    "path": "thisMyPCWeb/angular-deprecated/tslint.json",
    "chars": 2824,
    "preview": "{\n  \"rulesDirectory\": [\n    \"codelyzer\"\n  ],\n  \"rules\": {\n    \"arrow-return-shorthand\": true,\n    \"callable-types\": true"
  },
  {
    "path": "thisMyPCWeb/react_js/.gitignore",
    "chars": 339,
    "preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
  },
  {
    "path": "thisMyPCWeb/react_js/.storybook/main.js",
    "chars": 238,
    "preview": "module.exports = {\n  \"stories\": [\n    \"../src/**/*.stories.mdx\",\n    \"../src/**/*.stories.@(js|jsx|ts|tsx)\"\n  ],\n  \"addo"
  },
  {
    "path": "thisMyPCWeb/react_js/.storybook/preview.js",
    "chars": 173,
    "preview": "export const parameters = {\n  actions: { argTypesRegex: \"^on[A-Z].*\" },\n  controls: {\n    matchers: {\n      color: /(bac"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.babelrc.js",
    "chars": 208,
    "preview": "module.exports = {\n  presets: [\n    [\n      '@babel/preset-env',\n      {\n        loose: true,\n        bugfixes: true,\n  "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.browserslistrc",
    "chars": 153,
    "preview": "# https://github.com/browserslist/browserslist#readme\n\n>= 0.2%\nlast 2 major versions\nnot dead\nFirefox ESR\nEdge >= 16\nExp"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.bundlewatch.config.json",
    "chars": 1310,
    "preview": "{\n  \"files\": [\n    {\n      \"path\": \"./dist/css/adminlte.css\",\n      \"maxSize\": \"122.3 kB\"\n    },\n    {\n      \"path\": \"./"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.editorconfig",
    "chars": 208,
    "preview": "# editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nindent_style = space\ninsert_final_"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.eslintignore",
    "chars": 64,
    "preview": "**/*.min.js\n**/plugins/\n/dist/js/adminlte.js\n/docs/\n/docs_html/\n"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.eslintrc.json",
    "chars": 1542,
    "preview": "{\n  \"root\": true,\n  \"extends\": [\n    \"plugin:compat/recommended\",\n    \"plugin:import/errors\",\n    \"plugin:import/warning"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.gitattributes",
    "chars": 212,
    "preview": "# Enforce Unix newlines\n* text=auto eol=lf\n\n# Ignores for analysis is used to produce the language stats bar which displ"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.gitignore",
    "chars": 1213,
    "preview": "# System / Log files\n*.DS_Store\n*.log\n\n# Archives\n*.zip\n\n# Sass Cache\n.sass-cache\n\n# Project files\n.idea\nnbproject\nnbpro"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.gitpod.yml",
    "chars": 101,
    "preview": "tasks:\n  - init: npm install\n    command: npm run dev\nports:\n  - port: 3000\n    onOpen: open-preview\n"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.lgtm.yml",
    "chars": 460,
    "preview": "# https://lgtm.com/help/lgtm/customizing-file-classification\npath_classifiers:\n  plugins:\n    - plugins/\n\nextraction:\n  "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.npmignore",
    "chars": 71,
    "preview": "/docs/\n/docs_html/\n/plugins/*\n!/plugins/flot-old/\n/.github/\n/.lgtm.yml\n"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.stylelintignore",
    "chars": 66,
    "preview": "**/*.html\n**/*.md\n**/*.min.css\n**/dist/\n**/docs_html/\n**/plugins/\n"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/.stylelintrc",
    "chars": 411,
    "preview": "{\n  \"extends\": [\n    \"stylelint-config-twbs-bootstrap/scss\"\n  ],\n  \"rules\": {\n    \"declaration-no-important\": null,\n    "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/CODE_OF_CONDUCT.md",
    "chars": 3173,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/LICENSE",
    "chars": 1082,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2014-2021 ColorlibHQ\n\nPermission is hereby granted, free of charge, to any person o"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/README.md",
    "chars": 7076,
    "preview": "# [AdminLTE - Bootstrap 4 Admin Dashboard](https://adminlte.io)\n\n[![npm version](https://img.shields.io/npm/v/admin-lte/"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/config/.eslintrc.json",
    "chars": 213,
    "preview": "{\n  \"env\": {\n    \"browser\": false,\n    \"node\": true\n  },\n  \"parserOptions\": {\n    \"sourceType\": \"script\"\n  },\n  \"extends"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/config/postcss.config.js",
    "chars": 258,
    "preview": "'use strict'\n\nmodule.exports = {\n  map: {\n    inline: false,\n    annotation: true,\n    sourcesContent: true\n  },\n  plugi"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/config/rollup.config.js",
    "chars": 729,
    "preview": "'use strict'\n\nconst { babel } = require('@rollup/plugin-babel')\n\nconst pkg = require('../../package')\nconst year = new D"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/AdminLTE.js",
    "chars": 776,
    "preview": "import CardRefresh from './CardRefresh'\nimport CardWidget from './CardWidget'\nimport ControlSidebar from './ControlSideb"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/CardRefresh.js",
    "chars": 3669,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE CardRefresh.js\n * License MIT\n * -----------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/CardWidget.js",
    "chars": 6578,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE CardWidget.js\n * License MIT\n * ------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/ControlSidebar.js",
    "chars": 9453,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE ControlSidebar.js\n * License MIT\n * --------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/DirectChat.js",
    "chars": 1755,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE DirectChat.js\n * License MIT\n * ------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Dropdown.js",
    "chars": 3319,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE Dropdown.js\n * License MIT\n * --------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/ExpandableTable.js",
    "chars": 2996,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE ExpandableTable.js\n * License MIT\n * -------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Fullscreen.js",
    "chars": 2855,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE Fullscreen.js\n * License MIT\n * ------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/IFrame.js",
    "chars": 13201,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE IFrame.js\n * License MIT\n * ----------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Layout.js",
    "chars": 6942,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE Layout.js\n * License MIT\n * ----------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/NavbarSearch.js",
    "chars": 2496,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE NavbarSearch.js\n * License MIT\n * ----------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/PushMenu.js",
    "chars": 5345,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE PushMenu.js\n * License MIT\n * --------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/SidebarSearch.js",
    "chars": 7718,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE SidebarSearch.js\n * License MIT\n * ---------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Toasts.js",
    "chars": 5506,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE Toasts.js\n * License MIT\n * ----------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/TodoList.js",
    "chars": 2286,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE TodoList.js\n * License MIT\n * --------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/js/Treeview.js",
    "chars": 4468,
    "preview": "/**\n * --------------------------------------------\n * AdminLTE Treeview.js\n * License MIT\n * --------------------------"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/npm/.eslintrc.json",
    "chars": 213,
    "preview": "{\n  \"env\": {\n    \"browser\": false,\n    \"node\": true\n  },\n  \"parserOptions\": {\n    \"sourceType\": \"script\"\n  },\n  \"extends"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/npm/DocsPlugins.js",
    "chars": 1021,
    "preview": "'use strict'\n\nconst Plugins = [\n  // AdminLTE Dist\n  {\n    from: 'dist/css/',\n    to: 'docs/assets/css/'\n  },\n  {\n    fr"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/npm/DocsPublish.js",
    "chars": 1233,
    "preview": "#!/usr/bin/env node\n\n'use strict'\n\nconst path = require('path')\nconst fse = require('fs-extra')\nconst fs = require('fs')"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/npm/Plugins.js",
    "chars": 10458,
    "preview": "'use strict'\n\nconst Plugins = [\n  // jQuery\n  {\n    from: 'node_modules/jquery/dist',\n    to: 'plugins/jquery'\n  },\n  //"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/npm/Publish.js",
    "chars": 1210,
    "preview": "#!/usr/bin/env node\n\n'use strict'\n\nconst path = require('path')\nconst fse = require('fs-extra')\nconst Plugins = require("
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/npm/vnu-jar.js",
    "chars": 1431,
    "preview": "#!/usr/bin/env node\n\n/*!\n * Script to run vnu-jar if Java is available.\n * Copyright 2017-2021 The Bootstrap Authors\n * "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_adminlte.raw.scss",
    "chars": 979,
    "preview": "/*!\n *   AdminLTE v3.1.0\n *   Author: Colorlib\n *   Website: AdminLTE.io <https://adminlte.io>\n *   License: Open source"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_alerts.scss",
    "chars": 1024,
    "preview": "//\n// Component: Alert\n//\n\n.alert {\n  .icon {\n    margin-right: 10px;\n  }\n\n  .close {\n    color: $black;\n    opacity: .2"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_animation-effects.scss",
    "chars": 144,
    "preview": "//\n// Component: Animation\n//\n\n.animation {\n  &__shake {\n    animation: shake 1500ms;\n  }\n  &__wobble {\n    animation: w"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_bootstrap-variables.scss",
    "chars": 36832,
    "preview": "// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $n"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_brand.scss",
    "chars": 1719,
    "preview": "//\n// Component: Brand\n//\n\n.brand-link {\n  $brand-link-padding-y: $navbar-brand-padding-y + $navbar-padding-y;\n  display"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_buttons.scss",
    "chars": 2907,
    "preview": "//\n// Component: Button\n//\n\n.btn {\n  &.disabled,\n  &:disabled {\n    cursor: not-allowed;\n  }\n\n  // Flat buttons\n  &.btn-"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_callout.scss",
    "chars": 1319,
    "preview": "//\n// Component: Callout\n//\n\n// Base styles (regardless of theme)\n.callout {\n  @if $enable-rounded {\n    @include border"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_cards.scss",
    "chars": 8848,
    "preview": "//\n// Component: Cards\n//\n\n// Color variants\n@each $name, $color in $theme-colors {\n  @include cards-variant($name, $col"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_carousel.scss",
    "chars": 399,
    "preview": "//\n// Component: Carousel\n//\n\n.carousel-control-custom-icon {\n  .carousel-control-prev & {\n    margin-left: -20px;\n  }\n "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_close.scss",
    "chars": 976,
    "preview": ".close {\n  float: right;\n  @include font-size($close-font-size);\n  font-weight: $close-font-weight;\n  line-height: 1;\n  "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_colors.scss",
    "chars": 2809,
    "preview": "//\n// Misc: Colors\n//\n\n// Background colors (theme colors)\n@each $name, $color in $theme-colors {\n  @include background-"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_control-sidebar.scss",
    "chars": 2967,
    "preview": "//\n// Component: Control Sidebar\n//\n\nhtml.control-sidebar-animate {\n  overflow-x: hidden;\n}\n\n.control-sidebar {\n  bottom"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_direct-chat.scss",
    "chars": 4245,
    "preview": "//\n// Component: Direct Chat\n//\n\n.direct-chat {\n  .card-body {\n    overflow-x: hidden;\n    padding: 0;\n    position: rel"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_dropdown.scss",
    "chars": 5127,
    "preview": "//\n// Component: Dropdown\n//\n\n// General Dropdown Rules\n//.dropdown-item {\n//  &:first-of-type {\n//    @include border-t"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_elevation.scss",
    "chars": 212,
    "preview": "//\n// Component: Elevation\n//\n\n.elevation-0 {\n  box-shadow: none !important;\n}\n\n// Background colors (colors)\n@each $nam"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_forms.scss",
    "chars": 9050,
    "preview": "//\n// Component: Forms\n//\n\n.form-group {\n  &.has-icon {\n    position: relative;\n\n    .form-control {\n      padding-right"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_info-box.scss",
    "chars": 2793,
    "preview": "//\n// Component: Info Box\n//\n\n.info-box {\n  @include box-shadow($card-shadow);\n  @include border-radius($border-radius);"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_layout.scss",
    "chars": 14444,
    "preview": "//\n// Core: Layout\n//\n\nhtml.scroll-smooth {\n  scroll-behavior: smooth;\n}\n\nhtml,\nbody,\n.wrapper {\n  min-height: 100%;\n}\n\n"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_main-header.scss",
    "chars": 3334,
    "preview": "//\n// Component: Main Header\n//\n\n.main-header {\n  border-bottom: $main-header-bottom-border;\n  z-index: $zindex-main-hea"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_main-sidebar.scss",
    "chars": 23433,
    "preview": "//\n// Component: Main Sidebar\n//\n\n.main-sidebar {\n  height: 100vh;\n  overflow-y: hidden;\n  z-index: $zindex-main-sidebar"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_miscellaneous.scss",
    "chars": 8305,
    "preview": "//\n// Misc: Miscellaneous\n//\n\n.border-transparent {\n  border-color: transparent !important;\n}\n\n// Description Blocks\n.de"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_mixins.scss",
    "chars": 335,
    "preview": "//\n// General: Mixins\n//\n\n@import \"mixins/animations\";\n@import \"mixins/cards\";\n@import \"mixins/sidebar\";\n@import \"mixins"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_modals.scss",
    "chars": 1272,
    "preview": "//\n// Component: Modals\n//\n\n// Overlay\n.modal-dialog {\n  .overlay {\n    display: flex;\n    position: absolute;\n    left:"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_navs.scss",
    "chars": 3584,
    "preview": "//\n// Component: Nav\n//\n\n.nav-pills {\n  .nav-link {\n    color: $gray-600;\n\n    &:not(.active):hover {\n      color: theme"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_pagination.scss",
    "chars": 1439,
    "preview": "//\n// Component: Pagination\n//\n\n.pagination-month {\n  .page-item {\n    justify-self: stretch;\n\n    .page-link {\n      di"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_preloader.scss",
    "chars": 320,
    "preview": "//\n// Core: Preloader\n//\n\n.preloader {\n  display: flex;\n  background-color: $main-bg;\n  height: 100vh;\n  width: 100%;\n  "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_print.scss",
    "chars": 904,
    "preview": "//\n// Misc: Print\n//\n\n@media print {\n  //Add to elements that you do not want to show when printing\n  .no-print {\n    di"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_products.scss",
    "chars": 953,
    "preview": "//\n// Component: Products\n//\n\n.products-list {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n\n  > .item {\n    @include "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_progress-bars.scss",
    "chars": 943,
    "preview": "//\n// Component: Progress Bar\n//\n\n//General CSS\n.progress {\n  @include box-shadow(none);\n  @include border-radius($progr"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_root.scss",
    "chars": 264,
    "preview": ".dark-mode {\n  :root {\n    // Custom variable values only support SassScript inside `#{}`.\n    @each $color, $value in $"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_sidebar-mini.scss",
    "chars": 11093,
    "preview": "//\n// Component: Sidebar Mini\n//\n\n// Logo style\n.logo-xs,\n.logo-xl {\n  opacity: 1;\n  position: absolute;\n  visibility: v"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_small-box.scss",
    "chars": 2507,
    "preview": "//\n// Component: Small Box\n//\n\n.small-box {\n  @include border-radius($border-radius);\n  @include box-shadow($card-shadow"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_social-widgets.scss",
    "chars": 1446,
    "preview": "//\n// Component: Social Widgets\n//\n\n//General widget style\n.card-widget {\n  border: 0;\n  position: relative;\n}\n\n//User W"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_table.scss",
    "chars": 2653,
    "preview": "//\n// Component: Table\n//\n\n.table {\n  &:not(.table-dark) {\n    color: inherit;\n  }\n\n  // fixed table head\n  &.table-head"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_text.scss",
    "chars": 681,
    "preview": "//\n// Component: Text\n//\n\n// text modification\n.text-bold {\n  &,\n  &.table td,\n  &.table th {\n    font-weight: 700;\n  }\n"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_timeline.scss",
    "chars": 2821,
    "preview": "//\n// Component: Timeline\n//\n\n.timeline {\n  margin: 0 0 45px;\n  padding: 0;\n  position: relative;\n  // The line\n  &::bef"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_toasts.scss",
    "chars": 1120,
    "preview": "//\n// Component: Toasts\n//\n\n.toasts-top-right {\n  position: absolute;\n  right: 0;\n  top: 0;\n  z-index: $zindex-toasts;\n\n"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_users-list.scss",
    "chars": 730,
    "preview": "//\n// Component: Users List\n//\n\n.users-list {\n  @include list-unstyled ();\n\n  > li {\n    float: left;\n    padding: 10px;"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_variables-alt.scss",
    "chars": 2861,
    "preview": "//\n// Core: Variables for Dark Mode\n//\n\n// COLORS\n// --------------------------------------------------------\n\n// stylel"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/_variables.scss",
    "chars": 9082,
    "preview": "//\n// Core: Variables\n//\n\n// COLORS\n// --------------------------------------------------------\n$blue: #0073b7 !default;"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/adminlte.scss",
    "chars": 651,
    "preview": "/*!\n *   AdminLTE v3.1.0\n *   Author: Colorlib\n *   Website: AdminLTE.io <https://adminlte.io>\n *   License: Open source"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_accent.scss",
    "chars": 2560,
    "preview": "//\n// Mixins: Accent\n//\n\n// Accent Variant\n@mixin accent-variant($name, $color) {\n  $link-color: $color;\n  .accent-#{$na"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_animations.scss",
    "chars": 1849,
    "preview": "//\n// Mixins: Animation\n//\n\n\n@keyframes flipInX {\n  0% {\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n   "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_backgrounds.scss",
    "chars": 1741,
    "preview": "//\n// Mixins: Backgrounds\n//\n\n// Background Variant\n@mixin background-variant($name, $color) {\n  .bg-#{$name} {\n    back"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_cards.scss",
    "chars": 1535,
    "preview": "//\n// Mixins: Cards Variant\n//\n\n@mixin cards-variant($name, $color) {\n  .card-#{$name} {\n    &:not(.card-outline) {\n    "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_custom-forms.scss",
    "chars": 3658,
    "preview": "//\n// Mixins: Custom Forms\n//\n\n// Custom Switch Variant\n@mixin custom-switch-variant($name, $color) {\n  &.custom-switch-"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_direct-chat.scss",
    "chars": 314,
    "preview": "//\n// Mixins: Direct Chat\n//\n\n// Direct Chat Variant\n@mixin direct-chat-variant($bg-color, $color: $white) {\n  .right > "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_miscellaneous.scss",
    "chars": 862,
    "preview": "//\n// Mixins: Miscellaneous\n//\n\n// ETC\n@mixin translate($x, $y) {\n  transform: translate($x, $y);\n}\n\n// Different radius"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_navbar.scss",
    "chars": 1441,
    "preview": "//\n// Mixins: Navbar\n//\n\n// Navbar Variant\n@mixin navbar-variant($name, $color) {\n  .navbar-#{$name} {\n    background-co"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_sidebar.scss",
    "chars": 3442,
    "preview": "//\n// Mixins: Sidebar\n//\n\n// Sidebar Color\n@mixin sidebar-color($color) {\n  .nav-sidebar > .nav-item {\n    > .nav-link.a"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_toasts.scss",
    "chars": 408,
    "preview": "//\n// Mixins: Toasts\n//\n\n// Toast Variant\n@mixin toast-variant($name, $color) {\n  &.bg-#{$name} {\n    background-color: "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/mixins/_touch-support.scss",
    "chars": 128,
    "preview": "//\n// Mixins: Touch Support\n//\n\n@mixin on-touch-device {\n  @media (hover: none) and (pointer: coarse) {\n    @content;\n  "
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/pages/_404_500_errors.scss",
    "chars": 671,
    "preview": "//\n// Pages: 400 and 500 error pages\n//\n\n.error-page {\n  margin: 20px auto 0;\n  width: 600px;\n\n  @include media-breakpoi"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/pages/_e-commerce.scss",
    "chars": 769,
    "preview": "//\n// Pages: E-commerce\n//\n\n// product image\n.product-image {\n  @include img-fluid ();\n  width: 100%;\n}\n\n// product imag"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/pages/_iframe.scss",
    "chars": 2413,
    "preview": "body.iframe-mode {\n  .main-sidebar {\n    display: none;\n  }\n  .content-wrapper {\n    margin-left: 0 !important;\n    marg"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/pages/_invoice.scss",
    "chars": 227,
    "preview": "//\n// Pages: Invoice\n//\n\n.invoice {\n  background-color: $white;\n  border: 1px solid $card-border-color;\n  position: rela"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/pages/_kanban.scss",
    "chars": 1072,
    "preview": ".content-wrapper.kanban {\n  height: 1px;\n\n  .content {\n    height: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n\n"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/pages/_lockscreen.scss",
    "chars": 1404,
    "preview": "//\n// Pages: Lock Screen\n//\n\n// ADD THIS CLASS TO THE <BODY> TAG\n.lockscreen {\n  background-color: $gray-200;\n\n  // User"
  },
  {
    "path": "thisMyPCWeb/react_js/AdminLTE-3.1.0/build/scss/pages/_login_and_register.scss",
    "chars": 1953,
    "preview": "//\n// Pages: Login & Register\n//\n\n.login-logo,\n.register-logo {\n  font-size: 2.1rem;\n  font-weight: 300;\n  margin-bottom"
  }
]

// ... and 1306 more files (download for full content)

About this extraction

This page contains the full source code of the supunlakmal/thismypc GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1506 files (38.7 MB), approximately 10.2M tokens, and a symbol index with 8420 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!