diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..903f280
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,13 @@
+# editorconfig.org
+root = true
+
+[*]
+indent_style = tab
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..cbf2cf0
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,18 @@
+module.exports = {
+ root: true,
+ env: {
+ browser: true,
+ node: true
+ },
+ parserOptions: {
+ parser: '@babel/eslint-parser',
+ requireConfigFile: false
+ },
+ extends: ['@nuxtjs', 'plugin:nuxt/recommended'],
+ plugins: [],
+ // add your custom rules here
+ rules: {
+ 'no-console': 'off',
+ 'arrow-parens': 'off'
+ }
+}
diff --git a/.github/workflows/Deploy.yaml b/.github/workflows/Deploy.yaml
new file mode 100644
index 0000000..2448c6f
--- /dev/null
+++ b/.github/workflows/Deploy.yaml
@@ -0,0 +1,48 @@
+name: deploy to danak
+
+on:
+ push:
+ branches:
+ - main
+
+jobs:
+ build_and_deploy:
+ runs-on: ubuntu-latest
+
+ env:
+ DANAK_SERVER: "https://captain.run.danakcorp.com"
+ APP_TOKEN: f41d18a6e1205488886f89625d0649e5f2ec05354726f6b9370942de9068fb9c
+ CAPROVER_APP_NAME: orisoxin
+ GITHUB_TOKEN: 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
+
+ steps:
+ - name: Check out repositorys
+ uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Login to Container Registry
+ uses: docker/login-action@v3
+ with:
+ registry: ghcr.io
+ username: zmihamid
+ password: ${{ env.GITHUB_TOKEN }}
+
+ - name: Preset Image Name
+ run: echo "IMAGE_URL=$(echo ghcr.io/zmihamid/${{ github.event.repository.name }}:$(echo ${{ github.sha }} | cut -c1-7) | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
+
+ - name: Build and push Docker Image
+ uses: docker/build-push-action@v5
+ with:
+ context: .
+ file: ./Dockerfile
+ push: true
+ tags: ${{ env.IMAGE_URL }}
+
+ - name: Install CapRover CLI
+ run: npm install -g caprover
+
+ - name: deploy to server
+ run: |
+ caprover deploy -a $CAPROVER_APP_NAME -u $DANAK_SERVER --appToken $APP_TOKEN -i "$IMAGE_URL"
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5e3dc1c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,108 @@
+# Created by .ignore support plugin (hsz.mobi)
+### Node template
+# Logs
+/logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# TypeScript v1 declaration files
+typings/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+
+# next.js build output
+.next
+
+# nuxt.js build output
+.nuxt
+.nuxt.zip
+./*.zip
+# Nuxt generate
+dist
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless
+
+# IDE / Editor
+.idea
+
+# Service worker
+sw.*
+
+# macOS
+.DS_Store
+
+# Vim swap files
+*.swp
+
+.vscode
+
+
+static/uploads/images/blog/*.jpg
+static/uploads/images/blog/thumb/*.jpg
+static/uploads/images/gallery/*.jpg
+static/uploads/images/projects/*.jpg
+static/uploads/images/team/*.jpg
+static/uploads/catalogs/cover/*.jpg
+static/uploads/catalogs/file/*.jpg
+static/uploads/catalogs/file/*.pdf
+static/uploads/catalogs/file/*.zip
+static/uploads/catalogs/file/*.rar
+static/uploads/catalogs/file/*.exe
+static/uploads/catalogs/file/*.txt
+
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..1772735
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,8 @@
+{
+ "trailingComma": "none",
+ "tabWidth": 2,
+ "semi": false,
+ "singleQuote": true,
+ "tabs": false,
+ "printWidth": 120
+}
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..4d2bba1
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,47 @@
+FROM node:20-alpine AS base
+
+RUN apk add --no-cache tzdata
+
+# Set the timezone to Asia/Tehran
+RUN cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime && echo "Asia/Tehran" > /etc/timezone
+
+FROM base AS deps
+WORKDIR /temp-deps
+COPY package*.json ./
+RUN npm install
+
+FROM base AS builder
+WORKDIR /build
+COPY . ./
+COPY --from=deps /temp-deps/node_modules ./node_modules
+RUN npm run build
+RUN npm install --omit=dev
+
+
+FROM base AS runner
+WORKDIR /app
+ENV NUXT_TELEMETRY_DISABLED=1
+
+
+RUN addgroup -S appgroup && adduser -S appuser -G appgroup
+RUN chown -R appuser:appgroup /app
+
+# COPY --from=builder --chown=appuser:appgroup /build/.nuxt ./.nuxt
+# COPY --from=builder --chown=appuser:appgroup /build/static ./static
+# COPY --from=builder --chown=appuser:appgroup /build/package.json ./
+# COPY --from=builder --chown=appuser:appgroup /build/node_modules/ ./node_modules/
+COPY --from=builder --chown=appuser:appgroup /build ./
+
+
+USER appuser
+
+# Set environment variables
+ENV NODE_ENV=production
+ENV PORT=3000
+ENV HOSTNAME="0.0.0.0"
+
+
+EXPOSE 3000
+
+# Start the Nuxt 2 app
+CMD ["npm", "start"]
diff --git a/assets/admin/icons/icons.js b/assets/admin/icons/icons.js
new file mode 100644
index 0000000..982b86c
--- /dev/null
+++ b/assets/admin/icons/icons.js
@@ -0,0 +1,167 @@
+import {
+ cibFacebook,
+ cibTwitter,
+ cibLinkedin,
+ cibFlickr,
+ cibTumblr,
+ cibXing,
+ cibGithub,
+ cibStackoverflow,
+ cibYoutube,
+ cibDribbble,
+ cibInstagram,
+ cibPinterest,
+ cibVk,
+ cibYahoo,
+ cibBehance,
+ cibReddit,
+ cibVimeo,
+ cibCcMastercard,
+ cibCcVisa,
+ cibStripe,
+ cibPaypal,
+ cibGooglePay,
+ cibCcAmex
+} from '@coreui/icons'
+import {
+ cifUs,
+ cifBr,
+ cifIn,
+ cifFr,
+ cifEs,
+ cifPl
+} from '@coreui/icons'
+import {
+ cilArrowRight,
+ cilBan,
+ cilBasket,
+ cilBell,
+ cilCalculator,
+ cilCalendar,
+ cilCloudDownload,
+ cilChartPie,
+ cilCheck,
+ cilChevronBottom,
+ cilChevronTop,
+ cilCheckCircle,
+ cilCommentSquare,
+ cilCursor,
+ cilDrop,
+ cilDollar,
+ cilEnvelopeClosed,
+ cilEnvelopeOpen,
+ cilEuro,
+ cilGlobeAlt,
+ cilGrid,
+ cilFile,
+ cilJustifyCenter,
+ cilLaptop,
+ cilLayers,
+ cilLightbulb,
+ cilList,
+ cilLocationPin,
+ cilLockLocked,
+ cilMagnifyingGlass,
+ cilMoon,
+ cilOptions,
+ cilPencil,
+ cilPeople,
+ cilPuzzle,
+ cilSettings,
+ cilShieldAlt,
+ cilSpeech,
+ cilSpeedometer,
+ cilStar,
+ cilTask,
+ cilUser,
+ cilUserFemale,
+ cilUserFollow,
+ cilXCircle
+
+} from '@coreui/icons'
+import { logo } from './logo'
+
+export const iconsSet = Object.assign(
+ {},
+ { logo },
+ {
+ cilArrowRight,
+ cilBan,
+ cilBasket,
+ cilBell,
+ cilCalculator,
+ cilCalendar,
+ cilCloudDownload,
+ cilChartPie,
+ cilCheck,
+ cilChevronBottom,
+ cilChevronTop,
+ cilCheckCircle,
+ cilCommentSquare,
+ cilCursor,
+ cilDrop,
+ cilDollar,
+ cilEnvelopeClosed,
+ cilEnvelopeOpen,
+ cilEuro,
+ cilGlobeAlt,
+ cilGrid,
+ cilFile,
+ cilJustifyCenter,
+ cilLaptop,
+ cilLayers,
+ cilLightbulb,
+ cilList,
+ cilLocationPin,
+ cilLockLocked,
+ cilMagnifyingGlass,
+ cilMoon,
+ cilOptions,
+ cilPencil,
+ cilPeople,
+ cilPuzzle,
+ cilSettings,
+ cilShieldAlt,
+ cilSpeech,
+ cilSpeedometer,
+ cilStar,
+ cilTask,
+ cilUser,
+ cilUserFemale,
+ cilUserFollow,
+ cilXCircle
+ },
+ {
+ cifUs,
+ cifBr,
+ cifIn,
+ cifFr,
+ cifEs,
+ cifPl
+ },
+ {
+ cibFacebook,
+ cibTwitter,
+ cibLinkedin,
+ cibFlickr,
+ cibTumblr,
+ cibXing,
+ cibGithub,
+ cibStackoverflow,
+ cibYoutube,
+ cibDribbble,
+ cibInstagram,
+ cibPinterest,
+ cibVk,
+ cibYahoo,
+ cibBehance,
+ cibReddit,
+ cibVimeo,
+ cibCcMastercard,
+ cibCcVisa,
+ cibStripe,
+ cibPaypal,
+ cibGooglePay,
+ cibCcAmex
+ }
+)
diff --git a/assets/admin/icons/logo.js b/assets/admin/icons/logo.js
new file mode 100644
index 0000000..6923789
--- /dev/null
+++ b/assets/admin/icons/logo.js
@@ -0,0 +1,29 @@
+// Example of SVG converted to js array, so it can be used with CIcon.
+// the first argument is two last values of svg viewBox,
+// the second argument is the SVG content stripped of SVG tags
+export const logo = ['556 134',`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`]
diff --git a/assets/admin/scss/_custom.scss b/assets/admin/scss/_custom.scss
new file mode 100644
index 0000000..fff03e8
--- /dev/null
+++ b/assets/admin/scss/_custom.scss
@@ -0,0 +1,72 @@
+// Here you can add other styles
+.copy-right {
+ direction: ltr !important;
+
+ .company {
+ color: #872071;
+ font-weight: bold;
+
+ &:hover {
+ text-decoration: none;
+ color: #872071;
+ }
+ }
+}
+
+pre {
+ background: #000 !important;
+ color: green !important;
+ direction: ltr !important;
+ text-align: left !important;
+ padding: 20px !important;
+ font-size: 20px !important;
+}
+
+.c-app {
+ .custom-subheader {
+ align-items: center;
+ width: 100%;
+ position: fixed;
+ top: $header-height;
+ left: 0;
+ z-index: 10;
+ transition: width $layout-transition-speed;
+ -webkit-transition: width $layout-transition-speed;
+ -moz-transition: width $layout-transition-speed;
+ -ms-transition: width $layout-transition-speed;
+ -o-transition: width $layout-transition-speed;
+
+ &.sideBarFull {
+ width: calc(100% - #{$sidebar-width});
+ }
+
+ &.sideBarMinimized {
+ width: calc(100% - #{$sidebar-minimized-width});
+ }
+
+ &.sideBarClose {
+ width: 100%;
+ }
+
+ @media (max-width: 992px) {
+ width: 100% !important;
+ }
+ }
+
+ .form-group {
+ &.err {
+ .col-form-label {
+ color: red !important;
+ }
+
+ .form-control {
+ border-color: red !important;
+ }
+
+ .form-text {
+ color: red !important;
+ }
+ }
+ }
+}
+
diff --git a/assets/admin/scss/_el_ui_rtl.scss b/assets/admin/scss/_el_ui_rtl.scss
new file mode 100644
index 0000000..c2d9c08
--- /dev/null
+++ b/assets/admin/scss/_el_ui_rtl.scss
@@ -0,0 +1,172 @@
+//////////////////////////////////////////////////////////////////////////////////////////////////////// element ui rtl fix
+html:lang(fa) {
+ .el-tag {
+ /*margin-bottom: 10px!important;*/
+ }
+
+ .text-area {
+ textarea {
+ height: 100px;
+ }
+ }
+
+ .el-popup-parent--hidden {
+ padding-right: 0 !important;
+ }
+
+ .el-tag .el-icon-close {
+ right: auto !important;
+ left: -5px !important;
+ }
+
+ .el-table .el-table__body-wrapper .el-table__row .is-left {
+ text-align: left !important;
+ }
+
+ .wrapper {
+ min-height: 100vh;
+ }
+
+ .el-form-item__label {
+ float: right !important;
+ text-align: right !important;
+ }
+
+ .el-form-item__content {
+ margin-left: 0 !important;
+ margin-right: 120px !important;
+ }
+
+ @media (max-width: 768px) {
+ .el-form-item__content {
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ }
+ }
+
+ .secondTitle {
+ margin-top: 50px;
+ }
+
+ .el-upload__input {
+ display: none !important;
+ }
+
+ .el-message-box__title, .el-message-box__message {
+ direction: rtl !important;
+ text-align: right !important;
+ }
+
+ .el-message-box__message {
+ padding-left: 12px !important;
+ padding-right: 36px !important;
+ }
+
+ .el-message-box__btns {
+ text-align: left !important;
+ }
+
+ .el-message-box__headerbtn {
+ right: auto !important;
+ left: 15px !important;
+ }
+
+ .el-message-box__btns button:nth-child(2) {
+ margin-left: 0 !important;
+ margin-right: 10px !important;
+ }
+
+ .el-message-box__status {
+ right: 0 !important;
+ }
+
+ .el-table td, .el-table th {
+ text-align: right !important;
+ }
+
+ .el-upload__input {
+ display: none !important;
+ }
+
+ .el-checkbox__label {
+ padding-left: 0 !important;
+ padding-right: 10px !important;
+ }
+
+ .el-message__icon {
+ margin-right: 0 !important;
+ margin-left: 10px !important;
+ }
+
+ .sidebar-subnav {
+ background: rgba(0, 0, 0, 0.05) !important;
+ }
+
+ .sidebar > .nav > li {
+ border-bottom: 1px solid #eee !important;
+ }
+
+ .brand-logo p {
+ margin-top: 6px !important;
+ }
+
+ .brand-logo-collapsed svg {
+ fill: #fff !important;
+ }
+
+ .nav-floating {
+ background: #fff !important;
+ }
+
+ .el-dialog__headerbtn {
+ right: auto !important;
+ left: 20px !important;
+ }
+
+ .el-radio__label {
+ padding-right: 10px !important;
+ }
+
+ .el-scrollbar__wrap {
+ margin-right: 0 !important;
+ margin-left: -17px !important;
+ }
+
+ .el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after {
+ right: auto;
+ left: 20px;
+ }
+
+ .el-select .el-tag {
+ margin: 2px 6px 2px 0;
+ }
+
+ .avatar-uploader{
+ display: flex;
+ justify-content: center;
+ }
+
+ .avatar-uploader .el-upload{
+ background-color: #fff;
+ border: 1px dashed #d9d9d9;
+ border-radius: 6px;
+ box-sizing: border-box;
+ width: 100%;
+ height: 300px;
+ text-align: center;
+ justify-content: center;
+ display: flex;
+ align-items: center;
+ }
+ .avatar-uploader .el-upload:hover {
+ border-color: #409EFF;
+ }
+ .avatar-uploader-icon {
+ font-size: 28px;
+ color: #8c939d;
+ }
+ .avatar {
+ width: 100%;
+ display: block;
+ }
+}
diff --git a/assets/admin/scss/_variables.scss b/assets/admin/scss/_variables.scss
new file mode 100644
index 0000000..4f69a95
--- /dev/null
+++ b/assets/admin/scss/_variables.scss
@@ -0,0 +1,2 @@
+// Variable overrides
+$gray-base: #1a1e24;
diff --git a/assets/admin/scss/style.scss b/assets/admin/scss/style.scss
new file mode 100644
index 0000000..b202629
--- /dev/null
+++ b/assets/admin/scss/style.scss
@@ -0,0 +1,18 @@
+// If you want to override variables do it here
+@import "variables";
+
+// Import styles
+@import "~@coreui/coreui/scss/coreui";
+
+// If you want to add something do it here
+@import "custom";
+@import "el_ui_rtl";
+
+.card-header:not(.content-center) > .c-icon:first-child {
+ margin-right: 0.1rem;
+ margin-top: 0.1rem;
+ vertical-align: top;
+ width: 1.2rem;
+ height: 1.2rem;
+ font-size: 1.2rem;
+}
diff --git a/assets/scss/_CKEditorStyle.scss b/assets/scss/_CKEditorStyle.scss
new file mode 100644
index 0000000..7045841
--- /dev/null
+++ b/assets/scss/_CKEditorStyle.scss
@@ -0,0 +1,74 @@
+.ck-content {
+ width: 100%;
+ direction: rtl;
+ text-align: right;
+
+ &:lang(en) {
+ direction: ltr;
+ text-align: left;
+ }
+
+ a {
+ display: inline-block;
+ color: #fff;
+ }
+
+ p, a, span, b, ul, li, em, h1, h2, h3, h4, h5, h6, strong {
+ font-family: inherit, sans-serif;
+ direction: unset;
+ text-align: unset;
+
+ &:lang(en) {
+ font-family: inherit;
+ direction: unset;
+ text-align: unset;
+ }
+
+ &[dir="ltr"] {
+ direction: ltr;
+ text-align: left;
+
+ p, a, span, b, ul, li, em, h1, h2, h3, h4, h5, h6, strong {
+ direction: ltr;
+ text-align: left;
+ }
+ }
+
+ &[dir="rtl"] {
+ direction: rtl;
+ text-align: justify;
+
+ p, a, span, b, ul, li, em, h1, h2, h3, h4, h5, h6, strong {
+ direction: rtl;
+ text-align: right;
+ }
+ }
+ }
+
+ p {
+ line-height: 1.6em;
+ }
+
+ //h1, h2, h3, h4, h5, h6 {
+ // line-height: 1.3em;
+ //}
+
+ li {
+ margin-bottom: 15px;
+ line-height: 1.6em;
+ }
+
+ ol {
+ list-style: decimal;
+ list-style-position: inside;
+ }
+
+ ul {
+ list-style: disc;
+ list-style-position: inside;
+ }
+
+ img {
+ max-width: 100%!important;
+ }
+}
diff --git a/assets/scss/_el_ui_rtl.scss b/assets/scss/_el_ui_rtl.scss
new file mode 100644
index 0000000..59f7681
--- /dev/null
+++ b/assets/scss/_el_ui_rtl.scss
@@ -0,0 +1,167 @@
+html:lang(fa) {
+
+ .text-area {
+ textarea {
+ height: 100px;
+ }
+ }
+
+ .el-popup-parent--hidden {
+ padding-right: 0 !important;
+ }
+
+ .el-tag .el-icon-close {
+ right: auto !important;
+ left: -5px !important;
+ }
+
+ .el-table .el-table__body-wrapper .el-table__row .is-left {
+ text-align: left !important;
+ }
+
+ .wrapper {
+ min-height: 100vh;
+ }
+
+ .el-form-item__label {
+ float: right !important;
+ text-align: right !important;
+ }
+
+ .el-form-item__content {
+ margin-left: 0 !important;
+ margin-right: 120px !important;
+ }
+
+ @media (max-width: 768px) {
+ .el-form-item__content {
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ }
+ }
+
+ .secondTitle {
+ margin-top: 50px;
+ }
+
+ .el-upload__input {
+ display: none !important;
+ }
+
+ .el-message-box__title, .el-message-box__message {
+ direction: rtl !important;
+ text-align: right !important;
+ }
+
+ .el-message-box__message {
+ padding-left: 12px !important;
+ padding-right: 36px !important;
+ }
+
+ .el-message-box__btns {
+ text-align: left !important;
+ }
+
+ .el-message-box__headerbtn {
+ right: auto !important;
+ left: 15px !important;
+ }
+
+ .el-message-box__btns button:nth-child(2) {
+ margin-left: 0 !important;
+ margin-right: 10px !important;
+ }
+
+ .el-message-box__status {
+ right: 0 !important;
+ }
+
+ .el-table td, .el-table th {
+ text-align: right !important;
+ }
+
+ .el-upload__input {
+ display: none !important;
+ }
+
+ .el-checkbox__label {
+ padding-left: 0 !important;
+ padding-right: 10px !important;
+ }
+
+ .el-message__icon {
+ margin-right: 0 !important;
+ margin-left: 10px !important;
+ }
+
+ .sidebar-subnav {
+ background: rgba(0, 0, 0, 0.05) !important;
+ }
+
+ .sidebar > .nav > li {
+ border-bottom: 1px solid #eee !important;
+ }
+
+ .brand-logo p {
+ margin-top: 6px !important;
+ }
+
+ .brand-logo-collapsed svg {
+ fill: #fff !important;
+ }
+
+ .nav-floating {
+ background: #fff !important;
+ }
+
+ .el-dialog__headerbtn {
+ right: auto !important;
+ left: 20px !important;
+ }
+
+ .el-radio__label {
+ padding-right: 10px !important;
+ }
+
+ .el-scrollbar__wrap {
+ margin-right: 0 !important;
+ margin-left: -17px !important;
+ }
+}
+
+
+.el-input-number__decrease{
+ height: 95%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ @extend %defaultTransition;
+ &:hover{
+ background: $red;
+ color: $themeReverse;
+ }
+}
+
+.el-input-number__increase{
+ height: 95%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ @extend %defaultTransition;
+ &:hover{
+ background: $red;
+ color: $themeReverse;
+ }
+}
+
+.el-input--medium .el-input__inner{
+ font-family: 'dubaiM', sans-serif;
+}
+
+.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled), .el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){
+ border-color: rgba(255, 0, 0, 0);
+}
+
+// .home-Page .row {
+// --bs-gutter-x: 0;
+// }
\ No newline at end of file
diff --git a/assets/scss/_extentions.scss b/assets/scss/_extentions.scss
new file mode 100644
index 0000000..9ea023d
--- /dev/null
+++ b/assets/scss/_extentions.scss
@@ -0,0 +1,41 @@
+%defaultTransition {
+ @include transition(0.3s);
+}
+
+%userSelect {
+ user-select: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+
+%appearance {
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+}
+
+%defaultBoxShadow {
+ @include boxShadow(0 5px 8px rgba(0, 0, 0, 0.2))
+}
+
+%formStyles {
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ direction: rtl;
+ font-family: 'sahel';
+ border: 1px solid transparent;
+ background: #fff;
+ @include borderRadius(2px);
+}
+
+%maxHeightText {
+ display: block;
+ text-overflow: ellipsis;
+ word-wrap: break-word;
+ overflow: hidden;
+
+ //line-height: 1.2em;
+}
+
diff --git a/assets/scss/_fonts.scss b/assets/scss/_fonts.scss
new file mode 100644
index 0000000..0666914
--- /dev/null
+++ b/assets/scss/_fonts.scss
@@ -0,0 +1,51 @@
+////////////////////////////////////////// dubai
+
+// dubai-light
+@font-face {
+ font-family: "dubaiL";
+ src: url("/fonts/dubai-font-webfonts/light/Dubai-Light.eot?#iefix") format("embedded-opentype"),
+ url("/fonts/dubai-font-webfonts/light/Dubai-Light.woff") format("woff"),
+ url("/fonts/dubai-font-webfonts/light/Dubai-Light.ttf") format("truetype");
+}
+
+// dubai-medium
+@font-face {
+ font-family: "dubaiM";
+ src: url("/fonts/dubai-font-webfonts/medium/Dubai-Medium.eot?#iefix") format("embedded-opentype"),
+ url("/fonts/dubai-font-webfonts/medium/Dubai-Medium.woff") format("woff"),
+ url("/fonts/dubai-font-webfonts/medium/Dubai-Medium.ttf") format("truetype");
+}
+
+///////////////////////////////////////////////////////////// Geometria
+
+// geometria
+@font-face {
+ font-family: "geometria";
+ src: url("/fonts/geometria-webfonts/Geometria.woff") format("woff");
+}
+
+// geometria-bold
+@font-face {
+ font-family: "geometriaBold";
+ src: url("/fonts/geometria-webfonts/Geometria-Bold.woff") format("woff");
+}
+
+// geometria-extra-bold
+@font-face {
+ font-family: "geometriaExtraBold";
+ src: url("/fonts/geometria-webfonts/Geometria-ExtraBold.woff") format("woff");
+}
+
+// geometria-Medium
+@font-face {
+ font-family: "geometriaMedium";
+ src: url("/fonts/geometria-webfonts/Geometria-Medium.woff") format("woff");
+}
+
+///////////////////////////////////////////////////////////// Silka
+
+// silka bold
+@font-face {
+ font-family: "silkaBold";
+ src: url("/fonts/silka-webfont/silka-semibold-webfont.ttf") format("woff");
+}
diff --git a/assets/scss/_globalStyles.scss b/assets/scss/_globalStyles.scss
new file mode 100644
index 0000000..caf4c79
--- /dev/null
+++ b/assets/scss/_globalStyles.scss
@@ -0,0 +1,1185 @@
+body {
+ //overflow-x: hidden;
+ &:lang(fa) {
+ // font-family: "sahelR";
+ direction: rtl;
+ text-align: right;
+ }
+}
+
+h1,
+h2 {
+ font-family: 'geometriaExtraBold', sans-serif;
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ font-weight: bold;
+ }
+
+ text-transform: capitalize;
+ line-height: 1.6em;
+}
+
+h3,
+h4,
+h5,
+h6 {
+ font-family: 'geometriaBold', sans-serif;
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+
+ text-transform: capitalize;
+ line-height: 1.6em;
+}
+
+ul {
+ li {
+ &:lang(fa) {
+ font-family: 'dubaiL', sans-serif;
+ }
+
+ line-height: 1.3em;
+ font-family: 'geometria', sans-serif;
+ }
+}
+
+.notFound {
+ color: #333333;
+ text-align: center;
+}
+
+.notFound1 {
+ color: $themeReverse;
+ text-align: center;
+}
+
+.el-table {
+ .cell {
+ word-break: unset !important;
+ font-family: 'geometria', sans-serif !important;
+
+ &:lang(fa) {
+ font-family: 'dubaiL', sans-serif !important;
+ }
+ }
+}
+
+pre {
+ width: 100%;
+ padding: 25px;
+ background: #000;
+ color: greenyellow;
+ direction: ltr;
+ text-align: left;
+}
+
+input,
+textarea {
+ font-family: 'geometria', sans-serif;
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+}
+
+.parallax {
+ height: 100%;
+ position: static;
+}
+
+.page {
+ min-height: calc(100vh - 100px);
+}
+
+.section {
+ padding: 50px 0;
+}
+
+///////// font sizes
+.bigTitle {
+ font-size: $bigTitle !important;
+}
+
+.h1 {
+ font-size: $h1 !important;
+}
+
+.h2 {
+ font-size: $h2 !important;
+}
+
+.h3 {
+ font-size: $h3 !important;
+}
+
+.h4 {
+ font-size: $h4 !important;
+}
+
+.h5 {
+ font-size: $h5 !important;
+}
+
+.h6 {
+ font-size: $h6 !important;
+}
+
+.span {
+ font-size: $span !important;
+}
+
+//.col-1,
+//.col-2,
+//.col-3,
+//.col-4,
+//.col-5,
+//.col-6,
+//.col-12 {
+// padding-left: 0 !important;
+// padding-right: 0 !important;
+//}
+
+.paddingZero {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+}
+
+p,
+span {
+ font-family: 'geometria', sans-serif;
+ line-height: 1.6em;
+ //text-transform: capitalize;
+ color: #4d4d4d;
+ font-size: 14px;
+ // text-align: justify;
+
+ &:lang(fa) {
+ font-family: 'dubaiL', sans-serif;
+ font-size: 16px;
+ @media (min-width: 768px) {
+ text-align: justify;
+ }
+ }
+}
+
+//span {
+// font-size: smaller;
+//}
+
+a {
+ font-family: 'geometria', sans-serif;
+ color: $themeTxtColorWhite;
+ text-decoration: none;
+ font-size: 14px;
+
+ &:lang(fa) {
+ font-family: 'dubaiL', sans-serif;
+ font-size: 16px;
+ }
+}
+
+b {
+ font-family: 'geometria', sans-serif;
+
+ &:lang(fa) {
+ font-family: 'dubaiL', sans-serif;
+ }
+}
+
+* {
+ outline: none;
+
+ &:lang(fa) {
+ direction: rtl;
+ }
+}
+
+.header {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 5;
+ top: 9px;
+
+ @media (max-width: 992px) {
+ top: 50px;
+ }
+ //@media(max-width: 800px) {
+ // top: 70px;
+ //}
+
+ //@media (min-width: 992px) and (max-width: 1100px) {
+ // top: 15px;
+ //}
+}
+
+//._header{
+// position: fixed;
+// right: 0;
+// left: 0;
+// z-index: 5;
+// top: 44px;
+// @media (max-width: 800px) {
+// top: 70px;
+// }
+//}
+
+//.__header {
+// position: fixed;
+// right: 0;
+// left: 0;
+// z-index: 5;
+// top: 9px;
+// //@media (min-width: 992px) and (max-width: 1100px) {
+// // top: -20px;
+// //}
+//}
+
+.pagination {
+ background-color: #fbfbfb !important;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+
+ .el-pagination {
+ background-color: rgba(#000000, 0.4);
+ direction: ltr !important;
+ @include boxShadow(0 4px 8px rgba(#000, 0.2));
+
+ .el-pager {
+ background-color: transparent !important;
+ direction: ltr !important;
+
+ li {
+ background-color: transparent !important;
+ color: $themeReverse !important;
+ }
+
+ .number:hover {
+ color: $red !important;
+ }
+
+ .active {
+ color: $red !important;
+ }
+ }
+
+ .btn-prev,
+ .btn-next {
+ background-color: transparent;
+
+ .el-icon {
+ color: $themeReverse !important;
+ }
+
+ &:hover {
+ color: $red !important;
+ }
+ }
+ }
+}
+
+.site--header {
+ padding: 5px 30px;
+ position: relative;
+ top: -9px;
+
+ @media (min-width: 992px) {
+ background: rgba(#fff, 0.9);
+ }
+
+ //@media (min-width: 992px) and (max-width: 1100px) {
+ // padding: 20px 20px;
+ //}
+
+ //&:before {
+ // content: '';
+ // display: block;
+ // width: 100%;
+ // height: 140%;
+ // position: absolute;
+ // top: -9px;
+ // left: 0;
+ // z-index: -1;
+ // //background: linear-gradient(to bottom, rgba(#000, 0.7), rgba(#000, 0) 90%);
+ // background: rgba(#fff, 0.8);
+ // //background: rgba(#000, 0.9);
+ // opacity: 0;
+ // @extend %defaultTransition;
+ //
+ // @media (max-width: 992px) {
+ // display: none;
+ // }
+ //}
+
+ &.hasBG {
+ &:before {
+ opacity: 1;
+ }
+ }
+
+ .main-nav {
+ .searchBtns {
+ i {
+ display: block;
+ width: 36px;
+ height: 26px;
+ padding: 5px 5px;
+ color: $theme;
+ }
+ }
+
+ .searchBox {
+ background: rgba($themeReverse, 0.9);
+ width: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+ opacity: 0;
+ @extend %defaultTransition;
+
+ &.active-search {
+ top: 101%;
+ opacity: 1;
+ z-index: 1;
+
+ .searchInput {
+ padding: 10px 0;
+
+ input {
+ //border-top-color: rgba(#fff, 0.5);
+ font-size: 20px;
+ font-family: 'dubaiL', sans-serif;
+ padding: 5px;
+
+ &:lang(en) {
+ font-family: 'geometria', sans-serif;
+ }
+ }
+ }
+ }
+
+ .searchInput {
+ overflow: hidden;
+ position: relative;
+ padding: 0;
+
+ input {
+ width: 100%;
+ @extend %appearance;
+ //border: none;
+ background: transparent;
+ border: 1px solid $theme;
+ padding: 2px 8px;
+ color: #000;
+ @include borderRadius(5px);
+ @include boxSizing(border-box);
+ @extend %defaultTransition;
+
+ &::placeholder {
+ opacity: 0.8;
+ font-size: 16px;
+ color: $theme;
+ }
+ }
+
+ a,
+ button {
+ @extend %defaultTransition;
+ @extend %appearance;
+ background: transparent;
+ position: absolute;
+ top: 50%;
+ left: 3px;
+ padding: 3px 16px;
+ @include transform(translateY(-50%));
+ @include borderRadius(5px);
+ cursor: pointer;
+ border: 1px solid #000;
+
+ i {
+ font-size: 18px;
+ color: $theme;
+ @extend %defaultTransition;
+ }
+
+ &:hover {
+ background: $red;
+ border-color: $red;
+
+ i {
+ color: $themeReverse;
+ }
+ }
+ }
+ }
+ }
+
+ nav {
+ ul {
+ display: flex;
+ align-items: center;
+
+ li {
+ margin: 0 10px;
+
+ &.active-link {
+ a {
+ color: $red;
+ }
+ }
+
+ &:first-child {
+ margin-left: 0;
+ margin-right: 25px;
+
+ &:lang(fa) {
+ margin-left: 25px;
+ margin-right: 0;
+ }
+ }
+
+ a {
+ padding: 5px;
+ color: $theme;
+ @extend %defaultTransition;
+ font-size: 16px;
+ font-family: 'dubaiM', sans-serif;
+
+ &:lang(en) {
+ font-size: 14px;
+ font-family: 'geometria', sans-serif;
+ }
+
+ &:hover {
+ color: $red;
+ }
+
+ img {
+ width: 80px;
+ }
+ }
+ }
+ }
+ }
+
+ .btn-header {
+ display: inline-block;
+ background-color: transparent;
+ border: 0.5px solid $theme;
+ color: $theme;
+ border-radius: 3px;
+ padding: 5px 10px;
+ @extend %defaultTransition;
+ cursor: pointer;
+ font-size: 16px;
+ font-family: 'dubaiM', sans-serif;
+
+ &:lang(en) {
+ font-size: 14px;
+ font-family: 'geometria', sans-serif;
+ }
+
+ &.contact {
+ text-align: center;
+ //width: 100px;
+
+ @media (max-width: 1120px) {
+ font-size: 16px;
+ }
+ }
+
+ &.lang {
+ margin: 0 10px;
+ @media (max-width: 1120px) {
+ font-size: 16px;
+ }
+ }
+
+ &:hover {
+ background-color: $red;
+ color: $themeReverse;
+ border-color: $red;
+ }
+ }
+
+ .icon-menu-open {
+ // padding: 20px;
+ margin: 0 -30px;
+ //background-color: $themeTransparent;
+ border: none;
+ cursor: pointer;
+ background: linear-gradient(to bottom, rgba(#000, 0.7), rgba(#000, 0.2));
+ padding: 8px;
+ border-radius: 5px;
+
+ i {
+ color: $themeReverse;
+ }
+ }
+ }
+
+ a {
+ color: $themeTxtColorBlack;
+ }
+}
+
+.site--header--drawer {
+ display: block;
+ background-color: #f4f4f4;
+ height: 100vh;
+ position: fixed;
+ left: -100%;
+ top: 0;
+ width: 250px;
+
+ &:lang(fa) {
+ left: auto;
+ right: -100%;
+ }
+
+ @extend %defaultTransition;
+
+ &.isOpen {
+ left: 0;
+
+ &:lang(fa) {
+ left: auto;
+ right: 0;
+ }
+ }
+
+ .headerDrawer {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 30px;
+ background: linear-gradient(rgba(122, 122, 122, 0), rgba(126, 125, 125, 0)), url('/img/GalleryPage/page-title.png');
+ height: 100px;
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: cover;
+ padding: 10px;
+
+ img {
+ width: auto;
+ height: 40px;
+ }
+
+ .icon-menu-close {
+ background-color: $themeTransparent;
+ border: none;
+
+ i {
+ color: $themeReverse;
+ }
+ }
+ }
+
+ .drawer-body {
+ display: flex;
+ //justify-content: space-between;
+ flex-direction: column;
+ height: 80vh;
+
+ ul {
+ // display: flex;
+ // flex-direction: column;
+ padding: 0 10px;
+
+ li {
+ margin: 35px 0;
+
+ .active-link {
+ color: $red !important;
+ }
+
+ &:first-child {
+ margin: 0 !important;
+ }
+
+ .li-link {
+ color: #4d4d4d;
+
+ //border-bottom: 2px solid rgb(97, 97, 97);
+ }
+
+ i {
+ margin-right: 15px;
+ }
+ }
+ }
+
+ .btn-drawer {
+ margin: 0 5px;
+
+ .li-link-btn {
+ display: block;
+ color: #4d4d4d;
+ @extend %defaultTransition;
+
+ &.btn-contact-drawer {
+ background-color: $themeTransparent;
+ border: 0.5px solid #4d4d4d;
+ border-radius: 3px;
+ padding: 5px 10px;
+ font-size: 16px;
+ @include transition(background-color 0.3s, color 0.3s);
+ cursor: pointer;
+ text-align: center;
+ width: 100%;
+
+ &:lang(en) {
+ font-size: 14px;
+ }
+
+ &:hover {
+ background-color: #333;
+ color: $themeReverse;
+ }
+ }
+ }
+
+ .searchBox {
+ width: 100%;
+ margin-top: 10px;
+ //position: absolute;
+
+ .searchInput {
+ overflow: hidden;
+ //position: relative;
+ padding: 0;
+
+ input {
+ width: 100%;
+ @extend %appearance;
+ border: none;
+ background: #fff;
+ color: #000;
+ @include borderRadius(5px);
+ @include boxSizing(border-box);
+ @extend %defaultTransition;
+ border-top-color: rgba(#fff, 0.5);
+ font-size: 20px;
+ font-family: 'dubaiL', sans-serif;
+ padding: 5px;
+
+ &:lang(en) {
+ font-family: 'geometria', sans-serif;
+ }
+
+ &::placeholder {
+ opacity: 0.8;
+ font-size: 16px;
+ }
+ }
+
+ button {
+ @extend %defaultTransition;
+ @extend %appearance;
+ background: #000;
+ //position: absolute;
+ //top: 50%;
+ //left: 3px;
+ padding: 3px 16px;
+ //@include transform(translateY(-50%));
+ @include borderRadius(5px);
+ cursor: pointer;
+ border: 1px solid #000;
+ margin-top: 10px;
+ width: 100%;
+
+ i {
+ font-size: 18px;
+ color: #fff;
+ @extend %defaultTransition;
+ }
+
+ &:hover {
+ background: transparent;
+ border-color: $red;
+
+ i {
+ color: $red;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//.drawer{
+// margin-top: 63px;
+// @media (min-width: 800px) {
+// margin-top: 35px;
+// }
+//}
+
+.btn {
+ display: inline-block;
+ padding: 8px 16px;
+ border: 1px solid transparent;
+ @extend %defaultTransition;
+
+ &.btn-primary {
+ color: $themeTxtColorWhite;
+ // font-family: "iranYekanR", sans-serif;
+ background-color: $theme;
+ border-color: $theme;
+
+ &:hover {
+ color: $themeTxtColorBlack;
+ background-color: $themeReverse;
+ }
+ }
+
+ &.btn-default {
+ color: $theme;
+ // font-family: "iranYekanR", sans-serif;
+ background-color: transparent;
+ border-color: $theme;
+ border-radius: 5px;
+
+ &:hover {
+ color: $themeReverse;
+ background-color: $red;
+ border-color: $red;
+ }
+ }
+
+ &.form-btn {
+ $btnColor: #fff;
+ $btnHoverColor: $red;
+ $angelLength: 20px;
+ background-color: transparent !important;
+ border: none;
+ position: relative;
+ padding: 0 !important;
+ @extend %defaultTransition;
+
+ &:hover {
+ &::before {
+ height: 100%;
+ background: $btnHoverColor;
+ }
+
+ &::after {
+ height: 100%;
+ background: $btnHoverColor;
+ }
+
+ button {
+ &::before {
+ width: 100%;
+ background: $btnHoverColor;
+ }
+
+ &::after {
+ width: 100%;
+ background: $btnHoverColor;
+ }
+ }
+ }
+
+ &::before {
+ content: '';
+ display: block;
+ height: $angelLength;
+ width: 1px;
+ background: $btnColor;
+ position: absolute;
+ top: 0;
+ left: 0;
+ @extend %defaultTransition;
+ }
+
+ &::after {
+ content: '';
+ display: block;
+ height: $angelLength;
+ width: 1px;
+ background: $btnColor;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ @extend %defaultTransition;
+ }
+
+ button {
+ color: $btnColor;
+ padding: 8px 16px;
+ background-color: transparent;
+ border: none;
+ cursor: pointer !important;
+ font-family: 'geometria', sans-serif;
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+
+ &:hover {
+ color: $btnHoverColor;
+ }
+
+ &::before {
+ content: '';
+ display: block;
+ width: $angelLength;
+ height: 1px;
+ background: $btnColor;
+ position: absolute;
+ top: 0;
+ left: 0;
+ @extend %defaultTransition;
+ }
+
+ &::after {
+ content: '';
+ display: block;
+ width: $angelLength;
+ height: 1px;
+ background: $btnColor;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ @extend %defaultTransition;
+ }
+ }
+ }
+}
+
+.stroked-text {
+ overflow: initial;
+ height: 10px;
+ text-align: center;
+ direction: ltr;
+
+ #textStroke {
+ direction: ltr;
+
+ #spanStroke {
+ direction: ltr;
+
+ font-family: 'silkaBold', sans-serif;
+ font-size: 80px;
+ fill: none;
+ stroke: $themeReverse;
+ }
+
+ #spanStroke1 {
+ direction: ltr;
+
+ fill: $themeReverse;
+ font-size: $h3;
+ //font-weight: bold;
+ font-family: 'geometriaBold', sans-serif;
+ //top: -23px;
+ //left: 145px;
+ //&:lang(fa) {
+ // top: -25px;
+ //}
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+ }
+ }
+}
+
+.sl-wrapper {
+ direction: ltr !important;
+
+ * {
+ direction: ltr !important;
+ }
+
+ &:lang(fa) {
+ direction: ltr !important;
+ }
+}
+
+/*-------------------------------- Footer -----------------------------------*/
+.footer-BG {
+ background-color: #ffffff;
+ padding: 10px 0;
+ @include boxShadow(0 4px 10px rgba(#000, 0.1));
+
+ .footer-body {
+ .logoFooter {
+ margin-bottom: 10px;
+ @media (max-width: 768px) {
+ & {
+ align-items: center;
+ }
+ }
+ }
+
+ .textCenter {
+ display: flex;
+ align-items: center;
+ margin-bottom: 10px;
+ justify-content: center;
+
+ a {
+ font-family: 'geometria', sans-serif;
+ color: $theme;
+ @media (max-width: 768px) {
+ font-size: 16px;
+ margin: 10px 0;
+ }
+
+ @extend %defaultTransition;
+
+ &:hover {
+ color: $red;
+ }
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+ }
+
+ i {
+ color: $red;
+ font-size: 10px;
+ margin: 0 20px;
+ }
+ }
+
+ .phone-footer {
+ display: inline-flex;
+ align-items: center;
+ justify-content: flex-end;
+
+ @media (max-width: 768px) {
+ & {
+ justify-content: center;
+ }
+ }
+
+ .phoneNum {
+ color: $theme;
+ text-decoration: underline;
+ text-decoration-thickness: 2px;
+ text-underline-position: under;
+ text-decoration-color: $red;
+ // text-align: center;
+ // margin-bottom: 80px;
+ @extend %defaultTransition;
+
+ &:hover {
+ @extend %defaultTransition;
+ color: $red;
+ text-decoration-color: $theme;
+ }
+ }
+
+ i {
+ color: $red;
+ font-size: 15px;
+ margin-left: 10px;
+ transform: rotateZ(260deg);
+ @extend %defaultTransition;
+
+ &:lang(en) {
+ margin-left: 0;
+ margin-right: 10px;
+ transform: rotateZ(0);
+ }
+ }
+ }
+
+ img {
+ width: 20%;
+ }
+
+ .negareh {
+ @extend %defaultTransition;
+ margin-top: 10px;
+ color: $theme;
+
+ &:hover {
+ color: #f8b21c;
+ @extend %defaultTransition;
+ }
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+ }
+
+ p {
+ color: $theme;
+ font-family: 'geometria', sans-serif;
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+ }
+
+ span {
+ color: $red;
+ font-family: 'geometria', sans-serif;
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+ }
+ }
+}
+
+// ////////////////////////////////////////////// preloader
+.preLoader {
+ width: 100%;
+ height: 100vh;
+ background: #ffffff;
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 100;
+
+ .txtBox {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ @include transform(translate(-50%, -50%));
+
+ svg {
+ opacity: 0;
+ width: 200px;
+
+ .outer-circle-line {
+ stroke: #ffffff;
+ fill: #ffffff;
+ }
+
+ .st0 {
+ fill: none;
+ stroke: #000000;
+ stroke-width: 8;
+ stroke-miterlimit: 10;
+ }
+
+ .st1 {
+ fill: #000000;
+ }
+
+ .inner-circle {
+ stroke: $red;
+ stroke-width: 9;
+ }
+ }
+ }
+}
+
+// ////////////////////////////////////////////// pageLoader
+.pageLoad {
+ width: 100%;
+ height: 100vh;
+ background: #fff;
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 9;
+ display: none;
+
+ .imgBox {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ @include transform(translate(-50%, -50%));
+ }
+}
+
+// ////////////////////////////////////////////// calculation module
+.calculation-module {
+ .col-12 {
+ justify-content: center;
+ align-items: center;
+ display: flex;
+ flex-direction: column;
+
+ p {
+ margin-bottom: 5px;
+ text-align: right;
+ font-family: 'dubaiM', sans-serif;
+ font-size: 13px;
+ margin-top: 5px;
+ }
+ }
+
+ .el-checkbox__inner:hover {
+ border-color: $red;
+ }
+
+ .el-checkbox__input.is-checked .el-checkbox__inner,
+ .el-checkbox__input.is-indeterminate .el-checkbox__inner {
+ background-color: $red;
+ border-color: $red;
+ }
+
+ .el-checkbox__input.is-checked + .el-checkbox__label {
+ color: $red;
+ }
+
+ .el-checkbox {
+ &.small {
+ .el-checkbox__label {
+ font-size: 12px;
+ }
+ }
+ }
+
+ .cal-btn {
+ max-width: 120px;
+ text-align: center;
+ margin: auto;
+ border-color: $red;
+ background-color: $red;
+ transition: 0.3s;
+ color: #fff;
+ cursor: pointer;
+ font-family: 'dubaiL', sans-serif;
+
+ &:hover {
+ background-color: #f1f1f1;
+ color: $red;
+ }
+ }
+
+ &.white {
+ p,
+ span,
+ b {
+ color: #fff;
+ }
+
+ .el-input-number {
+ .el-input-number__increase,
+ .el-input-number__decrease {
+ i {
+ color: #000;
+ }
+
+ &:hover {
+ i {
+ color: #fff;
+ }
+ }
+ }
+ }
+ }
+}
+
+// ////////////////////////////////////////////// pwa footer
+.pwa-footer {
+ background: #000;
+
+ span {
+ color: #fff;
+ }
+}
diff --git a/assets/scss/_mixins.scss b/assets/scss/_mixins.scss
new file mode 100644
index 0000000..4459891
--- /dev/null
+++ b/assets/scss/_mixins.scss
@@ -0,0 +1,45 @@
+@mixin transform($p...) {
+ transform: $p;
+ -webkit-transform: $p;
+ -moz-transform: $p;
+ -ms-transform: $p;
+ -o-transform: $p;
+}
+
+@mixin transition($p...) {
+ transition: $p;
+ -webkit-transition: $p;
+ -moz-transition: $p;
+ -ms-transition: $p;
+ -o-transition: $p;
+}
+
+@mixin boxSizing($p) {
+ box-sizing: $p;
+ -webkit-box-sizing: $p;
+ -moz-box-sizing: $p;
+}
+
+@mixin filter($p...) {
+ filter: $p;
+ -ms-filter: $p;
+}
+
+@mixin boxShadow($p) {
+ box-shadow: $p;
+ -webkit-box-shadow: $p;
+ -moz-box-shadow: $p;
+}
+
+@mixin borderRadius($p) {
+ border-radius: $p;
+ -webkit-border-radius: $p;
+ -moz-border-radius: $p;
+}
+
+@mixin animation($p) {
+ animation: $p;
+ -webkit-animation: $p;
+ -o-animation: $p;
+}
+
diff --git a/assets/scss/_pages.scss b/assets/scss/_pages.scss
new file mode 100644
index 0000000..176bcf5
--- /dev/null
+++ b/assets/scss/_pages.scss
@@ -0,0 +1,4975 @@
+///////////////////////////// error page
+.error--page {
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+
+ h1 {
+ font-family: sans-serif;
+ font-size: 60px;
+ }
+
+ p {
+ text-transform: uppercase;
+ font-family: sans-serif;
+ font-size: 14px;
+ margin-top: -20px;
+ }
+
+ a {
+ margin-top: 20px;
+ font-family: 'sahel', sans-serif;
+ }
+}
+
+//------------------------------- Home Page --------------------------------
+.home-Page {
+ background-color: #000000;
+
+ /*-------------------------------- Breaking News-----------------------------------*/
+ .breaking-news {
+ //height: 4vh;
+ //background-color: #f4f4f4;
+ padding: 5px 0;
+ background-color: rgba(#000, 0.7);
+
+ #newsSlider {
+ padding: 0 20px;
+
+ .slide {
+ .news-link {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ @media (max-width: 800px) {
+ display: block;
+ align-items: center;
+ }
+
+ span {
+ color: #fff;
+ margin: 0 10px;
+ @extend %defaultTransition;
+ @media (max-width: 800px) {
+ text-align: center;
+ display: none;
+ }
+ }
+
+ h4 {
+ color: #fff;
+ @extend %defaultTransition;
+ @media (max-width: 800px) {
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ }
+
+ p {
+ color: #fff;
+ white-space: nowrap;
+ max-width: 500px;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ @extend %defaultTransition;
+
+ @media (max-width: 800px) {
+ text-align: center;
+ max-width: 100%;
+ }
+ }
+
+ &:hover {
+ h4 {
+ color: $red;
+ }
+
+ p {
+ color: $red;
+ }
+
+ span {
+ color: $red;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ ._breaking-news {
+ overflow: hidden;
+ position: fixed;
+ top: 57.5px;
+ right: 0;
+ left: 0;
+ z-index: 4;
+
+ @media (max-width: 992px) {
+ top: 0;
+ }
+ }
+
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ height: 94vh;
+ overflow: hidden;
+
+ .parallax {
+ margin-top: -22px;
+
+ #homeSlider {
+ //height: 100vh;
+
+ .slick-list {
+ height: 100%;
+
+ img {
+ width: 100%;
+ height: 100vh;
+ object-fit: cover;
+ background: rgba(0, 0, 0, 0.5);
+ }
+
+ .bg {
+ display: flex;
+ width: 100%;
+ height: 100vh;
+ object-fit: cover;
+ //position: absolute;
+ //top: 0;
+ //left: 0;
+ }
+ }
+ }
+
+ .container {
+ //max-width: 1250px !important;
+ .test {
+ width: 100%;
+ height: 100vh;
+ background: rgba(0, 0, 0, 0.2);
+ position: absolute;
+ left: 0;
+ top: 0;
+ }
+
+ .s1 {
+ padding-top: 11%;
+ position: absolute;
+ top: 0;
+ left: 8%;
+
+ &:lang(fa) {
+ padding-top: 30% !important;
+ right: 8%;
+ }
+
+ @media (max-width: 576px) {
+ padding-top: 40%;
+ }
+
+ .s1-Title {
+ font-size: 80px;
+ font-weight: bold;
+ color: rgba(#fff, 0.7);
+ text-transform: uppercase;
+ margin-bottom: 15px;
+
+ &:lang(fa) {
+ font-size: 40px;
+ }
+
+ @media (max-width: 576px) {
+ font-size: 40px;
+ line-height: 1.3em;
+ }
+ }
+
+ .s1-Desc {
+ font-size: 30px;
+ color: $themeReverse;
+ text-transform: capitalize;
+ width: 100%;
+ max-width: 450px;
+ margin-top: 40px;
+ line-height: 1.2em;
+
+ &:lang(fa) {
+ font-size: 20px !important;
+ margin-top: 0;
+ }
+
+ @media (max-width: 768px) {
+ max-width: 300px;
+ font-size: 25px !important;
+ }
+
+ @media (max-width: 576px) {
+ line-height: 1.2em;
+ }
+ }
+
+ .s1-Desc1 {
+ font-size: 25px;
+ color: $themeReverse;
+ text-transform: uppercase;
+ margin-top: 5px;
+
+ &:lang(fa) {
+ font-size: 15px !important;
+ }
+
+ b {
+ }
+
+ @media (max-width: 576px) {
+ font-size: 20px;
+ }
+ }
+ }
+
+ .s1-Down {
+ position: absolute;
+ bottom: 8px;
+ left: 10%;
+ display: inline-flex;
+
+ @media (max-width: 800px) {
+ bottom: 30px;
+ }
+
+ .s1-Down-Link {
+ @include transform(translateX(-2px));
+ @extend %defaultTransition;
+ cursor: pointer;
+ //text-decoration: underline;
+ //text-decoration-thickness: 3px;
+ //text-decoration-color: $themeReverse;
+
+ &:hover {
+ color: $red;
+ }
+ }
+ }
+ }
+ }
+
+ //@media (min-width: 576px) {
+ // height: 97vh;
+ //}
+ //@media (min-width: 768px) {
+ // height: 97vh;
+ //}
+ //@media (min-width: 992px) {
+ // height: 97vh;
+ //}
+ @media (max-height: 560px) {
+ height: 93vh;
+ }
+ @media (min-height: 757px) {
+ height: 94.5vh;
+ }
+ @media (min-height: 800px) {
+ height: 95.5vh;
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ background: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)),
+ url('/img/HomePage/Refinery.jpg') no-repeat center;
+ background-size: cover;
+ width: 100%;
+
+ .s2 {
+ .row {
+ .s2-desc-col {
+ padding: 30px !important;
+
+ p {
+ color: $themeReverse;
+ margin-top: 40px;
+ font-size: 15px;
+ }
+
+ h2 {
+ color: $red;
+ text-decoration: underline;
+ text-decoration-thickness: 2px;
+ text-underline-position: under;
+ font-size: 30px;
+ margin-bottom: 20px;
+ margin-top: 110px;
+ @media (max-width: 1170px) {
+ margin-top: 0;
+ }
+ }
+
+ @media (max-width: 992px) {
+ padding: 25px !important;
+ }
+
+ .staggerItemSeeBTN {
+ display: inline-block;
+ background-color: $themeTransparent;
+ border: 1px solid #4d4d4d;
+ border-radius: 3px;
+ padding: 10px 20px;
+ font-size: 16px;
+ @include transition(background-color 0.3s, color 0.3s);
+ @extend %defaultTransition;
+ cursor: pointer;
+ text-align: center;
+ margin-top: 40px;
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+
+ &:hover {
+ border: 1px solid $red;
+ color: $red;
+ @extend %defaultTransition;
+ }
+ }
+ }
+
+ .s2-img-col {
+ #slidesProjects {
+ .s2-item-activity {
+ display: flex !important;
+ align-items: stretch;
+
+ @media (min-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ a {
+ display: block;
+ width: 100%;
+ margin: 0 10px;
+
+ .s2-img {
+ width: 100%;
+ //height: 87%;
+ //object-fit: cover;
+ @include transition(0.3s);
+
+ &:hover {
+ @include transform(scale(1.01));
+ }
+ }
+
+ .title-img {
+ background-color: rgba($red, 0.7);
+ height: 100%;
+ padding: 20px;
+ text-align: center;
+
+ h4 {
+ color: $themeReverse;
+ font-size: 18px;
+ @media (max-width: 768px) {
+ font-size: 16px !important;
+ }
+ }
+
+ p {
+ font-size: 14px;
+ color: $themeReverse;
+ }
+ }
+ }
+ }
+
+ .slick-next {
+ font-size: 0;
+ line-height: 0;
+ position: absolute;
+ top: 50%;
+ display: block;
+ width: 80px;
+ height: 100%;
+ padding: 0;
+ transform: translate(-30%, -50%);
+ cursor: pointer;
+ color: transparent;
+ border: none;
+ outline: none;
+ background: transparent;
+ background: linear-gradient(to left, rgba(#000, 0.7), rgba(#000, 0) 90%);
+ z-index: 1;
+
+ @media (max-width: 992px) {
+ right: -12px;
+ }
+
+ &:lang(en) {
+ transform: translate(-61%, -50%);
+ }
+ }
+
+ .slick-prev {
+ font-size: 0;
+ line-height: 0;
+ position: absolute;
+ top: 50%;
+ display: block;
+ width: 80px;
+ height: 100%;
+ padding: 0;
+ transform: translate(50%, -50%);
+ cursor: pointer;
+ color: transparent;
+ border: none;
+ outline: none;
+ background: transparent;
+ background: linear-gradient(to right, rgba(#000, 0.7), rgba(#000, 0) 90%);
+ z-index: 1;
+
+ &:lang(en) {
+ transform: translate(31%, -50%);
+ }
+ }
+ }
+ }
+ }
+
+ #slidesProjects {
+ .s2-item-activity {
+ display: flex !important;
+ align-items: stretch;
+
+ @media (min-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ a {
+ display: block;
+ width: 100%;
+ @media (min-width: 540px) {
+ margin: 0 10px;
+ }
+
+ .s2-img {
+ width: 100%;
+ //height: 87%;
+ //object-fit: cover;
+ @include transition(0.3s);
+
+ &:hover {
+ @include transform(scale(1.01));
+ }
+ }
+
+ .title-img {
+ background-color: rgba($red, 0.7);
+ height: 100%;
+ padding: 20px;
+
+ text-align: center;
+
+ h4 {
+ color: $themeReverse;
+ font-size: 18px;
+ @media (max-width: 768px) {
+ font-size: 16px !important;
+ }
+ }
+
+ p {
+ font-size: 14px;
+ color: $themeReverse;
+ }
+ }
+ }
+ }
+
+ .slick-next {
+ right: 10px;
+ z-index: 100;
+ }
+
+ .slick-prev {
+ left: 10px;
+ z-index: 100;
+ }
+
+ //.slick-next {
+ // font-size: 0;
+ // line-height: 0;
+ // position: absolute;
+ // top: 50%;
+ // display: block;
+ // width: 80px;
+ // height: 100%;
+ // padding: 0;
+ // transform: translate(-30%, -50%);
+ // cursor: pointer;
+ // color: transparent;
+ // border: none;
+ // outline: none;
+ // background: transparent;
+ // background: linear-gradient(to left, rgba(#000, 0.7), rgba(#000, 0) 90%);
+ // z-index: 1;
+ //
+ // @media (max-width: 992px) {
+ // right: -12px;
+ // }
+ //
+ // &:lang(en) {
+ // transform: translate(-61%, -50%);
+ // }
+ //
+ //}
+ //
+ //.slick-prev {
+ // font-size: 0;
+ // line-height: 0;
+ // position: absolute;
+ // top: 50%;
+ // display: block;
+ // width: 80px;
+ // height: 100%;
+ // padding: 0;
+ // transform: translate(50%, -50%);
+ // cursor: pointer;
+ // color: transparent;
+ // border: none;
+ // outline: none;
+ // background: transparent;
+ // background: linear-gradient(to right, rgba(#000, 0.7), rgba(#000, 0) 90%);
+ // z-index: 1;
+ // left: -42px;
+ //
+ // &:lang(en) {
+ // transform: translate(31%, -50%);
+ // }
+ //}
+ }
+ }
+ }
+ }
+
+ /* -------------------------------- Section 3 -----------------------------------*/
+ .s3-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: 50vh;
+ background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),
+ url('/img/HomePage/Stainless.jpg') no-repeat center;
+ background-size: cover;
+ justify-content: center;
+ align-items: center;
+ display: flex;
+ //position: relative;
+ opacity: 1;
+ width: 100%;
+ position: static;
+
+ @media (max-width: 768px) {
+ & {
+ height: auto;
+ padding-bottom: 100px;
+ }
+ }
+
+ .container {
+ //max-width: 1195px !important;
+
+ .s3-Title {
+ font-size: 70px !important;
+ font-weight: bold;
+ color: rgba(#fff, 0.7);
+ text-transform: uppercase;
+ margin-top: 30px;
+
+ &:lang(fa) {
+ font-size: 30px !important;
+ }
+
+ @media (max-width: 576px) {
+ font-size: 40px !important;
+ }
+ }
+
+ .row {
+ div {
+ margin-top: 5%;
+
+ .num {
+ font-size: 70px !important;
+ color: $themeReverse;
+ }
+
+ a {
+ display: block;
+ height: 100%;
+
+ .s3-title-num {
+ color: $themeReverse;
+ font-size: 15px;
+ width: 100%;
+ max-width: 370px;
+ text-align: center;
+ border: 1px solid $themeReverse;
+ padding: 10px;
+ @include borderRadius(5px);
+ @extend %defaultTransition;
+ height: 100%;
+
+ &:hover {
+ color: $themeReverse !important;
+ background-color: $red;
+ border-color: $red;
+ }
+
+ &:lang(fa) {
+ font-size: 20px !important;
+ }
+
+ @media (max-width: 576px) {
+ font-size: 12px;
+ }
+
+ //&:first-child {
+ // color: $themeReverse;
+ // font-size: 25px;
+ // @media (max-width: 576px) {
+ // font-size: 40px;
+ // }
+ //}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 4 -----------------------------------*/
+ .s4-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: auto;
+ background: linear-gradient(rgba(112, 112, 112, 0.6), rgba(112, 112, 112, 0.6)),
+ url('/img/HomePage/Stainless.jpg') no-repeat center;
+ background-size: cover;
+ opacity: 1;
+
+ .s4-body {
+ margin-bottom: 10px;
+
+ .s4-title {
+ color: #000000;
+ text-align: center;
+ text-decoration: underline;
+ text-decoration-thickness: 2px;
+ text-underline-position: under;
+ text-decoration-color: $red;
+ margin-bottom: 50px;
+ font-size: 30px;
+
+ // margin-top: 30px;
+ }
+
+ .s4-project-post {
+ //padding: 0 25px !important;
+ //margin-top: 30px;
+ height: 100%;
+ position: relative;
+ padding-bottom: 40px;
+ padding-top: 5px;
+ background-color: #c8c8c8;
+ //margin: 0 10px;
+ @include boxShadow(0 4px 16px rgba(#000, 0.3));
+ border-radius: 5px;
+
+ h4 {
+ color: $red;
+ margin: 20px;
+ font-size: 20px;
+ }
+
+ .s4-img {
+ width: 100%;
+ }
+
+ h3 {
+ font-size: 20px;
+ margin: 10px;
+ }
+
+ p {
+ display: block !important;
+ margin: 0 10px 40px 10px;
+
+ font-size: 16px;
+ color: $theme;
+ }
+
+ a {
+ display: block !important;
+ color: #ed1d24;
+ font-size: 20px;
+ margin: 20px;
+ position: absolute;
+ bottom: 2px;
+ right: 0;
+
+ i {
+ font-size: 15px;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 5 -----------------------------------*/
+ .s5-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ // background-image: url("/img/Petro.jpg");
+ height: 100%;
+ background: $dimmer, url('/img/HomePage/testimonial.jpg') no-repeat center;
+ background-size: cover;
+ flex-direction: column;
+ // padding-top: 30px;
+ // padding-bottom: 30px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ #slides {
+ .slick-dots {
+ display: flex;
+ justify-content: center;
+ margin: 0;
+ //padding: 1rem 0;
+ list-style-type: none;
+
+ li {
+ margin: 0;
+ }
+
+ button {
+ display: flex;
+ width: 10px;
+ height: 10px;
+ padding: 0;
+
+ border: 1px solid $themeReverse;
+ border-radius: 100%;
+ background-color: transparent;
+
+ text-indent: -9999px;
+ }
+
+ li.slick-active button {
+ background-color: $themeReverse;
+ }
+ }
+
+ .slide {
+ width: 100%;
+ display: flex !important;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+
+ .content {
+ text-align: center;
+ background-color: transparent;
+ width: auto;
+ height: auto;
+
+ h2 {
+ color: $red;
+ text-decoration: underline;
+ text-decoration-thickness: 2px;
+ text-underline-position: under;
+ text-decoration-color: $themeReverse;
+ margin-bottom: 50px;
+ // text-align: center;
+ // margin-bottom: 80px;
+ font-size: 40px;
+ }
+
+ p {
+ width: 100%;
+ max-width: 600px;
+ color: $themeReverse;
+ text-align: center;
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+ }
+ }
+
+ .info {
+ display: flex !important;
+ justify-content: center;
+ flex-direction: row;
+ align-items: center;
+ width: 100%;
+ margin-bottom: 20px;
+
+ .imgBox {
+ padding: 10px;
+
+ img {
+ @include borderRadius(50%);
+ }
+ }
+
+ .txtBox {
+ padding: 10px;
+ display: block;
+
+ p {
+ display: block;
+ }
+ }
+ }
+
+ div {
+ // display: flex;
+ // align-items: center;
+ // justify-content: center;
+
+ .s4-user-img {
+ width: 50px;
+ }
+
+ div {
+ p {
+ color: $themeReverse;
+ // text-align: center;
+ font-size: 12px;
+
+ &:first-child {
+ color: $themeReverse;
+ // text-align: center;
+ font-size: 16px;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 6 -----------------------------------*/
+ .s6-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: auto;
+ background: linear-gradient(rgba(112, 112, 112, 0.6), rgba(112, 112, 112, 0.6)),
+ url('/img/HomePage/Stainless.jpg') no-repeat center;
+ background-size: cover;
+ overflow: hidden;
+
+ .s6-title {
+ margin-bottom: 30px;
+ flex-direction: column;
+ display: flex;
+ align-items: center;
+
+ .s6-Desc {
+ display: inline-flex;
+ // align-items: center;
+ i {
+ color: $red;
+ font-size: 10px;
+ margin: 5px;
+ }
+ }
+
+ h2 {
+ color: #000000;
+ text-align: center;
+ text-decoration: underline;
+ text-decoration-thickness: 2px;
+ text-underline-position: under;
+ text-decoration-color: $red;
+ margin-bottom: 20px;
+ }
+ }
+
+ .s6-imag-view {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ .s6-img {
+ width: 100%;
+ margin-top: 10px;
+ text-align: center;
+ @extend %defaultTransition;
+
+ @media (max-width: 575px) {
+ width: 100%;
+ max-width: 350px;
+ }
+
+ &:hover {
+ opacity: 0.8;
+ }
+ }
+
+ p {
+ margin-top: 20px;
+ margin-bottom: 30px;
+ text-align: justify;
+ width: 70%;
+ font-size: 16px;
+ }
+
+ a {
+ color: $red;
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 9 -----------------------------------*/
+ .s9-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: auto;
+ background-color: #f1f1f1;
+ overflow: hidden;
+
+ .s9 {
+ .s9-title {
+ margin-bottom: 30px;
+ flex-direction: column;
+ display: flex;
+ align-items: center;
+
+ .s9-Desc {
+ display: inline-flex;
+ // align-items: center;
+ i {
+ color: $red;
+ font-size: 10px;
+ margin: 5px;
+ }
+ }
+
+ h2 {
+ color: #000000;
+ text-align: center;
+ text-decoration: underline;
+ text-decoration-thickness: 2px;
+ text-underline-position: under;
+ text-decoration-color: $red;
+ margin-bottom: 20px;
+ }
+ }
+
+ .consents {
+ .slick-track {
+ padding: 35px 0;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ }
+
+ .slick-arrow {
+ &:before {
+ color: $themeSecond;
+ }
+
+ &:after {
+ color: $themeSecond;
+ }
+ }
+
+ .s9-imag-view {
+ a {
+ display: flex !important;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .s9-img {
+ width: 80%;
+ //margin-top: 10px;
+ text-align: center;
+ @extend %defaultTransition;
+ @include boxShadow(0 5px 20px rgba(#000, 0.7));
+
+ @media (max-width: 575px) {
+ width: 100%;
+ max-width: 350px;
+ }
+
+ &:hover {
+ opacity: 0.8;
+ }
+ }
+
+ p {
+ margin-top: 20px;
+ margin-bottom: 30px;
+ text-align: justify;
+ width: 70%;
+ font-size: 16px;
+ }
+
+ a {
+ color: $red;
+ }
+ }
+ }
+
+ .view-btn {
+ display: flex !important;
+ align-items: center;
+ justify-content: center;
+ margin-top: 20px;
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 10 -----------------------------------*/
+ .s10-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: auto;
+ background-color: #f1f1f1;
+ overflow: hidden;
+
+ // .row {
+ // --bs-gutter-x: 0;
+ // }
+
+ .s10-title {
+ margin-bottom: 30px;
+ flex-direction: column;
+ display: flex;
+ align-items: center;
+
+ .s9-Desc {
+ display: inline-flex;
+ // align-items: center;
+ i {
+ color: $red;
+ font-size: 10px;
+ margin: 5px;
+ }
+ }
+
+ h2 {
+ color: #000000;
+ text-align: center;
+ text-decoration: underline;
+ text-decoration-thickness: 2px;
+ text-underline-position: under;
+ text-decoration-color: $red;
+ margin-bottom: 20px;
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 7 -----------------------------------*/
+ .s7-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: 300px;
+ background: linear-gradient(rgba(112, 112, 112, 0.2), rgba(112, 112, 112, 0.2)),
+ url('/img/HomePage/CTA.jpg') no-repeat center;
+ background-size: cover;
+ padding-top: 30px;
+ padding-bottom: 30px;
+
+ .s7-body {
+ h2 {
+ text-align: center;
+ color: $red;
+ margin-bottom: 50px;
+ margin-top: 50px;
+ @media (max-width: 768px) {
+ margin-top: 10px;
+ font-size: 20px;
+ line-height: 1.3em;
+ }
+ }
+
+ div {
+ div {
+ h3 {
+ color: $themeReverse;
+ margin-bottom: 10px;
+ }
+
+ p {
+ color: $themeReverse;
+ font-size: 12px;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 8 -----------------------------------*/
+ .s8-Img-BG {
+ .parallax {
+ height: auto;
+ background: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)),
+ url('/img/HomePage/contacts.jpg') no-repeat center;
+ background-size: cover;
+ align-items: center;
+ @media (max-width: 768px) {
+ & {
+ height: 100%;
+ }
+ }
+
+ .s8-body {
+ .gallery {
+ @include transform(translateY(-90%));
+ @media (min-width: 360px) {
+ @include transform(translateY(-90%));
+ }
+ @media (min-width: 552px) {
+ @include transform(translateY(-87%));
+ }
+ @media (min-width: 768px) {
+ @include transform(translateY(-71%));
+ }
+ @media (min-width: 992px) {
+ @include transform(translateY(-66%));
+ }
+ @media (min-width: 1200px) {
+ @include transform(translateY(-70%));
+ }
+ @media (min-width: 1400px) {
+ @include transform(translateY(-67%));
+ }
+
+ .slick-prev {
+ @media (max-width: 576px) {
+ left: 12px;
+ z-index: 10;
+ top: 55%;
+ }
+ }
+
+ .slick-next {
+ @media (max-width: 576px) {
+ right: 12px;
+ z-index: 10;
+ top: 55%;
+ }
+ }
+
+ .gallery-item {
+ padding: 0 !important;
+ position: relative;
+ overflow: hidden;
+
+ @media (max-width: 768px) {
+ }
+
+ img {
+ width: 100%;
+ //@include transform(translateY(50%));
+ @media (max-width: 768px) {
+ height: 250px;
+ @include transform(translateY(0));
+ }
+ }
+
+ .txtBox {
+ width: 100%;
+ height: 100%;
+ background: rgba(#000000, 0.6);
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: flex;
+ justify-content: space-between;
+ flex-direction: column;
+
+ //@media (max-width: 768px) {
+ // padding: 50px 10px;
+ //}
+
+ ._txtBox {
+ background: rgba(#000000, 0.6);
+ padding: 20px;
+ height: 50%;
+ @media (max-width: 768px) {
+ background: transparent;
+ height: auto;
+ }
+ }
+
+ h3 {
+ margin-bottom: 10px;
+ color: $themeReverse;
+ }
+
+ p {
+ color: $themeReverse;
+
+ @media (max-width: 768px) {
+ & {
+ font-size: 10px;
+ }
+ }
+ }
+
+ span {
+ font-size: 12px;
+ @media (max-width: 768px) {
+ & {
+ font-size: 10px;
+ }
+ }
+ }
+
+ .s8-tel {
+ display: flex;
+ margin-top: auto;
+ flex-direction: column;
+ padding: 20px;
+ //justify-content: space-between;
+
+ //@media (max-width: 768px) {
+ // & {
+ // margin-top: 10px;
+ // }
+ //}
+
+ .s8-link {
+ margin-top: 10px;
+ font-size: 15px;
+ @extend %defaultTransition;
+
+ &:hover {
+ color: $red;
+ @extend %defaultTransition;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .s8-Title {
+ font-size: 30px;
+ color: $themeReverse;
+ text-transform: uppercase;
+ margin-top: -130px;
+
+ @media (max-width: 992px) {
+ font-size: 50px;
+ margin-top: -60px;
+ }
+
+ @media (max-width: 768px) {
+ font-size: 50px;
+ margin-top: -200px;
+ }
+ }
+
+ .row {
+ display: flex;
+ //justify-content: space-between;
+
+ div {
+ &.info {
+ justify-content: center;
+ flex-direction: column;
+ display: flex;
+
+ div {
+ display: inline-block;
+ margin: 10px 0;
+
+ b {
+ color: $themeReverse;
+ }
+
+ .s8-link-address {
+ display: inline-block;
+ color: $themeReverse;
+ margin: 5px 5px;
+ direction: ltr !important;
+ @extend %defaultTransition;
+
+ &:hover {
+ color: $red;
+ @extend %defaultTransition;
+ }
+
+ .h4 {
+ color: $themeReverse;
+ margin: 0 10px 0 0;
+ }
+ }
+ }
+ }
+
+ span {
+ color: $themeReverse;
+ font-size: 20px;
+ }
+
+ &.input-body {
+ flex-direction: column;
+ display: flex;
+ // width: 100%;
+ @media (max-width: 768px) {
+ & {
+ margin: 20px 0;
+ }
+ }
+
+ .btnSub {
+ display: flex;
+ justify-content: flex-end;
+ margin: 10px 0;
+ }
+
+ .input {
+ background-color: rgba(216, 216, 216, 0.5);
+ color: $themeReverse;
+ border: 0;
+ margin-top: 10px;
+ padding: 15px;
+ width: 100%;
+ @include boxSizing(border-box);
+
+ &::placeholder {
+ color: rgba(#000, 0.7);
+ }
+ }
+
+ span {
+ font-size: 18px;
+ }
+
+ textarea {
+ resize: vertical;
+ }
+
+ .err {
+ p {
+ margin-top: 3px;
+ color: $red;
+ }
+
+ input,
+ textarea {
+ border: 1px solid $red;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- About Page --------------------------------
+.about-page {
+ background-color: #000000;
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ //background: $dimmer, url("/img/AboutPage/page-title.png") no-repeat center;
+ background-position: center;
+ background-size: cover;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2-BG {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ .img {
+ img {
+ height: 100%;
+ width: 100%;
+ }
+
+ @media (min-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+ }
+
+ .descImg {
+ background-color: #f2f2f2;
+ padding: 0 50px !important;
+ @media (max-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ .descContainer {
+ padding-right: 50px;
+ padding-left: 50px;
+ @media (max-width: 768px) {
+ padding: 20px 0;
+ }
+ }
+
+ @media (min-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ .h2,
+ h6 {
+ //margin-top: 20px;
+ margin-bottom: 20px;
+ }
+
+ h6 {
+ margin-top: 20px;
+ color: #333333;
+ }
+
+ .description {
+ @extend %maxHeightText;
+ }
+
+ div {
+ .row {
+ .features {
+ display: flex;
+ //align-items: center;
+ margin: 0 0 30px 0;
+ flex-direction: row;
+ @media (max-width: 768px) {
+ & {
+ text-align: center;
+ }
+ }
+
+ @media (min-width: 769px) {
+ &:last-child {
+ margin-top: -20px;
+ }
+ }
+
+ i {
+ @include transform(translateY(6px));
+ color: #333;
+ }
+
+ p {
+ margin: 0 10px;
+ font-size: 15px;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 3 -----------------------------------*/
+ .s3-BG {
+ overflow: hidden;
+ background-color: #f2f2f2;
+
+ .parallax {
+ .row {
+ .s3-col1 {
+ padding: 50px !important;
+ background-color: #f2f2f2;
+ @media (max-width: 768px) {
+ padding: 30px 0 !important;
+ }
+
+ .h2 {
+ //margin-top: 40px;
+ margin-bottom: 20px;
+ }
+
+ .description {
+ @extend %maxHeightText;
+ //width: 100%;
+ //max-width: 70%;
+ //@media (max-width: 768px) {
+ // & {
+ // //margin: 10px;
+ // max-width: 100%;
+ // }
+ //}
+ }
+
+ a {
+ color: $red;
+ border: 1px solid $red;
+ border-radius: 4px;
+ padding: 10px 20px;
+ margin: 40px 0 0 0;
+ display: inline-block;
+ @extend %defaultTransition;
+
+ &:hover {
+ color: $themeReverse;
+ border: 1px solid $themeReverse;
+ background-color: $red;
+ @extend %defaultTransition;
+ }
+ }
+ }
+
+ .s3-col2 {
+ background-color: #000;
+ padding-right: 50px;
+ padding-left: 50px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ @media (max-width: 768px) {
+ padding: 30px 0 !important;
+ }
+
+ .features-body {
+ flex-direction: column;
+ display: flex;
+ justify-content: space-between;
+
+ .features {
+ display: flex;
+ margin: 30px 0;
+ //&:first-child{
+ // margin-top: 0;
+ //}
+ flex-direction: row;
+ align-items: center;
+
+ img {
+ margin-right: 15px;
+ //margin: 0 10px;
+ &:lang(fa) {
+ margin-left: 15px;
+ margin-right: 0;
+ }
+ }
+
+ h6 {
+ color: $themeReverse;
+ font-size: 16px !important;
+ }
+
+ span {
+ color: #cccccc;
+ @extend %maxHeightText;
+ font-size: $span;
+ width: 100%;
+ margin-top: 5px;
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 4 -----------------------------------*/
+ .s4-BG {
+ overflow: hidden;
+
+ .parallax {
+ background-color: #fff;
+
+ .s4-col1 {
+ //padding: 80px !important;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+
+ .h2 {
+ }
+
+ span {
+ @extend %maxHeightText;
+ margin: 20px 0;
+ width: 100%;
+ max-width: 70%;
+ font-size: 16px;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+ }
+ }
+
+ .s4-col2 {
+ @media (max-width: 768px) {
+ padding-top: 10px !important;
+ padding-bottom: 10px !important;
+ }
+
+ .progress {
+ margin-bottom: 20px;
+
+ span {
+ font-size: $span;
+ }
+
+ .progress-Parent {
+ position: relative;
+ background-color: #d8d8d8;
+ height: 4px;
+ width: 100%;
+ border-radius: 2px;
+ margin: 10px 0;
+
+ .progress-Child {
+ position: absolute;
+ background-color: $red;
+ height: 4px;
+ width: 80%;
+ border-radius: 2px;
+ }
+ }
+ }
+ }
+
+ .s4-col3 {
+ justify-content: center;
+ display: flex;
+ align-items: center;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 5 -----------------------------------*/
+ .s5-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: auto;
+ background: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)),
+ url('/img/AboutPage/shutterstock.png') no-repeat center;
+ background-size: cover;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .container {
+ .title {
+ margin-bottom: 80px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .h2 {
+ color: $red;
+ // text-align: center;
+ margin: 0 5px;
+
+ &:first-child {
+ color: $themeReverse;
+ // text-align: center;
+ }
+ }
+ }
+
+ .row {
+ div {
+ text-align: center;
+
+ .h1 {
+ color: $themeReverse;
+ margin: 0;
+ }
+
+ span {
+ color: $red;
+ font-size: 20px !important;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 6 -----------------------------------*/
+ .s6-BG {
+ overflow: hidden;
+
+ .parallax {
+ background-color: #f4f4f4;
+
+ .h2 {
+ text-align: center;
+ margin-bottom: 50px;
+ }
+
+ .s6-team {
+ padding: 0 100px;
+ justify-content: center;
+ @media (max-width: 992px) {
+ padding: 0 !important;
+ }
+
+ .team-View {
+ background-color: #fff;
+ @include boxShadow(0 4px 16px rgba(#000, 0.1));
+
+ img {
+ width: 100%;
+ height: auto;
+ }
+
+ .title-Img {
+ padding: 20px;
+ text-align: center;
+
+ p {
+ }
+
+ span {
+ color: #9e9e9e;
+ }
+ }
+ }
+ }
+
+ .s6-notFound {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 7 -----------------------------------*/
+ .s7-BG {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ & > div {
+ @media (min-width: 575px) {
+ padding: 0;
+ }
+ }
+
+ .s7-view-title {
+ background-color: #f4f4f4;
+ padding: 50px 0;
+
+ .s7-title {
+ text-align: center;
+ }
+ }
+
+ .s7-Img {
+ height: 100%;
+
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .s7-Body {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 0 20px !important;
+ background-color: #151515;
+ @media (max-width: 768px) {
+ padding: 0 !important;
+ }
+
+ img {
+ margin-top: 20px;
+ display: block;
+ width: 250px;
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+ }
+
+ .s7-Title {
+ position: relative;
+ margin-top: 30px;
+
+ .h6 {
+ color: #fff;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: -20px;
+ height: 1px;
+ width: 10%; /* or 100px */
+ border-bottom: 2px solid #d8d8d8;
+ }
+
+ &:lang(fa) {
+ &::before {
+ right: 0 !important;
+ left: auto;
+ }
+ }
+ }
+ }
+
+ .s7-desc {
+ margin: 50px 0 10px 0;
+ width: 100%;
+ //max-width: 80%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+
+ span {
+ color: #9c9c9c;
+ }
+ }
+
+ .staggerItemSeeBTN {
+ display: inline-block;
+ background-color: $themeTransparent;
+ border: 1px solid #4d4d4d;
+ border-radius: 3px;
+ padding: 10px 20px;
+ font-size: 16px;
+ @include transition(background-color 0.3s, color 0.3s);
+ @extend %defaultTransition;
+ cursor: pointer;
+ text-align: center;
+ margin: 40px 0;
+
+ span {
+ color: #fff;
+ @extend %defaultTransition;
+ }
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+
+ &:hover {
+ border: 1px solid $red;
+ color: $themeReverse;
+ background-color: $red;
+
+ span {
+ color: $themeReverse;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 8 -----------------------------------*/
+ .s8-BG {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ & > div {
+ @media (min-width: 575px) {
+ padding: 0;
+ }
+ }
+
+ .s8-Img {
+ height: 100%;
+
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .s8-Body {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 0 20px !important;
+ background-color: #151515;
+ @media (max-width: 768px) {
+ padding: 0 !important;
+ }
+
+ img {
+ margin-top: 20px;
+ display: block;
+ width: 250px;
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+ }
+
+ .s8-Title {
+ position: relative;
+ margin-top: 30px;
+
+ .h6 {
+ color: #fff;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: -20px;
+ height: 1px;
+ width: 10%; /* or 100px */
+ border-bottom: 2px solid #d8d8d8;
+ }
+
+ &:lang(fa) {
+ &::before {
+ right: 0 !important;
+ left: auto;
+ }
+ }
+ }
+ }
+
+ .s8-desc {
+ margin: 50px 0 10px 0;
+ width: 100%;
+ //max-width: 80%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+
+ span {
+ color: #9c9c9c;
+ }
+ }
+
+ .staggerItemSeeBTN {
+ display: inline-block;
+ background-color: $themeTransparent;
+ border: 1px solid #4d4d4d;
+ border-radius: 3px;
+ padding: 10px 20px;
+ font-size: 16px;
+ @include transition(background-color 0.3s, color 0.3s);
+ @extend %defaultTransition;
+ cursor: pointer;
+ text-align: center;
+ margin: 40px 0;
+
+ span {
+ color: #fff;
+ @extend %defaultTransition;
+ }
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+
+ &:hover {
+ border: 1px solid $red;
+ color: $themeReverse;
+ background-color: $red;
+
+ span {
+ color: $themeReverse;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 9 -----------------------------------*/
+ .s9-BG {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ & > div {
+ @media (min-width: 575px) {
+ padding: 0;
+ }
+ }
+
+ .s9-Img {
+ height: 100%;
+
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .s9-Body {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 0 20px !important;
+ background-color: #151515;
+ @media (max-width: 768px) {
+ padding: 0 !important;
+ }
+
+ img {
+ margin-top: 20px;
+ display: block;
+ width: 250px;
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+ }
+
+ .s9-Title {
+ position: relative;
+ margin-top: 30px;
+
+ .h6 {
+ color: #fff;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: -20px;
+ height: 1px;
+ width: 10%; /* or 100px */
+ border-bottom: 2px solid #d8d8d8;
+ }
+
+ &:lang(fa) {
+ &::before {
+ right: 0 !important;
+ left: auto;
+ }
+ }
+ }
+ }
+
+ .s9-desc {
+ margin: 50px 0 10px 0;
+ width: 100%;
+ //max-width: 80%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+
+ span {
+ color: #9c9c9c;
+ }
+ }
+
+ .staggerItemSeeBTN {
+ display: inline-block;
+ background-color: $themeTransparent;
+ border: 1px solid #4d4d4d;
+ border-radius: 3px;
+ padding: 10px 20px;
+ font-size: 16px;
+ @include transition(background-color 0.3s, color 0.3s);
+ @extend %defaultTransition;
+ cursor: pointer;
+ text-align: center;
+ margin: 40px 0;
+
+ span {
+ color: #fff;
+ @extend %defaultTransition;
+ }
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+
+ &:hover {
+ border: 1px solid $red;
+ color: $themeReverse;
+ background-color: $red;
+
+ span {
+ color: $themeReverse;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 10 -----------------------------------*/
+ .s10-BG {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ & > div {
+ @media (min-width: 575px) {
+ padding: 0;
+ }
+ }
+
+ .s10-Img {
+ height: 100%;
+
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .s10-Body {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 0 20px !important;
+ background-color: #151515;
+ @media (max-width: 768px) {
+ padding: 0 !important;
+ }
+
+ img {
+ margin-top: 20px;
+ display: block;
+ width: 250px;
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+ }
+
+ .s10-Title {
+ position: relative;
+ margin-top: 30px;
+
+ .h6 {
+ color: #fff;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: -20px;
+ height: 1px;
+ width: 10%; /* or 100px */
+ border-bottom: 2px solid #d8d8d8;
+ }
+
+ &:lang(fa) {
+ &::before {
+ right: 0 !important;
+ left: auto;
+ }
+ }
+ }
+ }
+
+ .s10-desc {
+ margin: 50px 0 10px 0;
+ width: 100%;
+ //max-width: 80%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+
+ span {
+ color: #9c9c9c;
+ }
+ }
+
+ .staggerItemSeeBTN {
+ display: inline-block;
+ background-color: $themeTransparent;
+ border: 1px solid #4d4d4d;
+ border-radius: 3px;
+ padding: 10px 20px;
+ font-size: 16px;
+ @include transition(background-color 0.3s, color 0.3s);
+ @extend %defaultTransition;
+ cursor: pointer;
+ text-align: center;
+ margin: 40px 0;
+
+ span {
+ color: #fff;
+ @extend %defaultTransition;
+ }
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+
+ &:hover {
+ border: 1px solid $red;
+ color: $themeReverse;
+ background-color: $red;
+
+ span {
+ color: $themeReverse;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 11 -----------------------------------*/
+ .s11-BG {
+ .parallax {
+ background-color: #fff;
+
+ .s11-h1-title {
+ text-align: center;
+ margin-bottom: 50px;
+ }
+
+ .s11-chart {
+ img {
+ width: 100%;
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 12 -----------------------------------*/
+ .s12-BG {
+ overflow: hidden;
+
+ .parallax {
+ background-color: #fff;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+
+ h2 {
+ margin: 15px 0;
+ }
+
+ div {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ //padding: 20px;
+
+ div {
+ border: 1px solid #eee;
+ height: 150px;
+ padding: 20px;
+
+ img {
+ width: 70%;
+ //height: 100px;
+ object-fit: contain;
+ }
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- Blog Page --------------------------------
+.blog-page {
+ background-color: #000000;
+
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ //background: $dimmer, url("/img/BlogPage/page-title.png") no-repeat center;
+ background-position: center;
+ background-size: cover;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+
+ .s2-BG {
+ overflow: hidden;
+ background-color: #efefef;
+ padding: 15px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ ul {
+ .s2-all-cat {
+ display: inline-block;
+ margin: 0 10px;
+
+ a {
+ color: #666666;
+ @extend %defaultTransition;
+
+ &:hover {
+ color: $red;
+ }
+
+ &.active {
+ color: $red;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 3 -----------------------------------*/
+
+ .s3-BG {
+ background-color: #fbfbfb;
+
+ .parallax {
+ @media (max-width: 768px) {
+ padding: 20px 0;
+ }
+
+ .s3-item {
+ width: 100%;
+ height: 100%;
+ background-color: #fff;
+ margin: 0 auto;
+ position: relative;
+
+ @include boxShadow(rgba(149, 157, 165, 0.2) 0px 8px 24px);
+
+ img {
+ width: 100%;
+ height: auto;
+ }
+
+ .s3-body {
+ padding: 15px;
+
+ padding-bottom: 50px;
+
+ .s3-top-desc {
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+
+ //margin: 20px 10px;
+ //padding: 0 30px;
+
+ i {
+ color: $red;
+ }
+
+ span {
+ color: #a8a8a8;
+ margin: 0 5px;
+ }
+ }
+
+ .h6 {
+ margin: 20px 0;
+ color: $theme;
+ }
+
+ p {
+ color: #a8a8a8;
+ }
+
+ .s3-reading {
+ display: inline-block;
+ margin: 20px 0 auto 0;
+ align-items: center;
+ position: absolute;
+ bottom: 15px;
+ right: 15px;
+
+ i {
+ @include transform(translateY(2px));
+ }
+
+ p {
+ color: #757575;
+ @extend %defaultTransition;
+
+ &:hover {
+ color: #ed1d24;
+ @extend %defaultTransition;
+ }
+
+ i {
+ margin: 0 5px;
+ }
+ }
+ }
+ }
+ }
+
+ .s3-notFound {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ }
+ }
+}
+
+//------------------------------- Blog Details Page --------------------------------
+.blog-details-page {
+ background-color: #fbfbfb;
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: flex-end;
+ display: flex;
+ background: $dimmer, url('/img/BlogPage/DetailsPage/bg.png') no-repeat center;
+ background-size: cover;
+ flex-direction: column;
+
+ .s1-title {
+ flex-direction: row;
+ display: flex;
+ // align-items: center;
+ position: relative;
+ margin-bottom: 40px;
+
+ .date {
+ &::before {
+ content: '';
+ position: absolute;
+ left: 50px;
+ top: 0;
+ bottom: 0;
+ border: 1px solid #fff;
+ }
+
+ &:lang(fa) {
+ &::before {
+ left: auto;
+ right: 60px;
+ top: 0;
+ bottom: 0;
+ border: 1px solid #fff;
+ content: '';
+ position: absolute;
+ }
+ }
+
+ p {
+ color: #fff;
+ margin: 0 15px;
+ }
+ }
+
+ .s1-desc {
+ margin: 0 15px;
+
+ .h6 {
+ color: $themeReverse;
+ text-transform: uppercase;
+ }
+
+ div {
+ margin-top: 5px;
+ }
+
+ svg {
+ margin-left: 10px;
+ }
+
+ span {
+ color: #fff;
+ margin: 0 5px;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2-BG {
+ background-color: #efefef;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+
+ .s2-desc {
+ padding: 10px;
+ direction: ltr;
+
+ &:lang(fa) {
+ direction: rtl;
+ }
+
+ i {
+ color: #a8a8a8;
+ margin: 0 5px;
+ display: inline-block;
+ @include transform(translateY(3px));
+ }
+
+ p {
+ color: #a8a8a8;
+ display: inline-block;
+ }
+ }
+ }
+
+ /*-------------------------------- Section Content -----------------------------------*/
+
+ .content {
+ @media (max-width: 768px) {
+ padding: 20px 0;
+ }
+
+ .ck-content {
+ font-family: 'geometria', sans-serif;
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 3 -----------------------------------*/
+ .s3-BG {
+ overflow: hidden;
+ background-color: #fbfbfb;
+
+ .parallax {
+ .container {
+ //width: 100%;
+ //max-width: 60%;
+ //@media (max-width: 768px) {
+ // & {
+ // max-width: 100%;
+ // }
+ //}
+
+ .s3-title {
+ margin-bottom: 20px;
+
+ .h5 {
+ color: $theme;
+ }
+ }
+
+ .s3-desc {
+ span {
+ color: #797979;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 4 -----------------------------------*/
+ .s4-Img-BG {
+ overflow: hidden;
+ background-color: #fbfbfb;
+
+ .parallax {
+ img {
+ width: 80%;
+ height: auto;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 5 -----------------------------------*/
+ .s5-BG {
+ overflow: hidden;
+ background-color: #fbfbfb;
+
+ .parallax {
+ .container {
+ //width: 100%;
+ //max-width: 60%;
+ //@media (max-width: 768px) {
+ // & {
+ // max-width: 100%;
+ // }
+ //}
+
+ .s5-title {
+ margin-bottom: 20px;
+
+ .h5 {
+ color: $theme;
+ }
+ }
+
+ .s5-desc {
+ span {
+ color: #797979;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 6 -----------------------------------*/
+ .s6-Img-BG {
+ overflow: hidden;
+ background-color: #fbfbfb;
+
+ .parallax {
+ justify-content: flex-end;
+ display: flex;
+
+ img {
+ width: 80%;
+ height: auto;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 7 -----------------------------------*/
+ .s7-BG {
+ overflow: hidden;
+ background-color: #fbfbfb;
+
+ .parallax {
+ background-color: $themeReverse;
+
+ .container {
+ //width: 100%;
+ //max-width: 60%;
+ //@media (max-width: 768px) {
+ // & {
+ // max-width: 100%;
+ // }
+ //}
+
+ .s7-title {
+ margin-bottom: 20px;
+
+ .h5 {
+ color: $theme;
+ }
+ }
+
+ .s7-desc {
+ span {
+ color: #797979;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 8 -----------------------------------*/
+ .s8-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: 400px;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
+ url('/img/BlogPage/DetailsPage/featured.png') no-repeat center;
+ background-size: cover;
+ flex-direction: column;
+
+ .h2 {
+ color: $themeReverse;
+ margin: 0 15px;
+ text-align: center;
+ }
+
+ .s8-desc {
+ width: 100%;
+ max-width: 50%;
+ margin: 20px 0;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+
+ p {
+ color: $themeReverse;
+ text-align: center;
+ font-size: 16px;
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 9 -----------------------------------*/
+ .s9-BG {
+ overflow: hidden;
+ background-color: #fbfbfb;
+
+ .parallax {
+ .container {
+ //width: 100%;
+ //max-width: 60%;
+ //@media (max-width: 768px) {
+ // & {
+ // max-width: 100%;
+ // }
+ //}
+
+ .s9-title {
+ margin-bottom: 20px;
+
+ .h5 {
+ color: $theme;
+ }
+ }
+
+ .s9-desc {
+ span {
+ color: #797979;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 10 -----------------------------------*/
+ .s10-BG {
+ padding: 30px 280px;
+ background-color: #fbfbfb;
+
+ @media (max-width: 768px) {
+ & {
+ padding: 30px 45px;
+ }
+ }
+
+ div {
+ display: ruby;
+ position: relative;
+
+ .s10-shares {
+ //opacity: 1 !important;
+
+ &::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: -20px;
+ border: 1px solid #d8d8d8;
+ }
+
+ p {
+ color: #a8a8a8;
+ }
+ }
+
+ .s10-social {
+ margin: 0 30px;
+ //opacity: 1 !important;
+ ul {
+ display: flex;
+
+ li {
+ i {
+ color: #333333;
+ margin: 0 7px;
+ cursor: pointer;
+ @include transition(0.3s);
+ }
+
+ .fa-facebook-f:hover {
+ color: #4064ac;
+ }
+
+ .fa-linkedin-in:hover {
+ color: #2764ac;
+ }
+
+ .fa-google-plus-g:hover {
+ color: #d64135;
+ }
+
+ .fa-envelope:hover {
+ color: #5fb7e0;
+ }
+
+ .fa-twitter:hover {
+ color: #5ba4d6;
+ }
+
+ .fa-pinterest-p:hover {
+ color: #e0191c;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- Activities Page --------------------------------
+.activities-page {
+ background-color: #000000;
+
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: 45vh;
+ width: 100%;
+
+ //background: $dimmer, url("/img/ActivitiesPage/page-title.png") no-repeat center;
+ background-position: center;
+ background-size: cover;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ }
+
+ span {
+ color: $themeReverse;
+ text-transform: capitalize;
+ text-align: center;
+ width: 100%;
+ max-width: 50%;
+ margin: 10px 0;
+
+ @media (max-width: 992px) {
+ max-width: 100%;
+ font-size: 12px;
+ margin-top: 0;
+ }
+ @media (max-width: 768px) {
+ max-width: 95%;
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2-BG {
+ background-color: #ffffff;
+ overflow: hidden;
+
+ @media (max-width: 768px) {
+ padding-bottom: 10px;
+ padding-top: 10px;
+ }
+
+ .parallax {
+ @media (max-width: 768px) {
+ padding: 0 !important;
+ }
+
+ .container {
+ .s2-align-col {
+ align-items: stretch;
+ display: flex;
+
+ .s2-item {
+ width: auto;
+ margin-bottom: 25px;
+ background-color: #888585;
+ direction: ltr;
+ text-align: left;
+ overflow: hidden;
+
+ @media (max-width: 768px) {
+ & {
+ margin: 10px 0 !important;
+ }
+ }
+
+ a {
+ @include transition(0.3s);
+ display: inline-block;
+
+ img {
+ width: 100%;
+ height: auto;
+ }
+
+ &:hover {
+ @include transform(scale(1.01));
+ }
+ }
+
+ .s2-body {
+ padding: 13px 25px;
+ //direction: ltr;
+ //position: absolute;
+
+ h4 {
+ color: $themeReverse;
+ font-size: 18px !important;
+ text-align: right;
+ padding-top: 10px;
+ padding-bottom: 0;
+ //width: 100%;
+ //max-width: 200px;
+ @media (max-width: 768px) {
+ font-size: 15px !important;
+ }
+
+ &:lang(en) {
+ text-align: left;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- Activities Details Page --------------------------------
+.activities-details-page {
+ background-color: #000000;
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ //background: $dimmer, url("/img/ActivitiesPage/page-title.png") no-repeat center;
+ background-position: center;
+ background-size: cover;
+ flex-direction: column;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ font-size: 30px !important;
+ @media (max-width: 768px) {
+ & {
+ text-align: center;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ .s2-item {
+ @media (min-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ img {
+ height: 100%;
+ width: 100%;
+ }
+
+ .s2-body {
+ background-color: #202020;
+ height: 100%;
+ width: 100%;
+ padding: 20px;
+ display: flex;
+ align-items: center;
+ @media (max-width: 768px) {
+ padding: 0;
+ }
+
+ .s2-body-desc {
+ @media (max-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ p {
+ color: #c9c9c9;
+ margin-top: 10px;
+ width: 100%;
+ //max-width: 70%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+ }
+ }
+
+ .s2-Desc-View {
+ margin: 20px 0;
+ align-items: center;
+ display: flex;
+ @media (max-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ .check {
+ display: flex;
+ margin: 8px 0;
+
+ i {
+ color: #c9c9c9;
+ @include transform(translateY(6px));
+ }
+
+ p {
+ color: #c9c9c9;
+ margin: 0 10px;
+ cursor: pointer;
+ }
+ }
+ }
+
+ ._s2-Desc-View {
+ margin: 20px 0;
+
+ .check {
+ display: flex;
+ margin: 8px 0;
+
+ i {
+ color: #c9c9c9;
+ @include transform(translateY(6px));
+ }
+
+ p {
+ color: #c9c9c9;
+ margin: 0 10px;
+ cursor: pointer;
+ }
+ }
+ }
+
+ .s2-body-desc2 {
+ @media (max-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ p {
+ color: #c9c9c9;
+ margin-bottom: 10px;
+ width: 100%;
+ //max-width: 70%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .el-table {
+ background-color: transparent !important;
+
+ .el-table__header-wrapper {
+ background-color: transparent !important;
+
+ tr {
+ background-color: transparent !important;
+
+ th {
+ background-color: #f1f1f1 !important;
+
+ .cell {
+ color: #666;
+ }
+ }
+ }
+ }
+
+ .el-table__body-wrapper {
+ tr {
+ background-color: transparent;
+
+ td {
+ background-color: transparent;
+ color: #f1f1f1;
+ }
+ }
+ }
+ }
+
+ .view_input {
+ margin-top: 50px;
+
+ .col-12 {
+ justify-content: center;
+ align-items: center;
+ display: flex;
+ flex-direction: column;
+
+ p {
+ margin-bottom: 5px;
+ text-align: right;
+ font-family: 'dubaiM', sans-serif;
+ font-size: 13px;
+ margin-top: 5px;
+ color: $themeReverse;
+ }
+ }
+
+ .view-btn {
+ display: flex !important;
+ align-items: center;
+ justify-content: center;
+ //margin-top: 50px;
+ a {
+ border: 1px solid $themeReverse;
+ border-radius: 5px;
+ background-color: transparent;
+ @extend %defaultTransition;
+
+ &:hover {
+ background-color: $red;
+ border-color: $red;
+ }
+ }
+
+ span {
+ margin: 0 20px;
+ color: $themeReverse;
+ }
+ }
+ }
+
+ .el-checkbox__inner:hover {
+ border-color: $red;
+ }
+
+ .el-checkbox__input.is-checked .el-checkbox__inner,
+ .el-checkbox__input.is-indeterminate .el-checkbox__inner {
+ background-color: $red;
+ border-color: $red;
+ }
+
+ .el-checkbox__input.is-checked + .el-checkbox__label {
+ color: $red;
+ }
+ }
+
+ /*-------------------------------- Section 3 -----------------------------------*/
+ .s3-BG {
+ overflow: hidden;
+ background-color: #f2f2f2;
+ @media (max-width: 768px) {
+ & {
+ padding: 20px 0 !important;
+ }
+ }
+
+ .item {
+ margin-bottom: 50px;
+
+ .staggerItem {
+ align-items: center;
+ display: flex;
+ }
+
+ &.descBottom {
+ background-color: $themeReverse;
+ padding: 50px;
+
+ .txt {
+ h6 {
+ text-align: center;
+ }
+
+ p {
+ display: block;
+ text-align: center;
+ width: 100%;
+ max-width: 800px;
+ margin: 0 auto;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+ }
+ }
+ }
+
+ &.reverse {
+ .row {
+ flex-direction: row-reverse;
+ }
+
+ .txt {
+ padding-left: 0;
+
+ &:lang(fa) {
+ padding-right: 0;
+ }
+ }
+ }
+
+ img {
+ width: 100%;
+ }
+
+ .txt {
+ padding-left: 50px;
+ padding-right: 0;
+
+ &:lang(fa) {
+ padding-right: 50px;
+ padding-left: 0;
+ }
+
+ width: 100%;
+ max-width: 90%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+ }
+
+ @media (max-width: 992px) {
+ margin-top: 30px;
+ padding-left: 0;
+ }
+
+ p {
+ color: #333333;
+ margin: 10px 0;
+ }
+
+ .list1 {
+ margin-top: 10px;
+
+ li {
+ margin-bottom: 5px;
+
+ span {
+ color: #898989;
+ text-align: justify;
+ }
+
+ i {
+ font-size: 5px;
+ margin: 0 5px;
+ color: #898989;
+ }
+ }
+ }
+
+ .list2 {
+ margin-top: 10px;
+
+ li {
+ margin-bottom: 5px;
+
+ span {
+ color: #898989;
+ text-align: justify;
+ }
+
+ i {
+ font-size: 12px;
+ margin: 0 5px;
+ color: #898989;
+ }
+ }
+ }
+
+ .s3-reading {
+ display: block ruby;
+ margin-top: 20px;
+
+ p {
+ color: $red;
+ }
+
+ i {
+ margin: 0 5px;
+ color: $red;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 4 -----------------------------------*/
+ .s4-BG {
+ background-color: #333333;
+
+ h1 {
+ text-align: center;
+ color: $themeReverse;
+ text-decoration: underline;
+ text-decoration-thickness: 2px;
+ text-underline-position: under;
+ text-decoration-color: $red;
+ }
+
+ //.col-6 {
+ // padding: 0 10px !important;
+ //}
+
+ .el-table {
+ margin-bottom: 20px;
+ @include boxShadow(0 4px 16px rgba(#999, 0.3));
+ margin-top: 50px;
+
+ th {
+ text-align: center !important;
+ }
+
+ tr {
+ &:hover {
+ td {
+ background-color: $red !important;
+
+ &,
+ span {
+ color: $themeReverse;
+ }
+ }
+ }
+
+ td {
+ text-align: center !important;
+
+ span {
+ color: #606266;
+ }
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- Project Page --------------------------------
+.project-page {
+ background-color: #000000;
+
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ //background: $dimmer, url("/img/ProjectPage/page-title.png") no-repeat center;
+ background-position: center;
+ background-size: cover;
+ flex-direction: column;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ }
+ }
+ }
+
+ /*-------------------------------- Section Categories -----------------------------------*/
+ .categories {
+ overflow: hidden;
+ background-color: #efefef;
+ padding: 15px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ ul {
+ .all-categories {
+ display: inline-block;
+ margin: 0 10px;
+ cursor: pointer;
+
+ a {
+ color: #666666;
+ @extend %defaultTransition;
+
+ &:hover {
+ color: $red;
+ }
+
+ &.active {
+ color: $red;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+
+ .s2-BG {
+ background-color: #fbfbfb;
+ @media (max-width: 768px) {
+ & {
+ padding: 20px;
+ }
+ }
+
+ .container {
+ .el-table--enable-row-hover {
+ .el-table__body {
+ tr {
+ &:hover {
+ td {
+ background-color: $red !important;
+ color: $themeReverse;
+ }
+
+ .btn {
+ background: #fff !important;
+ color: $red !important;
+
+ &.s2-table-disable {
+ background: #999999 !important;
+ color: #fff !important;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .el-table {
+ th {
+ background-color: #f4f4f4;
+
+ .cell {
+ color: #000;
+ font-weight: bold;
+ }
+ }
+
+ .cell {
+ word-break: break-word !important;
+ }
+ }
+
+ .s2-table {
+ width: 100%;
+ @include boxShadow(0 4px 16px rgba(#000, 0.3));
+ }
+
+ .s2-table-btn {
+ background-color: $red !important;
+ @extend %defaultTransition;
+ border: 1px solid $red !important;
+ color: $themeReverse !important;
+ //padding: 0;
+
+ &:hover {
+ background-color: $themeReverse !important;
+ @extend %defaultTransition;
+ color: $red !important;
+ }
+ }
+
+ .s2-table-disable {
+ background-color: #999999 !important;
+ @extend %defaultTransition;
+ border: 1px solid #999999 !important;
+ color: $themeReverse !important;
+ cursor: not-allowed;
+
+ //padding: 0;
+
+ &:hover {
+ background-color: $themeReverse !important;
+ @extend %defaultTransition;
+ color: #999999 !important;
+ }
+ }
+ }
+
+ .s2-img {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ align-items: center;
+ margin: 10px 0;
+
+ img {
+ width: 100%;
+ height: auto;
+ }
+ }
+
+ .s2-item {
+ margin-top: 20px;
+ width: 100%;
+ //max-width: 70%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+
+ .h6 {
+ }
+
+ p {
+ color: #a8a8a8;
+ margin: 10px 0;
+ }
+
+ span {
+ font-size: 15px;
+ }
+
+ .s2-reading {
+ //display: inline-block;
+ //margin-top: 10px;
+ display: flex;
+ align-items: center;
+
+ p {
+ color: $red;
+ }
+
+ i {
+ margin: 0 10px;
+ color: $red;
+ @include transform(translateY(2px));
+ }
+ }
+ }
+
+ .s2-notFound {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ }
+
+ .filterTableByTags {
+ margin-bottom: 10px;
+
+ .tag {
+ display: inline-block;
+ margin: 0 5px;
+ border: 1px solid #666666;
+ padding: 2px 5px;
+ cursor: pointer;
+ @include borderRadius(4px);
+
+ span {
+ color: #666666;
+ }
+
+ &.active {
+ border-color: $red;
+
+ span {
+ color: $red;
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- Details Project Page --------------------------------
+.details-project-page {
+ background-color: #000000;
+
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+ background-size: cover;
+ flex-direction: column;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ //background: $dimmer, url("/img/ProjectPage/page-title.png") no-repeat center;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ text-align: center;
+
+ &:lang(fa) {
+ color: #fff;
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ & > div {
+ @media (min-width: 575px) {
+ padding: 0;
+ }
+ }
+
+ img {
+ height: 100%;
+ width: 100%;
+ }
+
+ .s2-body {
+ background-color: #202020;
+ height: 100%;
+ width: 100%;
+ padding: 30px;
+ @media (max-width: 768px) {
+ padding: 20px 0;
+ }
+
+ .h2 {
+ color: $themeReverse;
+ //margin-top: 10px;
+ margin-bottom: 30px;
+ padding: 0;
+ }
+
+ .s2-body-desc {
+ width: 100%;
+ //max-width: 60%;
+ @media (max-width: 768px) {
+ //max-width: 100%;
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ span {
+ color: #c9c9c9;
+ }
+ }
+
+ .s2-Desc-View {
+ display: flex;
+ flex-direction: row;
+ margin: 30px 0;
+ @media (max-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ .s2-Desc {
+ //align-items: stretch;
+ //display: flex;
+ //flex-direction: column;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ justify-content: center;
+
+ .h6 {
+ color: $themeReverse;
+ }
+
+ p {
+ color: $themeReverse;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: 100%;
+ @media (max-width: 768px) {
+ max-width: 250px;
+ }
+ }
+
+ a {
+ color: $themeReverse;
+ }
+ }
+ }
+ }
+
+ //.s2-list-row{
+ // width: 100%;
+ // max-width: 300px;
+ //}
+ }
+ }
+ }
+
+ /*-------------------------------- Section 3 -----------------------------------*/
+ .s3-BG {
+ overflow: hidden;
+
+ .parallax {
+ padding: 50px;
+ background-color: $themeReverse;
+ @media (max-width: 768px) {
+ padding: 40px 0;
+ }
+
+ .container {
+ .s3-body {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+
+ .h6 {
+ text-align: center;
+ }
+
+ .s3-desc {
+ width: 100%;
+ max-width: 70%;
+ margin-top: 60px;
+ text-align: center;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+
+ span {
+ color: #9c9999;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 4 -----------------------------------*/
+ .s4-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ //height: 400px !important;
+ @media (max-width: 768px) {
+ height: 200px !important;
+ }
+
+ img {
+ height: 100%;
+ width: 100%;
+ @media (max-width: 768px) {
+ height: 200px;
+ object-fit: cover;
+ }
+ }
+ }
+ }
+
+ .lightBoxImages {
+ background-color: #f2f2f2;
+ padding: 30px;
+ position: relative;
+
+ .images {
+ align-items: center;
+ justify-content: center;
+ display: flex;
+
+ .btn {
+ font-family: 'geometria', sans-serif;
+ color: #666666;
+ border: 1px solid #666666;
+ //margin-right: 350px;
+ //padding: 0 40px;
+ position: absolute;
+ border-radius: 2px;
+ @extend %defaultTransition;
+
+ @media (max-width: 768px) {
+ //margin-right: 200px;
+ }
+
+ &:hover {
+ color: $red;
+ border: 1px solid $red;
+ @extend %defaultTransition;
+ }
+
+ &:lang(fa) {
+ font-family: 'dubaiM', sans-serif;
+ }
+ }
+
+ .hidden {
+ visibility: hidden;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 5 -----------------------------------*/
+ .s5-BG {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ & > div {
+ @media (min-width: 575px) {
+ padding: 0;
+ }
+ }
+
+ .s5-Img {
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .s5-Body {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 0 20px !important;
+ background-color: $themeReverse;
+ @media (max-width: 768px) {
+ padding: 0 !important;
+ }
+
+ .s5-Title {
+ position: relative;
+ margin-top: 30px;
+
+ .h6 {
+ // border-bottom: 1px solid #9c9c9c;
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: -20px;
+ height: 1px;
+ width: 10%; /* or 100px */
+ border-bottom: 2px solid #d8d8d8;
+ }
+
+ &:lang(fa) {
+ &::before {
+ right: 0 !important;
+ left: auto;
+ }
+ }
+ }
+ }
+
+ .s5-desc {
+ margin: 50px 0;
+ width: 100%;
+ max-width: 70%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+
+ span {
+ color: #9c9c9c;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 6 -----------------------------------*/
+ .s6-BG {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ & > div {
+ @media (min-width: 575px) {
+ padding: 0;
+ }
+ }
+
+ .s6-Img {
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .s6-Body {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 0 20px !important;
+ background-color: #151515;
+ @media (max-width: 768px) {
+ padding: 0 !important;
+ }
+
+ .s6-Title {
+ position: relative;
+ margin-top: 30px;
+
+ .h6 {
+ color: #fff;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: -20px;
+ height: 1px;
+ width: 10%; /* or 100px */
+ border-bottom: 2px solid #d8d8d8;
+ }
+
+ &:lang(fa) {
+ &::before {
+ right: 0 !important;
+ left: auto;
+ }
+ }
+ }
+ }
+
+ .s6-desc {
+ margin: 50px 0;
+ width: 100%;
+ max-width: 80%;
+
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+
+ span {
+ color: #9c9c9c;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 7 -----------------------------------*/
+ .s7-BG {
+ overflow: hidden;
+ background-color: #fbfbfb;
+
+ .parallax {
+ padding: 50px;
+
+ .container {
+ .s7-body {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+
+ .h6 {
+ text-align: center;
+ }
+
+ .s7-desc {
+ text-align: center;
+
+ span {
+ color: #9c9999;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- Gallery Page --------------------------------
+.gallery-page {
+ //background-color: #000000;
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ //background: $dimmer, url("/img/GalleryPage/page-title.png") no-repeat center;
+ background-position: center;
+ background-size: cover;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2-BG {
+ overflow: hidden;
+ background-color: #efefef;
+ padding: 15px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ ul {
+ .s2-all-cat {
+ display: inline-block;
+ margin: 0 10px;
+
+ a {
+ color: #666666;
+ @extend %defaultTransition;
+
+ &:hover {
+ color: $red;
+ }
+
+ &.active {
+ color: $red;
+ }
+ }
+ }
+ }
+ }
+
+ /*-------------------------------- Section 3 -----------------------------------*/
+ .s3-BG {
+ overflow: hidden;
+ background-color: #ffffff;
+ @media (max-width: 768px) {
+ padding: 20px 0 !important;
+ }
+
+ .imgBox {
+ padding: 7px;
+ border: 1px solid #cccccc;
+ border-radius: 5px;
+ margin-bottom: 10px;
+ cursor: pointer;
+ @include transition(0.3s);
+ @include boxShadow(0 2px 8px rgba(#000, 0.2));
+
+ &:hover {
+ @include transform(scale(1.01));
+ }
+
+ img {
+ width: 100%;
+ object-fit: cover;
+ border-radius: 5px;
+ }
+
+ h4 {
+ color: $themeSecond;
+ text-align: center;
+ }
+
+ @media (max-width: 768px) {
+ & {
+ padding: 5px;
+ }
+ }
+ @media (max-width: 575px) {
+ & {
+ padding: 2px;
+ }
+ }
+
+ //a {
+ // width: 100%;
+ // height: 100%;
+ // @include boxSizing(border-box);
+ // overflow: hidden;
+ // ////////
+ // img {
+ // width: 100%;
+ // height: 100%;
+ // object-fit: cover;
+ // @include transition(0.3s);
+ // }
+ //
+ // &:hover {
+ // img {
+ // @include transform(scale(1.01));
+ // }
+ // }
+ //}
+ }
+
+ .gallery--row {
+ direction: ltr !important;
+
+ //.row {
+ // padding: 0 15px !important;
+ // //@media (max-width: 768px) {
+ // // padding: 0 !important;
+ // //}
+ //
+ //
+ // & > div {
+ // padding: 0 !important;
+ // }
+ //}
+
+ .imgBox {
+ padding: 7px;
+
+ @media (max-width: 768px) {
+ & {
+ padding: 5px;
+ }
+ }
+ @media (max-width: 575px) {
+ & {
+ padding: 2px;
+ }
+ }
+
+ a {
+ width: 100%;
+ height: 100%;
+ @include boxSizing(border-box);
+ overflow: hidden;
+ ////////
+ img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ @include transition(0.3s);
+ }
+
+ &:hover {
+ img {
+ @include transform(scale(1.01));
+ }
+ }
+ }
+ }
+
+ .top {
+ height: 500px;
+
+ @media (max-width: 768px) {
+ height: 400px;
+ }
+
+ @media (max-width: 400px) {
+ & {
+ height: 250px;
+ }
+ }
+
+ .left {
+ height: 100%;
+
+ .imgBox {
+ width: 100%;
+ //height: 85%;
+ height: 100%;
+ }
+
+ .txtBox {
+ width: 100%;
+ height: 15%;
+ padding: 7px;
+ direction: ltr !important;
+ overflow: hidden;
+ @include boxSizing(border-box);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ @media (max-width: 768px) {
+ & {
+ padding: 5px;
+ display: block;
+ }
+ }
+
+ @media (max-width: 575px) {
+ & {
+ padding: 2px;
+ display: block;
+ }
+ }
+
+ img {
+ width: auto;
+ height: 80%;
+
+ @media (max-width: 768px) {
+ & {
+ font-size: 20px;
+ margin-top: 10px;
+ }
+ }
+
+ @media (max-width: 575px) {
+ & {
+ font-size: 30px;
+ }
+ }
+
+ @media (max-width: 420px) {
+ & {
+ font-size: 25px;
+ }
+ }
+
+ @media (max-width: 400px) {
+ & {
+ margin-top: 0;
+ }
+ }
+
+ @media (max-width: 330px) {
+ & {
+ font-size: 20px;
+ }
+ }
+
+ @media (max-width: 275px) {
+ & {
+ font-size: 16px;
+ }
+ }
+ }
+
+ p {
+ direction: ltr !important;
+ font-size: 16px;
+ text-align: left;
+ margin: 10px 20px;
+
+ @media (max-width: 992px) {
+ & {
+ //font-size: 16px;
+ //margin-top: -5px;
+ display: none;
+ }
+ }
+
+ //@media (max-width: 575px) {
+ // & {
+ // display: none;
+ // }
+ //}
+ }
+ }
+ }
+
+ .right {
+ height: 100%;
+
+ .imgBox {
+ height: 50%;
+ }
+ }
+ }
+
+ .bottom {
+ height: 200px;
+
+ @media (max-width: 768px) {
+ & {
+ height: 300px;
+ }
+ }
+
+ @media (max-width: 400px) {
+ & {
+ height: 150px;
+ }
+ }
+
+ & > div {
+ height: 100%;
+ }
+
+ .imgBox {
+ height: 100%;
+ }
+ }
+
+ &.gallery--row-reverse {
+ direction: rtl !important;
+ }
+ }
+
+ .s3-notFound {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ }
+}
+
+//------------------------------- Catalog Page --------------------------------
+.catalog-page {
+ background-color: #000000;
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ //background: $dimmer, url("/img/CatalogPage/page-title.png") no-repeat center;
+ background-position: center;
+ background-size: cover;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2-BG {
+ overflow: hidden;
+ background-color: #fbfbfb;
+ @media (max-width: 768px) {
+ padding: 10px 0;
+ }
+
+ .parallax {
+ @media (min-width: 992px) {
+ padding: 20px;
+ }
+
+ .container {
+ .s2-item {
+ display: block;
+ width: 100%;
+ background-color: #fff;
+ @include boxShadow(0 4px 16px rgba(#000, 0.3));
+ @media (max-width: 992px) {
+ margin-top: 20px;
+ }
+
+ img {
+ width: 100%;
+ height: auto;
+ }
+
+ .s2-body {
+ background-color: #efedee;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 15px 0;
+
+ a {
+ color: $red;
+ border: 1px solid $red;
+ background-color: transparent;
+ border-radius: 4px;
+ padding: 15px 30px;
+ @extend %defaultTransition;
+
+ &:hover {
+ background: $red;
+ color: #fff;
+ }
+ }
+
+ .h6 {
+ margin: 20px 0;
+ color: #9f9f9f;
+ }
+
+ p {
+ color: #a8a8a8;
+ }
+ }
+ }
+
+ .s2-notFound {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- Contact Page --------------------------------
+.contact-page {
+ background-color: #000000;
+
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ padding: 100px 0;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ background: $dimmer, url('/img/ContactPage/landmark.png') no-repeat center;
+ background-size: cover;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2 {
+ overflow: hidden;
+
+ .parallax {
+ .row {
+ .slick-next {
+ font-size: 0;
+ line-height: 0;
+ position: absolute;
+ top: 50%;
+ display: block;
+ width: 80px;
+ height: 100%;
+ padding: 0;
+ transform: translate(-30%, -50%);
+ cursor: pointer;
+ color: transparent;
+ border: none;
+ outline: none;
+ background: transparent;
+ background: linear-gradient(to left, rgba(#000, 0.7), rgba(#000, 0) 90%);
+ z-index: 1;
+
+ &:lang(en) {
+ transform: translate(-61%, -50%);
+ }
+ }
+
+ .slick-prev {
+ font-size: 0;
+ line-height: 0;
+ position: absolute;
+ top: 50%;
+ display: block;
+ width: 80px;
+ height: 100%;
+ padding: 0;
+ transform: translate(30%, -50%);
+ cursor: pointer;
+ color: transparent;
+ border: none;
+ outline: none;
+ background: transparent;
+ background: linear-gradient(to right, rgba(#000, 0.7), rgba(#000, 0) 90%);
+ z-index: 1;
+
+ &:lang(en) {
+ transform: translate(31%, -50%);
+ }
+ }
+
+ .s2-item {
+ height: 100%;
+ @media (min-width: 768px) {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ .s2-img {
+ padding: 40px;
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: cover;
+ width: 100%;
+ height: 350px;
+ display: flex;
+ align-items: stretch;
+ flex-direction: column;
+ justify-content: stretch;
+ //@media (max-width: 768px) {
+ // & {
+ // padding: 40px;
+ // }
+ //}
+
+ .h4 {
+ color: $themeReverse;
+ border-bottom: 2px solid $themeReverse;
+ display: inline;
+ width: 50%;
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+ }
+
+ .s2-desc {
+ color: $themeReverse;
+ margin-top: 20px;
+ width: 100%;
+ max-width: 80%;
+ margin-bottom: auto;
+ @media (max-width: 768px) {
+ & {
+ max-width: 100%;
+ }
+ }
+ }
+
+ .s2-tel {
+ margin-top: 30px;
+
+ p {
+ }
+
+ ul {
+ li {
+ display: block;
+ margin-bottom: 10px;
+
+ b,
+ a {
+ color: $themeReverse;
+ }
+
+ a {
+ @extend %defaultTransition;
+ display: inline-block;
+
+ &:hover {
+ color: $red;
+ }
+ }
+ }
+ }
+ }
+
+ &.s2-Img-col1 {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url('/img/ContactPage/g1.png');
+ }
+
+ &.s2-Img-col2 {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url('/img/ContactPage/g2.png');
+ }
+
+ &.s2-Img-col3 {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url('/img/ContactPage/g3.png');
+ }
+
+ &.s2-Img-col4 {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
+ url('/img/ContactPage/tehran.jpg');
+ }
+
+ &.s2-Img-col5 {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
+ url('/img/ContactPage/ahvaz.jpg');
+ }
+
+ &.s2-Img-col6 {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
+ url('/img/ContactPage/ahvaz1.jpg');
+ }
+
+ &.s2-Img-col7 {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
+ url('/img/ContactPage/esfahan.jpg');
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*--------------------------------Section 3 -----------------------------------*/
+ .s3 {
+ .parallax {
+ background-color: #f5f5f5;
+ @media (max-width: 768px) {
+ padding: 20px 0 !important;
+ }
+
+ .row {
+ //.col-12 {
+ // padding-left: 40px !important;
+ // padding-right: 40px !important;
+ //}
+
+ .info {
+ //padding: 40px 0;
+ //@media (max-width: 768px) {
+ // & {
+ // padding: 10px 0;
+ // }
+ //}
+
+ .s3-title-col1 {
+ .h6 {
+ color: $theme;
+ border-bottom: 3px solid #d8d8d8;
+ display: inline;
+ padding: 10px 0;
+ }
+ }
+
+ .s3-desc-col1 {
+ margin: 40px 0;
+
+ p {
+ color: #666666;
+ }
+ }
+
+ .s3-input {
+ flex-direction: column;
+
+ .input {
+ background-color: $themeReverse;
+ color: $theme;
+ border: 0;
+ margin-top: 10px;
+ padding: 20px;
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ textarea {
+ resize: vertical;
+ }
+
+ .btnSub {
+ padding: 30px 0;
+
+ .btn-link {
+ background-color: #2f2f2f;
+ padding: 10px 30px;
+ color: #ffffff;
+ }
+ }
+
+ .err {
+ p {
+ margin-top: 3px;
+ color: $red;
+ }
+
+ input,
+ textarea {
+ border: 1px solid $red;
+ }
+ }
+ }
+ }
+
+ .location {
+ //padding: 40px !important;
+
+ //@media (max-width: 768px) {
+ // padding-top: 0 !important;
+ // padding-bottom: 0 !important;
+ //}
+
+ .s3-title-col2 {
+ margin-bottom: 20px;
+
+ .h6 {
+ color: $theme;
+ border-bottom: 3px solid #d8d8d8;
+ display: inline;
+ padding: 10px 0;
+ }
+ }
+
+ .s3-address {
+ margin: 40px 0;
+
+ P {
+ color: #666666;
+ }
+ }
+
+ .email {
+ display: inherit;
+ color: #666666;
+ margin-top: 30px;
+
+ span {
+ a {
+ color: #666666;
+ @extend %defaultTransition;
+
+ &:hover {
+ color: $red;
+ @extend %defaultTransition;
+ }
+ }
+ }
+ }
+
+ .tel {
+ color: #666666;
+ margin: 10px 0;
+
+ span {
+ a {
+ display: inline-block !important;
+ direction: ltr !important;
+ color: #666666;
+ @extend %defaultTransition;
+
+ &:hover {
+ color: $red;
+ @extend %defaultTransition;
+ }
+ }
+ }
+ }
+
+ .s3-title-col2-row2 {
+ margin-top: 50px;
+
+ .h6 {
+ color: $theme;
+ border-bottom: 3px solid #d8d8d8;
+ display: inline;
+ margin-bottom: 10px;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- Consents Page --------------------------------
+.consents-page {
+ background-color: #f1f1f1;
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ //background: $dimmer, url("/img/GalleryPage/page-title.png") no-repeat center;
+ background-position: center;
+ background-size: cover;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2-Img-BG {
+ .parallax {
+ .view-img {
+ margin-bottom: 10px;
+
+ .img {
+ width: 100%;
+ text-align: center;
+ @extend %defaultTransition;
+ @include boxShadow(0 5px 20px rgba(#000, 0.7));
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- Search Page --------------------------------
+.search_page {
+ min-height: 89vh;
+
+ /*-------------------------------- Section 1 -----------------------------------*/
+ .s1-Img-BG {
+ overflow: hidden;
+
+ .parallax {
+ height: $sizeHeader;
+ align-items: center;
+ justify-content: center;
+ display: flex;
+ //background: $dimmer, url("/img/GalleryPage/page-title.png") no-repeat center;
+ background-position: center;
+ background-size: cover;
+
+ h1 {
+ color: rgba($themeReverse, 0.7);
+ text-transform: uppercase;
+ }
+ }
+ }
+
+ /*-------------------------------- Section 2 -----------------------------------*/
+ .s2 {
+ .view-items {
+ margin: 20px 0;
+
+ h2 {
+ border-bottom: 2px solid $red;
+ padding-bottom: 5px;
+ margin-bottom: 10px;
+ }
+
+ .view-item {
+ margin: 20px 0;
+ cursor: pointer;
+ @extend %defaultTransition;
+
+ p {
+ font-weight: bold;
+ }
+
+ &:hover {
+ p {
+ color: $red;
+ }
+ }
+ }
+ }
+ }
+}
+
+//------------------------------- PWA Page --------------------------------
+.pwa--page {
+ margin-top: 70px;
+ min-height: calc(100vh - 95px);
+ width: 100%;
+ padding-top: 100px;
+
+ h2,
+ span,
+ a {
+ font-family: 'dubaiM', sans-serif;
+ }
+
+ .section-title {
+ margin-bottom: 30px;
+ flex-direction: column;
+ display: flex;
+ align-items: center;
+
+ .s9-Desc {
+ display: inline-flex;
+ // align-items: center;
+ i {
+ color: $red;
+ font-size: 10px;
+ margin: 5px;
+ }
+ }
+
+ h2 {
+ color: #000000;
+ text-align: center;
+ text-decoration: underline;
+ text-decoration-thickness: 2px;
+ text-underline-position: under;
+ text-decoration-color: $red;
+ margin-bottom: 20px;
+ }
+ }
+}
diff --git a/assets/scss/_printStyles.scss b/assets/scss/_printStyles.scss
new file mode 100644
index 0000000..d24022e
--- /dev/null
+++ b/assets/scss/_printStyles.scss
@@ -0,0 +1,220 @@
+body {
+ -webkit-print-color-adjust: exact !important;
+}
+
+@page {
+ size: landscape !important;
+}
+
+#box-face-receipt {
+ padding: 20px;
+
+ .receipt-body {
+ border: 1px solid rgba(#000, 1);
+ padding: 15px;
+
+ .infoRow {
+ margin-bottom: 15px;
+ }
+
+ .topLeft {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ background: rgba(0, 0, 0, 0.05);
+ padding: 10px;
+ flex-basis: 300px;
+
+ &:first-child {
+ margin-bottom: 5px;
+ }
+ }
+
+ h2 {
+ margin-bottom: 20px;
+ }
+
+ b, span {
+ display: inline-block;
+ }
+
+ b {
+ margin-left: 5px;
+ }
+
+ .receiverInfo {
+ .topLeft {
+ background: transparent;
+ justify-content: flex-end;
+ align-items: flex-start;
+
+ svg {
+ width: 200px;
+
+ path, rect {
+ fill: #000;
+ }
+ }
+ }
+ }
+ }
+}
+
+#box-inner-receipt {
+ padding: 20px;
+
+ .receipt-body {
+ border: 1px solid rgba(#000, 1);
+ padding: 15px;
+
+ .topBar {
+ margin-bottom: 30px;
+
+ svg {
+ width: 200px;
+
+ path, rect {
+ fill: #000;
+ }
+ }
+ }
+
+ .topLeft {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ background: rgba(0, 0, 0, 0.05);
+ padding: 10px;
+ flex-basis: 300px;
+
+ &:first-child {
+ margin-left: 5px;
+ }
+ }
+
+ .stuff-list {
+ margin-bottom: 30px !important;
+
+ @media print {
+ .notice {
+ display: none;
+ }
+ }
+
+ table {
+ width: 100% !important;
+
+ thead {
+ tr {
+ background: rgba(0, 0, 0, 0.7) !important;
+ color: #fff !important;
+ }
+ }
+
+ tr {
+ background-color: #E0E6ED !important;
+
+ &.odd {
+ background-color: #8A92A9 !important;
+ }
+
+ td, th {
+ padding: 10px !important;
+ text-align: center !important;
+ }
+ }
+ }
+ }
+ }
+
+}
+
+#factor-layout {
+ border: 1px dashed #000;
+ padding: 10px;
+ margin-bottom: 30px;
+
+ span, p {
+ font-family: 'iranYekanR', sans-serif;
+ color: #000;
+ }
+
+ .pageHeader {
+ margin-bottom: 10px;
+
+ .row1 {
+ h2 {
+ text-align: center;
+ font-family: 'iranYekanB';
+ font-weight: bold;
+ }
+ }
+
+ .row2 {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-end;
+
+ p {
+ width: 200px;
+ text-align: right;
+ }
+ }
+ }
+
+ .factor {
+ width: 100%;
+ border: 1px solid #000;
+
+
+ .factorInfo {
+ display: flex;
+ flex-direction: column;
+ padding: 10px;
+
+ p {
+ text-align: right;
+ padding: 10px 0;
+ color: #000;
+ }
+
+ .row1 {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+
+ p {
+ flex-basis: 33.33%;
+ }
+ }
+ }
+
+ table {
+ width: 100%;
+
+ thead {
+ tr {
+ th {
+ background: rgba(#000, 0.1);
+ text-align: center;
+ border: 1px solid #000;
+ padding: 5px;
+ }
+ }
+ }
+
+ tbody {
+ tr {
+ td, th {
+ text-align: center;
+ border: 1px solid #000;
+ padding: 5px;
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/assets/scss/_variables.scss b/assets/scss/_variables.scss
new file mode 100644
index 0000000..07b8f7a
--- /dev/null
+++ b/assets/scss/_variables.scss
@@ -0,0 +1,29 @@
+////// colors
+$theme: #000;
+$themeTransparent: transparent;
+$themeSecond: #191919;
+$themeReverse: #fff;
+$themeTxtColorBlack: #000;
+$themeTxtColorWhite: #fff;
+$themeTxtColorGreen: #87BF00;
+$red: #ed1d24;
+
+
+////////// linear-gradient
+$dimmer: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2));
+
+
+////// sizes
+$headerMainNavHeight: 60px;
+
+$bigTitle: 50px;
+$h1: 38px;
+$h2: 30px;
+$h3: 24px;
+$h4: 22px;
+$h5: 20px;
+$h6: 18px;
+$span: 13px;
+
+
+$sizeHeader: 35vh
diff --git a/assets/scss/main.scss b/assets/scss/main.scss
new file mode 100644
index 0000000..b923685
--- /dev/null
+++ b/assets/scss/main.scss
@@ -0,0 +1,9 @@
+@import "variables";
+@import "mixins";
+@import "extentions";
+@import "fonts";
+@import "globalStyles";
+@import "pages";
+@import "CKEditorStyle";
+@import "el_ui_rtl";
+@import "printStyles";
diff --git a/components/FormBtn.vue b/components/FormBtn.vue
new file mode 100644
index 0000000..a4ec789
--- /dev/null
+++ b/components/FormBtn.vue
@@ -0,0 +1,18 @@
+
+
+ {{ label }}
+
+
+
+
diff --git a/components/Logo.vue b/components/Logo.vue
new file mode 100644
index 0000000..b1de012
--- /dev/null
+++ b/components/Logo.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/components/PWAFooter.vue b/components/PWAFooter.vue
new file mode 100644
index 0000000..63de4cc
--- /dev/null
+++ b/components/PWAFooter.vue
@@ -0,0 +1,8 @@
+
+
+
diff --git a/components/PageLoad.vue b/components/PageLoad.vue
new file mode 100644
index 0000000..e156400
--- /dev/null
+++ b/components/PageLoad.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
diff --git a/components/PipeWCM.vue b/components/PipeWCM.vue
new file mode 100644
index 0000000..7ebda61
--- /dev/null
+++ b/components/PipeWCM.vue
@@ -0,0 +1,105 @@
+
+
+
+
+ {{ content.s10.t12 }}
+
+
+
{{ useInch ? content.s10.t13 : content.s10.t4 }}
+
+
+
+
{{ useInch ? content.s10.t14 : content.s10.t5 }}
+
+
+
+
+
{{ content.s10.t6 }}
+
+
+
+
+
+
+
+ {{ content.s10.t2 }}
+
+
+
+ {{ content.s10.t9 }}
+
+
+ {{ pipeWeight }}
+
+
+ {{ content.s10.t11 }}
+
+
+
+
+
+
+
+
+
diff --git a/components/PreLoader.vue b/components/PreLoader.vue
new file mode 100644
index 0000000..a608cc0
--- /dev/null
+++ b/components/PreLoader.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/SheetWCM.vue b/components/SheetWCM.vue
new file mode 100644
index 0000000..c7f175c
--- /dev/null
+++ b/components/SheetWCM.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
{{ meterUnitLength ? content.s10.t6 : content.s10.t18 }}
+
+
+ {{ content.s10.t17 }}
+
+
+
+
{{ meterUnitWidth ? content.s10.t10 : content.s10.t19 }}
+
+
+ {{ content.s10.t17 }}
+
+
+
+
{{ meterUnitThickness ? content.s10.t20 : content.s10.t5 }}
+
+
+ {{ content.s10.t17 }}
+
+
+
+
{{ content.s10.t7 }}
+
+
+
+
+
+ {{ content.s10.t2 }}
+
+
+
+
+ {{ content.s10.t3 }}
+
+
+ {{ sheetWeight }}
+
+
+ {{ content.s10.t16 }}
+
+
+
+
+
+
+
+
+
+
diff --git a/components/SiteFooter.vue b/components/SiteFooter.vue
new file mode 100644
index 0000000..7e3148b
--- /dev/null
+++ b/components/SiteFooter.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
diff --git a/components/SiteHeader.vue b/components/SiteHeader.vue
new file mode 100644
index 0000000..d5b283c
--- /dev/null
+++ b/components/SiteHeader.vue
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
diff --git a/components/StrokedTxt.vue b/components/StrokedTxt.vue
new file mode 100644
index 0000000..d433047
--- /dev/null
+++ b/components/StrokedTxt.vue
@@ -0,0 +1,14 @@
+
+
+
+ {{ text }}
+ {{ title }}
+
+
+
+
+
diff --git a/components/admin/CustomSubHeader.vue b/components/admin/CustomSubHeader.vue
new file mode 100644
index 0000000..7f60799
--- /dev/null
+++ b/components/admin/CustomSubHeader.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
diff --git a/components/admin/TheFooter.vue b/components/admin/TheFooter.vue
new file mode 100644
index 0000000..4948302
--- /dev/null
+++ b/components/admin/TheFooter.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/components/admin/TheHeader.vue b/components/admin/TheHeader.vue
new file mode 100644
index 0000000..862b701
--- /dev/null
+++ b/components/admin/TheHeader.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/admin/TheHeaderDropdownAccnt.vue b/components/admin/TheHeaderDropdownAccnt.vue
new file mode 100644
index 0000000..9086de6
--- /dev/null
+++ b/components/admin/TheHeaderDropdownAccnt.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
diff --git a/components/admin/TheSidebar.vue b/components/admin/TheSidebar.vue
new file mode 100644
index 0000000..d32d966
--- /dev/null
+++ b/components/admin/TheSidebar.vue
@@ -0,0 +1,86 @@
+
+ $store.commit('admin/set', ['sidebarShow', value])"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/admin/_nav.js b/components/admin/_nav.js
new file mode 100644
index 0000000..5b279e8
--- /dev/null
+++ b/components/admin/_nav.js
@@ -0,0 +1,67 @@
+export default [
+ {
+ _name: 'CSidebarNav',
+ _children: [
+ {
+ _name: 'CSidebarNavItem',
+ name: 'صفحه اصلی',
+ to: {name: 'admin'},
+ icon: 'cil-speedometer'
+ },
+ // {
+ // _name: 'CSidebarNavTitle',
+ // _children: ['مدیریت صفحات داینامیک']
+ // },
+ {
+ _name: 'CSidebarNavDropdown',
+ name: 'دانلود ها',
+ // route: {name: 'admin-download'},
+ fontIcon: 'fal fa-arrow-alt-to-bottom',
+ items: [
+ {
+ name: 'لیست',
+ to: {name: 'admin-downloads-page', params: {page: 1}},
+ exact: false
+ },
+ {
+ name: 'دسته بندی ها',
+ to: {name: 'admin-download-categories'}
+ }
+
+ ]
+ },
+ {
+ _name: 'CSidebarNavItem',
+ name: 'آموزش ها',
+ to: {name: 'admin-learning-page', params: {page: 1}},
+ exact: false,
+ icon: 'cil-chart-pie'
+ },
+ {
+ _name: 'CSidebarNavItem',
+ name: 'شرایط گارانتی',
+ to: {name: 'admin-warranty-terms-page', params: {page: 1}},
+ exact: false,
+ fontIcon: 'fal fa-file-alt'
+ },
+ {
+ _name: 'CSidebarNavItem',
+ name: 'سوالات متداول',
+ to: {name: 'admin-FAQ'},
+ exact: false,
+ fontIcon: 'fal fa-graduation-cap'
+ },
+ {
+ _name: 'CSidebarNavItem',
+ name: 'پیام های صفحه تماس با ما',
+ to: {name: 'admin-contact-us'},
+ exact: false,
+ badge: {
+ color: 'primary',
+ // text: this.computed.unreadMessages
+ },
+ fontIcon: 'fal fa-id-card-alt'
+ }
+ ]
+ }
+]
diff --git a/components/admin/charts/CChartBarExample.vue b/components/admin/charts/CChartBarExample.vue
new file mode 100644
index 0000000..a1c8214
--- /dev/null
+++ b/components/admin/charts/CChartBarExample.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
diff --git a/components/admin/charts/CChartBarSimple.vue b/components/admin/charts/CChartBarSimple.vue
new file mode 100644
index 0000000..ed87d86
--- /dev/null
+++ b/components/admin/charts/CChartBarSimple.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
diff --git a/components/admin/charts/CChartDoughnutExample.vue b/components/admin/charts/CChartDoughnutExample.vue
new file mode 100644
index 0000000..4393730
--- /dev/null
+++ b/components/admin/charts/CChartDoughnutExample.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
diff --git a/components/admin/charts/CChartLineExample.vue b/components/admin/charts/CChartLineExample.vue
new file mode 100644
index 0000000..2b2ecf2
--- /dev/null
+++ b/components/admin/charts/CChartLineExample.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/components/admin/charts/CChartLineSimple.vue b/components/admin/charts/CChartLineSimple.vue
new file mode 100644
index 0000000..0f9bfad
--- /dev/null
+++ b/components/admin/charts/CChartLineSimple.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
diff --git a/components/admin/charts/CChartPieExample.vue b/components/admin/charts/CChartPieExample.vue
new file mode 100644
index 0000000..3178695
--- /dev/null
+++ b/components/admin/charts/CChartPieExample.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
diff --git a/components/admin/charts/CChartPolarAreaExample.vue b/components/admin/charts/CChartPolarAreaExample.vue
new file mode 100644
index 0000000..4f9fc31
--- /dev/null
+++ b/components/admin/charts/CChartPolarAreaExample.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
diff --git a/components/admin/charts/CChartRadarExample.vue b/components/admin/charts/CChartRadarExample.vue
new file mode 100644
index 0000000..bd5a634
--- /dev/null
+++ b/components/admin/charts/CChartRadarExample.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
diff --git a/components/admin/charts/MainChartExample.vue b/components/admin/charts/MainChartExample.vue
new file mode 100644
index 0000000..d4251e9
--- /dev/null
+++ b/components/admin/charts/MainChartExample.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
diff --git a/components/admin/widgets/WidgetsBrand.vue b/components/admin/widgets/WidgetsBrand.vue
new file mode 100644
index 0000000..55ca4a0
--- /dev/null
+++ b/components/admin/widgets/WidgetsBrand.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/admin/widgets/WidgetsDropdown.vue b/components/admin/widgets/WidgetsDropdown.vue
new file mode 100644
index 0000000..63f5177
--- /dev/null
+++ b/components/admin/widgets/WidgetsDropdown.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+ Action
+ Another action
+ Something else here...
+ Disabled action
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action
+ Another action
+ Something else here...
+ Disabled action
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action
+ Another action
+ Something else here...
+ Disabled action
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action
+ Another action
+ Something else here...
+ Disabled action
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/icon/BlogDetailsCategoryIcon.vue b/components/icon/BlogDetailsCategoryIcon.vue
new file mode 100644
index 0000000..bd261be
--- /dev/null
+++ b/components/icon/BlogDetailsCategoryIcon.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
diff --git a/components/icon/BlogDetailsFolderIcon.vue b/components/icon/BlogDetailsFolderIcon.vue
new file mode 100644
index 0000000..173df37
--- /dev/null
+++ b/components/icon/BlogDetailsFolderIcon.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
diff --git a/components/icon/Logo.vue b/components/icon/Logo.vue
new file mode 100644
index 0000000..da89af6
--- /dev/null
+++ b/components/icon/Logo.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/nextLoader.vue b/components/nextLoader.vue
new file mode 100644
index 0000000..e69de29
diff --git a/components/openLoader.vue b/components/openLoader.vue
new file mode 100644
index 0000000..cdc3b83
--- /dev/null
+++ b/components/openLoader.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/pwaHeader.vue b/components/pwaHeader.vue
new file mode 100644
index 0000000..abbff3d
--- /dev/null
+++ b/components/pwaHeader.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/admin-auth.vue b/layouts/admin-auth.vue
new file mode 100644
index 0000000..302579f
--- /dev/null
+++ b/layouts/admin-auth.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/layouts/admin.vue b/layouts/admin.vue
new file mode 100644
index 0000000..7d22332
--- /dev/null
+++ b/layouts/admin.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/layouts/blank.vue b/layouts/blank.vue
new file mode 100644
index 0000000..f83acf6
--- /dev/null
+++ b/layouts/blank.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/layouts/default.vue b/layouts/default.vue
new file mode 100644
index 0000000..83950c3
--- /dev/null
+++ b/layouts/default.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
diff --git a/layouts/error.vue b/layouts/error.vue
new file mode 100644
index 0000000..dd1fe45
--- /dev/null
+++ b/layouts/error.vue
@@ -0,0 +1,20 @@
+
+
+
+
404
+
page not found
+
صفحه اصلی
+
+
+
{{error.statusCode}}
+
{{error.message}}
+
+
+
+
+
diff --git a/layouts/pwa.vue b/layouts/pwa.vue
new file mode 100644
index 0000000..e115594
--- /dev/null
+++ b/layouts/pwa.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
diff --git a/middleware/auth-admin.js b/middleware/auth-admin.js
new file mode 100644
index 0000000..64d124a
--- /dev/null
+++ b/middleware/auth-admin.js
@@ -0,0 +1,4 @@
+export default function ({$auth, redirect}) {
+ if ($auth.loggedIn && $auth.hasScope('admin')) return true
+ else return redirect('/admin/login')
+}
diff --git a/middleware/redirects.js b/middleware/redirects.js
new file mode 100644
index 0000000..49fe18a
--- /dev/null
+++ b/middleware/redirects.js
@@ -0,0 +1,11 @@
+export default function ({route, redirect, error}) {
+ ///////////// redirect to default local
+ if (route.path === '/') return redirect('/fa')
+ ///////////// local check
+ const lang = ['fa', 'en']
+ const isLocal = lang.includes(route.params.lang)
+ const isAdmin = route.path.includes('/admin')
+
+ if (isLocal || isAdmin) return null
+ else error({statusCode: 404, message: 'Page Not Found'})
+}
diff --git a/mixins/CoreUtils.js b/mixins/CoreUtils.js
new file mode 100644
index 0000000..4ce8c58
--- /dev/null
+++ b/mixins/CoreUtils.js
@@ -0,0 +1,175 @@
+export default {
+ methods: {
+ getCssCustomProperties() {
+ if (process.client) {
+ const cssCustomProperties = {}
+ const sheets = document.styleSheets
+ let cssText = ''
+ for (let i = sheets.length - 1; i > -1; i--) {
+ const rules = sheets[i].cssRules
+ for (let j = rules.length - 1; j > -1; j--) {
+ if (rules[j].selectorText === '.ie-custom-properties') {
+ // eslint-disable-next-line prefer-destructuring
+ cssText = rules[j].cssText
+ break
+ }
+ }
+
+ if (cssText) {
+ break
+ }
+ }
+
+ // eslint-disable-next-line unicorn/prefer-string-slice
+ cssText = cssText.substring(
+ cssText.lastIndexOf('{') + 1,
+ cssText.lastIndexOf('}')
+ )
+
+ cssText.split(';').forEach(property => {
+ if (property) {
+ const name = property.split(': ')[0]
+ const value = property.split(': ')[1]
+ if (name && value) {
+ cssCustomProperties[`--${name.trim()}`] = value.trim()
+ }
+ }
+ })
+ return cssCustomProperties
+ } else {
+ return null
+ }
+ },
+ deepObjectsMerge(target, source) {
+ // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties
+ for (const key of Object.keys(source)) {
+ if (source[key] instanceof Object) {
+ Object.assign(source[key], this.deepObjectsMerge(target[key], source[key]))
+ }
+ }
+
+ // Join `target` and modified `source`
+ Object.assign(target || {}, source)
+ return target
+ },
+ getColor(rawProperty, element = process.client ? document.body : null) {
+ const property = `--${rawProperty}`
+ const style = this.getStyle(property, element)
+ return style ? style : rawProperty
+ },
+ getStyle(property, element = process.client ? document.body : null) {
+ if (process.client) {
+ const minIEVersion = 10
+ const isIE1x = () => Boolean(document.documentMode) && document.documentMode >= minIEVersion
+ const isCustomProperty = property => property.match(/^--.*/i)
+ ///
+ let style
+
+ if (isCustomProperty(property) && isIE1x()) {
+ const cssCustomProperties = this.getCssCustomProperties()
+ style = cssCustomProperties[property]
+ } else {
+ style = window.getComputedStyle(element, null).getPropertyValue(property).replace(/^\s/, '')
+ }
+
+ return style
+ } else {
+ return null
+ }
+ },
+ hexToRgb(color) {
+ if (typeof color === 'undefined') {
+ throw new TypeError('Hex color is not defined')
+ }
+
+ const hex = color.match(/^#(?:[0-9a-f]{3}){1,2}$/i)
+
+ if (!hex) {
+ throw new Error(`${color} is not a valid hex color`)
+ }
+
+ let r
+ let g
+ let b
+
+ if (color.length === 7) {
+ r = parseInt(color.slice(1, 3), 16)
+ g = parseInt(color.slice(3, 5), 16)
+ b = parseInt(color.slice(5, 7), 16)
+ } else {
+ r = parseInt(color.slice(1, 2), 16)
+ g = parseInt(color.slice(2, 3), 16)
+ b = parseInt(color.slice(3, 5), 16)
+ }
+
+ return `rgba(${r}, ${g}, ${b})`
+ },
+ hexToRgba(color, opacity = 100) {
+ if (typeof color === 'undefined') {
+ throw new TypeError('Hex color is not defined')
+ }
+
+ const hex = color.match(/^#(?:[0-9a-f]{3}){1,2}$/i)
+
+ if (!hex) {
+ throw new Error(`${color} is not a valid hex color`)
+ }
+
+ let r
+ let g
+ let b
+
+ if (color.length === 7) {
+ r = parseInt(color.slice(1, 3), 16)
+ g = parseInt(color.slice(3, 5), 16)
+ b = parseInt(color.slice(5, 7), 16)
+ } else {
+ r = parseInt(color.slice(1, 2), 16)
+ g = parseInt(color.slice(2, 3), 16)
+ b = parseInt(color.slice(3, 5), 16)
+ }
+
+ return `rgba(${r}, ${g}, ${b}, ${opacity / 100})`
+ },
+ makeUid() {
+ const key = Math.random().toString(36).substr(2)
+ return 'uid-' + key
+ },
+ omitByKeys(originalObject, keys) {
+ var newObj = {}
+ var objKeys = Object.keys(originalObject)
+ for (var i = 0; i < objKeys.length; i++) {
+ !keys.includes(objKeys[i]) && (newObj[objKeys[i]] = originalObject[objKeys[i]])
+ }
+ return newObj
+ },
+ pickByKeys(originalObject, keys) {
+ var newObj = {}
+ for (var i = 0; i < keys.length; i++) {
+ newObj[keys[i]] = originalObject[keys[i]]
+ }
+ return newObj
+ },
+ rgbToHex(color) {
+ if (typeof color === 'undefined') {
+ throw new TypeError('Hex color is not defined')
+ }
+
+ if (color === 'transparent') {
+ return '#00000000'
+ }
+
+ const rgb = color.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i)
+
+ if (!rgb) {
+ throw new Error(`${color} is not a valid rgb color`)
+ }
+
+ const r = `0${parseInt(rgb[1], 10).toString(16)}`
+ const g = `0${parseInt(rgb[2], 10).toString(16)}`
+ const b = `0${parseInt(rgb[3], 10).toString(16)}`
+
+ return `#${r.slice(-2)}${g.slice(-2)}${b.slice(-2)}`
+ }
+ }
+}
diff --git a/mixins/axiosUploadProcess.js b/mixins/axiosUploadProcess.js
new file mode 100644
index 0000000..0fff497
--- /dev/null
+++ b/mixins/axiosUploadProcess.js
@@ -0,0 +1,25 @@
+const minimumDataSize = 100 //size unit = kilobytes (kb)
+
+export default {
+ data() {
+ return {
+ axiosConfig: {
+ onUploadProgress: progressEvent => {
+ if (progressEvent.total / 1024 > minimumDataSize) {
+ const text = 'درحال آپلود '
+ const uploadLayout = this.$loading({
+ lock: true,
+ text: text,
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ })
+ document.querySelector('.el-loading-text').innerText = text + Math.floor(((progressEvent.loaded / progressEvent.total) * 100)) + '%'
+ if ((progressEvent.loaded / progressEvent.total) * 100 === 100) {
+ uploadLayout.close()
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/mixins/unreadMessagesCounter.js b/mixins/unreadMessagesCounter.js
new file mode 100644
index 0000000..c34dedc
--- /dev/null
+++ b/mixins/unreadMessagesCounter.js
@@ -0,0 +1,16 @@
+export default {
+ mounted() {
+ this.checkMessages()
+ },
+ methods: {
+ checkMessages() {
+ if (this.$auth.loggedIn) {
+ this.$axios.get('/api/admin/contactUsMessages')
+ .then(res => {
+ let unreadCount = res.data.filter(item => !item.read)
+ this.$store.commit('admin/set', ['unreadMessagesCount', unreadCount.length])
+ })
+ }
+ }
+ }
+}
diff --git a/nuxt.config.js b/nuxt.config.js
new file mode 100644
index 0000000..dcab424
--- /dev/null
+++ b/nuxt.config.js
@@ -0,0 +1,111 @@
+const webpack = require('webpack');
+const serverport = 3711
+export default {
+ head: {
+ title: 'OrisOxin',
+ meta: [
+ { charset: 'utf-8' },
+ { name: 'viewport', content: 'width=device-width, initial-scale=1' },
+ { hid: 'description', name: 'description', content: '' }
+ ],
+ link: [
+ { rel: 'icon', type: 'image/png', href: '/favicon.png' },
+ { rel: 'stylesheet', type: 'text/css', href: '/css/bootstrap-grid.min.css' },
+ { rel: 'stylesheet', type: 'text/css', href: '/css/reset-css.css' },
+ { rel: 'stylesheet', type: 'text/css', href: '/css/fontawesome/css/all.min.css' },
+ { rel: 'stylesheet', type: 'text/css', href: '/js/lightBox/simple-lightbox.min.css' }
+ ],
+ script: [{ src: '/js/lightBox/simple-lightbox.min.js' }]
+ },
+ css: [
+ 'element-ui/lib/theme-chalk/index.css',
+ 'slick-carousel/slick/slick.css',
+ 'slick-carousel/slick/slick-theme.css',
+ '@/assets/scss/main.scss'
+ ],
+ plugins: [
+ '@/plugins/element-ui',
+ '@/plugins/gsap.client',
+ '@/plugins/core-ui.client',
+ '@/plugins/ckEditor.client',
+ '@/plugins/vueNetworkShare'
+ ],
+ components: ['~/components/', { path: '~/components/admin/', prefix: '' }],
+ buildModules: ['@nuxtjs/pwa'],
+ modules: [
+ '@nuxtjs/axios',
+ '@nuxtjs/auth-next'
+ ],
+ pwa: {
+ manifest: {
+ name: 'محاسبه وزن',
+ short_name: 'orisOxin cal',
+ description: false,
+ lang: 'fa',
+ useWebmanifestExtension: false,
+ start_url: '/fa/pwa'
+ },
+ meta: {
+ mobileAppIOS: true,
+ name: 'اریس اکسین'
+ },
+ workbox: {
+ cleanupOutdatedCaches: true
+ }
+ },
+ build: {
+ transpile: [/^element-ui/],
+ plugins: [
+ new webpack.ProvidePlugin({
+ $: 'jquery',
+ jQuery: 'jquery',
+ 'window.jQuery': 'jquery'
+ })
+ ],
+ splitChunks: {
+ layouts: true
+ },
+ babel: {
+ plugins: [['@babel/plugin-proposal-private-methods', { loose: true }]]
+ },
+ },
+
+ axios: {
+ proxy: true
+ },
+ proxy: {
+ '/api': { target: `http://0.0.0.0:${serverport}` }
+ },
+ router: {
+ linkActiveClass: 'active-link',
+ middleware: ['redirects']
+ },
+ serverMiddleware: ['~/server/index.js'],
+ server: {
+ host: '0.0.0.0',
+ port: 3000
+ },
+
+ auth: {
+ strategies: {
+ local: {
+ token: {
+ property: 'token',
+ required: true,
+ type: ''
+ },
+ user: {
+ property: 'user',
+ autoFetch: true
+ },
+ endpoints: {
+ login: { url: '/api/auth/login', method: 'post' },
+ logout: { url: '/api/auth/logout', method: 'delete' },
+ user: { url: '/api/auth/user', method: 'get' }
+ }
+ }
+ },
+ redirect: false
+ },
+
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..0cfaee4
--- /dev/null
+++ b/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "orixoxin",
+ "version": "1.0.0",
+ "private": false,
+ "scripts": {
+ "nodemon": "nodemon --watch server --exec \"nuxt start\"",
+ "nodemonDev": "nodemon --watch server --exec \"nuxt\"",
+ "dev": "nuxt",
+ "build": "nuxt build",
+ "start": "nuxt start",
+ "generate": "nuxt generate"
+ },
+ "dependencies": {
+ "@coreui/coreui": "^3.2.2",
+ "@coreui/icons": "^2.0.0-beta.5",
+ "@coreui/utils": "^1.3.1",
+ "@coreui/vue": "^3.1.2",
+ "@coreui/vue-chartjs": "^1.0.5",
+ "@nuxtjs/auth": "^4.9.1",
+ "@nuxtjs/auth-next": "5.0.0-1618898588.9655d0e",
+ "@nuxtjs/axios": "^5.13.1",
+ "bcryptjs": "^2.4.3",
+ "ckeditor4-vue": "^1.3.0",
+ "core-js": "^3.9.1",
+ "element-ui": "^2.15.1",
+ "express": "^4.17.1",
+ "express-fileupload": "^1.2.1",
+ "express-validator": "^6.10.1",
+ "gsap": "^3.6.1",
+ "jquery": "^3.6.0",
+ "jsonwebtoken": "^8.5.1",
+ "moment-jalaali": "^0.9.2",
+ "mongoose": "^5.12.5",
+ "mongoose-paginate-v2": "^1.3.18",
+ "nodemailer": "^6.6.5",
+ "nodemon": "^3.1.4",
+ "nuxt": "^2.15.3",
+ "read-excel-file": "^5.2.10",
+ "sass": "^1.77.6",
+ "scroll-to-element": "^2.0.3",
+ "sharp": "^0.28.1",
+ "slick-carousel": "^1.8.1",
+ "vue-social-sharing": "^3.0.7"
+ },
+ "devDependencies": {
+ "@nuxt/types": "^2.15.8",
+ "@nuxtjs/pwa": "^3.3.5",
+ "sass-loader": "^10.1.0"
+ }
+}
diff --git a/pages/_lang/about/index.vue b/pages/_lang/about/index.vue
new file mode 100644
index 0000000..7853c4b
--- /dev/null
+++ b/pages/_lang/about/index.vue
@@ -0,0 +1,573 @@
+
+
+
+
+
+
+ {{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t1 }}
+
+ {{ content.s2.t2 }}
+
+
{{ content.s2.t3 }}
+
+
+
+
+
+
{{ content.s2.t4 }}
+
+
+
+
{{ content.s2.t5 }}
+
+
+
+
{{ content.s2.t6 }}
+
+
+
+
+
+
{{ content.s2.t7 }}
+
+
+
+
{{ content.s2.t8 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s3.t1 }}
+
+ {{ content.s3.t2 }}
+
+
{{ content.s3.t3 }}
+
+
+
+
+
+
+
+
+
+
{{ content.s3.t6 }}
+
+ {{ content.s3.t7 }}
+
+
+
+
+
+
+
+
+
{{ content.s3.t12 }}
+
+ {{ content.s3.t13 }}
+
+
+
+
+
+
+
+
+
{{ content.s3.t4 }}
+
+ {{ content.s3.t5 }}
+
+
+
+
+
+
+
+
+
{{ content.s3.t10 }}
+
+ {{ content.s3.t11 }}
+
+
+
+
+
+
+
+
+
{{ content.s3.t8 }}
+
+ {{ content.s3.t9 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s6.t1 }}
+
+
+
+
+
+
+ {{ item.locale[$route.params.lang].first_name + ' ' + item.locale[$route.params.lang].last_name }}
+
+
{{ item.locale[$route.params.lang].position }}
+
+
+
+
+
+
+
+
{{ content.s6.t2 }}
+
+
+
+
+
+
+
+
+
+
+
{{ content.s11.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s7.t3 }}
+
+
+
+
+
{{ content.s7.t1 }}
+
+
+ {{ content.s7.t2 }}
+
+
+
+ {{ content.s7.t4 }}
+
+
+
+
+
+
+
+
+ {{ content.s7.t5 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s8.t1 }}
+
+
+ {{ content.s8.t2 }}
+
+
+
+
+
+
+
+
+
+
+ {{ content.s7.t4 }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s7.t5 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s9.t1 }}
+
+
+ {{ content.s9.t2 }}
+
+
+
+ {{ content.s7.t4 }}
+
+
+
+
+
+
+
+
+ {{ content.s7.t5 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s10.t1 }}
+
+
+ {{ content.s10.t2 }}
+
+
+
+ {{ content.s7.t4 }}
+
+
+
+
+
+
+
+
+ {{ content.s7.t5 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/activities/dieselConex.vue b/pages/_lang/activities/dieselConex.vue
new file mode 100644
index 0000000..bcce5e2
--- /dev/null
+++ b/pages/_lang/activities/dieselConex.vue
@@ -0,0 +1,165 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t1 }}
+
+
+
+
{{ content.s2.t2 }}
+
+
+
+
{{ content.s2.t3 }}
+
+
+
+
{{ content.s2.t4 }}
+
+
+
+
{{ content.s2.t5 }}
+
+
+
+
{{ content.s2.t6 }}
+
+
+
+
{{ content.s2.t7 }}
+
+
+
+
{{ content.s2.t8 }}
+
+
+
+
{{ content.s2.t9 }}
+
+
+
+
{{ content.s2.t10 }}
+
+
+
+
{{ content.s2.t11 }}
+
+
+
+
{{ content.s2.t12 }}
+
+
+
+
{{ content.s2.t13 }}
+
+
+
+
{{ content.s2.t14 }}
+
+
+
+
{{ content.s2.t15 }}
+
+
+
+
{{ content.s2.t16 }}
+
+
+
+
{{ content.s2.t17 }}
+
+
+
+
{{ content.s2.t18 }}
+
+
+
+
{{ content.s2.t19 }}
+
+
+
+
دانلود pdf
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/activities/drilling.vue b/pages/_lang/activities/drilling.vue
new file mode 100644
index 0000000..0b018d0
--- /dev/null
+++ b/pages/_lang/activities/drilling.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+ {{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s2.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/activities/index.vue b/pages/_lang/activities/index.vue
new file mode 100644
index 0000000..f30dc0d
--- /dev/null
+++ b/pages/_lang/activities/index.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+ {{ content.s1.t2 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t2 }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t3 }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t4 }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t5 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/activities/piping.vue b/pages/_lang/activities/piping.vue
new file mode 100644
index 0000000..f6149f5
--- /dev/null
+++ b/pages/_lang/activities/piping.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ {{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s2.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/activities/sm.vue b/pages/_lang/activities/sm.vue
new file mode 100644
index 0000000..6a3cb53
--- /dev/null
+++ b/pages/_lang/activities/sm.vue
@@ -0,0 +1,275 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s2.t1 }}
+
+
+
+
+
+
+
+
+
+ {{ content.s2.t2 }}
+
+
+
+
+
+
+
+ {{ content.s2.t3 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s2.t5 }}
+
+
+
+
+
+
+
+ {{ content.s2.t6 }}
+
+
+
+
+
+
+
+ {{ content.s2.t7 }}
+
+
+
+
+
+
+
+ {{ content.s2.t8 }}
+
+
+
+
+
+
+
+
+ {{ content.s2.t9 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/activities/srp.vue b/pages/_lang/activities/srp.vue
new file mode 100644
index 0000000..4ff4f89
--- /dev/null
+++ b/pages/_lang/activities/srp.vue
@@ -0,0 +1,233 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t1 }}
+
{{ content.s2.t6 }}
+
+
+
+
+
+
+ {{ content.s2.t2 }}
+
+
+
+
+
+ {{ content.s2.t3 }}
+
+
+
+
+
+ {{ content.s2.t4 }}
+
+
+
+
+
+ {{ content.s2.t5 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/activities/srpConex.vue b/pages/_lang/activities/srpConex.vue
new file mode 100644
index 0000000..2174eef
--- /dev/null
+++ b/pages/_lang/activities/srpConex.vue
@@ -0,0 +1,161 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t1 }}
+
+
+
+
{{ content.s2.t2 }}
+
+
+
+
{{ content.s2.t3 }}
+
+
+
+
{{ content.s2.t4 }}
+
+
+
+
{{ content.s2.t5 }}
+
+
+
+
{{ content.s2.t6 }}
+
+
+
+
{{ content.s2.t7 }}
+
+
+
+
{{ content.s2.t8 }}
+
+
+
+
{{ content.s2.t9 }}
+
+
+
+
{{ content.s2.t10 }}
+
+
+
+
{{ content.s2.t11 }}
+
+
+
+
{{ content.s2.t12 }}
+
+
+
+
{{ content.s2.t13 }}
+
+
+
+
{{ content.s2.t14 }}
+
+
+
+
{{ content.s2.t15 }}
+
+
+
+
{{ content.s2.t16 }}
+
+
+
+
{{ content.s2.t17 }}
+
+
+
+
{{ content.s2.t18 }}
+
+
+
+
دانلود pdf
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/activities/ward.vue b/pages/_lang/activities/ward.vue
new file mode 100644
index 0000000..7780993
--- /dev/null
+++ b/pages/_lang/activities/ward.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s2.t1 }}
+
+
+
+
+
+
+
+
+
+ {{ content.s2.t2 }}
+
+
+
+
+
+
+
+
+ {{ content.s2.t3 }}
+
+
+
+
+
+
+
+
+ {{ content.s2.t4 }}
+
+
+
+
+
+
+
+
+ {{ content.s2.t5 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s3.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s4.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s5.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s6.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/blog/_post.vue b/pages/_lang/blog/_post.vue
new file mode 100644
index 0000000..9ddb52e
--- /dev/null
+++ b/pages/_lang/blog/_post.vue
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
{{ jDateDay(post.createt_at) }}
+
{{ jDateMonth(post.created_at) }}
+
+
+
{{ post.locale[$route.params.lang].title }}
+
+
+ {{ content.s1.t1 }}
+
+ {{ post.category ? post.category.locale[$route.params.lang].title : 'No Category' }}
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t2 }}
+
+
{{ content.s2.t1 }}
+
+
{{ post.locale[$route.params.lang].title }}
+
+
+
+
+
+
+
+
+
+
+ {{ post.locale[$route.params.lang].last_section_image_title }}
+
+
+
{{ post.locale[$route.params.lang].last_section_image_description }}
+
+
+
+
+
+
+
+
+
+
{{ post.locale[$route.params.lang].last_section_title }}
+
+
+
{{ post.locale[$route.params.lang].last_section_description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/blog/index.vue b/pages/_lang/blog/index.vue
new file mode 100644
index 0000000..9eb689a
--- /dev/null
+++ b/pages/_lang/blog/index.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ jDate(item.created_at) }}
+
+
+
+
+
+
+
+ {{ item.category ? item.category.locale[$route.params.lang].title : 'No Category' }}
+
+
+
{{ item.locale[$route.params.lang].title }}
+
{{ item.locale[$route.params.lang].short_description }}
+
+
+ {{ content.s3.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s3.t2 }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/catalog/index.vue b/pages/_lang/catalog/index.vue
new file mode 100644
index 0000000..5b06742
--- /dev/null
+++ b/pages/_lang/catalog/index.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t2 }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/consents/index.vue b/pages/_lang/consents/index.vue
new file mode 100644
index 0000000..de21c96
--- /dev/null
+++ b/pages/_lang/consents/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/contact/index.vue b/pages/_lang/contact/index.vue
new file mode 100644
index 0000000..1478f36
--- /dev/null
+++ b/pages/_lang/contact/index.vue
@@ -0,0 +1,509 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t19 }}
+
ENGEMASA
+
+ {{ content.s2.t20 }}
+
+
+
+
+
+
+
{{ content.s2.t15 }}
+
NPA
+
+ {{ content.s2.t16 }}
+
+
+
+
+
+
+
{{ content.s2.t17 }}
+
+ {{ content.s2.t18 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t21 }}
+
+ {{ content.s2.t22 }}
+
+
+
+
+
+
+
{{ content.s2.t13 }}
+
HJ Metal Korea
+
+ {{ content.s2.t14 }}
+
+
+
+
+
+
+
{{ content.s2.t5 }}
+
+ {{ content.s2.t6 }}
+
+
+
+
+
+
+
{{ content.s2.t3 }}
+
+ {{ content.s2.t4 }}
+
+
+
+
+
+
+
{{ content.s2.t1 }}
+
+ {{ content.s2.t2 }}
+
+
+
+
+
+
+
{{ content.s2.t11 }}
+
+ {{ content.s2.t12 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s3.t1 }}
+
+
+
+ {{ content.s3.t2 }}
+
+
+
+
+
+
+
{{ content.s3.t8 }}
+
+
+
+
+ {{ content.s3.t9 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/gallery/_images.vue b/pages/_lang/gallery/_images.vue
new file mode 100644
index 0000000..4f31cb3
--- /dev/null
+++ b/pages/_lang/gallery/_images.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s3.t2 }}
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/gallery/index.vue b/pages/_lang/gallery/index.vue
new file mode 100644
index 0000000..d24e393
--- /dev/null
+++ b/pages/_lang/gallery/index.vue
@@ -0,0 +1,224 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.locale[$route.params.lang].title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s3.t2 }}
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/index.vue b/pages/_lang/index.vue
new file mode 100644
index 0000000..3e8b4c3
--- /dev/null
+++ b/pages/_lang/index.vue
@@ -0,0 +1,1053 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s1.t1 }}
+
+
+ {{ content.s1.t2 }}
+
+
+ {{ content.s1.t3 }} {{ content.s1.t4 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s2.t5 }}
+
+
+
+
+ {{ content.s2.t4 }}
+
+
+
+
+
+ {{ content.s2.t8 }}
+
+
+
+
+ {{ content.s2.t7 }}
+
+
+
+
+ {{ content.s2.t6 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t5 }}
+
+
+
+
+
+
+
+
{{ content.s2.t4 }}
+
+
+
+
+
+
+
+
{{ content.s2.t8 }}
+
+
+
+
+
+
+
+
{{ content.s2.t7 }}
+
+
+
+
+
+
+
+
{{ content.s2.t6 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s4.t1 }}
+
+
+
+
+
+
{{ categoryName(item.category) }}
+
+
{{ item.locale[$route.params.lang].title }}
+
+ {{ item.locale[$route.params.lang].short_description }}
+
+
+ {{ content.s4.t2 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content.s3.t1 }}
+
+
+
+
+
+
+
+
+ {{ cat.locale[$route.params.lang].name }}
+
+
+
+
+
+
+
+
{{ content.s3.t2 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s9.t1 }}
+
+
+
+
+
+ {{ content.s9.t2 }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s6.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s10.t1 }}
+
+
+
+
+
+
{{ content.s10.t8 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Brazil
+
ENGEMASA
+
+ {{ content.s8.t28 }}
+
+
+
+
+
+
+
+
+
+
china
+
NPA
+
+ {{ content.s8.t24 }}
+
+
+
+
+
+
+
+
+
+
+
{{ content.s8.t25 }}
+
+ {{ content.s8.t26 }}
+
+
+
+
+
+
+
+
+
+
+
{{ content.s8.t29 }}
+
+
+ {{ content.s8.t30 }}
+
+
+
+
+
+
+
+
+
+
+
{{ content.s8.t21 }}
+
HJ Metal Korea Co., Ltd
+
+ {{ content.s8.t22 }}
+
+
+
+
+
+
+
+
+
+
+
{{ content.s8.t5 }}
+
+ {{ content.s8.t6 }}
+
+
+
+
+
+
+
+
+
+
+
{{ content.s8.t3 }}
+
+ {{ content.s8.t4 }}
+
+
+
+
+
+
+
+
+
+
+
{{ content.s8.t19 }}
+
+ {{ content.s8.t20 }}
+
+
+
+
+
+
+
+
+
+
{{ content.s8.t1 }}
+
+ {{ content.s8.t2 }}
+
+
+
+
+
+
+
+
+
{{ content.s8.t7 }}
+
+
+
+
+
+
+
{{ content.s8.t11 }}:
+
{{ content.s8.t2 }}
+
+
+
+
+
+
+
+
+
{{ content.s8.t13 }}
+
+
+
+
{{ validation.name.msg }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/projects/_project.vue b/pages/_lang/projects/_project.vue
new file mode 100644
index 0000000..f37b7cb
--- /dev/null
+++ b/pages/_lang/projects/_project.vue
@@ -0,0 +1,254 @@
+
+
+
+
+
+
{{ project.locale[$route.params.lang].title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s2.t1 }}
+
+ {{ project.locale[$route.params.lang].description }}
+
+
+
+
+
{{ content.s2.t2 + ' : ' }}
+
+
+
{{ project.locale[$route.params.lang].client || '******' }}
+
+
+
{{ content.s2.t3 + ' : ' }}
+
+
+
{{ project.locale[$route.params.lang].size || '******' }}
+
+
+
{{ content.s2.t4 + ' : ' }}
+
+
+
{{ project.locale[$route.params.lang].area || '******' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ project.locale[$route.params.lang].s3_title }}
+
+ {{ project.locale[$route.params.lang].s3_description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ content.s7.t1 }}
+
+ {{ content.s7.t2 }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/projects/index.vue b/pages/_lang/projects/index.vue
new file mode 100644
index 0000000..180b1c2
--- /dev/null
+++ b/pages/_lang/projects/index.vue
@@ -0,0 +1,261 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.locale[$route.params.lang].client || '-' }}
+
+
+
+
+ {{ jDate(scope.row.project_date) }}
+
+
+
+
+ {{ scope.row.locale[$route.params.lang].size || '-' }}
+
+
+
+
+ {{ scope.row.locale[$route.params.lang].area || '-' }}
+
+
+
+
+
+ {{ content.s2.t7 }}
+
+ {{ content.s2.t7 }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/_lang/pwa/index.vue b/pages/_lang/pwa/index.vue
new file mode 100644
index 0000000..f5502ad
--- /dev/null
+++ b/pages/_lang/pwa/index.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
{{ content.s10.t1 }}
+
+
+
+
+
+
+
+
{{ content.s10.t8 }}
+
+
+
+
+
+
+
diff --git a/pages/_lang/search/index.vue b/pages/_lang/search/index.vue
new file mode 100644
index 0000000..8c0c67c
--- /dev/null
+++ b/pages/_lang/search/index.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
{{ content.s1.t1 }}
+
+
+
+
+
+
+
+
+
{{ content.s2.t1 }}
+
+
+ {{ item.locale[$route.params.lang].title }}
+
+
+
+
+
{{ content.s2.t2 }}
+
+
+ {{ item.locale[$route.params.lang].title }}
+
+
+
+
+
{{ content.s2.t3 }}
+
+
+ {{ item.locale[$route.params.lang].title }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/Login.vue b/pages/admin/Login.vue
new file mode 100644
index 0000000..f4d41c4
--- /dev/null
+++ b/pages/admin/Login.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+ پنل مدیریت اُریس اوکسین
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ login.remember_me = val"/>
+
+ *درصورتی که گزیه "مرا به خاطر بسپار" را فعال نکنید بعد از 1 ساعت باید دوباره وارد سیستم شوید.
+
+
+
+ ورود
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/blog-categories/_category.vue b/pages/admin/blog-categories/_category.vue
new file mode 100644
index 0000000..416e6dc
--- /dev/null
+++ b/pages/admin/blog-categories/_category.vue
@@ -0,0 +1,156 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ افزودن
+ بروزرسانی
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/blog-categories/index.vue b/pages/admin/blog-categories/index.vue
new file mode 100644
index 0000000..2462cc6
--- /dev/null
+++ b/pages/admin/blog-categories/index.vue
@@ -0,0 +1,120 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/blog-posts/_post.vue b/pages/admin/blog-posts/_post.vue
new file mode 100644
index 0000000..1302997
--- /dev/null
+++ b/pages/admin/blog-posts/_post.vue
@@ -0,0 +1,276 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ بروزرسانی
+
+
+
+
+
+
+
+
+ دسته بندی
+
+
+
+ {{ validation.category.msg }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ فارسی
+
+
+
+
+
+
+
+
+ توضیحات فارسی
+
+ {{ validation.fa_description.msg }}
+
+
+
+
+
+
+
+ انگلیسی
+
+
+
+
+
+
+
+
+ توضیحات انگلیسی
+
+ {{ validation.en_description.msg }}
+
+
+
+
+
+
+
+ کاور
+
+
+ {{ validation.cover.msg }}
+
+
+
+
+
+
+ تصویر بخش آخر
+
+
+ {{ validation.last_section_image.msg }}
+
+
+
+
+
+
+ آپلود ویدیو
+
+ {{ validation.last_section_image.msg }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/blog-posts/index.vue b/pages/admin/blog-posts/index.vue
new file mode 100644
index 0000000..b95648f
--- /dev/null
+++ b/pages/admin/blog-posts/index.vue
@@ -0,0 +1,141 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ منتشر شده
+ منتشر نشده
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/blog-posts/new.vue b/pages/admin/blog-posts/new.vue
new file mode 100644
index 0000000..b27c496
--- /dev/null
+++ b/pages/admin/blog-posts/new.vue
@@ -0,0 +1,114 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ افزودن
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ کاور
+
+
+ {{ validation.cover.msg }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/catalogs/_catalog.vue b/pages/admin/catalogs/_catalog.vue
new file mode 100644
index 0000000..6d3ab48
--- /dev/null
+++ b/pages/admin/catalogs/_catalog.vue
@@ -0,0 +1,194 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ افزودن
+ بروزرسانی
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ فایل کاتلوگ:
+
+ {{ validation.file.msg }}
+
+
+
+
+
+
+ تصویر
+
+
+ {{ validation.cover.msg }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/catalogs/index.vue b/pages/admin/catalogs/index.vue
new file mode 100644
index 0000000..8188615
--- /dev/null
+++ b/pages/admin/catalogs/index.vue
@@ -0,0 +1,143 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ فارسی و انگلیسی
+ نمایش داده نشود
+ فارسی
+ انگلیسی
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/comments/_comment.vue b/pages/admin/comments/_comment.vue
new file mode 100644
index 0000000..558f1ca
--- /dev/null
+++ b/pages/admin/comments/_comment.vue
@@ -0,0 +1,206 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ افزودن
+ بروزرسانی
+
+
+
+
+
+
+ فارسی
+
+
+
+
+
+
+ انگلیسی
+
+
+
+
+
+
+
+
+
+
+
+
+ تصویر
+
+
+
+ {{ validation.image.msg }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/comments/index.vue b/pages/admin/comments/index.vue
new file mode 100644
index 0000000..3e2e7bb
--- /dev/null
+++ b/pages/admin/comments/index.vue
@@ -0,0 +1,128 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/contact-us-messages/_message.vue b/pages/admin/contact-us-messages/_message.vue
new file mode 100644
index 0000000..f1114ff
--- /dev/null
+++ b/pages/admin/contact-us-messages/_message.vue
@@ -0,0 +1,96 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/contact-us-messages/index.vue b/pages/admin/contact-us-messages/index.vue
new file mode 100644
index 0000000..cf03977
--- /dev/null
+++ b/pages/admin/contact-us-messages/index.vue
@@ -0,0 +1,137 @@
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+ فیلتر
+
+
+
+
+ همه
+ خوانده نشده فارسی
+ خوانده نشده انگلیسی
+ خوانده شده فارسی
+ خوانده شده انگلیسی
+
+
+
+
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/gallery/_image.vue b/pages/admin/gallery/_image.vue
new file mode 100644
index 0000000..371ec05
--- /dev/null
+++ b/pages/admin/gallery/_image.vue
@@ -0,0 +1,182 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ افزودن
+ بروزرسانی
+
+
+
+
+
+
+
دسته بندی
+
+
+
+
{{ validation.category.msg }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ تصویر
+
+
+ {{ validation.image.msg }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/gallery/index.vue b/pages/admin/gallery/index.vue
new file mode 100644
index 0000000..3f3e4a1
--- /dev/null
+++ b/pages/admin/gallery/index.vue
@@ -0,0 +1,142 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.category.locale.fa.title }}
+ بدون دسته بندی
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/galleryCategories/_category.vue b/pages/admin/galleryCategories/_category.vue
new file mode 100644
index 0000000..56d8ce2
--- /dev/null
+++ b/pages/admin/galleryCategories/_category.vue
@@ -0,0 +1,192 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ افزودن
+ بروزرسانی
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ترتیب نمایش
+
+
+
+ {{ validation.index.msg }}
+
+
+
+
+
+
+
+
+
+ کاور
+
+
+ {{ validation.cover.msg }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/galleryCategories/index.vue b/pages/admin/galleryCategories/index.vue
new file mode 100644
index 0000000..42c0242
--- /dev/null
+++ b/pages/admin/galleryCategories/index.vue
@@ -0,0 +1,128 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/index.vue b/pages/admin/index.vue
new file mode 100644
index 0000000..630bc65
--- /dev/null
+++ b/pages/admin/index.vue
@@ -0,0 +1,36 @@
+
+
+
+ {{ title }}
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+ به پنل مدیریت وبسایت خوش آمدید
+
+
+
+
+
+
diff --git a/pages/admin/projectCategories/_category.vue b/pages/admin/projectCategories/_category.vue
new file mode 100644
index 0000000..fa6d1d9
--- /dev/null
+++ b/pages/admin/projectCategories/_category.vue
@@ -0,0 +1,248 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ افزودن
+ بروزرسانی
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ افزودن دسته بندی زیر مجموعه:
+
+
+
+
+
+ افزودن
+
+
+
+
+ {{ tag.locale.fa.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/projectCategories/index.vue b/pages/admin/projectCategories/index.vue
new file mode 100644
index 0000000..8b7bb1d
--- /dev/null
+++ b/pages/admin/projectCategories/index.vue
@@ -0,0 +1,120 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/projects/_project.vue b/pages/admin/projects/_project.vue
new file mode 100644
index 0000000..26ed40b
--- /dev/null
+++ b/pages/admin/projects/_project.vue
@@ -0,0 +1,545 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ بروزرسانی
+
+
+
+
+
+
+
+
+
+
+ دسته بندی
+
+
+
+ {{ validation.category.msg }}
+
+ دسته بندی زیر مجموعه
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ نسخه انگلیسی
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ نسخه فارسی
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ کاور صفحه
+
+
+
+ {{ validation.cover.msg }}
+
+
+
+
+
+
+
+
+ تصویر بخش دوم صفحه
+
+
+
+ {{ validation.s2_image.msg }}
+
+
+
+
+
+
+
+
+ تصویر بخش چهارم صفحه
+
+
+
+ {{ validation.s4_image.msg }}
+
+
+
+
+
+
+
+
+ تصویر بخش پنجم صفحه
+
+
+
+ {{ validation.s5_image.msg }}
+
+
+
+
+
+
+
+
+ تصویر بخش ششم صفحه
+
+
+
+ {{ validation.s6_image.msg }}
+
+
+
+
+
+
+
+
+ گالری تصاویر پروژه
+
+
+
+ {{ validation.image.msg }}
+ افزودن
+
+ تصاویر
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/projects/index.vue b/pages/admin/projects/index.vue
new file mode 100644
index 0000000..ae1bafc
--- /dev/null
+++ b/pages/admin/projects/index.vue
@@ -0,0 +1,157 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.category.locale.fa.name }}
+ ({{ getTagName(scope.row.category._id, scope.row.tag) }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/projects/new.vue b/pages/admin/projects/new.vue
new file mode 100644
index 0000000..a7bd0f1
--- /dev/null
+++ b/pages/admin/projects/new.vue
@@ -0,0 +1,151 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ افزودن
+
+
+
+
+
+
+
+
+
+ دسته بندی
+
+
+
+ {{ validation.category.msg }}
+
+
+ دسته بندی زیر مجموعه
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/settings/index.vue b/pages/admin/settings/index.vue
new file mode 100644
index 0000000..4454b13
--- /dev/null
+++ b/pages/admin/settings/index.vue
@@ -0,0 +1,265 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+
+
+
+
+
+ کاور صفحه درباره ما
+
+
+
+
+
+
+
+
+ عکس 600*1920 باشد. در غیر این صورت اتوماتیک بریده می شود.
+
+ {{ validation.aboutUS.msg }}
+
+
+
+
+
+ کاور صفحه فعالیت ها
+
+
+
+
+
+
+
+
+ عکس 600*1920 باشد. در غیر این صورت اتوماتیک بریده می شود.
+
+ {{ validation.activity.msg }}
+
+
+
+
+
+ کاور صفحه پروژه ها
+
+
+
+
+
+
+
+
+ عکس 600*1920 باشد. در غیر این صورت اتوماتیک بریده می شود.
+
+ {{ validation.projects.msg }}
+
+
+
+
+
+ کاور صفحه گالری
+
+
+
+
+
+
+
+
+ عکس 600*1920 باشد. در غیر این صورت اتوماتیک بریده می شود.
+
+ {{ validation.gallery.msg }}
+
+
+
+
+
+ کاور صفحه کاتالوگ
+
+
+
+
+
+
+
+
+ عکس 600*1920 باشد. در غیر این صورت اتوماتیک بریده می شود.
+
+ {{ validation.catalog.msg }}
+
+
+
+
+
+ کاور صفحه رویداد
+
+
+
+
+
+
+
+
+ عکس 600*1920 باشد. در غیر این صورت اتوماتیک بریده می شود.
+
+ {{ validation.blogs.msg }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/slider/_slide.vue b/pages/admin/slider/_slide.vue
new file mode 100644
index 0000000..b0265ba
--- /dev/null
+++ b/pages/admin/slider/_slide.vue
@@ -0,0 +1,213 @@
+
+
+
+
+
+
diff --git a/pages/admin/slider/index.vue b/pages/admin/slider/index.vue
new file mode 100644
index 0000000..2c853c5
--- /dev/null
+++ b/pages/admin/slider/index.vue
@@ -0,0 +1,126 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ عکس
+ ویدیو
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/team/_team.vue b/pages/admin/team/_team.vue
new file mode 100644
index 0000000..455b4cd
--- /dev/null
+++ b/pages/admin/team/_team.vue
@@ -0,0 +1,223 @@
+
+
+
+ {{ title }}
+ برگشت به صفحه قبل
+ افزودن
+ بروزرسانی
+
+
+
+
+
+
+ شماره ترتیب نمایش
+
+
+
+
+ {{ validation.index.msg }}
+ فارسی
+
+
+
+
+
+
+ انگلیسی
+
+
+
+
+
+
+
+
+
+
+
+
+ تصویر
+
+
+
+ {{ validation.image.msg }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/admin/team/index.vue b/pages/admin/team/index.vue
new file mode 100644
index 0000000..1546854
--- /dev/null
+++ b/pages/admin/team/index.vue
@@ -0,0 +1,130 @@
+
+
+
+ {{ title }}
+ افزودن
+
+
+
+
+
+
+ {{ list_title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.locale.fa.first_name + ' ' + scope.row.locale.fa.last_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/ckEditor.client.js b/plugins/ckEditor.client.js
new file mode 100644
index 0000000..4c10cbb
--- /dev/null
+++ b/plugins/ckEditor.client.js
@@ -0,0 +1,4 @@
+import Vue from 'vue'
+import CKEditor from 'ckeditor4-vue'
+
+Vue.use(CKEditor)
diff --git a/plugins/core-ui.client.js b/plugins/core-ui.client.js
new file mode 100644
index 0000000..856feb5
--- /dev/null
+++ b/plugins/core-ui.client.js
@@ -0,0 +1,11 @@
+import Vue from 'vue'
+import CoreUi from '@coreui/vue'
+import CoreUiVueCharts from '@coreui/vue-chartjs'
+import {iconsSet as icons} from '../assets/admin/icons/icons.js'
+
+Vue.use(CoreUiVueCharts)
+Vue.use(CoreUi)
+
+export default ({app}) => {
+ app.icons = icons
+}
diff --git a/plugins/element-ui.js b/plugins/element-ui.js
new file mode 100644
index 0000000..9ec8b61
--- /dev/null
+++ b/plugins/element-ui.js
@@ -0,0 +1,5 @@
+import Vue from 'vue'
+import Element from 'element-ui'
+import locale from 'element-ui/lib/locale/lang/en'
+
+Vue.use(Element, { locale })
diff --git a/plugins/gsap.client.js b/plugins/gsap.client.js
new file mode 100644
index 0000000..7605a5f
--- /dev/null
+++ b/plugins/gsap.client.js
@@ -0,0 +1,15 @@
+import Vue from 'vue'
+import gsap from 'gsap'
+import ScrollToPlugin from 'gsap/src/ScrollToPlugin'
+import ScrollTrigger from 'gsap/src/ScrollTrigger'
+import MotionPath from 'gsap/src/MotionPathPlugin'
+
+gsap.registerPlugin(ScrollToPlugin)
+gsap.registerPlugin(ScrollTrigger)
+gsap.registerPlugin(MotionPath)
+Vue.prototype.$gsap = gsap
+
+export default (context, inject) => {
+ context.app.$gsap = gsap
+}
+
diff --git a/plugins/vueNetworkShare.js b/plugins/vueNetworkShare.js
new file mode 100644
index 0000000..0697497
--- /dev/null
+++ b/plugins/vueNetworkShare.js
@@ -0,0 +1,4 @@
+import Vue from 'vue'
+import VueSocialSharing from 'vue-social-sharing'
+
+Vue.use(VueSocialSharing)
diff --git a/server/OrisOxin.activities.json b/server/OrisOxin.activities.json
new file mode 100644
index 0000000..008965c
--- /dev/null
+++ b/server/OrisOxin.activities.json
@@ -0,0 +1,29 @@
+[{
+ "_id": {
+ "$oid": "60c069fb41cf5fb1b0b32b2d"
+ },
+ "locale": {
+ "fa": {
+ "title": "زنجیره تامین خطوط لوله نفت، گاز و آب",
+ "description": "
یکی از مهمترین فعالیت های شرکت اُریس اوکسین تأمین لوله های فولادی جهت خطوط انتقال نفت و گاز متناسب با محیط های ترش و شیرین به صورت بدون درز و درزدار می باشد...
"
+ },
+ "en": {
+ "title": "SUPPLY CHAIN OF OIL, GAS AND WATER PIPELINES",
+ "description": "One of the most important activities of Oris Oxin Company is to supply seamed and seamless steel pipes for oil and gas transmission lines proportionate to sour and sweet mediums...
"
+ }
+ },
+ "cover": "activity_1670110870931.jpg",
+ "thumb": "activityThumb_1671972749687.jpg",
+ "sections": [],
+ "images": [],
+ "videos": [],
+ "created_at": {
+ "$date": "2021-12-03T13:40:32.689Z"
+ },
+ "updated_at": {
+ "$date": "2021-12-25T13:32:29.708Z"
+ },
+ "__v": 0,
+ "pipe_module": true,
+ "sheet_module": false
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.blogcategories.json b/server/OrisOxin.blogcategories.json
new file mode 100644
index 0000000..dfadfbe
--- /dev/null
+++ b/server/OrisOxin.blogcategories.json
@@ -0,0 +1,66 @@
+[{
+ "_id": {
+ "$oid": "60c069fb41cf5fb1b0b32b2d"
+ },
+ "locale": {
+ "fa": {
+ "title": "پتروشیمی",
+ "description": ""
+ },
+ "en": {
+ "title": "Petrochemical",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-06-09T08:52:59.271Z"
+ },
+ "updated_at": {
+ "$date": "2021-06-09T08:52:59.271Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "60c06a9a41cf5fb1b0b32b30"
+ },
+ "locale": {
+ "fa": {
+ "title": "یونیت های فرآورش و نمک زدایی",
+ "description": ""
+ },
+ "en": {
+ "title": "Processing and desalination units",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-06-09T08:55:38.484Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-04T14:32:14.788Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "617faaec8a9a1a5636ae7b7e"
+ },
+ "locale": {
+ "fa": {
+ "title": "پروژه گوره به جاسک",
+ "description": ""
+ },
+ "en": {
+ "title": "Gore-Jask pipeline",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-11-01T04:53:00.609Z"
+ },
+ "updated_at": {
+ "$date": "2022-06-28T06:18:18.326Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.blogposts.json b/server/OrisOxin.blogposts.json
new file mode 100644
index 0000000..448fb53
--- /dev/null
+++ b/server/OrisOxin.blogposts.json
@@ -0,0 +1,40 @@
+[{
+ "_id": {
+ "$oid": "617fa4008a9a1a5636ae7b0a"
+ },
+ "locale": {
+ "fa": {
+ "title": "مصاحبه مهندس ارسلان احمدی در کتاب جامع خطوط لوله انتقال نفت گوره به جاسک ",
+ "description": "Explain the role of Oris Oxin in this huge national project and the type of contract with the project employer.
\r\n\r\nOris Oxin Company is a commercial engineering company and supply of goods for the oil and gas industry, and dueto the relationship and cooperation we had with Ahwaz Pipe Company, we participate in many steel pipe supply projects as its representative. Infact, the role of Oris Oxin Company was to create a solution to increase the domestic production capacity of sour pipeline sheets and NACE sheets for the first time in Iran. The cooperation of Oris Auxin Company with Mobarakeh Steel of Isfahan and Khuzestan Auxin Steel Company has been in the form of creating conditions for multilateral cooperation through project management as well as financing the project and providing contractual guarantees. Oris Oxin Company has also been in charge of supplying pipes for transmission lines from 6-inch to 24-inch by ERW and 24 to 56-inch by LSAW through concluding cooperation agreements with pipe-making companies such as Ahvaz Pipe Manufacturing Company and Mahshahr Pipe Manufacturing Company.
\r\n\r\nWhat are the specific features and dimensions of the project compared to the previous oris oxin projects?
\r\n\r\nOne of the features of this project is its high production speed and tonnage. Due to the strategic conditions of theGore to Jask national project, we needed a daily production cycle of slab production, sheet production, pipe production and pipe delivery to the project, which we were able to achieve by creating suitable conditions for cooperation between all suppliers and manufacturers.
\r\n\r\nPerformance of project elements in employer sectors, How do you evaluate the consultants, inspectors, etc. in Gore Jask project?
\r\n\r\nBasically, this project was done with a very good cooperation between the employer, consultant, contractors and suppliers, whichwould not have been possible without this empathy between the organs, and the project could not have progressed on this scale. Positive attitude and proper cooperation and cooperation of the project employer with domestic companies played a significant role in the success of this national project. In this project, technically, we never saw ourselves alone, and the employer was always with us technically. For example, in the field of slab production, the employer always gave us very valuable advice and capable engineers in this project from the National Iranian Oil Company helped Mobarakeh Steel of Isfahan and Auxin Steel. Iran Petroleum Engineering and Development Company, as an employer, has always had a viewof technical support and cooperation with us, and this made it possible for us to do this in the best way with this view and relying on the ability to build domestically and use local experts.
\r\n\r\nWhat do you think was the most valuable experience gained for Oris Oxin in this project?
\r\n\r\nFor the first time in Iran, in cooperation with Mobarakeh Steel Company of Isfahan and Auxin Steel Company of Khuzestan, we established a partnership, as a result of which we were able to supply sour slabs and turn them into sheets, eliminating theneed for the country to import them. This valuable cooperation, while promoting the country's industry, especially the steel industry, had a very important impact on preventing the outflow of currency from the country, which increased the added value of this national plan.
\r\n\r\nWhat has been the biggest challenge you have faced in the Gore Jask project, both technically, financially, organizationally ...?
\r\n\r\nKhuzestan Auxin Steel Company was producing construction sheets before the Goreh to Jask project, and the support of the Ministry of Oil for Auxin Steel Company and Mobarakeh Steel Company of Isfahan caused us to achieve this progress in achieving sour sheet production technology. The sheets required by the oil industry are divided into two groups: sour and sweet API sheets, and before this design, API sheets \r\nWe produced sweet in a very limited way in Khuzestan Auxin Steel, the maximum of which was ten thousand tons per month. But as a result of this belief and trust that was created by the Ministry of Petroleum to domestic companies, we were able to achieve this growth in the country's steel industry.
\r\n\r\nHow much has this project contributed to the entrepreneurship and growth of OrisOxin?
\r\n\r\nCreating the ground for cooperation with scientific and university centers to localize the knowledge of sour sheet production, which led to further cooperation through concluding a memorandum of understanding and consulting agreement with Sharif University of Technology andShahid Chamran University of Ahvaz to localize knowledge of equipment required by the oil industry.
\r\n\r\nWhat records have been broken in your collection during this project?
\r\n\r\nProduction of sour sheets and sour service pipes for the first time in Iran, which is the most important record for our country. The highest amount of slab production in a month, the highest amount of slab transportation from Mobarakeh steel to auxin steel and the highest amount of sheet production in a month of 45,000 tons.
\r\n\r\nWhat is thebest experience that OrisOxin has gained during this project for future projects?
\r\n\r\nExperience in financial management of large industrial projects through establishing effective communication between domestic suppliers and producers and the country's banking system, which has become the background for multilateral cooperation in oil and gas projects. Playing a small role in the development of Iran, names by believing in the possibility of using domestic production capacity and creating jobs in the deprived province of Khuzestan.
\r\n",
+ "short_description": "نقش اریـس اوکسین در پــروژه ملی خط لولــه انتقــال نفت گــوره به جاســک ... ... ... ... ... ... ... ... ... ",
+ "last_section_image_title": "کتاب جامع خطوط لوله انتقال نفت گوره به جاسک ",
+ "last_section_image_description": "",
+ "last_section_title": "",
+ "last_section_description": ""
+ },
+ "en": {
+ "title": "Interview of Engineer Arsalan Ahmadi in the comprehensive book of oil transfer pipelines from Gore to Jask",
+ "description": "Explain the role of Oris Oxin in this huge national project and the type of contract with the project employer.
\r\n\r\nOris Oxin Company is a commercial engineering company and supply of goods for the oil and gas industry, and due to the relationship and cooperation we had with Ahwaz Pipe Company, we participate in many steel pipe supply projects as its representative. In fact, the role of Oris Oxin Company was to create a solution to increase the domestic production capacity of sour pipeline sheets and NACE sheets for the first time in Iran. The cooperation of Oris Auxin Company with Mobarakeh Steel of Isfahan and Khuzestan Auxin Steel Company has been in the form of creating conditions for multilateral cooperation through project management as well as financing the project and providing contractual guarantees. Oris Oxin Company has also been in charge of supplying pipes for transmission lines from 6-inch to 24-inch by ERW and 24 to 56-inch by LSAW through concluding cooperation agreements with pipe-making companies such as Ahvaz Pipe Manufacturing Company and Mahshahr Pipe Manufacturing Company.
\r\n\r\nWhat are the specific features and dimensions of the project compared to the previous oris oxin projects?
\r\n\r\nOne of the features of this project is its high production speed and tonnage. Due to the strategic conditions of the Gore to Jask national project, we needed a daily production cycle of slab production, sheet production, pipe production and pipe delivery to the project, which we were able to achieve by creating suitable conditions for cooperation between all suppliers and manufacturers.
\r\n\r\nPerformance of project elements in employer sectors, How do you evaluate the consultants, inspectors, etc. in Gore Jask project?
\r\n\r\nBasically, this project was done with a very good cooperation between the employer, consultant, contractors and suppliers, which would not have been possible without this empathy between the organs, and the project could not have progressed on this scale. Positive attitude and proper cooperation and cooperation of the project employer with domestic companies played a significant role in the success of this national project. In this project, technically, we never saw ourselves alone, and the employer was always with us technically. For example, in the field of slab production, the employer always gave us very valuable advice and capable engineers in this project from the National Iranian Oil Company helped Mobarakeh Steel of Isfahan and Auxin Steel. Iran Petroleum Engineering and Development Company, as an employer, has always had a view of technical support and cooperation with us, and this made it possible for us to do this in the best way with this view and relying on the ability to build domestically and use local experts.
\r\n\r\nWhat do you think was the most valuable experience gained for Oris Oxin in this project?
\r\n\r\nFor the first time in Iran, in cooperation with Mobarakeh Steel Company of Isfahan and Auxin Steel Company of Khuzestan, we established a partnership, as a result of which we were able to supply sour slabs and turn them into sheets, eliminating the need for the country to import them. This valuable cooperation, while promoting the country's industry, especially the steel industry, had a very important impact on preventing the outflow of currency from the country, which increased the added value of this national plan.
\r\n\r\nWhat has been the biggest challenge you have faced in the Gore Jask project, both technically, financially, organizationally ...?
\r\n\r\nKhuzestan Auxin Steel Company was producing construction sheets before the Goreh to Jask project, and the support of the Ministry of Oil for Auxin Steel Company and Mobarakeh Steel Company of Isfahan caused us to achieve this progress in achieving sour sheet production technology. The sheets required by the oil industry are divided into two groups: sour and sweet API sheets, and before this design, API sheets \r\nWe produced sweet in a very limited way in Khuzestan Auxin Steel, the maximum of which was ten thousand tons per month. But as a result of this belief and trust that was created by the Ministry of Petroleum to domestic companies, we were able to achieve this growth in the country's steel industry.
\r\n\r\nHow much has this project contributed to the entrepreneurship and growth of OrisOxin?
\r\n\r\nCreating the ground for cooperation with scientific and university centers to localize the knowledge of sour sheet production, which led to further cooperation through concluding a memorandum of understanding and consulting agreement with Sharif University of Technology and Shahid Chamran University of Ahvaz to localize knowledge of equipment required by the oil industry.
\r\n\r\nWhat records have been broken in your collection during this project?
\r\n\r\nProduction of sour sheets and sour service pipes for the first time in Iran, which is the most important record for our country. The highest amount of slab production in a month, the highest amount of slab transportation from Mobarakeh steel to auxin steel and the highest amount of sheet production in a month of 45,000 tons.
\r\n\r\nWhat is the best experience that OrisOxin has gained during this project for future projects?
\r\n\r\nExperience in financial management of large industrial projects through establishing effective communication between domestic suppliers and producers and the country's banking system, which has become the background for multilateral cooperation in oil and gas projects. Playing a small role in the development of Iran, names by believing in the possibility of using domestic production capacity and creating jobs in the deprived province of Khuzestan.
\r\n",
+ "short_description": "The role of Eris Oxin in the national project of the Goreh-Jask oil pipeline ... ... ... ... ... ... ... ... ... ",
+ "last_section_image_title": "",
+ "last_section_image_description": "",
+ "last_section_title": "",
+ "last_section_description": ""
+ }
+ },
+ "published": true,
+ "cover": "blog_1635839101289.jpg",
+ "thumb": "thumb_blog_1635839101289.jpg",
+ "created_at": {
+ "$date": "2021-11-01T08:23:28.757Z"
+ },
+ "updated_at": {
+ "$date": "2023-02-22T10:34:27.657Z"
+ },
+ "__v": 0,
+ "category": {
+ "$oid": "617faaec8a9a1a5636ae7b7e"
+ },
+ "last_section_image": "blog_1677062002555.jpg",
+ "video": "blog_1662873446933.mp4"
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.catalogcategories.json b/server/OrisOxin.catalogcategories.json
new file mode 100644
index 0000000..9badd23
--- /dev/null
+++ b/server/OrisOxin.catalogcategories.json
@@ -0,0 +1,20 @@
+[{
+ "_id": {
+ "$oid": "638be24fd940b41bafbd01b5"
+ },
+ "locale": {
+ "fa": {
+ "title": "نماینده A"
+ },
+ "en": {
+ "title": "Agent A"
+ }
+ },
+ "created_at": {
+ "$date": "2022-12-03T23:57:03.214Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:57:03.214Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.catalogs.json b/server/OrisOxin.catalogs.json
new file mode 100644
index 0000000..1d6a836
--- /dev/null
+++ b/server/OrisOxin.catalogs.json
@@ -0,0 +1,102 @@
+[{
+ "_id": {
+ "$oid": "6166b9e8650ad9bf729af0c9"
+ },
+ "locale": {
+ "fa": {
+ "title": ""
+ },
+ "en": {
+ "title": ""
+ }
+ },
+ "showInFa": true,
+ "showInEn": true,
+ "file": "orisoxin_catalog_1635772447318_SKID MOUNTED final1 (1).pdf",
+ "cover": "orisoxsin_cover_1660110880628.jpg",
+ "created_at": {
+ "$date": "2021-10-13T10:50:16.644Z"
+ },
+ "updated_at": {
+ "$date": "2022-08-10T05:54:40.754Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "629f2de399018f59cfeab008"
+ },
+ "locale": {
+ "fa": {
+ "title": "کاتالوگ 3لتی اریس اوکسین"
+ },
+ "en": {
+ "title": ""
+ }
+ },
+ "showInFa": true,
+ "showInEn": true,
+ "file": "orisoxin_catalog_1654599139144_OXin.pdf",
+ "cover": "orisoxin_catalog_cover_1654599139145.jpg",
+ "created_at": {
+ "$date": "2022-06-07T10:52:19.200Z"
+ },
+ "updated_at": {
+ "$date": "2022-06-07T10:52:19.200Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "62c276bc6662dd01ad9c83cb"
+ },
+ "locale": {
+ "fa": {
+ "title": "کاتالوگ کارخانه Wonjin _ مواد نسوز"
+ },
+ "en": {
+ "title": "ٌٌWonjin company refactory materials"
+ }
+ },
+ "showInFa": true,
+ "showInEn": true,
+ "file": "orisoxin_catalog_1656911548348_WONJIN CATALOGUE_IFB.pdf",
+ "cover": "orisoxin_catalog_cover_1656911548349.jpg",
+ "created_at": {
+ "$date": "2022-07-04T05:12:28.429Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-11T11:51:20.100Z"
+ },
+ "__v": 0,
+ "category": {
+ "$oid": "638be24fd940b41bafbd01b5"
+ }
+},
+{
+ "_id": {
+ "$oid": "65ad0965097ed0a3810e78be"
+ },
+ "locale": {
+ "fa": {
+ "title": "پرزنتیشن اریس اوکسین "
+ },
+ "en": {
+ "title": "Oris Oxin Presentation "
+ }
+ },
+ "showInFa": true,
+ "showInEn": true,
+ "category": {
+ "$oid": "638be24fd940b41bafbd01b5"
+ },
+ "file": "orisoxin_catalog_1705838949594_ORIS OXIN presentation ÙÙØ§ÛÛ1402.pdf",
+ "cover": "orisoxin_catalog_cover_1705838949595.jpg",
+ "created_at": {
+ "$date": "2024-01-21T12:09:09.894Z"
+ },
+ "updated_at": {
+ "$date": "2024-01-21T12:09:09.894Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.contactus.json b/server/OrisOxin.contactus.json
new file mode 100644
index 0000000..955bdb9
--- /dev/null
+++ b/server/OrisOxin.contactus.json
@@ -0,0 +1,306 @@
+[{
+ "_id": {
+ "$oid": "6154d1d64b787cbf8b9bd4c4"
+ },
+ "locale": "fa",
+ "read": true,
+ "name": "Test test",
+ "email": "test@mail.com",
+ "subject": "test",
+ "message": "ما از سال 2001 تا 2016 بسیاری از جوایز کارخانه را به دست آوردیم و بسیاری از گواهینامه ها را دریافت کردیم",
+ "created_at": {
+ "$date": "2021-09-29T20:51:34.807Z"
+ },
+ "updated_at": {
+ "$date": "2022-05-28T04:13:51.006Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "61e6b5927978228a32d8bd26"
+ },
+ "locale": "fa",
+ "read": true,
+ "name": "سحر",
+ "email": "sahar_eilkhani@yahoo.com",
+ "subject": "تست پیام",
+ "message": "تست ",
+ "created_at": {
+ "$date": "2022-01-18T12:41:54.020Z"
+ },
+ "updated_at": {
+ "$date": "2022-05-28T04:14:08.366Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "621f501faaeec4629b7de3bf"
+ },
+ "locale": "fa",
+ "read": true,
+ "name": "Dirk Van Landeghem",
+ "email": "dirk.vanlandeghem@arcelormittal.com",
+ "subject": "plates",
+ "message": "Dear Sirs,\n\nPlse send me the contact person in your export depatment. Thanks.",
+ "created_at": {
+ "$date": "2022-03-02T11:08:15.530Z"
+ },
+ "updated_at": {
+ "$date": "2022-05-28T04:14:18.967Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6263bee20539489837ab89ba"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "Mary M.",
+ "email": "adi@ndmails.com",
+ "subject": "Design Work",
+ "message": "Just wanted to ask if you would be interested in getting external help with graphic design? We do all design work like banners, advertisements, photo edits, logos, flyers, etc. for a fixed monthly fee. \n\nWe don't charge for each task. What kind of work do you need on a regular basis? Let me know and I'll share my portfolio with you.",
+ "created_at": {
+ "$date": "2022-04-23T08:54:58.305Z"
+ },
+ "updated_at": {
+ "$date": "2022-05-28T04:14:34.377Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6263fad50539489837ab8aac"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "Abdulla Azar",
+ "email": "abdulla_azar@hotmail.com",
+ "subject": "FRIENDLY REMARK ",
+ "message": "Dear Nima, \nit is always pleasure to see your advancement , kindly in your first page in the web below message is printed\n\nPipelines, Petrochemical Industry, Drilling Industry\nFOUNDED IN 1387\n\nKindly have it corrected ( FOUNDED 1387 Iranian Calendar / 1998 Christian calendar) \n\n1387 creates a message that you are in this business almost 650 years\n\nI love to see your advancements",
+ "created_at": {
+ "$date": "2022-04-23T13:10:45.386Z"
+ },
+ "updated_at": {
+ "$date": "2022-05-28T04:13:06.797Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6263fad50539489837ab8aae"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "Abdulla Azar",
+ "email": "abdulla_azar@hotmail.com",
+ "subject": "FRIENDLY REMARK ",
+ "message": "Dear Nima, \nit is always pleasure to see your advancement , kindly in your first page in the web below message is printed\n\nPipelines, Petrochemical Industry, Drilling Industry\nFOUNDED IN 1387\n\nKindly have it corrected ( FOUNDED 1387 Iranian Calendar / 1998 Christian calendar) \n\n1387 creates a message that you are in this business almost 650 years\n\nI love to see your advancements",
+ "created_at": {
+ "$date": "2022-04-23T13:10:45.400Z"
+ },
+ "updated_at": {
+ "$date": "2022-05-28T05:14:58.839Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6263fad50539489837ab8ab0"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "Abdulla Azar",
+ "email": "abdulla_azar@hotmail.com",
+ "subject": "FRIENDLY REMARK ",
+ "message": "Dear Nima, \nit is always pleasure to see your advancement , kindly in your first page in the web below message is printed\n\nPipelines, Petrochemical Industry, Drilling Industry\nFOUNDED IN 1387\n\nKindly have it corrected ( FOUNDED 1387 Iranian Calendar / 1998 Christian calendar) \n\n1387 creates a message that you are in this business almost 650 years\n\nI love to see your advancements",
+ "created_at": {
+ "$date": "2022-04-23T13:10:45.404Z"
+ },
+ "updated_at": {
+ "$date": "2022-05-28T05:15:12.379Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6263fad50539489837ab8ab2"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "Abdulla Azar",
+ "email": "abdulla_azar@hotmail.com",
+ "subject": "FRIENDLY REMARK ",
+ "message": "Dear Nima, \nit is always pleasure to see your advancement , kindly in your first page in the web below message is printed\n\nPipelines, Petrochemical Industry, Drilling Industry\nFOUNDED IN 1387\n\nKindly have it corrected ( FOUNDED 1387 Iranian Calendar / 1998 Christian calendar) \n\n1387 creates a message that you are in this business almost 650 years\n\nI love to see your advancements",
+ "created_at": {
+ "$date": "2022-04-23T13:10:45.407Z"
+ },
+ "updated_at": {
+ "$date": "2022-05-28T05:15:16.445Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "62ff4f9f3baf2d01b4836ae5"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "Cathy Wu",
+ "email": "cathy@permanentsteel.com",
+ "subject": "steel pipes supplier",
+ "message": "Hi,this is Cathy Wu from Permanent Steel Manufacturing Co.,Ltd(PMC),we are a 28-years joint venturecompany with rich experience in steel manufacturing and export.Committed to become one-stop Chinese steel products supplier for worldwide clients,besides main seamless and welded steel pipe factories,we also invested some related factories,including fittings mills (valve/??flange/elbow/tee/reducer/caps/bend etc.),structure steel mills, anti-corrosion,insulation mills,etc.Any interest please not hesitate to email/call/whatsapp me,regards.",
+ "created_at": {
+ "$date": "2022-08-19T08:53:51.899Z"
+ },
+ "updated_at": {
+ "$date": "2022-08-20T11:06:04.394Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "62ff4fa06662dd01ad9d5df5"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "Cathy Wu",
+ "email": "cathy@permanentsteel.com",
+ "subject": "steel pipes supplier",
+ "message": "Hi,this is Cathy Wu from Permanent Steel Manufacturing Co.,Ltd(PMC),we are a 28-years joint venturecompany with rich experience in steel manufacturing and export.Committed to become one-stop Chinese steel products supplier for worldwide clients,besides main seamless and welded steel pipe factories,we also invested some related factories,including fittings mills (valve/??flange/elbow/tee/reducer/caps/bend etc.),structure steel mills, anti-corrosion,insulation mills,etc.Any interest please not hesitate to email/call/whatsapp me,regards.",
+ "created_at": {
+ "$date": "2022-08-19T08:55:36.061Z"
+ },
+ "updated_at": {
+ "$date": "2022-08-20T11:07:21.837Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "62ff4fa06662dd01ad9d5df7"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "Cathy Wu",
+ "email": "cathy@permanentsteel.com",
+ "subject": "steel pipes supplier",
+ "message": "Hi,this is Cathy Wu from Permanent Steel Manufacturing Co.,Ltd(PMC),we are a 28-years joint venturecompany with rich experience in steel manufacturing and export.Committed to become one-stop Chinese steel products supplier for worldwide clients,besides main seamless and welded steel pipe factories,we also invested some related factories,including fittings mills (valve/??flange/elbow/tee/reducer/caps/bend etc.),structure steel mills, anti-corrosion,insulation mills,etc.Any interest please not hesitate to email/call/whatsapp me,regards.",
+ "created_at": {
+ "$date": "2022-08-19T08:55:36.064Z"
+ },
+ "updated_at": {
+ "$date": "2022-08-20T11:07:25.875Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "62ff4fa06662dd01ad9d5df9"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "Cathy Wu",
+ "email": "cathy@permanentsteel.com",
+ "subject": "steel pipes supplier",
+ "message": "Hi,this is Cathy Wu from Permanent Steel Manufacturing Co.,Ltd(PMC),we are a 28-years joint venturecompany with rich experience in steel manufacturing and export.Committed to become one-stop Chinese steel products supplier for worldwide clients,besides main seamless and welded steel pipe factories,we also invested some related factories,including fittings mills (valve/??flange/elbow/tee/reducer/caps/bend etc.),structure steel mills, anti-corrosion,insulation mills,etc.Any interest please not hesitate to email/call/whatsapp me,regards.",
+ "created_at": {
+ "$date": "2022-08-19T08:55:36.067Z"
+ },
+ "updated_at": {
+ "$date": "2022-08-20T11:07:29.721Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "63038f5c1f8bb92efb8812b8"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "jimmy",
+ "email": "jimmy.yang@sunrisesgroup.com",
+ "subject": "Glass jars and closures",
+ "message": "Hi, I hope you are doing well! My name is Jimmy, and I work at Sunrise glass jar. We are a factory with more than 20 years of experience in producing glass jars and closures. We have a wide range of products available, including round, square, and hexagonal shapes, in various sizes and colors. If you are interested, please feel free to contact us for more information and samples. We look forward to hearing from you soon.",
+ "created_at": {
+ "$date": "2022-11-08T07:12:44.089Z"
+ },
+ "updated_at": {
+ "$date": "2022-11-08T07:12:44.089Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "63038f5c1f8bb92efb8812ba"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "jimmy",
+ "email": "jimmy.yang@sunrisesgroup.com",
+ "subject": "Glass jars and closures",
+ "message": "Hi, I hope you are doing well! My name is Jimmy, and I work at Sunrise glass jar. We are a factory with more than 20 years of experience in producing glass jars and closures. We have a wide range of products available, including round, square, and hexagonal shapes, in various sizes and colors. If you are interested, please feel free to contact us for more information and samples. We look forward to hearing from you soon.",
+ "created_at": {
+ "$date": "2022-11-08T07:12:44.090Z"
+ },
+ "updated_at": {
+ "$date": "2022-11-08T07:12:44.090Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "63038f5c1f8bb92efb8812bc"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "jimmy",
+ "email": "jimmy.yang@sunrisesgroup.com",
+ "subject": "Glass jars and closures",
+ "message": "Hi, I hope you are doing well! My name is Jimmy, and I work at Sunrise glass jar. We are a factory with more than 20 years of experience in producing glass jars and closures. We have a wide range of products available, including round, square, and hexagonal shapes, in various sizes and colors. If you are interested, please feel free to contact us for more information and samples. We look forward to hearing from you soon.",
+ "created_at": {
+ "$date": "2022-11-08T07:12:44.091Z"
+ },
+ "updated_at": {
+ "$date": "2022-11-08T07:12:44.091Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "63038f5c1f8bb92efb8812be"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "jimmy",
+ "email": "jimmy.yang@sunrisesgroup.com",
+ "subject": "Glass jars and closures",
+ "message": "Hi, I hope you are doing well! My name is Jimmy, and I work at Sunrise glass jar. We are a factory with more than 20 years of experience in producing glass jars and closures. We have a wide range of products available, including round, square, and hexagonal shapes, in various sizes and colors. If you are interested, please feel free to contact us for more information and samples. We look forward to hearing from you soon.",
+ "created_at": {
+ "$date": "2022-11-08T07:12:44.092Z"
+ },
+ "updated_at": {
+ "$date": "2022-11-08T07:12:44.092Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "63038f5c1f8bb92efb8812c0"
+ },
+ "locale": "en",
+ "read": true,
+ "name": "jimmy",
+ "email": "jimmy.yang@sunrisesgroup.com",
+ "subject": "Glass jars and closures",
+ "message": "Hi, I hope you are doing well! My name is Jimmy, and I work at Sunrise glass jar. We are a factory with more than 20 years of experience in producing glass jars and closures. We have a wide range of products available, including round, square, and hexagonal shapes, in various sizes and colors. If you are interested, please feel free to contact us for more information and samples. We look forward to hearing from you soon.",
+ "created_at": {
+ "$date": "2022-11-08T07:12:44.093Z"
+ },
+ "updated_at": {
+ "$date": "2022-11-08T07:12:44.093Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.customercomments.json b/server/OrisOxin.customercomments.json
new file mode 100644
index 0000000..d15059d
--- /dev/null
+++ b/server/OrisOxin.customercomments.json
@@ -0,0 +1,75 @@
+[{
+ "_id": {
+ "$oid": "60c604af3dc3e9d231fd016f"
+ },
+ "locale": {
+ "fa": {
+ "name": "پتروشیمی جم",
+ "position": "سهامی خاص",
+ "comment": "احتراما بازگشت به نامه شماره ox-ad-97-08-851 مورخ ۹۷/۰۸/ ۰۹۷ ضمن تشکر و تقدیر از خدمات شرکت اریس اوکسین بدین وسیله مراتب رضایت خود را از عملکرد آن شرکت محترم در خصوص تقاضای ۹۷۰۷۱۱ جهت تامین ۱۰۰ برگ پلیت گرید A516Gr.70 اعلام میدارد."
+ },
+ "en": {
+ "name": "JPC",
+ "position": "CEO",
+ "comment": "Regards, return to letter number ox-ad-97-08-851 dated 08/09/97, while thanking and appreciating the services of Eris Oxen. Hereby, it expresses its satisfaction with the performance of that esteemed company regarding the demand of 970711 for supplying 100 sheets of A516Gr.70 plate."
+ }
+ },
+ "image": "customer_1625651866973.jpg",
+ "created_at": {
+ "$date": "2021-06-13T13:14:23.589Z"
+ },
+ "updated_at": {
+ "$date": "2021-07-07T09:57:47.057Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "60e57bba793444cf51b25792"
+ },
+ "locale": {
+ "fa": {
+ "name": "ماشین سازی اراک",
+ "position": "سهامی عام",
+ "comment": "احتراما\" بازگشت به نامه شماره 956-04-98-OX-AD مورخ 98/4/19 بدينوسيله اين شركت رضايت خود را از همكاري به عمل آمده در تأمين ورقهاي مورد نياز با جنس S 355GR+N مربوط به ورقهاي پايه هاي پروژه مخزن كروي كاويان اعلام مي دارد. \nاميد است اين روند در پروژه هاي آتي ادامه يابد و منجر به انجام هر چه بهترپروژه هاي ملي گردد."
+ },
+ "en": {
+ "name": "MSA",
+ "position": "CMO",
+ "comment": "Sincerely, Return to Letter No. 956-04-98-OX-AD dated 19/4/98. Hereby, this company expresses its satisfaction with the cooperation made in supplying the required sheets with material S 355GR + N related to the base sheets of the tank project. Spherical Kavian announces."
+ }
+ },
+ "image": "customer_1625652154603.jpg",
+ "created_at": {
+ "$date": "2021-07-07T10:02:34.633Z"
+ },
+ "updated_at": {
+ "$date": "2021-07-07T10:02:34.633Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "60e57e6c793444cf51b25793"
+ },
+ "locale": {
+ "fa": {
+ "name": "فاتح صنعت کیمیا",
+ "position": "سهامی خاص",
+ "comment": "بدینوسیله این شرکت رضایت خود را از عملکرد شرکت اریس اوکسین در تحویل و تولید ۳۴،۶۱۹ کیلوگرم ورق A516 Gr70N مربوط به پیش فاکتور شماره OX-PI-A-9804 -147 اعلام می دارد.\n"
+ },
+ "en": {
+ "name": "FatehSanat Kimia",
+ "position": "CEO",
+ "comment": "Hereby, the company expresses its satisfaction with the performance of Eris Oxin Company in the delivery and production of 34,619 kg of A516 Gr70N sheet related to the pre-invoice number OX-PI-A-9804 -147.\n"
+ }
+ },
+ "image": "customer_1625652844926.jpg",
+ "created_at": {
+ "$date": "2021-07-07T10:14:04.957Z"
+ },
+ "updated_at": {
+ "$date": "2021-07-07T10:14:04.957Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.default.json b/server/OrisOxin.default.json
new file mode 100644
index 0000000..677902b
--- /dev/null
+++ b/server/OrisOxin.default.json
@@ -0,0 +1,12 @@
+[{
+ "_id": {
+ "$oid": "60e6e00fc49a11bff9915d3a"
+ },
+ "name": "default"
+},
+{
+ "_id": {
+ "$oid": "60b3a96ac77488f47875431d"
+ },
+ "name": "default"
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.galleries.json b/server/OrisOxin.galleries.json
new file mode 100644
index 0000000..c718850
--- /dev/null
+++ b/server/OrisOxin.galleries.json
@@ -0,0 +1,520 @@
+[{
+ "_id": {
+ "$oid": "6155a587ff19a48ba7b81504"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "6155a4fdff19a48ba7b814e3"
+ },
+ "image": "gallery_1634121369862.jpg",
+ "thumb": "thumb_gallery_1634121369862.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:54:47.376Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:36:09.934Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a598ff19a48ba7b8150b"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "6155a4fdff19a48ba7b814e3"
+ },
+ "image": "gallery_1634121364507.jpg",
+ "thumb": "thumb_gallery_1634121364507.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:55:04.025Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:36:04.583Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a5a3ff19a48ba7b81511"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "6155a4fdff19a48ba7b814e3"
+ },
+ "image": "gallery_1634121358419.jpg",
+ "thumb": "thumb_gallery_1634121358419.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:55:15.857Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:35:58.493Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a5afff19a48ba7b81517"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "6155a4fdff19a48ba7b814e3"
+ },
+ "image": "gallery_1634121349333.jpg",
+ "thumb": "thumb_gallery_1634121349333.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:55:27.738Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:35:49.401Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a5bfff19a48ba7b8151d"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "6155a4fdff19a48ba7b814e3"
+ },
+ "image": "gallery_1634121344143.jpg",
+ "thumb": "thumb_gallery_1634121344143.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:55:43.687Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:35:44.210Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a62aff19a48ba7b8155c"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c07dda41cf5fb1b0b32b32"
+ },
+ "image": "gallery_1634121287578.jpg",
+ "thumb": "thumb_gallery_1634121287578.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:57:30.886Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:34:47.646Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a636ff19a48ba7b81560"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c07dda41cf5fb1b0b32b32"
+ },
+ "image": "gallery_1634121280502.jpg",
+ "thumb": "thumb_gallery_1634121280502.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:57:42.582Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:34:40.567Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a649ff19a48ba7b81568"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c07dda41cf5fb1b0b32b32"
+ },
+ "image": "gallery_1634121274782.jpg",
+ "thumb": "thumb_gallery_1634121274782.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:58:01.116Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:34:34.858Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a656ff19a48ba7b8156e"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c07dda41cf5fb1b0b32b32"
+ },
+ "image": "gallery_1634121270262.jpg",
+ "thumb": "thumb_gallery_1634121270262.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:58:14.350Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:34:30.330Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a662ff19a48ba7b81574"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c07dda41cf5fb1b0b32b32"
+ },
+ "image": "gallery_1634121265557.jpg",
+ "thumb": "thumb_gallery_1634121265557.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:58:26.469Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:34:25.629Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a66eff19a48ba7b8157a"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c07dda41cf5fb1b0b32b32"
+ },
+ "image": "gallery_1634121261448.jpg",
+ "thumb": "thumb_gallery_1634121261448.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:58:38.535Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:34:21.516Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a67aff19a48ba7b8157e"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c07dda41cf5fb1b0b32b32"
+ },
+ "image": "gallery_1634121252667.jpg",
+ "thumb": "thumb_gallery_1634121252667.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:58:50.457Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:34:12.738Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a69aff19a48ba7b81584"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c062ed41cf5fb1b0b32b10"
+ },
+ "image": "gallery_1634121173923.jpg",
+ "thumb": "thumb_gallery_1634121173923.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:59:22.718Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:32:53.999Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a6a7ff19a48ba7b8158a"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c062ed41cf5fb1b0b32b10"
+ },
+ "image": "gallery_1634121168166.jpg",
+ "thumb": "thumb_gallery_1634121168166.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:59:35.308Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:32:48.191Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a6b3ff19a48ba7b81590"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c062ed41cf5fb1b0b32b10"
+ },
+ "image": "gallery_1634121162220.jpg",
+ "thumb": "thumb_gallery_1634121162220.jpg",
+ "created_at": {
+ "$date": "2021-09-30T11:59:47.116Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:32:42.246Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a6c6ff19a48ba7b8159f"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c062ed41cf5fb1b0b32b10"
+ },
+ "image": "gallery_1634121157684.jpg",
+ "thumb": "thumb_gallery_1634121157684.jpg",
+ "created_at": {
+ "$date": "2021-09-30T12:00:06.673Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:32:37.708Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a6d2ff19a48ba7b815a5"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c062ed41cf5fb1b0b32b10"
+ },
+ "image": "gallery_1634121142223.jpg",
+ "thumb": "thumb_gallery_1634121142223.jpg",
+ "created_at": {
+ "$date": "2021-09-30T12:00:18.590Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:32:22.300Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a732ff19a48ba7b815b5"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c062ed41cf5fb1b0b32b10"
+ },
+ "image": "gallery_1634121135157.jpg",
+ "thumb": "thumb_gallery_1634121135157.jpg",
+ "created_at": {
+ "$date": "2021-09-30T12:01:54.515Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:32:15.229Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a747ff19a48ba7b815c4"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c062ed41cf5fb1b0b32b10"
+ },
+ "image": "gallery_1634121131034.jpg",
+ "thumb": "thumb_gallery_1634121131034.jpg",
+ "created_at": {
+ "$date": "2021-09-30T12:02:15.700Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:32:11.105Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "6155a757ff19a48ba7b815ca"
+ },
+ "locale": {
+ "fa": {
+ "caption": ""
+ },
+ "en": {
+ "caption": ""
+ }
+ },
+ "noCategory": false,
+ "category": {
+ "$oid": "60c062ed41cf5fb1b0b32b10"
+ },
+ "image": "gallery_1634121124929.jpg",
+ "thumb": "thumb_gallery_1634121124929.jpg",
+ "created_at": {
+ "$date": "2021-09-30T12:02:31.660Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-13T10:32:05.004Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.gallerycategories.json b/server/OrisOxin.gallerycategories.json
new file mode 100644
index 0000000..87cdcba
--- /dev/null
+++ b/server/OrisOxin.gallerycategories.json
@@ -0,0 +1,308 @@
+[{
+ "_id": {
+ "$oid": "60c0611641cf5fb1b0b32b08"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه تخصصی صنعت نفت، گاز و پتروشیمی سال ۹۵",
+ "description": ""
+ },
+ "en": {
+ "title": "Oil,Gas and petrochemical Exhibitions in 1395",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-06-09T06:35:02.285Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-05T06:33:51.316Z"
+ },
+ "__v": 0,
+ "cover": "categoryIMG_1653730366647.jpg",
+ "thumb": "thumb_categoryIMG_1653730366647.jpg",
+ "index": 6,
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ }
+},
+{
+ "_id": {
+ "$oid": "60c0626941cf5fb1b0b32b0c"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه تخصصی صنعت نفت، گاز و پتروشیمی سال۹۳",
+ "description": ""
+ },
+ "en": {
+ "title": "Oil,Gas and petrochemical Exhibitions in 1393",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-06-09T06:40:41.197Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:54:07.290Z"
+ },
+ "__v": 0,
+ "cover": "categoryIMG_1653730422777.jpg",
+ "thumb": "thumb_categoryIMG_1653730422777.jpg",
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ },
+ "index": 2
+},
+{
+ "_id": {
+ "$oid": "60c062ed41cf5fb1b0b32b10"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه تخصصی صنعت نفت، گاز و پتروشیمی سال ۹۲",
+ "description": ""
+ },
+ "en": {
+ "title": "Oil,Gas and petrochemical Exhibitions in 1392",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-06-09T06:42:53.369Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:54:19.116Z"
+ },
+ "__v": 0,
+ "cover": "categoryIMG_1653730479469.jpg",
+ "thumb": "thumb_categoryIMG_1653730479469.jpg",
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ },
+ "index": 2
+},
+{
+ "_id": {
+ "$oid": "60c07dda41cf5fb1b0b32b32"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه تخصصی صنعت نفت، گاز و پتروشیمی سال ۹۱",
+ "description": ""
+ },
+ "en": {
+ "title": "Specialized exhibition of oil, gas and petrochemical industry in 2012",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-06-09T08:37:46.125Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:56:13.040Z"
+ },
+ "__v": 0,
+ "cover": "categoryIMG_1653730537819.jpg",
+ "thumb": "thumb_categoryIMG_1653730537819.jpg",
+ "index": 1,
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ }
+},
+{
+ "_id": {
+ "$oid": "6155a4fdff19a48ba7b814e3"
+ },
+ "locale": {
+ "fa": {
+ "title": "سمینار نمک زدایی(پارک نوآوری فناوری-تهران خرداد ۱۴۰۰)",
+ "description": ""
+ },
+ "en": {
+ "title": "Desalination Seminar (Technology Innovation Park-Tehran khordad 1400)",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-09-30T11:52:29.346Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:54:30.648Z"
+ },
+ "__v": 0,
+ "cover": "categoryIMG_1653730623620.jpg",
+ "thumb": "thumb_categoryIMG_1653730623620.jpg",
+ "categoryType": {
+ "$oid": "638be18dd940b41bafbd0135"
+ },
+ "index": 1
+},
+{
+ "_id": {
+ "$oid": "6155a93dff19a48ba7b81638"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه تخصصی صنعت نفت، گاز و پتروشیمی سال ۹۷",
+ "description": ""
+ },
+ "en": {
+ "title": "Specialized exhibition of oil, gas and petrochemical industry in 1397",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-09-30T12:10:37.520Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:55:20.510Z"
+ },
+ "__v": 0,
+ "cover": "categoryIMG_1653730657403.jpg",
+ "thumb": "thumb_categoryIMG_1653730657403.jpg",
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ },
+ "index": 1
+},
+{
+ "_id": {
+ "$oid": "6155a96cff19a48ba7b8163e"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه تخصصی صنعت نفت، گاز و پتروشیمی سال ۹۸",
+ "description": ""
+ },
+ "en": {
+ "title": "Specialized exhibition of oil, gas and petrochemical industry in 1398",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-09-30T12:11:24.526Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:55:28.493Z"
+ },
+ "__v": 0,
+ "cover": "categoryIMG_1653730704904.jpg",
+ "thumb": "thumb_categoryIMG_1653730704904.jpg",
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ },
+ "index": 1
+},
+{
+ "_id": {
+ "$oid": "6155a991ff19a48ba7b81645"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه تخصصی صنعت نفت، گاز و پتروشیمی سال ۹۹",
+ "description": ""
+ },
+ "en": {
+ "title": "Specialized exhibition of oil, gas and petrochemical industry in 1399",
+ "description": ""
+ }
+ },
+ "created_at": {
+ "$date": "2021-09-30T12:12:01.954Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:55:43.051Z"
+ },
+ "__v": 0,
+ "cover": "categoryIMG_1653730798044.jpg",
+ "thumb": "thumb_categoryIMG_1653730798044.jpg",
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ },
+ "index": 1
+},
+{
+ "_id": {
+ "$oid": "62b6f241e1c2a31a75839115"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه تخصصی صنعت نفت و گاز و پتروشیمی تهران 1401",
+ "description": ""
+ },
+ "en": {
+ "title": "2022 Oil,Gas and petrochemical Exhibitions in",
+ "description": ""
+ }
+ },
+ "index": 0,
+ "cover": "categoryIMG_1662808216817.jpg",
+ "thumb": "thumb_categoryIMG_1662808216817.jpg",
+ "created_at": {
+ "$date": "2022-06-25T11:32:17.767Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:55:50.991Z"
+ },
+ "__v": 0,
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ }
+},
+{
+ "_id": {
+ "$oid": "6309e04c2616125886007a3f"
+ },
+ "locale": {
+ "fa": {
+ "title": "سمپوزیوم و نمایشگاه بینالمللی فولاد1400",
+ "description": "جزیره کیش-سال 1400"
+ },
+ "en": {
+ "title": "International Steel Exhibition2021",
+ "description": ""
+ }
+ },
+ "index": 0,
+ "cover": "categoryIMG_1661591627391.jpg",
+ "thumb": "thumb_categoryIMG_1661591627391.jpg",
+ "created_at": {
+ "$date": "2022-08-27T09:13:48.219Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:56:05.422Z"
+ },
+ "__v": 0,
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ }
+},
+{
+ "_id": {
+ "$oid": "6680ffeb097ed0a38116a82c"
+ },
+ "locale": {
+ "fa": {
+ "title": "بیست و هشتمین نمایشگاه تخصصی صنعت نفت ، گاز ، پالایش و پتروشیمی تهران 1403",
+ "description": ""
+ },
+ "en": {
+ "title": "The 28th specialized exhibition of oil, gas, refining and petrochemical industry in Tehran 1403",
+ "description": ""
+ }
+ },
+ "categoryType": {
+ "$oid": "638be176d940b41bafbd012f"
+ },
+ "index": 8,
+ "cover": "categoryIMG_1719730294140.jpg",
+ "thumb": "thumb_categoryIMG_1719730294140.jpg",
+ "created_at": {
+ "$date": "2024-06-30T06:49:15.830Z"
+ },
+ "updated_at": {
+ "$date": "2024-06-30T06:51:35.690Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.gallerycategorytypes.json b/server/OrisOxin.gallerycategorytypes.json
new file mode 100644
index 0000000..82a3b1b
--- /dev/null
+++ b/server/OrisOxin.gallerycategorytypes.json
@@ -0,0 +1,40 @@
+[{
+ "_id": {
+ "$oid": "638be176d940b41bafbd012f"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه"
+ },
+ "en": {
+ "title": "Exhibition"
+ }
+ },
+ "created_at": {
+ "$date": "2022-12-03T23:53:26.591Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:53:26.591Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "638be18dd940b41bafbd0135"
+ },
+ "locale": {
+ "fa": {
+ "title": "سمینار های نفتی"
+ },
+ "en": {
+ "title": "Oil seminars"
+ }
+ },
+ "created_at": {
+ "$date": "2022-12-03T23:53:49.628Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:53:49.628Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.projectcategories.json b/server/OrisOxin.projectcategories.json
new file mode 100644
index 0000000..4cb5a31
--- /dev/null
+++ b/server/OrisOxin.projectcategories.json
@@ -0,0 +1,202 @@
+[{
+ "_id": {
+ "$oid": "61544c563faa5a3b86031986"
+ },
+ "locale": {
+ "fa": {
+ "name": "ورقهای آلیاژی و API"
+ },
+ "en": {
+ "name": "Alloy Sheet and API"
+ }
+ },
+ "tags": [
+ {
+ "locale": {
+ "fa": {
+ "name": "آلیاژی"
+ },
+ "en": {
+ "name": "Alloy"
+ }
+ },
+ "_id": {
+ "$oid": "615d97c9afd26657fe9c5d59"
+ },
+ "created_at": {
+ "$date": "2021-10-06T12:34:17.290Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-06T12:34:17.290Z"
+ }
+ },
+ {
+ "locale": {
+ "fa": {
+ "name": "API"
+ },
+ "en": {
+ "name": "API"
+ }
+ },
+ "_id": {
+ "$oid": "615d97d2afd26657fe9c5d5f"
+ },
+ "created_at": {
+ "$date": "2021-10-06T12:34:26.576Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-06T12:34:26.576Z"
+ }
+ }
+ ],
+ "created_at": {
+ "$date": "2021-09-29T11:21:58.995Z"
+ },
+ "updated_at": {
+ "$date": "2022-03-07T11:20:02.928Z"
+ },
+ "__v": 4
+},
+{
+ "_id": {
+ "$oid": "61544d0d41304b825a19901c"
+ },
+ "locale": {
+ "fa": {
+ "name": "خطوط لوله"
+ },
+ "en": {
+ "name": "Pipeline"
+ }
+ },
+ "tags": [
+ {
+ "locale": {
+ "fa": {
+ "name": "لوله های ERW"
+ },
+ "en": {
+ "name": "pipes ERW"
+ }
+ },
+ "_id": {
+ "$oid": "61554c6c4b787cbf8b9bd6f7"
+ },
+ "created_at": {
+ "$date": "2021-09-30T05:34:36.933Z"
+ },
+ "updated_at": {
+ "$date": "2021-09-30T05:34:36.933Z"
+ }
+ },
+ {
+ "locale": {
+ "fa": {
+ "name": "لوله های LSAW"
+ },
+ "en": {
+ "name": "LSAW pipes"
+ }
+ },
+ "_id": {
+ "$oid": "61554c9e4b787cbf8b9bd6fd"
+ },
+ "created_at": {
+ "$date": "2021-09-30T05:35:26.193Z"
+ },
+ "updated_at": {
+ "$date": "2021-09-30T05:35:26.193Z"
+ }
+ }
+ ],
+ "created_at": {
+ "$date": "2021-09-29T11:25:01.213Z"
+ },
+ "updated_at": {
+ "$date": "2022-03-07T11:20:15.967Z"
+ },
+ "__v": 2
+},
+{
+ "_id": {
+ "$oid": "61544d48340d0704add10a10"
+ },
+ "locale": {
+ "fa": {
+ "name": "صنایع پتروشیمی و پالایشی"
+ },
+ "en": {
+ "name": "Petrochemical and Refining Industries"
+ }
+ },
+ "tags": [],
+ "created_at": {
+ "$date": "2021-09-29T11:26:00.272Z"
+ },
+ "updated_at": {
+ "$date": "2022-03-07T11:20:24.336Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "615450d66bf0592ea095d18c"
+ },
+ "locale": {
+ "fa": {
+ "name": "گوره به جاسک"
+ },
+ "en": {
+ "name": "Gore to Jask"
+ }
+ },
+ "tags": [],
+ "created_at": {
+ "$date": "2021-09-29T11:41:10.680Z"
+ },
+ "updated_at": {
+ "$date": "2022-03-07T11:20:38.204Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "638be176d940b41bafbd012f"
+ },
+ "locale": {
+ "fa": {
+ "title": "نمایشگاه"
+ },
+ "en": {
+ "title": "Exhibition"
+ }
+ },
+ "created_at": {
+ "$date": "2022-12-03T23:53:26.591Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:53:26.591Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "638be18dd940b41bafbd0135"
+ },
+ "locale": {
+ "fa": {
+ "title": "سمینار های نفتی"
+ },
+ "en": {
+ "title": "Oil seminars"
+ }
+ },
+ "created_at": {
+ "$date": "2022-12-03T23:53:49.628Z"
+ },
+ "updated_at": {
+ "$date": "2022-12-03T23:53:49.628Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.projects.json b/server/OrisOxin.projects.json
new file mode 100644
index 0000000..6b1bc5b
--- /dev/null
+++ b/server/OrisOxin.projects.json
@@ -0,0 +1,272 @@
+[{
+ "_id": {
+ "$oid": "668c77029e6c0554b72f2401"
+ },
+ "id": "61612d5adddaa231b46bd823",
+ "locale": {
+ "fa": {
+ "title": "1000 عدد Heat Exchanger Tube",
+ "client": "پالایش نفت شیراز"
+ },
+ "en": {
+ "title": "1000 Heat Exchanger Tubes",
+ "client": "Shiraz Oil Refining Company"
+ }
+ },
+ "has_details": false,
+ "importWithCode": true,
+ "category": "61544d48340d0704add10a10",
+ "project_date": "1394",
+ "images": [],
+ "created_at": "2021-10-09T05:49:14.479Z",
+ "updated_at": "2021-10-09T05:49:14.479Z",
+ "version": 0
+},
+{
+ "_id": {
+ "$oid": "668c77029e6c0554b72f2402"
+ },
+ "id": "61612d5adddaa231b46bd822",
+ "locale": {
+ "fa": {
+ "title": "1000 عدد Heat Exchanger Tube",
+ "short_description": " ... ",
+ "description": "",
+ "client": "پالایش نفت شیراز",
+ "size": "",
+ "area": "",
+ "s3_title": "",
+ "s3_description": "",
+ "s5_title": "",
+ "s5_description": "",
+ "s6_title": "",
+ "s6_description": ""
+ },
+ "en": {
+ "title": "1000 Heat Exchanger Tubes",
+ "short_description": " ... ",
+ "description": "",
+ "client": "Shiraz Oil Refining Company",
+ "size": "",
+ "area": "",
+ "s3_title": "",
+ "s3_description": "",
+ "s5_title": "",
+ "s5_description": "",
+ "s6_title": "",
+ "s6_description": ""
+ }
+ },
+ "has_details": false,
+ "importWithCode": true,
+ "category": "61544d48340d0704add10a10",
+ "project_date": "1396",
+ "images": [],
+ "created_at": "2021-10-09T05:49:14.479Z",
+ "updated_at": "2022-08-10T06:52:49.355Z",
+ "version": 0
+},
+{
+ "_id": {
+ "$oid": "668c77029e6c0554b72f2403"
+ },
+ "id": "61612d5adddaa231b46bd825",
+ "locale": {
+ "fa": {
+ "title": "19256 شاخه Heat Exchanger Tube",
+ "short_description": " ... ",
+ "description": "",
+ "client": "پالایش نفت آبادان",
+ "size": "",
+ "area": "",
+ "s3_title": "",
+ "s3_description": "",
+ "s5_title": "",
+ "s5_description": "",
+ "s6_title": "",
+ "s6_description": ""
+ },
+ "en": {
+ "title": "19256 Heat Exchanger Tubes",
+ "short_description": " ... ",
+ "description": "",
+ "client": "Abadan Oil Refining Co",
+ "size": "",
+ "area": "",
+ "s3_title": "",
+ "s3_description": "",
+ "s5_title": "",
+ "s5_description": "",
+ "s6_title": "",
+ "s6_description": ""
+ }
+ },
+ "has_details": false,
+ "importWithCode": true,
+ "category": "61544d48340d0704add10a10",
+ "project_date": "1396",
+ "images": [],
+ "created_at": "2021-10-09T05:49:14.479Z",
+ "updated_at": "2022-08-10T07:00:43.933Z",
+ "version": 0
+},
+{
+ "_id": {
+ "$oid": "668c77029e6c0554b72f2404"
+ },
+ "id": "61612d5adddaa231b46bd824",
+ "locale": {
+ "fa": {
+ "title": "دو قلم تیوب فلزی",
+ "client": "پالایش نفت بندرعباس"
+ },
+ "en": {
+ "title": "Two Metal Tubes",
+ "client": "Bandar Abbas Oil Refining Company"
+ }
+ },
+ "has_details": false,
+ "importWithCode": true,
+ "category": "61544d48340d0704add10a10",
+ "project_date": "1395",
+ "images": [],
+ "created_at": "2021-10-09T05:49:14.479Z",
+ "updated_at": "2021-10-09T05:49:14.479Z",
+ "version": 0
+},
+{
+ "_id": {
+ "$oid": "668c77029e6c0554b72f2405"
+ },
+ "id": "61612d5adddaa231b46bd826",
+ "locale": {
+ "fa": {
+ "title": "لوله 26 اینچ (15 شاخه)",
+ "short_description": " ... ... ",
+ "description": "",
+ "client": "پالایش نفت آبادان",
+ "size": "",
+ "area": "",
+ "s3_title": "",
+ "s3_description": "",
+ "s5_title": "",
+ "s5_description": "",
+ "s6_title": "",
+ "s6_description": ""
+ },
+ "en": {
+ "title": "26-inch Pipes (15 pieces)",
+ "short_description": " ... ... ",
+ "description": "",
+ "client": "Abadan Oil Refining Co",
+ "size": "",
+ "area": "",
+ "s3_title": "",
+ "s3_description": "",
+ "s5_title": "",
+ "s5_description": "",
+ "s6_title": "",
+ "s6_description": ""
+ }
+ },
+ "has_details": false,
+ "importWithCode": true,
+ "category": "61544d0d41304b825a19901c",
+ "project_date": "1396",
+ "images": [],
+ "created_at": "2021-10-09T05:49:14.479Z",
+ "updated_at": "2022-10-09T11:18:59.527Z",
+ "version": 0
+},
+{
+ "_id": {
+ "$oid": "668c77029e6c0554b72f2406"
+ },
+ "id": "61612d5adddaa231b46bd828",
+ "locale": {
+ "fa": {
+ "title": "تأمین تیوب استنلس استیل 316L",
+ "client": "پتروشیمی شهید تندگویان"
+ },
+ "en": {
+ "title": "Supply of Stainless Steel 316L Tubes",
+ "client": "Shahid Tondguyan Petrochemical Company"
+ }
+ },
+ "has_details": false,
+ "importWithCode": true,
+ "category": "61544d48340d0704add10a10",
+ "project_date": "1393",
+ "images": [],
+ "created_at": "2021-10-09T05:49:14.479Z",
+ "updated_at": "2021-10-09T05:49:14.479Z",
+ "version": 0
+},
+{
+ "_id": {
+ "$oid": "668c77029e6c0554b72f2407"
+ },
+ "id": "61612d5adddaa231b46bd829",
+ "locale": {
+ "fa": {
+ "title": "تأمین 442,070 متر ورق و پانل دیواری 4 سانت دورو آلوزینک دیرسوز",
+ "short_description": " ... ",
+ "description": "",
+ "client": "مجتمع صنعتی ماموت",
+ "size": "",
+ "area": "",
+ "s3_title": "",
+ "s3_description": "",
+ "s5_title": "",
+ "s5_description": "",
+ "s6_title": "",
+ "s6_description": ""
+ },
+ "en": {
+ "title": "Supply of 442,070 meters of 4 cm Fire-Resistant Double-Sided Aluzinc Sheets and Wall Panels",
+ "short_description": " ... ",
+ "description": "",
+ "client": "Mammut Industrial Complex",
+ "size": "",
+ "area": "",
+ "s3_title": "",
+ "s3_description": "",
+ "s5_title": "",
+ "s5_description": "",
+ "s6_title": "",
+ "s6_description": ""
+ }
+ },
+ "has_details": false,
+ "importWithCode": true,
+ "category": "61544d48340d0704add10a10",
+ "project_date": "1399",
+ "images": [],
+ "created_at": "2021-10-09T05:49:14.479Z",
+ "updated_at": "2022-06-27T06:20:03.332Z",
+ "version": 0
+},
+{
+ "_id": {
+ "$oid": "668c77029e6c0554b72f2408"
+ },
+ "id": "61612d5adddaa231b46bd827",
+ "locale": {
+ "fa": {
+ "title": "3 قلم Pipe Alloy Steel",
+ "client": "پالایش نفت اصفهان"
+ },
+ "en": {
+ "title": "3 Alloy Steel Pipes",
+ "client": "Isfahan Oil Refining Company"
+ }
+ },
+ "has_details": false,
+ "importWithCode": true,
+ "category": "61544d48340d0704add10a10",
+ "project_date": "1398",
+ "images": [],
+ "created_at": "2021-10-09T05:49:14.479Z",
+ "updated_at": "2021-10-09T05:49:14.479Z",
+ "version": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.slides.json b/server/OrisOxin.slides.json
new file mode 100644
index 0000000..b2c85e1
--- /dev/null
+++ b/server/OrisOxin.slides.json
@@ -0,0 +1,42 @@
+[{
+ "_id": {
+ "$oid": "61643d25f99954aad5454210"
+ },
+ "isImage": true,
+ "image": "slider_1633959205185.jpg",
+ "created_at": {
+ "$date": "2021-10-11T13:33:25.347Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-11T13:33:25.347Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "61643d5ef99954aad5454214"
+ },
+ "isImage": false,
+ "video": "slider_1633959262185.mp4",
+ "created_at": {
+ "$date": "2021-10-11T13:34:22.186Z"
+ },
+ "updated_at": {
+ "$date": "2021-10-11T13:34:22.186Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "65801b35097ed0a3810d21f4"
+ },
+ "isImage": true,
+ "image": "slider_1702894388991.jpg",
+ "created_at": {
+ "$date": "2023-12-18T10:13:09.415Z"
+ },
+ "updated_at": {
+ "$date": "2023-12-18T10:13:09.415Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/OrisOxin.teams.json b/server/OrisOxin.teams.json
new file mode 100644
index 0000000..2128ea9
--- /dev/null
+++ b/server/OrisOxin.teams.json
@@ -0,0 +1,115 @@
+[{
+ "_id": {
+ "$oid": "60b3afe00462d2f8938d1077"
+ },
+ "scope": [
+ "admin"
+ ],
+ "username": "negareh_support",
+ "password": "$2a$10$Oz6i2zBMsY/cq.c7Uh6G3e8Vu3.sJ3zx8QKhZSdO8hlDi6rmaB1S.",
+ "created_at": {
+ "$date": "2021-05-30T15:31:44.592Z"
+ },
+ "updated_at": {
+ "$date": "2024-06-30T06:01:04.161Z"
+ },
+ "__v": 0,
+ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MGIzYWZlMDA0NjJkMmY4OTM4ZDEwNzciLCJpYXQiOjE3MTk3MjcyNjQsImV4cCI6MTcyMDMzMjA2NH0.eLhlyzTz_VuJRlJzJH3WwXPcnp5vZ93pKLxFtfoKYaw",
+ "first_name": "negar"
+},
+{
+ "_id": {
+ "$oid": "60b3afe00462d2f8938d1078"
+ },
+ "scope": [
+ "admin"
+ ],
+ "username": "orisoxin_admin",
+ "password": "$2a$10$og3eV.bfirfzGv.pc/.tvOZ7cKvD3JRmAYHyy8vM0dCt/vkIdh3GW",
+ "created_at": {
+ "$date": "2021-05-30T15:31:44.786Z"
+ },
+ "updated_at": {
+ "$date": "2023-04-24T10:21:20.573Z"
+ },
+ "__v": 0,
+ "token": null
+},
+{
+ "_id": {
+ "$oid": "60c588247084c383c231c857"
+ },
+ "locale": {
+ "fa": {
+ "first_name": "ارسلان",
+ "last_name": "احمدی",
+ "position": "مدیرعامل"
+ },
+ "en": {
+ "first_name": "Arsalan",
+ "last_name": "Ahmadi",
+ "position": "CEO"
+ }
+ },
+ "index": 1,
+ "image": "team_Arsalan_1635851235792.jpg",
+ "created_at": {
+ "$date": "2021-06-13T04:23:00.300Z"
+ },
+ "updated_at": {
+ "$date": "2021-11-02T11:16:13.621Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "60c588bc7084c383c231c858"
+ },
+ "locale": {
+ "fa": {
+ "first_name": "نیما",
+ "last_name": "کلانتریان",
+ "position": "نایب رییس هیئت مدیره"
+ },
+ "en": {
+ "first_name": "Nima",
+ "last_name": "Kalantarian",
+ "position": "Vice Chairman of the Board"
+ }
+ },
+ "index": 2,
+ "image": "team_Nima_1635851618268.jpg",
+ "created_at": {
+ "$date": "2021-06-13T04:25:32.705Z"
+ },
+ "updated_at": {
+ "$date": "2022-03-07T11:42:22.702Z"
+ },
+ "__v": 0
+},
+{
+ "_id": {
+ "$oid": "60c58cbb7084c383c231c859"
+ },
+ "locale": {
+ "fa": {
+ "first_name": "هوتن",
+ "last_name": "خورسند",
+ "position": "ريیس هیئت مدیره"
+ },
+ "en": {
+ "first_name": "Hootan",
+ "last_name": "Khorsand",
+ "position": "Chairman of the Board"
+ }
+ },
+ "index": 3,
+ "image": "team_Hootan_1635851688023.jpg",
+ "created_at": {
+ "$date": "2021-06-13T04:42:35.299Z"
+ },
+ "updated_at": {
+ "$date": "2022-03-07T11:42:24.156Z"
+ },
+ "__v": 0
+}]
\ No newline at end of file
diff --git a/server/authentication.js b/server/authentication.js
new file mode 100644
index 0000000..05f9239
--- /dev/null
+++ b/server/authentication.js
@@ -0,0 +1,91 @@
+const jwt = require('jsonwebtoken')
+const User = require('./models/User')
+
+const authentication = {
+ // secret for generating jwt token
+ secretKey: '6fe26a8a97c5815f00c14acca4137ec6c466dd75985168b3627ebf08b2dfd7f42ee69a322af6e3fd6dfe48ce747f3ca65a8765db425e602e08178a104e725ff9',
+ // check if just logged in (admin-or-user) (middleware)
+ isLoggedIn: function (req, res, next) {
+ const token = req.headers.authorization
+ if (token) {
+ // check if token is not destroyed
+ User.findOne({token: token}, (err, user) => {
+ if (err) throw err
+ if (user) {
+ // verifies secret and checks if the token is expired
+ jwt.verify(user.token.replace(/^Bearer\s/, ''), authentication.secretKey, (err, decoded) => {
+ if (err) return res.status(401).json({message: 'unauthorized'})
+ else return next()
+ })
+ } else return res.status(401).json({message: 'unauthorized'})
+ })
+ } else {
+ return res.status(401).json({message: 'unauthorized'})
+ }
+ },
+ // check if admin logged in (middleware)
+ isAdmin: function (req, res, next) {
+ const token = req?.headers?.authorization?.replace(/^Bearer\s/, '')
+ if (token) {
+ // check if token is not destroyed
+ User.findOne({token: token}, (err, user) => {
+ if (err) throw err
+ if (user) {
+ // verifies secret and checks if the token is expired
+ jwt.verify(user.token.replace(/^Bearer\s/, ''), authentication.secretKey, (err, decoded) => {
+ if (err || !user.scope.includes('admin')) return res.status(401).json({message: 'unauthorized'})
+ else return next()
+ })
+ } else return res.status(401).json({message: 'unauthorized'})
+ })
+ } else {
+ return res.status(401).json({message: 'unauthorized'})
+ }
+ },
+ // check if admin logged in (middleware)
+ isUser: function (req, res, next) {
+ const token = req.headers.authorization
+ if (token) {
+ // check if token is not destroyed
+ User.findOne({token: token}, (err, user) => {
+ if (err) throw err
+ if (user) {
+ // verifies secret and checks if the token is expired
+ jwt.verify(user.token.replace(/^Bearer\s/, ''), authentication.secretKey, (err, decoded) => {
+ if (err || !user.scope.includes('user')) return res.status(401).json({message: 'unauthorized'})
+ else return next()
+ })
+ } else return res.status(401).json({message: 'unauthorized'})
+ })
+ } else {
+ return res.status(401).json({message: 'unauthorized'})
+ }
+ },
+ // get user id from token
+ getID: (req) => {
+ const token = req.headers.authorization
+ return jwt.verify(token.replace(/^Bearer\s/, ''), authentication.secretKey, (err, decoded) => {
+ if (err) return 'unauthorized'
+ else return decoded._id
+ })
+ },
+ // check if user has permission (middleware)
+ hasPermission: (permission) => {
+ return (req, res, next) => {
+ const token = req.headers.authorization
+ if (token) {
+ // check if token is not destroyed
+ User.findOne({token: token}, (err, user) => {
+ if (err || !user) return res.status(401).json({message: 'unauthorized'})
+ if (user.permissions.includes('super-admin')) return next()
+ if (!user.permissions.includes(permission)) return res.status(401).json({message: 'unauthorized'})
+ else return next()
+ })
+ } else {
+ return res.status(401).json({message: 'unauthorized'})
+ }
+ }
+ }
+}
+
+module.exports = authentication
diff --git a/server/controllers/blogCategoryController.js b/server/controllers/blogCategoryController.js
new file mode 100644
index 0000000..3edeb2c
--- /dev/null
+++ b/server/controllers/blogCategoryController.js
@@ -0,0 +1,132 @@
+const BlogCategory = require('../models/BlogCategory')
+const BlogPost = require('../models/BlogPost')
+const {body, validationResult} = require('express-validator')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const {_sr} = require('../plugins/serverResponses')
+
+
+module.exports.create = [
+ [
+ body('fa_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return BlogCategory.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(category => {
+ if (category) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+
+ body('en_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return BlogCategory.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(category => {
+ if (category) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ })
+ ],
+ checkValidations(validationResult),
+ (req, res) => {
+ const {fa_title, en_title, fa_description, en_description} = req.body
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title,
+ description: fa_description
+ },
+ en: {
+ title: en_title,
+ description: en_description
+ }
+ }
+ }
+ const category = new BlogCategory(data)
+ category.save(err => {
+ if (err) return res500(res, err)
+ else return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ BlogCategory.find({}, (err, categories) => {
+ if (err) return res500(res, err)
+ else return res.json(categories)
+ })
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ BlogCategory.findById(req.params.id, (err, category) => {
+ if (err) return res500(res, err)
+ else return res.json(category)
+ })
+ }
+]
+
+module.exports.update = [
+ [
+ body('fa_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return BlogCategory.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(category => {
+ if (category && category._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+
+ body('en_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return BlogCategory.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(category => {
+ if (category && category._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ })
+ ],
+ checkValidations(validationResult),
+ (req, res) => {
+ const {fa_title, en_title, fa_description, en_description} = req.body
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title,
+ description: fa_description
+ },
+ en: {
+ title: en_title,
+ description: en_description
+ }
+ }
+ }
+ BlogCategory.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ else return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.delete = [
+ async (req, res) => {
+ try {
+ const posts = await BlogPost.find({category: req.params.id})
+ if (posts.length) return res.status(403).json({message: 'Can not remove categories that have posts.'})
+ BlogCategory.findByIdAndRemove(req.params.id, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ else return res.json({message: _sr['fa'].response.success_remove})
+ })
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+]
diff --git a/server/controllers/blogPostController.js b/server/controllers/blogPostController.js
new file mode 100644
index 0000000..edd4e9f
--- /dev/null
+++ b/server/controllers/blogPostController.js
@@ -0,0 +1,358 @@
+const BlogCategory = require('../models/BlogCategory')
+const BlogPost = require('../models/BlogPost')
+const mongoose = require('mongoose')
+const sharp = require('sharp')
+const fs = require('fs')
+const {body, validationResult} = require('express-validator')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const {_sr} = require('../plugins/serverResponses')
+
+// variables
+const coverWidth = 1920
+const coverHeight = 300
+const coverQuality = 100
+
+const coverThumbWidth = 400
+const coverThumbHeight = 210
+const coverThumbQuality = 100
+
+const lastSectionImageWidth = 1920
+const lastSectionImageHeight = 400
+const lastSectionImageQuality = 100
+
+const blogPaginateLimit = 10
+
+const shortDescriptionLength = 250
+
+const videoLimit = 150;
+
+module.exports.create = [
+ [
+ body('en_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return BlogPost.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(post => {
+ if (post) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+
+ body('fa_title')
+ .if((value, {req}) => value)
+ .custom((value, {req}) => {
+ return BlogPost.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(post => {
+ if (post) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ })
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ if (!req.files || !req.files.cover) return res.status(422).json({validation: {cover: {msg: _sr['fa'].required.cover}}})
+ if (!_sr.supportedImageFormats.includes(req.files.cover.mimetype.split('/')[1])) return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}})
+
+ const {
+ fa_title,
+ en_title
+ } = req.body
+
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title
+ },
+ en: {
+ title: en_title
+ }
+ }
+ }
+
+ const image = req.files.cover
+ const imageName = 'blog_' + Date.now() + '.jpg'
+ const imageThumb = 'thumb_' + imageName
+
+ try {
+ const target = await sharp(image.data)
+ await target
+ .resize(coverWidth, coverHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: coverQuality})
+ .toFile(`./static/uploads/images/blog/${imageName}`)
+
+ await target
+ .resize(coverThumbWidth, coverThumbHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: coverThumbQuality})
+ .toFile(`./static/uploads/images/blog/thumb/${imageThumb}`)
+
+ data.cover = imageName
+ data.thumb = imageThumb
+ } catch (e) {
+ return res500(res, e)
+ }
+
+ const post = new BlogPost(data)
+ post.save((err, data) => {
+ if (err) return res500(res, err)
+ return res.json(data)
+ })
+ }
+]
+
+module.exports.getAll = [
+ async (req, res) => {
+ ///////////// get available options
+ // '/api/public/blogPosts' --> gets all published posts
+ // '/api/public/blogPosts?getAll=true' --> gets all posts either published or not
+ // '/api/public/blogPosts?limit=4' --> gets only 4 published post of all categories
+ // '/api/public/blogPosts?category=${encodeURIComponent(categoryTitle)}&page=${pageNumber}' --> gets posts depend on the category title and in chunked data
+
+ if (req.query.category) {
+ try {
+ const categoryID = await BlogCategory.findOne({$or: [{'locale.fa.title': req.query.category}, {'locale.en.title': req.query.category}]})
+ const filter = req.query.category === 'all' ? {published: true} : {published: true, category: categoryID._id}
+ BlogPost.paginate(filter, {page: req.query.page, limit: blogPaginateLimit, populate: 'category', sort: {_id: -1}}, (err, posts) => {
+ if (err) return res500(res, {message: _sr['fa'].not_found.item_id})
+ return res.json(posts)
+ })
+ } catch (e) {
+ return res500(res, e)
+ }
+ } else {
+ let query = {published: true}
+ if (req.query.getAll) delete query.published
+ const limit = Number(req.query.limit) || false
+ BlogPost.find(query).sort({_id: -1}).limit(limit).populate('category').exec((err, posts) => {
+ if (err) return res500(res, err)
+ else return res.json(posts)
+ })
+ }
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ const query = req.params.id
+ const isObjectId = mongoose.isValidObjectId(query)
+ const noCategory = req.query.noCategory
+ const filter = isObjectId ? {_id: query} : {$or: [{'locale.fa.title': query}, {'locale.en.title': query}]}
+ BlogPost.findOne(filter).populate(noCategory ? '' : 'category').exec((err, post) => {
+ if (err || !post) return res404(res, err)
+ else return res.json(post)
+ })
+ }
+]
+
+module.exports.update = [
+ [
+ body('en_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return BlogPost.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(post => {
+ if (post && post._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+
+ body('fa_title')
+ .if((value, {req}) => value)
+ .custom((value, {req}) => {
+ return BlogPost.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(post => {
+ if (post && post._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+
+ body('category')
+ .notEmpty().withMessage(_sr['fa'].required.category)
+ .bail()
+ .custom((value, {req}) => {
+ if (mongoose.isValidObjectId(value)) {
+ return BlogCategory.findById(value)
+ .then(category => {
+ if (!category) return Promise.reject(_sr['fa'].not_found.item_id)
+ else return true
+ })
+ } else return Promise.reject(_sr['fa'].required.category)
+ })
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ const {
+ fa_title,
+ en_title,
+ fa_description,
+ en_description,
+ fa_short_description,
+ en_short_description,
+ fa_last_section_image_title,
+ en_last_section_image_title,
+ fa_last_section_image_description,
+ en_last_section_image_description,
+ fa_last_section_title,
+ en_last_section_title,
+ fa_last_section_description,
+ en_last_section_description,
+ category,
+ published
+ } = req.body
+
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title || '',
+ description: fa_description || '',
+ short_description: fa_short_description.slice(0, shortDescriptionLength) || '' + ' ... ',
+ last_section_image_title: fa_last_section_image_title || '',
+ last_section_image_description: fa_last_section_image_description || '',
+ last_section_title: fa_last_section_title || '',
+ last_section_description: fa_last_section_description || ''
+ },
+ en: {
+ title: en_title || '',
+ description: en_description || '',
+ short_description: en_short_description.slice(0, shortDescriptionLength) || '' + ' ... ',
+ last_section_image_title: en_last_section_image_title || '',
+ last_section_image_description: en_last_section_image_description || '',
+ last_section_title: en_last_section_title || '',
+ last_section_description: en_last_section_description || ''
+ }
+ },
+ category, published
+ }
+
+ if (req.files) {
+ if (req.files.cover) {
+ if (!_sr.supportedImageFormats.includes(req.files.cover.mimetype.split('/')[1])) return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}})
+
+ const image = req.files.cover
+ const imageName = 'blog_' + Date.now() + '.jpg'
+ const imageThumb = 'thumb_' + imageName
+
+ try {
+ const target = await sharp(image.data)
+ await target
+ .resize(coverWidth, coverHeight, {fit: 'cover'})
+ .withMetadata()
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: coverQuality})
+ .toFile(`./static/uploads/images/blog/${imageName}`)
+
+ await target
+ .resize(coverThumbWidth, coverThumbHeight, {fit: 'cover'})
+ .withMetadata()
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: coverThumbQuality})
+ .toFile(`./static/uploads/images/blog/thumb/${imageThumb}`)
+ data.cover = imageName
+ data.thumb = imageThumb
+
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+
+ if (req.files.last_section_image) {
+ if (!_sr.supportedImageFormats.includes(req.files.last_section_image.mimetype.split('/')[1])) return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}})
+
+ const image = req.files.last_section_image
+ const imageName = 'blog_' + Date.now() + '.jpg'
+ const imageThumb = 'thumb_' + imageName
+
+ try {
+ const target = await sharp(image.data)
+ await target
+ .resize(lastSectionImageWidth, lastSectionImageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: lastSectionImageQuality})
+ .toFile(`./static/uploads/images/blog/${imageName}`)
+
+ data.last_section_image = imageName
+
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+
+ if (req.files.video) {
+ const file = req?.files?.video
+ if (file.mimetype.split('/')[1] !== 'mp4') return res.status(422).json({validation: {video: {msg: _sr['fa'].format.video}}})
+
+ ///// start convert byte to mb
+ const mb = file.size / (1024 * 1024);
+
+ ///// check limit size of video
+ if (mb > videoLimit) {
+ return res.status(422).json({
+ validation: {file: {msg: `${_sr['fa'].max_char.data_size} 150 مگابایت`}}
+ });
+ }
+
+ const videoName = 'blog_' + Date.now() + '.mp4'
+ const uploadPath = `./static/uploads/videos/blog/${videoName}`;
+
+ try {
+ await file.mv(uploadPath);
+ data.video = videoName
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+ }
+
+ BlogPost.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ if (req.files && req.files.cover) {
+ fs.unlink(`./static/${oldData.cover}`, (err) => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`./static/${oldData.thumb}`, (err) => {
+ if (err) console.log(err)
+ })
+ }
+ if (req.files && req.files.last_section_image && oldData.last_section_image) {
+ fs.unlink(`./static/${oldData.last_section_image}`, (err) => {
+ if (err) console.log(err)
+ })
+ }
+ if (req.files && req.files.video && oldData.video) {
+ fs.unlink(`./static/${oldData.video}`, (err) => {
+ if (err) console.log(err)
+ })
+ }
+ return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.delete = [
+ (req, res) => {
+ BlogPost.findByIdAndRemove(req.params.id, (err, data) => {
+ if (err || !data) return res404(res, err)
+ fs.unlink(`./static/${data.cover}`, err => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`./static/${data.thumb}`, err => {
+ if (err) console.log(err)
+ })
+ if (data.last_section_image) fs.unlink(`./static/${data.last_section_image}`, err => {
+ if (err) console.log(err)
+ })
+ if (data.video) fs.unlink(`./static/${data.video}`, err => {
+ if (err) console.log(err)
+ })
+ return res.json({message: _sr['fa'].response.success_remove})
+ })
+ }
+]
diff --git a/server/controllers/catalogController.js b/server/controllers/catalogController.js
new file mode 100644
index 0000000..61b16dc
--- /dev/null
+++ b/server/controllers/catalogController.js
@@ -0,0 +1,160 @@
+const Catalog = require('../models/Catalog')
+const mongoose = require('mongoose')
+const sharp = require('sharp')
+const fs = require('fs')
+const {res404, res500} = require('../plugins/controllersHelperFunctions')
+const {_sr} = require('../plugins/serverResponses')
+
+// variables
+const coverWidth = 390
+const coverHeight = 551
+const coverQuality = 100
+
+module.exports.create = [
+ async (req, res) => {
+ if (!req.files || !req.files.file) return res.status(422).json({validation: {file: {msg: _sr['fa'].required.file}}})
+ if (!req.files || !req.files.cover) return res.status(422).json({validation: {cover: {msg: _sr['fa'].required.cover}}})
+ if (!_sr.supportedImageFormats.includes(req.files.cover.mimetype.split('/')[1])) return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}})
+
+ const {showInFa, showInEn, fa_title, en_title} = req.body
+
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title
+ },
+ en: {
+ title: en_title
+ }
+ },
+ showInFa, showInEn
+ }
+
+ // file
+ const file = req.files.file
+ const fileName = 'orisoxin_catalog_' + Date.now() + '_' + file.name
+ file.mv(`./static/uploads/catalogs/file/${fileName}`)
+ data.file = fileName
+
+ // cover
+ const image = req.files.cover
+ const imageName = 'orisoxin_catalog_cover_' + Date.now() + '.jpg'
+
+ try {
+ const target = await sharp(image.data)
+
+ await target
+ .resize(coverWidth, coverHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: coverQuality})
+ .toFile(`./static/uploads/catalogs/cover/${imageName}`)
+
+ data.cover = imageName
+ } catch (e) {
+ return res500(res, e)
+ }
+
+ const catalog = new Catalog(data)
+ catalog.save((err, data) => {
+ if (err) return res500(res, err)
+ return res.json(data)
+ })
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ Catalog.find({}).sort({_id: -1}).exec((err, images) => {
+ if (err) return res500(res, err)
+ else return res.json(images)
+ })
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ Catalog.findById(req.params.id, (err, image) => {
+ if (err || !image) return res404(res, err)
+ else return res.json(image)
+ })
+ }
+]
+
+module.exports.update = [
+ async (req, res) => {
+ const {showInFa, showInEn, fa_title, en_title} = req.body
+
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title
+ },
+ en: {
+ title: en_title
+ }
+ },
+ showInFa, showInEn
+ }
+
+ if (req.files) {
+ if (req.files.file) {
+ const file = req.files.file
+ const fileName = 'orisoxin_catalog_' + Date.now() + '_' + file.name
+ file.mv(`./static/uploads/catalogs/file/${fileName}`)
+ data.file = fileName
+ }
+
+ if (req.files.cover) {
+ if (!_sr.supportedImageFormats.includes(req.files.cover.mimetype.split('/')[1])) return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}})
+
+ const image = req.files.cover
+ const imageName = 'orisoxsin_cover_' + Date.now() + '.jpg'
+
+ try {
+ const target = await sharp(image.data)
+ await target
+ .resize(coverWidth, coverHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: coverQuality})
+ .toFile(`./static/uploads/catalogs/cover/${imageName}`)
+
+ data.cover = imageName
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+ }
+
+ Catalog.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ if (req.files && req.files.file) {
+ fs.unlink(`./static/${oldData.file}`, (err) => {
+ if (err) console.log(err)
+ })
+ }
+ if (req.files && req.files.cover) {
+ fs.unlink(`./static/${oldData.cover}`, (err) => {
+ if (err) console.log(err)
+ })
+ }
+ return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.delete = [
+ (req, res) => {
+ Catalog.findByIdAndRemove(req.params.id, (err, data) => {
+ if (err || !data) return res404(res, err)
+ fs.unlink(`./static/${data.file}`, err => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`./static/${data.cover}`, err => {
+ if (err) console.log(err)
+ })
+ return res.json({message: _sr['fa'].response.success_remove})
+ })
+ }
+]
diff --git a/server/controllers/contactUsController.js b/server/controllers/contactUsController.js
new file mode 100644
index 0000000..580a3cd
--- /dev/null
+++ b/server/controllers/contactUsController.js
@@ -0,0 +1,125 @@
+const ContactUs = require('../models/ContactUs')
+const {body, validationResult} = require('express-validator')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const {_sr} = require('../plugins/serverResponses')
+const nodemailer = require('nodemailer')
+
+module.exports.create = [
+ [
+ body('locale')
+ .isLength({min: 2}).withMessage('locale is required')
+ .bail()
+ .custom((value, {req}) => {
+ return value === 'fa' || value === 'en' ? true : Promise.reject('locale is not correct')
+ }),
+
+ body('name')
+ .notEmpty().withMessage((value, {req}) => _sr[req.body.locale].required.name)
+ .bail()
+ .isLength({min: 2}).withMessage((value, {req}) => _sr[req.body.locale].min_char.min2),
+
+ body('email')
+ .notEmpty().withMessage((value, {req}) => _sr[req.body.locale].required.email)
+ .bail()
+ .isEmail().withMessage((value, {req}) => _sr[req.body.locale].format.email),
+
+ body('subject')
+ .notEmpty().withMessage((value, {req}) => _sr[req.body.locale].required.subject)
+ .bail()
+ .isLength({min: 4}).withMessage((value, {req}) => _sr[req.body.locale].min_char.min4),
+
+ body('message')
+ .notEmpty().withMessage((value, {req}) => _sr[req.body.locale].required.message)
+ .bail()
+ .isLength({min: 10}).withMessage((value, {req}) => _sr[req.body.locale].min_char.min10)
+ ],
+ checkValidations(validationResult),
+ (req, res) => {
+ const {locale, name, email, subject, message} = req.body
+
+ const data = {locale, name, email, subject, message}
+
+
+ let transporter = nodemailer.createTransport({
+ host: 'mail.negareh-demo2.ir',
+ port: 587,
+ secure: false, // true for 465, false for other ports
+ auth: {
+ user: 'client@negareh-demo2.ir',
+ pass: 'JSAT}Q-RB_s0'
+ },
+ tls: {
+ rejectUnauthorized: false
+ }
+ })
+
+ const emailHTMLTemplate = `
+
+
+
+
+
+ عنوان پیام:
+
+
${subject}
+
+
+
+متن پیام:
+
+
${message}
+
+
+
+
+ مشخصات فرستنده:
+
+ ${name}
+ -
+ ${email}
+
+
+
+
+
${Date.now()}
+
+ `
+
+ // send mail with defined transport object
+ transporter.sendMail({
+ from: '"OrisOxin Website" ', // sender address
+ to: 'info@orisoxin.com', // list of receivers
+ subject: subject,
+ text: message,
+ html: emailHTMLTemplate
+ })
+
+
+ new ContactUs(data).save((err, data) => {
+ if (err) return res500(res, err)
+ return res.json({message: _sr[req.body.locale].response.success_save})
+ })
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ ContactUs.find({}, (err, data) => {
+ if (err) return res500(res, err)
+ return res.json(data)
+ })
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ ContactUs.findById(req.params.id, (err, data) => {
+ if (err || !data) return res404(res, err)
+ data.read = true
+ data.save((err, message) => {
+ if (err) console.log(err)
+ return res.json(message)
+ })
+ })
+ }
+]
diff --git a/server/controllers/customerCommentController.js b/server/controllers/customerCommentController.js
new file mode 100644
index 0000000..4f08f14
--- /dev/null
+++ b/server/controllers/customerCommentController.js
@@ -0,0 +1,184 @@
+const CustomerComment = require('../models/CustomerComment')
+const sharp = require('sharp')
+const fs = require('fs')
+const {body, validationResult} = require('express-validator')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const {_sr} = require('../plugins/serverResponses')
+
+
+// variables
+const imageWidth = 350
+const imageHeight = 350
+const imageQuality = 100
+
+
+module.exports.create = [
+ [
+ body('fa_name')
+ .notEmpty().withMessage((value, {req}) => _sr['fa'].required.name)
+ .bail()
+ .isLength({min: 2}).withMessage((value, {req}) => _sr['fa'].min_char.min2),
+
+ body('en_name')
+ .notEmpty().withMessage((value, {req}) => _sr['fa'].required.name)
+ .bail()
+ .isLength({min: 2}).withMessage((value, {req}) => _sr['fa'].min_char.min2),
+
+ body('fa_comment')
+ .notEmpty().withMessage((value, {req}) => _sr['fa'].required.caption)
+ .bail()
+ .isLength({min: 2}).withMessage((value, {req}) => _sr['fa'].min_char.min2),
+
+ body('en_comment')
+ .notEmpty().withMessage((value, {req}) => _sr['fa'].required.caption)
+ .bail()
+ .isLength({min: 2}).withMessage((value, {req}) => _sr['fa'].min_char.min2)
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ const {fa_name, en_name, fa_position, en_position, fa_comment, en_comment} = req.body
+ const data = {
+ locale: {
+ fa: {
+ name: fa_name,
+ position: fa_position,
+ comment: fa_comment
+ },
+ en: {
+ name: en_name,
+ position: en_position,
+ comment: en_comment
+ }
+ }
+ }
+
+ if (req.files && req.files.image) {
+ const image = req.files.image
+ const imageName = 'customer_' + Date.now() + '.jpg'
+ data.image = imageName
+
+ try {
+ const target = await sharp(image.data)
+
+ await target
+ .resize(imageWidth, imageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: imageQuality})
+ .toFile(`./static/uploads/images/customer/${imageName}`)
+
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+
+ new CustomerComment(data).save((err, data) => {
+ if (err) return res500(res, err)
+ return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ CustomerComment.find({}, (err, data) => {
+ if (err) return res500(res, err)
+ return res.json(data)
+ })
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ CustomerComment.findById(req.params.id, (err, data) => {
+ if (err || !data) return res404(res, err)
+ else return res.json(data)
+ })
+ }
+]
+
+module.exports.update = [
+ [
+ body('fa_name')
+ .notEmpty().withMessage((value, {req}) => _sr['fa'].required.name)
+ .bail()
+ .isLength({min: 2}).withMessage((value, {req}) => _sr['fa'].min_char.min2),
+
+ body('en_name')
+ .notEmpty().withMessage((value, {req}) => _sr['fa'].required.name)
+ .bail()
+ .isLength({min: 2}).withMessage((value, {req}) => _sr['fa'].min_char.min2),
+
+ body('fa_comment')
+ .notEmpty().withMessage((value, {req}) => _sr['fa'].required.caption)
+ .bail()
+ .isLength({min: 2}).withMessage((value, {req}) => _sr['fa'].min_char.min2),
+
+ body('en_comment')
+ .notEmpty().withMessage((value, {req}) => _sr['fa'].required.caption)
+ .bail()
+ .isLength({min: 2}).withMessage((value, {req}) => _sr['fa'].min_char.min2)
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ const {fa_name, en_name, fa_position, en_position, fa_comment, en_comment} = req.body
+ const data = {
+ locale: {
+ fa: {
+ name: fa_name,
+ position: fa_position,
+ comment: fa_comment
+ },
+ en: {
+ name: en_name,
+ position: en_position,
+ comment: en_comment
+ }
+ }
+ }
+
+ if (req.files && req.files.image) {
+ const image = req.files.image
+ const imageName = 'customer_' + Date.now() + '.jpg'
+ data.image = imageName
+
+ try {
+ const target = await sharp(image.data)
+
+ await target
+ .resize(imageWidth, imageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: imageQuality})
+ .toFile(`./static/uploads/images/customer/${imageName}`)
+
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+
+ CustomerComment.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ if (oldData.image && req.files && req.files.image) {
+ fs.unlink(`./static/${oldData.image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.delete = [
+ (req, res) => {
+ CustomerComment.findByIdAndRemove(req.params.id, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ if (oldData.image) {
+ fs.unlink(`./static/${oldData.image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ return res.json({message: _sr['fa'].response.success_remove})
+ })
+ }
+]
diff --git a/server/controllers/galleryCategoryController.js b/server/controllers/galleryCategoryController.js
new file mode 100644
index 0000000..bab4c81
--- /dev/null
+++ b/server/controllers/galleryCategoryController.js
@@ -0,0 +1,221 @@
+const GalleryCategory = require('../models/GalleryCategory')
+const Gallery = require('../models/Gallery')
+const {body, validationResult} = require('express-validator')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const {_sr} = require('../plugins/serverResponses')
+const sharp = require('sharp')
+const fs = require('fs')
+
+const imageQuality = 100
+const imageThumbWidth = 500
+const imageThumbHeight = 500
+const imageThumbQuality = 80
+
+module.exports.create = [
+ [
+ body('fa_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return GalleryCategory.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(category => {
+ if (category) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+
+ body('en_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return GalleryCategory.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(category => {
+ if (category) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ })
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ const {fa_title, en_title, fa_description, en_description , index} = req.body
+ if (!req.files || !req.files.cover) return res.status(422).json({validation: {cover: {msg: _sr['fa'].required.cover}}})
+ if (!_sr.supportedImageFormats.includes(req.files.cover.mimetype.split('/')[1])) return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}})
+
+ const image = req.files.cover
+ const imageName = 'categoryIMG_' + Date.now() + '.jpg'
+ const imageThumb = 'thumb_' + imageName
+
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title,
+ description: fa_description
+ },
+ en: {
+ title: en_title,
+ description: en_description
+ }
+ },
+ index
+ }
+
+ try {
+ const target = await sharp(image.data)
+ await target
+ .toFormat('jpg')
+ .jpeg({quality: imageQuality})
+ .toFile(`./static/uploads/images/galleryCover/${imageName}`)
+
+ await target
+ .resize(imageThumbWidth, imageThumbHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: imageThumbQuality})
+ .toFile(`./static/uploads/images/galleryCover/thumb/${imageThumb}`)
+
+ data.cover = imageName
+ data.thumb = imageThumb
+
+ } catch (e) {
+ return res500(res, e)
+ }
+ const category = new GalleryCategory(data)
+ category.save(err => {
+ if (err) return res500(res, err)
+ else return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ GalleryCategory.find({}, (err, categories) => {
+ if (err) return res500(res, err)
+ else return res.json(categories)
+ }).sort({index : 1})
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ GalleryCategory.findById(req.params.id, (err, category) => {
+ if (err) return res500(res, err)
+ else return res.json(category)
+ })
+ }
+]
+
+module.exports.update = [
+ [
+ body('fa_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return GalleryCategory.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(category => {
+ if (category && category._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+
+ body('en_title')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return GalleryCategory.findOne({$or: [{'locale.fa.title': value}, {'locale.en.title': value}]})
+ .then(category => {
+ if (category && category._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ })
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ const {fa_title, en_title, fa_description, en_description,index} = req.body
+ const image = req?.files?.cover
+
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title,
+ description: fa_description
+ },
+ en: {
+ title: en_title,
+ description: en_description
+ }
+ },
+ index
+ }
+
+
+ if (image) {
+ if (!_sr.supportedImageFormats.includes(req.files.cover.mimetype.split('/')[1])) return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}})
+
+
+ const imageName = 'categoryIMG_' + Date.now() + '.jpg'
+ const imageThumb = 'thumb_' + imageName
+ try {
+ const target = await sharp(image.data)
+ await target
+ .toFormat('jpg')
+ .jpeg({quality: imageQuality})
+ .toFile(`./static/uploads/images/galleryCover/${imageName}`)
+
+ await target
+ .resize(imageThumbWidth, imageThumbHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: imageThumbQuality})
+ .toFile(`./static/uploads/images/galleryCover/thumb/${imageThumb}`)
+
+ data.cover = imageName
+ data.thumb = imageThumb
+
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+
+ GalleryCategory.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ else {
+ if (image && oldData.cover) {
+ fs.unlink(`./static/${oldData.cover}`, (err) => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`./static/${oldData.thumb}`, (err) => {
+ if (err) console.log(err)
+ })
+ }
+ return res.json({message: _sr['fa'].response.success_save})
+ }
+ })
+ }
+]
+
+module.exports.delete = [
+ async (req, res) => {
+ try {
+ const posts = await Gallery.find({category: req.params.id})
+ if (posts.length) return res.status(403).json({message: 'Can not remove categories that have posts.'})
+ GalleryCategory.findByIdAndRemove(req.params.id, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ else {
+
+ if (oldData.cover) {
+ fs.unlink(`./static/${oldData.cover}`, (err) => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`./static/${oldData.thumb}`, (err) => {
+ if (err) console.log(err)
+ })
+ }
+ return res.json({message: _sr['fa'].response.success_remove})
+ }
+ })
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+]
diff --git a/server/controllers/galleryController.js b/server/controllers/galleryController.js
new file mode 100644
index 0000000..236c6f7
--- /dev/null
+++ b/server/controllers/galleryController.js
@@ -0,0 +1,190 @@
+const Gallery = require('../models/Gallery')
+const mongoose = require('mongoose')
+const sharp = require('sharp')
+const fs = require('fs')
+const {body, validationResult} = require('express-validator')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const {_sr} = require('../plugins/serverResponses')
+
+// variables
+const imageQuality = 100
+
+const imageThumbWidth = 500
+const imageThumbHeight = 500
+const imageThumbQuality = 80
+
+module.exports.create = [
+ [
+ body('category')
+ .if((value, {req}) => req.body.noCategory === 'false')
+ .notEmpty().withMessage(_sr['fa'].required.category)
+ .bail()
+ .custom((value, {req}) => {
+ return mongoose.isValidObjectId(value) ? true : Promise.reject(_sr['fa'].required.category)
+ })
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ try {
+ if (!req.files || !req.files.image) return res.status(422).json({validation: {image: {msg: _sr['fa'].required.image}}})
+ if (!_sr.supportedImageFormats.includes(req.files.image.mimetype.split('/')[1])) return res.status(422).json({validation: {image: {msg: _sr['fa'].format.image}}})
+
+ const {fa_caption, en_caption, category, noCategory} = req.body
+
+ const data = {
+ locale: {
+ fa: {
+ caption: fa_caption
+ },
+ en: {
+ caption: en_caption
+ }
+ },
+ noCategory
+ }
+ if (mongoose.isValidObjectId(category)) data.category = category
+ const image = req.files.image
+ const imageName = 'gallery_' + Date.now() + '.jpg'
+ const imageThumb = 'thumb_' + imageName
+
+ try {
+ const target = await sharp(image.data)
+ await target
+ .toFormat('jpg')
+ .jpeg({quality: imageQuality})
+ .toFile(`./static/uploads/images/gallery/${imageName}`)
+
+ await target
+ .resize(imageThumbWidth, imageThumbHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: imageThumbQuality})
+ .toFile(`./static/uploads/images/gallery/${imageThumb}`)
+
+ data.image = imageName
+ data.thumb = imageThumb
+ } catch (e) {
+ return res500(res , _sr['fa'].response.problem)
+ }
+
+ const post = new Gallery(data)
+ post.save((err, data) => {
+ if (err) return res500(res , _sr['fa'].response.problem)
+ return res.json(data)
+ })
+ }catch (e) {
+ return res500(res , _sr['fa'].response.problem)
+ }
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ Gallery.find({}).populate('category').sort({_id: -1}).exec((err, images) => {
+ if (err) return res500(res, err)
+ else return res.json(images)
+ })
+ }
+]
+
+module.exports.getByCategoryId = [
+ (req, res) => {
+ Gallery.find({category: req.params.id}).sort({_id: -1}).exec((err, images) => {
+ if (err) return res500(res, err)
+ else return res.json(images)
+ })
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ Gallery.findById(req.params.id, (err, image) => {
+ if (err || !image) return res404(res, err)
+ else return res.json(image)
+ })
+ }
+]
+
+module.exports.update = [
+ [
+ body('category')
+ .if((value, {req}) => req.body.noCategory === 'false')
+ .notEmpty().withMessage(_sr['fa'].required.category)
+ .bail()
+ .custom((value, {req}) => {
+ return mongoose.isValidObjectId(value) ? true : Promise.reject(_sr['fa'].required.category)
+ })
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ const {fa_caption, en_caption, category, noCategory} = req.body
+
+ const data = {
+ locale: {
+ fa: {
+ caption: fa_caption
+ },
+ en: {
+ caption: en_caption
+ }
+ },
+ noCategory
+ }
+ if (mongoose.isValidObjectId(category)) data.category = category
+ if (req.files && req.files.image) {
+ if (!_sr.supportedImageFormats.includes(req.files.image.mimetype.split('/')[1])) return res.status(422).json({validation: {image: {msg: _sr['fa'].format.image}}})
+
+ const image = req.files.image
+ const imageName = 'gallery_' + Date.now() + '.jpg'
+ const imageThumb = 'thumb_' + imageName
+
+ try {
+ const target = await sharp(image.data)
+ await target
+ .toFormat('jpg')
+ .jpeg({quality: imageQuality})
+ .toFile(`./static/uploads/images/gallery/${imageName}`)
+
+ await target
+ .resize(imageThumbWidth, imageThumbHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: imageThumbQuality})
+ .toFile(`./static/uploads/images/gallery/${imageThumb}`)
+
+ data.image = imageName
+ data.thumb = imageThumb
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+
+ Gallery.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ if (req.files && req.files.image) {
+ fs.unlink(`./static/${oldData.image}`, (err) => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`./static/${oldData.thumb}`, (err) => {
+ if (err) console.log(err)
+ })
+ }
+ return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.delete = [
+ (req, res) => {
+ Gallery.findByIdAndRemove(req.params.id, (err, data) => {
+ if (err || !data) return res404(res, err)
+ fs.unlink(`./static/${data.image}`, err => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`./static/${data.thumb}`, err => {
+ if (err) console.log(err)
+ })
+ return res.json({message: _sr['fa'].response.success_remove})
+ })
+ }
+]
diff --git a/server/controllers/projectCategoryController.js b/server/controllers/projectCategoryController.js
new file mode 100644
index 0000000..820e5c1
--- /dev/null
+++ b/server/controllers/projectCategoryController.js
@@ -0,0 +1,247 @@
+const Project = require('../models/Project')
+const ProjectCategory = require('../models/ProjectCategory')
+const {body, validationResult} = require('express-validator')
+const {_sr} = require('../plugins/serverResponses')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const mongoose = require('mongoose')
+
+
+module.exports.create = [
+ [
+ body('fa_name')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return ProjectCategory.findOne({$or: [{'locale.fa.name': value}, {'locale.en.name': value}]})
+ .then(product => {
+ if (product) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+
+ body('en_name')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return ProjectCategory.findOne({$or: [{'locale.fa.name': value}, {'locale.en.name': value}]})
+ .then(product => {
+ if (product) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+ ],
+ checkValidations(validationResult),
+ (req, res) => {
+ const {fa_name, en_name} = req.body
+ const data = {
+ locale: {
+ fa: {
+ name: fa_name
+ },
+ en: {
+ name: en_name
+ }
+ }
+ }
+ const projectCategory = new ProjectCategory(data)
+ projectCategory.save((err, data) => {
+ if (err) return res500(res, err)
+ else return res.json(data)
+ })
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ ProjectCategory.find({}).exec((err, projects) => {
+ if (err) return res500(res, err)
+ else return res.json(projects)
+ })
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ ProjectCategory.findById(req.params.id, (err, projectCategory) => {
+ if (err || !projectCategory) return res404(res, err)
+ else return res.json(projectCategory)
+ })
+ }
+]
+
+module.exports.update = [
+ [
+ body('fa_name')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return ProjectCategory.findOne({$or: [{'locale.fa.name': value}, {'locale.en.name': value}]})
+ .then(product => {
+ if (product && product._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ }),
+
+ body('en_name')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ .bail()
+ .custom((value, {req}) => {
+ return ProjectCategory.findOne({$or: [{'locale.fa.name': value}, {'locale.en.name': value}]})
+ .then(product => {
+ if (product && product._id.toString() !== req.params.id) return Promise.reject(_sr['fa'].duplicated.title)
+ else return true
+ })
+ })
+ ],
+ checkValidations(validationResult),
+ (req, res) => {
+ const {
+ fa_name,
+ en_name
+ } = req.body
+
+ const data = {
+ locale: {
+ fa: {
+ name: fa_name
+ },
+ en: {
+ name: en_name
+ }
+ }
+ }
+
+ ProjectCategory.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.delete = [
+ async (req, res) => {
+ const projects = await Project.find({category: req.params.id})
+ if (projects.length) return res.status(403).json({message: 'نمیتوان دسته بندی هایی که دارای پروژه هستند را حذف کرد.'})
+
+ ProjectCategory.findByIdAndRemove(req.params.id, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ return res.json({message: _sr['fa'].response.success_remove})
+ })
+ }
+]
+
+////////////////////////////
+
+module.exports.addTagToCategory = [
+ [
+ body('fa_tagName')
+ .notEmpty().withMessage(_sr['fa'].required.title),
+
+ body('en_tagName')
+ .notEmpty().withMessage(_sr['fa'].required.title)
+ ],
+ checkValidations(validationResult),
+ (req, res) => {
+ const {fa_tagName, en_tagName} = req.body
+ ProjectCategory.findById(req.params.categoryId, (err, data) => {
+ if (err || !data) return res404(res, err)
+ data.tags.push({
+ locale: {
+ fa: {
+ name: fa_tagName
+ },
+ en: {
+ name: en_tagName
+ }
+ }
+ })
+ data.save(err => {
+ if (err) console.log(err)
+ else return res.json({message: _sr['fa'].response.success_save})
+ })
+ })
+ }
+]
+
+module.exports.removeTagFromCategory = [
+ async (req, res) => {
+ const projects = await Project.find({tag: req.params.id})
+ if (projects.length) return res.status(403).json({message: 'نمیتوان دسته بندی هایی که دارای پروژه هستند را حذف کرد.'})
+
+ ProjectCategory.findOne({'tags._id': req.params.tagId}, (err, project) => {
+ if (err || !project) return res404(res, err)
+ const tag = project.tags.id(req.params.tagId)
+ tag.remove(err => {
+ if (err) console.log(err)
+ })
+ project.save(err => {
+ if (err) console.log(err)
+ else return res.json({message: _sr['fa'].response.success_save})
+ })
+ })
+ }
+]
+
+
+// module.exports.getAll = [
+// (req, res) => {
+// return res.json([
+// {
+// id: 'drilling',
+// locale: {
+// fa: {
+// name: 'صنعت حفاری',
+// },
+// en: {
+// name: 'Drilling industry'
+// }
+// }
+// },
+// {
+// id: 'piping',
+// locale: {
+// fa: {
+// name: 'صنعت خطوط لوله و اتصالات',
+// },
+// en: {
+// name: 'Pipeline and fittings industry'
+// }
+// }
+// },
+// {
+// id: 'ward',
+// locale: {
+// fa: {
+// name: 'صنعت پتروشیمی',
+// },
+// en: {
+// name: 'Petrochemical industry'
+// }
+// }
+// },
+// // {
+// // id: 'srp',
+// // locale: {
+// // fa: {
+// // name: 'پمپ های درون چاهی SRP',
+// // },
+// // en: {
+// // name: 'Manufacturer of SRP well pumps'
+// // }
+// // }
+// // },
+// // {
+// // id: 'sm',
+// // locale: {
+// // fa: {
+// // name: 'طراحی و ساخت unit های فرآورش و نمک زدایی پیش ساخته Skid Mounted',
+// // },
+// // en: {
+// // name: 'Skid Mounted'
+// // }
+// // }
+// // },
+// ])
+// }
+// ]
+
diff --git a/server/controllers/projectController.js b/server/controllers/projectController.js
new file mode 100644
index 0000000..fc813ac
--- /dev/null
+++ b/server/controllers/projectController.js
@@ -0,0 +1,515 @@
+const Project = require('../models/Project')
+const {body, validationResult} = require('express-validator')
+const {_sr} = require('../plugins/serverResponses')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const sharp = require('sharp')
+const mongoose = require('mongoose')
+const fs = require('fs')
+const readXlsxFile = require('read-excel-file/node')
+
+// variables
+const shortDescriptionMaxLength = 250
+
+const coverWidth = 1920
+const coverHeight = 418
+const coverQuality = 100
+
+const thumbWidth = 770
+const thumbHeight = 354
+const thumbQuality = 80
+
+
+const s2ImageWidth = 1272
+const s2ImageHeight = 670
+const s2ImageQuality = 100
+
+
+const s4ImageWidth = 1920
+const s4ImageHeight = 500
+const s4ImageQuality = 100
+
+
+const s5ImageWidth = 1270
+const s5ImageHeight = 950
+const s5ImageQuality = 100
+
+
+const s6ImageWidth = 1270
+const s6ImageHeight = 950
+const s6ImageQuality = 100
+
+module.exports.create = [
+ [
+
+ body('fa_title')
+ .notEmpty().withMessage(_sr['fa'].required.title),
+
+ body('en_title')
+ .notEmpty().withMessage(_sr['fa'].required.title),
+
+ body('category')
+ .notEmpty().withMessage(_sr['fa'].required.category),
+
+ body('project_date')
+ .notEmpty().withMessage(_sr['fa'].required.date)
+ .bail()
+ .isNumeric().withMessage(_sr['fa'].format.number)
+ .bail()
+ .isLength({min: 4, max: 4}).withMessage('مقدار باید 4 رقمی باشد'),
+
+ body('has_details')
+ .notEmpty().withMessage('this flag is required')
+ ],
+ checkValidations(validationResult),
+ (req, res) => {
+ const {fa_title, en_title, fa_client, en_client, category, tag, has_details, project_date} = req.body
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title,
+ client: fa_client
+ },
+ en: {
+ title: en_title,
+ client: en_client
+ }
+ },
+ category,
+ has_details,
+ project_date
+ }
+ if (tag) data.tag = tag
+ if (!has_details) data.completed = true
+ const project = new Project(data)
+ project.save((err, data) => {
+ if (err) return res500(res, err)
+ else return res.json(data)
+ })
+ }
+]
+
+module.exports.addExel = [
+ async (req, res) => {
+ const allData = []
+
+ // const rows = await readXlsxFile(`LSAW.xlsx`, {sheet: 1})
+
+ // await Project.deleteMany({category : '61544d48340d0704add10a10'})
+
+ // for (let i = 0; i < rows.length; i++) {
+ // // const project = await Project.findOne({$or : [
+ // // {'locale.en.title' : rows[i][1].replace(/\n/g, " ")},
+ // // {'locale.fa.title' : rows[i][1].replace(/\n/g, " ")}
+ // // ]})
+ //
+ // // if (!project){
+ // allData.push({
+ // locale: {
+ // fa: {
+ // title:rows[i][1] && typeof rows[i][1]==='string'? rows[i][1].replace(/\n/g, " ") : rows[i][1],
+ // client: rows[i][3],
+ // area : rows[i][2]
+ // },
+ // en: {
+ // title: rows[i][1] && typeof rows[i][1]==='string'? rows[i][1].replace(/\n/g, " ") : rows[i][1],
+ // client: rows[i][3],
+ // area : rows[i][2]
+ // }
+ // },
+ // category : '61544d0d41304b825a19901c',
+ // tag : '61554c9e4b787cbf8b9bd6fd',
+ // importWithCode : true,
+ // project_date : rows[i][4]
+ // })
+ // }
+ // }
+ // console.log(allData.length)
+ // let addData = allData.map(data => Project.create(data));
+ // const result = await Promise.all(addData)
+ // return res.json(result)
+ const allPro = await Project.find()
+ for (const pro of allPro) {
+ if (pro?.locale?.en?.size || pro?.locale?.en?.area){
+ pro.size = pro.locale.en.size
+ pro.area = pro.locale.en.size
+ }
+ }
+ return res.json(allData)
+ // return res.json(rows)
+ // const data = {
+ // locale: {
+ // fa: {
+ // title: fa_title,
+ // client: fa_client
+ // },
+ // en: {
+ // title: en_title,
+ // client: en_client
+ // }
+ // },
+ // category,
+ // has_details,
+ // project_date
+ // }
+ // if (tag) data.tag = tag
+ // if (!has_details) data.completed = true
+ // const project = new Project(data)
+ // project.save((err, data) => {
+ // if (err) return res500(res, err)
+ // else return res.json(data)
+ // })
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ Project.find().populate('category').sort({project_date : -1}).exec((err, projects) => {
+ if (err) return res500(res, err)
+ else return res.json(projects)
+ })
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ const query = req.params.id
+ const isObjectId = mongoose.isValidObjectId(query)
+ const filter = isObjectId ? {_id: query} : {$or: [{'locale.fa.title': query}, {'locale.en.title': query}]}
+ Project.findOne(filter, (err, project) => {
+ if (err || !project) return res404(res, err)
+ else return res.json(project)
+ })
+ }
+]
+
+module.exports.update = [
+ [
+ body('category')
+ .notEmpty().withMessage(_sr['fa'].required.category),
+
+ body('fa_title')
+ .notEmpty().withMessage(_sr['fa'].required.title),
+
+ body('en_title')
+ .notEmpty().withMessage(_sr['fa'].required.title),
+
+ body('category')
+ .notEmpty().withMessage(_sr['fa'].required.category),
+
+ body('project_date')
+ .notEmpty().withMessage(_sr['fa'].required.date)
+ .bail()
+ .isNumeric().withMessage(_sr['fa'].format.number)
+ .bail()
+ .isLength({min: 4, max: 4}).withMessage('مقدار باید 4 رقمی باشد'),
+
+ body('has_details')
+ .notEmpty().withMessage('this flag is required')
+ ],
+ checkValidations(validationResult),
+ (req, res) => {
+ const {
+ fa_title,
+ en_title,
+ fa_short_description,
+ en_short_description,
+ fa_description,
+ en_description,
+ //
+ fa_client,
+ en_client,
+ //
+ fa_size,
+ en_size,
+ //
+ fa_area,
+ en_area,
+ //
+ fa_s3_title,
+ en_s3_title,
+ fa_s3_description,
+ en_s3_description,
+ //
+ fa_s5_title,
+ en_s5_title,
+ fa_s5_description,
+ en_s5_description,
+ //
+ fa_s6_title,
+ en_s6_title,
+ fa_s6_description,
+ en_s6_description,
+ category,
+ tag,
+ project_date,
+ has_details
+ } = req.body
+
+ const data = {
+ locale: {
+ fa: {
+ title: fa_title,
+ short_description: fa_short_description.slice(0, shortDescriptionMaxLength) + ' ... ',
+ description: fa_description,
+ //
+ client: fa_client,
+ size: fa_size,
+ area: fa_area,
+ //
+ s3_title: fa_s3_title,
+ s3_description: fa_s3_description,
+ //
+ s5_title: fa_s5_title,
+ s5_description: fa_s5_description,
+ //
+ s6_title: fa_s6_title,
+ s6_description: fa_s6_description
+ },
+ en: {
+ title: en_title,
+ short_description: en_short_description.slice(0, shortDescriptionMaxLength) + ' ... ',
+ description: en_description,
+ //
+ client: en_client,
+ size: en_size,
+ area: en_area,
+ //
+ s3_title: en_s3_title,
+ s3_description: en_s3_description,
+ //
+ s5_title: en_s5_title,
+ s5_description: en_s5_description,
+ //
+ s6_title: en_s6_title,
+ s6_description: en_s6_description
+ }
+ },
+ category,
+ project_date,
+ has_details,
+ }
+ if (tag) data.tag = tag
+ if (req.files) {
+ if (req.files.cover) {
+ const cover = req.files.cover
+ const coverName = 'project_' + Date.now() + '.jpg'
+ if (!_sr.supportedImageFormats.includes(cover.mimetype.split('/')[1])) return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}})
+ data.cover = coverName
+ data.thumb = 'thumb_' + coverName
+
+ const target = new sharp(cover.data)
+ target
+ .resize(coverWidth, coverHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: coverQuality})
+ .toFile(`./static/uploads/images/projects/${coverName}`)
+
+ target
+ .resize(thumbWidth, thumbHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: thumbQuality})
+ .toFile(`./static/uploads/images/projects/thumb_${coverName}`)
+ }
+
+ if (req.files.s2_image) {
+ const s2_image = req.files.s2_image
+ const s2_imageName = 's2_image_' + Date.now() + '.jpg'
+ if (!_sr.supportedImageFormats.includes(s2_image.mimetype.split('/')[1])) return res.status(422).json({validation: {s2_image: {msg: _sr['fa'].format.image}}})
+ data.s2_image = s2_imageName
+
+ const target = new sharp(s2_image.data)
+ target
+ .resize(s2ImageWidth, s2ImageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: s2ImageQuality})
+ .toFile(`./static/uploads/images/projects/${s2_imageName}`)
+ }
+
+ if (req.files.s4_image) {
+ const s4_image = req.files.s4_image
+ const s4_imageName = 's4_image_' + Date.now() + '.jpg'
+ if (!_sr.supportedImageFormats.includes(s4_image.mimetype.split('/')[1])) return res.status(422).json({validation: {s4_image: {msg: _sr['fa'].format.image}}})
+ data.s4_image = s4_imageName
+
+ const target = new sharp(s4_image.data)
+ target
+ .resize(s4ImageWidth, s4ImageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: s4ImageQuality})
+ .toFile(`./static/uploads/images/projects/${s4_imageName}`)
+ }
+
+ if (req.files.s5_image) {
+ const s5_image = req.files.s5_image
+ const s5_imageName = 's5_image_' + Date.now() + '.jpg'
+ if (!_sr.supportedImageFormats.includes(s5_image.mimetype.split('/')[1])) return res.status(422).json({validation: {s5_image: {msg: _sr['fa'].format.image}}})
+ data.s5_image = s5_imageName
+
+ const target = new sharp(s5_image.data)
+ target
+ .resize(s5ImageWidth, s5ImageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: s5ImageQuality})
+ .toFile(`./static/uploads/images/projects/${s5_imageName}`)
+ }
+
+ if (req.files.s6_image) {
+ const s6_image = req.files.s6_image
+ const s6_imageName = 's6_image_' + Date.now() + '.jpg'
+ if (!_sr.supportedImageFormats.includes(s6_image.mimetype.split('/')[1])) return res.status(422).json({validation: {s6_image: {msg: _sr['fa'].format.image}}})
+ data.s6_image = s6_imageName
+
+ const target = new sharp(s6_image.data)
+ target
+ .resize(s6ImageWidth, s6ImageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: s6ImageQuality})
+ .toFile(`./static/uploads/images/projects/${s6_imageName}`)
+ }
+ }
+
+ Project.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ if (req.files) {
+ if (req.files.cover && oldData.cover) {
+ fs.unlink(`./static/${oldData.cover}`, err => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`./static/${oldData.thumb}`, err => {
+ if (err) console.log(err)
+ })
+ }
+
+ if (req.files.s2_image && oldData.s2_image) {
+ fs.unlink(`./static/${oldData.s2_image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ if (req.files.s4_image && oldData.s4_image) {
+ fs.unlink(`./static/${oldData.s4_image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ if (req.files.s5_image && oldData.s5_image) {
+ fs.unlink(`./static/${oldData.s5_image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ if (req.files.s6_image && oldData.s6_image) {
+ fs.unlink(`./static/${oldData.s6_image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+
+ }
+ return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.delete = [
+ (req, res) => {
+ Project.findByIdAndRemove(req.params.id, async (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ if (oldData.cover) {
+ fs.unlink(`./static/${oldData.cover}`, err => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`./static/${oldData.thumb}`, err => {
+ if (err) console.log(err)
+ })
+ }
+
+ if (oldData.s2_image) {
+ fs.unlink(`./static/${oldData.s2_image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ if (oldData.s4_image) {
+ fs.unlink(`./static/${oldData.s4_image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ if (oldData.s5_image) {
+ fs.unlink(`./static/${oldData.s5_image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ if (oldData.s6_image) {
+ fs.unlink(`./static/${oldData.s6_image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ return res.json({message: _sr['fa'].response.success_remove})
+ })
+ }
+]
+
+////////////////////////////
+
+module.exports.addImageToProjectGallery = [
+ async (req, res) => {
+ if (!req.files || !req.files.image) return res.status(422).json({validation: {image: {msg: _sr['fa'].required.image}}})
+ try {
+ const project = await Project.findById(req.params.project_id)
+ if (!project) return res404(res, 'project not found')
+
+
+ const image = req.files.image
+ const imageName = 'project_images_' + Date.now() + '.jpg'
+ const thumbName = 'thumb_' + imageName
+
+ if (!_sr.supportedImageFormats.includes(image.mimetype.split('/')[1])) return res.status(422).json({validation: {image: {msg: _sr['fa'].format.image}}})
+
+ const target = new sharp(image.data)
+ target
+ .resize(s4ImageWidth, s4ImageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: s4ImageQuality})
+ .toFile(`./static/uploads/images/projects/${thumbName}`)
+
+ image.mv(`./static/uploads/images/projects/${imageName}`, err => {
+ if (err) console.log(err)
+ })
+
+ project.images.push({image: imageName, thumb: thumbName})
+ project.save(err => {
+ if (err) return res500(res, err)
+ else return res.json({message: _sr['fa'].response.success_save})
+ })
+
+ } catch (e) {
+ return res404(res, e)
+ }
+
+ }
+]
+
+module.exports.removeImageFromProject = [
+ (req, res) => {
+ Project.findOne({'images._id': req.params.image_id}, (err, project) => {
+ if (err || !project) return res404(res, err)
+ const image = project.images.id(req.params.image_id)
+ image.remove(err => {
+ if (err) console.log(err)
+ fs.unlink(`../static/${image.image}`, err => {
+ if (err) console.log(err)
+ })
+ fs.unlink(`../static/${image.thumb}`, err => {
+ if (err) console.log(err)
+ })
+ })
+ project.save(err => {
+ if (err) console.log(err)
+ else return res.json({message: _sr['fa'].response.success_save})
+ })
+ })
+ }
+]
diff --git a/server/controllers/siteSettingController.js b/server/controllers/siteSettingController.js
new file mode 100644
index 0000000..1ea5c69
--- /dev/null
+++ b/server/controllers/siteSettingController.js
@@ -0,0 +1,193 @@
+const SiteSetting = require('../models/SiteSetting')
+const BlogPost = require('../models/BlogPost')
+const GalleryCategory = require('../models/GalleryCategory')
+const Project = require('../models/Project')
+const mongoose = require('mongoose')
+const sharp = require('sharp')
+const fs = require('fs')
+const {body, param, validationResult} = require('express-validator')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const {_sr} = require('../plugins/serverResponses')
+
+// variables
+const imageWidth = 1920
+const imageHeight = 600
+const imageQuality = 100
+
+module.exports.update = [
+ async (req, res) => {
+ try {
+ const setting = await SiteSetting.findOne()
+ if (setting) {
+
+ } else {
+
+ }
+ } catch (e) {
+ return res500(res, _sr['fa'].response.problem)
+ }
+ }
+]
+
+module.exports.getAllByAdmin = [
+ async (req, res) => {
+ try {
+ const images = await SiteSetting.findOne()
+ if (images) {
+ return res.json(images)
+ } else {
+ const create = await SiteSetting.create({})
+ return res.json(create)
+ }
+ } catch (e) {
+ return res500(res, _sr['fa'].response.problem)
+ }
+ }
+]
+
+module.exports.uploadCover = [
+ [
+ param('id')
+ .notEmpty().withMessage('لطفا نوع عکس را مشخص کنید')
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ try {
+ const picType = req?.params?.id
+ const image = req?.files?.file
+
+ let validation = {validation: {}}
+
+ if (!image) {
+ validation.validation[picType] = {msg: _sr['fa'].required.image}
+ return res.status(422).json(validation)
+ }
+
+ if (image.mimetype.split('/')[1] !== 'jpeg' && image.mimetype.split('/')[1] !== 'jpg') {
+ validation.validation[picType] = {msg: _sr['fa'].format.image}
+ res.status(422).json(validation)
+ }
+
+ const setting = await SiteSetting.findOne()
+ if (!setting) return res500(res, _sr['fa'].response.problem)
+ if (!setting[picType]) {
+ validation[picType] = {msg: 'نوع عکس وارد شده صحیح نمی باشد'}
+ return res.status(422).json(validation)
+ }
+
+
+ const imageName = `setting_${picType}_${Date.now()}.jpeg`
+
+
+ if (image && !setting[picType].includes('undefined')) {
+ fs.unlink(`../static/${setting[picType]}`, (err) => {
+ if (err) console.log(err)
+ })
+ }
+
+ const target = await sharp(image.data)
+ await target
+ .resize(imageWidth, imageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpeg')
+ .jpeg({quality: imageQuality})
+ .toFile(`./static/uploads/images/setting/${imageName}`)
+
+ setting[picType] = imageName
+
+ await setting.save();
+
+ return res.json({message: _sr['fa'].response.success_save})
+ } catch (e) {
+ console.log(e.message)
+ return res500(res, _sr['fa'].response.problem)
+ }
+ }
+]
+
+module.exports.getAllByUser = [
+ async (req, res) => {
+ try {
+ const images = await SiteSetting.findOne()
+
+ if (images) {
+ return res.json(images)
+ } else {
+ return res.json({
+ aboutUS: null,
+ activity: null,
+ projects: null,
+ gallery: null,
+ catalog: null,
+ blogs: null,
+ })
+ }
+
+ } catch (e) {
+ return res500(res, _sr['fa'].response.problem)
+ }
+ }
+]
+
+module.exports.search = [
+ async (req, res) => {
+ const {terms} = req.query;
+
+ try {
+ const requests = [
+ BlogPost.find({
+ published: true,
+ $or: [
+ {'locale.fa.title': {$regex: terms, $options: 'i'}},
+ {'locale.fa.description': {$regex: terms, $options: 'i'}},
+ {'locale.fa.short_description': {$regex: terms, $options: 'i'}},
+ {'locale.en.title': {$regex: terms, $options: 'i'}},
+ {'locale.en.description': {$regex: terms, $options: 'i'}},
+ {'locale.en.short_description': {$regex: terms, $options: 'i'}},
+ ]
+ }),
+ GalleryCategory.find({
+ $or: [
+ {'locale.fa.title': {$regex: terms, $options: 'i'}},
+ {'locale.en.title': {$regex: terms, $options: 'i'}},
+ ]
+ }),
+ Project.find({
+ $or: [
+ {'locale.fa.title': {$regex: terms, $options: 'i'}},
+ {'locale.fa.short_description': {$regex: terms, $options: 'i'}},
+ {'locale.fa.description': {$regex: terms, $options: 'i'}},
+ {'locale.fa.s3_title': {$regex: terms, $options: 'i'}},
+ {'locale.fa.s3_description': {$regex: terms, $options: 'i'}},
+ {'locale.fa.s5_title': {$regex: terms, $options: 'i'}},
+ {'locale.fa.s5_description': {$regex: terms, $options: 'i'}},
+ {'locale.fa.s6_title': {$regex: terms, $options: 'i'}},
+ {'locale.fa.s6_description': {$regex: terms, $options: 'i'}},
+ {'locale.en.title': {$regex: terms, $options: 'i'}},
+ {'locale.en.short_description': {$regex: terms, $options: 'i'}},
+ {'locale.en.description': {$regex: terms, $options: 'i'}},
+ {'locale.en.s3_title': {$regex: terms, $options: 'i'}},
+ {'locale.en.s3_description': {$regex: terms, $options: 'i'}},
+ {'locale.en.s5_title': {$regex: terms, $options: 'i'}},
+ {'locale.en.s5_description': {$regex: terms, $options: 'i'}},
+ {'locale.en.s6_title': {$regex: terms, $options: 'i'}},
+ {'locale.en.s6_description': {$regex: terms, $options: 'i'}},
+ ]
+ })
+ ]
+
+ const getData = await Promise.all(requests);
+
+ let [blogs, categoryGallery, projects] = getData;
+
+ return res.json({
+ blogs,
+ categoryGallery,
+ projects
+ });
+
+ } catch (e) {
+ return res500(res, _sr['fa'].response.problem);
+ }
+ }
+]
diff --git a/server/controllers/sliderController.js b/server/controllers/sliderController.js
new file mode 100644
index 0000000..49f9497
--- /dev/null
+++ b/server/controllers/sliderController.js
@@ -0,0 +1,281 @@
+const Slide = require('../models/Slide')
+const {body, validationResult} = require('express-validator')
+const {_sr} = require('../plugins/serverResponses')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const sharp = require('sharp')
+const mongoose = require('mongoose')
+const fs = require('fs')
+
+// variables
+const coverWidth = 1920
+const coverHeight = 1080
+const coverQuality = 100
+
+module.exports.create = [
+ async (req, res) => {
+ try {
+ const isImage = req.body.isImage === 'true'
+ if (isImage && (!req.files || !req.files.image)) return res.status(422).json({validation: {image: {msg: _sr['fa'].required.image}}})
+ if (!isImage && (!req.files || !req.files.video)) return res.status(422).json({validation: {video: {msg: _sr['fa'].required.video}}})
+ if (isImage && !_sr.supportedImageFormats.includes(req.files.image.mimetype.split('/')[1])) return res.status(422).json({validation: {image: {msg: _sr['fa'].format.image}}})
+ if (!isImage && !_sr.supportedVideoFormats.includes(req.files.video.mimetype.split('/')[1])) return res.status(422).json({validation: {video: {msg: _sr['fa'].format.video}}})
+ const data = {isImage}
+
+ if (isImage) {
+ const image = req.files.image
+ const imageName = 'slider_' + Date.now() + '.jpg'
+ data.image = imageName
+ const target = await sharp(image.data)
+ await target
+ .resize(coverWidth, coverHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: coverQuality})
+ .toFile(`./static/uploads/images/slider/${imageName}`)
+ } else {
+ const video = req.files.video
+ const videoName = 'slider_' + Date.now() + '.' + video.mimetype.split('/')[1]
+ data.video = videoName
+ video.mv(`./static/uploads/images/slider/${videoName}`)
+ }
+
+ const slide = new Slide(data)
+ slide.save(err => {
+ if (err) return res500(res, err)
+ else return res.json({message: _sr['fa'].response.success_save})
+ })
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ Slide.find({}).exec((err, projects) => {
+ if (err) return res500(res, err)
+ else return res.json(projects)
+ })
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ Slide.findById(req.params.id, (err, slide) => {
+ if (err || !slide) return res404(res, err)
+ else return res.json(slide)
+ })
+ }
+]
+
+// module.exports.update = [
+// (req, res) => {
+// const {
+// fa_title,
+// en_title,
+// fa_short_description,
+// en_short_description,
+// fa_description,
+// en_description,
+// //
+// fa_client,
+// en_client,
+// //
+// fa_skills,
+// en_skills,
+// //
+// fa_website,
+// en_website,
+// //
+// fa_s3_title,
+// en_s3_title,
+// fa_s3_description,
+// en_s3_description,
+// //
+// fa_s5_title,
+// en_s5_title,
+// fa_s5_description,
+// en_s5_description,
+// //
+// fa_s6_title,
+// en_s6_title,
+// fa_s6_description,
+// en_s6_description,
+// category,
+// project_date,
+// has_details
+// } = req.body
+//
+// const data = {
+// locale: {
+// fa: {
+// title: fa_title,
+// short_description: fa_short_description.slice(0, shortDescriptionMaxLength) + ' ... ',
+// description: fa_description,
+// //
+// client: fa_client,
+// skills: fa_skills,
+// website: fa_website,
+// //
+// s3_title: fa_s3_title,
+// s3_description: fa_s3_description,
+// //
+// s5_title: fa_s5_title,
+// s5_description: fa_s5_description,
+// //
+// s6_title: fa_s6_title,
+// s6_description: fa_s6_description
+// },
+// en: {
+// title: en_title,
+// short_description: en_short_description.slice(0, shortDescriptionMaxLength) + ' ... ',
+// description: en_description,
+// //
+// client: en_client,
+// skills: en_skills,
+// website: en_website,
+// //
+// s3_title: en_s3_title,
+// s3_description: en_s3_description,
+// //
+// s5_title: en_s5_title,
+// s5_description: en_s5_description,
+// //
+// s6_title: en_s6_title,
+// s6_description: en_s6_description
+// }
+// },
+// category,
+// project_date,
+// has_details
+// }
+//
+// if (req.files) {
+// if (req.files.cover) {
+// const cover = req.files.cover
+// const coverName = 'project_' + Date.now() + '.jpg'
+// if (!_sr.supportedImageFormats.includes(cover.mimetype.split('/')[1])) return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}})
+// data.cover = coverName
+// data.thumb = 'thumb_' + coverName
+//
+// const target = new sharp(cover.data)
+// target
+// .resize(coverWidth, coverHeight, {fit: 'cover'})
+// .toFormat('jpg')
+// .jpeg({quality: coverQuality})
+// .toFile(`./static/uploads/images/projects/${coverName}`)
+//
+// target
+// .resize(thumbWidth, thumbHeight, {fit: 'cover'})
+// .toFormat('jpg')
+// .jpeg({quality: thumbQuality})
+// .toFile(`./static/uploads/images/projects/thumb_${coverName}`)
+// }
+//
+// if (req.files.s2_image) {
+// const s2_image = req.files.s2_image
+// const s2_imageName = 's2_image_' + Date.now() + '.jpg'
+// if (!_sr.supportedImageFormats.includes(s2_image.mimetype.split('/')[1])) return res.status(422).json({validation: {s2_image: {msg: _sr['fa'].format.image}}})
+// data.s2_image = s2_imageName
+//
+// const target = new sharp(s2_image.data)
+// target
+// .resize(s2ImageWidth, s2ImageHeight, {fit: 'cover'})
+// .toFormat('jpg')
+// .jpeg({quality: s2ImageQuality})
+// .toFile(`./static/uploads/images/projects/${s2_imageName}`)
+// }
+//
+// if (req.files.s4_image) {
+// const s4_image = req.files.s4_image
+// const s4_imageName = 's4_image_' + Date.now() + '.jpg'
+// if (!_sr.supportedImageFormats.includes(s4_image.mimetype.split('/')[1])) return res.status(422).json({validation: {s4_image: {msg: _sr['fa'].format.image}}})
+// data.s4_image = s4_imageName
+//
+// const target = new sharp(s4_image.data)
+// target
+// .resize(s4ImageWidth, s4ImageHeight, {fit: 'cover'})
+// .toFormat('jpg')
+// .jpeg({quality: s4ImageQuality})
+// .toFile(`./static/uploads/images/projects/${s4_imageName}`)
+// }
+//
+// if (req.files.s5_image) {
+// const s5_image = req.files.s5_image
+// const s5_imageName = 's5_image_' + Date.now() + '.jpg'
+// if (!_sr.supportedImageFormats.includes(s5_image.mimetype.split('/')[1])) return res.status(422).json({validation: {s5_image: {msg: _sr['fa'].format.image}}})
+// data.s5_image = s5_imageName
+//
+// const target = new sharp(s5_image.data)
+// target
+// .resize(s5ImageWidth, s5ImageHeight, {fit: 'cover'})
+// .toFormat('jpg')
+// .jpeg({quality: s5ImageQuality})
+// .toFile(`./static/uploads/images/projects/${s5_imageName}`)
+// }
+//
+// if (req.files.s6_image) {
+// const s6_image = req.files.s6_image
+// const s6_imageName = 's6_image_' + Date.now() + '.jpg'
+// if (!_sr.supportedImageFormats.includes(s6_image.mimetype.split('/')[1])) return res.status(422).json({validation: {s6_image: {msg: _sr['fa'].format.image}}})
+// data.s6_image = s6_imageName
+//
+// const target = new sharp(s6_image.data)
+// target
+// .resize(s6ImageWidth, s6ImageHeight, {fit: 'cover'})
+// .toFormat('jpg')
+// .jpeg({quality: s6ImageQuality})
+// .toFile(`./static/uploads/images/projects/${s6_imageName}`)
+// }
+// }
+//
+// Project.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+// if (err || !oldData) return res404(res, err)
+// if (req.files) {
+// if (req.files.cover && oldData.cover) {
+// fs.unlink(`./static/${oldData.cover}`, err => {
+// if (err) console.log(err)
+// })
+// fs.unlink(`./static/${oldData.thumb}`, err => {
+// if (err) console.log(err)
+// })
+// }
+//
+// if (req.files.s2_image && oldData.s2_image) {
+// fs.unlink(`./static/${oldData.s2_image}`, err => {
+// if (err) console.log(err)
+// })
+// }
+// if (req.files.s4_image && oldData.s4_image) {
+// fs.unlink(`./static/${oldData.s4_image}`, err => {
+// if (err) console.log(err)
+// })
+// }
+// if (req.files.s5_image && oldData.s5_image) {
+// fs.unlink(`./static/${oldData.s5_image}`, err => {
+// if (err) console.log(err)
+// })
+// }
+// if (req.files.s6_image && oldData.s6_image) {
+// fs.unlink(`./static/${oldData.s6_image}`, err => {
+// if (err) console.log(err)
+// })
+// }
+//
+// }
+// return res.json({message: _sr['fa'].response.success_save})
+// })
+// }
+// ]
+
+module.exports.delete = [
+ (req, res) => {
+ Slide.findByIdAndRemove(req.params.id, async (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ fs.unlink(`./static/${oldData.isImage ? oldData.image : oldData.video}`, err => {
+ if (err) console.log(err)
+ })
+ return res.json({message: _sr['fa'].response.success_remove})
+ })
+ }
+]
diff --git a/server/controllers/teamController.js b/server/controllers/teamController.js
new file mode 100644
index 0000000..7017d78
--- /dev/null
+++ b/server/controllers/teamController.js
@@ -0,0 +1,184 @@
+const Team = require('../models/Team')
+const {body, validationResult} = require('express-validator')
+const {_sr} = require('../plugins/serverResponses')
+const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
+const sharp = require('sharp')
+const fs = require('fs')
+
+// variables
+const imageWidth = 400
+const imageHeight = 500
+const imageQuality = 100
+
+
+module.exports.create = [
+ [
+ body('index')
+ .notEmpty().withMessage('شماره ترتیب را انتخاب کنید'),
+
+ body('fa_first_name')
+ .notEmpty().withMessage(_sr['fa'].required.first_name),
+
+ body('en_first_name')
+ .notEmpty().withMessage(_sr['fa'].required.first_name),
+
+ body('fa_last_name')
+ .notEmpty().withMessage(_sr['fa'].required.last_name),
+
+ body('en_last_name')
+ .notEmpty().withMessage(_sr['fa'].required.last_name),
+
+ body('fa_position')
+ .notEmpty().withMessage('سمت را بنویسید'),
+
+ body('en_position')
+ .notEmpty().withMessage('سمت را بنویسید')
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ if (!req.files || !req.files.image) return res.status(422).json({validation: {image: {msg: _sr['fa'].required.image}}})
+
+ const {fa_first_name, en_first_name, fa_last_name, en_last_name, fa_position, en_position, index} = req.body
+ const data = {
+ locale: {
+ fa: {
+ first_name: fa_first_name,
+ last_name: fa_last_name,
+ position: fa_position
+ },
+ en: {
+ first_name: en_first_name,
+ last_name: en_last_name,
+ position: en_position
+ }
+ },
+ index
+ }
+
+ const image = req.files.image
+ const imageName = 'team_' + en_first_name + '_' + Date.now() + '.jpg'
+ data.image = imageName
+
+ try {
+ const target = await sharp(image.data)
+ await target
+ .resize(imageWidth, imageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: imageQuality})
+ .toFile(`./static/uploads/images/team/${imageName}`)
+
+ } catch (e) {
+ return res500(res, e)
+ }
+
+ const teamMate = new Team(data)
+ teamMate.save(err => {
+ if (err) return res500(res, err)
+ else return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.getAll = [
+ (req, res) => {
+ Team.find({}).sort({index: 1}).exec((err, data) => {
+ if (err) return res500(res, err)
+ else return res.json(data)
+ })
+ }
+]
+
+module.exports.getOne = [
+ (req, res) => {
+ Team.findById(req.params.id, (err, data) => {
+ if (err || !data) return res404(res, err)
+ else return res.json(data)
+ })
+ }
+]
+
+module.exports.update = [
+ [
+ body('index')
+ .notEmpty().withMessage('شماره ترتیب را انتخاب کنید'),
+
+ body('fa_first_name')
+ .notEmpty().withMessage(_sr['fa'].required.first_name),
+
+ body('en_first_name')
+ .notEmpty().withMessage(_sr['fa'].required.first_name),
+
+ body('en_last_name')
+ .notEmpty().withMessage(_sr['fa'].required.last_name),
+
+ body('en_last_name')
+ .notEmpty().withMessage(_sr['fa'].required.last_name),
+
+ body('fa_position')
+ .notEmpty().withMessage('سمت را بنویسید'),
+
+ body('en_position')
+ .notEmpty().withMessage('سمت را بنویسید')
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ const {fa_first_name, en_first_name, fa_last_name, en_last_name, fa_position, en_position, index} = req.body
+ const data = {
+ locale: {
+ fa: {
+ first_name: fa_first_name,
+ last_name: fa_last_name,
+ position: fa_position
+ },
+ en: {
+ first_name: en_first_name,
+ last_name: en_last_name,
+ position: en_position
+ }
+ },
+ index
+ }
+
+ if (req.files && req.files.image) {
+ const image = req.files.image
+ const imageName = 'team_' + en_first_name + '_' + Date.now() + '.jpg'
+ data.image = imageName
+
+ try {
+ const target = await sharp(image.data)
+ await target
+ .resize(imageWidth, imageHeight, {fit: 'cover'})
+ .withMetadata()
+ .toFormat('jpg')
+ .jpeg({quality: imageQuality})
+ .toFile(`./static/uploads/images/team/${imageName}`)
+
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+
+ Team.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
+ if (err || !oldData) return res404(res, err)
+ if (req.files && req.files.image) {
+ fs.unlink(`./static/${oldData.image}`, err => {
+ if (err) console.log(err)
+ })
+ }
+ return res.json({message: _sr['fa'].response.success_save})
+ })
+ }
+]
+
+module.exports.delete = [
+ (req, res) => {
+ Team.findByIdAndRemove(req.params.id, (err, data) => {
+ if (err || !data) return res404(res, err)
+ fs.unlink(`./static/${data.image}`, err => {
+ if (err) console.log(err)
+ })
+ return res.json({message: _sr['fa'].response.success_remove})
+ })
+ }
+]
diff --git a/server/controllers/userController.js b/server/controllers/userController.js
new file mode 100644
index 0000000..9c4d39d
--- /dev/null
+++ b/server/controllers/userController.js
@@ -0,0 +1,141 @@
+const User = require('../models/User')
+const {body, validationResult} = require('express-validator')
+const bcrypt = require('bcryptjs')
+const jwt = require('jsonwebtoken')
+const sharp = require('sharp')
+const {secretKey, getID} = require('./../authentication')
+const {_sr} = require('../plugins/serverResponses')
+const {res404, res500, hasWhiteSpaces, isLatinCharactersWithSymbol, generateRandomDigits, removeWhiteSpaces, checkValidations} = require('../plugins/controllersHelperFunctions')
+const fs = require('fs')
+const moment = require('moment-jalaali')
+
+module.exports.create_admin = [
+ [
+ body('username')
+ .notEmpty().withMessage(_sr['fa'].required.username)
+ .bail()
+ .custom((value, {req}) => {
+ if (hasWhiteSpaces(value)) return Promise.reject(_sr['fa'].response.whiteSpace)
+ return User.findOne({username: value}).then(user => {
+ if (user) return Promise.reject(_sr['fa'].duplicated.username)
+ else return true
+ })
+ }),
+
+ body('password')
+ .custom((value, {req}) => {
+ if (hasWhiteSpaces(value)) return Promise.reject(_sr['fa'].response.whiteSpace)
+ if (removeWhiteSpaces(value).length < 4) return Promise.reject(_sr['fa'].min_char.min4)
+ if (value !== req.body.password_confirmation) return Promise.reject(_sr['fa'].response.passwords_not_match)
+ else return true
+ })
+ ],
+ checkValidations(validationResult),
+ async (req, res) => {
+ const {username, password} = req.body
+
+ const data = {username, scope: ['admin']}
+
+ try {
+ const salt = await bcrypt.genSalt(10)
+ const hash = await bcrypt.hash(password, salt)
+ data.password = hash
+
+ const admin = new User(data)
+ await admin.save()
+ return res.json({message: _sr['fa'].response.success_save})
+ } catch (e) {
+ return res500(res, e)
+ }
+ }
+]
+
+/////////////////////////////////////////////////////////////////////// login
+module.exports.login = [
+ [
+ body('username')
+ .isLength({min: 4}).withMessage(_sr['fa'].min_char.min4)
+ .bail()
+ .if((value, {req}) => {
+ return req.body.password && req.body.password.length >= 4
+ })
+ .custom((value, {req}) => {
+ return User.findOne({$or: [{email: value.toLowerCase()}, {username: value}]})
+ .then(user => {
+ if (!user) return Promise.reject(_sr['fa'].not_found.password)
+ else return true
+ })
+ }),
+
+ body('password')
+ .notEmpty().withMessage(_sr['fa'].required.password)
+ .bail()
+ .isLength({min: 4}).withMessage(_sr['fa'].min_char.min4),
+
+ body('remember_me')
+ .exists().withMessage(_sr['fa'].required.remember_me)
+ .bail()
+ .isBoolean().withMessage(_sr['fa'].format.boolean)
+ ],
+ checkValidations(validationResult),
+ (req, res) => {
+ User.findOne({$or: [{email: req.body.username.toLowerCase()}, {username: req.body.username}]}, (err, user) => {
+ if (err || !user) return res404(res, err)
+ bcrypt.compare(req.body.password, user.password, (err, isMatch) => {
+ if (err || !isMatch) return res.status(422).json({validation: {username: {msg: _sr['fa'].not_found.password}}})
+ if (user.token) {
+ jwt.verify(user.token.replace(/^Bearer\s/, ''), secretKey, (err, decoded) => {
+ if (err) {
+ let token = jwt.sign({_id: user._id}, secretKey, {expiresIn: req.body.remember_me ? '7d' : '1h'})
+ user.token = token
+ user.save(err => {
+ if (err) console.log(err)
+ return res.json({token: token})
+ })
+ } else return res.json({token: user.token})
+ })
+ } else {
+ let token = jwt.sign({_id: user._id}, secretKey, {expiresIn: req.body.remember_me ? '7d' : '1h'})
+ user.token = token
+ user.save(err => {
+ if (err) console.log(err)
+ return res.json({token: token})
+ })
+ }
+ })
+ })
+ }
+]
+
+/////////////////////////////////////////////////////////////////////// logout
+module.exports.logout = [
+ (req, res) => {
+ const token = req.headers.authorization
+ if (token) {
+ User.findOneAndUpdate({token: token}, {token: null}, (err, oldData) => {
+ if (err || !oldData) res.status(401).json({message: 'Your not logged in'})
+ else return res.json({message: 'You are logged out.'})
+ })
+ } else {
+ return res.status(401).json({message: 'Your not logged in'})
+ }
+ }
+]
+
+/////////////////////////////////////////////////////////////////////// get user
+module.exports.getUser = [
+ (req, res) => {
+ const token = req.headers.authorization
+ if (token) {
+ jwt.verify(token, secretKey, (err, decoded) => {
+ if (err) return res.status(401).json({message: 'unauthenticated'})
+ User.findById(decoded._id, (err, user) => {
+ if (err || !user) return res404(res, err)
+ else return res.json({user: user})
+ })
+ })
+ } else {
+ return res.status(401).json({message: 'unauthenticated'})
+ }
+ }
+]
diff --git a/server/database.js b/server/database.js
new file mode 100644
index 0000000..3ba72c7
--- /dev/null
+++ b/server/database.js
@@ -0,0 +1,32 @@
+const mongoose = require('mongoose')
+
+mongoose.plugin(schema => {
+ schema.set('toObject', {
+ getters: true
+ })
+ schema.set('toJSON', {
+ getters: true
+ })
+ schema.set('timestamps', {
+ createdAt: 'created_at',
+ updatedAt: 'updated_at'
+ })
+})
+
+// mongodb database connection string. change it as per your needs. here "mydb" is the name of the database. You don't need to create DB from mongodb terminal. mongoose create the database automatically.
+// mongoose.connect('mongodb://negareh1_admin:admin1234@www.negareh-demo.ir:27017/negareh1_oris?serverSelectionTimeoutMS=5000&connectTimeoutMS=10000&authSource=negareh1_oris', {
+mongoose.connect('mongodb://root:UuPYfG7G6pFqWLW0gOya9oYt@grande-casse.liara.cloud:32644/orisoxin?authSource=admin', {
+// mongoose.connect('mongodb://localhost:27017/OrisOxin', {
+ useNewUrlParser: true,
+ useUnifiedTopology: true,
+ useFindAndModify: false,
+ useCreateIndex: true
+})
+
+const database = mongoose.connection
+database.on('error', console.error.bind(console, 'connection error:'))
+database.once('open', function callback() {
+ console.log("MongoDB Connected...")
+})
+
+module.exports = database
diff --git a/server/index.js b/server/index.js
new file mode 100644
index 0000000..d271758
--- /dev/null
+++ b/server/index.js
@@ -0,0 +1,33 @@
+const express = require('express')
+const database = require('./database')
+const fileUpload = require('express-fileupload')
+const {isUser, isAdmin} = require('./authentication')
+const bodyParser = require('body-parser')
+const cronJobs = require('./plugins/cronJobs')
+const {createAdmins} = require('./plugins/privateAdmin')
+
+// Create express instnace
+const app = express()
+cronJobs()
+createAdmins()
+// Init body-parser options (inbuilt with express)
+app.use(express.json())
+app.use(express.urlencoded({extended: true}))
+app.use(fileUpload())
+
+// Require & Import API routes
+const Public = require('./routes/public')
+const admin = require('./routes/admin')
+const auth = require('./routes/auth')
+
+// Use API Routes
+app.use('/public', Public)
+app.use('/auth', auth)
+app.use('/admin', isAdmin, admin)
+
+
+// Export the server middleware
+module.exports = {
+ path: '/api',
+ handler: app
+}
diff --git a/server/models/BlogCategory.js b/server/models/BlogCategory.js
new file mode 100644
index 0000000..ef2e9d2
--- /dev/null
+++ b/server/models/BlogCategory.js
@@ -0,0 +1,16 @@
+const mongoose = require('mongoose')
+
+const BlogCategorySchema = mongoose.Schema({
+ locale: {
+ fa: {
+ title: String,
+ description: String
+ },
+ en: {
+ title: String,
+ description: String
+ }
+ }
+})
+
+module.exports = mongoose.model('BlogCategory', BlogCategorySchema)
diff --git a/server/models/BlogPost.js b/server/models/BlogPost.js
new file mode 100644
index 0000000..264c967
--- /dev/null
+++ b/server/models/BlogPost.js
@@ -0,0 +1,48 @@
+const mongoose = require('mongoose')
+const paginate = require('mongoose-paginate-v2')
+
+function cover(img) {
+ if (img) return '/uploads/images/blog/' + img
+}
+
+function thumb(img) {
+ return '/uploads/images/blog/thumb/' + img
+}
+
+function video(vi) {
+ if (vi) return '/uploads/videos/blog/' + vi
+}
+
+
+const BlogPostSchema = mongoose.Schema({
+ locale: {
+ fa: {
+ title: String,
+ description: String,
+ short_description: String,
+ last_section_image_title: String,
+ last_section_image_description: String,
+ last_section_title: String,
+ last_section_description: String
+ },
+ en: {
+ title: String,
+ description: String,
+ short_description: String,
+ last_section_image_title: String,
+ last_section_image_description: String,
+ last_section_title: String,
+ last_section_description: String
+ }
+ },
+ cover: {type: String, get: cover},
+ thumb: {type: String, get: thumb},
+ video : {type: String, get: video},
+ last_section_image: {type: String, get: cover},
+ category: {type: mongoose.ObjectId, ref: 'BlogCategory'},
+ published: {type: Boolean, default: true}
+})
+
+BlogPostSchema.plugin(paginate)
+
+module.exports = mongoose.model('BlogPost', BlogPostSchema)
diff --git a/server/models/Catalog.js b/server/models/Catalog.js
new file mode 100644
index 0000000..8e38bad
--- /dev/null
+++ b/server/models/Catalog.js
@@ -0,0 +1,27 @@
+const mongoose = require('mongoose')
+
+function file(file) {
+ return '/uploads/catalogs/file/' + file
+}
+
+function cover(img) {
+ return '/uploads/catalogs/cover/' + img
+}
+
+const CatalogSchema = mongoose.Schema({
+ locale: {
+ fa: {
+ title: String
+ },
+ en: {
+ title: String
+ }
+ },
+ file: {type: String, get: file},
+ cover: {type: String, get: cover},
+ showInFa: {type: Boolean, default: false},
+ showInEn: {type: Boolean, default: false}
+})
+
+
+module.exports = mongoose.model('Catalog', CatalogSchema)
diff --git a/server/models/ContactUs.js b/server/models/ContactUs.js
new file mode 100644
index 0000000..c91e7e2
--- /dev/null
+++ b/server/models/ContactUs.js
@@ -0,0 +1,17 @@
+const mongoose = require('mongoose')
+
+const contactUsSchema = mongoose.Schema({
+ name: String,
+ email: String,
+ subject: String,
+ message: String,
+ locale: {
+ type: String,
+ enum: ['fa', 'en'],
+ default: 'en'
+ },
+ read: {type: Boolean, default: false}
+})
+
+
+module.exports = mongoose.model('ContactUs', contactUsSchema)
diff --git a/server/models/CustomerComment.js b/server/models/CustomerComment.js
new file mode 100644
index 0000000..fbcc094
--- /dev/null
+++ b/server/models/CustomerComment.js
@@ -0,0 +1,23 @@
+const mongoose = require('mongoose')
+
+function image(img) {
+ if (img) return '/uploads/images/customer/' + img
+}
+
+const CustomerCommentSchema = mongoose.Schema({
+ locale: {
+ fa: {
+ name: String,
+ position: String,
+ comment: String
+ },
+ en: {
+ name: String,
+ position: String,
+ comment: String
+ }
+ },
+ image: {type: String, get: image}
+})
+
+module.exports = mongoose.model('CustomerComment', CustomerCommentSchema)
diff --git a/server/models/Gallery.js b/server/models/Gallery.js
new file mode 100644
index 0000000..46bc7b9
--- /dev/null
+++ b/server/models/Gallery.js
@@ -0,0 +1,23 @@
+const mongoose = require('mongoose')
+
+function image(img) {
+ return '/uploads/images/gallery/' + img
+}
+
+const GallerySchema = mongoose.Schema({
+ image: {type: String, get: image},
+ thumb: {type: String, get: image},
+ category: {type: mongoose.ObjectId, ref: 'GalleryCategory'},
+ noCategory: {type: Boolean, default: false},
+ locale: {
+ fa: {
+ caption: String
+ },
+ en: {
+ caption: String
+ }
+ }
+})
+
+
+module.exports = mongoose.model('Gallery', GallerySchema)
diff --git a/server/models/GalleryCategory.js b/server/models/GalleryCategory.js
new file mode 100644
index 0000000..d3cb299
--- /dev/null
+++ b/server/models/GalleryCategory.js
@@ -0,0 +1,25 @@
+const mongoose = require('mongoose')
+
+function image(img) {
+ return '/uploads/images/galleryCover/' + img
+}
+function image2(img) {
+ return '/uploads/images/galleryCover/thumb/' + img
+}
+const GalleryCategorySchema = mongoose.Schema({
+ cover: {type: String, get: image},
+ thumb: {type: String, get: image2},
+ locale: {
+ fa: {
+ title: String,
+ description: String
+ },
+ en: {
+ title: String,
+ description: String
+ }
+ },
+ index : {type : Number , default : 1}
+})
+
+module.exports = mongoose.model('GalleryCategory', GalleryCategorySchema)
diff --git a/server/models/Project.js b/server/models/Project.js
new file mode 100644
index 0000000..0cbc286
--- /dev/null
+++ b/server/models/Project.js
@@ -0,0 +1,65 @@
+const mongoose = require('mongoose')
+
+function image(img) {
+ if (img) return '/uploads/images/projects/' + img
+}
+
+const ProjectImagesSchema = mongoose.Schema({
+ image: {type: String, get: image},
+ thumb: {type: String, get: image}
+})
+
+const ProjectSchema = mongoose.Schema({
+ locale: {
+ fa: {
+ title: String,
+ short_description: String,
+ description: String,
+ //
+ client: String,
+ size: String,
+ area: String,
+ //
+ s3_title: String,
+ s3_description: String,
+ //
+ s5_title: String,
+ s5_description: String,
+ //
+ s6_title: String,
+ s6_description: String
+ },
+ en: {
+ title: String,
+ short_description: String,
+ description: String,
+ //
+ client: String,
+ size: String,
+ area: String,
+ //
+ s3_title: String,
+ s3_description: String,
+ //
+ s5_title: String,
+ s5_description: String,
+ //
+ s6_title: String,
+ s6_description: String
+ }
+ },
+ category: {type: mongoose.ObjectId, ref: 'ProjectCategory'},
+ tag: {type: mongoose.ObjectId},
+ cover: {type: String, get: image},
+ thumb: {type: String, get: image},
+ s2_image: {type: String, get: image},
+ s4_image: {type: String, get: image},
+ s5_image: {type: String, get: image},
+ s6_image: {type: String, get: image},
+ project_date: String,
+ images: [ProjectImagesSchema],
+ has_details: {type: Boolean, default: false},
+ importWithCode : {type: Boolean, default: false}
+})
+
+module.exports = mongoose.model('Project', ProjectSchema)
diff --git a/server/models/ProjectCategory.js b/server/models/ProjectCategory.js
new file mode 100644
index 0000000..73fde97
--- /dev/null
+++ b/server/models/ProjectCategory.js
@@ -0,0 +1,27 @@
+const mongoose = require('mongoose')
+
+const CategoryTagSchema = mongoose.Schema({
+ locale: {
+ fa: {
+ name: String
+ },
+ en: {
+ name: String
+ }
+ }
+})
+
+
+const ProjectCategorySchema = mongoose.Schema({
+ locale: {
+ fa: {
+ name: String
+ },
+ en: {
+ name: String
+ }
+ },
+ tags: [CategoryTagSchema]
+})
+
+module.exports = mongoose.model('ProjectCategory', ProjectCategorySchema)
diff --git a/server/models/SiteSetting.js b/server/models/SiteSetting.js
new file mode 100644
index 0000000..934c93c
--- /dev/null
+++ b/server/models/SiteSetting.js
@@ -0,0 +1,16 @@
+const mongoose = require('mongoose')
+
+function file(file) {
+ if (file) return '/uploads/images/setting/' + file
+}
+
+const SiteSettingSchema = mongoose.Schema({
+ aboutUS: {type: String, get: file, default: 'undefined'},
+ activity: {type: String, get: file, default: ''},
+ projects: {type: String, get: file, default: ''},
+ gallery: {type: String, get: file, default: ''},
+ catalog: {type: String, get: file, default: ''},
+ blogs: {type: String, get: file, default: ''},
+})
+
+module.exports = mongoose.model('SiteSetting', SiteSettingSchema)
diff --git a/server/models/Slide.js b/server/models/Slide.js
new file mode 100644
index 0000000..d0f315e
--- /dev/null
+++ b/server/models/Slide.js
@@ -0,0 +1,25 @@
+const mongoose = require('mongoose')
+
+function file(file) {
+ if (file) return '/uploads/images/slider/' + file
+}
+
+const SlideSchema = mongoose.Schema({
+ // locale: {
+ // fa: {
+ // name: String,
+ // position: String,
+ // comment: String
+ // },
+ // en: {
+ // name: String,
+ // position: String,
+ // comment: String
+ // }
+ // },
+ isImage: Boolean,
+ image: {type: String, get: file},
+ video: {type: String, get: file}
+})
+
+module.exports = mongoose.model('Slide', SlideSchema)
diff --git a/server/models/Team.js b/server/models/Team.js
new file mode 100644
index 0000000..09d1438
--- /dev/null
+++ b/server/models/Team.js
@@ -0,0 +1,24 @@
+const mongoose = require('mongoose')
+
+function image(img) {
+ return '/uploads/images/team/' + img
+}
+
+const TeamSchema = mongoose.Schema({
+ locale: {
+ fa: {
+ first_name: String,
+ last_name: String,
+ position: String
+ },
+ en: {
+ first_name: String,
+ last_name: String,
+ position: String
+ }
+ },
+ image: {type: String, get: image},
+ index: Number
+})
+
+module.exports = mongoose.model('Team', TeamSchema)
diff --git a/server/models/User.js b/server/models/User.js
new file mode 100644
index 0000000..bdc5e9c
--- /dev/null
+++ b/server/models/User.js
@@ -0,0 +1,11 @@
+const mongoose = require('mongoose')
+
+
+const UserSchema = mongoose.Schema({
+ username: String,
+ password: String,
+ scope: {type: Array, default: ['user']},
+ token: String,
+})
+
+module.exports = mongoose.model('User', UserSchema)
diff --git a/server/plugins/controllersHelperFunctions.js b/server/plugins/controllersHelperFunctions.js
new file mode 100644
index 0000000..9482339
--- /dev/null
+++ b/server/plugins/controllersHelperFunctions.js
@@ -0,0 +1,79 @@
+module.exports.res404 = (res, err) => {
+ return res.status(404).json({message: err})
+}
+
+module.exports.res500 = (res, err) => {
+ return res.status(500).json({message: err})
+}
+
+module.exports.checkValidations = validationResult => {
+ return (req, res, next) => {
+ const errors = validationResult(req)
+ if (!errors.isEmpty()) return res.status(422).json({validation: errors.mapped()})
+ else next()
+ }
+}
+
+module.exports.removeWhiteSpaces = str => {
+ return str.replace(/ /g, '')
+}
+
+module.exports.nameOptimizer = name => {
+ function regex(str) {
+ return new RegExp(str)
+ }
+
+ return name
+ .replace(regex('آقای'), '')
+ .replace(regex('آقا'), '')
+ .replace(regex('جنابه'), '')
+ .replace(regex('جناب'), '')
+ .replace(regex('سرکار خانوم'), '')
+ .replace(regex('سرکار خانم'), '')
+ .replace(regex('سرکارخانوم'), '')
+ .replace(regex('سرکارخانومه'), '')
+ .replace(regex('سرکارخانمه'), '')
+ .replace(regex('سرکارخانم'), '')
+ .replace(regex('سرکار'), '')
+ .replace(regex('خانوم'), '')
+ .replace(regex('خانم'), '')
+}
+
+module.exports.checkNationalCode = code => {
+ var L = code.length
+
+ if (L < 8 || parseInt(code, 10) == 0) return false
+ code = ('0000' + code).substr(L + 4 - 10)
+ if (parseInt(code.substr(3, 6), 10) == 0) return false
+ var c = parseInt(code.substr(9, 1), 10)
+ var s = 0
+ for (var i = 0; i < 9; i++) {
+ s += parseInt(code.substr(i, 1), 10) * (10 - i)
+ }
+ s = s % 11;
+ return (s < 2 && c == s) || (s >= 2 && c == (11 - s))
+}
+
+module.exports.isLatinCharactersWithoutSymbol = str => {
+ return str.match(/^[A-Za-z]+$/g)
+}
+
+module.exports.isLatinCharactersWithSymbol = str => {
+ return str.match(/^[a-zA-Z0-9()*_\-!#$%^&*,."\'\][]*$/g)
+}
+
+module.exports.hasWhiteSpaces = str => {
+ return str.includes(' ')
+}
+
+module.exports.generateRandomDigits = digitsLength => {
+ var add = 1, max = 12 - add // 12 is the min safe number Math.random() can generate without it starting to pad the end with zeros.
+ if (digitsLength > max) {
+ return generateRandomDigits(max) + generateRandomDigits(digitsLength - max)
+ }
+ max = Math.pow(10, digitsLength + add)
+ var min = max / 10 // Math.pow(10, n) basically
+ var number = Math.floor(Math.random() * (max - min + 1)) + min
+
+ return ('' + number).substring(add)
+}
diff --git a/server/plugins/cronJobs.js b/server/plugins/cronJobs.js
new file mode 100644
index 0000000..0e23113
--- /dev/null
+++ b/server/plugins/cronJobs.js
@@ -0,0 +1,51 @@
+const User = require('../models/User')
+const Project = require('../models/Project')
+const ProjectCategory = require('../models/ProjectCategory')
+
+const minute = 1000 * 60
+const hour = minute * 60
+const day = hour * 24
+
+module.exports = () => {
+ // check users for activation
+ // setInterval(() => {
+ // User.find({confirmed: false})
+ // .then(users => {
+ // if (users.length) {
+ // ///////////////////////
+ // users.forEach((item, index) => {
+ // // item time and timeout
+ // const itemTime = Date.parse(item.created_at)
+ // const timeout = itemTime + day
+ // ////////////////////////////
+ // if (Date.now() >= timeout) {
+ // item.remove()
+ // }
+ // if (index === users.length - 1) {
+ // // console.log('Unconfirmed users deleted.')
+ // }
+ // })
+ // }
+ // })
+ // .catch(err => {
+ // console.log(err)
+ // })
+ // }, hour)
+
+
+ // Project.find({}, async (err, data) => {
+ // if (err) console.log(err)
+ //
+ // let index = 0
+ // for await (const item of data) {
+ // console.log(index)
+ // if (item.category === 'ward') {
+ // // item.category = '61489de2c1646e4b68e42878'
+ // await item.save()
+ // }
+ // index++
+ // }
+ //
+ // })
+
+}
diff --git a/server/plugins/iranCities.js b/server/plugins/iranCities.js
new file mode 100644
index 0000000..7293ff1
--- /dev/null
+++ b/server/plugins/iranCities.js
@@ -0,0 +1,161 @@
+// province cities
+const eastazarbaijan1 = ['آذرشهر', 'اسکو', 'اهر', 'بستانآباد', 'بناب', 'تبریز', 'جلفا', 'چاراویماق', 'سراب', 'شبستر', 'مراغه']
+const westazarbaijan2 = ['ارومیه', 'اشنویه', 'بوکان', 'پیرانشهر', 'تکاب', 'چالدران', 'خوی', 'سردشت', 'سلماس', 'شاهیندژ', 'ماکو', 'مهاباد', 'میاندوآب', 'نقده']
+const ardabil3 = ['اردبیل', 'بیلهسوار', 'پارسآباد', 'خلخال', 'کوثر', 'گِرمی', 'مِشگینشهر', 'نَمین', 'نیر']
+const esfahan4 = ['آران و بیدگل', 'اردستان', 'اصفهان', 'برخوار و میمه', 'تیران و کرون', 'چادگان', 'خمینیشهر', 'خوانسار', 'سمیرم', 'شهرضا', 'سمیرم سفلی', 'فریدن', 'فریدونشهر', 'فلاورجان', 'کاشان', 'گلپایگان', 'لنجان', 'مبارکه', 'نائین', 'نجفآباد', 'نطنز']
+const ilam5 = ['آبدانان', 'ایلام', 'ایوان', 'درهشهر', 'دهلران', 'شیروان و چرداول', 'مهران']
+const booshehr6 = ['بوشهر', 'تنگستان', 'جم', 'دشتستان', 'دشتی', 'دیر', 'دیلم', 'کنگان', 'گناوه']
+const tehran7 = ['اسلامشهر', 'پاکدشت', 'تهران', 'دماوند', 'رباطکریم', 'ری', 'ساوجبلاغ', 'شمیرانات', 'شهریار', 'فیروزکوه', 'ورامین']
+const chaharmahalobakhtiari8 = ['اردل', 'بروجن', 'شهرکرد', 'فارسان', 'کوهرنگ', 'لردگان']
+const khorasanjonoobi9 = ['بیرجند', 'درمیان', 'سرایان', 'سربیشه', 'فردوس', 'قائنات', 'نهبندان']
+const khorasanrazavi10 = ['بردسکن', 'تایباد', 'تربت جام', 'تربت حیدریه', 'چناران', 'خلیلآباد', 'خواف', 'درگز', 'رشتخوار', 'سبزوار', 'سرخس', 'فریمان', 'قوچان', 'کاشمر', 'کلات', 'گناباد', 'مشهد', 'مه ولات', 'نیشابور']
+const khorasanshomali11 = ['اسفراین', 'بجنورد', 'جاجرم', 'شیروان', 'فاروج', 'مانه و سملقان']
+const khoozestan12 = ['آبادان', 'امیدیه', 'اندیمشک', 'اهواز', 'ایذه', 'باغملک', 'بندر ماهشهر', 'بهبهان', 'خرمشهر', 'دزفول', 'دشت آزادگان', 'رامشیر', 'رامهرمز', 'شادگان', 'شوش', 'شوشتر']
+const zanjan13 = ['ابهر', 'ایجرود', 'خدابنده', 'خرمدره', 'زنجان', 'طارم', 'ماهنشان']
+const semnan14 = ['دامغان', 'سمنان', 'شاهرود', 'گرمسار', 'مهدیشهر']
+const sistanobaloochestan15 = ['ایرانشهر', 'چابهار', 'خاش', 'دلگان', 'زابل', 'زاهدان', 'زهک', 'سراوان', 'سرباز', 'کنارک', 'نیکشهر']
+const fars16 = ['آباده', 'ارسنجان', 'استهبان', 'اقلید', 'بوانات', 'پاسارگاد', 'جهرم', 'خرمبید', 'خنج', 'داراب', 'زریندشت', 'سپیدان', 'شیراز', 'فراشبند', 'فسا', 'فیروزآباد', 'قیر و کارزین', 'کازرون', 'لارستان', 'لامِرد', 'مرودشت', 'ممسنی', 'مهر', 'نیریز']
+const qazvin17 = ['آبیک', 'البرز', 'بوئینزهرا', 'تاکستان', 'قزوین']
+const qom18 = ['قم']
+const kordestan19 = ['بانه', 'بیجار', 'دیواندره', 'سروآباد', 'سقز', 'سنندج', 'قروه', 'کامیاران', 'مریوان']
+const kerman20 = ['بافت', 'بردسیر', 'بم', 'جیرفت', 'راور', 'رفسنجان', 'رودبار جنوب', 'زرند', 'سیرجان', 'شهر بابک', 'عنبرآباد', 'قلعه گنج', 'کرمان', 'کوهبنان', 'کهنوج', 'منوجان']
+const kermanshah21 = ['اسلامآباد غرب', 'پاوه', 'ثلاث باباجانی', 'جوانرود', 'دالاهو', 'روانسر', 'سرپل ذهاب', 'سنقر', 'صحنه', 'قصر شیرین', 'کرمانشاه', 'کنگاور', 'گیلان غرب', 'هرسین']
+const kohkilooyevaboyrahmad22 = ['بویراحمد', 'بهمئی', 'دنا', 'کهگیلویه', 'گچساران']
+const golestan23 = ['آزادشهر', 'آققلا', 'بندر گز', 'ترکمن', 'رامیان', 'علیآباد', 'کردکوی', 'کلاله', 'گرگان', 'گنبد کاووس', 'مراوهتپه', 'مینودشت']
+const gilan24 = ['آستارا', 'آستانه اشرفیه', 'اَملَش', 'بندر انزلی', 'رشت', 'رضوانشهر', 'رودبار', 'رودسر', 'سیاهکل', 'شَفت', 'صومعهسرا', 'طوالش', 'فومَن', 'لاهیجان', 'لنگرود', 'ماسال']
+const lorestan25 = ['ازنا', 'الیگودرز', 'بروجرد', 'پلدختر', 'خرمآباد', 'دورود', 'دلفان', 'سلسله ,کوهدشت']
+const mazandaran26 = ['آمل', 'بابل', 'بابلسر', 'بهشهر', 'تنکابن', 'جویبار', 'چالوس', 'رامسر', 'ساری', 'سوادکوه', 'قائمشهر', 'گلوگاه', 'محمودآباد', 'نکا', 'نور', 'نوشهر']
+const markazi27 = ['آشتیان', 'اراک', 'تفرش', 'خمین', 'دلیجان', 'زرندیه', 'ساوه', 'شازند', 'کمیجان', 'محلات']
+const hormozgan28 = ['ابوموسی', 'بستک', 'بندر عباس', 'بندر لنگه', 'جاسک', 'حاجیآباد', 'شهرستان خمیر', 'رودان', 'قشم', 'گاوبندی', 'میناب']
+const hamedan29 = ['اسدآباد', 'بهار', 'تویسرکان', 'رزن', 'کبودرآهنگ', 'ملایر', 'نهاوند', 'همدان']
+const yazd30 = ['ابرکوه', 'اردکان', 'بافق', 'تفت', 'خاتم', 'صدوق', 'طبس', 'مهریز', 'مِیبُد', 'یزد']
+const alborz31 = ['کرج', 'نظرآباد', 'فردیس', 'اشتهارد', 'هشتگرد', 'طالقان']
+
+
+// provinces list
+module.exports.iranCities = [
+ {
+ name: 'آذربایجان شرقی',
+ cities: eastazarbaijan1
+ },
+ {
+ name: 'آذربایجان غربی',
+ cities: westazarbaijan2
+ },
+ {
+ name: 'اردبیل',
+ cities: ardabil3
+ },
+ {
+ name: 'اصفهان',
+ cities: esfahan4
+ },
+ {
+ name: 'ایلام',
+ cities: ilam5
+ },
+ {
+ name: 'بوشهر',
+ cities: booshehr6
+ },
+ {
+ name: 'تهران',
+ cities: tehran7
+ },
+ {
+ name: 'چهارمحال بختیاری',
+ cities: chaharmahalobakhtiari8
+ },
+ {
+ name: 'خراسان جنوبی',
+ cities: khorasanjonoobi9
+ },
+ {
+ name: 'خراسان رضوی',
+ cities: khorasanrazavi10
+ },
+ {
+ name: 'خراسان شمالی',
+ cities: khorasanshomali11
+ },
+ {
+ name: 'خوزستان',
+ cities: khoozestan12
+ },
+ {
+ name: 'زنجان',
+ cities: zanjan13
+ },
+ {
+ name: 'سمنان',
+ cities: semnan14
+ },
+ {
+ name: 'سیستان بلوچستان',
+ cities: sistanobaloochestan15
+ },
+ {
+ name: 'فارس',
+ cities: fars16
+ },
+ {
+ name: 'قزوین',
+ cities: qazvin17
+ },
+ {
+ name: 'قم',
+ cities: qom18
+ },
+ {
+ name: 'کردستان',
+ cities: kordestan19
+ },
+ {
+ name: 'کرمان',
+ cities: kerman20
+ },
+ {
+ name: 'کرمانشاه',
+ cities: kermanshah21
+ },
+ {
+ name: 'کهکیلویه و بویراحمد',
+ cities: kohkilooyevaboyrahmad22
+ },
+ {
+ name: 'گلستان',
+ cities: golestan23
+ },
+ {
+ name: 'گیلان',
+ cities: gilan24
+ },
+ {
+ name: 'لرستان',
+ cities: lorestan25
+ },
+ {
+ name: 'مازندران',
+ cities: mazandaran26
+ },
+ {
+ name: 'مرکزی',
+ cities: markazi27
+ },
+ {
+ name: 'هرمزگان',
+ cities: hormozgan28
+ },
+ {
+ name: 'همدان',
+ cities: hamedan29
+ },
+ {
+ name: 'یزد',
+ cities: yazd30
+ },
+ {
+ name: 'البرز',
+ cities: alborz31
+ }
+]
diff --git a/server/plugins/permissions.js b/server/plugins/permissions.js
new file mode 100644
index 0000000..f664a0f
--- /dev/null
+++ b/server/plugins/permissions.js
@@ -0,0 +1,18 @@
+module.exports = [
+ {
+ name: 'مدیریت کاربران',
+ value: 'users'
+ },
+ {
+ name: 'مشاهده پیام های تماس با ما',
+ value: 'contact-us'
+ },
+ {
+ name: 'مدیریت سوالات متداول',
+ value: 'faq'
+ },
+ {
+ name: 'مدیریت تیکت ها',
+ value: 'tickets'
+ }
+]
diff --git a/server/plugins/privateAdmin.js b/server/plugins/privateAdmin.js
new file mode 100644
index 0000000..f7eb14b
--- /dev/null
+++ b/server/plugins/privateAdmin.js
@@ -0,0 +1,31 @@
+const User = require('../models/User')
+const _privateAdminInfo = require('./privateAdminData')
+const bcrypt = require('bcryptjs')
+const database = require('../database')
+
+module.exports.createAdmins = () => {
+ database.once('open', async cb => {
+ for (const item of _privateAdminInfo) {
+ try {
+ const user = await User.findOne({username: item.username})
+ if (!user) {
+ const data = {
+ username: item.username,
+ scope: ['admin']
+ }
+ // hash password
+ const salt = await bcrypt.genSalt(10)
+ const hash = await bcrypt.hash(item.password, salt)
+ data.password = hash
+ const newUser = new User(data)
+ newUser.save(err => {
+ if (err) console.log(err)
+ })
+ }
+ } catch
+ (e) {
+ console.log('Private admin creation has error -- ', e)
+ }
+ }
+ })
+}
diff --git a/server/plugins/privateAdminData.js b/server/plugins/privateAdminData.js
new file mode 100644
index 0000000..c3225d9
--- /dev/null
+++ b/server/plugins/privateAdminData.js
@@ -0,0 +1,39 @@
+////////////////////////////////// example
+//////////////////////////////////
+// module.exports = [
+// {
+// first_name: '',
+// last_name: '',
+// username: '',
+// password: ''
+// },
+// {
+// first_name: '',
+// last_name: '',
+// username: '',
+// password: ''
+// }
+// ]
+////////////////////////////////////
+//////////////////////////////////// example
+
+
+//////////////////////////////////////////////////
+//////////////////////////////////////////////////
+//////////////////////////////////////////////////
+// *remove data from this file after first run* //
+//////////////////////////////////////////////////
+//////////////////////////////////////////////////
+//////////////////////////////////////////////////
+
+
+module.exports = [
+ // {
+ // username: 'negareh_support',
+ // password: '@admin1234'
+ // },
+ // {
+ // username: 'orisoxin_admin',
+ // password: '#fDeRTT@%!'
+ // }
+]
diff --git a/server/plugins/serverResponses.js b/server/plugins/serverResponses.js
new file mode 100644
index 0000000..183c54a
--- /dev/null
+++ b/server/plugins/serverResponses.js
@@ -0,0 +1,750 @@
+module.exports._sr = {
+ fa: {
+ required: {
+ token: 'توکن را وارد کنید',
+ field: 'این فیلد نباید خالی باشد',
+ // developer validations
+ remember_me: 'پارامتر remember_me الزامی است',
+ // registration validations
+ name: 'نام را وارد کنید',
+ first_name: 'نام را وارد کنید',
+ last_name: 'نام خانوادگی را وارد کنید',
+ email: 'ایمیل را وارد کنید',
+ national_code: 'کد ملی الزامی است',
+ email_personal: 'ایمیل شخصی الزامی است',
+ email_company: 'ایمیل کمپانی برای اشخاص حقوقی الزامی است',
+ company_name: 'درصورتی که شخص حقوقی هستید، نام کمپانی را وارد کنید',
+ username: 'نام کاربری را وارد کنید',
+ phone_number: 'شماره تماس را وارد کنید',
+ password: 'پسورد را وارد کنید',
+ birthdate: 'تاریخ تولد را وارد کنید',
+ // addressing validations
+ country: 'کشور را وارد کنید',
+ province: 'استان را وارد کنید',
+ city: 'شهر را وارد کنید',
+ address: 'آدرس را وارد کنید',
+ postal_code: 'کد پستی را وارد کنید',
+ plaque: 'پلاک را وارد کنید',
+ receiver_first_name: 'نام گیرنده را وارد کنید',
+ receiver_last_name: 'نام خانوادگی گیرنده را وارد کنید',
+ receiver_mobile: 'شماره موبایل گیرنده را وارد کنید',
+ // global (post - gallery - ...)
+ title: 'عنوان را وارد کنید',
+ caption: 'متن را وارد کنید',
+ description: 'توضیحات را وارد کنید',
+ category: 'دسته بندی را انتخاب کنید',
+ image: 'عکس اجباری است',
+ cover: 'کاور اجباری است',
+ file: 'فایل اجباری است',
+ message: 'پیام را بنویسید',
+ quantity: 'تعداد را وارد کنید',
+ date: 'تاریخ را وارد کنید',
+ reason: 'دلیل را انتخاب کنید',
+ question: 'سوال را بنویسید',
+ answer: 'جواب را بنویسید',
+ price: 'قیمت را وارد کنید',
+ type: 'نوع را انتخاب کنید',
+ discount_code: 'کد تخفیف را وارد کنید',
+ discount_amount: 'مقدار تخفیف را وارد کنید',
+ discount_expire_date: 'تاریخ انقضای کد تخفیف را مشخص کنید',
+ user_id: 'کاربر را انتخاب کنید',
+ video: 'ویدیو اجباری است',
+ subject: 'موضوع را وارد کنید'
+
+ },
+ format: {
+ phone_number: 'فرمت شماره تماس صحیح نیست',
+ email: 'فرمت ایمیل قابل قبول نیست',
+ number: 'مقدار باید از جنس عدد باشد',
+ boolean: 'مقدار باید از جنس Boolean باشد',
+ image: 'فرمت عکس قابل قبول نیست',
+ video: 'فرمت ویدیو قابل قبول نیست',
+ national_code: 'کد ملی صحیح نیست'
+ },
+ min_char: {
+ min2: 'حداقل 2 کاراکتر',
+ min4: 'حداقل 4 کاراکتر',
+ min8: 'حداقل 8 کاراکتر',
+ min10: 'حداقل 10 کاراکتر',
+ min20: 'حداقل 20 کاراکتر',
+ min30: 'حداقل 30 کاراکتر',
+ min40: 'حداقل 40 کاراکتر',
+ min50: 'حداقل 50 کاراکتر',
+ min60: 'حداقل 60 کاراکتر',
+ min100: 'حداقل 100 کاراکتر',
+ min120: 'حداقل 120 کاراکتر',
+ min150: 'حداقل 150 کاراکتر',
+ min200: 'حداقل 200 کاراکتر',
+ data_size: 'حجم قابل قبول حداقل: ',
+ image_width_size: 'عرض حداقل: ',
+ image_height_size: 'ارتفاع حداقل: ',
+ },
+ max_char: {
+ max4: 'حداکثر 4 کاراکتر',
+ max8: 'حداکثر 8 کاراکتر',
+ max10: 'حداکثر 10 کاراکتر',
+ max15: 'حداکثر 15 کاراکتر',
+ max20: 'حداکثر 20 کاراکتر',
+ max30: 'حداکثر 30 کاراکتر',
+ max40: 'حداکثر 40 کاراکتر',
+ max50: 'حداکثر 50 کاراکتر',
+ max60: 'حداکثر 60 کاراکتر',
+ max100: 'حداکثر 100 کاراکتر',
+ max120: 'حداکثر 120 کاراکتر',
+ max150: 'حداکثر 150 کاراکتر',
+ max200: 'حداکثر 200 کاراکتر',
+ data_size: 'حجم قابل قبول حداکثر: ',
+ image_width_size: 'عرض حداکثر: ',
+ image_height_size: 'ارتفاع حداکثر: ',
+ },
+ not_found: {
+ user_id: 'کاربری با این مشخصات وجود ندارد',
+ admin_id: 'ادمینی با این مشخصات وجود ندارد',
+ order_id: 'سفارشی با این مشخصات وجود ندارد',
+ item_id: 'موردی با این مشخصات وجود ندارد',
+ password: 'رمز عبور یا آیدی درست نیست'
+ },
+ duplicated: {
+ username: 'این نام کاربری از قبل وجود دارد',
+ email: 'این ایمیل از قبل وجود دارد',
+ name: 'نام تکراری است',
+ title: 'عنوان تکراری است',
+ phone_number: 'این شماره تماس از قبل وجود دارد'
+ },
+ response: {
+ logged_in: 'شما وارد سیستم شدید',
+ not_logged_in: 'شما وارد سیستم نشدید',
+ logged_out: 'شما از سیستم خارج شدید',
+ unauthenticated: 'غیرمجاز',
+ recovery_link: 'لینک بازیابی فرستاده شد',
+ success_save: 'با موفقیت ثبت شد',
+ success_remove: 'با موفقیت حذف شد',
+ cart_empty: 'سبد خرید خالی است',
+ already_has_address: 'آدرس قبلا اضافه شده',
+ activation_code: 'کد فعالسازی برای شما ارسال شد',
+ activation_email: 'ایمیل فعال سازی برای شما ارسال شد',
+ expired_reset_link: 'این لینک بازیابی منقضی شده است',
+ email_not_confirmed: 'ابتدا ایمیل خود را تایید کنید،لینک فعال سازی قبلا برای شما فرستاده شده است.',
+ expired_activation_link: 'این لینک فعال سازی منقضی شده است',
+ success_activation: 'اکانت شما با موفقیت فعال شد',
+ passwords_not_match: 'پسورد ها یکی نیست',
+ problem: 'مشکلی پیش آمده، لطفا دوباره تلاش کنید.',
+ latinChar: 'لطفا با حروف لاتین بنویسید',
+ persianChar: 'لطفا با حروف فارسی بنویسید',
+ whiteSpace: 'بین حروف و کلمات نباید فاصله باشد'
+ },
+ file_types: {
+ jpg: 'فقط فرمت jpg قابل قبول است',
+ png: 'فقط فرمت png قابل قبول است',
+ gif: 'فقط فرمت gif قابل قبول است',
+ pdf: 'فقط فرمت pdf قابل قبول است',
+ txt: 'فقط فرمت txt قابل قبول است',
+ log: 'فقط فرمت log قابل قبول است',
+ mp3: 'فقط فرمت mp3 قابل قبول است',
+ ogg: 'فقط فرمت ogg قابل قبول است',
+ wmv: 'فقط فرمت wmv قابل قبول است',
+ mp4: 'فقط فرمت mp4 قابل قبول است',
+ mov: 'فقط فرمت mov قابل قبول است',
+ mkv: 'فقط فرمت mkv قابل قبول است',
+ flv: 'فقط فرمت flv قابل قبول است'
+ }
+ },
+ en: {
+ required: {
+ token: 'Token is required',
+ field: 'This field is required',
+ // developer validations
+ remember_me: 'Remember_me parameter required',
+ // registration validations
+ name: 'Enter name',
+ first_name: 'Enter first name',
+ last_name: 'Enter last name',
+ national_code: 'National code is required',
+ email: 'Enter email',
+ email_personal: 'Personal email is required',
+ email_company: 'Company email is required for legal entities',
+ company_name: 'Enter company name if you are a legal entity',
+ username: 'Enter username',
+ phone_number: 'Enter phone number',
+ password: 'Enter password',
+ birthdate: 'Enter birthdate',
+ // addressing validations
+ country: 'Enter country',
+ province: 'Enter province',
+ city: 'Enter city',
+ address: 'Enter address',
+ postal_code: 'Enter postal code',
+ plaque: 'Enter plaque',
+ receiver_first_name: 'Enter recipient name',
+ receiver_last_name: 'Enter recipient surname',
+ receiver_mobile: 'Enter recipient\'s mobile number',
+ // global (post - gallery - ...)
+ title: 'Enter title',
+ caption: 'Enter caption',
+ description: 'Enter description',
+ category: 'Select category',
+ image: 'Image is required',
+ cover: 'Cover is required',
+ file: 'File is required',
+ message: 'Write message',
+ quantity: 'Enter quantity',
+ date: 'Enter date',
+ reason: 'Select reason',
+ question: 'Write the question',
+ answer: 'Write the answer',
+ price: 'Enter Price',
+ type: 'Select type',
+ discount_code: 'Enter discount code',
+ discount_amount: 'Enter discount amount',
+ discount_expire_date: 'Specify discount code expiration date',
+ user_id: 'Select user',
+ video: 'Video is required',
+ subject: 'Enter subject'
+ },
+ format: {
+ phone_number: 'Phone number format in incorrect',
+ email: 'Email format is not correct',
+ number: 'Value must be number',
+ boolean: 'Value must be Boolean',
+ image: 'Photo format is not acceptable',
+ video: 'Video format is not acceptable',
+ national_code: 'National code format is not correct'
+ },
+ min_char: {
+ min2: 'At least 2 characters',
+ min4: 'At least 4 characters',
+ min8: 'At least 8 characters',
+ min10: 'At least 10 characters',
+ min20: 'At least 20 characters',
+ min30: 'At least 30 characters',
+ min40: 'At least 40 characters',
+ min50: 'At least 50 characters',
+ min60: 'At least 60 characters',
+ min100: 'At least 100 characters',
+ min120: 'At least 120 characters',
+ min150: 'At least 150 characters',
+ min200: 'At least 200 characters',
+ data_size: 'Acceptable minimum size: ',
+ image_width_size: 'Minimum width: ',
+ image_height_size: 'Minimum height: ',
+ },
+ max_char: {
+ max4: 'Maximum 4 characters',
+ max8: 'Maximum 8 characters',
+ max10: 'Maximum 10 characters',
+ max15: 'Maximum 15 characters',
+ max20: 'Maximum 20 characters',
+ max30: 'Maximum 30 characters',
+ max40: 'Maximum 40 characters',
+ max50: 'Maximum 50 characters',
+ max60: 'Maximum 60 characters',
+ max100: 'Maximum 100 characters',
+ max120: 'Maximum 120 characters',
+ max150: 'Maximum 150 characters',
+ max200: 'Maximum 200 characters',
+ data_size: 'Maximum acceptable size: ',
+ image_width_size: 'Maximum width: ',
+ image_height_size: 'Maximum height: ',
+ },
+ not_found: {
+ user_id: 'There is no user with this profile',
+ admin_id: 'There is no admin with this profile',
+ order_id: 'There is no order with this profile',
+ item_id: 'There is no item with this specification',
+ password: 'Password or ID is incorrect'
+ },
+ duplicated: {
+ username: 'This username already exists',
+ email: 'This email already exists',
+ name: 'Name already exists',
+ title: 'Title already exists',
+ phone_number: 'Phone number already exists'
+ },
+ response: {
+ logged_in: 'You are logged in',
+ not_logged_in: 'You are not logged in',
+ logged_out: 'You are logged out',
+ unauthenticated: 'unauthenticated',
+ recovery_link: 'Recovery link sent',
+ success_save: 'Successfully saved',
+ success_remove: 'Successfully removed',
+ cart_empty: 'Cart is empty',
+ already_has_address: 'Already has address',
+ activation_code: 'Activation code sent to you',
+ activation_email: 'Activation email sent to you',
+ expired_reset_link: 'The current reset pass link has been expired',
+ email_not_confirmed: 'Confirm your email first, the activation link has already been sent to you.',
+ expired_activation_link: 'This activation link has expired',
+ success_activation: 'Your account has been successfully activated',
+ passwords_not_match: 'Passwords are not the same',
+ problem: 'There is a problem, please try again.',
+ latinChar: 'Please write in Latin letters',
+ persianChar: 'Please write in Persian letters',
+ whiteSpace: 'There should be no space between letters and words'
+ },
+ file_types: {
+ jpg: 'Only jpg format is acceptable',
+ png: 'Only png format is acceptable',
+ gif: 'Only gif format is acceptable',
+ pdf: 'Only pdf format is acceptable',
+ txt: 'Only txt format is acceptable',
+ log: 'Only log format is acceptable',
+ mp3: 'Only mp3 format is acceptable',
+ ogg: 'Only ogg format is acceptable',
+ wmv: 'Only wmv format is acceptable',
+ mp4: 'Only mp4 format is acceptable',
+ mov: 'Only mov format is acceptable',
+ mkv: 'Only mkv format is acceptable',
+ flv: 'Only flv format is acceptable'
+ }
+ },
+ de: {
+ required: {
+ token: 'Token is required',
+ field: 'This field is required',
+ // developer validations
+ remember_me: 'Remember_me-Parameter erforderlich',
+ // registration validations
+ name: 'Name eingeben',
+ first_name: 'Name eingeben',
+ last_name: 'Nachnamen eingeben',
+ national_code: "Nationaler Code ist erforderlich",
+ email: 'Email eingeben',
+ email_personal: 'Persönliche E-Mail ist erforderlich',
+ email_company: 'Für juristische Personen ist eine Unternehmens-E-Mail erforderlich',
+ company_name: 'Geben Sie den Firmennamen ein, wenn Sie eine juristische Person sind',
+ username: 'Geben Sie den Benutzernamen ein',
+ phone_number: 'Telefonnummer eingeben',
+ password: 'Passwort eingeben',
+ birthdate: 'Enter birthdate',
+ // addressing validations
+ country: 'Land eingeben',
+ province: 'Stadt betreten',
+ city: 'Stadt betreten',
+ address: 'Adresse eingeben',
+ postal_code: 'Postleitzahl eingeben',
+ plaque: 'Plakette eingeben',
+ receiver_first_name: 'Empfängername eingeben',
+ receiver_last_name: 'Nachname des Empfängers eingeben',
+ receiver_mobile: 'Handynummer des Empfängers eingebenr',
+ // global (post - gallery - ...)
+ title: 'Titel eingeben',
+ caption: 'Beschriftung eingeben',
+ description: 'Beschreibung eingeben',
+ category: 'Kategorie wählen',
+ image: 'Bild ist erforderlich',
+ cover: 'Bild ist erforderlich Abdeckung ist erforderlich',
+ file: 'Datei ist erforderlich',
+ message: 'Nachricht schreiben',
+ quantity: 'Menge eingeben',
+ date: 'Enter date',
+ reason: 'Grund auswählen',
+ question: 'Schreibe die Frage',
+ answer: 'Schreibe die Antwort',
+ price: 'Enter Price',
+ type: 'Select type',
+ discount_code: 'Enter discount code',
+ discount_amount: 'Enter discount amount',
+ discount_expire_date: 'Specify discount code expiration date',
+ user_id: 'Select user',
+ video: 'Video is required',
+ subject: 'Enter subject'
+ },
+ format: {
+ phone_number: 'Telefonnummernformat falsch',
+ email: 'E-Mail-Format nicht korrekt',
+ number: 'Wert muss Nummer sein',
+ boolean: 'Wert muss Boolescher Wert sein',
+ image: 'Photo format is not acceptable',
+ video: 'Video format is not acceptable',
+ national_code: "Nationales Codeformat ist nicht korrekt"
+ },
+ min_char: {
+ min2: 'Mindestens 2 Zeichen',
+ min4: 'Mindestens 4 Zeichen',
+ min8: 'Mindestens 8 Zeichen',
+ min10: 'Mindestens 10 Zeichen',
+ min20: 'Mindestens 20 Zeichen',
+ min30: 'Mindestens 30 Zeichen',
+ min40: 'Mindestens 40 Zeichen',
+ min50: 'Mindestens 50 Zeichen',
+ min60: 'Mindestens 60 Zeichen',
+ min100: 'Mindestens 100 Zeichen',
+ min120: 'Mindestens 120 Zeichen',
+ min150: 'Mindestens 150 Zeichen',
+ min200: 'Mindestens 200 Zeichen',
+ data_size: 'Akzeptable Mindestgröße: ',
+ image_width_size: 'Mindestbreite: ',
+ image_height_size: 'Mindesthöhe: ',
+ },
+ max_char: {
+ max4: 'Maximal 4 Zeichen',
+ max8: 'Maximal 8 Zeichen',
+ max10: 'Maximal 10 Zeichen',
+ max15: 'Maximal 15 Zeichen',
+ max20: 'Maximal 20 Zeichen',
+ max30: 'Maximal 30 Zeichen',
+ max40: 'Maximal 40 Zeichen',
+ max50: 'Maximal 50 Zeichen',
+ max60: 'Maximal 60 Zeichen',
+ max100: 'Maximal 100 Zeichen',
+ max120: 'Maximal 120 Zeichen',
+ max150: 'Maximal 150 Zeichen',
+ max200: 'Maximal 200 Zeichen',
+ data_size: 'Maximal zulässige Größe: ',
+ image_width_size: 'Maximale Breite: ',
+ image_height_size: 'Maximale Höhe: ',
+ },
+ not_found: {
+ user_id: 'Es gibt keinen Benutzer mit diesem Profil',
+ admin_id: 'Es gibt keinen Administrator mit diesem Profil',
+ order_id: 'Es gibt keine Bestellung mit diesem Profil',
+ item_id: 'Es gibt keinen Artikel mit dieser Spezifikation',
+ password: 'Passwort oder ID ist falsch'
+ },
+ duplicated: {
+ username: 'Dieser Benutzername existiert bereits',
+ email: 'Diese E-Mail existiert bereits',
+ name: 'Name ist doppelt',
+ title: 'Titel ist doppelt',
+ phone_number: 'Phone number already exists'
+ },
+ response: {
+ logged_in: 'Sie sind angemeldet',
+ not_logged_in: 'Sie sind nicht angemeldet',
+ logged_out: 'Sie sind abgemeldet',
+ unauthenticated: 'nicht authentifiziert',
+ recovery_link: 'Wiederherstellungslink gesendet',
+ success_save: 'Erfolgreich gespeichert',
+ success_remove: 'Erfolgreich entfernt',
+ cart_empty: 'Warenkorb ist leer',
+ ready_has_address: 'Hat bereits Adresse',
+ activation_code: 'Activation code sent to you',
+ activation_email: 'Activation email sent to you',
+ expired_reset_link: 'Der aktuelle Reset-Pass-Link ist abgelaufen',
+ email_not_confirmed: "Bestätigen Sie zuerst Ihre E-Mail, der Aktivierungslink wurde bereits an Sie gesendet.",
+ expired_activation_link: 'Dieser Aktivierungslink ist abgelaufen',
+ success_activation: 'Ihr Konto wurde erfolgreich aktiviert',
+ passwords_not_match: 'Passwörter sind nicht dasselbe',
+ problem: "Es gibt ein Problem, bitte versuchen Sie es erneut.",
+ latinChar: 'Please write in Latin letters',
+ persianChar: 'Please write in Persian letters',
+ whiteSpace: 'There should be no space between letters and words'
+ },
+ file_types: {
+ jpg: 'Nur das jpg-Format ist akzeptabel',
+ png: 'Nur das png-Format ist akzeptabel',
+ gif: 'Nur das gif-Format ist akzeptabel',
+ pdf: 'Nur das PDF-Format ist akzeptabel',
+ txt: 'Nur das txt-Format ist akzeptabel',
+ log: 'Nur das log-Format ist akzeptabel',
+ mp3: 'Nur das mp3-Format ist akzeptabel',
+ ogg: 'Nur das ogg-Format ist akzeptabel',
+ wmv: 'Nur das wmv-Format ist akzeptabel',
+ mp4: 'Nur das mp4-Format ist akzeptabel',
+ mov: 'Nur das mov-Format ist akzeptabel',
+ mkv: 'Nur das mkv-Format ist akzeptabel',
+ flv: 'Nur das flv-Format ist akzeptabel'
+ }
+ },
+ tr: {
+ required: {
+ token: 'Token is required',
+ field: 'This field is required',
+ // geliştirici doğrulamaları
+ Remember_me: 'Remember_me parametresi gerekli',
+ // kayıt doğrulamaları
+ name: 'Adı girin',
+ first_name: 'Adı girin',
+ last_name: 'Soyadı girin',
+ national_code: "Nationaler Kodu erforderlich",
+ email: 'E-posta girin',
+ email_personal: 'Kişisel e-posta gereklidir',
+ email_company: 'Tüzel kişiler için şirket e-postası gereklidir',
+ company_name: 'Tüzel kişiyseniz şirket adını girin',
+ username: 'Kullanıcı adını girin',
+ phone_number: 'Telefon numarasını girin',
+ password: 'Şifre girin',
+ birthdate: 'Enter birthdate',
+ // doğrulamaları adresleme
+ country: 'Ülke girin',
+ province: 'İl girin',
+ city: 'Şehir girin',
+ address: 'Adres girin',
+ postal_code: 'Posta kodunu girin',
+ plaque: 'Plak girin',
+ receiver_first_name: 'Alıcı adını girin',
+ receiver_last_name: 'Alıcının soyadını girin',
+ receiver_mobile: 'Alıcının cep telefonu numarasını girin',
+ // global (post - galeri - ...)
+ title: 'Başlığı girin',
+ caption: 'Başlık girin',
+ description: 'Açıklama girin',
+ category: 'Kategori seçin',
+ image: 'Resim gerekli',
+ cover: 'Kapak gereklidir',
+ file: 'Dosya gerekli',
+ message: 'Mesaj yaz',
+ quantity: 'Miktar girin',
+ date: 'Enter date',
+ reason: 'Nedeni seçin',
+ question: 'Soruyu yazın',
+ answer: 'Cevabı yaz',
+ price: 'Enter Price',
+ type: 'Select type',
+ discount_code: 'Enter discount code',
+ discount_amount: 'Enter discount amount',
+ discount_expire_date: 'Specify discount code expiration date',
+ user_id: 'Select user',
+ video: 'Video is required',
+ subject: 'Enter subject'
+ },
+ format: {
+ phone_number: 'Telefon numarası biçimi yanlış',
+ email: 'E-posta formatı doğru değil',
+ number: 'Değer sayı olmalıdır',
+ boolean: 'Değer Boole olmalıdır',
+ image: 'Photo format is not acceptable',
+ video: 'Video format is not acceptable',
+ national_code: 'Ulusal kod formatı doğru değil'
+ },
+ min_char: {
+ min2: 'En az 2 karakter',
+ min4: 'En az 4 karakter',
+ min8: 'En az 8 karakter',
+ min10: 'En az 10 karakter',
+ min20: 'En az 20 karakter',
+ min30: 'En az 30 karakter',
+ min40: 'En az 40 karakter',
+ min50: 'En az 50 karakter',
+ min60: 'En az 60 karakter',
+ min100: 'En az 100 karakter',
+ min120: 'En az 120 karakter',
+ min150: 'En az 150 karakter',
+ min200: 'En az 200 karakter',
+ data_size: 'Kabul edilebilir minimum boyut: ',
+ image_width_size: 'Minimum genişlik: ',
+ image_height_size: 'Minimum yükseklik: ',
+ },
+ max_char: {
+ max4: 'Maksimum 4 karakter',
+ max8: 'Maksimum 8 karakter',
+ max10: 'Maksimum 10 karakter',
+ max15: 'Maksimum 15 karakter',
+ max20: 'Maksimum 20 karakter',
+ max30: 'Maksimum 30 karakter',
+ max40: 'Maksimum 40 karakter',
+ max50: 'Maksimum 50 karakter',
+ max60: 'Maksimum 60 karakter',
+ max100: 'Maksimum 100 karakter',
+ max120: 'Maksimum 120 karakter',
+ max150: 'Maksimum 150 karakter',
+ max200: 'Maksimum 200 karakter',
+ data_size: 'Kabul edilebilir maksimum boyut: ',
+ image_width_size: 'Maksimum genişlik: ',
+ image_height_size: 'Maksimum yükseklik: ',
+ },
+ not_found: {
+ user_id: 'Bu profile sahip kullanıcı yok',
+ admin_id: 'Bu profile sahip yönetici yok',
+ order_id: 'Bu profilde sipariş yok',
+ item_id: 'Bu spesifikasyona sahip hiçbir öğe yok',
+ password: 'Şifre veya kimlik yanlış'
+ },
+ duplicated: {
+ username: 'Bu kullanıcı adı zaten mevcut',
+ email: 'Bu email zaten var',
+ name: 'Ad çift',
+ title: 'Başlık yineleniyor',
+ phone_number: 'Phone number already exists'
+ },
+ response: {
+ logged_in: 'Giriş yaptınız',
+ not_logged_in: 'Giriş yapmadınız',
+ logged_out: 'Çıkış yaptınız',
+ unauthenticated: 'unauthenticated',
+ recovery_link: 'Kurtarma bağlantısı gönderildi',
+ success_save: 'Başarıyla kaydedildi',
+ success_remove: 'Başarıyla kaldırıldı',
+ cart_empty: 'Sepet boş',
+ already_has_address: 'Zaten adresi var',
+ activation_code: 'Activation code sent to you',
+ activation_email: 'Activation email sent to you',
+ expired_reset_link: 'Mevcut sıfırlama geçiş bağlantısının süresi doldu',
+ email_not_confirmed: 'Önce e-postanızı onaylayın, aktivasyon bağlantısı size zaten gönderildi.',
+ expired_activation_link: "Bu aktivasyon bağlantısının süresi doldu",
+ success_activation: 'Hesabınız başarıyla etkinleştirildi',
+ passwords_not_match: 'Şifreler aynı değil',
+ problem: 'Bir sorun var, lütfen tekrar deneyin.',
+ latinChar: 'Please write in Latin letters',
+ persianChar: 'Please write in Persian letters',
+ whiteSpace: 'There should be no space between letters and words'
+ },
+ file_types: {
+ jpg: 'Yalnızca jpg formatı kabul edilebilir',
+ png: 'Sadece png formatı kabul edilebilir',
+ gif: 'Yalnızca gif formatı kabul edilebilir',
+ pdf: 'Yalnızca pdf formatı kabul edilebilir',
+ txt: 'Yalnızca txt formatı kabul edilebilir',
+ log: 'Yalnızca log formatı kabul edilebilir',
+ mp3: 'Yalnızca mp3 formatı kabul edilebilir',
+ ogg: 'Yalnızca ogg formatı kabul edilebilir',
+ wmv: 'Yalnızca wmv formatı kabul edilebilir',
+ mp4: 'Yalnızca mp4 formatı kabul edilebilir',
+ mov: 'Yalnızca mov formatı kabul edilebilir',
+ mkv: 'Yalnızca mkv formatı kabul edilebilir',
+ flv: 'Yalnızca flv biçimi kabul edilebilir'
+ }
+ },
+ it: {
+ required: {
+ token: 'Token is required',
+ field: 'This field is required',
+ // convalide dello sviluppatore
+ Remember_me: "Remember_me parameter required",
+ // convalide della registrazione
+ name: "Inserisci nome",
+ first_name: "Inserisci nome",
+ last_name: "Inserisci il cognome",
+ national_code: "Il codice Nationaler è comune",
+ email: "Enter email",
+ email_personal: "L'email personale è obbligatoria",
+ email_company: "L'email aziendale è obbligatoria per le persone giuridiche",
+ company_name: "Inserisci il nome dell'azienda se sei una persona giuridica",
+ username: "Inserisci nome utente",
+ phone_number: "Inserisci numero di telefono",
+ password: "Inserisci password",
+ birthdate: 'Enter birthdate',
+ // indirizzamento delle convalide
+ country: "Inserisci paese",
+ province: "Inserisci provincia",
+ city: "Inserisci città",
+ address: "Inserisci indirizzo",
+ postal_code: "Inserisci codice postale",
+ plaque: "Inserisci targa",
+ receiver_first_name: "Inserisci il nome del destinatario",
+ receiver_last_name: "Inserisci il cognome del destinatario",
+ receiver_mobile: "Inserisci il numero di cellulare del destinatario",
+ // globale (post - gallery - ...)
+ title: "Inserisci titolo",
+ caption: "Inserisci didascalia",
+ description: "Inserisci descrizione",
+ category: "Seleziona categoria",
+ image: "L'immagine è obbligatoria",
+ cover: "Cover is required",
+ file: "Il file è obbligatorio",
+ message: "Scrivi messaggio",
+ quantity: "Inserisci quantità",
+ date: 'Enter date',
+ reason: 'Seleziona motivo',
+ question: 'Scrivi la domanda',
+ answer: 'Scrivi la risposta',
+ price: 'Enter Price',
+ type: 'Select type',
+ discount_code: 'Enter discount code',
+ discount_amount: 'Enter discount amount',
+ discount_expire_date: 'Specify discount code expiration date',
+ user_id: 'Select user',
+ video: 'Video is required',
+ subject: 'Enter subject'
+ },
+ format: {
+ phone_number: "Formato del numero di telefono non corretto",
+ email: "Formato email non corretto",
+ number: "Il valore deve essere un numero",
+ boolean: "Il valore deve essere booleano",
+ image: 'Photo format is not acceptable',
+ video: 'Video format is not acceptable',
+ national_code: "Il formato del codice nazionale non è corretto"
+ },
+ min_char: {
+ min2: "Almeno 2 caratteri",
+ min4: "Almeno 4 caratteri",
+ min8: "Almeno 8 caratteri",
+ min10: "Almeno 10 caratteri",
+ min20: "Almeno 20 caratteri",
+ min30: "Almeno 30 caratteri",
+ min40: "Almeno 40 caratteri",
+ min50: "Almeno 50 caratteri",
+ min60: "Almeno 60 caratteri",
+ min100: "Almeno 100 caratteri",
+ min120: "Almeno 120 caratteri",
+ min150: "Almeno 150 caratteri",
+ min200: "Almeno 200 caratteri",
+ data_size: "Dimensione minima accettabile: ",
+ image_width_size: "Larghezza minima: ",
+ image_height_size: "Altezza minima: ",
+ },
+ max_char: {
+ max4: "Massimo 4 caratteri",
+ max8: "Massimo 8 caratteri",
+ max10: "Massimo 10 caratteri",
+ max15: "Massimo 15 caratteri",
+ max20: "Massimo 20 caratteri",
+ max30: "Massimo 30 caratteri",
+ max40: "Massimo 40 caratteri",
+ max50: "Massimo 50 caratteri",
+ max60: "Massimo 60 caratteri",
+ max100: "Massimo 100 caratteri",
+ max120: "Massimo 120 caratteri",
+ max150: "Massimo 150 caratteri",
+ max200: "Massimo 200 caratteri",
+ data_size: "Dimensione massima accettabile: ",
+ image_width_size: "Larghezza massima: ",
+ image_height_size: "Altezza massima: ",
+ },
+ not_found: {
+ user_id: "Nessun utente con questo profilo",
+ admin_id: "Nessun amministratore con questo profilo",
+ order_id: "Nessun ordine con questo profilo",
+ item_id: "Nessun articolo con questa specifica",
+ password: "La password o l'ID non sono corretti"
+ },
+ duplicated: {
+ username: "Questo nome utente esiste già",
+ email: "Questa email esiste già",
+ name: "Il nome è duplicato",
+ title: "Il titolo è duplicato",
+ phone_number: 'Phone number already exists'
+ },
+ response: {
+ logged_in: "Hai effettuato l'accesso",
+ not_logged_in: "Non sei loggato",
+ logged_out: "Sei disconnesso",
+ unauthenticated: "unauthenticated",
+ recovery_link: "Link di ripristino inviato",
+ success_save: "Salvataggio riuscito",
+ success_remove: "Rimosso con successo",
+ cart_empty: "Il carrello è vuoto",
+ already_has_address: "Ha già indirizzo",
+ activation_code: 'Activation code sent to you',
+ activation_email: 'Activation email sent to you',
+ expired_reset_link: "L'attuale link del passaggio di reimpostazione è scaduto",
+ email_not_confirmed: "Conferma prima la tua email, il link di attivazione ti è già stato inviato.",
+ expired_activation_link: "Questo link di attivazione è scaduto",
+ success_activation: "Il tuo account è stato attivato con successo",
+ passwords_not_match: "Le password non sono le stesse",
+ problem: "Si è verificato un problema, riprova.",
+ latinChar: 'Please write in Latin letters',
+ persianChar: 'Please write in Persian letters',
+ whiteSpace: 'There should be no space between letters and words'
+ },
+ file_types: {
+ jpg: "È accettabile solo il formato jpg",
+ png: "È accettabile solo il formato png",
+ gif: "È accettabile solo il formato GIF",
+ pdf: "È accettabile solo il formato pdf",
+ txt: "È accettabile solo il formato txt",
+ log: "È accettabile solo il formato log",
+ mp3: "È accettabile solo il formato mp3",
+ ogg: "È accettabile solo il formato ogg",
+ wmv: "È accettabile solo il formato wmv",
+ mp4: "È accettabile solo il formato mp4",
+ mov: "È accettabile solo il formato mov",
+ mkv: "È accettabile solo il formato mkv",
+ flv: "È accettabile solo il formato flv"
+ }
+ },
+ supportedImageFormats: ['jpg', 'jpeg', 'png', 'svg', 'svg+xml', 'webp'],
+ supportedVideoFormats: ['mp4', 'wmv']
+}
diff --git a/server/routes/admin.js b/server/routes/admin.js
new file mode 100644
index 0000000..4318e69
--- /dev/null
+++ b/server/routes/admin.js
@@ -0,0 +1,92 @@
+const {Router} = require('express')
+const router = Router()
+/////////////////////////////////////////////////////////// controllers
+const contactUsController = require('../controllers/contactUsController')
+const blogCategoryController = require('../controllers/blogCategoryController')
+const blogPostController = require('../controllers/blogPostController')
+const userController = require('../controllers/userController')
+const projectController = require('../controllers/projectController')
+const projectCategoryController = require('../controllers/projectCategoryController')
+const teamController = require('../controllers/teamController')
+const galleryController = require('../controllers/galleryController')
+const galleryCategoryController = require('../controllers/galleryCategoryController')
+const catalogController = require('../controllers/catalogController')
+const customerCommentController = require('../controllers/customerCommentController')
+const sliderController = require('../controllers/sliderController')
+const siteSettingController = require('../controllers/siteSettingController')
+
+
+//////////////// blog category
+router.post('/blogCategory', blogCategoryController.create)
+router.put('/blogCategory/:id', blogCategoryController.update)
+router.get('/blogCategory/:id', blogCategoryController.getOne)
+router.delete('/blogCategory/:id', blogCategoryController.delete)
+
+
+//////////////// blog post
+router.post('/blogPost', blogPostController.create)
+router.put('/blogPost/:id', blogPostController.update)
+router.delete('/blogPost/:id', blogPostController.delete)
+
+
+//////////////// contact us
+router.get('/contactUsMessages', contactUsController.getAll)
+router.get('/contactUsMessages/:id', contactUsController.getOne)
+
+
+//////////////// gallery category
+router.post('/galleryCategory', galleryCategoryController.create)
+router.put('/galleryCategory/:id', galleryCategoryController.update)
+router.get('/galleryCategory/:id', galleryCategoryController.getOne)
+router.delete('/galleryCategory/:id', galleryCategoryController.delete)
+
+
+//////////////// gallery
+router.post('/gallery', galleryController.create)
+router.put('/gallery/:id', galleryController.update)
+router.delete('/gallery/:id', galleryController.delete)
+
+//////////////// catalog
+router.post('/catalog', catalogController.create)
+router.put('/catalog/:id', catalogController.update)
+router.delete('/catalog/:id', catalogController.delete)
+
+
+//////////////// project category
+router.post('/projectCategory', projectCategoryController.create)
+router.put('/projectCategory/:id', projectCategoryController.update)
+router.get('/projectCategory/:id', projectCategoryController.getOne)
+router.delete('/projectCategory/:id', projectCategoryController.delete)
+// tags
+router.post('/categoryTag/:categoryId', projectCategoryController.addTagToCategory)
+router.delete('/categoryTag/:tagId', projectCategoryController.removeTagFromCategory)
+
+
+//////////////// projects
+router.post('/project', projectController.create)
+router.put('/project/:id', projectController.update)
+router.delete('/project/:id', projectController.delete)
+router.post('/projectImage/:project_id', projectController.addImageToProjectGallery)
+router.delete('/projectImage/:image_id', projectController.removeImageFromProject)
+
+//////////////// team mates
+router.post('/team', teamController.create)
+router.put('/team/:id', teamController.update)
+router.delete('/team/:id', teamController.delete)
+
+//////////////// customer comments
+router.post('/comment', customerCommentController.create)
+router.put('/comment/:id', customerCommentController.update)
+router.delete('/comment/:id', customerCommentController.delete)
+router.get('/comment/:id', customerCommentController.getOne)
+
+//////////////// slider
+router.post('/slide', sliderController.create)
+router.delete('/slide/:id', sliderController.delete)
+
+//////////////// site setting
+router.post('/setting/:id', siteSettingController.uploadCover)
+router.get('/setting', siteSettingController.getAllByAdmin)
+
+
+module.exports = router
diff --git a/server/routes/auth.js b/server/routes/auth.js
new file mode 100644
index 0000000..d830aaf
--- /dev/null
+++ b/server/routes/auth.js
@@ -0,0 +1,9 @@
+const {Router} = require('express')
+const router = Router()
+const userController = require('../controllers/userController')
+
+router.post('/login', userController.login)
+router.delete('/logout', userController.logout)
+router.get('/user', userController.getUser)
+
+module.exports = router
diff --git a/server/routes/public.js b/server/routes/public.js
new file mode 100644
index 0000000..ada5232
--- /dev/null
+++ b/server/routes/public.js
@@ -0,0 +1,73 @@
+const {Router} = require('express')
+const router = Router()
+
+/////////////////////////////////////////////////////////// controllers
+const contactUsController = require('../controllers/contactUsController')
+const blogCategoryController = require('../controllers/blogCategoryController')
+const blogPostController = require('../controllers/blogPostController')
+const projectCategoryController = require('../controllers/projectCategoryController')
+const projectController = require('../controllers/projectController')
+const teamController = require('../controllers/teamController')
+const galleryController = require('../controllers/galleryController')
+const galleryCategoryController = require('../controllers/galleryCategoryController')
+const catalogController = require('../controllers/catalogController')
+const customerCommentController = require('../controllers/customerCommentController')
+const sliderController = require('../controllers/sliderController')
+const siteSettingController = require('../controllers/siteSettingController')
+
+/////////////////////////////////////////////////////////// routes
+
+
+//////////////// blog categories
+router.get('/blogCategories', blogCategoryController.getAll)
+
+//////////////// blog post
+router.get('/blogPosts', blogPostController.getAll)
+router.get('/blogPost/:id', blogPostController.getOne)
+
+//////////////// contact us
+router.post('/contact', contactUsController.create)
+
+
+//////////////// gallery categories
+router.get('/galleryCategories', galleryCategoryController.getAll)
+
+//////////////// gallery
+router.get('/gallery', galleryController.getAll)
+router.get('/gallery/:id', galleryController.getByCategoryId)
+router.get('/galleryImage/:id', galleryController.getOne)
+
+//////////////// catalog
+router.get('/catalogs', catalogController.getAll)
+router.get('/catalog/:id', catalogController.getOne)
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+//////////////// project category
+router.get('/projectCategories', projectCategoryController.getAll)
+
+//////////////// project
+router.get('/projects', projectController.getAll)
+router.get('/project/:id', projectController.getOne)
+
+//////////////// team
+router.get('/teams', teamController.getAll)
+router.get('/team/:id', teamController.getOne)
+
+//////////////// customer comment
+router.get('/comments', customerCommentController.getAll)
+
+//////////////// slider
+router.get('/slides', sliderController.getAll)
+router.get('/slide/:id', sliderController.getOne)
+
+// router.get('/addExel' , projectController.addExel)
+
+//////////////// search
+router.post('/search' , siteSettingController.search)
+
+////////////// site setting
+router.get('/cover' , siteSettingController.getAllByUser)
+
+module.exports = router
diff --git a/server/users.json b/server/users.json
new file mode 100644
index 0000000..b785a46
--- /dev/null
+++ b/server/users.json
@@ -0,0 +1,37 @@
+[{
+ "_id": {
+ "$oid": "60b3afe00462d2f8938d1077"
+ },
+ "scope": [
+ "admin"
+ ],
+ "username": "negareh_support",
+ "password": "$2a$10$Oz6i2zBMsY/cq.c7Uh6G3e8Vu3.sJ3zx8QKhZSdO8hlDi6rmaB1S.",
+ "created_at": {
+ "$date": "2021-05-30T15:31:44.592Z"
+ },
+ "updated_at": {
+ "$date": "2024-06-30T06:01:04.161Z"
+ },
+ "__v": 0,
+ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MGIzYWZlMDA0NjJkMmY4OTM4ZDEwNzciLCJpYXQiOjE3MTk3MjcyNjQsImV4cCI6MTcyMDMzMjA2NH0.eLhlyzTz_VuJRlJzJH3WwXPcnp5vZ93pKLxFtfoKYaw",
+ "first_name": "negar"
+},
+{
+ "_id": {
+ "$oid": "60b3afe00462d2f8938d1078"
+ },
+ "scope": [
+ "admin"
+ ],
+ "username": "orisoxin_admin",
+ "password": "$2a$10$og3eV.bfirfzGv.pc/.tvOZ7cKvD3JRmAYHyy8vM0dCt/vkIdh3GW",
+ "created_at": {
+ "$date": "2021-05-30T15:31:44.786Z"
+ },
+ "updated_at": {
+ "$date": "2023-04-24T10:21:20.573Z"
+ },
+ "__v": 0,
+ "token": null
+}]
\ No newline at end of file
diff --git a/static/DEISEL.pdf b/static/DEISEL.pdf
new file mode 100644
index 0000000..07fe1f9
Binary files /dev/null and b/static/DEISEL.pdf differ
diff --git a/static/SRP.pdf b/static/SRP.pdf
new file mode 100644
index 0000000..438aa14
Binary files /dev/null and b/static/SRP.pdf differ
diff --git a/static/css/bootstrap-grid.min.css b/static/css/bootstrap-grid.min.css
new file mode 100644
index 0000000..5be0177
--- /dev/null
+++ b/static/css/bootstrap-grid.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap Grid v5.0.0-beta1 (https://getbootstrap.com/)
+ * Copyright 2011-2020 The Bootstrap Authors
+ * Copyright 2011-2020 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;box-sizing: border-box;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x)/ -2);margin-left:calc(var(--bs-gutter-x)/ -2)}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)/ 2);padding-left:calc(var(--bs-gutter-x)/ 2);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.3333333333%}.col-2{flex:0 0 auto;width:16.6666666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.3333333333%}.col-5{flex:0 0 auto;width:41.6666666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.3333333333%}.col-8{flex:0 0 auto;width:66.6666666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.3333333333%}.col-11{flex:0 0 auto;width:91.6666666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.3333333333%}.col-sm-2{flex:0 0 auto;width:16.6666666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.3333333333%}.col-sm-5{flex:0 0 auto;width:41.6666666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.3333333333%}.col-sm-8{flex:0 0 auto;width:66.6666666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.3333333333%}.col-sm-11{flex:0 0 auto;width:91.6666666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.3333333333%}.col-md-2{flex:0 0 auto;width:16.6666666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.3333333333%}.col-md-5{flex:0 0 auto;width:41.6666666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.3333333333%}.col-md-8{flex:0 0 auto;width:66.6666666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.3333333333%}.col-md-11{flex:0 0 auto;width:91.6666666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.3333333333%}.col-lg-2{flex:0 0 auto;width:16.6666666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.3333333333%}.col-lg-5{flex:0 0 auto;width:41.6666666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.3333333333%}.col-lg-8{flex:0 0 auto;width:66.6666666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.3333333333%}.col-lg-11{flex:0 0 auto;width:91.6666666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.3333333333%}.col-xl-2{flex:0 0 auto;width:16.6666666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.3333333333%}.col-xl-5{flex:0 0 auto;width:41.6666666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.3333333333%}.col-xl-8{flex:0 0 auto;width:66.6666666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.3333333333%}.col-xl-11{flex:0 0 auto;width:91.6666666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.3333333333%}.col-xxl-2{flex:0 0 auto;width:16.6666666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.3333333333%}.col-xxl-5{flex:0 0 auto;width:41.6666666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.3333333333%}.col-xxl-8{flex:0 0 auto;width:66.6666666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.3333333333%}.col-xxl-11{flex:0 0 auto;width:91.6666666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.3333333333%}.offset-xxl-2{margin-left:16.6666666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.3333333333%}.offset-xxl-5{margin-left:41.6666666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.3333333333%}.offset-xxl-8{margin-left:66.6666666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.3333333333%}.offset-xxl-11{margin-left:91.6666666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
+/*# sourceMappingURL=bootstrap-grid.min.css.map */
diff --git a/static/css/fontawesome/css/all.min.css b/static/css/fontawesome/css/all.min.css
new file mode 100644
index 0000000..0998088
--- /dev/null
+++ b/static/css/fontawesome/css/all.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Font Awesome Pro 5.12.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Commercial License)
+ * www.Ulabs.ir
+ */
+.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-abacus:before{content:"\f640"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acorn:before{content:"\f6ae"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-conditioner:before{content:"\f8f4"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-alarm-clock:before{content:"\f34e"}.fa-alarm-exclamation:before{content:"\f843"}.fa-alarm-plus:before{content:"\f844"}.fa-alarm-snooze:before{content:"\f845"}.fa-album:before{content:"\f89f"}.fa-album-collection:before{content:"\f8a0"}.fa-algolia:before{content:"\f36c"}.fa-alicorn:before{content:"\f6b0"}.fa-alien:before{content:"\f8f5"}.fa-alien-monster:before{content:"\f8f6"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-align-slash:before{content:"\f846"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-amp-guitar:before{content:"\f8a1"}.fa-analytics:before{content:"\f643"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angel:before{content:"\f779"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-crate:before{content:"\f6b1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-alt-down:before{content:"\f354"}.fa-arrow-alt-from-bottom:before{content:"\f346"}.fa-arrow-alt-from-left:before{content:"\f347"}.fa-arrow-alt-from-right:before{content:"\f348"}.fa-arrow-alt-from-top:before{content:"\f349"}.fa-arrow-alt-left:before{content:"\f355"}.fa-arrow-alt-right:before{content:"\f356"}.fa-arrow-alt-square-down:before{content:"\f350"}.fa-arrow-alt-square-left:before{content:"\f351"}.fa-arrow-alt-square-right:before{content:"\f352"}.fa-arrow-alt-square-up:before{content:"\f353"}.fa-arrow-alt-to-bottom:before{content:"\f34a"}.fa-arrow-alt-to-left:before{content:"\f34b"}.fa-arrow-alt-to-right:before{content:"\f34c"}.fa-arrow-alt-to-top:before{content:"\f34d"}.fa-arrow-alt-up:before{content:"\f357"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-from-bottom:before{content:"\f342"}.fa-arrow-from-left:before{content:"\f343"}.fa-arrow-from-right:before{content:"\f344"}.fa-arrow-from-top:before{content:"\f345"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-square-down:before{content:"\f339"}.fa-arrow-square-left:before{content:"\f33a"}.fa-arrow-square-right:before{content:"\f33b"}.fa-arrow-square-up:before{content:"\f33c"}.fa-arrow-to-bottom:before{content:"\f33d"}.fa-arrow-to-left:before{content:"\f33e"}.fa-arrow-to-right:before{content:"\f340"}.fa-arrow-to-top:before{content:"\f341"}.fa-arrow-up:before{content:"\f062"}.fa-arrows:before{content:"\f047"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-arrows-h:before{content:"\f07e"}.fa-arrows-v:before{content:"\f07d"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-atom-alt:before{content:"\f5d3"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-axe:before{content:"\f6b2"}.fa-axe-battle:before{content:"\f6b3"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backpack:before{content:"\f5d4"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-badge:before{content:"\f335"}.fa-badge-check:before{content:"\f336"}.fa-badge-dollar:before{content:"\f645"}.fa-badge-percent:before{content:"\f646"}.fa-badge-sheriff:before{content:"\f8a2"}.fa-badger-honey:before{content:"\f6b4"}.fa-bags-shopping:before{content:"\f847"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ball-pile:before{content:"\f77e"}.fa-ballot:before{content:"\f732"}.fa-ballot-check:before{content:"\f733"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-banjo:before{content:"\f8a3"}.fa-barcode:before{content:"\f02a"}.fa-barcode-alt:before{content:"\f463"}.fa-barcode-read:before{content:"\f464"}.fa-barcode-scan:before{content:"\f465"}.fa-bars:before{content:"\f0c9"}.fa-baseball:before{content:"\f432"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-basketball-hoop:before{content:"\f435"}.fa-bat:before{content:"\f6b5"}.fa-bath:before{content:"\f2cd"}.fa-battery-bolt:before{content:"\f376"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-slash:before{content:"\f377"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-bed-alt:before{content:"\f8f7"}.fa-bed-bunk:before{content:"\f8f8"}.fa-bed-empty:before{content:"\f8f9"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-exclamation:before{content:"\f848"}.fa-bell-on:before{content:"\f8fa"}.fa-bell-plus:before{content:"\f849"}.fa-bell-school:before{content:"\f5d5"}.fa-bell-school-slash:before{content:"\f5d6"}.fa-bell-slash:before{content:"\f1f6"}.fa-bells:before{content:"\f77f"}.fa-betamax:before{content:"\f8a4"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-biking-mountain:before{content:"\f84b"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blanket:before{content:"\f498"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blinds:before{content:"\f8fb"}.fa-blinds-open:before{content:"\f8fc"}.fa-blinds-raised:before{content:"\f8fd"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bone-break:before{content:"\f5d8"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-alt:before{content:"\f5d9"}.fa-book-dead:before{content:"\f6b7"}.fa-book-heart:before{content:"\f499"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-book-spells:before{content:"\f6b8"}.fa-book-user:before{content:"\f7e7"}.fa-bookmark:before{content:"\f02e"}.fa-books:before{content:"\f5db"}.fa-books-medical:before{content:"\f7e8"}.fa-boombox:before{content:"\f8a5"}.fa-boot:before{content:"\f782"}.fa-booth-curtain:before{content:"\f734"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-bottom:before{content:"\f84d"}.fa-border-center-h:before{content:"\f89c"}.fa-border-center-v:before{content:"\f89d"}.fa-border-inner:before{content:"\f84e"}.fa-border-left:before{content:"\f84f"}.fa-border-none:before{content:"\f850"}.fa-border-outer:before{content:"\f851"}.fa-border-right:before{content:"\f852"}.fa-border-style:before{content:"\f853"}.fa-border-style-alt:before{content:"\f854"}.fa-border-top:before{content:"\f855"}.fa-bow-arrow:before{content:"\f6b9"}.fa-bowling-ball:before{content:"\f436"}.fa-bowling-pins:before{content:"\f437"}.fa-box:before{content:"\f466"}.fa-box-alt:before{content:"\f49a"}.fa-box-ballot:before{content:"\f735"}.fa-box-check:before{content:"\f467"}.fa-box-fragile:before{content:"\f49b"}.fa-box-full:before{content:"\f49c"}.fa-box-heart:before{content:"\f49d"}.fa-box-open:before{content:"\f49e"}.fa-box-up:before{content:"\f49f"}.fa-box-usd:before{content:"\f4a0"}.fa-boxes:before{content:"\f468"}.fa-boxes-alt:before{content:"\f4a1"}.fa-boxing-glove:before{content:"\f438"}.fa-brackets:before{content:"\f7e9"}.fa-brackets-curly:before{content:"\f7ea"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-loaf:before{content:"\f7eb"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-bring-forward:before{content:"\f856"}.fa-bring-front:before{content:"\f857"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-browser:before{content:"\f37e"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-bullseye-arrow:before{content:"\f648"}.fa-bullseye-pointer:before{content:"\f649"}.fa-burger-soda:before{content:"\f858"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-burrito:before{content:"\f7ed"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-bus-school:before{content:"\f5dd"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-cabinet-filing:before{content:"\f64b"}.fa-cactus:before{content:"\f8a7"}.fa-calculator:before{content:"\f1ec"}.fa-calculator-alt:before{content:"\f64c"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-edit:before{content:"\f333"}.fa-calendar-exclamation:before{content:"\f334"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-star:before{content:"\f736"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camcorder:before{content:"\f8a8"}.fa-camera:before{content:"\f030"}.fa-camera-alt:before{content:"\f332"}.fa-camera-home:before{content:"\f8fe"}.fa-camera-movie:before{content:"\f8a9"}.fa-camera-polaroid:before{content:"\f8aa"}.fa-camera-retro:before{content:"\f083"}.fa-campfire:before{content:"\f6ba"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candle-holder:before{content:"\f6bc"}.fa-candy-cane:before{content:"\f786"}.fa-candy-corn:before{content:"\f6bd"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-building:before{content:"\f859"}.fa-car-bump:before{content:"\f5e0"}.fa-car-bus:before{content:"\f85a"}.fa-car-crash:before{content:"\f5e1"}.fa-car-garage:before{content:"\f5e2"}.fa-car-mechanic:before{content:"\f5e3"}.fa-car-side:before{content:"\f5e4"}.fa-car-tilt:before{content:"\f5e5"}.fa-car-wash:before{content:"\f5e6"}.fa-caravan:before{content:"\f8ff"}.fa-caravan-alt:before{content:"\f900"}.fa-caret-circle-down:before{content:"\f32d"}.fa-caret-circle-left:before{content:"\f32e"}.fa-caret-circle-right:before{content:"\f330"}.fa-caret-circle-up:before{content:"\f331"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cars:before{content:"\f85b"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cassette-tape:before{content:"\f8ab"}.fa-cat:before{content:"\f6be"}.fa-cat-space:before{content:"\f901"}.fa-cauldron:before{content:"\f6bf"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-cctv:before{content:"\f8ac"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chair-office:before{content:"\f6c1"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-line-down:before{content:"\f64d"}.fa-chart-network:before{content:"\f78a"}.fa-chart-pie:before{content:"\f200"}.fa-chart-pie-alt:before{content:"\f64e"}.fa-chart-scatter:before{content:"\f7ee"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-cheese-swiss:before{content:"\f7f0"}.fa-cheeseburger:before{content:"\f7f1"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-bishop-alt:before{content:"\f43b"}.fa-chess-board:before{content:"\f43c"}.fa-chess-clock:before{content:"\f43d"}.fa-chess-clock-alt:before{content:"\f43e"}.fa-chess-king:before{content:"\f43f"}.fa-chess-king-alt:before{content:"\f440"}.fa-chess-knight:before{content:"\f441"}.fa-chess-knight-alt:before{content:"\f442"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-pawn-alt:before{content:"\f444"}.fa-chess-queen:before{content:"\f445"}.fa-chess-queen-alt:before{content:"\f446"}.fa-chess-rook:before{content:"\f447"}.fa-chess-rook-alt:before{content:"\f448"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-double-down:before{content:"\f322"}.fa-chevron-double-left:before{content:"\f323"}.fa-chevron-double-right:before{content:"\f324"}.fa-chevron-double-up:before{content:"\f325"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-square-down:before{content:"\f329"}.fa-chevron-square-left:before{content:"\f32a"}.fa-chevron-square-right:before{content:"\f32b"}.fa-chevron-square-up:before{content:"\f32c"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chimney:before{content:"\f78b"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clarinet:before{content:"\f8ad"}.fa-claw-marks:before{content:"\f6c2"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clipboard-list-check:before{content:"\f737"}.fa-clipboard-prescription:before{content:"\f5e8"}.fa-clipboard-user:before{content:"\f7f3"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-drizzle:before{content:"\f738"}.fa-cloud-hail:before{content:"\f739"}.fa-cloud-hail-mixed:before{content:"\f73a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-music:before{content:"\f8ae"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-rainbow:before{content:"\f73e"}.fa-cloud-showers:before{content:"\f73f"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sleet:before{content:"\f741"}.fa-cloud-snow:before{content:"\f742"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-clouds:before{content:"\f744"}.fa-clouds-moon:before{content:"\f745"}.fa-clouds-sun:before{content:"\f746"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-club:before{content:"\f327"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-merge:before{content:"\f387"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-coffee-pot:before{content:"\f902"}.fa-coffee-togo:before{content:"\f6c5"}.fa-coffin:before{content:"\f6c6"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coin:before{content:"\f85c"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comet:before{content:"\f903"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-alt-check:before{content:"\f4a2"}.fa-comment-alt-dollar:before{content:"\f650"}.fa-comment-alt-dots:before{content:"\f4a3"}.fa-comment-alt-edit:before{content:"\f4a4"}.fa-comment-alt-exclamation:before{content:"\f4a5"}.fa-comment-alt-lines:before{content:"\f4a6"}.fa-comment-alt-medical:before{content:"\f7f4"}.fa-comment-alt-minus:before{content:"\f4a7"}.fa-comment-alt-music:before{content:"\f8af"}.fa-comment-alt-plus:before{content:"\f4a8"}.fa-comment-alt-slash:before{content:"\f4a9"}.fa-comment-alt-smile:before{content:"\f4aa"}.fa-comment-alt-times:before{content:"\f4ab"}.fa-comment-check:before{content:"\f4ac"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-edit:before{content:"\f4ae"}.fa-comment-exclamation:before{content:"\f4af"}.fa-comment-lines:before{content:"\f4b0"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-minus:before{content:"\f4b1"}.fa-comment-music:before{content:"\f8b0"}.fa-comment-plus:before{content:"\f4b2"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-smile:before{content:"\f4b4"}.fa-comment-times:before{content:"\f4b5"}.fa-comments:before{content:"\f086"}.fa-comments-alt:before{content:"\f4b6"}.fa-comments-alt-dollar:before{content:"\f652"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-slash:before{content:"\f5e9"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-compress-wide:before{content:"\f326"}.fa-computer-classic:before{content:"\f8b1"}.fa-computer-speaker:before{content:"\f8b2"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-construction:before{content:"\f85d"}.fa-container-storage:before{content:"\f4b7"}.fa-contao:before{content:"\f26d"}.fa-conveyor-belt:before{content:"\f46e"}.fa-conveyor-belt-alt:before{content:"\f46f"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-corn:before{content:"\f6c7"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cow:before{content:"\f6c8"}.fa-cowbell:before{content:"\f8b3"}.fa-cowbell-more:before{content:"\f8b4"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-credit-card-blank:before{content:"\f389"}.fa-credit-card-front:before{content:"\f38a"}.fa-cricket:before{content:"\f449"}.fa-critical-role:before{content:"\f6c9"}.fa-croissant:before{content:"\f7f6"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-crutches:before{content:"\f7f8"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-curling:before{content:"\f44a"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dagger:before{content:"\f6cb"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-debug:before{content:"\f7f9"}.fa-deer:before{content:"\f78e"}.fa-deer-rudolph:before{content:"\f78f"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-desktop-alt:before{content:"\f390"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dewpoint:before{content:"\f748"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diamond:before{content:"\f219"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d10:before{content:"\f6cd"}.fa-dice-d12:before{content:"\f6ce"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d4:before{content:"\f6d0"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-d8:before{content:"\f6d2"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digging:before{content:"\f85e"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-diploma:before{content:"\f5ea"}.fa-directions:before{content:"\f5eb"}.fa-disc-drive:before{content:"\f8b5"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-do-not-enter:before{content:"\f5ec"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dog-leashed:before{content:"\f6d4"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-empty:before{content:"\f473"}.fa-dolly-flatbed:before{content:"\f474"}.fa-dolly-flatbed-alt:before{content:"\f475"}.fa-dolly-flatbed-empty:before{content:"\f476"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-circle:before{content:"\f5ed"}.fa-draw-polygon:before{content:"\f5ee"}.fa-draw-square:before{content:"\f5ef"}.fa-dreidel:before{content:"\f792"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-drone:before{content:"\f85f"}.fa-drone-alt:before{content:"\f860"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick:before{content:"\f6d6"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dryer:before{content:"\f861"}.fa-dryer-alt:before{content:"\f862"}.fa-duck:before{content:"\f6d8"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-ear:before{content:"\f5f0"}.fa-ear-muffs:before{content:"\f795"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-eclipse:before{content:"\f749"}.fa-eclipse-alt:before{content:"\f74a"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-egg-fried:before{content:"\f7fc"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-elephant:before{content:"\f6da"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-h-alt:before{content:"\f39b"}.fa-ellipsis-v:before{content:"\f142"}.fa-ellipsis-v-alt:before{content:"\f39c"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-empty-set:before{content:"\f656"}.fa-engine-warning:before{content:"\f5f2"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-dollar:before{content:"\f657"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange:before{content:"\f0ec"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-square:before{content:"\f321"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows:before{content:"\f31d"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expand-wide:before{content:"\f320"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link:before{content:"\f08e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square:before{content:"\f14c"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-evil:before{content:"\f6db"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fan-table:before{content:"\f904"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-farm:before{content:"\f864"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\f905"}.fa-faucet-drip:before{content:"\f906"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-field-hockey:before{content:"\f44c"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-certificate:before{content:"\f5f3"}.fa-file-chart-line:before{content:"\f659"}.fa-file-chart-pie:before{content:"\f65a"}.fa-file-check:before{content:"\f316"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-edit:before{content:"\f31c"}.fa-file-excel:before{content:"\f1c3"}.fa-file-exclamation:before{content:"\f31a"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-minus:before{content:"\f318"}.fa-file-music:before{content:"\f8b6"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-plus:before{content:"\f319"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-search:before{content:"\f865"}.fa-file-signature:before{content:"\f573"}.fa-file-spreadsheet:before{content:"\f65b"}.fa-file-times:before{content:"\f317"}.fa-file-upload:before{content:"\f574"}.fa-file-user:before{content:"\f65c"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-files-medical:before{content:"\f7fd"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-film-alt:before{content:"\f3a0"}.fa-film-canister:before{content:"\f8b7"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-smoke:before{content:"\f74b"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-fireplace:before{content:"\f79a"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fish-cooked:before{content:"\f7fe"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-alt:before{content:"\f74c"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flame:before{content:"\f6df"}.fa-flashlight:before{content:"\f8b8"}.fa-flask:before{content:"\f0c3"}.fa-flask-poison:before{content:"\f6e0"}.fa-flask-potion:before{content:"\f6e1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flower:before{content:"\f7ff"}.fa-flower-daffodil:before{content:"\f800"}.fa-flower-tulip:before{content:"\f801"}.fa-flushed:before{content:"\f579"}.fa-flute:before{content:"\f8b9"}.fa-flux-capacitor:before{content:"\f8ba"}.fa-fly:before{content:"\f417"}.fa-fog:before{content:"\f74e"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-times:before{content:"\f65f"}.fa-folder-tree:before{content:"\f802"}.fa-folders:before{content:"\f660"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-font-case:before{content:"\f866"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-football-helmet:before{content:"\f44f"}.fa-forklift:before{content:"\f47a"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-fragile:before{content:"\f4bb"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-french-fries:before{content:"\f803"}.fa-frog:before{content:"\f52e"}.fa-frosty-head:before{content:"\f79b"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-function:before{content:"\f661"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-galaxy:before{content:"\f908"}.fa-game-board:before{content:"\f867"}.fa-game-board-alt:before{content:"\f868"}.fa-game-console-handheld:before{content:"\f8bb"}.fa-gamepad:before{content:"\f11b"}.fa-gamepad-alt:before{content:"\f8bc"}.fa-garage:before{content:"\f909"}.fa-garage-car:before{content:"\f90a"}.fa-garage-open:before{content:"\f90b"}.fa-gas-pump:before{content:"\f52f"}.fa-gas-pump-slash:before{content:"\f5f4"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gift-card:before{content:"\f663"}.fa-gifts:before{content:"\f79c"}.fa-gingerbread-man:before{content:"\f79d"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass:before{content:"\f804"}.fa-glass-champagne:before{content:"\f79e"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-citrus:before{content:"\f869"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glass-whiskey-rocks:before{content:"\f7a1"}.fa-glasses:before{content:"\f530"}.fa-glasses-alt:before{content:"\f5f5"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-globe-snow:before{content:"\f7a3"}.fa-globe-stand:before{content:"\f5f6"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-golf-club:before{content:"\f451"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gramophone:before{content:"\f8bd"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-guitar-electric:before{content:"\f8be"}.fa-guitars:before{content:"\f8bf"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-h1:before{content:"\f313"}.fa-h2:before{content:"\f314"}.fa-h3:before{content:"\f315"}.fa-h4:before{content:"\f86a"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hammer-war:before{content:"\f6e4"}.fa-hamsa:before{content:"\f665"}.fa-hand-heart:before{content:"\f4bc"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-box:before{content:"\f47b"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-magic:before{content:"\f6e5"}.fa-hand-holding-seedling:before{content:"\f4bf"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-receiving:before{content:"\f47c"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-heart:before{content:"\f4c3"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-usd:before{content:"\f4c5"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt:before{content:"\f4c6"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-chef:before{content:"\f86b"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-santa:before{content:"\f7a7"}.fa-hat-winter:before{content:"\f7a8"}.fa-hat-witch:before{content:"\f6e7"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side:before{content:"\f6e9"}.fa-head-side-brain:before{content:"\f808"}.fa-head-side-headphones:before{content:"\f8c2"}.fa-head-side-medical:before{content:"\f809"}.fa-head-vr:before{content:"\f6ea"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heart-circle:before{content:"\f4c7"}.fa-heart-rate:before{content:"\f5f8"}.fa-heart-square:before{content:"\f4c8"}.fa-heartbeat:before{content:"\f21e"}.fa-heat:before{content:"\f90c"}.fa-helicopter:before{content:"\f533"}.fa-helmet-battle:before{content:"\f6eb"}.fa-hexagon:before{content:"\f312"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-mask:before{content:"\f6ee"}.fa-hockey-puck:before{content:"\f453"}.fa-hockey-sticks:before{content:"\f454"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-home-alt:before{content:"\f80a"}.fa-home-heart:before{content:"\f4c9"}.fa-home-lg:before{content:"\f80b"}.fa-home-lg-alt:before{content:"\f80c"}.fa-hood-cloak:before{content:"\f6ef"}.fa-hooli:before{content:"\f427"}.fa-horizontal-rule:before{content:"\f86c"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-horse-saddle:before{content:"\f8c3"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hospitals:before{content:"\f80e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house:before{content:"\f90d"}.fa-house-damage:before{content:"\f6f1"}.fa-house-day:before{content:"\f90e"}.fa-house-flood:before{content:"\f74f"}.fa-house-leave:before{content:"\f90f"}.fa-house-night:before{content:"\f910"}.fa-house-return:before{content:"\f911"}.fa-house-signal:before{content:"\f912"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-humidity:before{content:"\f750"}.fa-hurricane:before{content:"\f751"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-ice-skate:before{content:"\f7ac"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-icons-alt:before{content:"\f86e"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-polaroid:before{content:"\f8c4"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-inbox-in:before{content:"\f310"}.fa-inbox-out:before{content:"\f311"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-industry-alt:before{content:"\f3b3"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-info-square:before{content:"\f30f"}.fa-inhaler:before{content:"\f5f9"}.fa-instagram:before{content:"\f16d"}.fa-integral:before{content:"\f667"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-intersection:before{content:"\f668"}.fa-inventory:before{content:"\f480"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-island-tropical:before{content:"\f811"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-jack-o-lantern:before{content:"\f30e"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-joystick:before{content:"\f8c5"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-jug:before{content:"\f8c6"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-kazoo:before{content:"\f8c7"}.fa-kerning:before{content:"\f86f"}.fa-key:before{content:"\f084"}.fa-key-skeleton:before{content:"\f6f3"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-keynote:before{content:"\f66c"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kidneys:before{content:"\f5fb"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kite:before{content:"\f6f4"}.fa-kiwi-bird:before{content:"\f535"}.fa-knife-kitchen:before{content:"\f6f5"}.fa-korvue:before{content:"\f42f"}.fa-lambda:before{content:"\f66e"}.fa-lamp:before{content:"\f4ca"}.fa-lamp-desk:before{content:"\f914"}.fa-lamp-floor:before{content:"\f915"}.fa-landmark:before{content:"\f66f"}.fa-landmark-alt:before{content:"\f752"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lasso:before{content:"\f8c8"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-layer-minus:before{content:"\f5fe"}.fa-layer-plus:before{content:"\f5ff"}.fa-leaf:before{content:"\f06c"}.fa-leaf-heart:before{content:"\f4cb"}.fa-leaf-maple:before{content:"\f6f6"}.fa-leaf-oak:before{content:"\f6f7"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down:before{content:"\f149"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up:before{content:"\f148"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-light-ceiling:before{content:"\f916"}.fa-light-switch:before{content:"\f917"}.fa-light-switch-off:before{content:"\f918"}.fa-light-switch-on:before{content:"\f919"}.fa-lightbulb:before{content:"\f0eb"}.fa-lightbulb-dollar:before{content:"\f670"}.fa-lightbulb-exclamation:before{content:"\f671"}.fa-lightbulb-on:before{content:"\f672"}.fa-lightbulb-slash:before{content:"\f673"}.fa-lights-holiday:before{content:"\f7b2"}.fa-line:before{content:"\f3c0"}.fa-line-columns:before{content:"\f870"}.fa-line-height:before{content:"\f871"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lips:before{content:"\f600"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-music:before{content:"\f8c9"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location:before{content:"\f601"}.fa-location-arrow:before{content:"\f124"}.fa-location-circle:before{content:"\f602"}.fa-location-slash:before{content:"\f603"}.fa-lock:before{content:"\f023"}.fa-lock-alt:before{content:"\f30d"}.fa-lock-open:before{content:"\f3c1"}.fa-lock-open-alt:before{content:"\f3c2"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-long-arrow-up:before{content:"\f176"}.fa-loveseat:before{content:"\f4cc"}.fa-low-vision:before{content:"\f2a8"}.fa-luchador:before{content:"\f455"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lyft:before{content:"\f3c3"}.fa-mace:before{content:"\f6f8"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailbox:before{content:"\f813"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-mandolin:before{content:"\f6f9"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-marker-alt-slash:before{content:"\f605"}.fa-map-marker-check:before{content:"\f606"}.fa-map-marker-edit:before{content:"\f607"}.fa-map-marker-exclamation:before{content:"\f608"}.fa-map-marker-minus:before{content:"\f609"}.fa-map-marker-plus:before{content:"\f60a"}.fa-map-marker-question:before{content:"\f60b"}.fa-map-marker-slash:before{content:"\f60c"}.fa-map-marker-smile:before{content:"\f60d"}.fa-map-marker-times:before{content:"\f60e"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-meat:before{content:"\f814"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaphone:before{content:"\f675"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microphone-stand:before{content:"\f8cb"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-microwave:before{content:"\f91b"}.fa-mind-share:before{content:"\f677"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-hexagon:before{content:"\f307"}.fa-minus-octagon:before{content:"\f308"}.fa-minus-square:before{content:"\f146"}.fa-mistletoe:before{content:"\f7b4"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-mobile-android:before{content:"\f3ce"}.fa-mobile-android-alt:before{content:"\f3cf"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-money-check-edit:before{content:"\f872"}.fa-money-check-edit-alt:before{content:"\f873"}.fa-monitor-heart-rate:before{content:"\f611"}.fa-monkey:before{content:"\f6fb"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-moon-cloud:before{content:"\f754"}.fa-moon-stars:before{content:"\f755"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mountains:before{content:"\f6fd"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-alt:before{content:"\f8cd"}.fa-mouse-pointer:before{content:"\f245"}.fa-mp3-player:before{content:"\f8ce"}.fa-mug:before{content:"\f874"}.fa-mug-hot:before{content:"\f7b6"}.fa-mug-marshmallows:before{content:"\f7b7"}.fa-mug-tea:before{content:"\f875"}.fa-music:before{content:"\f001"}.fa-music-alt:before{content:"\f8cf"}.fa-music-alt-slash:before{content:"\f8d0"}.fa-music-slash:before{content:"\f8d1"}.fa-napster:before{content:"\f3d2"}.fa-narwhal:before{content:"\f6fe"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octagon:before{content:"\f306"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-oil-temp:before{content:"\f614"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-omega:before{content:"\f67a"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-ornament:before{content:"\f7b8"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-outlet:before{content:"\f91c"}.fa-oven:before{content:"\f91d"}.fa-overline:before{content:"\f876"}.fa-page-break:before{content:"\f877"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-brush-alt:before{content:"\f5a9"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-pallet-alt:before{content:"\f483"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-paragraph-rtl:before{content:"\f878"}.fa-parking:before{content:"\f540"}.fa-parking-circle:before{content:"\f615"}.fa-parking-circle-slash:before{content:"\f616"}.fa-parking-slash:before{content:"\f617"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paw-alt:before{content:"\f701"}.fa-paw-claws:before{content:"\f702"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pegasus:before{content:"\f703"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil:before{content:"\f040"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-paintbrush:before{content:"\f618"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-pennant:before{content:"\f456"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-person-carry:before{content:"\f4cf"}.fa-person-dolly:before{content:"\f4d0"}.fa-person-dolly-empty:before{content:"\f4d1"}.fa-person-sign:before{content:"\f757"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-laptop:before{content:"\f87a"}.fa-phone-office:before{content:"\f67d"}.fa-phone-plus:before{content:"\f4d2"}.fa-phone-rotary:before{content:"\f8d3"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pi:before{content:"\f67e"}.fa-piano:before{content:"\f8d4"}.fa-piano-keyboard:before{content:"\f8d5"}.fa-pie:before{content:"\f705"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-pig:before{content:"\f706"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza:before{content:"\f817"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-alt:before{content:"\f3de"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-planet-moon:before{content:"\f91f"}.fa-planet-ringed:before{content:"\f920"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-hexagon:before{content:"\f300"}.fa-plus-octagon:before{content:"\f301"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-podium:before{content:"\f680"}.fa-podium-star:before{content:"\f758"}.fa-police-box:before{content:"\f921"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poll-people:before{content:"\f759"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-popcorn:before{content:"\f819"}.fa-portal-enter:before{content:"\f922"}.fa-portal-exit:before{content:"\f923"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-presentation:before{content:"\f685"}.fa-print:before{content:"\f02f"}.fa-print-search:before{content:"\f81a"}.fa-print-slash:before{content:"\f686"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-projector:before{content:"\f8d6"}.fa-pumpkin:before{content:"\f707"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-question-square:before{content:"\f2fd"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-rabbit:before{content:"\f708"}.fa-rabbit-fast:before{content:"\f709"}.fa-racquet:before{content:"\f45a"}.fa-radar:before{content:"\f924"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-radio:before{content:"\f8d7"}.fa-radio-alt:before{content:"\f8d8"}.fa-rainbow:before{content:"\f75b"}.fa-raindrops:before{content:"\f75c"}.fa-ram:before{content:"\f70a"}.fa-ramp-loading:before{content:"\f4d4"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-raygun:before{content:"\f925"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-rectangle-landscape:before{content:"\f2fa"}.fa-rectangle-portrait:before{content:"\f2fb"}.fa-rectangle-wide:before{content:"\f2fc"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-refrigerator:before{content:"\f926"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-repeat:before{content:"\f363"}.fa-repeat-1:before{content:"\f365"}.fa-repeat-1-alt:before{content:"\f366"}.fa-repeat-alt:before{content:"\f364"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-retweet-alt:before{content:"\f361"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-rings-wedding:before{content:"\f81b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocket-launch:before{content:"\f927"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-route-highway:before{content:"\f61a"}.fa-route-interstate:before{content:"\f61b"}.fa-router:before{content:"\f8da"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-triangle:before{content:"\f61c"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rv:before{content:"\f7be"}.fa-sack:before{content:"\f81c"}.fa-sack-dollar:before{content:"\f81d"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salad:before{content:"\f81e"}.fa-salesforce:before{content:"\f83b"}.fa-sandwich:before{content:"\f81f"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-sausage:before{content:"\f820"}.fa-save:before{content:"\f0c7"}.fa-sax-hot:before{content:"\f8db"}.fa-saxophone:before{content:"\f8dc"}.fa-scalpel:before{content:"\f61d"}.fa-scalpel-path:before{content:"\f61e"}.fa-scanner:before{content:"\f488"}.fa-scanner-image:before{content:"\f8f3"}.fa-scanner-keyboard:before{content:"\f489"}.fa-scanner-touchscreen:before{content:"\f48a"}.fa-scarecrow:before{content:"\f70d"}.fa-scarf:before{content:"\f7c1"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-scroll-old:before{content:"\f70f"}.fa-scrubber:before{content:"\f2f8"}.fa-scythe:before{content:"\f710"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-send-back:before{content:"\f87e"}.fa-send-backward:before{content:"\f87f"}.fa-sensor:before{content:"\f928"}.fa-sensor-alert:before{content:"\f929"}.fa-sensor-fire:before{content:"\f92a"}.fa-sensor-on:before{content:"\f92b"}.fa-sensor-smoke:before{content:"\f92c"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-all:before{content:"\f367"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-sheep:before{content:"\f711"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield:before{content:"\f132"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-check:before{content:"\f2f7"}.fa-shield-cross:before{content:"\f712"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shipping-timed:before{content:"\f48c"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shish-kebab:before{content:"\f821"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shovel:before{content:"\f713"}.fa-shovel-snow:before{content:"\f7c3"}.fa-shower:before{content:"\f2cc"}.fa-shredder:before{content:"\f68a"}.fa-shuttle-van:before{content:"\f5b6"}.fa-shuttlecock:before{content:"\f45b"}.fa-sickle:before{content:"\f822"}.fa-sigma:before{content:"\f68b"}.fa-sign:before{content:"\f4d9"}.fa-sign-in:before{content:"\f090"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out:before{content:"\f08b"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signal-1:before{content:"\f68c"}.fa-signal-2:before{content:"\f68d"}.fa-signal-3:before{content:"\f68e"}.fa-signal-4:before{content:"\f68f"}.fa-signal-alt:before{content:"\f690"}.fa-signal-alt-1:before{content:"\f691"}.fa-signal-alt-2:before{content:"\f692"}.fa-signal-alt-3:before{content:"\f693"}.fa-signal-alt-slash:before{content:"\f694"}.fa-signal-slash:before{content:"\f695"}.fa-signal-stream:before{content:"\f8dd"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-siren:before{content:"\f92d"}.fa-siren-on:before{content:"\f92e"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-skeleton:before{content:"\f620"}.fa-sketch:before{content:"\f7c6"}.fa-ski-jump:before{content:"\f7c7"}.fa-ski-lift:before{content:"\f7c8"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-cow:before{content:"\f8de"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sledding:before{content:"\f7cb"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-sliders-h-square:before{content:"\f3f0"}.fa-sliders-v:before{content:"\f3f1"}.fa-sliders-v-square:before{content:"\f3f2"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-plus:before{content:"\f5b9"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoke:before{content:"\f760"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snake:before{content:"\f716"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snooze:before{content:"\f880"}.fa-snow-blowing:before{content:"\f761"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowflakes:before{content:"\f7cf"}.fa-snowman:before{content:"\f7d0"}.fa-snowmobile:before{content:"\f7d1"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-solar-system:before{content:"\f92f"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-alt:before{content:"\f883"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-circle:before{content:"\f930"}.fa-sort-circle-down:before{content:"\f931"}.fa-sort-circle-up:before{content:"\f932"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-shapes-down:before{content:"\f888"}.fa-sort-shapes-down-alt:before{content:"\f889"}.fa-sort-shapes-up:before{content:"\f88a"}.fa-sort-shapes-up-alt:before{content:"\f88b"}.fa-sort-size-down:before{content:"\f88c"}.fa-sort-size-down-alt:before{content:"\f88d"}.fa-sort-size-up:before{content:"\f88e"}.fa-sort-size-up-alt:before{content:"\f88f"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-soup:before{content:"\f823"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-space-station-moon:before{content:"\f933"}.fa-space-station-moon-alt:before{content:"\f934"}.fa-spade:before{content:"\f2f4"}.fa-sparkles:before{content:"\f890"}.fa-speakap:before{content:"\f3f3"}.fa-speaker:before{content:"\f8df"}.fa-speaker-deck:before{content:"\f83c"}.fa-speakers:before{content:"\f8e0"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spider-black-widow:before{content:"\f718"}.fa-spider-web:before{content:"\f719"}.fa-spinner:before{content:"\f110"}.fa-spinner-third:before{content:"\f3f4"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-sprinkler:before{content:"\f935"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root:before{content:"\f697"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-squirrel:before{content:"\f71a"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staff:before{content:"\f71b"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-christmas:before{content:"\f7d4"}.fa-star-exclamation:before{content:"\f2f3"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-star-shooting:before{content:"\f936"}.fa-starfighter:before{content:"\f937"}.fa-starfighter-alt:before{content:"\f938"}.fa-stars:before{content:"\f762"}.fa-starship:before{content:"\f939"}.fa-starship-freighter:before{content:"\f93a"}.fa-staylinked:before{content:"\f3f5"}.fa-steak:before{content:"\f824"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-steering-wheel:before{content:"\f622"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stocking:before{content:"\f7d5"}.fa-stomach:before{content:"\f623"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-stretcher:before{content:"\f825"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-sun-cloud:before{content:"\f763"}.fa-sun-dust:before{content:"\f764"}.fa-sun-haze:before{content:"\f765"}.fa-sunglasses:before{content:"\f892"}.fa-sunrise:before{content:"\f766"}.fa-sunset:before{content:"\f767"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-sword:before{content:"\f71c"}.fa-sword-laser:before{content:"\f93b"}.fa-sword-laser-alt:before{content:"\f93c"}.fa-swords:before{content:"\f71d"}.fa-swords-laser:before{content:"\f93d"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablet-android:before{content:"\f3fb"}.fa-tablet-android-alt:before{content:"\f3fc"}.fa-tablet-rugged:before{content:"\f48f"}.fa-tablets:before{content:"\f490"}.fa-tachometer:before{content:"\f0e4"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tachometer-alt-average:before{content:"\f624"}.fa-tachometer-alt-fast:before{content:"\f625"}.fa-tachometer-alt-fastest:before{content:"\f626"}.fa-tachometer-alt-slow:before{content:"\f627"}.fa-tachometer-alt-slowest:before{content:"\f628"}.fa-tachometer-average:before{content:"\f629"}.fa-tachometer-fast:before{content:"\f62a"}.fa-tachometer-fastest:before{content:"\f62b"}.fa-tachometer-slow:before{content:"\f62c"}.fa-tachometer-slowest:before{content:"\f62d"}.fa-taco:before{content:"\f826"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tally:before{content:"\f69c"}.fa-tanakh:before{content:"\f827"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-tasks-alt:before{content:"\f828"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-telescope:before{content:"\f93e"}.fa-temperature-down:before{content:"\f93f"}.fa-temperature-frigid:before{content:"\f768"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-hot:before{content:"\f76a"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-up:before{content:"\f940"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-tennis-ball:before{content:"\f45e"}.fa-terminal:before{content:"\f120"}.fa-text:before{content:"\f893"}.fa-text-height:before{content:"\f034"}.fa-text-size:before{content:"\f894"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-theta:before{content:"\f69e"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-thunderstorm:before{content:"\f76c"}.fa-thunderstorm-moon:before{content:"\f76d"}.fa-thunderstorm-sun:before{content:"\f76e"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tilde:before{content:"\f69f"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-times-hexagon:before{content:"\f2ee"}.fa-times-octagon:before{content:"\f2f0"}.fa-times-square:before{content:"\f2d3"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tire:before{content:"\f631"}.fa-tire-flat:before{content:"\f632"}.fa-tire-pressure-warning:before{content:"\f633"}.fa-tire-rugged:before{content:"\f634"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-alt:before{content:"\f71f"}.fa-tombstone:before{content:"\f720"}.fa-tombstone-alt:before{content:"\f721"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-toothbrush:before{content:"\f635"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tornado:before{content:"\f76f"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-cone:before{content:"\f636"}.fa-traffic-light:before{content:"\f637"}.fa-traffic-light-go:before{content:"\f638"}.fa-traffic-light-slow:before{content:"\f639"}.fa-traffic-light-stop:before{content:"\f63a"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-transporter:before{content:"\f942"}.fa-transporter-1:before{content:"\f943"}.fa-transporter-2:before{content:"\f944"}.fa-transporter-3:before{content:"\f945"}.fa-transporter-empty:before{content:"\f946"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-trash-undo:before{content:"\f895"}.fa-trash-undo-alt:before{content:"\f896"}.fa-treasure-chest:before{content:"\f723"}.fa-tree:before{content:"\f1bb"}.fa-tree-alt:before{content:"\f400"}.fa-tree-christmas:before{content:"\f7db"}.fa-tree-decorated:before{content:"\f7dc"}.fa-tree-large:before{content:"\f7dd"}.fa-tree-palm:before{content:"\f82b"}.fa-trees:before{content:"\f724"}.fa-trello:before{content:"\f181"}.fa-triangle:before{content:"\f2ec"}.fa-triangle-music:before{content:"\f8e2"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-trophy-alt:before{content:"\f2eb"}.fa-truck:before{content:"\f0d1"}.fa-truck-container:before{content:"\f4dc"}.fa-truck-couch:before{content:"\f4dd"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-plow:before{content:"\f7de"}.fa-truck-ramp:before{content:"\f4e0"}.fa-trumpet:before{content:"\f8e3"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-turkey:before{content:"\f725"}.fa-turntable:before{content:"\f8e4"}.fa-turtle:before{content:"\f726"}.fa-tv:before{content:"\f26c"}.fa-tv-alt:before{content:"\f8e5"}.fa-tv-music:before{content:"\f8e6"}.fa-tv-retro:before{content:"\f401"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typewriter:before{content:"\f8e7"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-ufo:before{content:"\f947"}.fa-ufo-beam:before{content:"\f948"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-unicorn:before{content:"\f727"}.fa-union:before{content:"\f6a2"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usb-drive:before{content:"\f8e9"}.fa-usd-circle:before{content:"\f2e8"}.fa-usd-square:before{content:"\f2e9"}.fa-user:before{content:"\f007"}.fa-user-alien:before{content:"\f94a"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-chart:before{content:"\f6a3"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-cowboy:before{content:"\f8ea"}.fa-user-crown:before{content:"\f6a4"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-hard-hat:before{content:"\f82c"}.fa-user-headset:before{content:"\f82d"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-md-chat:before{content:"\f82e"}.fa-user-minus:before{content:"\f503"}.fa-user-music:before{content:"\f8eb"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-robot:before{content:"\f94b"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-user-visor:before{content:"\f94c"}.fa-users:before{content:"\f0c0"}.fa-users-class:before{content:"\f63d"}.fa-users-cog:before{content:"\f509"}.fa-users-crown:before{content:"\f6a5"}.fa-users-medical:before{content:"\f830"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-fork:before{content:"\f2e3"}.fa-utensil-knife:before{content:"\f2e4"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-utensils-alt:before{content:"\f2e6"}.fa-vaadin:before{content:"\f408"}.fa-vacuum:before{content:"\f94d"}.fa-vacuum-robot:before{content:"\f94e"}.fa-value-absolute:before{content:"\f6a6"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vhs:before{content:"\f8ec"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-plus:before{content:"\f4e1"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-violin:before{content:"\f8ed"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volcano:before{content:"\f770"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume:before{content:"\f6a8"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-slash:before{content:"\f2e2"}.fa-volume-up:before{content:"\f028"}.fa-vote-nay:before{content:"\f771"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-wagon-covered:before{content:"\f8ee"}.fa-walker:before{content:"\f831"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-wand:before{content:"\f72a"}.fa-wand-magic:before{content:"\f72b"}.fa-warehouse:before{content:"\f494"}.fa-warehouse-alt:before{content:"\f495"}.fa-washer:before{content:"\f898"}.fa-watch:before{content:"\f2e1"}.fa-watch-calculator:before{content:"\f8f0"}.fa-watch-fitness:before{content:"\f63e"}.fa-water:before{content:"\f773"}.fa-water-lower:before{content:"\f774"}.fa-water-rise:before{content:"\f775"}.fa-wave-sine:before{content:"\f899"}.fa-wave-square:before{content:"\f83e"}.fa-wave-triangle:before{content:"\f89a"}.fa-waveform:before{content:"\f8f1"}.fa-waveform-path:before{content:"\f8f2"}.fa-waze:before{content:"\f83f"}.fa-webcam:before{content:"\f832"}.fa-webcam-slash:before{content:"\f833"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whale:before{content:"\f72c"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheat:before{content:"\f72d"}.fa-wheelchair:before{content:"\f193"}.fa-whistle:before{content:"\f460"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wifi-1:before{content:"\f6aa"}.fa-wifi-2:before{content:"\f6ab"}.fa-wifi-slash:before{content:"\f6ac"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-wind-turbine:before{content:"\f89b"}.fa-wind-warning:before{content:"\f776"}.fa-window:before{content:"\f40e"}.fa-window-alt:before{content:"\f40f"}.fa-window-close:before{content:"\f410"}.fa-window-frame:before{content:"\f94f"}.fa-window-frame-open:before{content:"\f950"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-windsock:before{content:"\f777"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wreath:before{content:"\f7e2"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Duotone";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-duotone-900.eot);src:url(../webfonts/fa-duotone-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-duotone-900.woff2) format("woff2"),url(../webfonts/fa-duotone-900.woff) format("woff"),url(../webfonts/fa-duotone-900.ttf) format("truetype"),url(../webfonts/fa-duotone-900.svg#fontawesome) format("svg")}.fad{position:relative;font-family:"Font Awesome 5 Duotone";font-weight:900}.fad:before{position:absolute;color:var(--fa-primary-color,inherit);opacity:1;opacity:var(--fa-primary-opacity,1)}.fad:after{color:var(--fa-secondary-color,inherit)}.fa-swap-opacity .fad:before,.fad.fa-swap-opacity:before,.fad:after{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.fa-swap-opacity .fad:after,.fad.fa-swap-opacity:after{opacity:1;opacity:var(--fa-primary-opacity,1)}.fad.fa-inverse{color:#fff}.fad.fa-stack-1x,.fad.fa-stack-2x{position:absolute}.fad.fa-fw:before,.fad.fa-stack-1x:before,.fad.fa-stack-2x:before{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.fad.fa-abacus:after{content:"\10f640"}.fad.fa-acorn:after{content:"\10f6ae"}.fad.fa-ad:after{content:"\10f641"}.fad.fa-address-book:after{content:"\10f2b9"}.fad.fa-address-card:after{content:"\10f2bb"}.fad.fa-adjust:after{content:"\10f042"}.fad.fa-air-conditioner:after{content:"\10f8f4"}.fad.fa-air-freshener:after{content:"\10f5d0"}.fad.fa-alarm-clock:after{content:"\10f34e"}.fad.fa-alarm-exclamation:after{content:"\10f843"}.fad.fa-alarm-plus:after{content:"\10f844"}.fad.fa-alarm-snooze:after{content:"\10f845"}.fad.fa-album:after{content:"\10f89f"}.fad.fa-album-collection:after{content:"\10f8a0"}.fad.fa-alicorn:after{content:"\10f6b0"}.fad.fa-alien:after{content:"\10f8f5"}.fad.fa-alien-monster:after{content:"\10f8f6"}.fad.fa-align-center:after{content:"\10f037"}.fad.fa-align-justify:after{content:"\10f039"}.fad.fa-align-left:after{content:"\10f036"}.fad.fa-align-right:after{content:"\10f038"}.fad.fa-align-slash:after{content:"\10f846"}.fad.fa-allergies:after{content:"\10f461"}.fad.fa-ambulance:after{content:"\10f0f9"}.fad.fa-american-sign-language-interpreting:after{content:"\10f2a3"}.fad.fa-amp-guitar:after{content:"\10f8a1"}.fad.fa-analytics:after{content:"\10f643"}.fad.fa-anchor:after{content:"\10f13d"}.fad.fa-angel:after{content:"\10f779"}.fad.fa-angle-double-down:after{content:"\10f103"}.fad.fa-angle-double-left:after{content:"\10f100"}.fad.fa-angle-double-right:after{content:"\10f101"}.fad.fa-angle-double-up:after{content:"\10f102"}.fad.fa-angle-down:after{content:"\10f107"}.fad.fa-angle-left:after{content:"\10f104"}.fad.fa-angle-right:after{content:"\10f105"}.fad.fa-angle-up:after{content:"\10f106"}.fad.fa-angry:after{content:"\10f556"}.fad.fa-ankh:after{content:"\10f644"}.fad.fa-apple-alt:after{content:"\10f5d1"}.fad.fa-apple-crate:after{content:"\10f6b1"}.fad.fa-archive:after{content:"\10f187"}.fad.fa-archway:after{content:"\10f557"}.fad.fa-arrow-alt-circle-down:after{content:"\10f358"}.fad.fa-arrow-alt-circle-left:after{content:"\10f359"}.fad.fa-arrow-alt-circle-right:after{content:"\10f35a"}.fad.fa-arrow-alt-circle-up:after{content:"\10f35b"}.fad.fa-arrow-alt-down:after{content:"\10f354"}.fad.fa-arrow-alt-from-bottom:after{content:"\10f346"}.fad.fa-arrow-alt-from-left:after{content:"\10f347"}.fad.fa-arrow-alt-from-right:after{content:"\10f348"}.fad.fa-arrow-alt-from-top:after{content:"\10f349"}.fad.fa-arrow-alt-left:after{content:"\10f355"}.fad.fa-arrow-alt-right:after{content:"\10f356"}.fad.fa-arrow-alt-square-down:after{content:"\10f350"}.fad.fa-arrow-alt-square-left:after{content:"\10f351"}.fad.fa-arrow-alt-square-right:after{content:"\10f352"}.fad.fa-arrow-alt-square-up:after{content:"\10f353"}.fad.fa-arrow-alt-to-bottom:after{content:"\10f34a"}.fad.fa-arrow-alt-to-left:after{content:"\10f34b"}.fad.fa-arrow-alt-to-right:after{content:"\10f34c"}.fad.fa-arrow-alt-to-top:after{content:"\10f34d"}.fad.fa-arrow-alt-up:after{content:"\10f357"}.fad.fa-arrow-circle-down:after{content:"\10f0ab"}.fad.fa-arrow-circle-left:after{content:"\10f0a8"}.fad.fa-arrow-circle-right:after{content:"\10f0a9"}.fad.fa-arrow-circle-up:after{content:"\10f0aa"}.fad.fa-arrow-down:after{content:"\10f063"}.fad.fa-arrow-from-bottom:after{content:"\10f342"}.fad.fa-arrow-from-left:after{content:"\10f343"}.fad.fa-arrow-from-right:after{content:"\10f344"}.fad.fa-arrow-from-top:after{content:"\10f345"}.fad.fa-arrow-left:after{content:"\10f060"}.fad.fa-arrow-right:after{content:"\10f061"}.fad.fa-arrow-square-down:after{content:"\10f339"}.fad.fa-arrow-square-left:after{content:"\10f33a"}.fad.fa-arrow-square-right:after{content:"\10f33b"}.fad.fa-arrow-square-up:after{content:"\10f33c"}.fad.fa-arrow-to-bottom:after{content:"\10f33d"}.fad.fa-arrow-to-left:after{content:"\10f33e"}.fad.fa-arrow-to-right:after{content:"\10f340"}.fad.fa-arrow-to-top:after{content:"\10f341"}.fad.fa-arrow-up:after{content:"\10f062"}.fad.fa-arrows:after{content:"\10f047"}.fad.fa-arrows-alt:after{content:"\10f0b2"}.fad.fa-arrows-alt-h:after{content:"\10f337"}.fad.fa-arrows-alt-v:after{content:"\10f338"}.fad.fa-arrows-h:after{content:"\10f07e"}.fad.fa-arrows-v:after{content:"\10f07d"}.fad.fa-assistive-listening-systems:after{content:"\10f2a2"}.fad.fa-asterisk:after{content:"\10f069"}.fad.fa-at:after{content:"\10f1fa"}.fad.fa-atlas:after{content:"\10f558"}.fad.fa-atom:after{content:"\10f5d2"}.fad.fa-atom-alt:after{content:"\10f5d3"}.fad.fa-audio-description:after{content:"\10f29e"}.fad.fa-award:after{content:"\10f559"}.fad.fa-axe:after{content:"\10f6b2"}.fad.fa-axe-battle:after{content:"\10f6b3"}.fad.fa-baby:after{content:"\10f77c"}.fad.fa-baby-carriage:after{content:"\10f77d"}.fad.fa-backpack:after{content:"\10f5d4"}.fad.fa-backspace:after{content:"\10f55a"}.fad.fa-backward:after{content:"\10f04a"}.fad.fa-bacon:after{content:"\10f7e5"}.fad.fa-badge:after{content:"\10f335"}.fad.fa-badge-check:after{content:"\10f336"}.fad.fa-badge-dollar:after{content:"\10f645"}.fad.fa-badge-percent:after{content:"\10f646"}.fad.fa-badge-sheriff:after{content:"\10f8a2"}.fad.fa-badger-honey:after{content:"\10f6b4"}.fad.fa-bags-shopping:after{content:"\10f847"}.fad.fa-bahai:after{content:"\10f666"}.fad.fa-balance-scale:after{content:"\10f24e"}.fad.fa-balance-scale-left:after{content:"\10f515"}.fad.fa-balance-scale-right:after{content:"\10f516"}.fad.fa-ball-pile:after{content:"\10f77e"}.fad.fa-ballot:after{content:"\10f732"}.fad.fa-ballot-check:after{content:"\10f733"}.fad.fa-ban:after{content:"\10f05e"}.fad.fa-band-aid:after{content:"\10f462"}.fad.fa-banjo:after{content:"\10f8a3"}.fad.fa-barcode:after{content:"\10f02a"}.fad.fa-barcode-alt:after{content:"\10f463"}.fad.fa-barcode-read:after{content:"\10f464"}.fad.fa-barcode-scan:after{content:"\10f465"}.fad.fa-bars:after{content:"\10f0c9"}.fad.fa-baseball:after{content:"\10f432"}.fad.fa-baseball-ball:after{content:"\10f433"}.fad.fa-basketball-ball:after{content:"\10f434"}.fad.fa-basketball-hoop:after{content:"\10f435"}.fad.fa-bat:after{content:"\10f6b5"}.fad.fa-bath:after{content:"\10f2cd"}.fad.fa-battery-bolt:after{content:"\10f376"}.fad.fa-battery-empty:after{content:"\10f244"}.fad.fa-battery-full:after{content:"\10f240"}.fad.fa-battery-half:after{content:"\10f242"}.fad.fa-battery-quarter:after{content:"\10f243"}.fad.fa-battery-slash:after{content:"\10f377"}.fad.fa-battery-three-quarters:after{content:"\10f241"}.fad.fa-bed:after{content:"\10f236"}.fad.fa-bed-alt:after{content:"\10f8f7"}.fad.fa-bed-bunk:after{content:"\10f8f8"}.fad.fa-bed-empty:after{content:"\10f8f9"}.fad.fa-beer:after{content:"\10f0fc"}.fad.fa-bell:after{content:"\10f0f3"}.fad.fa-bell-exclamation:after{content:"\10f848"}.fad.fa-bell-on:after{content:"\10f8fa"}.fad.fa-bell-plus:after{content:"\10f849"}.fad.fa-bell-school:after{content:"\10f5d5"}.fad.fa-bell-school-slash:after{content:"\10f5d6"}.fad.fa-bell-slash:after{content:"\10f1f6"}.fad.fa-bells:after{content:"\10f77f"}.fad.fa-betamax:after{content:"\10f8a4"}.fad.fa-bezier-curve:after{content:"\10f55b"}.fad.fa-bible:after{content:"\10f647"}.fad.fa-bicycle:after{content:"\10f206"}.fad.fa-biking:after{content:"\10f84a"}.fad.fa-biking-mountain:after{content:"\10f84b"}.fad.fa-binoculars:after{content:"\10f1e5"}.fad.fa-biohazard:after{content:"\10f780"}.fad.fa-birthday-cake:after{content:"\10f1fd"}.fad.fa-blanket:after{content:"\10f498"}.fad.fa-blender:after{content:"\10f517"}.fad.fa-blender-phone:after{content:"\10f6b6"}.fad.fa-blind:after{content:"\10f29d"}.fad.fa-blinds:after{content:"\10f8fb"}.fad.fa-blinds-open:after{content:"\10f8fc"}.fad.fa-blinds-raised:after{content:"\10f8fd"}.fad.fa-blog:after{content:"\10f781"}.fad.fa-bold:after{content:"\10f032"}.fad.fa-bolt:after{content:"\10f0e7"}.fad.fa-bomb:after{content:"\10f1e2"}.fad.fa-bone:after{content:"\10f5d7"}.fad.fa-bone-break:after{content:"\10f5d8"}.fad.fa-bong:after{content:"\10f55c"}.fad.fa-book:after{content:"\10f02d"}.fad.fa-book-alt:after{content:"\10f5d9"}.fad.fa-book-dead:after{content:"\10f6b7"}.fad.fa-book-heart:after{content:"\10f499"}.fad.fa-book-medical:after{content:"\10f7e6"}.fad.fa-book-open:after{content:"\10f518"}.fad.fa-book-reader:after{content:"\10f5da"}.fad.fa-book-spells:after{content:"\10f6b8"}.fad.fa-book-user:after{content:"\10f7e7"}.fad.fa-bookmark:after{content:"\10f02e"}.fad.fa-books:after{content:"\10f5db"}.fad.fa-books-medical:after{content:"\10f7e8"}.fad.fa-boombox:after{content:"\10f8a5"}.fad.fa-boot:after{content:"\10f782"}.fad.fa-booth-curtain:after{content:"\10f734"}.fad.fa-border-all:after{content:"\10f84c"}.fad.fa-border-bottom:after{content:"\10f84d"}.fad.fa-border-center-h:after{content:"\10f89c"}.fad.fa-border-center-v:after{content:"\10f89d"}.fad.fa-border-inner:after{content:"\10f84e"}.fad.fa-border-left:after{content:"\10f84f"}.fad.fa-border-none:after{content:"\10f850"}.fad.fa-border-outer:after{content:"\10f851"}.fad.fa-border-right:after{content:"\10f852"}.fad.fa-border-style:after{content:"\10f853"}.fad.fa-border-style-alt:after{content:"\10f854"}.fad.fa-border-top:after{content:"\10f855"}.fad.fa-bow-arrow:after{content:"\10f6b9"}.fad.fa-bowling-ball:after{content:"\10f436"}.fad.fa-bowling-pins:after{content:"\10f437"}.fad.fa-box:after{content:"\10f466"}.fad.fa-box-alt:after{content:"\10f49a"}.fad.fa-box-ballot:after{content:"\10f735"}.fad.fa-box-check:after{content:"\10f467"}.fad.fa-box-fragile:after{content:"\10f49b"}.fad.fa-box-full:after{content:"\10f49c"}.fad.fa-box-heart:after{content:"\10f49d"}.fad.fa-box-open:after{content:"\10f49e"}.fad.fa-box-up:after{content:"\10f49f"}.fad.fa-box-usd:after{content:"\10f4a0"}.fad.fa-boxes:after{content:"\10f468"}.fad.fa-boxes-alt:after{content:"\10f4a1"}.fad.fa-boxing-glove:after{content:"\10f438"}.fad.fa-brackets:after{content:"\10f7e9"}.fad.fa-brackets-curly:after{content:"\10f7ea"}.fad.fa-braille:after{content:"\10f2a1"}.fad.fa-brain:after{content:"\10f5dc"}.fad.fa-bread-loaf:after{content:"\10f7eb"}.fad.fa-bread-slice:after{content:"\10f7ec"}.fad.fa-briefcase:after{content:"\10f0b1"}.fad.fa-briefcase-medical:after{content:"\10f469"}.fad.fa-bring-forward:after{content:"\10f856"}.fad.fa-bring-front:after{content:"\10f857"}.fad.fa-broadcast-tower:after{content:"\10f519"}.fad.fa-broom:after{content:"\10f51a"}.fad.fa-browser:after{content:"\10f37e"}.fad.fa-brush:after{content:"\10f55d"}.fad.fa-bug:after{content:"\10f188"}.fad.fa-building:after{content:"\10f1ad"}.fad.fa-bullhorn:after{content:"\10f0a1"}.fad.fa-bullseye:after{content:"\10f140"}.fad.fa-bullseye-arrow:after{content:"\10f648"}.fad.fa-bullseye-pointer:after{content:"\10f649"}.fad.fa-burger-soda:after{content:"\10f858"}.fad.fa-burn:after{content:"\10f46a"}.fad.fa-burrito:after{content:"\10f7ed"}.fad.fa-bus:after{content:"\10f207"}.fad.fa-bus-alt:after{content:"\10f55e"}.fad.fa-bus-school:after{content:"\10f5dd"}.fad.fa-business-time:after{content:"\10f64a"}.fad.fa-cabinet-filing:after{content:"\10f64b"}.fad.fa-cactus:after{content:"\10f8a7"}.fad.fa-calculator:after{content:"\10f1ec"}.fad.fa-calculator-alt:after{content:"\10f64c"}.fad.fa-calendar:after{content:"\10f133"}.fad.fa-calendar-alt:after{content:"\10f073"}.fad.fa-calendar-check:after{content:"\10f274"}.fad.fa-calendar-day:after{content:"\10f783"}.fad.fa-calendar-edit:after{content:"\10f333"}.fad.fa-calendar-exclamation:after{content:"\10f334"}.fad.fa-calendar-minus:after{content:"\10f272"}.fad.fa-calendar-plus:after{content:"\10f271"}.fad.fa-calendar-star:after{content:"\10f736"}.fad.fa-calendar-times:after{content:"\10f273"}.fad.fa-calendar-week:after{content:"\10f784"}.fad.fa-camcorder:after{content:"\10f8a8"}.fad.fa-camera:after{content:"\10f030"}.fad.fa-camera-alt:after{content:"\10f332"}.fad.fa-camera-home:after{content:"\10f8fe"}.fad.fa-camera-movie:after{content:"\10f8a9"}.fad.fa-camera-polaroid:after{content:"\10f8aa"}.fad.fa-camera-retro:after{content:"\10f083"}.fad.fa-campfire:after{content:"\10f6ba"}.fad.fa-campground:after{content:"\10f6bb"}.fad.fa-candle-holder:after{content:"\10f6bc"}.fad.fa-candy-cane:after{content:"\10f786"}.fad.fa-candy-corn:after{content:"\10f6bd"}.fad.fa-cannabis:after{content:"\10f55f"}.fad.fa-capsules:after{content:"\10f46b"}.fad.fa-car:after{content:"\10f1b9"}.fad.fa-car-alt:after{content:"\10f5de"}.fad.fa-car-battery:after{content:"\10f5df"}.fad.fa-car-building:after{content:"\10f859"}.fad.fa-car-bump:after{content:"\10f5e0"}.fad.fa-car-bus:after{content:"\10f85a"}.fad.fa-car-crash:after{content:"\10f5e1"}.fad.fa-car-garage:after{content:"\10f5e2"}.fad.fa-car-mechanic:after{content:"\10f5e3"}.fad.fa-car-side:after{content:"\10f5e4"}.fad.fa-car-tilt:after{content:"\10f5e5"}.fad.fa-car-wash:after{content:"\10f5e6"}.fad.fa-caravan:after{content:"\10f8ff"}.fad.fa-caravan-alt:after{content:"\10f900"}.fad.fa-caret-circle-down:after{content:"\10f32d"}.fad.fa-caret-circle-left:after{content:"\10f32e"}.fad.fa-caret-circle-right:after{content:"\10f330"}.fad.fa-caret-circle-up:after{content:"\10f331"}.fad.fa-caret-down:after{content:"\10f0d7"}.fad.fa-caret-left:after{content:"\10f0d9"}.fad.fa-caret-right:after{content:"\10f0da"}.fad.fa-caret-square-down:after{content:"\10f150"}.fad.fa-caret-square-left:after{content:"\10f191"}.fad.fa-caret-square-right:after{content:"\10f152"}.fad.fa-caret-square-up:after{content:"\10f151"}.fad.fa-caret-up:after{content:"\10f0d8"}.fad.fa-carrot:after{content:"\10f787"}.fad.fa-cars:after{content:"\10f85b"}.fad.fa-cart-arrow-down:after{content:"\10f218"}.fad.fa-cart-plus:after{content:"\10f217"}.fad.fa-cash-register:after{content:"\10f788"}.fad.fa-cassette-tape:after{content:"\10f8ab"}.fad.fa-cat:after{content:"\10f6be"}.fad.fa-cat-space:after{content:"\10f901"}.fad.fa-cauldron:after{content:"\10f6bf"}.fad.fa-cctv:after{content:"\10f8ac"}.fad.fa-certificate:after{content:"\10f0a3"}.fad.fa-chair:after{content:"\10f6c0"}.fad.fa-chair-office:after{content:"\10f6c1"}.fad.fa-chalkboard:after{content:"\10f51b"}.fad.fa-chalkboard-teacher:after{content:"\10f51c"}.fad.fa-charging-station:after{content:"\10f5e7"}.fad.fa-chart-area:after{content:"\10f1fe"}.fad.fa-chart-bar:after{content:"\10f080"}.fad.fa-chart-line:after{content:"\10f201"}.fad.fa-chart-line-down:after{content:"\10f64d"}.fad.fa-chart-network:after{content:"\10f78a"}.fad.fa-chart-pie:after{content:"\10f200"}.fad.fa-chart-pie-alt:after{content:"\10f64e"}.fad.fa-chart-scatter:after{content:"\10f7ee"}.fad.fa-check:after{content:"\10f00c"}.fad.fa-check-circle:after{content:"\10f058"}.fad.fa-check-double:after{content:"\10f560"}.fad.fa-check-square:after{content:"\10f14a"}.fad.fa-cheese:after{content:"\10f7ef"}.fad.fa-cheese-swiss:after{content:"\10f7f0"}.fad.fa-cheeseburger:after{content:"\10f7f1"}.fad.fa-chess:after{content:"\10f439"}.fad.fa-chess-bishop:after{content:"\10f43a"}.fad.fa-chess-bishop-alt:after{content:"\10f43b"}.fad.fa-chess-board:after{content:"\10f43c"}.fad.fa-chess-clock:after{content:"\10f43d"}.fad.fa-chess-clock-alt:after{content:"\10f43e"}.fad.fa-chess-king:after{content:"\10f43f"}.fad.fa-chess-king-alt:after{content:"\10f440"}.fad.fa-chess-knight:after{content:"\10f441"}.fad.fa-chess-knight-alt:after{content:"\10f442"}.fad.fa-chess-pawn:after{content:"\10f443"}.fad.fa-chess-pawn-alt:after{content:"\10f444"}.fad.fa-chess-queen:after{content:"\10f445"}.fad.fa-chess-queen-alt:after{content:"\10f446"}.fad.fa-chess-rook:after{content:"\10f447"}.fad.fa-chess-rook-alt:after{content:"\10f448"}.fad.fa-chevron-circle-down:after{content:"\10f13a"}.fad.fa-chevron-circle-left:after{content:"\10f137"}.fad.fa-chevron-circle-right:after{content:"\10f138"}.fad.fa-chevron-circle-up:after{content:"\10f139"}.fad.fa-chevron-double-down:after{content:"\10f322"}.fad.fa-chevron-double-left:after{content:"\10f323"}.fad.fa-chevron-double-right:after{content:"\10f324"}.fad.fa-chevron-double-up:after{content:"\10f325"}.fad.fa-chevron-down:after{content:"\10f078"}.fad.fa-chevron-left:after{content:"\10f053"}.fad.fa-chevron-right:after{content:"\10f054"}.fad.fa-chevron-square-down:after{content:"\10f329"}.fad.fa-chevron-square-left:after{content:"\10f32a"}.fad.fa-chevron-square-right:after{content:"\10f32b"}.fad.fa-chevron-square-up:after{content:"\10f32c"}.fad.fa-chevron-up:after{content:"\10f077"}.fad.fa-child:after{content:"\10f1ae"}.fad.fa-chimney:after{content:"\10f78b"}.fad.fa-church:after{content:"\10f51d"}.fad.fa-circle:after{content:"\10f111"}.fad.fa-circle-notch:after{content:"\10f1ce"}.fad.fa-city:after{content:"\10f64f"}.fad.fa-clarinet:after{content:"\10f8ad"}.fad.fa-claw-marks:after{content:"\10f6c2"}.fad.fa-clinic-medical:after{content:"\10f7f2"}.fad.fa-clipboard:after{content:"\10f328"}.fad.fa-clipboard-check:after{content:"\10f46c"}.fad.fa-clipboard-list:after{content:"\10f46d"}.fad.fa-clipboard-list-check:after{content:"\10f737"}.fad.fa-clipboard-prescription:after{content:"\10f5e8"}.fad.fa-clipboard-user:after{content:"\10f7f3"}.fad.fa-clock:after{content:"\10f017"}.fad.fa-clone:after{content:"\10f24d"}.fad.fa-closed-captioning:after{content:"\10f20a"}.fad.fa-cloud:after{content:"\10f0c2"}.fad.fa-cloud-download:after{content:"\10f0ed"}.fad.fa-cloud-download-alt:after{content:"\10f381"}.fad.fa-cloud-drizzle:after{content:"\10f738"}.fad.fa-cloud-hail:after{content:"\10f739"}.fad.fa-cloud-hail-mixed:after{content:"\10f73a"}.fad.fa-cloud-meatball:after{content:"\10f73b"}.fad.fa-cloud-moon:after{content:"\10f6c3"}.fad.fa-cloud-moon-rain:after{content:"\10f73c"}.fad.fa-cloud-music:after{content:"\10f8ae"}.fad.fa-cloud-rain:after{content:"\10f73d"}.fad.fa-cloud-rainbow:after{content:"\10f73e"}.fad.fa-cloud-showers:after{content:"\10f73f"}.fad.fa-cloud-showers-heavy:after{content:"\10f740"}.fad.fa-cloud-sleet:after{content:"\10f741"}.fad.fa-cloud-snow:after{content:"\10f742"}.fad.fa-cloud-sun:after{content:"\10f6c4"}.fad.fa-cloud-sun-rain:after{content:"\10f743"}.fad.fa-cloud-upload:after{content:"\10f0ee"}.fad.fa-cloud-upload-alt:after{content:"\10f382"}.fad.fa-clouds:after{content:"\10f744"}.fad.fa-clouds-moon:after{content:"\10f745"}.fad.fa-clouds-sun:after{content:"\10f746"}.fad.fa-club:after{content:"\10f327"}.fad.fa-cocktail:after{content:"\10f561"}.fad.fa-code:after{content:"\10f121"}.fad.fa-code-branch:after{content:"\10f126"}.fad.fa-code-commit:after{content:"\10f386"}.fad.fa-code-merge:after{content:"\10f387"}.fad.fa-coffee:after{content:"\10f0f4"}.fad.fa-coffee-pot:after{content:"\10f902"}.fad.fa-coffee-togo:after{content:"\10f6c5"}.fad.fa-coffin:after{content:"\10f6c6"}.fad.fa-cog:after{content:"\10f013"}.fad.fa-cogs:after{content:"\10f085"}.fad.fa-coin:after{content:"\10f85c"}.fad.fa-coins:after{content:"\10f51e"}.fad.fa-columns:after{content:"\10f0db"}.fad.fa-comet:after{content:"\10f903"}.fad.fa-comment:after{content:"\10f075"}.fad.fa-comment-alt:after{content:"\10f27a"}.fad.fa-comment-alt-check:after{content:"\10f4a2"}.fad.fa-comment-alt-dollar:after{content:"\10f650"}.fad.fa-comment-alt-dots:after{content:"\10f4a3"}.fad.fa-comment-alt-edit:after{content:"\10f4a4"}.fad.fa-comment-alt-exclamation:after{content:"\10f4a5"}.fad.fa-comment-alt-lines:after{content:"\10f4a6"}.fad.fa-comment-alt-medical:after{content:"\10f7f4"}.fad.fa-comment-alt-minus:after{content:"\10f4a7"}.fad.fa-comment-alt-music:after{content:"\10f8af"}.fad.fa-comment-alt-plus:after{content:"\10f4a8"}.fad.fa-comment-alt-slash:after{content:"\10f4a9"}.fad.fa-comment-alt-smile:after{content:"\10f4aa"}.fad.fa-comment-alt-times:after{content:"\10f4ab"}.fad.fa-comment-check:after{content:"\10f4ac"}.fad.fa-comment-dollar:after{content:"\10f651"}.fad.fa-comment-dots:after{content:"\10f4ad"}.fad.fa-comment-edit:after{content:"\10f4ae"}.fad.fa-comment-exclamation:after{content:"\10f4af"}.fad.fa-comment-lines:after{content:"\10f4b0"}.fad.fa-comment-medical:after{content:"\10f7f5"}.fad.fa-comment-minus:after{content:"\10f4b1"}.fad.fa-comment-music:after{content:"\10f8b0"}.fad.fa-comment-plus:after{content:"\10f4b2"}.fad.fa-comment-slash:after{content:"\10f4b3"}.fad.fa-comment-smile:after{content:"\10f4b4"}.fad.fa-comment-times:after{content:"\10f4b5"}.fad.fa-comments:after{content:"\10f086"}.fad.fa-comments-alt:after{content:"\10f4b6"}.fad.fa-comments-alt-dollar:after{content:"\10f652"}.fad.fa-comments-dollar:after{content:"\10f653"}.fad.fa-compact-disc:after{content:"\10f51f"}.fad.fa-compass:after{content:"\10f14e"}.fad.fa-compass-slash:after{content:"\10f5e9"}.fad.fa-compress:after{content:"\10f066"}.fad.fa-compress-alt:after{content:"\10f422"}.fad.fa-compress-arrows-alt:after{content:"\10f78c"}.fad.fa-compress-wide:after{content:"\10f326"}.fad.fa-computer-classic:after{content:"\10f8b1"}.fad.fa-computer-speaker:after{content:"\10f8b2"}.fad.fa-concierge-bell:after{content:"\10f562"}.fad.fa-construction:after{content:"\10f85d"}.fad.fa-container-storage:after{content:"\10f4b7"}.fad.fa-conveyor-belt:after{content:"\10f46e"}.fad.fa-conveyor-belt-alt:after{content:"\10f46f"}.fad.fa-cookie:after{content:"\10f563"}.fad.fa-cookie-bite:after{content:"\10f564"}.fad.fa-copy:after{content:"\10f0c5"}.fad.fa-copyright:after{content:"\10f1f9"}.fad.fa-corn:after{content:"\10f6c7"}.fad.fa-couch:after{content:"\10f4b8"}.fad.fa-cow:after{content:"\10f6c8"}.fad.fa-cowbell:after{content:"\10f8b3"}.fad.fa-cowbell-more:after{content:"\10f8b4"}.fad.fa-credit-card:after{content:"\10f09d"}.fad.fa-credit-card-blank:after{content:"\10f389"}.fad.fa-credit-card-front:after{content:"\10f38a"}.fad.fa-cricket:after{content:"\10f449"}.fad.fa-croissant:after{content:"\10f7f6"}.fad.fa-crop:after{content:"\10f125"}.fad.fa-crop-alt:after{content:"\10f565"}.fad.fa-cross:after{content:"\10f654"}.fad.fa-crosshairs:after{content:"\10f05b"}.fad.fa-crow:after{content:"\10f520"}.fad.fa-crown:after{content:"\10f521"}.fad.fa-crutch:after{content:"\10f7f7"}.fad.fa-crutches:after{content:"\10f7f8"}.fad.fa-cube:after{content:"\10f1b2"}.fad.fa-cubes:after{content:"\10f1b3"}.fad.fa-curling:after{content:"\10f44a"}.fad.fa-cut:after{content:"\10f0c4"}.fad.fa-dagger:after{content:"\10f6cb"}.fad.fa-database:after{content:"\10f1c0"}.fad.fa-deaf:after{content:"\10f2a4"}.fad.fa-debug:after{content:"\10f7f9"}.fad.fa-deer:after{content:"\10f78e"}.fad.fa-deer-rudolph:after{content:"\10f78f"}.fad.fa-democrat:after{content:"\10f747"}.fad.fa-desktop:after{content:"\10f108"}.fad.fa-desktop-alt:after{content:"\10f390"}.fad.fa-dewpoint:after{content:"\10f748"}.fad.fa-dharmachakra:after{content:"\10f655"}.fad.fa-diagnoses:after{content:"\10f470"}.fad.fa-diamond:after{content:"\10f219"}.fad.fa-dice:after{content:"\10f522"}.fad.fa-dice-d10:after{content:"\10f6cd"}.fad.fa-dice-d12:after{content:"\10f6ce"}.fad.fa-dice-d20:after{content:"\10f6cf"}.fad.fa-dice-d4:after{content:"\10f6d0"}.fad.fa-dice-d6:after{content:"\10f6d1"}.fad.fa-dice-d8:after{content:"\10f6d2"}.fad.fa-dice-five:after{content:"\10f523"}.fad.fa-dice-four:after{content:"\10f524"}.fad.fa-dice-one:after{content:"\10f525"}.fad.fa-dice-six:after{content:"\10f526"}.fad.fa-dice-three:after{content:"\10f527"}.fad.fa-dice-two:after{content:"\10f528"}.fad.fa-digging:after{content:"\10f85e"}.fad.fa-digital-tachograph:after{content:"\10f566"}.fad.fa-diploma:after{content:"\10f5ea"}.fad.fa-directions:after{content:"\10f5eb"}.fad.fa-disc-drive:after{content:"\10f8b5"}.fad.fa-disease:after{content:"\10f7fa"}.fad.fa-divide:after{content:"\10f529"}.fad.fa-dizzy:after{content:"\10f567"}.fad.fa-dna:after{content:"\10f471"}.fad.fa-do-not-enter:after{content:"\10f5ec"}.fad.fa-dog:after{content:"\10f6d3"}.fad.fa-dog-leashed:after{content:"\10f6d4"}.fad.fa-dollar-sign:after{content:"\10f155"}.fad.fa-dolly:after{content:"\10f472"}.fad.fa-dolly-empty:after{content:"\10f473"}.fad.fa-dolly-flatbed:after{content:"\10f474"}.fad.fa-dolly-flatbed-alt:after{content:"\10f475"}.fad.fa-dolly-flatbed-empty:after{content:"\10f476"}.fad.fa-donate:after{content:"\10f4b9"}.fad.fa-door-closed:after{content:"\10f52a"}.fad.fa-door-open:after{content:"\10f52b"}.fad.fa-dot-circle:after{content:"\10f192"}.fad.fa-dove:after{content:"\10f4ba"}.fad.fa-download:after{content:"\10f019"}.fad.fa-drafting-compass:after{content:"\10f568"}.fad.fa-dragon:after{content:"\10f6d5"}.fad.fa-draw-circle:after{content:"\10f5ed"}.fad.fa-draw-polygon:after{content:"\10f5ee"}.fad.fa-draw-square:after{content:"\10f5ef"}.fad.fa-dreidel:after{content:"\10f792"}.fad.fa-drone:after{content:"\10f85f"}.fad.fa-drone-alt:after{content:"\10f860"}.fad.fa-drum:after{content:"\10f569"}.fad.fa-drum-steelpan:after{content:"\10f56a"}.fad.fa-drumstick:after{content:"\10f6d6"}.fad.fa-drumstick-bite:after{content:"\10f6d7"}.fad.fa-dryer:after{content:"\10f861"}.fad.fa-dryer-alt:after{content:"\10f862"}.fad.fa-duck:after{content:"\10f6d8"}.fad.fa-dumbbell:after{content:"\10f44b"}.fad.fa-dumpster:after{content:"\10f793"}.fad.fa-dumpster-fire:after{content:"\10f794"}.fad.fa-dungeon:after{content:"\10f6d9"}.fad.fa-ear:after{content:"\10f5f0"}.fad.fa-ear-muffs:after{content:"\10f795"}.fad.fa-eclipse:after{content:"\10f749"}.fad.fa-eclipse-alt:after{content:"\10f74a"}.fad.fa-edit:after{content:"\10f044"}.fad.fa-egg:after{content:"\10f7fb"}.fad.fa-egg-fried:after{content:"\10f7fc"}.fad.fa-eject:after{content:"\10f052"}.fad.fa-elephant:after{content:"\10f6da"}.fad.fa-ellipsis-h:after{content:"\10f141"}.fad.fa-ellipsis-h-alt:after{content:"\10f39b"}.fad.fa-ellipsis-v:after{content:"\10f142"}.fad.fa-ellipsis-v-alt:after{content:"\10f39c"}.fad.fa-empty-set:after{content:"\10f656"}.fad.fa-engine-warning:after{content:"\10f5f2"}.fad.fa-envelope:after{content:"\10f0e0"}.fad.fa-envelope-open:after{content:"\10f2b6"}.fad.fa-envelope-open-dollar:after{content:"\10f657"}.fad.fa-envelope-open-text:after{content:"\10f658"}.fad.fa-envelope-square:after{content:"\10f199"}.fad.fa-equals:after{content:"\10f52c"}.fad.fa-eraser:after{content:"\10f12d"}.fad.fa-ethernet:after{content:"\10f796"}.fad.fa-euro-sign:after{content:"\10f153"}.fad.fa-exchange:after{content:"\10f0ec"}.fad.fa-exchange-alt:after{content:"\10f362"}.fad.fa-exclamation:after{content:"\10f12a"}.fad.fa-exclamation-circle:after{content:"\10f06a"}.fad.fa-exclamation-square:after{content:"\10f321"}.fad.fa-exclamation-triangle:after{content:"\10f071"}.fad.fa-expand:after{content:"\10f065"}.fad.fa-expand-alt:after{content:"\10f424"}.fad.fa-expand-arrows:after{content:"\10f31d"}.fad.fa-expand-arrows-alt:after{content:"\10f31e"}.fad.fa-expand-wide:after{content:"\10f320"}.fad.fa-external-link:after{content:"\10f08e"}.fad.fa-external-link-alt:after{content:"\10f35d"}.fad.fa-external-link-square:after{content:"\10f14c"}.fad.fa-external-link-square-alt:after{content:"\10f360"}.fad.fa-eye:after{content:"\10f06e"}.fad.fa-eye-dropper:after{content:"\10f1fb"}.fad.fa-eye-evil:after{content:"\10f6db"}.fad.fa-eye-slash:after{content:"\10f070"}.fad.fa-fan:after{content:"\10f863"}.fad.fa-fan-table:after{content:"\10f904"}.fad.fa-farm:after{content:"\10f864"}.fad.fa-fast-backward:after{content:"\10f049"}.fad.fa-fast-forward:after{content:"\10f050"}.fad.fa-faucet:after{content:"\10f905"}.fad.fa-faucet-drip:after{content:"\10f906"}.fad.fa-fax:after{content:"\10f1ac"}.fad.fa-feather:after{content:"\10f52d"}.fad.fa-feather-alt:after{content:"\10f56b"}.fad.fa-female:after{content:"\10f182"}.fad.fa-field-hockey:after{content:"\10f44c"}.fad.fa-fighter-jet:after{content:"\10f0fb"}.fad.fa-file:after{content:"\10f15b"}.fad.fa-file-alt:after{content:"\10f15c"}.fad.fa-file-archive:after{content:"\10f1c6"}.fad.fa-file-audio:after{content:"\10f1c7"}.fad.fa-file-certificate:after{content:"\10f5f3"}.fad.fa-file-chart-line:after{content:"\10f659"}.fad.fa-file-chart-pie:after{content:"\10f65a"}.fad.fa-file-check:after{content:"\10f316"}.fad.fa-file-code:after{content:"\10f1c9"}.fad.fa-file-contract:after{content:"\10f56c"}.fad.fa-file-csv:after{content:"\10f6dd"}.fad.fa-file-download:after{content:"\10f56d"}.fad.fa-file-edit:after{content:"\10f31c"}.fad.fa-file-excel:after{content:"\10f1c3"}.fad.fa-file-exclamation:after{content:"\10f31a"}.fad.fa-file-export:after{content:"\10f56e"}.fad.fa-file-image:after{content:"\10f1c5"}.fad.fa-file-import:after{content:"\10f56f"}.fad.fa-file-invoice:after{content:"\10f570"}.fad.fa-file-invoice-dollar:after{content:"\10f571"}.fad.fa-file-medical:after{content:"\10f477"}.fad.fa-file-medical-alt:after{content:"\10f478"}.fad.fa-file-minus:after{content:"\10f318"}.fad.fa-file-music:after{content:"\10f8b6"}.fad.fa-file-pdf:after{content:"\10f1c1"}.fad.fa-file-plus:after{content:"\10f319"}.fad.fa-file-powerpoint:after{content:"\10f1c4"}.fad.fa-file-prescription:after{content:"\10f572"}.fad.fa-file-search:after{content:"\10f865"}.fad.fa-file-signature:after{content:"\10f573"}.fad.fa-file-spreadsheet:after{content:"\10f65b"}.fad.fa-file-times:after{content:"\10f317"}.fad.fa-file-upload:after{content:"\10f574"}.fad.fa-file-user:after{content:"\10f65c"}.fad.fa-file-video:after{content:"\10f1c8"}.fad.fa-file-word:after{content:"\10f1c2"}.fad.fa-files-medical:after{content:"\10f7fd"}.fad.fa-fill:after{content:"\10f575"}.fad.fa-fill-drip:after{content:"\10f576"}.fad.fa-film:after{content:"\10f008"}.fad.fa-film-alt:after{content:"\10f3a0"}.fad.fa-film-canister:after{content:"\10f8b7"}.fad.fa-filter:after{content:"\10f0b0"}.fad.fa-fingerprint:after{content:"\10f577"}.fad.fa-fire:after{content:"\10f06d"}.fad.fa-fire-alt:after{content:"\10f7e4"}.fad.fa-fire-extinguisher:after{content:"\10f134"}.fad.fa-fire-smoke:after{content:"\10f74b"}.fad.fa-fireplace:after{content:"\10f79a"}.fad.fa-first-aid:after{content:"\10f479"}.fad.fa-fish:after{content:"\10f578"}.fad.fa-fish-cooked:after{content:"\10f7fe"}.fad.fa-fist-raised:after{content:"\10f6de"}.fad.fa-flag:after{content:"\10f024"}.fad.fa-flag-alt:after{content:"\10f74c"}.fad.fa-flag-checkered:after{content:"\10f11e"}.fad.fa-flag-usa:after{content:"\10f74d"}.fad.fa-flame:after{content:"\10f6df"}.fad.fa-flashlight:after{content:"\10f8b8"}.fad.fa-flask:after{content:"\10f0c3"}.fad.fa-flask-poison:after{content:"\10f6e0"}.fad.fa-flask-potion:after{content:"\10f6e1"}.fad.fa-flower:after{content:"\10f7ff"}.fad.fa-flower-daffodil:after{content:"\10f800"}.fad.fa-flower-tulip:after{content:"\10f801"}.fad.fa-flushed:after{content:"\10f579"}.fad.fa-flute:after{content:"\10f8b9"}.fad.fa-flux-capacitor:after{content:"\10f8ba"}.fad.fa-fog:after{content:"\10f74e"}.fad.fa-folder:after{content:"\10f07b"}.fad.fa-folder-minus:after{content:"\10f65d"}.fad.fa-folder-open:after{content:"\10f07c"}.fad.fa-folder-plus:after{content:"\10f65e"}.fad.fa-folder-times:after{content:"\10f65f"}.fad.fa-folder-tree:after{content:"\10f802"}.fad.fa-folders:after{content:"\10f660"}.fad.fa-font:after{content:"\10f031"}.fad.fa-font-awesome-logo-full:after{content:"\10f4e6"}.fad.fa-font-case:after{content:"\10f866"}.fad.fa-football-ball:after{content:"\10f44e"}.fad.fa-football-helmet:after{content:"\10f44f"}.fad.fa-forklift:after{content:"\10f47a"}.fad.fa-forward:after{content:"\10f04e"}.fad.fa-fragile:after{content:"\10f4bb"}.fad.fa-french-fries:after{content:"\10f803"}.fad.fa-frog:after{content:"\10f52e"}.fad.fa-frosty-head:after{content:"\10f79b"}.fad.fa-frown:after{content:"\10f119"}.fad.fa-frown-open:after{content:"\10f57a"}.fad.fa-function:after{content:"\10f661"}.fad.fa-funnel-dollar:after{content:"\10f662"}.fad.fa-futbol:after{content:"\10f1e3"}.fad.fa-galaxy:after{content:"\10f908"}.fad.fa-game-board:after{content:"\10f867"}.fad.fa-game-board-alt:after{content:"\10f868"}.fad.fa-game-console-handheld:after{content:"\10f8bb"}.fad.fa-gamepad:after{content:"\10f11b"}.fad.fa-gamepad-alt:after{content:"\10f8bc"}.fad.fa-garage:after{content:"\10f909"}.fad.fa-garage-car:after{content:"\10f90a"}.fad.fa-garage-open:after{content:"\10f90b"}.fad.fa-gas-pump:after{content:"\10f52f"}.fad.fa-gas-pump-slash:after{content:"\10f5f4"}.fad.fa-gavel:after{content:"\10f0e3"}.fad.fa-gem:after{content:"\10f3a5"}.fad.fa-genderless:after{content:"\10f22d"}.fad.fa-ghost:after{content:"\10f6e2"}.fad.fa-gift:after{content:"\10f06b"}.fad.fa-gift-card:after{content:"\10f663"}.fad.fa-gifts:after{content:"\10f79c"}.fad.fa-gingerbread-man:after{content:"\10f79d"}.fad.fa-glass:after{content:"\10f804"}.fad.fa-glass-champagne:after{content:"\10f79e"}.fad.fa-glass-cheers:after{content:"\10f79f"}.fad.fa-glass-citrus:after{content:"\10f869"}.fad.fa-glass-martini:after{content:"\10f000"}.fad.fa-glass-martini-alt:after{content:"\10f57b"}.fad.fa-glass-whiskey:after{content:"\10f7a0"}.fad.fa-glass-whiskey-rocks:after{content:"\10f7a1"}.fad.fa-glasses:after{content:"\10f530"}.fad.fa-glasses-alt:after{content:"\10f5f5"}.fad.fa-globe:after{content:"\10f0ac"}.fad.fa-globe-africa:after{content:"\10f57c"}.fad.fa-globe-americas:after{content:"\10f57d"}.fad.fa-globe-asia:after{content:"\10f57e"}.fad.fa-globe-europe:after{content:"\10f7a2"}.fad.fa-globe-snow:after{content:"\10f7a3"}.fad.fa-globe-stand:after{content:"\10f5f6"}.fad.fa-golf-ball:after{content:"\10f450"}.fad.fa-golf-club:after{content:"\10f451"}.fad.fa-gopuram:after{content:"\10f664"}.fad.fa-graduation-cap:after{content:"\10f19d"}.fad.fa-gramophone:after{content:"\10f8bd"}.fad.fa-greater-than:after{content:"\10f531"}.fad.fa-greater-than-equal:after{content:"\10f532"}.fad.fa-grimace:after{content:"\10f57f"}.fad.fa-grin:after{content:"\10f580"}.fad.fa-grin-alt:after{content:"\10f581"}.fad.fa-grin-beam:after{content:"\10f582"}.fad.fa-grin-beam-sweat:after{content:"\10f583"}.fad.fa-grin-hearts:after{content:"\10f584"}.fad.fa-grin-squint:after{content:"\10f585"}.fad.fa-grin-squint-tears:after{content:"\10f586"}.fad.fa-grin-stars:after{content:"\10f587"}.fad.fa-grin-tears:after{content:"\10f588"}.fad.fa-grin-tongue:after{content:"\10f589"}.fad.fa-grin-tongue-squint:after{content:"\10f58a"}.fad.fa-grin-tongue-wink:after{content:"\10f58b"}.fad.fa-grin-wink:after{content:"\10f58c"}.fad.fa-grip-horizontal:after{content:"\10f58d"}.fad.fa-grip-lines:after{content:"\10f7a4"}.fad.fa-grip-lines-vertical:after{content:"\10f7a5"}.fad.fa-grip-vertical:after{content:"\10f58e"}.fad.fa-guitar:after{content:"\10f7a6"}.fad.fa-guitar-electric:after{content:"\10f8be"}.fad.fa-guitars:after{content:"\10f8bf"}.fad.fa-h-square:after{content:"\10f0fd"}.fad.fa-h1:after{content:"\10f313"}.fad.fa-h2:after{content:"\10f314"}.fad.fa-h3:after{content:"\10f315"}.fad.fa-h4:after{content:"\10f86a"}.fad.fa-hamburger:after{content:"\10f805"}.fad.fa-hammer:after{content:"\10f6e3"}.fad.fa-hammer-war:after{content:"\10f6e4"}.fad.fa-hamsa:after{content:"\10f665"}.fad.fa-hand-heart:after{content:"\10f4bc"}.fad.fa-hand-holding:after{content:"\10f4bd"}.fad.fa-hand-holding-box:after{content:"\10f47b"}.fad.fa-hand-holding-heart:after{content:"\10f4be"}.fad.fa-hand-holding-magic:after{content:"\10f6e5"}.fad.fa-hand-holding-seedling:after{content:"\10f4bf"}.fad.fa-hand-holding-usd:after{content:"\10f4c0"}.fad.fa-hand-holding-water:after{content:"\10f4c1"}.fad.fa-hand-lizard:after{content:"\10f258"}.fad.fa-hand-middle-finger:after{content:"\10f806"}.fad.fa-hand-paper:after{content:"\10f256"}.fad.fa-hand-peace:after{content:"\10f25b"}.fad.fa-hand-point-down:after{content:"\10f0a7"}.fad.fa-hand-point-left:after{content:"\10f0a5"}.fad.fa-hand-point-right:after{content:"\10f0a4"}.fad.fa-hand-point-up:after{content:"\10f0a6"}.fad.fa-hand-pointer:after{content:"\10f25a"}.fad.fa-hand-receiving:after{content:"\10f47c"}.fad.fa-hand-rock:after{content:"\10f255"}.fad.fa-hand-scissors:after{content:"\10f257"}.fad.fa-hand-spock:after{content:"\10f259"}.fad.fa-hands:after{content:"\10f4c2"}.fad.fa-hands-heart:after{content:"\10f4c3"}.fad.fa-hands-helping:after{content:"\10f4c4"}.fad.fa-hands-usd:after{content:"\10f4c5"}.fad.fa-handshake:after{content:"\10f2b5"}.fad.fa-handshake-alt:after{content:"\10f4c6"}.fad.fa-hanukiah:after{content:"\10f6e6"}.fad.fa-hard-hat:after{content:"\10f807"}.fad.fa-hashtag:after{content:"\10f292"}.fad.fa-hat-chef:after{content:"\10f86b"}.fad.fa-hat-cowboy:after{content:"\10f8c0"}.fad.fa-hat-cowboy-side:after{content:"\10f8c1"}.fad.fa-hat-santa:after{content:"\10f7a7"}.fad.fa-hat-winter:after{content:"\10f7a8"}.fad.fa-hat-witch:after{content:"\10f6e7"}.fad.fa-hat-wizard:after{content:"\10f6e8"}.fad.fa-hdd:after{content:"\10f0a0"}.fad.fa-head-side:after{content:"\10f6e9"}.fad.fa-head-side-brain:after{content:"\10f808"}.fad.fa-head-side-headphones:after{content:"\10f8c2"}.fad.fa-head-side-medical:after{content:"\10f809"}.fad.fa-head-vr:after{content:"\10f6ea"}.fad.fa-heading:after{content:"\10f1dc"}.fad.fa-headphones:after{content:"\10f025"}.fad.fa-headphones-alt:after{content:"\10f58f"}.fad.fa-headset:after{content:"\10f590"}.fad.fa-heart:after{content:"\10f004"}.fad.fa-heart-broken:after{content:"\10f7a9"}.fad.fa-heart-circle:after{content:"\10f4c7"}.fad.fa-heart-rate:after{content:"\10f5f8"}.fad.fa-heart-square:after{content:"\10f4c8"}.fad.fa-heartbeat:after{content:"\10f21e"}.fad.fa-heat:after{content:"\10f90c"}.fad.fa-helicopter:after{content:"\10f533"}.fad.fa-helmet-battle:after{content:"\10f6eb"}.fad.fa-hexagon:after{content:"\10f312"}.fad.fa-highlighter:after{content:"\10f591"}.fad.fa-hiking:after{content:"\10f6ec"}.fad.fa-hippo:after{content:"\10f6ed"}.fad.fa-history:after{content:"\10f1da"}.fad.fa-hockey-mask:after{content:"\10f6ee"}.fad.fa-hockey-puck:after{content:"\10f453"}.fad.fa-hockey-sticks:after{content:"\10f454"}.fad.fa-holly-berry:after{content:"\10f7aa"}.fad.fa-home:after{content:"\10f015"}.fad.fa-home-alt:after{content:"\10f80a"}.fad.fa-home-heart:after{content:"\10f4c9"}.fad.fa-home-lg:after{content:"\10f80b"}.fad.fa-home-lg-alt:after{content:"\10f80c"}.fad.fa-hood-cloak:after{content:"\10f6ef"}.fad.fa-horizontal-rule:after{content:"\10f86c"}.fad.fa-horse:after{content:"\10f6f0"}.fad.fa-horse-head:after{content:"\10f7ab"}.fad.fa-horse-saddle:after{content:"\10f8c3"}.fad.fa-hospital:after{content:"\10f0f8"}.fad.fa-hospital-alt:after{content:"\10f47d"}.fad.fa-hospital-symbol:after{content:"\10f47e"}.fad.fa-hospital-user:after{content:"\10f80d"}.fad.fa-hospitals:after{content:"\10f80e"}.fad.fa-hot-tub:after{content:"\10f593"}.fad.fa-hotdog:after{content:"\10f80f"}.fad.fa-hotel:after{content:"\10f594"}.fad.fa-hourglass:after{content:"\10f254"}.fad.fa-hourglass-end:after{content:"\10f253"}.fad.fa-hourglass-half:after{content:"\10f252"}.fad.fa-hourglass-start:after{content:"\10f251"}.fad.fa-house:after{content:"\10f90d"}.fad.fa-house-damage:after{content:"\10f6f1"}.fad.fa-house-day:after{content:"\10f90e"}.fad.fa-house-flood:after{content:"\10f74f"}.fad.fa-house-leave:after{content:"\10f90f"}.fad.fa-house-night:after{content:"\10f910"}.fad.fa-house-return:after{content:"\10f911"}.fad.fa-house-signal:after{content:"\10f912"}.fad.fa-hryvnia:after{content:"\10f6f2"}.fad.fa-humidity:after{content:"\10f750"}.fad.fa-hurricane:after{content:"\10f751"}.fad.fa-i-cursor:after{content:"\10f246"}.fad.fa-ice-cream:after{content:"\10f810"}.fad.fa-ice-skate:after{content:"\10f7ac"}.fad.fa-icicles:after{content:"\10f7ad"}.fad.fa-icons:after{content:"\10f86d"}.fad.fa-icons-alt:after{content:"\10f86e"}.fad.fa-id-badge:after{content:"\10f2c1"}.fad.fa-id-card:after{content:"\10f2c2"}.fad.fa-id-card-alt:after{content:"\10f47f"}.fad.fa-igloo:after{content:"\10f7ae"}.fad.fa-image:after{content:"\10f03e"}.fad.fa-image-polaroid:after{content:"\10f8c4"}.fad.fa-images:after{content:"\10f302"}.fad.fa-inbox:after{content:"\10f01c"}.fad.fa-inbox-in:after{content:"\10f310"}.fad.fa-inbox-out:after{content:"\10f311"}.fad.fa-indent:after{content:"\10f03c"}.fad.fa-industry:after{content:"\10f275"}.fad.fa-industry-alt:after{content:"\10f3b3"}.fad.fa-infinity:after{content:"\10f534"}.fad.fa-info:after{content:"\10f129"}.fad.fa-info-circle:after{content:"\10f05a"}.fad.fa-info-square:after{content:"\10f30f"}.fad.fa-inhaler:after{content:"\10f5f9"}.fad.fa-integral:after{content:"\10f667"}.fad.fa-intersection:after{content:"\10f668"}.fad.fa-inventory:after{content:"\10f480"}.fad.fa-island-tropical:after{content:"\10f811"}.fad.fa-italic:after{content:"\10f033"}.fad.fa-jack-o-lantern:after{content:"\10f30e"}.fad.fa-jedi:after{content:"\10f669"}.fad.fa-joint:after{content:"\10f595"}.fad.fa-journal-whills:after{content:"\10f66a"}.fad.fa-joystick:after{content:"\10f8c5"}.fad.fa-jug:after{content:"\10f8c6"}.fad.fa-kaaba:after{content:"\10f66b"}.fad.fa-kazoo:after{content:"\10f8c7"}.fad.fa-kerning:after{content:"\10f86f"}.fad.fa-key:after{content:"\10f084"}.fad.fa-key-skeleton:after{content:"\10f6f3"}.fad.fa-keyboard:after{content:"\10f11c"}.fad.fa-keynote:after{content:"\10f66c"}.fad.fa-khanda:after{content:"\10f66d"}.fad.fa-kidneys:after{content:"\10f5fb"}.fad.fa-kiss:after{content:"\10f596"}.fad.fa-kiss-beam:after{content:"\10f597"}.fad.fa-kiss-wink-heart:after{content:"\10f598"}.fad.fa-kite:after{content:"\10f6f4"}.fad.fa-kiwi-bird:after{content:"\10f535"}.fad.fa-knife-kitchen:after{content:"\10f6f5"}.fad.fa-lambda:after{content:"\10f66e"}.fad.fa-lamp:after{content:"\10f4ca"}.fad.fa-lamp-desk:after{content:"\10f914"}.fad.fa-lamp-floor:after{content:"\10f915"}.fad.fa-landmark:after{content:"\10f66f"}.fad.fa-landmark-alt:after{content:"\10f752"}.fad.fa-language:after{content:"\10f1ab"}.fad.fa-laptop:after{content:"\10f109"}.fad.fa-laptop-code:after{content:"\10f5fc"}.fad.fa-laptop-medical:after{content:"\10f812"}.fad.fa-lasso:after{content:"\10f8c8"}.fad.fa-laugh:after{content:"\10f599"}.fad.fa-laugh-beam:after{content:"\10f59a"}.fad.fa-laugh-squint:after{content:"\10f59b"}.fad.fa-laugh-wink:after{content:"\10f59c"}.fad.fa-layer-group:after{content:"\10f5fd"}.fad.fa-layer-minus:after{content:"\10f5fe"}.fad.fa-layer-plus:after{content:"\10f5ff"}.fad.fa-leaf:after{content:"\10f06c"}.fad.fa-leaf-heart:after{content:"\10f4cb"}.fad.fa-leaf-maple:after{content:"\10f6f6"}.fad.fa-leaf-oak:after{content:"\10f6f7"}.fad.fa-lemon:after{content:"\10f094"}.fad.fa-less-than:after{content:"\10f536"}.fad.fa-less-than-equal:after{content:"\10f537"}.fad.fa-level-down:after{content:"\10f149"}.fad.fa-level-down-alt:after{content:"\10f3be"}.fad.fa-level-up:after{content:"\10f148"}.fad.fa-level-up-alt:after{content:"\10f3bf"}.fad.fa-life-ring:after{content:"\10f1cd"}.fad.fa-light-ceiling:after{content:"\10f916"}.fad.fa-light-switch:after{content:"\10f917"}.fad.fa-light-switch-off:after{content:"\10f918"}.fad.fa-light-switch-on:after{content:"\10f919"}.fad.fa-lightbulb:after{content:"\10f0eb"}.fad.fa-lightbulb-dollar:after{content:"\10f670"}.fad.fa-lightbulb-exclamation:after{content:"\10f671"}.fad.fa-lightbulb-on:after{content:"\10f672"}.fad.fa-lightbulb-slash:after{content:"\10f673"}.fad.fa-lights-holiday:after{content:"\10f7b2"}.fad.fa-line-columns:after{content:"\10f870"}.fad.fa-line-height:after{content:"\10f871"}.fad.fa-link:after{content:"\10f0c1"}.fad.fa-lips:after{content:"\10f600"}.fad.fa-lira-sign:after{content:"\10f195"}.fad.fa-list:after{content:"\10f03a"}.fad.fa-list-alt:after{content:"\10f022"}.fad.fa-list-music:after{content:"\10f8c9"}.fad.fa-list-ol:after{content:"\10f0cb"}.fad.fa-list-ul:after{content:"\10f0ca"}.fad.fa-location:after{content:"\10f601"}.fad.fa-location-arrow:after{content:"\10f124"}.fad.fa-location-circle:after{content:"\10f602"}.fad.fa-location-slash:after{content:"\10f603"}.fad.fa-lock:after{content:"\10f023"}.fad.fa-lock-alt:after{content:"\10f30d"}.fad.fa-lock-open:after{content:"\10f3c1"}.fad.fa-lock-open-alt:after{content:"\10f3c2"}.fad.fa-long-arrow-alt-down:after{content:"\10f309"}.fad.fa-long-arrow-alt-left:after{content:"\10f30a"}.fad.fa-long-arrow-alt-right:after{content:"\10f30b"}.fad.fa-long-arrow-alt-up:after{content:"\10f30c"}.fad.fa-long-arrow-down:after{content:"\10f175"}.fad.fa-long-arrow-left:after{content:"\10f177"}.fad.fa-long-arrow-right:after{content:"\10f178"}.fad.fa-long-arrow-up:after{content:"\10f176"}.fad.fa-loveseat:after{content:"\10f4cc"}.fad.fa-low-vision:after{content:"\10f2a8"}.fad.fa-luchador:after{content:"\10f455"}.fad.fa-luggage-cart:after{content:"\10f59d"}.fad.fa-lungs:after{content:"\10f604"}.fad.fa-mace:after{content:"\10f6f8"}.fad.fa-magic:after{content:"\10f0d0"}.fad.fa-magnet:after{content:"\10f076"}.fad.fa-mail-bulk:after{content:"\10f674"}.fad.fa-mailbox:after{content:"\10f813"}.fad.fa-male:after{content:"\10f183"}.fad.fa-mandolin:after{content:"\10f6f9"}.fad.fa-map:after{content:"\10f279"}.fad.fa-map-marked:after{content:"\10f59f"}.fad.fa-map-marked-alt:after{content:"\10f5a0"}.fad.fa-map-marker:after{content:"\10f041"}.fad.fa-map-marker-alt:after{content:"\10f3c5"}.fad.fa-map-marker-alt-slash:after{content:"\10f605"}.fad.fa-map-marker-check:after{content:"\10f606"}.fad.fa-map-marker-edit:after{content:"\10f607"}.fad.fa-map-marker-exclamation:after{content:"\10f608"}.fad.fa-map-marker-minus:after{content:"\10f609"}.fad.fa-map-marker-plus:after{content:"\10f60a"}.fad.fa-map-marker-question:after{content:"\10f60b"}.fad.fa-map-marker-slash:after{content:"\10f60c"}.fad.fa-map-marker-smile:after{content:"\10f60d"}.fad.fa-map-marker-times:after{content:"\10f60e"}.fad.fa-map-pin:after{content:"\10f276"}.fad.fa-map-signs:after{content:"\10f277"}.fad.fa-marker:after{content:"\10f5a1"}.fad.fa-mars:after{content:"\10f222"}.fad.fa-mars-double:after{content:"\10f227"}.fad.fa-mars-stroke:after{content:"\10f229"}.fad.fa-mars-stroke-h:after{content:"\10f22b"}.fad.fa-mars-stroke-v:after{content:"\10f22a"}.fad.fa-mask:after{content:"\10f6fa"}.fad.fa-meat:after{content:"\10f814"}.fad.fa-medal:after{content:"\10f5a2"}.fad.fa-medkit:after{content:"\10f0fa"}.fad.fa-megaphone:after{content:"\10f675"}.fad.fa-meh:after{content:"\10f11a"}.fad.fa-meh-blank:after{content:"\10f5a4"}.fad.fa-meh-rolling-eyes:after{content:"\10f5a5"}.fad.fa-memory:after{content:"\10f538"}.fad.fa-menorah:after{content:"\10f676"}.fad.fa-mercury:after{content:"\10f223"}.fad.fa-meteor:after{content:"\10f753"}.fad.fa-microchip:after{content:"\10f2db"}.fad.fa-microphone:after{content:"\10f130"}.fad.fa-microphone-alt:after{content:"\10f3c9"}.fad.fa-microphone-alt-slash:after{content:"\10f539"}.fad.fa-microphone-slash:after{content:"\10f131"}.fad.fa-microphone-stand:after{content:"\10f8cb"}.fad.fa-microscope:after{content:"\10f610"}.fad.fa-microwave:after{content:"\10f91b"}.fad.fa-mind-share:after{content:"\10f677"}.fad.fa-minus:after{content:"\10f068"}.fad.fa-minus-circle:after{content:"\10f056"}.fad.fa-minus-hexagon:after{content:"\10f307"}.fad.fa-minus-octagon:after{content:"\10f308"}.fad.fa-minus-square:after{content:"\10f146"}.fad.fa-mistletoe:after{content:"\10f7b4"}.fad.fa-mitten:after{content:"\10f7b5"}.fad.fa-mobile:after{content:"\10f10b"}.fad.fa-mobile-alt:after{content:"\10f3cd"}.fad.fa-mobile-android:after{content:"\10f3ce"}.fad.fa-mobile-android-alt:after{content:"\10f3cf"}.fad.fa-money-bill:after{content:"\10f0d6"}.fad.fa-money-bill-alt:after{content:"\10f3d1"}.fad.fa-money-bill-wave:after{content:"\10f53a"}.fad.fa-money-bill-wave-alt:after{content:"\10f53b"}.fad.fa-money-check:after{content:"\10f53c"}.fad.fa-money-check-alt:after{content:"\10f53d"}.fad.fa-money-check-edit:after{content:"\10f872"}.fad.fa-money-check-edit-alt:after{content:"\10f873"}.fad.fa-monitor-heart-rate:after{content:"\10f611"}.fad.fa-monkey:after{content:"\10f6fb"}.fad.fa-monument:after{content:"\10f5a6"}.fad.fa-moon:after{content:"\10f186"}.fad.fa-moon-cloud:after{content:"\10f754"}.fad.fa-moon-stars:after{content:"\10f755"}.fad.fa-mortar-pestle:after{content:"\10f5a7"}.fad.fa-mosque:after{content:"\10f678"}.fad.fa-motorcycle:after{content:"\10f21c"}.fad.fa-mountain:after{content:"\10f6fc"}.fad.fa-mountains:after{content:"\10f6fd"}.fad.fa-mouse:after{content:"\10f8cc"}.fad.fa-mouse-alt:after{content:"\10f8cd"}.fad.fa-mouse-pointer:after{content:"\10f245"}.fad.fa-mp3-player:after{content:"\10f8ce"}.fad.fa-mug:after{content:"\10f874"}.fad.fa-mug-hot:after{content:"\10f7b6"}.fad.fa-mug-marshmallows:after{content:"\10f7b7"}.fad.fa-mug-tea:after{content:"\10f875"}.fad.fa-music:after{content:"\10f001"}.fad.fa-music-alt:after{content:"\10f8cf"}.fad.fa-music-alt-slash:after{content:"\10f8d0"}.fad.fa-music-slash:after{content:"\10f8d1"}.fad.fa-narwhal:after{content:"\10f6fe"}.fad.fa-network-wired:after{content:"\10f6ff"}.fad.fa-neuter:after{content:"\10f22c"}.fad.fa-newspaper:after{content:"\10f1ea"}.fad.fa-not-equal:after{content:"\10f53e"}.fad.fa-notes-medical:after{content:"\10f481"}.fad.fa-object-group:after{content:"\10f247"}.fad.fa-object-ungroup:after{content:"\10f248"}.fad.fa-octagon:after{content:"\10f306"}.fad.fa-oil-can:after{content:"\10f613"}.fad.fa-oil-temp:after{content:"\10f614"}.fad.fa-om:after{content:"\10f679"}.fad.fa-omega:after{content:"\10f67a"}.fad.fa-ornament:after{content:"\10f7b8"}.fad.fa-otter:after{content:"\10f700"}.fad.fa-outdent:after{content:"\10f03b"}.fad.fa-outlet:after{content:"\10f91c"}.fad.fa-oven:after{content:"\10f91d"}.fad.fa-overline:after{content:"\10f876"}.fad.fa-page-break:after{content:"\10f877"}.fad.fa-pager:after{content:"\10f815"}.fad.fa-paint-brush:after{content:"\10f1fc"}.fad.fa-paint-brush-alt:after{content:"\10f5a9"}.fad.fa-paint-roller:after{content:"\10f5aa"}.fad.fa-palette:after{content:"\10f53f"}.fad.fa-pallet:after{content:"\10f482"}.fad.fa-pallet-alt:after{content:"\10f483"}.fad.fa-paper-plane:after{content:"\10f1d8"}.fad.fa-paperclip:after{content:"\10f0c6"}.fad.fa-parachute-box:after{content:"\10f4cd"}.fad.fa-paragraph:after{content:"\10f1dd"}.fad.fa-paragraph-rtl:after{content:"\10f878"}.fad.fa-parking:after{content:"\10f540"}.fad.fa-parking-circle:after{content:"\10f615"}.fad.fa-parking-circle-slash:after{content:"\10f616"}.fad.fa-parking-slash:after{content:"\10f617"}.fad.fa-passport:after{content:"\10f5ab"}.fad.fa-pastafarianism:after{content:"\10f67b"}.fad.fa-paste:after{content:"\10f0ea"}.fad.fa-pause:after{content:"\10f04c"}.fad.fa-pause-circle:after{content:"\10f28b"}.fad.fa-paw:after{content:"\10f1b0"}.fad.fa-paw-alt:after{content:"\10f701"}.fad.fa-paw-claws:after{content:"\10f702"}.fad.fa-peace:after{content:"\10f67c"}.fad.fa-pegasus:after{content:"\10f703"}.fad.fa-pen:after{content:"\10f304"}.fad.fa-pen-alt:after{content:"\10f305"}.fad.fa-pen-fancy:after{content:"\10f5ac"}.fad.fa-pen-nib:after{content:"\10f5ad"}.fad.fa-pen-square:after{content:"\10f14b"}.fad.fa-pencil:after{content:"\10f040"}.fad.fa-pencil-alt:after{content:"\10f303"}.fad.fa-pencil-paintbrush:after{content:"\10f618"}.fad.fa-pencil-ruler:after{content:"\10f5ae"}.fad.fa-pennant:after{content:"\10f456"}.fad.fa-people-carry:after{content:"\10f4ce"}.fad.fa-pepper-hot:after{content:"\10f816"}.fad.fa-percent:after{content:"\10f295"}.fad.fa-percentage:after{content:"\10f541"}.fad.fa-person-booth:after{content:"\10f756"}.fad.fa-person-carry:after{content:"\10f4cf"}.fad.fa-person-dolly:after{content:"\10f4d0"}.fad.fa-person-dolly-empty:after{content:"\10f4d1"}.fad.fa-person-sign:after{content:"\10f757"}.fad.fa-phone:after{content:"\10f095"}.fad.fa-phone-alt:after{content:"\10f879"}.fad.fa-phone-laptop:after{content:"\10f87a"}.fad.fa-phone-office:after{content:"\10f67d"}.fad.fa-phone-plus:after{content:"\10f4d2"}.fad.fa-phone-rotary:after{content:"\10f8d3"}.fad.fa-phone-slash:after{content:"\10f3dd"}.fad.fa-phone-square:after{content:"\10f098"}.fad.fa-phone-square-alt:after{content:"\10f87b"}.fad.fa-phone-volume:after{content:"\10f2a0"}.fad.fa-photo-video:after{content:"\10f87c"}.fad.fa-pi:after{content:"\10f67e"}.fad.fa-piano:after{content:"\10f8d4"}.fad.fa-piano-keyboard:after{content:"\10f8d5"}.fad.fa-pie:after{content:"\10f705"}.fad.fa-pig:after{content:"\10f706"}.fad.fa-piggy-bank:after{content:"\10f4d3"}.fad.fa-pills:after{content:"\10f484"}.fad.fa-pizza:after{content:"\10f817"}.fad.fa-pizza-slice:after{content:"\10f818"}.fad.fa-place-of-worship:after{content:"\10f67f"}.fad.fa-plane:after{content:"\10f072"}.fad.fa-plane-alt:after{content:"\10f3de"}.fad.fa-plane-arrival:after{content:"\10f5af"}.fad.fa-plane-departure:after{content:"\10f5b0"}.fad.fa-planet-moon:after{content:"\10f91f"}.fad.fa-planet-ringed:after{content:"\10f920"}.fad.fa-play:after{content:"\10f04b"}.fad.fa-play-circle:after{content:"\10f144"}.fad.fa-plug:after{content:"\10f1e6"}.fad.fa-plus:after{content:"\10f067"}.fad.fa-plus-circle:after{content:"\10f055"}.fad.fa-plus-hexagon:after{content:"\10f300"}.fad.fa-plus-octagon:after{content:"\10f301"}.fad.fa-plus-square:after{content:"\10f0fe"}.fad.fa-podcast:after{content:"\10f2ce"}.fad.fa-podium:after{content:"\10f680"}.fad.fa-podium-star:after{content:"\10f758"}.fad.fa-police-box:after{content:"\10f921"}.fad.fa-poll:after{content:"\10f681"}.fad.fa-poll-h:after{content:"\10f682"}.fad.fa-poll-people:after{content:"\10f759"}.fad.fa-poo:after{content:"\10f2fe"}.fad.fa-poo-storm:after{content:"\10f75a"}.fad.fa-poop:after{content:"\10f619"}.fad.fa-popcorn:after{content:"\10f819"}.fad.fa-portal-enter:after{content:"\10f922"}.fad.fa-portal-exit:after{content:"\10f923"}.fad.fa-portrait:after{content:"\10f3e0"}.fad.fa-pound-sign:after{content:"\10f154"}.fad.fa-power-off:after{content:"\10f011"}.fad.fa-pray:after{content:"\10f683"}.fad.fa-praying-hands:after{content:"\10f684"}.fad.fa-prescription:after{content:"\10f5b1"}.fad.fa-prescription-bottle:after{content:"\10f485"}.fad.fa-prescription-bottle-alt:after{content:"\10f486"}.fad.fa-presentation:after{content:"\10f685"}.fad.fa-print:after{content:"\10f02f"}.fad.fa-print-search:after{content:"\10f81a"}.fad.fa-print-slash:after{content:"\10f686"}.fad.fa-procedures:after{content:"\10f487"}.fad.fa-project-diagram:after{content:"\10f542"}.fad.fa-projector:after{content:"\10f8d6"}.fad.fa-pumpkin:after{content:"\10f707"}.fad.fa-puzzle-piece:after{content:"\10f12e"}.fad.fa-qrcode:after{content:"\10f029"}.fad.fa-question:after{content:"\10f128"}.fad.fa-question-circle:after{content:"\10f059"}.fad.fa-question-square:after{content:"\10f2fd"}.fad.fa-quidditch:after{content:"\10f458"}.fad.fa-quote-left:after{content:"\10f10d"}.fad.fa-quote-right:after{content:"\10f10e"}.fad.fa-quran:after{content:"\10f687"}.fad.fa-rabbit:after{content:"\10f708"}.fad.fa-rabbit-fast:after{content:"\10f709"}.fad.fa-racquet:after{content:"\10f45a"}.fad.fa-radar:after{content:"\10f924"}.fad.fa-radiation:after{content:"\10f7b9"}.fad.fa-radiation-alt:after{content:"\10f7ba"}.fad.fa-radio:after{content:"\10f8d7"}.fad.fa-radio-alt:after{content:"\10f8d8"}.fad.fa-rainbow:after{content:"\10f75b"}.fad.fa-raindrops:after{content:"\10f75c"}.fad.fa-ram:after{content:"\10f70a"}.fad.fa-ramp-loading:after{content:"\10f4d4"}.fad.fa-random:after{content:"\10f074"}.fad.fa-raygun:after{content:"\10f925"}.fad.fa-receipt:after{content:"\10f543"}.fad.fa-record-vinyl:after{content:"\10f8d9"}.fad.fa-rectangle-landscape:after{content:"\10f2fa"}.fad.fa-rectangle-portrait:after{content:"\10f2fb"}.fad.fa-rectangle-wide:after{content:"\10f2fc"}.fad.fa-recycle:after{content:"\10f1b8"}.fad.fa-redo:after{content:"\10f01e"}.fad.fa-redo-alt:after{content:"\10f2f9"}.fad.fa-refrigerator:after{content:"\10f926"}.fad.fa-registered:after{content:"\10f25d"}.fad.fa-remove-format:after{content:"\10f87d"}.fad.fa-repeat:after{content:"\10f363"}.fad.fa-repeat-1:after{content:"\10f365"}.fad.fa-repeat-1-alt:after{content:"\10f366"}.fad.fa-repeat-alt:after{content:"\10f364"}.fad.fa-reply:after{content:"\10f3e5"}.fad.fa-reply-all:after{content:"\10f122"}.fad.fa-republican:after{content:"\10f75e"}.fad.fa-restroom:after{content:"\10f7bd"}.fad.fa-retweet:after{content:"\10f079"}.fad.fa-retweet-alt:after{content:"\10f361"}.fad.fa-ribbon:after{content:"\10f4d6"}.fad.fa-ring:after{content:"\10f70b"}.fad.fa-rings-wedding:after{content:"\10f81b"}.fad.fa-road:after{content:"\10f018"}.fad.fa-robot:after{content:"\10f544"}.fad.fa-rocket:after{content:"\10f135"}.fad.fa-rocket-launch:after{content:"\10f927"}.fad.fa-route:after{content:"\10f4d7"}.fad.fa-route-highway:after{content:"\10f61a"}.fad.fa-route-interstate:after{content:"\10f61b"}.fad.fa-router:after{content:"\10f8da"}.fad.fa-rss:after{content:"\10f09e"}.fad.fa-rss-square:after{content:"\10f143"}.fad.fa-ruble-sign:after{content:"\10f158"}.fad.fa-ruler:after{content:"\10f545"}.fad.fa-ruler-combined:after{content:"\10f546"}.fad.fa-ruler-horizontal:after{content:"\10f547"}.fad.fa-ruler-triangle:after{content:"\10f61c"}.fad.fa-ruler-vertical:after{content:"\10f548"}.fad.fa-running:after{content:"\10f70c"}.fad.fa-rupee-sign:after{content:"\10f156"}.fad.fa-rv:after{content:"\10f7be"}.fad.fa-sack:after{content:"\10f81c"}.fad.fa-sack-dollar:after{content:"\10f81d"}.fad.fa-sad-cry:after{content:"\10f5b3"}.fad.fa-sad-tear:after{content:"\10f5b4"}.fad.fa-salad:after{content:"\10f81e"}.fad.fa-sandwich:after{content:"\10f81f"}.fad.fa-satellite:after{content:"\10f7bf"}.fad.fa-satellite-dish:after{content:"\10f7c0"}.fad.fa-sausage:after{content:"\10f820"}.fad.fa-save:after{content:"\10f0c7"}.fad.fa-sax-hot:after{content:"\10f8db"}.fad.fa-saxophone:after{content:"\10f8dc"}.fad.fa-scalpel:after{content:"\10f61d"}.fad.fa-scalpel-path:after{content:"\10f61e"}.fad.fa-scanner:after{content:"\10f488"}.fad.fa-scanner-image:after{content:"\10f8f3"}.fad.fa-scanner-keyboard:after{content:"\10f489"}.fad.fa-scanner-touchscreen:after{content:"\10f48a"}.fad.fa-scarecrow:after{content:"\10f70d"}.fad.fa-scarf:after{content:"\10f7c1"}.fad.fa-school:after{content:"\10f549"}.fad.fa-screwdriver:after{content:"\10f54a"}.fad.fa-scroll:after{content:"\10f70e"}.fad.fa-scroll-old:after{content:"\10f70f"}.fad.fa-scrubber:after{content:"\10f2f8"}.fad.fa-scythe:after{content:"\10f710"}.fad.fa-sd-card:after{content:"\10f7c2"}.fad.fa-search:after{content:"\10f002"}.fad.fa-search-dollar:after{content:"\10f688"}.fad.fa-search-location:after{content:"\10f689"}.fad.fa-search-minus:after{content:"\10f010"}.fad.fa-search-plus:after{content:"\10f00e"}.fad.fa-seedling:after{content:"\10f4d8"}.fad.fa-send-back:after{content:"\10f87e"}.fad.fa-send-backward:after{content:"\10f87f"}.fad.fa-sensor:after{content:"\10f928"}.fad.fa-sensor-alert:after{content:"\10f929"}.fad.fa-sensor-fire:after{content:"\10f92a"}.fad.fa-sensor-on:after{content:"\10f92b"}.fad.fa-sensor-smoke:after{content:"\10f92c"}.fad.fa-server:after{content:"\10f233"}.fad.fa-shapes:after{content:"\10f61f"}.fad.fa-share:after{content:"\10f064"}.fad.fa-share-all:after{content:"\10f367"}.fad.fa-share-alt:after{content:"\10f1e0"}.fad.fa-share-alt-square:after{content:"\10f1e1"}.fad.fa-share-square:after{content:"\10f14d"}.fad.fa-sheep:after{content:"\10f711"}.fad.fa-shekel-sign:after{content:"\10f20b"}.fad.fa-shield:after{content:"\10f132"}.fad.fa-shield-alt:after{content:"\10f3ed"}.fad.fa-shield-check:after{content:"\10f2f7"}.fad.fa-shield-cross:after{content:"\10f712"}.fad.fa-ship:after{content:"\10f21a"}.fad.fa-shipping-fast:after{content:"\10f48b"}.fad.fa-shipping-timed:after{content:"\10f48c"}.fad.fa-shish-kebab:after{content:"\10f821"}.fad.fa-shoe-prints:after{content:"\10f54b"}.fad.fa-shopping-bag:after{content:"\10f290"}.fad.fa-shopping-basket:after{content:"\10f291"}.fad.fa-shopping-cart:after{content:"\10f07a"}.fad.fa-shovel:after{content:"\10f713"}.fad.fa-shovel-snow:after{content:"\10f7c3"}.fad.fa-shower:after{content:"\10f2cc"}.fad.fa-shredder:after{content:"\10f68a"}.fad.fa-shuttle-van:after{content:"\10f5b6"}.fad.fa-shuttlecock:after{content:"\10f45b"}.fad.fa-sickle:after{content:"\10f822"}.fad.fa-sigma:after{content:"\10f68b"}.fad.fa-sign:after{content:"\10f4d9"}.fad.fa-sign-in:after{content:"\10f090"}.fad.fa-sign-in-alt:after{content:"\10f2f6"}.fad.fa-sign-language:after{content:"\10f2a7"}.fad.fa-sign-out:after{content:"\10f08b"}.fad.fa-sign-out-alt:after{content:"\10f2f5"}.fad.fa-signal:after{content:"\10f012"}.fad.fa-signal-1:after{content:"\10f68c"}.fad.fa-signal-2:after{content:"\10f68d"}.fad.fa-signal-3:after{content:"\10f68e"}.fad.fa-signal-4:after{content:"\10f68f"}.fad.fa-signal-alt:after{content:"\10f690"}.fad.fa-signal-alt-1:after{content:"\10f691"}.fad.fa-signal-alt-2:after{content:"\10f692"}.fad.fa-signal-alt-3:after{content:"\10f693"}.fad.fa-signal-alt-slash:after{content:"\10f694"}.fad.fa-signal-slash:after{content:"\10f695"}.fad.fa-signal-stream:after{content:"\10f8dd"}.fad.fa-signature:after{content:"\10f5b7"}.fad.fa-sim-card:after{content:"\10f7c4"}.fad.fa-siren:after{content:"\10f92d"}.fad.fa-siren-on:after{content:"\10f92e"}.fad.fa-sitemap:after{content:"\10f0e8"}.fad.fa-skating:after{content:"\10f7c5"}.fad.fa-skeleton:after{content:"\10f620"}.fad.fa-ski-jump:after{content:"\10f7c7"}.fad.fa-ski-lift:after{content:"\10f7c8"}.fad.fa-skiing:after{content:"\10f7c9"}.fad.fa-skiing-nordic:after{content:"\10f7ca"}.fad.fa-skull:after{content:"\10f54c"}.fad.fa-skull-cow:after{content:"\10f8de"}.fad.fa-skull-crossbones:after{content:"\10f714"}.fad.fa-slash:after{content:"\10f715"}.fad.fa-sledding:after{content:"\10f7cb"}.fad.fa-sleigh:after{content:"\10f7cc"}.fad.fa-sliders-h:after{content:"\10f1de"}.fad.fa-sliders-h-square:after{content:"\10f3f0"}.fad.fa-sliders-v:after{content:"\10f3f1"}.fad.fa-sliders-v-square:after{content:"\10f3f2"}.fad.fa-smile:after{content:"\10f118"}.fad.fa-smile-beam:after{content:"\10f5b8"}.fad.fa-smile-plus:after{content:"\10f5b9"}.fad.fa-smile-wink:after{content:"\10f4da"}.fad.fa-smog:after{content:"\10f75f"}.fad.fa-smoke:after{content:"\10f760"}.fad.fa-smoking:after{content:"\10f48d"}.fad.fa-smoking-ban:after{content:"\10f54d"}.fad.fa-sms:after{content:"\10f7cd"}.fad.fa-snake:after{content:"\10f716"}.fad.fa-snooze:after{content:"\10f880"}.fad.fa-snow-blowing:after{content:"\10f761"}.fad.fa-snowboarding:after{content:"\10f7ce"}.fad.fa-snowflake:after{content:"\10f2dc"}.fad.fa-snowflakes:after{content:"\10f7cf"}.fad.fa-snowman:after{content:"\10f7d0"}.fad.fa-snowmobile:after{content:"\10f7d1"}.fad.fa-snowplow:after{content:"\10f7d2"}.fad.fa-socks:after{content:"\10f696"}.fad.fa-solar-panel:after{content:"\10f5ba"}.fad.fa-solar-system:after{content:"\10f92f"}.fad.fa-sort:after{content:"\10f0dc"}.fad.fa-sort-alpha-down:after{content:"\10f15d"}.fad.fa-sort-alpha-down-alt:after{content:"\10f881"}.fad.fa-sort-alpha-up:after{content:"\10f15e"}.fad.fa-sort-alpha-up-alt:after{content:"\10f882"}.fad.fa-sort-alt:after{content:"\10f883"}.fad.fa-sort-amount-down:after{content:"\10f160"}.fad.fa-sort-amount-down-alt:after{content:"\10f884"}.fad.fa-sort-amount-up:after{content:"\10f161"}.fad.fa-sort-amount-up-alt:after{content:"\10f885"}.fad.fa-sort-circle:after{content:"\10f930"}.fad.fa-sort-circle-down:after{content:"\10f931"}.fad.fa-sort-circle-up:after{content:"\10f932"}.fad.fa-sort-down:after{content:"\10f0dd"}.fad.fa-sort-numeric-down:after{content:"\10f162"}.fad.fa-sort-numeric-down-alt:after{content:"\10f886"}.fad.fa-sort-numeric-up:after{content:"\10f163"}.fad.fa-sort-numeric-up-alt:after{content:"\10f887"}.fad.fa-sort-shapes-down:after{content:"\10f888"}.fad.fa-sort-shapes-down-alt:after{content:"\10f889"}.fad.fa-sort-shapes-up:after{content:"\10f88a"}.fad.fa-sort-shapes-up-alt:after{content:"\10f88b"}.fad.fa-sort-size-down:after{content:"\10f88c"}.fad.fa-sort-size-down-alt:after{content:"\10f88d"}.fad.fa-sort-size-up:after{content:"\10f88e"}.fad.fa-sort-size-up-alt:after{content:"\10f88f"}.fad.fa-sort-up:after{content:"\10f0de"}.fad.fa-soup:after{content:"\10f823"}.fad.fa-spa:after{content:"\10f5bb"}.fad.fa-space-shuttle:after{content:"\10f197"}.fad.fa-space-station-moon:after{content:"\10f933"}.fad.fa-space-station-moon-alt:after{content:"\10f934"}.fad.fa-spade:after{content:"\10f2f4"}.fad.fa-sparkles:after{content:"\10f890"}.fad.fa-speaker:after{content:"\10f8df"}.fad.fa-speakers:after{content:"\10f8e0"}.fad.fa-spell-check:after{content:"\10f891"}.fad.fa-spider:after{content:"\10f717"}.fad.fa-spider-black-widow:after{content:"\10f718"}.fad.fa-spider-web:after{content:"\10f719"}.fad.fa-spinner:after{content:"\10f110"}.fad.fa-spinner-third:after{content:"\10f3f4"}.fad.fa-splotch:after{content:"\10f5bc"}.fad.fa-spray-can:after{content:"\10f5bd"}.fad.fa-sprinkler:after{content:"\10f935"}.fad.fa-square:after{content:"\10f0c8"}.fad.fa-square-full:after{content:"\10f45c"}.fad.fa-square-root:after{content:"\10f697"}.fad.fa-square-root-alt:after{content:"\10f698"}.fad.fa-squirrel:after{content:"\10f71a"}.fad.fa-staff:after{content:"\10f71b"}.fad.fa-stamp:after{content:"\10f5bf"}.fad.fa-star:after{content:"\10f005"}.fad.fa-star-and-crescent:after{content:"\10f699"}.fad.fa-star-christmas:after{content:"\10f7d4"}.fad.fa-star-exclamation:after{content:"\10f2f3"}.fad.fa-star-half:after{content:"\10f089"}.fad.fa-star-half-alt:after{content:"\10f5c0"}.fad.fa-star-of-david:after{content:"\10f69a"}.fad.fa-star-of-life:after{content:"\10f621"}.fad.fa-star-shooting:after{content:"\10f936"}.fad.fa-starfighter:after{content:"\10f937"}.fad.fa-starfighter-alt:after{content:"\10f938"}.fad.fa-stars:after{content:"\10f762"}.fad.fa-starship:after{content:"\10f939"}.fad.fa-starship-freighter:after{content:"\10f93a"}.fad.fa-steak:after{content:"\10f824"}.fad.fa-steering-wheel:after{content:"\10f622"}.fad.fa-step-backward:after{content:"\10f048"}.fad.fa-step-forward:after{content:"\10f051"}.fad.fa-stethoscope:after{content:"\10f0f1"}.fad.fa-sticky-note:after{content:"\10f249"}.fad.fa-stocking:after{content:"\10f7d5"}.fad.fa-stomach:after{content:"\10f623"}.fad.fa-stop:after{content:"\10f04d"}.fad.fa-stop-circle:after{content:"\10f28d"}.fad.fa-stopwatch:after{content:"\10f2f2"}.fad.fa-store:after{content:"\10f54e"}.fad.fa-store-alt:after{content:"\10f54f"}.fad.fa-stream:after{content:"\10f550"}.fad.fa-street-view:after{content:"\10f21d"}.fad.fa-stretcher:after{content:"\10f825"}.fad.fa-strikethrough:after{content:"\10f0cc"}.fad.fa-stroopwafel:after{content:"\10f551"}.fad.fa-subscript:after{content:"\10f12c"}.fad.fa-subway:after{content:"\10f239"}.fad.fa-suitcase:after{content:"\10f0f2"}.fad.fa-suitcase-rolling:after{content:"\10f5c1"}.fad.fa-sun:after{content:"\10f185"}.fad.fa-sun-cloud:after{content:"\10f763"}.fad.fa-sun-dust:after{content:"\10f764"}.fad.fa-sun-haze:after{content:"\10f765"}.fad.fa-sunglasses:after{content:"\10f892"}.fad.fa-sunrise:after{content:"\10f766"}.fad.fa-sunset:after{content:"\10f767"}.fad.fa-superscript:after{content:"\10f12b"}.fad.fa-surprise:after{content:"\10f5c2"}.fad.fa-swatchbook:after{content:"\10f5c3"}.fad.fa-swimmer:after{content:"\10f5c4"}.fad.fa-swimming-pool:after{content:"\10f5c5"}.fad.fa-sword:after{content:"\10f71c"}.fad.fa-sword-laser:after{content:"\10f93b"}.fad.fa-sword-laser-alt:after{content:"\10f93c"}.fad.fa-swords:after{content:"\10f71d"}.fad.fa-swords-laser:after{content:"\10f93d"}.fad.fa-synagogue:after{content:"\10f69b"}.fad.fa-sync:after{content:"\10f021"}.fad.fa-sync-alt:after{content:"\10f2f1"}.fad.fa-syringe:after{content:"\10f48e"}.fad.fa-table:after{content:"\10f0ce"}.fad.fa-table-tennis:after{content:"\10f45d"}.fad.fa-tablet:after{content:"\10f10a"}.fad.fa-tablet-alt:after{content:"\10f3fa"}.fad.fa-tablet-android:after{content:"\10f3fb"}.fad.fa-tablet-android-alt:after{content:"\10f3fc"}.fad.fa-tablet-rugged:after{content:"\10f48f"}.fad.fa-tablets:after{content:"\10f490"}.fad.fa-tachometer:after{content:"\10f0e4"}.fad.fa-tachometer-alt:after{content:"\10f3fd"}.fad.fa-tachometer-alt-average:after{content:"\10f624"}.fad.fa-tachometer-alt-fast:after{content:"\10f625"}.fad.fa-tachometer-alt-fastest:after{content:"\10f626"}.fad.fa-tachometer-alt-slow:after{content:"\10f627"}.fad.fa-tachometer-alt-slowest:after{content:"\10f628"}.fad.fa-tachometer-average:after{content:"\10f629"}.fad.fa-tachometer-fast:after{content:"\10f62a"}.fad.fa-tachometer-fastest:after{content:"\10f62b"}.fad.fa-tachometer-slow:after{content:"\10f62c"}.fad.fa-tachometer-slowest:after{content:"\10f62d"}.fad.fa-taco:after{content:"\10f826"}.fad.fa-tag:after{content:"\10f02b"}.fad.fa-tags:after{content:"\10f02c"}.fad.fa-tally:after{content:"\10f69c"}.fad.fa-tanakh:after{content:"\10f827"}.fad.fa-tape:after{content:"\10f4db"}.fad.fa-tasks:after{content:"\10f0ae"}.fad.fa-tasks-alt:after{content:"\10f828"}.fad.fa-taxi:after{content:"\10f1ba"}.fad.fa-teeth:after{content:"\10f62e"}.fad.fa-teeth-open:after{content:"\10f62f"}.fad.fa-telescope:after{content:"\10f93e"}.fad.fa-temperature-down:after{content:"\10f93f"}.fad.fa-temperature-frigid:after{content:"\10f768"}.fad.fa-temperature-high:after{content:"\10f769"}.fad.fa-temperature-hot:after{content:"\10f76a"}.fad.fa-temperature-low:after{content:"\10f76b"}.fad.fa-temperature-up:after{content:"\10f940"}.fad.fa-tenge:after{content:"\10f7d7"}.fad.fa-tennis-ball:after{content:"\10f45e"}.fad.fa-terminal:after{content:"\10f120"}.fad.fa-text:after{content:"\10f893"}.fad.fa-text-height:after{content:"\10f034"}.fad.fa-text-size:after{content:"\10f894"}.fad.fa-text-width:after{content:"\10f035"}.fad.fa-th:after{content:"\10f00a"}.fad.fa-th-large:after{content:"\10f009"}.fad.fa-th-list:after{content:"\10f00b"}.fad.fa-theater-masks:after{content:"\10f630"}.fad.fa-thermometer:after{content:"\10f491"}.fad.fa-thermometer-empty:after{content:"\10f2cb"}.fad.fa-thermometer-full:after{content:"\10f2c7"}.fad.fa-thermometer-half:after{content:"\10f2c9"}.fad.fa-thermometer-quarter:after{content:"\10f2ca"}.fad.fa-thermometer-three-quarters:after{content:"\10f2c8"}.fad.fa-theta:after{content:"\10f69e"}.fad.fa-thumbs-down:after{content:"\10f165"}.fad.fa-thumbs-up:after{content:"\10f164"}.fad.fa-thumbtack:after{content:"\10f08d"}.fad.fa-thunderstorm:after{content:"\10f76c"}.fad.fa-thunderstorm-moon:after{content:"\10f76d"}.fad.fa-thunderstorm-sun:after{content:"\10f76e"}.fad.fa-ticket:after{content:"\10f145"}.fad.fa-ticket-alt:after{content:"\10f3ff"}.fad.fa-tilde:after{content:"\10f69f"}.fad.fa-times:after{content:"\10f00d"}.fad.fa-times-circle:after{content:"\10f057"}.fad.fa-times-hexagon:after{content:"\10f2ee"}.fad.fa-times-octagon:after{content:"\10f2f0"}.fad.fa-times-square:after{content:"\10f2d3"}.fad.fa-tint:after{content:"\10f043"}.fad.fa-tint-slash:after{content:"\10f5c7"}.fad.fa-tire:after{content:"\10f631"}.fad.fa-tire-flat:after{content:"\10f632"}.fad.fa-tire-pressure-warning:after{content:"\10f633"}.fad.fa-tire-rugged:after{content:"\10f634"}.fad.fa-tired:after{content:"\10f5c8"}.fad.fa-toggle-off:after{content:"\10f204"}.fad.fa-toggle-on:after{content:"\10f205"}.fad.fa-toilet:after{content:"\10f7d8"}.fad.fa-toilet-paper:after{content:"\10f71e"}.fad.fa-toilet-paper-alt:after{content:"\10f71f"}.fad.fa-tombstone:after{content:"\10f720"}.fad.fa-tombstone-alt:after{content:"\10f721"}.fad.fa-toolbox:after{content:"\10f552"}.fad.fa-tools:after{content:"\10f7d9"}.fad.fa-tooth:after{content:"\10f5c9"}.fad.fa-toothbrush:after{content:"\10f635"}.fad.fa-torah:after{content:"\10f6a0"}.fad.fa-torii-gate:after{content:"\10f6a1"}.fad.fa-tornado:after{content:"\10f76f"}.fad.fa-tractor:after{content:"\10f722"}.fad.fa-trademark:after{content:"\10f25c"}.fad.fa-traffic-cone:after{content:"\10f636"}.fad.fa-traffic-light:after{content:"\10f637"}.fad.fa-traffic-light-go:after{content:"\10f638"}.fad.fa-traffic-light-slow:after{content:"\10f639"}.fad.fa-traffic-light-stop:after{content:"\10f63a"}.fad.fa-trailer:after{content:"\10f941"}.fad.fa-train:after{content:"\10f238"}.fad.fa-tram:after{content:"\10f7da"}.fad.fa-transgender:after{content:"\10f224"}.fad.fa-transgender-alt:after{content:"\10f225"}.fad.fa-transporter:after{content:"\10f942"}.fad.fa-transporter-1:after{content:"\10f943"}.fad.fa-transporter-2:after{content:"\10f944"}.fad.fa-transporter-3:after{content:"\10f945"}.fad.fa-transporter-empty:after{content:"\10f946"}.fad.fa-trash:after{content:"\10f1f8"}.fad.fa-trash-alt:after{content:"\10f2ed"}.fad.fa-trash-restore:after{content:"\10f829"}.fad.fa-trash-restore-alt:after{content:"\10f82a"}.fad.fa-trash-undo:after{content:"\10f895"}.fad.fa-trash-undo-alt:after{content:"\10f896"}.fad.fa-treasure-chest:after{content:"\10f723"}.fad.fa-tree:after{content:"\10f1bb"}.fad.fa-tree-alt:after{content:"\10f400"}.fad.fa-tree-christmas:after{content:"\10f7db"}.fad.fa-tree-decorated:after{content:"\10f7dc"}.fad.fa-tree-large:after{content:"\10f7dd"}.fad.fa-tree-palm:after{content:"\10f82b"}.fad.fa-trees:after{content:"\10f724"}.fad.fa-triangle:after{content:"\10f2ec"}.fad.fa-triangle-music:after{content:"\10f8e2"}.fad.fa-trophy:after{content:"\10f091"}.fad.fa-trophy-alt:after{content:"\10f2eb"}.fad.fa-truck:after{content:"\10f0d1"}.fad.fa-truck-container:after{content:"\10f4dc"}.fad.fa-truck-couch:after{content:"\10f4dd"}.fad.fa-truck-loading:after{content:"\10f4de"}.fad.fa-truck-monster:after{content:"\10f63b"}.fad.fa-truck-moving:after{content:"\10f4df"}.fad.fa-truck-pickup:after{content:"\10f63c"}.fad.fa-truck-plow:after{content:"\10f7de"}.fad.fa-truck-ramp:after{content:"\10f4e0"}.fad.fa-trumpet:after{content:"\10f8e3"}.fad.fa-tshirt:after{content:"\10f553"}.fad.fa-tty:after{content:"\10f1e4"}.fad.fa-turkey:after{content:"\10f725"}.fad.fa-turntable:after{content:"\10f8e4"}.fad.fa-turtle:after{content:"\10f726"}.fad.fa-tv:after{content:"\10f26c"}.fad.fa-tv-alt:after{content:"\10f8e5"}.fad.fa-tv-music:after{content:"\10f8e6"}.fad.fa-tv-retro:after{content:"\10f401"}.fad.fa-typewriter:after{content:"\10f8e7"}.fad.fa-ufo:after{content:"\10f947"}.fad.fa-ufo-beam:after{content:"\10f948"}.fad.fa-umbrella:after{content:"\10f0e9"}.fad.fa-umbrella-beach:after{content:"\10f5ca"}.fad.fa-underline:after{content:"\10f0cd"}.fad.fa-undo:after{content:"\10f0e2"}.fad.fa-undo-alt:after{content:"\10f2ea"}.fad.fa-unicorn:after{content:"\10f727"}.fad.fa-union:after{content:"\10f6a2"}.fad.fa-universal-access:after{content:"\10f29a"}.fad.fa-university:after{content:"\10f19c"}.fad.fa-unlink:after{content:"\10f127"}.fad.fa-unlock:after{content:"\10f09c"}.fad.fa-unlock-alt:after{content:"\10f13e"}.fad.fa-upload:after{content:"\10f093"}.fad.fa-usb-drive:after{content:"\10f8e9"}.fad.fa-usd-circle:after{content:"\10f2e8"}.fad.fa-usd-square:after{content:"\10f2e9"}.fad.fa-user:after{content:"\10f007"}.fad.fa-user-alien:after{content:"\10f94a"}.fad.fa-user-alt:after{content:"\10f406"}.fad.fa-user-alt-slash:after{content:"\10f4fa"}.fad.fa-user-astronaut:after{content:"\10f4fb"}.fad.fa-user-chart:after{content:"\10f6a3"}.fad.fa-user-check:after{content:"\10f4fc"}.fad.fa-user-circle:after{content:"\10f2bd"}.fad.fa-user-clock:after{content:"\10f4fd"}.fad.fa-user-cog:after{content:"\10f4fe"}.fad.fa-user-cowboy:after{content:"\10f8ea"}.fad.fa-user-crown:after{content:"\10f6a4"}.fad.fa-user-edit:after{content:"\10f4ff"}.fad.fa-user-friends:after{content:"\10f500"}.fad.fa-user-graduate:after{content:"\10f501"}.fad.fa-user-hard-hat:after{content:"\10f82c"}.fad.fa-user-headset:after{content:"\10f82d"}.fad.fa-user-injured:after{content:"\10f728"}.fad.fa-user-lock:after{content:"\10f502"}.fad.fa-user-md:after{content:"\10f0f0"}.fad.fa-user-md-chat:after{content:"\10f82e"}.fad.fa-user-minus:after{content:"\10f503"}.fad.fa-user-music:after{content:"\10f8eb"}.fad.fa-user-ninja:after{content:"\10f504"}.fad.fa-user-nurse:after{content:"\10f82f"}.fad.fa-user-plus:after{content:"\10f234"}.fad.fa-user-robot:after{content:"\10f94b"}.fad.fa-user-secret:after{content:"\10f21b"}.fad.fa-user-shield:after{content:"\10f505"}.fad.fa-user-slash:after{content:"\10f506"}.fad.fa-user-tag:after{content:"\10f507"}.fad.fa-user-tie:after{content:"\10f508"}.fad.fa-user-times:after{content:"\10f235"}.fad.fa-user-visor:after{content:"\10f94c"}.fad.fa-users:after{content:"\10f0c0"}.fad.fa-users-class:after{content:"\10f63d"}.fad.fa-users-cog:after{content:"\10f509"}.fad.fa-users-crown:after{content:"\10f6a5"}.fad.fa-users-medical:after{content:"\10f830"}.fad.fa-utensil-fork:after{content:"\10f2e3"}.fad.fa-utensil-knife:after{content:"\10f2e4"}.fad.fa-utensil-spoon:after{content:"\10f2e5"}.fad.fa-utensils:after{content:"\10f2e7"}.fad.fa-utensils-alt:after{content:"\10f2e6"}.fad.fa-vacuum:after{content:"\10f94d"}.fad.fa-vacuum-robot:after{content:"\10f94e"}.fad.fa-value-absolute:after{content:"\10f6a6"}.fad.fa-vector-square:after{content:"\10f5cb"}.fad.fa-venus:after{content:"\10f221"}.fad.fa-venus-double:after{content:"\10f226"}.fad.fa-venus-mars:after{content:"\10f228"}.fad.fa-vhs:after{content:"\10f8ec"}.fad.fa-vial:after{content:"\10f492"}.fad.fa-vials:after{content:"\10f493"}.fad.fa-video:after{content:"\10f03d"}.fad.fa-video-plus:after{content:"\10f4e1"}.fad.fa-video-slash:after{content:"\10f4e2"}.fad.fa-vihara:after{content:"\10f6a7"}.fad.fa-violin:after{content:"\10f8ed"}.fad.fa-voicemail:after{content:"\10f897"}.fad.fa-volcano:after{content:"\10f770"}.fad.fa-volleyball-ball:after{content:"\10f45f"}.fad.fa-volume:after{content:"\10f6a8"}.fad.fa-volume-down:after{content:"\10f027"}.fad.fa-volume-mute:after{content:"\10f6a9"}.fad.fa-volume-off:after{content:"\10f026"}.fad.fa-volume-slash:after{content:"\10f2e2"}.fad.fa-volume-up:after{content:"\10f028"}.fad.fa-vote-nay:after{content:"\10f771"}.fad.fa-vote-yea:after{content:"\10f772"}.fad.fa-vr-cardboard:after{content:"\10f729"}.fad.fa-wagon-covered:after{content:"\10f8ee"}.fad.fa-walker:after{content:"\10f831"}.fad.fa-walkie-talkie:after{content:"\10f8ef"}.fad.fa-walking:after{content:"\10f554"}.fad.fa-wallet:after{content:"\10f555"}.fad.fa-wand:after{content:"\10f72a"}.fad.fa-wand-magic:after{content:"\10f72b"}.fad.fa-warehouse:after{content:"\10f494"}.fad.fa-warehouse-alt:after{content:"\10f495"}.fad.fa-washer:after{content:"\10f898"}.fad.fa-watch:after{content:"\10f2e1"}.fad.fa-watch-calculator:after{content:"\10f8f0"}.fad.fa-watch-fitness:after{content:"\10f63e"}.fad.fa-water:after{content:"\10f773"}.fad.fa-water-lower:after{content:"\10f774"}.fad.fa-water-rise:after{content:"\10f775"}.fad.fa-wave-sine:after{content:"\10f899"}.fad.fa-wave-square:after{content:"\10f83e"}.fad.fa-wave-triangle:after{content:"\10f89a"}.fad.fa-waveform:after{content:"\10f8f1"}.fad.fa-waveform-path:after{content:"\10f8f2"}.fad.fa-webcam:after{content:"\10f832"}.fad.fa-webcam-slash:after{content:"\10f833"}.fad.fa-weight:after{content:"\10f496"}.fad.fa-weight-hanging:after{content:"\10f5cd"}.fad.fa-whale:after{content:"\10f72c"}.fad.fa-wheat:after{content:"\10f72d"}.fad.fa-wheelchair:after{content:"\10f193"}.fad.fa-whistle:after{content:"\10f460"}.fad.fa-wifi:after{content:"\10f1eb"}.fad.fa-wifi-1:after{content:"\10f6aa"}.fad.fa-wifi-2:after{content:"\10f6ab"}.fad.fa-wifi-slash:after{content:"\10f6ac"}.fad.fa-wind:after{content:"\10f72e"}.fad.fa-wind-turbine:after{content:"\10f89b"}.fad.fa-wind-warning:after{content:"\10f776"}.fad.fa-window:after{content:"\10f40e"}.fad.fa-window-alt:after{content:"\10f40f"}.fad.fa-window-close:after{content:"\10f410"}.fad.fa-window-frame:after{content:"\10f94f"}.fad.fa-window-frame-open:after{content:"\10f950"}.fad.fa-window-maximize:after{content:"\10f2d0"}.fad.fa-window-minimize:after{content:"\10f2d1"}.fad.fa-window-restore:after{content:"\10f2d2"}.fad.fa-windsock:after{content:"\10f777"}.fad.fa-wine-bottle:after{content:"\10f72f"}.fad.fa-wine-glass:after{content:"\10f4e3"}.fad.fa-wine-glass-alt:after{content:"\10f5ce"}.fad.fa-won-sign:after{content:"\10f159"}.fad.fa-wreath:after{content:"\10f7e2"}.fad.fa-wrench:after{content:"\10f0ad"}.fad.fa-x-ray:after{content:"\10f497"}.fad.fa-yen-sign:after{content:"\10f157"}.fad.fa-yin-yang:after{content:"\10f6ad"}@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:300;font-display:auto;src:url(../webfonts/fa-light-300.eot);src:url(../webfonts/fa-light-300.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.woff) format("woff"),url(../webfonts/fa-light-300.ttf) format("truetype"),url(../webfonts/fa-light-300.svg#fontawesome) format("svg")}.fal{font-weight:300}@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fal,.far{font-family:"Font Awesome 5 Pro"}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Pro";font-weight:900}
\ No newline at end of file
diff --git a/static/css/fontawesome/webfonts/fa-brands-400.eot b/static/css/fontawesome/webfonts/fa-brands-400.eot
new file mode 100644
index 0000000..ff42eeb
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-brands-400.eot differ
diff --git a/static/css/fontawesome/webfonts/fa-brands-400.svg b/static/css/fontawesome/webfonts/fa-brands-400.svg
new file mode 100644
index 0000000..3613b35
--- /dev/null
+++ b/static/css/fontawesome/webfonts/fa-brands-400.svg
@@ -0,0 +1,3535 @@
+
+
+
+
+
+Created by FontForge 20190801 at Tue Dec 10 16:08:44 2019
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/css/fontawesome/webfonts/fa-brands-400.ttf b/static/css/fontawesome/webfonts/fa-brands-400.ttf
new file mode 100644
index 0000000..79b6bae
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-brands-400.ttf differ
diff --git a/static/css/fontawesome/webfonts/fa-brands-400.woff b/static/css/fontawesome/webfonts/fa-brands-400.woff
new file mode 100644
index 0000000..56d4bbb
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-brands-400.woff differ
diff --git a/static/css/fontawesome/webfonts/fa-brands-400.woff2 b/static/css/fontawesome/webfonts/fa-brands-400.woff2
new file mode 100644
index 0000000..8a83663
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-brands-400.woff2 differ
diff --git a/static/css/fontawesome/webfonts/fa-duotone-900.eot b/static/css/fontawesome/webfonts/fa-duotone-900.eot
new file mode 100644
index 0000000..6ca4482
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-duotone-900.eot differ
diff --git a/static/css/fontawesome/webfonts/fa-duotone-900.svg b/static/css/fontawesome/webfonts/fa-duotone-900.svg
new file mode 100644
index 0000000..43d3417
--- /dev/null
+++ b/static/css/fontawesome/webfonts/fa-duotone-900.svg
@@ -0,0 +1,14692 @@
+
+
+
+
+
+Created by FontForge 20190801 at Tue Dec 10 16:08:45 2019
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/css/fontawesome/webfonts/fa-duotone-900.ttf b/static/css/fontawesome/webfonts/fa-duotone-900.ttf
new file mode 100644
index 0000000..b1a5e7e
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-duotone-900.ttf differ
diff --git a/static/css/fontawesome/webfonts/fa-duotone-900.woff b/static/css/fontawesome/webfonts/fa-duotone-900.woff
new file mode 100644
index 0000000..de2ce75
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-duotone-900.woff differ
diff --git a/static/css/fontawesome/webfonts/fa-duotone-900.woff2 b/static/css/fontawesome/webfonts/fa-duotone-900.woff2
new file mode 100644
index 0000000..0d57b19
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-duotone-900.woff2 differ
diff --git a/static/css/fontawesome/webfonts/fa-light-300.eot b/static/css/fontawesome/webfonts/fa-light-300.eot
new file mode 100644
index 0000000..5051b87
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-light-300.eot differ
diff --git a/static/css/fontawesome/webfonts/fa-light-300.svg b/static/css/fontawesome/webfonts/fa-light-300.svg
new file mode 100644
index 0000000..48908c4
--- /dev/null
+++ b/static/css/fontawesome/webfonts/fa-light-300.svg
@@ -0,0 +1,11936 @@
+
+
+
+
+
+Created by FontForge 20190801 at Tue Dec 10 16:08:46 2019
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/css/fontawesome/webfonts/fa-light-300.ttf b/static/css/fontawesome/webfonts/fa-light-300.ttf
new file mode 100644
index 0000000..34489d0
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-light-300.ttf differ
diff --git a/static/css/fontawesome/webfonts/fa-light-300.woff b/static/css/fontawesome/webfonts/fa-light-300.woff
new file mode 100644
index 0000000..414c107
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-light-300.woff differ
diff --git a/static/css/fontawesome/webfonts/fa-light-300.woff2 b/static/css/fontawesome/webfonts/fa-light-300.woff2
new file mode 100644
index 0000000..d49e7e2
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-light-300.woff2 differ
diff --git a/static/css/fontawesome/webfonts/fa-regular-400.eot b/static/css/fontawesome/webfonts/fa-regular-400.eot
new file mode 100644
index 0000000..4c6662f
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-regular-400.eot differ
diff --git a/static/css/fontawesome/webfonts/fa-regular-400.svg b/static/css/fontawesome/webfonts/fa-regular-400.svg
new file mode 100644
index 0000000..32aae12
--- /dev/null
+++ b/static/css/fontawesome/webfonts/fa-regular-400.svg
@@ -0,0 +1,10905 @@
+
+
+
+
+
+Created by FontForge 20190801 at Tue Dec 10 16:08:46 2019
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/css/fontawesome/webfonts/fa-regular-400.ttf b/static/css/fontawesome/webfonts/fa-regular-400.ttf
new file mode 100644
index 0000000..2da2b23
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-regular-400.ttf differ
diff --git a/static/css/fontawesome/webfonts/fa-regular-400.woff b/static/css/fontawesome/webfonts/fa-regular-400.woff
new file mode 100644
index 0000000..ae20cd5
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-regular-400.woff differ
diff --git a/static/css/fontawesome/webfonts/fa-regular-400.woff2 b/static/css/fontawesome/webfonts/fa-regular-400.woff2
new file mode 100644
index 0000000..783cfcf
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-regular-400.woff2 differ
diff --git a/static/css/fontawesome/webfonts/fa-solid-900.eot b/static/css/fontawesome/webfonts/fa-solid-900.eot
new file mode 100644
index 0000000..cbcc72f
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-solid-900.eot differ
diff --git a/static/css/fontawesome/webfonts/fa-solid-900.svg b/static/css/fontawesome/webfonts/fa-solid-900.svg
new file mode 100644
index 0000000..190c4c8
--- /dev/null
+++ b/static/css/fontawesome/webfonts/fa-solid-900.svg
@@ -0,0 +1,9297 @@
+
+
+
+
+
+Created by FontForge 20190801 at Tue Dec 10 16:08:45 2019
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/css/fontawesome/webfonts/fa-solid-900.ttf b/static/css/fontawesome/webfonts/fa-solid-900.ttf
new file mode 100644
index 0000000..18e30d4
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-solid-900.ttf differ
diff --git a/static/css/fontawesome/webfonts/fa-solid-900.woff b/static/css/fontawesome/webfonts/fa-solid-900.woff
new file mode 100644
index 0000000..c0e39e2
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-solid-900.woff differ
diff --git a/static/css/fontawesome/webfonts/fa-solid-900.woff2 b/static/css/fontawesome/webfonts/fa-solid-900.woff2
new file mode 100644
index 0000000..2524b30
Binary files /dev/null and b/static/css/fontawesome/webfonts/fa-solid-900.woff2 differ
diff --git a/static/css/reset-css.css b/static/css/reset-css.css
new file mode 100644
index 0000000..6f12183
--- /dev/null
+++ b/static/css/reset-css.css
@@ -0,0 +1,264 @@
+a, abbr, acronym, address, applet, article, aside, audio, b, big, blockquote, body, canvas, caption, center, cite, code, dd, del, details, dfn, div, dl, dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, html, i, iframe, img, ins, kbd, label, legend, li, mark, menu, nav, object, ol, output, p, pre, q, ruby, s, samp, section, small, span, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, time, tr, tt, u, ul, var, video{
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section{
+ display: block
+}
+
+body{
+ line-height: 1;
+ margin: 0
+}
+
+ol, ul{
+ list-style: none
+}
+
+blockquote, q{
+ quotes: none
+}
+
+blockquote:after, blockquote:before, q:after, q:before{
+ content: '';
+ content: none
+}
+
+table{
+ border-collapse: collapse;
+ border-spacing: 0
+}
+
+html{
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%
+}
+
+h1{
+ font-size: 2em;
+ margin: .67em 0
+}
+
+hr{
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible
+}
+
+pre{
+ font-family: monospace, monospace;
+ font-size: 1em
+}
+
+a{
+ background-color: transparent
+}
+
+abbr[title]{
+ border-bottom: none;
+ text-decoration: underline;
+ text-decoration: underline dotted
+}
+
+b, strong{
+ font-weight: bolder
+}
+
+code, kbd, samp{
+ font-family: monospace, monospace;
+ font-size: 1em
+}
+
+small{
+ font-size: 80%
+}
+
+sub, sup{
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline
+}
+
+sub{
+ bottom: -.25em
+}
+
+sup{
+ top: -.5em
+}
+
+img{
+ border-style: none
+}
+
+button, input, optgroup, select, textarea{
+ font-family: inherit;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0
+}
+
+button, input{
+ overflow: visible
+}
+
+button, select{
+ text-transform: none
+}
+
+[type=button], [type=reset], [type=submit], button{
+ -webkit-appearance: button
+}
+
+[type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner{
+ border-style: none;
+ padding: 0
+}
+
+[type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring, button:-moz-focusring{
+ outline: 1px dotted ButtonText
+}
+
+fieldset{
+ padding: .35em .75em .625em
+}
+
+legend{
+ box-sizing: border-box;
+ color: inherit;
+ display: table;
+ max-width: 100%;
+ padding: 0;
+ white-space: normal
+}
+
+progress{
+ vertical-align: baseline
+}
+
+textarea{
+ overflow: auto
+}
+
+[type=checkbox], [type=radio]{
+ box-sizing: border-box;
+ padding: 0
+}
+
+[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button{
+ height: auto
+}
+
+[type=search]{
+ -webkit-appearance: textfield;
+ outline-offset: -2px
+}
+
+[type=search]::-webkit-search-decoration{
+ -webkit-appearance: none
+}
+
+::-webkit-file-upload-button{
+ -webkit-appearance: button;
+ font: inherit
+}
+
+details{
+ display: block
+}
+
+summary{
+ display: list-item
+}
+
+template{
+ display: none
+}
+
+[hidden]{
+ display: none
+}
+
+::selection{
+ background: #468fd2;
+ color: #fff
+}
+
+::-webkit-selection{
+ background: #468fd2;
+ color: #fff
+}
+
+::-moz-selection{
+ background: #468fd2;
+ color: #fff
+}
+
+a{
+ text-decoration: none
+}
+
+h1{
+ font-size: 32px;
+}
+
+h2{
+ font-size: 24px;
+}
+
+h3{
+ font-size: 18.72px;
+}
+
+h4{
+ font-size: 16px;
+}
+
+h5{
+ font-size: 13.28px;
+}
+
+h6{
+ font-size: 10.72px;
+}
+
+.clear{
+ clear: both;
+ display: block;
+ overflow: hidden;
+ visibility: hidden;
+ width: 0;
+ height: 0
+}
+
+.clearfix{
+ zoom: 1
+}
+
+.clearfix:after, .clearfix:before, .row:after, .row:before{
+ content: '\0020';
+ display: block;
+ overflow: hidden;
+ visibility: hidden;
+ width: 0;
+ height: 0
+}
+
+.clearfix:after, .row:after{
+ clear: both
+}
+
+.relativePos{
+ position: relative;
+ width: 100%;
+ height: 100%
+}
diff --git a/static/favicon.png b/static/favicon.png
new file mode 100644
index 0000000..da0902f
Binary files /dev/null and b/static/favicon.png differ
diff --git a/static/fonts/dubai-font-webfonts/light/Dubai-Light.eot b/static/fonts/dubai-font-webfonts/light/Dubai-Light.eot
new file mode 100644
index 0000000..b653213
Binary files /dev/null and b/static/fonts/dubai-font-webfonts/light/Dubai-Light.eot differ
diff --git a/static/fonts/dubai-font-webfonts/light/Dubai-Light.ttf b/static/fonts/dubai-font-webfonts/light/Dubai-Light.ttf
new file mode 100644
index 0000000..9ec24da
Binary files /dev/null and b/static/fonts/dubai-font-webfonts/light/Dubai-Light.ttf differ
diff --git a/static/fonts/dubai-font-webfonts/light/Dubai-Light.woff b/static/fonts/dubai-font-webfonts/light/Dubai-Light.woff
new file mode 100644
index 0000000..5f3bab4
Binary files /dev/null and b/static/fonts/dubai-font-webfonts/light/Dubai-Light.woff differ
diff --git a/static/fonts/dubai-font-webfonts/medium/Dubai-Medium.eot b/static/fonts/dubai-font-webfonts/medium/Dubai-Medium.eot
new file mode 100644
index 0000000..ea385c9
Binary files /dev/null and b/static/fonts/dubai-font-webfonts/medium/Dubai-Medium.eot differ
diff --git a/static/fonts/dubai-font-webfonts/medium/Dubai-Medium.ttf b/static/fonts/dubai-font-webfonts/medium/Dubai-Medium.ttf
new file mode 100644
index 0000000..c52df5d
Binary files /dev/null and b/static/fonts/dubai-font-webfonts/medium/Dubai-Medium.ttf differ
diff --git a/static/fonts/dubai-font-webfonts/medium/Dubai-Medium.woff b/static/fonts/dubai-font-webfonts/medium/Dubai-Medium.woff
new file mode 100644
index 0000000..5b19be6
Binary files /dev/null and b/static/fonts/dubai-font-webfonts/medium/Dubai-Medium.woff differ
diff --git a/static/fonts/geometria-webfonts/Geometria-Bold.woff b/static/fonts/geometria-webfonts/Geometria-Bold.woff
new file mode 100644
index 0000000..141b63a
Binary files /dev/null and b/static/fonts/geometria-webfonts/Geometria-Bold.woff differ
diff --git a/static/fonts/geometria-webfonts/Geometria-ExtraBold.woff b/static/fonts/geometria-webfonts/Geometria-ExtraBold.woff
new file mode 100644
index 0000000..7610397
Binary files /dev/null and b/static/fonts/geometria-webfonts/Geometria-ExtraBold.woff differ
diff --git a/static/fonts/geometria-webfonts/Geometria-Medium.woff b/static/fonts/geometria-webfonts/Geometria-Medium.woff
new file mode 100644
index 0000000..49d5982
Binary files /dev/null and b/static/fonts/geometria-webfonts/Geometria-Medium.woff differ
diff --git a/static/fonts/geometria-webfonts/Geometria.woff b/static/fonts/geometria-webfonts/Geometria.woff
new file mode 100644
index 0000000..ab18a52
Binary files /dev/null and b/static/fonts/geometria-webfonts/Geometria.woff differ
diff --git a/static/fonts/silka-webfont/silka-semibold-webfont.ttf b/static/fonts/silka-webfont/silka-semibold-webfont.ttf
new file mode 100644
index 0000000..bd8169e
Binary files /dev/null and b/static/fonts/silka-webfont/silka-semibold-webfont.ttf differ
diff --git a/static/icon.png b/static/icon.png
new file mode 100644
index 0000000..158b2b8
Binary files /dev/null and b/static/icon.png differ
diff --git a/static/img/AboutPage/1111.png b/static/img/AboutPage/1111.png
new file mode 100644
index 0000000..369d99f
Binary files /dev/null and b/static/img/AboutPage/1111.png differ
diff --git a/static/img/AboutPage/2222.png b/static/img/AboutPage/2222.png
new file mode 100644
index 0000000..9952d14
Binary files /dev/null and b/static/img/AboutPage/2222.png differ
diff --git a/static/img/AboutPage/Engemasa1.png b/static/img/AboutPage/Engemasa1.png
new file mode 100644
index 0000000..efef022
Binary files /dev/null and b/static/img/AboutPage/Engemasa1.png differ
diff --git a/static/img/AboutPage/Engemasa2.png b/static/img/AboutPage/Engemasa2.png
new file mode 100644
index 0000000..033df22
Binary files /dev/null and b/static/img/AboutPage/Engemasa2.png differ
diff --git a/static/img/AboutPage/GTC.png b/static/img/AboutPage/GTC.png
new file mode 100644
index 0000000..14c087f
Binary files /dev/null and b/static/img/AboutPage/GTC.png differ
diff --git a/static/img/AboutPage/WONJIN.png b/static/img/AboutPage/WONJIN.png
new file mode 100644
index 0000000..c675bde
Binary files /dev/null and b/static/img/AboutPage/WONJIN.png differ
diff --git a/static/img/AboutPage/_MG_9506.png b/static/img/AboutPage/_MG_9506.png
new file mode 100644
index 0000000..83b089a
Binary files /dev/null and b/static/img/AboutPage/_MG_9506.png differ
diff --git a/static/img/AboutPage/excavation.png b/static/img/AboutPage/excavation.png
new file mode 100644
index 0000000..07ac924
Binary files /dev/null and b/static/img/AboutPage/excavation.png differ
diff --git a/static/img/AboutPage/gtc.jpg b/static/img/AboutPage/gtc.jpg
new file mode 100644
index 0000000..19bdd27
Binary files /dev/null and b/static/img/AboutPage/gtc.jpg differ
diff --git a/static/img/AboutPage/hj.png b/static/img/AboutPage/hj.png
new file mode 100644
index 0000000..4cb08df
Binary files /dev/null and b/static/img/AboutPage/hj.png differ
diff --git a/static/img/AboutPage/metal.jpg b/static/img/AboutPage/metal.jpg
new file mode 100644
index 0000000..6591fcb
Binary files /dev/null and b/static/img/AboutPage/metal.jpg differ
diff --git a/static/img/AboutPage/npa.jpg b/static/img/AboutPage/npa.jpg
new file mode 100644
index 0000000..0c9045a
Binary files /dev/null and b/static/img/AboutPage/npa.jpg differ
diff --git a/static/img/AboutPage/page-title.png b/static/img/AboutPage/page-title.png
new file mode 100644
index 0000000..3039512
Binary files /dev/null and b/static/img/AboutPage/page-title.png differ
diff --git a/static/img/AboutPage/personnel-2.png b/static/img/AboutPage/personnel-2.png
new file mode 100644
index 0000000..26ffe4b
Binary files /dev/null and b/static/img/AboutPage/personnel-2.png differ
diff --git a/static/img/AboutPage/personnel-3.png b/static/img/AboutPage/personnel-3.png
new file mode 100644
index 0000000..5ea33ef
Binary files /dev/null and b/static/img/AboutPage/personnel-3.png differ
diff --git a/static/img/AboutPage/personnel-4.png b/static/img/AboutPage/personnel-4.png
new file mode 100644
index 0000000..94f7848
Binary files /dev/null and b/static/img/AboutPage/personnel-4.png differ
diff --git a/static/img/AboutPage/petrochemical.png b/static/img/AboutPage/petrochemical.png
new file mode 100644
index 0000000..3d811b1
Binary files /dev/null and b/static/img/AboutPage/petrochemical.png differ
diff --git a/static/img/AboutPage/piping.png b/static/img/AboutPage/piping.png
new file mode 100644
index 0000000..9e3238b
Binary files /dev/null and b/static/img/AboutPage/piping.png differ
diff --git a/static/img/AboutPage/shutterstock.png b/static/img/AboutPage/shutterstock.png
new file mode 100644
index 0000000..0e0b26e
Binary files /dev/null and b/static/img/AboutPage/shutterstock.png differ
diff --git a/static/img/AboutPage/wonjin.jpeg b/static/img/AboutPage/wonjin.jpeg
new file mode 100644
index 0000000..a2d38f7
Binary files /dev/null and b/static/img/AboutPage/wonjin.jpeg differ
diff --git a/static/img/ActivitiesPage/1212.png b/static/img/ActivitiesPage/1212.png
new file mode 100644
index 0000000..0952cbc
Binary files /dev/null and b/static/img/ActivitiesPage/1212.png differ
diff --git a/static/img/ActivitiesPage/DetailsPage/1111.jpg b/static/img/ActivitiesPage/DetailsPage/1111.jpg
new file mode 100644
index 0000000..955605e
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/1111.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/Screw.jpg b/static/img/ActivitiesPage/DetailsPage/Screw.jpg
new file mode 100644
index 0000000..07c7fbf
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/Screw.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/api.jpg b/static/img/ActivitiesPage/DetailsPage/api.jpg
new file mode 100644
index 0000000..66f5022
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/api.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/drilling1.jpg b/static/img/ActivitiesPage/DetailsPage/drilling1.jpg
new file mode 100644
index 0000000..83ed5c6
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/drilling1.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/drilling2.jpg b/static/img/ActivitiesPage/DetailsPage/drilling2.jpg
new file mode 100644
index 0000000..15cd343
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/drilling2.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/drilling3.jpg b/static/img/ActivitiesPage/DetailsPage/drilling3.jpg
new file mode 100644
index 0000000..f67524b
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/drilling3.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/erw.jpg b/static/img/ActivitiesPage/DetailsPage/erw.jpg
new file mode 100644
index 0000000..34a7c27
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/erw.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/gtc.jpg b/static/img/ActivitiesPage/DetailsPage/gtc.jpg
new file mode 100644
index 0000000..19bdd27
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/gtc.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/header.jpg b/static/img/ActivitiesPage/DetailsPage/header.jpg
new file mode 100644
index 0000000..980f8b6
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/header.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/petrochemy.jpg b/static/img/ActivitiesPage/DetailsPage/petrochemy.jpg
new file mode 100644
index 0000000..672c3da
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/petrochemy.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/petrochemy1.jpg b/static/img/ActivitiesPage/DetailsPage/petrochemy1.jpg
new file mode 100644
index 0000000..4002078
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/petrochemy1.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/piping1.jpg b/static/img/ActivitiesPage/DetailsPage/piping1.jpg
new file mode 100644
index 0000000..b5ed80a
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/piping1.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/piping2.jpg b/static/img/ActivitiesPage/DetailsPage/piping2.jpg
new file mode 100644
index 0000000..b342dff
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/piping2.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/piping3.jpg b/static/img/ActivitiesPage/DetailsPage/piping3.jpg
new file mode 100644
index 0000000..61e24dc
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/piping3.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/piping4.jpg b/static/img/ActivitiesPage/DetailsPage/piping4.jpg
new file mode 100644
index 0000000..5317843
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/piping4.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/piping5.jpg b/static/img/ActivitiesPage/DetailsPage/piping5.jpg
new file mode 100644
index 0000000..9bac5f9
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/piping5.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/skid.jpg b/static/img/ActivitiesPage/DetailsPage/skid.jpg
new file mode 100644
index 0000000..3ffa2ab
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/skid.jpg differ
diff --git a/static/img/ActivitiesPage/DetailsPage/srp.jpg b/static/img/ActivitiesPage/DetailsPage/srp.jpg
new file mode 100644
index 0000000..d119761
Binary files /dev/null and b/static/img/ActivitiesPage/DetailsPage/srp.jpg differ
diff --git a/static/img/ActivitiesPage/Salt.jpg b/static/img/ActivitiesPage/Salt.jpg
new file mode 100644
index 0000000..9e62f0f
Binary files /dev/null and b/static/img/ActivitiesPage/Salt.jpg differ
diff --git a/static/img/ActivitiesPage/Salt1.jpg b/static/img/ActivitiesPage/Salt1.jpg
new file mode 100644
index 0000000..e927db6
Binary files /dev/null and b/static/img/ActivitiesPage/Salt1.jpg differ
diff --git a/static/img/ActivitiesPage/drill.jpg b/static/img/ActivitiesPage/drill.jpg
new file mode 100644
index 0000000..6eb37e3
Binary files /dev/null and b/static/img/ActivitiesPage/drill.jpg differ
diff --git a/static/img/ActivitiesPage/faraz.jpg b/static/img/ActivitiesPage/faraz.jpg
new file mode 100644
index 0000000..6792a04
Binary files /dev/null and b/static/img/ActivitiesPage/faraz.jpg differ
diff --git a/static/img/ActivitiesPage/page-title.png b/static/img/ActivitiesPage/page-title.png
new file mode 100644
index 0000000..3039512
Binary files /dev/null and b/static/img/ActivitiesPage/page-title.png differ
diff --git a/static/img/ActivitiesPage/petro.jpg b/static/img/ActivitiesPage/petro.jpg
new file mode 100644
index 0000000..9874972
Binary files /dev/null and b/static/img/ActivitiesPage/petro.jpg differ
diff --git a/static/img/ActivitiesPage/piping.jpg b/static/img/ActivitiesPage/piping.jpg
new file mode 100644
index 0000000..00c24f5
Binary files /dev/null and b/static/img/ActivitiesPage/piping.jpg differ
diff --git a/static/img/BlogPage/DetailsPage/2.png b/static/img/BlogPage/DetailsPage/2.png
new file mode 100644
index 0000000..31d3a40
Binary files /dev/null and b/static/img/BlogPage/DetailsPage/2.png differ
diff --git a/static/img/BlogPage/DetailsPage/3.png b/static/img/BlogPage/DetailsPage/3.png
new file mode 100644
index 0000000..77160b0
Binary files /dev/null and b/static/img/BlogPage/DetailsPage/3.png differ
diff --git a/static/img/BlogPage/DetailsPage/bg.png b/static/img/BlogPage/DetailsPage/bg.png
new file mode 100644
index 0000000..3d18025
Binary files /dev/null and b/static/img/BlogPage/DetailsPage/bg.png differ
diff --git a/static/img/BlogPage/DetailsPage/featured.png b/static/img/BlogPage/DetailsPage/featured.png
new file mode 100644
index 0000000..61959c0
Binary files /dev/null and b/static/img/BlogPage/DetailsPage/featured.png differ
diff --git a/static/img/BlogPage/page-title.png b/static/img/BlogPage/page-title.png
new file mode 100644
index 0000000..3039512
Binary files /dev/null and b/static/img/BlogPage/page-title.png differ
diff --git a/static/img/BlogPage/shutterstock1.png b/static/img/BlogPage/shutterstock1.png
new file mode 100644
index 0000000..8e69896
Binary files /dev/null and b/static/img/BlogPage/shutterstock1.png differ
diff --git a/static/img/BlogPage/shutterstock2.png b/static/img/BlogPage/shutterstock2.png
new file mode 100644
index 0000000..4303a40
Binary files /dev/null and b/static/img/BlogPage/shutterstock2.png differ
diff --git a/static/img/BlogPage/shutterstock3.png b/static/img/BlogPage/shutterstock3.png
new file mode 100644
index 0000000..c66f61c
Binary files /dev/null and b/static/img/BlogPage/shutterstock3.png differ
diff --git a/static/img/BlogPage/shutterstock4.png b/static/img/BlogPage/shutterstock4.png
new file mode 100644
index 0000000..d81a859
Binary files /dev/null and b/static/img/BlogPage/shutterstock4.png differ
diff --git a/static/img/BlogPage/shutterstock5.png b/static/img/BlogPage/shutterstock5.png
new file mode 100644
index 0000000..5e1200b
Binary files /dev/null and b/static/img/BlogPage/shutterstock5.png differ
diff --git a/static/img/BlogPage/shutterstock6.png b/static/img/BlogPage/shutterstock6.png
new file mode 100644
index 0000000..6803508
Binary files /dev/null and b/static/img/BlogPage/shutterstock6.png differ
diff --git a/static/img/CatalogPage/catalog.png b/static/img/CatalogPage/catalog.png
new file mode 100644
index 0000000..d7d6527
Binary files /dev/null and b/static/img/CatalogPage/catalog.png differ
diff --git a/static/img/CatalogPage/page-title.png b/static/img/CatalogPage/page-title.png
new file mode 100644
index 0000000..3039512
Binary files /dev/null and b/static/img/CatalogPage/page-title.png differ
diff --git a/static/img/Chart-Latin.jpg b/static/img/Chart-Latin.jpg
new file mode 100644
index 0000000..d3eedd3
Binary files /dev/null and b/static/img/Chart-Latin.jpg differ
diff --git a/static/img/ConsentsPage/1.jpg b/static/img/ConsentsPage/1.jpg
new file mode 100644
index 0000000..3220156
Binary files /dev/null and b/static/img/ConsentsPage/1.jpg differ
diff --git a/static/img/ConsentsPage/10.jpg b/static/img/ConsentsPage/10.jpg
new file mode 100644
index 0000000..b238716
Binary files /dev/null and b/static/img/ConsentsPage/10.jpg differ
diff --git a/static/img/ConsentsPage/11.jpg b/static/img/ConsentsPage/11.jpg
new file mode 100644
index 0000000..73ac848
Binary files /dev/null and b/static/img/ConsentsPage/11.jpg differ
diff --git a/static/img/ConsentsPage/12.jpg b/static/img/ConsentsPage/12.jpg
new file mode 100644
index 0000000..2195778
Binary files /dev/null and b/static/img/ConsentsPage/12.jpg differ
diff --git a/static/img/ConsentsPage/13.jpg b/static/img/ConsentsPage/13.jpg
new file mode 100644
index 0000000..01c11f6
Binary files /dev/null and b/static/img/ConsentsPage/13.jpg differ
diff --git a/static/img/ConsentsPage/14.jpg b/static/img/ConsentsPage/14.jpg
new file mode 100644
index 0000000..07fe678
Binary files /dev/null and b/static/img/ConsentsPage/14.jpg differ
diff --git a/static/img/ConsentsPage/15.jpg b/static/img/ConsentsPage/15.jpg
new file mode 100644
index 0000000..0f79b3d
Binary files /dev/null and b/static/img/ConsentsPage/15.jpg differ
diff --git a/static/img/ConsentsPage/16.jpg b/static/img/ConsentsPage/16.jpg
new file mode 100644
index 0000000..27419ed
Binary files /dev/null and b/static/img/ConsentsPage/16.jpg differ
diff --git a/static/img/ConsentsPage/17.jpg b/static/img/ConsentsPage/17.jpg
new file mode 100644
index 0000000..2e049fd
Binary files /dev/null and b/static/img/ConsentsPage/17.jpg differ
diff --git a/static/img/ConsentsPage/18.jpg b/static/img/ConsentsPage/18.jpg
new file mode 100644
index 0000000..6974f60
Binary files /dev/null and b/static/img/ConsentsPage/18.jpg differ
diff --git a/static/img/ConsentsPage/19.jpg b/static/img/ConsentsPage/19.jpg
new file mode 100644
index 0000000..b51b409
Binary files /dev/null and b/static/img/ConsentsPage/19.jpg differ
diff --git a/static/img/ConsentsPage/2.jpg b/static/img/ConsentsPage/2.jpg
new file mode 100644
index 0000000..721fe1f
Binary files /dev/null and b/static/img/ConsentsPage/2.jpg differ
diff --git a/static/img/ConsentsPage/20.jpg b/static/img/ConsentsPage/20.jpg
new file mode 100644
index 0000000..98e8f14
Binary files /dev/null and b/static/img/ConsentsPage/20.jpg differ
diff --git a/static/img/ConsentsPage/21.jpg b/static/img/ConsentsPage/21.jpg
new file mode 100644
index 0000000..4b98c69
Binary files /dev/null and b/static/img/ConsentsPage/21.jpg differ
diff --git a/static/img/ConsentsPage/22.jpg b/static/img/ConsentsPage/22.jpg
new file mode 100644
index 0000000..3fe8fa6
Binary files /dev/null and b/static/img/ConsentsPage/22.jpg differ
diff --git a/static/img/ConsentsPage/23.jpg b/static/img/ConsentsPage/23.jpg
new file mode 100644
index 0000000..c13e847
Binary files /dev/null and b/static/img/ConsentsPage/23.jpg differ
diff --git a/static/img/ConsentsPage/24.jpg b/static/img/ConsentsPage/24.jpg
new file mode 100644
index 0000000..67706da
Binary files /dev/null and b/static/img/ConsentsPage/24.jpg differ
diff --git a/static/img/ConsentsPage/25.jpg b/static/img/ConsentsPage/25.jpg
new file mode 100644
index 0000000..1b1e678
Binary files /dev/null and b/static/img/ConsentsPage/25.jpg differ
diff --git a/static/img/ConsentsPage/26.jpg b/static/img/ConsentsPage/26.jpg
new file mode 100644
index 0000000..e7493e0
Binary files /dev/null and b/static/img/ConsentsPage/26.jpg differ
diff --git a/static/img/ConsentsPage/27.jpg b/static/img/ConsentsPage/27.jpg
new file mode 100644
index 0000000..89abfce
Binary files /dev/null and b/static/img/ConsentsPage/27.jpg differ
diff --git a/static/img/ConsentsPage/28.jpg b/static/img/ConsentsPage/28.jpg
new file mode 100644
index 0000000..84e6595
Binary files /dev/null and b/static/img/ConsentsPage/28.jpg differ
diff --git a/static/img/ConsentsPage/29.jpg b/static/img/ConsentsPage/29.jpg
new file mode 100644
index 0000000..2e5acea
Binary files /dev/null and b/static/img/ConsentsPage/29.jpg differ
diff --git a/static/img/ConsentsPage/3.jpg b/static/img/ConsentsPage/3.jpg
new file mode 100644
index 0000000..4ebc5f7
Binary files /dev/null and b/static/img/ConsentsPage/3.jpg differ
diff --git a/static/img/ConsentsPage/30.jpg b/static/img/ConsentsPage/30.jpg
new file mode 100644
index 0000000..360caa2
Binary files /dev/null and b/static/img/ConsentsPage/30.jpg differ
diff --git a/static/img/ConsentsPage/31.jpg b/static/img/ConsentsPage/31.jpg
new file mode 100644
index 0000000..292d31e
Binary files /dev/null and b/static/img/ConsentsPage/31.jpg differ
diff --git a/static/img/ConsentsPage/32.jpg b/static/img/ConsentsPage/32.jpg
new file mode 100644
index 0000000..5ad2224
Binary files /dev/null and b/static/img/ConsentsPage/32.jpg differ
diff --git a/static/img/ConsentsPage/33.jpg b/static/img/ConsentsPage/33.jpg
new file mode 100644
index 0000000..c210695
Binary files /dev/null and b/static/img/ConsentsPage/33.jpg differ
diff --git a/static/img/ConsentsPage/34.jpg b/static/img/ConsentsPage/34.jpg
new file mode 100644
index 0000000..5c044bd
Binary files /dev/null and b/static/img/ConsentsPage/34.jpg differ
diff --git a/static/img/ConsentsPage/35.jpg b/static/img/ConsentsPage/35.jpg
new file mode 100644
index 0000000..d9e508d
Binary files /dev/null and b/static/img/ConsentsPage/35.jpg differ
diff --git a/static/img/ConsentsPage/36.jpg b/static/img/ConsentsPage/36.jpg
new file mode 100644
index 0000000..9f3a40b
Binary files /dev/null and b/static/img/ConsentsPage/36.jpg differ
diff --git a/static/img/ConsentsPage/37.jpg b/static/img/ConsentsPage/37.jpg
new file mode 100644
index 0000000..71ad37e
Binary files /dev/null and b/static/img/ConsentsPage/37.jpg differ
diff --git a/static/img/ConsentsPage/38.jpg b/static/img/ConsentsPage/38.jpg
new file mode 100644
index 0000000..33df882
Binary files /dev/null and b/static/img/ConsentsPage/38.jpg differ
diff --git a/static/img/ConsentsPage/39.jpg b/static/img/ConsentsPage/39.jpg
new file mode 100644
index 0000000..3b2ad7f
Binary files /dev/null and b/static/img/ConsentsPage/39.jpg differ
diff --git a/static/img/ConsentsPage/4.jpg b/static/img/ConsentsPage/4.jpg
new file mode 100644
index 0000000..37252ca
Binary files /dev/null and b/static/img/ConsentsPage/4.jpg differ
diff --git a/static/img/ConsentsPage/40.jpg b/static/img/ConsentsPage/40.jpg
new file mode 100644
index 0000000..b313833
Binary files /dev/null and b/static/img/ConsentsPage/40.jpg differ
diff --git a/static/img/ConsentsPage/41.jpg b/static/img/ConsentsPage/41.jpg
new file mode 100644
index 0000000..4ca5bcf
Binary files /dev/null and b/static/img/ConsentsPage/41.jpg differ
diff --git a/static/img/ConsentsPage/42.jpg b/static/img/ConsentsPage/42.jpg
new file mode 100644
index 0000000..18379ad
Binary files /dev/null and b/static/img/ConsentsPage/42.jpg differ
diff --git a/static/img/ConsentsPage/43.jpg b/static/img/ConsentsPage/43.jpg
new file mode 100644
index 0000000..0a4b9ec
Binary files /dev/null and b/static/img/ConsentsPage/43.jpg differ
diff --git a/static/img/ConsentsPage/44.jpg b/static/img/ConsentsPage/44.jpg
new file mode 100644
index 0000000..c0d357b
Binary files /dev/null and b/static/img/ConsentsPage/44.jpg differ
diff --git a/static/img/ConsentsPage/45.jpg b/static/img/ConsentsPage/45.jpg
new file mode 100644
index 0000000..d52fa4a
Binary files /dev/null and b/static/img/ConsentsPage/45.jpg differ
diff --git a/static/img/ConsentsPage/46.jpg b/static/img/ConsentsPage/46.jpg
new file mode 100644
index 0000000..a7304fb
Binary files /dev/null and b/static/img/ConsentsPage/46.jpg differ
diff --git a/static/img/ConsentsPage/47.jpg b/static/img/ConsentsPage/47.jpg
new file mode 100644
index 0000000..6b577eb
Binary files /dev/null and b/static/img/ConsentsPage/47.jpg differ
diff --git a/static/img/ConsentsPage/48.jpg b/static/img/ConsentsPage/48.jpg
new file mode 100644
index 0000000..a1557e1
Binary files /dev/null and b/static/img/ConsentsPage/48.jpg differ
diff --git a/static/img/ConsentsPage/49.jpg b/static/img/ConsentsPage/49.jpg
new file mode 100644
index 0000000..32610db
Binary files /dev/null and b/static/img/ConsentsPage/49.jpg differ
diff --git a/static/img/ConsentsPage/5.jpg b/static/img/ConsentsPage/5.jpg
new file mode 100644
index 0000000..0011de7
Binary files /dev/null and b/static/img/ConsentsPage/5.jpg differ
diff --git a/static/img/ConsentsPage/50.jpg b/static/img/ConsentsPage/50.jpg
new file mode 100644
index 0000000..fdeed3f
Binary files /dev/null and b/static/img/ConsentsPage/50.jpg differ
diff --git a/static/img/ConsentsPage/51.jpg b/static/img/ConsentsPage/51.jpg
new file mode 100644
index 0000000..b1bc51e
Binary files /dev/null and b/static/img/ConsentsPage/51.jpg differ
diff --git a/static/img/ConsentsPage/52.jpg b/static/img/ConsentsPage/52.jpg
new file mode 100644
index 0000000..48c2327
Binary files /dev/null and b/static/img/ConsentsPage/52.jpg differ
diff --git a/static/img/ConsentsPage/53.jpg b/static/img/ConsentsPage/53.jpg
new file mode 100644
index 0000000..cbd10ac
Binary files /dev/null and b/static/img/ConsentsPage/53.jpg differ
diff --git a/static/img/ConsentsPage/6.jpg b/static/img/ConsentsPage/6.jpg
new file mode 100644
index 0000000..e738997
Binary files /dev/null and b/static/img/ConsentsPage/6.jpg differ
diff --git a/static/img/ConsentsPage/7.jpg b/static/img/ConsentsPage/7.jpg
new file mode 100644
index 0000000..8fab5fd
Binary files /dev/null and b/static/img/ConsentsPage/7.jpg differ
diff --git a/static/img/ConsentsPage/8.jpg b/static/img/ConsentsPage/8.jpg
new file mode 100644
index 0000000..cdb005c
Binary files /dev/null and b/static/img/ConsentsPage/8.jpg differ
diff --git a/static/img/ConsentsPage/9.jpg b/static/img/ConsentsPage/9.jpg
new file mode 100644
index 0000000..fbd9e82
Binary files /dev/null and b/static/img/ConsentsPage/9.jpg differ
diff --git a/static/img/ContactPage/ahvaz.jpg b/static/img/ContactPage/ahvaz.jpg
new file mode 100644
index 0000000..f914f74
Binary files /dev/null and b/static/img/ContactPage/ahvaz.jpg differ
diff --git a/static/img/ContactPage/ahvaz1.jpg b/static/img/ContactPage/ahvaz1.jpg
new file mode 100644
index 0000000..2084269
Binary files /dev/null and b/static/img/ContactPage/ahvaz1.jpg differ
diff --git a/static/img/ContactPage/esfahan.jpg b/static/img/ContactPage/esfahan.jpg
new file mode 100644
index 0000000..ecb1784
Binary files /dev/null and b/static/img/ContactPage/esfahan.jpg differ
diff --git a/static/img/ContactPage/g1.png b/static/img/ContactPage/g1.png
new file mode 100644
index 0000000..951942b
Binary files /dev/null and b/static/img/ContactPage/g1.png differ
diff --git a/static/img/ContactPage/g2.png b/static/img/ContactPage/g2.png
new file mode 100644
index 0000000..edba1f7
Binary files /dev/null and b/static/img/ContactPage/g2.png differ
diff --git a/static/img/ContactPage/g3.png b/static/img/ContactPage/g3.png
new file mode 100644
index 0000000..a13ec69
Binary files /dev/null and b/static/img/ContactPage/g3.png differ
diff --git a/static/img/ContactPage/landmark.png b/static/img/ContactPage/landmark.png
new file mode 100644
index 0000000..f5797c1
Binary files /dev/null and b/static/img/ContactPage/landmark.png differ
diff --git a/static/img/ContactPage/tehran.jpg b/static/img/ContactPage/tehran.jpg
new file mode 100644
index 0000000..1811f60
Binary files /dev/null and b/static/img/ContactPage/tehran.jpg differ
diff --git a/static/img/GalleryPage/1.png b/static/img/GalleryPage/1.png
new file mode 100644
index 0000000..4f89cda
Binary files /dev/null and b/static/img/GalleryPage/1.png differ
diff --git a/static/img/GalleryPage/2.png b/static/img/GalleryPage/2.png
new file mode 100644
index 0000000..4a9fa9a
Binary files /dev/null and b/static/img/GalleryPage/2.png differ
diff --git a/static/img/GalleryPage/3.png b/static/img/GalleryPage/3.png
new file mode 100644
index 0000000..ae4a1ea
Binary files /dev/null and b/static/img/GalleryPage/3.png differ
diff --git a/static/img/GalleryPage/4.png b/static/img/GalleryPage/4.png
new file mode 100644
index 0000000..066d79c
Binary files /dev/null and b/static/img/GalleryPage/4.png differ
diff --git a/static/img/GalleryPage/5.png b/static/img/GalleryPage/5.png
new file mode 100644
index 0000000..7a8b362
Binary files /dev/null and b/static/img/GalleryPage/5.png differ
diff --git a/static/img/GalleryPage/logo-colored.svg b/static/img/GalleryPage/logo-colored.svg
new file mode 100644
index 0000000..11d3ea7
--- /dev/null
+++ b/static/img/GalleryPage/logo-colored.svg
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/GalleryPage/page-title.png b/static/img/GalleryPage/page-title.png
new file mode 100644
index 0000000..3039512
Binary files /dev/null and b/static/img/GalleryPage/page-title.png differ
diff --git a/static/img/HomePage/1.jpg b/static/img/HomePage/1.jpg
new file mode 100644
index 0000000..30f7b6d
Binary files /dev/null and b/static/img/HomePage/1.jpg differ
diff --git a/static/img/HomePage/1_thumb.jpg b/static/img/HomePage/1_thumb.jpg
new file mode 100644
index 0000000..9996242
Binary files /dev/null and b/static/img/HomePage/1_thumb.jpg differ
diff --git a/static/img/HomePage/2.jpg b/static/img/HomePage/2.jpg
new file mode 100644
index 0000000..10d42f9
Binary files /dev/null and b/static/img/HomePage/2.jpg differ
diff --git a/static/img/HomePage/2_thumb.jpg b/static/img/HomePage/2_thumb.jpg
new file mode 100644
index 0000000..70d2503
Binary files /dev/null and b/static/img/HomePage/2_thumb.jpg differ
diff --git a/static/img/HomePage/3.jpg b/static/img/HomePage/3.jpg
new file mode 100644
index 0000000..3d3ba00
Binary files /dev/null and b/static/img/HomePage/3.jpg differ
diff --git a/static/img/HomePage/3_thumb.jpg b/static/img/HomePage/3_thumb.jpg
new file mode 100644
index 0000000..d2b4f44
Binary files /dev/null and b/static/img/HomePage/3_thumb.jpg differ
diff --git a/static/img/HomePage/4.jpg b/static/img/HomePage/4.jpg
new file mode 100644
index 0000000..3fc38ec
Binary files /dev/null and b/static/img/HomePage/4.jpg differ
diff --git a/static/img/HomePage/46412.jpeg b/static/img/HomePage/46412.jpeg
new file mode 100644
index 0000000..d994fea
Binary files /dev/null and b/static/img/HomePage/46412.jpeg differ
diff --git a/static/img/HomePage/4_thumb.jpg b/static/img/HomePage/4_thumb.jpg
new file mode 100644
index 0000000..d3ecd2e
Binary files /dev/null and b/static/img/HomePage/4_thumb.jpg differ
diff --git a/static/img/HomePage/CTA.jpg b/static/img/HomePage/CTA.jpg
new file mode 100644
index 0000000..cfaec6f
Binary files /dev/null and b/static/img/HomePage/CTA.jpg differ
diff --git a/static/img/HomePage/MG_9506.jpg b/static/img/HomePage/MG_9506.jpg
new file mode 100644
index 0000000..e6ba157
Binary files /dev/null and b/static/img/HomePage/MG_9506.jpg differ
diff --git a/static/img/HomePage/MG_9907.jpg b/static/img/HomePage/MG_9907.jpg
new file mode 100644
index 0000000..5ca161e
Binary files /dev/null and b/static/img/HomePage/MG_9907.jpg differ
diff --git a/static/img/HomePage/Petro.jpg b/static/img/HomePage/Petro.jpg
new file mode 100644
index 0000000..89510c8
Binary files /dev/null and b/static/img/HomePage/Petro.jpg differ
diff --git a/static/img/HomePage/Petro1.jpg b/static/img/HomePage/Petro1.jpg
new file mode 100644
index 0000000..06167c4
Binary files /dev/null and b/static/img/HomePage/Petro1.jpg differ
diff --git a/static/img/HomePage/Refinery.jpg b/static/img/HomePage/Refinery.jpg
new file mode 100644
index 0000000..ecf3189
Binary files /dev/null and b/static/img/HomePage/Refinery.jpg differ
diff --git a/static/img/HomePage/Salt.jpg b/static/img/HomePage/Salt.jpg
new file mode 100644
index 0000000..9e62f0f
Binary files /dev/null and b/static/img/HomePage/Salt.jpg differ
diff --git a/static/img/HomePage/Stainless.jpg b/static/img/HomePage/Stainless.jpg
new file mode 100644
index 0000000..236b2b2
Binary files /dev/null and b/static/img/HomePage/Stainless.jpg differ
diff --git a/static/img/HomePage/certificates/CSQ1.jpg b/static/img/HomePage/certificates/CSQ1.jpg
new file mode 100644
index 0000000..19fb47a
Binary files /dev/null and b/static/img/HomePage/certificates/CSQ1.jpg differ
diff --git a/static/img/HomePage/certificates/CSQ1_thumb.png b/static/img/HomePage/certificates/CSQ1_thumb.png
new file mode 100644
index 0000000..27a2e32
Binary files /dev/null and b/static/img/HomePage/certificates/CSQ1_thumb.png differ
diff --git a/static/img/HomePage/certificates/CSQ2.jpg b/static/img/HomePage/certificates/CSQ2.jpg
new file mode 100644
index 0000000..0f7fa6c
Binary files /dev/null and b/static/img/HomePage/certificates/CSQ2.jpg differ
diff --git a/static/img/HomePage/certificates/CSQ2_thumb.png b/static/img/HomePage/certificates/CSQ2_thumb.png
new file mode 100644
index 0000000..49b8cd3
Binary files /dev/null and b/static/img/HomePage/certificates/CSQ2_thumb.png differ
diff --git a/static/img/HomePage/certificates/CSQ3.jpg b/static/img/HomePage/certificates/CSQ3.jpg
new file mode 100644
index 0000000..af25234
Binary files /dev/null and b/static/img/HomePage/certificates/CSQ3.jpg differ
diff --git a/static/img/HomePage/certificates/CSQ3_thumb.png b/static/img/HomePage/certificates/CSQ3_thumb.png
new file mode 100644
index 0000000..f48a2c2
Binary files /dev/null and b/static/img/HomePage/certificates/CSQ3_thumb.png differ
diff --git a/static/img/HomePage/certificates/IMQ2.jpg b/static/img/HomePage/certificates/IMQ2.jpg
new file mode 100644
index 0000000..46a5f2c
Binary files /dev/null and b/static/img/HomePage/certificates/IMQ2.jpg differ
diff --git a/static/img/HomePage/certificates/IMQ2_thumb.png b/static/img/HomePage/certificates/IMQ2_thumb.png
new file mode 100644
index 0000000..423ea36
Binary files /dev/null and b/static/img/HomePage/certificates/IMQ2_thumb.png differ
diff --git a/static/img/HomePage/contacts.jpg b/static/img/HomePage/contacts.jpg
new file mode 100644
index 0000000..c12ec1d
Binary files /dev/null and b/static/img/HomePage/contacts.jpg differ
diff --git a/static/img/HomePage/drill.jpg b/static/img/HomePage/drill.jpg
new file mode 100644
index 0000000..6eb37e3
Binary files /dev/null and b/static/img/HomePage/drill.jpg differ
diff --git a/static/img/HomePage/faraz.jpg b/static/img/HomePage/faraz.jpg
new file mode 100644
index 0000000..6792a04
Binary files /dev/null and b/static/img/HomePage/faraz.jpg differ
diff --git a/static/img/HomePage/g1.jpg b/static/img/HomePage/g1.jpg
new file mode 100644
index 0000000..7925563
Binary files /dev/null and b/static/img/HomePage/g1.jpg differ
diff --git a/static/img/HomePage/g2.jpg b/static/img/HomePage/g2.jpg
new file mode 100644
index 0000000..cfc6a62
Binary files /dev/null and b/static/img/HomePage/g2.jpg differ
diff --git a/static/img/HomePage/g3.jpg b/static/img/HomePage/g3.jpg
new file mode 100644
index 0000000..d780c02
Binary files /dev/null and b/static/img/HomePage/g3.jpg differ
diff --git a/static/img/HomePage/imgMap.png b/static/img/HomePage/imgMap.png
new file mode 100644
index 0000000..e3d142c
Binary files /dev/null and b/static/img/HomePage/imgMap.png differ
diff --git a/static/img/HomePage/petrochemy.jpg b/static/img/HomePage/petrochemy.jpg
new file mode 100644
index 0000000..9874972
Binary files /dev/null and b/static/img/HomePage/petrochemy.jpg differ
diff --git a/static/img/HomePage/piping.jpg b/static/img/HomePage/piping.jpg
new file mode 100644
index 0000000..00c24f5
Binary files /dev/null and b/static/img/HomePage/piping.jpg differ
diff --git a/static/img/HomePage/shutterstock.jpg b/static/img/HomePage/shutterstock.jpg
new file mode 100644
index 0000000..b613303
Binary files /dev/null and b/static/img/HomePage/shutterstock.jpg differ
diff --git a/static/img/HomePage/testimonial.jpg b/static/img/HomePage/testimonial.jpg
new file mode 100644
index 0000000..f8659be
Binary files /dev/null and b/static/img/HomePage/testimonial.jpg differ
diff --git a/static/img/HomePage/user.png b/static/img/HomePage/user.png
new file mode 100644
index 0000000..f40283b
Binary files /dev/null and b/static/img/HomePage/user.png differ
diff --git a/static/img/LogoCompany/1.png b/static/img/LogoCompany/1.png
new file mode 100644
index 0000000..86784f2
Binary files /dev/null and b/static/img/LogoCompany/1.png differ
diff --git a/static/img/LogoCompany/2.png b/static/img/LogoCompany/2.png
new file mode 100644
index 0000000..d3e61b0
Binary files /dev/null and b/static/img/LogoCompany/2.png differ
diff --git a/static/img/LogoCompany/3.png b/static/img/LogoCompany/3.png
new file mode 100644
index 0000000..5bc100e
Binary files /dev/null and b/static/img/LogoCompany/3.png differ
diff --git a/static/img/LogoCompany/4.png b/static/img/LogoCompany/4.png
new file mode 100644
index 0000000..01ae94f
Binary files /dev/null and b/static/img/LogoCompany/4.png differ
diff --git a/static/img/LogoCompany/5.png b/static/img/LogoCompany/5.png
new file mode 100644
index 0000000..5d0f33e
Binary files /dev/null and b/static/img/LogoCompany/5.png differ
diff --git a/static/img/LogoCompany/logo1.png b/static/img/LogoCompany/logo1.png
new file mode 100644
index 0000000..5a8b1cb
Binary files /dev/null and b/static/img/LogoCompany/logo1.png differ
diff --git a/static/img/LogoCompany/logo2.png b/static/img/LogoCompany/logo2.png
new file mode 100644
index 0000000..fb94375
Binary files /dev/null and b/static/img/LogoCompany/logo2.png differ
diff --git a/static/img/LogoCompany/logo3.png b/static/img/LogoCompany/logo3.png
new file mode 100644
index 0000000..9d02dae
Binary files /dev/null and b/static/img/LogoCompany/logo3.png differ
diff --git a/static/img/LogoCompany/logo4.png b/static/img/LogoCompany/logo4.png
new file mode 100644
index 0000000..8eeee2a
Binary files /dev/null and b/static/img/LogoCompany/logo4.png differ
diff --git a/static/img/LogoCompany/logo5.png b/static/img/LogoCompany/logo5.png
new file mode 100644
index 0000000..3729782
Binary files /dev/null and b/static/img/LogoCompany/logo5.png differ
diff --git a/static/img/LogoCompany/logo6.png b/static/img/LogoCompany/logo6.png
new file mode 100644
index 0000000..3e8e8c3
Binary files /dev/null and b/static/img/LogoCompany/logo6.png differ
diff --git a/static/img/ProjectPage/DetailsPage/architecture.png b/static/img/ProjectPage/DetailsPage/architecture.png
new file mode 100644
index 0000000..2e413df
Binary files /dev/null and b/static/img/ProjectPage/DetailsPage/architecture.png differ
diff --git a/static/img/ProjectPage/DetailsPage/clock.png b/static/img/ProjectPage/DetailsPage/clock.png
new file mode 100644
index 0000000..a144e9e
Binary files /dev/null and b/static/img/ProjectPage/DetailsPage/clock.png differ
diff --git a/static/img/ProjectPage/DetailsPage/pexels.png b/static/img/ProjectPage/DetailsPage/pexels.png
new file mode 100644
index 0000000..b3fd75b
Binary files /dev/null and b/static/img/ProjectPage/DetailsPage/pexels.png differ
diff --git a/static/img/ProjectPage/DetailsPage/shutterstock2.png b/static/img/ProjectPage/DetailsPage/shutterstock2.png
new file mode 100644
index 0000000..8de3fb2
Binary files /dev/null and b/static/img/ProjectPage/DetailsPage/shutterstock2.png differ
diff --git a/static/img/ProjectPage/page-title.png b/static/img/ProjectPage/page-title.png
new file mode 100644
index 0000000..3039512
Binary files /dev/null and b/static/img/ProjectPage/page-title.png differ
diff --git a/static/img/ProjectPage/shutterstock1.png b/static/img/ProjectPage/shutterstock1.png
new file mode 100644
index 0000000..4947304
Binary files /dev/null and b/static/img/ProjectPage/shutterstock1.png differ
diff --git a/static/img/ProjectPage/shutterstock2.png b/static/img/ProjectPage/shutterstock2.png
new file mode 100644
index 0000000..8de3fb2
Binary files /dev/null and b/static/img/ProjectPage/shutterstock2.png differ
diff --git a/static/img/ProjectPage/shutterstock3.png b/static/img/ProjectPage/shutterstock3.png
new file mode 100644
index 0000000..322c602
Binary files /dev/null and b/static/img/ProjectPage/shutterstock3.png differ
diff --git a/static/img/ProjectPage/shutterstock4.png b/static/img/ProjectPage/shutterstock4.png
new file mode 100644
index 0000000..ac94785
Binary files /dev/null and b/static/img/ProjectPage/shutterstock4.png differ
diff --git a/static/img/ProjectPage/shutterstock5.png b/static/img/ProjectPage/shutterstock5.png
new file mode 100644
index 0000000..1b3786b
Binary files /dev/null and b/static/img/ProjectPage/shutterstock5.png differ
diff --git a/static/img/avatar.png b/static/img/avatar.png
new file mode 100644
index 0000000..e16488e
Binary files /dev/null and b/static/img/avatar.png differ
diff --git a/static/img/chart.jpg b/static/img/chart.jpg
new file mode 100644
index 0000000..7a29eeb
Binary files /dev/null and b/static/img/chart.jpg differ
diff --git a/static/img/default-img.png b/static/img/default-img.png
new file mode 100644
index 0000000..112db05
Binary files /dev/null and b/static/img/default-img.png differ
diff --git a/static/img/logo.svg b/static/img/logo.svg
new file mode 100644
index 0000000..00179e0
--- /dev/null
+++ b/static/img/logo.svg
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/video-poster.jpg b/static/img/video-poster.jpg
new file mode 100644
index 0000000..4152a72
Binary files /dev/null and b/static/img/video-poster.jpg differ
diff --git a/static/js/lightBox/simple-lightbox.jquery.min.js b/static/js/lightBox/simple-lightbox.jquery.min.js
new file mode 100644
index 0000000..56cfad3
--- /dev/null
+++ b/static/js/lightBox/simple-lightbox.jquery.min.js
@@ -0,0 +1,7 @@
+/*!
+ By André Rinas, www.andrerinas.de
+ Documentation, www.simplelightbox.de
+ Available for use under the MIT License
+ Version 2.2.1
+*/
+"use strict";function _createForOfIteratorHelper(t){if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=_unsupportedIterableToArray(t))){var e=0,i=function(){};return{s:i,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,s,o=!0,a=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return o=t.done,t},e:function(t){a=!0,s=t},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw s}}}}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(i):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i",this.p.c=document.createElement("div"),this.p.c.classList.add("sl-navigation"),this.p.c.innerHTML=''.concat(this.options.navText[0],' ').concat(this.options.navText[1]," "),this.p.f=document.createElement("div"),this.p.f.classList.add("sl-counter"),this.p.f.innerHTML=' / ',this.p.g=document.createElement("div"),this.p.g.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.p.g.classList.add(this.options.captionClass),this.p.h=document.createElement("div"),this.p.h.classList.add("sl-image"),this.p.a=document.createElement("div"),this.p.a.classList.add("sl-wrapper"),this.options.className&&this.p.a.classList.add(this.options.className),this.options.rtl&&this.p.a.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(t,e){var i;return function(){i||(t.apply(this,arguments),i=!0,setTimeout(function(){return i=!1},e))}}},{key:"isValidLink",value:function(t){return!this.options.fileExt||"pathname"in t&&new RegExp("("+this.options.fileExt+")$","i").test(t.pathname)}},{key:"calculateTransitionPrefix",value:function(){var t=(document.body||document.documentElement).style;return"transition"in t?"":"WebkitTransition"in t?"-webkit-":"MozTransition"in t?"-moz-":"OTransition"in t&&"-o"}},{key:"toggleScrollbar",value:function(t){var e=0;if("hide"===t){var i=window.innerWidth;if(!i){var n=document.documentElement.getBoundingClientRect();i=n.right-Math.abs(n.left)}if(document.body.clientWidth=this.relatedElements.length)&&!1===this.options.loop)return!1;this.nIndex=n<0?this.relatedElements.length-1:n>this.relatedElements.length-1?0:n,this.p.f.querySelector(".sl-current").innerHTML=this.nIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*i-this.v.a+"px"),this.fadeOut(this.p.h,300,function(){e.h=!0,setTimeout(function(){var t=e.relatedElements[e.nIndex];e.n.setAttribute("src",t.getAttribute(e.options.sourceAttr)),-1===e.q.indexOf(t.getAttribute(e.options.sourceAttr))&&e.show(e.p.d),e.p.h.contains(e.p.g)&&e.p.h.removeChild(e.p.g),e.adjustImage(i),e.options.preloading&&e.preload()},100)})}},{key:"adjustImage",value:function(a){var r=this;if(!this.n)return!1;var t=new Image,l=window.innerWidth*this.options.widthRatio,h=window.innerHeight*this.options.heightRatio;t.setAttribute("src",this.n.getAttribute("src")),this.n.dataset.scale=1,this.n.dataset.translateX=0,this.n.dataset.translateY=0,this.zoomPanElement(0,0,1),t.addEventListener("error",function(t){r.relatedElements[r.nIndex].dispatchEvent(new Event("error."+r.o)),r.h=!1,r.g=!1,r.p.d.style.display="none";var e=1===a||-1===a;if(r.r===r.nIndex&&e)return r.close();r.options.alertError&&alert(r.options.alertErrorMessage),r.loadImage(e?a:1)}),t.addEventListener("load",function(t){void 0!==a&&(r.relatedElements[r.nIndex].dispatchEvent(new Event("changed."+r.o)),r.relatedElements[r.nIndex].dispatchEvent(new Event((1===a?"nextDone":"prevDone")+"."+r.o))),r.options.history&&r.updateURL(),-1===r.q.indexOf(r.n.getAttribute("src"))&&r.q.push(r.n.getAttribute("src"));var e=t.target.width,i=t.target.height;if(r.options.scaleImageToRatio||l=r.relatedElements.length-1&&r.hide(r.p.c.querySelector(".sl-next")),0=i.relatedElements.length-1&&0i.options.swipeTolerance&&e?i.loadImage(0h){var i,n=_createForOfIteratorHelper(a);try{for(n.s();!(i=n.n()).done;){i.value.style.opacity=""}}catch(t){n.e(t)}finally{n.f()}r&&r.call(l,a)}else{var s,o=_createForOfIteratorHelper(a);try{for(o.s();!(s=o.n()).done;){s.value.style.opacity=e}}catch(t){o.e(t)}finally{o.f()}requestAnimationFrame(t)}}()}},{key:"hide",value:function(t){var e,i=_createForOfIteratorHelper(t=this.wrap(t));try{for(i.s();!(e=i.n()).done;){var n=e.value;n.dataset.initialDisplay=n.style.display,n.style.display="none"}}catch(t){i.e(t)}finally{i.f()}}},{key:"show",value:function(t,e){var i,n=_createForOfIteratorHelper(t=this.wrap(t));try{for(n.s();!(i=n.n()).done;){var s=i.value;s.style.display=s.dataset.initialDisplay||e||"block"}}catch(t){n.e(t)}finally{n.f()}}},{key:"wrap",value:function(t){return"function"==typeof t[Symbol.iterator]&&"string"!=typeof t?t:[t]}},{key:"on",value:function(t,e){t=this.wrap(t);var i,n=_createForOfIteratorHelper(this.elements);try{for(n.s();!(i=n.n()).done;){var s=i.value;s.fullyNamespacedEvents||(s.fullyNamespacedEvents={});var o,a=_createForOfIteratorHelper(t);try{for(a.s();!(o=a.n()).done;){var r=o.value;s.fullyNamespacedEvents[r]=e,s.addEventListener(r,e)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){n.e(t)}finally{n.f()}return this}},{key:"off",value:function(t){t=this.wrap(t);var e,i=_createForOfIteratorHelper(this.elements);try{for(i.s();!(e=i.n()).done;){var n,s=e.value,o=_createForOfIteratorHelper(t);try{for(o.s();!(n=o.n()).done;){var a=n.value;void 0!==s.fullyNamespacedEvents&&a in s.fullyNamespacedEvents&&s.removeEventListener(a,s.fullyNamespacedEvents[a])}}catch(t){o.e(t)}finally{o.f()}}}catch(t){i.e(t)}finally{i.f()}return this}},{key:"open",value:function(t){t=t||this.elements[0],"undefined"!=typeof jQuery&&t instanceof jQuery&&(t=t.get(0)),this.r=this.elements.indexOf(t),-1=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,s,o=!0,a=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return o=t.done,t},e:function(t){a=!0,s=t},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw s}}}}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(i):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i",this.p.c=document.createElement("div"),this.p.c.classList.add("sl-navigation"),this.p.c.innerHTML=''.concat(this.options.navText[0],' ').concat(this.options.navText[1]," "),this.p.f=document.createElement("div"),this.p.f.classList.add("sl-counter"),this.p.f.innerHTML=' / ',this.p.g=document.createElement("div"),this.p.g.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.p.g.classList.add(this.options.captionClass),this.p.h=document.createElement("div"),this.p.h.classList.add("sl-image"),this.p.a=document.createElement("div"),this.p.a.classList.add("sl-wrapper"),this.options.className&&this.p.a.classList.add(this.options.className),this.options.rtl&&this.p.a.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(t,e){var i;return function(){i||(t.apply(this,arguments),i=!0,setTimeout(function(){return i=!1},e))}}},{key:"isValidLink",value:function(t){return!this.options.fileExt||"pathname"in t&&new RegExp("("+this.options.fileExt+")$","i").test(t.pathname)}},{key:"calculateTransitionPrefix",value:function(){var t=(document.body||document.documentElement).style;return"transition"in t?"":"WebkitTransition"in t?"-webkit-":"MozTransition"in t?"-moz-":"OTransition"in t&&"-o"}},{key:"toggleScrollbar",value:function(t){var e=0;if("hide"===t){var i=window.innerWidth;if(!i){var n=document.documentElement.getBoundingClientRect();i=n.right-Math.abs(n.left)}if(document.body.clientWidth=this.relatedElements.length)&&!1===this.options.loop)return!1;this.nIndex=n<0?this.relatedElements.length-1:n>this.relatedElements.length-1?0:n,this.p.f.querySelector(".sl-current").innerHTML=this.nIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*i-this.v.a+"px"),this.fadeOut(this.p.h,300,function(){e.h=!0,setTimeout(function(){var t=e.relatedElements[e.nIndex];e.n.setAttribute("src",t.getAttribute(e.options.sourceAttr)),-1===e.q.indexOf(t.getAttribute(e.options.sourceAttr))&&e.show(e.p.d),e.p.h.contains(e.p.g)&&e.p.h.removeChild(e.p.g),e.adjustImage(i),e.options.preloading&&e.preload()},100)})}},{key:"adjustImage",value:function(a){var r=this;if(!this.n)return!1;var t=new Image,l=window.innerWidth*this.options.widthRatio,h=window.innerHeight*this.options.heightRatio;t.setAttribute("src",this.n.getAttribute("src")),this.n.dataset.scale=1,this.n.dataset.translateX=0,this.n.dataset.translateY=0,this.zoomPanElement(0,0,1),t.addEventListener("error",function(t){r.relatedElements[r.nIndex].dispatchEvent(new Event("error."+r.o)),r.h=!1,r.g=!1,r.p.d.style.display="none";var e=1===a||-1===a;if(r.r===r.nIndex&&e)return r.close();r.options.alertError&&alert(r.options.alertErrorMessage),r.loadImage(e?a:1)}),t.addEventListener("load",function(t){void 0!==a&&(r.relatedElements[r.nIndex].dispatchEvent(new Event("changed."+r.o)),r.relatedElements[r.nIndex].dispatchEvent(new Event((1===a?"nextDone":"prevDone")+"."+r.o))),r.options.history&&r.updateURL(),-1===r.q.indexOf(r.n.getAttribute("src"))&&r.q.push(r.n.getAttribute("src"));var e=t.target.width,i=t.target.height;if(r.options.scaleImageToRatio||l=r.relatedElements.length-1&&r.hide(r.p.c.querySelector(".sl-next")),0=i.relatedElements.length-1&&0i.options.swipeTolerance&&e?i.loadImage(0h){var i,n=_createForOfIteratorHelper(a);try{for(n.s();!(i=n.n()).done;){i.value.style.opacity=""}}catch(t){n.e(t)}finally{n.f()}r&&r.call(l,a)}else{var s,o=_createForOfIteratorHelper(a);try{for(o.s();!(s=o.n()).done;){s.value.style.opacity=e}}catch(t){o.e(t)}finally{o.f()}requestAnimationFrame(t)}}()}},{key:"hide",value:function(t){var e,i=_createForOfIteratorHelper(t=this.wrap(t));try{for(i.s();!(e=i.n()).done;){var n=e.value;n.dataset.initialDisplay=n.style.display,n.style.display="none"}}catch(t){i.e(t)}finally{i.f()}}},{key:"show",value:function(t,e){var i,n=_createForOfIteratorHelper(t=this.wrap(t));try{for(n.s();!(i=n.n()).done;){var s=i.value;s.style.display=s.dataset.initialDisplay||e||"block"}}catch(t){n.e(t)}finally{n.f()}}},{key:"wrap",value:function(t){return"function"==typeof t[Symbol.iterator]&&"string"!=typeof t?t:[t]}},{key:"on",value:function(t,e){t=this.wrap(t);var i,n=_createForOfIteratorHelper(this.elements);try{for(n.s();!(i=n.n()).done;){var s=i.value;s.fullyNamespacedEvents||(s.fullyNamespacedEvents={});var o,a=_createForOfIteratorHelper(t);try{for(a.s();!(o=a.n()).done;){var r=o.value;s.fullyNamespacedEvents[r]=e,s.addEventListener(r,e)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){n.e(t)}finally{n.f()}return this}},{key:"off",value:function(t){t=this.wrap(t);var e,i=_createForOfIteratorHelper(this.elements);try{for(i.s();!(e=i.n()).done;){var n,s=e.value,o=_createForOfIteratorHelper(t);try{for(o.s();!(n=o.n()).done;){var a=n.value;void 0!==s.fullyNamespacedEvents&&a in s.fullyNamespacedEvents&&s.removeEventListener(a,s.fullyNamespacedEvents[a])}}catch(t){o.e(t)}finally{o.f()}}}catch(t){i.e(t)}finally{i.f()}return this}},{key:"open",value:function(t){t=t||this.elements[0],"undefined"!=typeof jQuery&&t instanceof jQuery&&(t=t.get(0)),this.r=this.elements.indexOf(t),-1 ({
+ sidebarShow: 'responsive',
+ sidebarMinimize: false,
+ unreadMessagesCount: 0
+})
+
+
+export const mutations = {
+ toggleSidebarDesktop(state) {
+ const sidebarOpened = [true, 'responsive'].includes(state.sidebarShow)
+ state.sidebarShow = sidebarOpened ? false : 'responsive'
+ },
+ toggleSidebarMobile(state) {
+ const sidebarClosed = [false, 'responsive'].includes(state.sidebarShow)
+ state.sidebarShow = sidebarClosed ? true : 'responsive'
+ },
+ set(state, [variable, value]) {
+ state[variable] = value
+ }
+}
diff --git a/store/content.js b/store/content.js
new file mode 100644
index 0000000..4193f56
--- /dev/null
+++ b/store/content.js
@@ -0,0 +1,1344 @@
+export const state = () => ({
+ header: {
+ fa: {
+ t1: 'صفحه اصلی',
+ t2: 'درباره ما',
+ t3: 'فعالیت ها',
+ t4: 'پروژه ها',
+ t5: 'گالری',
+ t6: 'کاتالوگ',
+ t7: 'رویدادها',
+ t8: 'تماس با ما'
+ },
+ en: {
+ t1: 'HOME',
+ t2: 'ABOUT',
+ t3: 'ACTIVITIES',
+ t4: 'PROJECTS',
+ t5: 'GALLERY',
+ t6: 'CATALOG',
+ t7: 'BLOG',
+ t8: 'CONTACT US'
+ }
+ },
+ footer: {
+ fa: {
+ t1: 'طراحی توسط شرکت نگاره',
+ t2: 'درباره ما',
+ t3: 'فعالیت ها',
+ t4: 'پروژه ها'
+ },
+ en: {
+ t1: 'Desigen By Negareh Agency',
+ t2: 'About Us',
+ t3: 'Activities',
+ t4: 'Projects'
+ }
+ },
+ home: {
+ fa: {
+ s1: {
+ t1: 'شرکت اُریس اوکسین',
+ t2: ' خطوط لوله ، صنعت پتروشیمی ، صنعت حفاری',
+ t3: 'تاسیس شده در سال ',
+ t4: '1387',
+ t5: 'بروپایین'
+ },
+ s2: {
+ t1: 'حوزه های فعالیت شرکت اُریس اوکسین',
+ t2: 'شرکت اُریس اوکسین تجارت خود را برای تهیه و آماده سازی کلیه کالاها و محصولات مورد نیاز از جمله خطوط لوله ، اتصالات ، فلج ها و شیرآلات در پروژه های بالادستی صنعتی در زمینه های نفت ، حفاری ، گاز ، پتروشیمی ، فولاد ، نیروگاه ها و آب و فاضلاب شروع کرد. ',
+ t3: 'مشاهده پروژه ها',
+ t4: 'زنجیره تامین خطوط لوله نفت، گاز و آب',
+ t5: 'زنجیره تامین ورق های آلیاژی و API ',
+ t6: 'زنجیره تامین ملزومات صنایع پتروشیمی و پالایشی',
+ t7: 'طراحی و ساخت یونیت های فرآورش و نمک زدایی پیش ساخته Skid Mounted ',
+ t8: 'تولید پمپ های سر چاهی SRP'
+ },
+ s3: {
+ t1: 'پروژه های انجام شده',
+ t2: 'هنوز پروژه ای وجود ندارد!'
+ },
+ s4: {
+ t1: 'پروژه ها',
+ t2: 'مشاهده',
+ t3: 'هنوز پروژه ای وجود ندارد!'
+ },
+ s5: {
+ t1: 'نظر مشتریان ما'
+ },
+ s6: {
+ t1: 'گواهینامه ها'
+ },
+ s7: {
+ t1: 'ما از سال 2001 تا 2016 بسیاری از جوایز کارخانه را به دست آوردیم و بسیاری از گواهینامه ها را دریافت کردیم'
+ },
+ s8: {
+ t1: 'دفتر مرکزی',
+ t2: 'تهران، ملاصدرا،شیراز شمالی، دانشور شرقی، پلاک ۴۰، واحد ۲۰۴',
+ t3: 'خوزستان',
+ t4: 'اهواز، زیتون کارمندی، خیابان زاویه، نبش خیابان صالح پور، پلاک ۶۷، طبقه ۲',
+ t5: 'اصفهان',
+ t6: 'اصفهان، خیابان چهارباغ خواجو، خیابان شهدای خواجو، ساختمان اداری پارسا، طبقه اول، واحد ١',
+ t7: 'تماس با ما',
+ t8: 'فکس',
+ t9: 'تلفن',
+ t10: 'ایمیل',
+ t11: 'آدرس',
+ t12: 'آدرس',
+ t13: 'با ما در تماس باشید',
+ t14: 'نام کامل',
+ t15: 'ایمیل شما',
+ t16: 'موضوع',
+ t17: 'متن پیام...',
+ t18: 'ارسال',
+ t19: 'کارخانه',
+ t20: 'اهواز، برومی، خیابان ۲۰ متری شهرداری',
+ t21: 'South Korea',
+ t22: 'Address:#905, Hans Building, 124, Yeongjong Daero, Jung Gu, Incheon City, Korea',
+ t23: 'NPA',
+ t24: 'Qingdao NPA Industry Co., LtdMiddle Tongda Road, Pingdu Hi-Tech Park, Qingdao China. P.C.266706',
+ t25: 'GTC',
+ t26: '56 Sinsan-ro, Sanin-meyeon Haman. Gyeongnam,Korea',
+ t27: 'ENGEMASA',
+ t28: 'Ernesto Cardinalli St,333 Pq lndl, Miguel Abdelnur CEP13571-390 sao Carlos,SP BRAZIL.',
+ t29: 'Wonjin',
+ t30: '39. SanmakgongdanBuk4-gil, Yangsan-si, Kyungsangnam-do, 50567 Republic of Korea'
+ },
+ s9: {
+ t1: 'رضایتنامه ها',
+ t2: 'موارد بیشتر'
+ },
+ s10: {
+ t1: 'محاسبه وزنی ورق فولادی',
+ t2: 'محاسبه',
+ t3: 'وزن ورق : ',
+ t4: 'قطر(میلی متر)',
+ t5: 'ضخامت(میلی متر)',
+ t6: 'طول(متر)',
+ t7: 'تعداد',
+ t8: 'محاسبه وزن لوله',
+ t9: 'وزن لوله : ',
+ t10: 'عرض(متر)',
+ t11: 'کیلوگرم',
+ t12: 'محاسبه برحسب اینچ',
+ t13: 'قطر(اینچ)',
+ t14: 'ضخامت(اینچ)',
+ t15: 'Ib/ft',
+ t16: 'کیلوگرم',
+
+ t17: 'محاصبه بر حسب متر',
+ t18: 'طول(میلی متر)',
+ t19: 'عرض(میلی متر)',
+ t20: 'ضخامت(متر)',
+ errMsg1: 'فیلد ها نباید خالی باشد',
+ errMsg2: 'مقادیر وارد شده صحیح نمیباشد',
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Oris Oxin Company',
+ t2: 'Pipelines, Petrochemical Industry, drilling industry',
+ t3: 'Founded IN',
+ t4: '1387',
+ t5: 'Down'
+ },
+ s2: {
+ t1: 'Areas of activity of Oris Oxin Company',
+ t2: 'Oris Oxin Company started its business to supply and prepare all the goods and products needed viz. pipelines, joints, flinches, and valves in upstream industrial projects in oil, drilling, gas, petrochemical, steel, power plants, and water and sewage fields.',
+ t3: 'View projects',
+ t4: 'Supply chain of oil, gas and water pipelines',
+ t5: 'Supply chain of alloy sheets and API',
+ t6: 'Supply chain of petrochemical and refining industries',
+ t7: 'Design and construction of prefabricated Skid Mounted processing and desalination units',
+ t8: 'Production of SRP well head pumps'
+ },
+ s3: {
+ t1: 'completed projects',
+ t2: 'There is no project yet!'
+ },
+ s4: {
+ t1: 'Projects',
+ t2: 'View',
+ t3: 'There is no project yet!'
+ },
+ s5: {
+ t1: 'customers comments'
+ },
+ s6: {
+ t1: 'certificates'
+ },
+ s7: {
+ t1: 'From 2001 to 2016, we won many factory awards and received many certifications.'
+ },
+ s8: {
+ t1: 'Head Office',
+ t2: 'Unit 204 No. 40,East Daneshvar St,North Shiraz,MullaSadra, Tehran',
+ t3: 'Khuzestan',
+ t4: '2nd Floor,corner of Salehpour St. No. 67,Zavieh St.,Zaytoun Karmandi, Ahvaz',
+ t5: 'Esfahan',
+ t6: 'Parsa Office Building No. 1, next to Mazhari High School,Martyrs of Khajoo Street (behind the Radio and Television), Chahar Bagh Khajoo St.,Isfahan,',
+ t7: 'Contact',
+ t8: 'Fax',
+ t9: 'Tel',
+ t10: 'Email',
+ t11: 'Address',
+ t12: 'Address',
+ t13: 'keep in touch',
+ t14: 'Full Name',
+ t15: 'your Email',
+ t16: 'Subject',
+ t17: 'Try Message...',
+ t18: 'Send',
+ t19: 'Factory',
+ t20: '20 meters from Shahrdari Street,Boroumi,Ahvaz',
+ t21: 'South Korea',
+ t22: 'Address:#905, Hans Building, 124, Yeongjong Daero, Jung Gu, Incheon City, Korea',
+ t23: 'NPA',
+ t24: 'Qingdao NPA Industry Co., LtdMiddle Tongda Road, Pingdu Hi-Tech Park, Qingdao China. P.C.266706',
+ t25: 'GTC',
+ t26: '56 Sinsan-ro, Sanin-meyeon Haman. Gyeongnam,Korea',
+ t27: 'ENGEMASA',
+ t28: 'Ernesto Cardinalli S1,333 Pa Indi, Miguel Abdelnur CEP13571-390 sao Carlos, SP BRAZIL',
+ t29: 'Wonjin',
+ t30: '39. SanmakgongdanBuk4-gil, Yangsan-si, Kyungsangnam-do, 50567 Republic of Korea'
+ },
+ s9: {
+ t1: 'Consents',
+ t2: 'More Items'
+ },
+ s10: {
+ t1: 'Calculation Of Weight Of Steel Sheet',
+ t2: 'Calculation',
+ t3: 'Sheet Weight : ',
+ t4: 'Diameter (mm)',
+ t5: 'Thickness (mm)',
+ t6: 'length (meters)',
+ t7: 'Number',
+ t8: 'Calculate The Weight Of The Pipe',
+ t9: 'Pipe Weight : ',
+ t10: 'Width (meters)',
+ t11: 'kg',
+ t12: 'Calculate in inches',
+ t13: 'diameter (inches)',
+ t14: 'Thickness(inches)',
+ t16: 'kg/m^3',
+
+ t17: 'Calculate in meters',
+ t18: 'length (mm)',
+ t19: 'Width (mm)',
+ t20: 'Thickness (meters)',
+ errMsg1: 'Please fill in all fields',
+ errMsg2: 'Input values are not correct',
+ }
+ }
+ },
+ about: {
+ fa: {
+ s1: {
+ t1: 'درباره ما'
+ },
+ s2: {
+ t1: 'درباره ما',
+ t2: 'شرکت اُریس اوکسین ، یکی از شرکت های فعال در صنعت کشور به عنوان تامین کننده و تولیدکننده ملزومات صنعت نفت، گاز،پتروشیمی، پالایش، فولاد، حفاری و صنایع نیروگاهی از سال 1387 فعالیت خود را آغاز نموده است',
+ t3: 'عمده فعالیت های شرکت به شرح زیر است:',
+ t4: 'زنجیره تامین ورق های آلیاژی و API',
+ t5: 'زنجیره تامین خطوط لوله نفت، گاز',
+ t6: 'زنجیره تامین ملزومات صنایع پتروشیمی و پالایشی',
+ t7: 'طراحی و ساخت یونیت های فرآورش و نمک زدایی پیش ساخته Skid Mounted',
+ t8: 'تولید پمپ های سر چاهی SRP'
+ },
+ s3: {
+ t1: 'فعالیت های ما',
+ t2: 'شرکت اُریس اوکسین تجارت خود را برای تهیه و آماده سازی کلیه کالاهای و محصولات مورد نیاز مانند خطوط لوله ، اتصالات ، فلنج ها و شیرآلات در پروژه های گوناگون صنعتی در زمینه های نفت ، حفاری ، گاز پتروشیمی ، فولاد ، نیروگاه ها و آب و فاضلاب آغازنمود. این شرکت در راستای گسترش توان تجاری خود در تامین کالا و تجهیزات مورد نیاز صنایع مذکور ، دفاتری در شرکت های مختلف تاسیس نموده است',
+ t3: 'ادامه مطلب',
+ t4: 'زنجیره تامین ملزومات صنایع پتروشیمی و پالایشی',
+ t5: 'انواع کمپرسور ها و توربین ها و ...',
+ t6: 'زنجیره تامین خطوط لوله نفت، گاز و آب',
+ t7: 'لوله های درزدار و غیر درزدار و ...',
+ t8: 'تولید پمپ های سر چاهی SRP',
+ t9: 'لوازم برون چاهی و ...',
+ t10: 'طراحی و ساخت یونیت های فرآورش و نمک زدایی پیش ساخته Skid Mounted',
+ t11: '...',
+ t12: 'زنجیره تامین ورق های آلیاژی و API',
+ t13: '...'
+ },
+ s4: {
+ t1: 'پروژه های ما',
+ t2: 'شرکت اُریس اوکسین با هدف تامین و تهیه کلیه کالاهای مرتبط به خطوط لوله، اتصالات، فلنج ها و شیرآلات در پروژه های صنعتی صنایع مادر از قبیل نفت، حفاری، گاز، پتروشیمی، فولاد، صنایع نیروگاهی و همچنین صنایع آب و فاضلاب آغاز به کار نموده است.',
+ t3: 'هنوز پروژه ای وجود ندارد!'
+ },
+ s5: {
+ t1: 'اُریس',
+ t2: 'اوکسین',
+ t3: 'هنوز پروژه ای وجود ندارد!'
+ },
+ s6: {
+ t1: 'اعضای هیات مدیره',
+ t2: 'هنوز مشخصاتی وارد نشده است!'
+ },
+ s7: {
+ t1: 'نماینده شرکت GTC کره جنوبی کمپرسورها (هوا، گاز ، رفت و برگشتی و اسکرو)',
+ t2:
+ 'با توجه به دامنه وسیع کاربرد انواع کمپرسورهای رفت و برگشتی اسکرو درصنایع پتروشیمی و سایرصنایع بالادستی و پایین دستی ، شرکت اُریس اوکسین به عنوان نماینده کارخانه GTC کره جنوبی امکان انجام طراحی ، مشاوره و ساخت تجهیزات مورد نیاز صنایع مذکور را دارا می باشد. شرکت GTC با بیش از 40 سال تجربه یکی از پیشگامان تولید انواع کمپرسور های رفت و برگشتی است . این شرکت صادرات زیادی به کشورهای مختلفی مانند اروپا و ژاپن داشته است ، کمپرسور های GTC در بخش های مختلف از جمله صنایع پتروشیمی ، CNG ، LNG و صنایع فولاد مورد استفاده قرار گرفته است.\n' +
+ 'شایان ذکر است شرکت GTC در لیست فروشندگان مورد تایید شرکت ملی نفت ایران ، شرکت ملی نفت جنوب ایران NISOC و شرکت ملی صنایع پتروشیمی (NPC) ثبت شده است .',
+ t3: 'نمایندگی ها',
+ t4: 'مدارک مرتبط',
+ t5: 'بستن'
+ },
+ s8: {
+ t1: 'نماینده شرکت ENGEMASA برزیل و NPA چین Reformer Tube & Radiant Coil',
+ t2: 'شرکت اُریس اوکسین با شناخت نیازمندی های اساسی صنایع نفت ، گاز ، پتروشیمی و فولاد با نمایندگی شرکت Engemasa برزیل و NPA چین به عنوان یکی از معتبرترین سازندگان Reformer Tube و Radiant COIL می تواند پاسخگوی نیاز کارفرمایان مربوطه در این زمینه باشد .',
+ t3: 'لوله اصلاح کننده و سیم پیچ تابشی',
+ t4: 'ENGEMASAاز ایده آل های مدرنیزاسیون 1970 متولد شد ، مأموریت داشت یک شرکت ریخته گری از فولاد ضد زنگ و آلیاژهای خاص با هدف جایگزینی واردات در برزیل ایجاد کند. در سال 1990 ، ENGEMASA وارد بازار پتروشیمی شد و ریخته گری ساکن را در آلیاژهای نیکل و کروم بالا برای مشاغل با درجه حرارت بالا تأمین کرد. Engemasa فناوری ساخت لوله های سانتریفیوژ را توسعه می دهد و مونتاژ ستون های پتروشیمی را با توجه به سخت ترین کنترل های متالورژی افزودنی های میکرو آلیاژها آغاز می کند و عملکرد آنها را برای مشاغل با درجه حرارت بالا تضمین می کند. و لوله های سانتریفیوژ برای استفاده در سیم پیچ ها و اجزای کوره های تجزیه در اثر حرارت برای تولید کوره های اتیلن و اصلاحات در پالایشگاه های نفت و تولید آمونیاک - سایپرز ، باشگاه دانش شرکت اُریس اوکسین به عنوان نماینده Engemasa طی چند سال گذشته به طور فعال محصولات Engemasa را برای بخش پتروشیمی در ایران بازاریابی کرده است. محصولات Engemasa با موفقیت در بزرگترین کارخانه های الفین نصب شده و Engemasa در لیست فروشندگان شرکت ملی صنایع پتروشیمی قرار گرفته است.'
+ },
+ s9: {
+ t1: 'شرکت Hj Metal Korea کره جنوبی فلنج، اتصالات و شیرآلات',
+ t2:
+ 'شرکت HJ METAL KOREA کره جنوبی بعنوان دفتر شرکت اُریس اوکسین در زمینه تامین انواع اتصالات فولادی ، آلیاژی و انواع شیر آلات \n' +
+ '(BALL VALVE, GATE VALVE, GLOBE VALVE, CONTROL VALVE, BUTTERFLY VALVE, CHOKE VALVE)\n' +
+ 'برای سیالات ترش و شیرین با استاندارد های معتبر بین المللی در کلیه مدل ها ، سایز و کلاس ها در اندازه های 1/2 تا 72 اینچ و کلاس های 150 تا 2500 فعالیت می نماید.'
+ },
+ s10: {
+ t1: 'نماینده شرکت WONIN کره جنوبی مواد نسوز مورد استفاده در کوره ها',
+ t2: 'شرکت اُریس اوکسین به عنوان نماینده گروه WONJIN کره جنوبی در زمینه انجام امور مهندسی ، مشاوره و تامین انواع جرم های نسوز از قبیل Mortar ، Blanket ، Rope ، Ceramic Fiber Tile ، Fiber Brick میتواند ضمن مشاوره و ارائه راهکارهای فنی و علمی جهت افزایش بهره وری سیستم کوره های صنایع پتروشیمی و صنایع فولاد در زمینه تامین متریال مورد نیاز کارفرمایان محترم ، با ارائه تضمین کیفی محصولات اقدام نماید .'
+ },
+ s11: {
+ t1: 'چارت سازمانی'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'ABOUT US'
+ },
+ s2: {
+ t1: 'ABOUT US',
+ t2: 'Oris Oxin Company is one of active companies involved in the nation’s industry. It started its activity since 2008 as the supplier and manufacturer of essentials for oil, gas, petrochemical, refining, steel, drilling and power plant industries',
+ t3: 'Major activities of the company are as follows:',
+ t4: 'Supply chain of API and alloy sheets',
+ t5: 'Supply chain of oil and gas pipelines',
+ t6: 'Supply chain of essentials for petrochemical and refining industries',
+ t7: 'Design and manufacturing skid mounted processing and desalination units',
+ t8: 'Manufacturing SRP wellhead pumps'
+ },
+ s3: {
+ t1: 'our activities',
+ t2: 'Oris Oxin Company trades for the preparation and preparation of all required goods and products such as pipelines, fittings, flanges and valves in various industrial projects in the fields of oil, drilling, petrochemical gas, steel, power plants and water and wastewater. Started. In order to expand its business capacity in supplying goods and equipment needed by these industries, the company has established offices in various companies.',
+ t3: 'Read More',
+ t4: 'Supply chain of petrochemical and refining industries',
+ t5: 'Compressors and Turbines...',
+ t6: 'Supply chain of oil, gas and water pipelines',
+ t7: 'Seamless Pipe and Welded pipe...',
+ t8: 'Production of SRP well head pumps',
+ t9: 'Out-of-well equipment and ...',
+ t10: 'Design and construction of prefabricated Skid Mounted processing and desalination units',
+ t11: '...',
+ t12: 'Supply chain of alloy sheets and API',
+ t13: '...'
+ },
+ s4: {
+ t1: 'our projects',
+ t2: 'Oris Oxin Company started to supply and supply all goods related to pipelines, fittings, flanges and valves in industrial projects of parent industries such as oil, drilling, gas, petrochemical, steel, power plant industries as well as water and wastewater industries. Has done.',
+ t3: 'There is no project yet!'
+ },
+ s5: {
+ t1: 'Oris',
+ t2: 'Oxin',
+ t3: 'There is no project yet!'
+ },
+ s6: {
+ t1: 'Board Members',
+ t2: 'No specifications have been entered yet!'
+ },
+ s7: {
+ t1: 'Representative of GTC Company of South Korea Compressors (Air, Gas, Reciprocating, and Screw Compressors)',
+ t2: 'Due to the broad range of types of screw and reciprocating compressors in petrochemical industries and other upstream and downstream industries, Oris Oxin Company, as the representative of GTC Plant of South Korea, is able to design, to provide consultation service, and to manufacture the required equipment for the said industries. With over 40 years of experience, GTC Company is one of the pioneers in manufacturing different types of reciprocating compressors. This company has exported several products to different countries including Europe and Japan. GTC compressors have It is worth mentioning that GTC Company has been listed among the sellers confirmed by NIOC,NISOC, and NPC',
+ t3: 'Agencies',
+ t4: 'Related Documents',
+ t5: 'Close'
+ },
+ s8: {
+ t1: 'Representative of ENGEMASA Company of Brazil and NPA Company of China REFORMER TUBE & RADIANT COIL',
+ t2: 'Having realized the essential requirements of oil, gas, petrochemical and steel industries, and as the representative of ENGEMASA Company of Brazil and NPA Company of China, Oris Oxin Company can meet the needs of the corresponding clients in this regard as one of the most prestigious manufacturers of Reformer Tubes and Radiant Coils.',
+ t3: 'Reformer tube & Radiant Coil',
+ t4: "ENGEMASA was born from the modernization ideals of the 1970, with a mission to found a stainless steel casting and special alloys company with the objective of replacing importations in Brazil. In the 1990 , ENGEMASA entered the Petrochemical market, supplying static castings in high nickel and chrome alloys for high temperature jobs. Engemasa develops technology for the manufacturing of Centrifuged Tubes and begins the assembly of petrochemical columns according to the most rigorous metallurgical controls of micro alloys additions, guaranteeing their performance for high temperature jobs Since 1986 Engemasa has also been gaining worldwide recognition through the manufacture of static castings and centrifuged tubes for application in coils and pyrolysis furnace components for the production of ethylene and reform furnaces for petroleum refineries and ammonia production. Oris Oxin Company as Engemasa's agent has been actively marketing Engemasa's products for the petrochemical sector in Iran for the past few years. Engemasa's products have been successfully installed at some of the largest Olefin plants and Engemasa has been placed on the Vendor List of National Petrochemical Company."
+ },
+ s9: {
+ t1: 'HJ METAL KOREA Flanges, Fittings and Valves of South Korea',
+ t2: 'As the office of Oris Oxin Company, HJ METAL KOREA is involved in the supply of different types of steel and alloy fittings, and valves (Ball Valves, Gate Valves, Globe Valves, Control Valves, Butterfly Valves, Choke Valves) for sour and sweet fluids according to authentic international standards and in all models, sizes (1.2”-72”), and classes (150-2500).'
+ },
+ s10: {
+ t1: 'Representative of WONJIN Company of South Korea Reformer Materials Used in Furnaces',
+ t2: 'Oris Oxin Company, as the representative of WONJIN Group of South Korea, involved in carrying out engineering affairs, providing consultation services, and supplying different types of reformer masses such as Mortars, Blankets, Ropes, Ceramic Fiber Tiles, and Fiber Bricks, can provide consultation services and technical and scientific solutions to increase the efficiency of furnace systems of petrochemical and steel industries in order to supply the materials required by the clients by offering qualitative warranties for the products.'
+ },
+ s11: {
+ t1: 'Organizational Chart'
+ }
+ }
+ },
+ activities: {
+ fa: {
+ s1: {
+ t1: 'فعالیت ها',
+ t2: 'شرکت اُریس اوکسین تجارت خود را برای تهیه و آماده سازی کلیه کالاها و محصولات مورد نیاز مانند خطوط لوله ، اتصالات ، فلنج ها و شیرآلات در پروژه های گوناگون صنعتی در زمینه های نفت ، حفاری ، گاز پتروشیمی ، فولاد ، نیروگاه ها و آب و فاضلاب آغازنمود. این شرکت در راستای گسترش توان تجاری خود در تامین کالا و تجهیزات مورد نیاز صنایع مذکور ، دفاتری در شرکت های مختلف تاسیس نموده است '
+ },
+ s2: {
+ t1: 'زنجیره تامین خطوط لوله نفت، گاز و آب',
+ t2: 'زنجیره تامین ورق های آلیاژی و API',
+ t3: 'زنجیره تامین ملزومات صنایع پتروشیمی و پالایشی',
+ t4: 'طراحی و ساخت یونیت های فرآورش و نمک زدایی پیش ساخته Skid Mounted شرکت اُریس اوکسین',
+ t5: 'تولید پمپ های سر چاهی SRP'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'ACTIVITIES',
+ t2: 'Oris Oxin Company trades for the preparation and preparation of all required good and products such as pipelines, fittings, flanges and valves in various industrial projects in the fields of oil, drilling, petrochemical gas, steel, power plants and water and wastewater. Started. In order to expand its business capacity in supplying goods and equipment needed by these industries, the company has established offices in various companies.'
+ },
+ s2: {
+ t1: 'Supply chain of oil, gas and water pipelines',
+ t2: 'Supply chain of alloy sheets and API',
+ t3: 'Supply chain of petrochemical and refining industries',
+ t4: 'Design and construction of prefabricated Skid Mounted processing and desalination units by Oris Oxin',
+ t5: 'Production of SRP well head pumps'
+ }
+ }
+ },
+ ward: {
+ fa: {
+ s1: {
+ t1: 'زنجیره تامین ملزومات پتروشیمی'
+ },
+ s2: {
+ t1: 'شرکت اُریس اوکسین با توجه به حضور مستمر و فعال در صنایع نفت ، گاز و پتروشیمی به عنوان تامین کننده کالا ها و تجهیزات مورد نیاز این صنایع جزء تامین کنندگان مورد تایید وزارت نفت می باشد',
+ t2: 'لوله های کاتالیست و منیفولد (قطعات خروجی) و - قطعات ریخته گری استاتیک (Reducer ، Grid) - قطعات ریخته گری سانتریفیوژ (لوله)',
+ t3: 'انواع کمپرسورها (هوا و گاز-رفت و برگشتی و اسکرو)',
+ t4: 'انواع مواد نسوز مورد استفاده در کوره های صنایع پتروشیمی',
+ t5: 'ابزار لوله'
+ },
+ s3: {
+ t1: 'لوله های کاتالیست و منیفولد (قطعات خروجی) و - قطعات ریخته گری استاتیک (Reducer ، Grid) - قطعات ریخته گری سانتریفیوژ (لوله)',
+ t2: 'لوله اصلاح کننده',
+ t3: 'سیم پیچ تابشی',
+ t4: 'قطعات استاتیک',
+ t5: 'سیم پیچ همرفتی',
+ t6: 'مواد:',
+ t7: 'ورق لوله ، راهنما و براکت ASTM A216 WCB',
+ t8: ' ASTM A217 WC9',
+ t9: ' ASTM A447 TPII',
+ t10: ' ASTM A297 HF',
+ t11: ' ASTM A351 HK40',
+ t12: ' ASTM A297 HP',
+ t13: ' HP mod. Nb or 25Cr35NiNb',
+ t14: ' E3545Nb-MA (35Cr45NiNb+MA) '
+ },
+ s4: {
+ t1: 'انواع مواد نسوز مورد استفاده در کوره های صنایع پتروشیمی',
+ t2: 'آجرهای نانو',
+ t3: 'آجر آتش',
+ t4: 'Castables عمومی',
+ t5: 'Castable سیمان کم',
+ t6: 'الیاف سرامیکی',
+ t7: 'تخته عایق سیلیکات کلسیم'
+ },
+ s5: {
+ t1: 'انواع کمپرسورها (هوا و گاز-رفت و برگشتی و اسکرو)',
+ t2: 'کمپرسور هوا - E / M 10 ˜ 3000 HP ، فشار: 1 ˜ 500 KG / CM2',
+ t3: 'کمپرسور گاز - E / M 10 ˜ 3000 HP ، فشار: 1 ˜ 500 KG / CM2',
+ t4: 'پیچ کمپرسور',
+ t5: 'کمپرسور فشار بالا خنک کننده هوا',
+ t6: 'مخزن خشک کن و گیرنده',
+ t7: 'پمپ خلاAC',
+ t8: 'سوپاپ و حلقه های قطعات کمپرسور'
+ },
+ s6: {
+ t1: 'ابزار لوله',
+ t2: 'ابزار نصب لوله',
+ t3: 'ابزار حذف لوله',
+ t4: 'منبسط کننده های لوله دیگ بخار',
+ t5: 'تمیز کننده های لوله'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Petrochemical Supply Chain'
+ },
+ s2: {
+ t1: 'Oris Oxin Company is one of the suppliers approved by the Ministry of Oil due to its continuous and active presence in the oil, gas and petrochemical industries as a supplier of goods and equipment required by these industries.',
+ t2: 'Catalyst tubes & Manifolds (Outlet parts) & - Static cast parts (Reducer, Grid)-Centrifugally cast parts (tubes) ',
+ t3: 'Types of compressors (air and gas-reciprocating and screw)',
+ t4: 'Types of refractory materials used in petrochemical industry furnaces',
+ t5: 'Tube tools '
+ },
+ s3: {
+ t1: ' Catalyst tubes & Manifolds (Outlet parts)& - Static cast parts (Reducer, Grid)-Centrifugally cast parts (tubes)',
+ t2: 'Reformer Tube',
+ t3: 'Radiant Coil',
+ t4: 'Static parts',
+ t5: 'Convectional coil',
+ t6: 'Materials:',
+ t7: ' Tube sheets, Guides and Brackets ASTM A216 WCB',
+ t8: ' ASTM A217 WC9',
+ t9: ' ASTM A447 TPII',
+ t10: ' ASTM A297 HF',
+ t11: ' ASTM A351 HK40',
+ t12: ' ASTM A297 HP',
+ t13: ' HP mod. Nb or 25Cr35NiNb',
+ t14: ' E3545Nb-MA (35Cr45NiNb+MA) '
+ },
+ s4: {
+ t1: ' REFRACTORY MATERIALS & SHAPES ',
+ t2: 'Nano Bricks',
+ t3: 'Fire Brick',
+ t4: 'General Castables',
+ t5: 'Low cement Castalbles',
+ t6: 'Ceramic fibers',
+ t7: 'Calcium silicate insulating board'
+ },
+ s5: {
+ t1: ' AIR & GAS COMPRESSOR(SCREW AND RECIPROCATING) ',
+ t2: 'Air compressor – E/M 10 ˜ 3000 HP, PRESSURE : 1 ˜ 500 KG/ CM2',
+ t3: 'GAS COMPRESSOR – E/M 10 ˜ 3000 HP, PRESSURE : 1 ˜ 500 KG/ CM2',
+ t4: 'SCREW COMPRESSOR',
+ t5: 'AIR COOLED HIGH PRESSURE COMPRESSOR',
+ t6: 'DRYER & RECEIVER TANK',
+ t7: 'VACUUM PUMP',
+ t8: 'VALVE & RINGS OF COMPRESSOR PARTS'
+ },
+ s6: {
+ t1: ' Tube tools ',
+ t2: 'Tube installation tools',
+ t3: 'Tube removal tools',
+ t4: 'Boiler tube expanders',
+ t5: 'Tube cleaners'
+ }
+ }
+ },
+ drilling: {
+ fa: {
+ s1: {
+ t1: 'زنجیره تامین ورق های آلیاژی و API'
+ },
+ s2: {
+ t1: 'شرکت اُریس اوکسین تامین کننده انواع ورق های آلیاژی و API از کارخانجات داخلی و خارجی متناسب با صنعت نفت، گاز، پتروشیمی و پالایشگاه میباشد. این شرکت دارای بزرگترین استاک ورقهای آلیاژی در سطح کشور میباشد و می تواند نیازهای گوناگون صنایع را به صورت فوری مرتفع سازد. ',
+ t2: 'تامین و همکاری در تولید و بومی سازی ورقهای A283 GR.C NACE & A516 GR.70 جهت پروژه ذخیره سازی مخازن گوره به جاسک',
+ t3: 'تامین و همکاری در تولید و بومی سازی ورق های A516 GR.60 & 70 NACE تلمبه خانه های 1 تا 5',
+ t4: 'تامین و همکاری در تولید و بومی سازی ورقهای A516 GR.60 NACE جهت ساخت شیرآلات MBV خط لوله انتقال نفت خام گوره به جاسک',
+ t5: 'پوشش و لوله',
+ t6: 'ابعاد ورق های آلیاژی قابل تولید',
+ t7: 'ابعاد ورق های آلیاژی قابل عمليات کوئنچ/تمپر',
+ t8: 'ابعاد ورق های آلیاژی قابل عملیات نرماله کردن',
+ t9: 'ضخامت',
+ t10: 'طول',
+ t11: 'عرض',
+ t12: 'از 8 تا 150 میلیمتر',
+ t13: 'از 10 تا 60 میلیمتر',
+ t14: 'از 10 تا 120 میلیمتر',
+ t15: 'از 2500 تا 15000 میلیمتر',
+ t16: 'از 2500 تا 15000 میلیمتر',
+ t17: 'از 2500 تا 15000 میلیمتر',
+ t18: 'از 1100 تا 4500 میلیمتر',
+ t19: 'از 1100 تا 4500 میلیمتر',
+ t20: 'از 1100 تا 4500 میلیمتر'
+ },
+ s3: {
+ t1: 'لوازم برون چاهی',
+ t2: 'ابزارهای حفاری',
+ t3: 'پمپ گلدان برتر درایور',
+ t4: 'رسم آثار',
+ t5: 'درایو چرخشی'
+ },
+ s4: {
+ t1: 'لوازم درون چاهی',
+ t2: 'ابزارهای حفاری',
+ t3: 'لوله حفاری',
+ t4: 'لوله وزنی',
+ t5: 'تثبیت کننده بیت و تثبیت کننده رشته ',
+ t6: 'لوله مته با وزن سنگین',
+ t7: 'لوله های سنگین بالای لوله حفاری',
+ t8: 'بیت های حفاری: مته های حفاری ، Rock bit ، PDC',
+ t9: ' X-Over sub, Bit Sub, Junk Double Pin Sub, Shouck Sub',
+ t10: 'Reamer (رشته و بیت نزدیک)',
+ t11: 'ابزارهای ماهیگیری',
+ t12: 'دستگاه های خرد کن روکش ، یقه های چرخشی ، Overshot ، Packer',
+ t13: 'آسیاب کننده های حفاری',
+ t14: 'آسیاب غرق شده ، آسیاب اکونو ، آسیاب مخروطی',
+ t15: 'ضربه زننده های حفاری'
+ },
+ s5: {
+ t1: 'وازم سر چاهی',
+ t2: 'تجهیزات Wealhead',
+ t3: "Wellhead & X'mass Tree (christmass Tree) ، B.P ، سوپاپ ها",
+ t4: 'سر روکش ، Globe Valve ، Choke & Kill Manifold',
+ t5: 'منیفولد ترکیبی ، شیر چوک حفاری ، منیفولد گل و لای ، جداکننده گل و لای'
+ },
+ s6: {
+ t1: 'پوشش و لوله',
+ t2:
+ 'این گروه قادر به تامین انواع لوله های Casing & Tubing & Liner از کارخانجات مورد تایید صنعت حفاری می باشد.لوله های تیوبینگ از 8/27 تا 12 و کیسینگ از 5 تا 20 و کنداکتور از 26 الی 30 در گریدهای، C30 ، T90، P110، K56، L80، Q125 قابل تامین و تهیه می باشد.' +
+ 'لوله های فوق مطابق با استاندارد API5CT و بر اساس ترکیبات مورد نیاز کروم و نیکل از لوله های Seamless یا ERW با گرید های J55 و K55 به صورت RL45، SWIFT BUTRESS ، BIG OMEGA ، VAMTOP، DW2 و سایر رزوه های عمومی و تخصصی و کوپلینگ ها تولید خواهد شد.'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Alloy Sheet Supply Chain and API'
+ },
+ s2: {
+ t1: 'Oris Oxin Company supplies all types of API and alloy sheets from domestic and foreign factories proportionate to oil, gas, petrochemical and refinery industries. The company has the largest stock of alloy sheets in the nation, and it can promptly meet various demands of industries.',
+
+ t2: 'Supply and cooperation in production and localization of A283 GR.C NACE & A516 GR.70 sheets for storage project of Gore to Jask reservoirs',
+ t3: 'Supply and cooperation in the production and localization of A516 GR.60 & 70 NACE sheets Pumps 1 to 5',
+ t4: 'Supply and cooperation in production and localization of A516 GR.60 NACE sheets for manufacturing MBV valves of Goreh to Jask crude oil transfer pipeline',
+ t5: 'Casing And Tubing ',
+ t6: 'Dimensions of producible alloy sheets',
+ t7: 'Dimensions of alloy sheets capable of being used for quench/tamper operations',
+ t8: 'Dimensions of alloy sheets capable of normalization',
+ t9: 'thickness',
+ t10: 'length',
+ t11: 'width',
+ t12: 'From 8 to 150 mm',
+ t13: 'From 10 to 60 mm',
+ t14: 'From 10 to 120 mm',
+ t15: 'From 2500 to 15000 mm',
+ t16: 'From 2500 to 15000 mm',
+ t17: 'From 2500 to 15000 mm',
+ t18: 'From 1100 to 4500 mm',
+ t19: 'From 1100 to 4500 mm',
+ t20: 'From 1100 to 4500 mm'
+ },
+ s3: {
+ t1: ' Out-Of-Well Appliances ',
+ t2: ' Drilling ring equipment',
+ t3: ' Top Driver Mud Pump',
+ t4: ' Draw works',
+ t5: ' Rotary drive'
+ },
+ s4: {
+ t1: 'In-Well Appliances',
+ t2: ' Drilling Tools',
+ t3: ' Drill Pipe',
+ t4: ' Drill Collar لوله وزنی',
+ t5: ' Near Bit Stabilizer and String Stabilizer',
+ t6: ' Heavy Weight drill pipe',
+ t7: 'Kelly',
+ t8: ' Drilling bits: Rock bit, PDC',
+ t9: ' X-Over sub, Bit Sub, Junk Double Pin Sub, Shouck Sub',
+ t10: ' Reamer (string and Near bit)',
+ t11: ' Fishing Tools',
+ t12: ' Casing scraders, Rotery die Collars, Over shot, Dacker',
+ t13: ' Drilling Mill',
+ t14: ' Sunk Mill,Econo Mill,Taper Mill',
+ t15: ' Drilling Jar and oil Jar'
+ },
+ s5: {
+ t1: ' Wellhead Accessories ',
+ t2: ' Wealhead equipment',
+ t3: " Wellhead & X'mass Tree( christmass Tree),B.P , Valves",
+ t4: ' Casing head,Globe Valve,Choke & Kill Manifold',
+ t5: ' Combination Manifold, Drilling Choke valve, Mud Manifold, Mud-Gas-Separrator '
+ },
+ s6: {
+ t1: ' Casing And Tubing ',
+ t2: ' This ward has the capacity to supply variety of casing, tubing, and liner tubes from the competent and creditable producers in drilling industry. Tubing pipes ranged from 12” to 27.8”, casing ranged from 5” to 20”, conductors ranged from 26” to 30” at C30, T90, P110, K56, L80, Q125 grades are available. The said products are manufactured based on API5CT standard and made of chrome and nickel. Seamless or ERW tubes with J55 and K55 grads are available as RL45, Swift Butress, Big Omega, Vamtop, and Dw2 with general and specific screw threats and coupling. '
+ }
+ }
+ },
+ skid: {
+ fa: {
+ s1: {
+ t1: 'واحد های بهره برداری نمک زدایی پیش ساخته Skid Mounted'
+ },
+ s2: {
+ t1: 'شرکت اُریس اوکسین فعالیت خود را با همکاری شرکای استراتژیک داخلی و بین المللی در زمینه ساخت، تأمین و راه اندازی تاسیسات بهره برداری زود هنگام سیار از میادین نفت و گاز آغاز نموده است. اهتمام این مجموعه از بدو تأسیس اجرای پروژه ها مطابق استانداردهای بین المللی از طریق بهره گیری از به روز ترین فناوری های مورد استفاده در صنایع نفت و گاز بوده است. این شرکت در سال ۱۳۹۶، تکنولوژی نوین جداسازی مایعات را بدون استفاده از مواد شیمیایی و میدان های مغناطیسی برای اولین بار در کشور معرفی نمود که کاهش نمک همراه نفت را به میزان مورد انتظار در تنها یک مرحله ممکن ساخته و بدون نیاز به سیستم پمپاژ ورودی و فشار افزایی نمک زدایی امکان کارکرد در فشار اتمسفریک را داراست. این شرکت افتخار دارد در مقایسه با واحدهای متعارف که با تأخیرات غيرقابل توجیه احداث می گردند، مزایای ذیل را به کارفرمایان محترم ارائه نماید :',
+ t2: 'رفع تنگناهای موجود در عملیات بهره برداری',
+ t3: 'تسریع در اجرای طرحهای مصوب و دستیابی به اهداف تعیین شده مطابق پیش بینی',
+ t4: 'کاهش تصدی گری شرکت ملی نفت ایران',
+ t5: 'بهبود شاخص های اقتصادی',
+ t6: 'تسریع در روند به روزرسانی تجهیزات فرسوده با تکنولوژی روز جهت کاهش هزینه تولید',
+ t7: 'استفاده از ظرفیت بومی و ایجاد اشتغال',
+ t8: ' کاهش هزینه های تولید نفت در راستای حفظ منافع ملی',
+ t9: 'این شرکت علاوه بر توانمندی طراحی، ساخت، تامین و راه اندازی واحدهای بهره برداری و نمک زدایی پیش ساخته ، با اتخاذ راهکارهای تقویت بنیه مالی خود قابليت سرمايه گذاری مالی پروژه ها را به صورت BOT/B00 فراهم نموده است و امیدوار است با بهره گیری از ظرفیت های خود از طریق کاهش هزینه تولید نفت، جلوگیری از هدر رفت سرمایه ملی، پیشگیری از آلودگی های زیست محیطی او نیز توسعه فناوری ملی، بومی سازی ساخت تجهیزات و اشتغال زایی، همسو با سیاست های کلی اقتصاد مقاومتی گام بردارد'
+ },
+ s3: {
+ t1: 'لوازم برون چاهی',
+ t2: 'ابزارهای حفاری',
+ t3: 'پمپ گلدان برتر درایور',
+ t4: 'رسم آثار',
+ t5: 'درایو چرخشی'
+ },
+ s4: {
+ t1: 'لوازم درون چاهی',
+ t2: 'ابزارهای حفاری',
+ t3: 'لوله حفاری',
+ t4: 'لوله وزنی',
+ t5: 'تثبیت کننده بیت و تثبیت کننده رشته ',
+ t6: 'لوله مته با وزن سنگین',
+ t7: 'لوله های سنگین بالای لوله حفاری',
+ t8: 'بیت های حفاری: مته های حفاری ، Rock bit ، PDC',
+ t9: ' X-Over sub, Bit Sub, Junk Double Pin Sub, Shouck Sub',
+ t10: 'Reamer (رشته و بیت نزدیک)',
+ t11: 'ابزارهای ماهیگیری',
+ t12: 'دستگاه های خرد کن روکش ، یقه های چرخشی ، Overshot ، Packer',
+ t13: 'آسیاب کننده های حفاری',
+ t14: 'آسیاب غرق شده ، آسیاب اکونو ، آسیاب مخروطی',
+ t15: 'ضربه زننده های حفاری'
+ },
+ s5: {
+ t1: 'وازم سر چاهی',
+ t2: 'تجهیزات Wealhead',
+ t3: "Wellhead & X'mass Tree (christmass Tree) ، B.P ، سوپاپ ها",
+ t4: 'سر روکش ، Globe Valve ، Choke & Kill Manifold',
+ t5: 'منیفولد ترکیبی ، شیر چوک حفاری ، منیفولد گل و لای ، جداکننده گل و لای'
+ },
+ s6: {
+ t1: 'پوشش و لوله',
+ t2:
+ 'این گروه قادر به تامین انواع لوله های Casing & Tubing & Liner از کارخانجات مورد تایید صنعت حفاری می باشد.لوله های تیوبینگ از 8/27 تا 12 و کیسینگ از 5 تا 20 و کنداکتور از 26 الی 30 در گریدهای، C30 ، T90، P110، K56، L80، Q125 قابل تامین و تهیه می باشد.' +
+ 'لوله های فوق مطابق با استاندارد API5CT و بر اساس ترکیبات مورد نیاز کروم و نیکل از لوله های Seamless یا ERW با گرید های J55 و K55 به صورت RL45، SWIFT BUTRESS ، BIG OMEGA ، VAMTOP، DW2 و سایر رزوه های عمومی و تخصصی و کوپلینگ ها تولید خواهد شد.'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Skid Mounted Prefabricated Desalination Units'
+ },
+ s2: {
+ t1: 'Oris Oxin Company started its activity in the field of manufacturing, supply, and commissioning of mobile facilities for early operation of oil and gas fields with the collaboration of domestic and international strategic partners.This company has made its utmost as of its establishment to accomplish projects in accordance with international standards by utilizing the most up-to-date technologies used in the oil and gas industries.In 2017, the modern technology of liquid separation with no use of chemicals and magnetic fields was introduced by this company for the first time in the country. The said technology allows for oil desalination to the expected level only in one stage. It is capable to work under atmospheric pressure 1 without any need for inlet pumping system and increase in pressure for desalination.Compared to the conventional plants which are constructed with unjustifiable delays, this company is proud to provide the clients with the following benefits:',
+ t2: ' Eliminating the existing bottlenecks in utilization operations',
+ t3: ' Facilitating the construction of approved projects, access to the determined goals as anticipated',
+ t4: 'Reduction of the ownership of the National Iranian Oil Company',
+ t5: 'Improvement of economic indexes',
+ t6: ' Facilitating the update of worn-out equipment by modern technology to reduce production costs',
+ t7: ' Using the local potentials and entrepreneurship',
+ t8: 'Reducing oil production costs in line with preservation of national interests',
+ t9: 'In addition to the capability of design, construction, supply and commissioning of skid mounted utilization and desalination plants, this company has prepared the grounds for financial investment of projects in form of BOT/BOO by adopting certain solutions to enhance its financial ability, hoping to take steps in line with general policies of resistive economy by benefitting from its capacities through reducing oil production cost, preventing from loss of national assets, preventing from environmental pollutions, development of national technology, and localizing the manufacturing of equipment and entrepreneurship.'
+ },
+ s3: {
+ t1: ' Out-Of-Well Appliances ',
+ t2: ' Drilling ring equipment',
+ t3: ' Top Driver Mud Pump',
+ t4: ' Draw works',
+ t5: ' Rotary drive'
+ },
+ s4: {
+ t1: 'In-Well Appliances',
+ t2: ' Drilling Tools',
+ t3: ' Drill Pipe',
+ t4: ' Drill Collar لوله وزنی',
+ t5: ' Near Bit Stabilizer and String Stabilizer',
+ t6: ' Heavy Weight drill pipe',
+ t7: 'Kelly',
+ t8: ' Drilling bits: Rock bit, PDC',
+ t9: ' X-Over sub, Bit Sub, Junk Double Pin Sub, Shouck Sub',
+ t10: ' Reamer (string and Near bit)',
+ t11: ' Fishing Tools',
+ t12: ' Casing scraders, Rotery die Collars, Over shot, Dacker',
+ t13: ' Drilling Mill',
+ t14: ' Sunk Mill,Econo Mill,Taper Mill',
+ t15: ' Drilling Jar and oil Jar'
+ },
+ s5: {
+ t1: ' Wellhead Accessories ',
+ t2: ' Wealhead equipment',
+ t3: " Wellhead & X'mass Tree( christmass Tree),B.P , Valves",
+ t4: ' Casing head,Globe Valve,Choke & Kill Manifold',
+ t5: ' Combination Manifold, Drilling Choke valve, Mud Manifold, Mud-Gas-Separrator '
+ },
+ s6: {
+ t1: ' Casing And Tubing ',
+ t2: ' This ward has the capacity to supply variety of casing, tubing, and liner tubes from the competent and creditable producers in drilling industry. Tubing pipes ranged from 12” to 27.8”, casing ranged from 5” to 20”, conductors ranged from 26” to 30” at C30, T90, P110, K56, L80, Q125 grades are available. The said products are manufactured based on API5CT standard and made of chrome and nickel. Seamless or ERW tubes with J55 and K55 grads are available as RL45, Swift Butress, Big Omega, Vamtop, and Dw2 with general and specific screw threats and coupling. '
+ }
+ }
+ },
+ srp: {
+ fa: {
+ s1: {
+ t1: 'پمپ میله ای SRP (Sucker Rod Pump)'
+ },
+ s2: {
+ t1: 'با توجه به افت مخازن نفت در مناطق نفت خیز مختلف بر اثر تولید طولانی وقدمت مخازن، جهت افزایش تولید از انواع مختلف روش ها استفاده میگردد. که یکی از کاربردی ترین روش ها استفاده از پمپ های میله ای مکشی (SRP) می باشد که نسبت به سایر پمپ های سرچاهی کاربردی تر و مقرون به صرفه تر می باشد و از نظرتعمیرات و خدمات نسبت به انواع روش های دیگرساده تر و بادوام تر است ',
+ t2: 'انعقاد قرارداد نمایندگی انحصاری ساخت پمپ های میله ای مکشی (SRP) با شرکت SHENGLI HIGHLAND',
+ t3: 'ادامه فرایند بومی سازی دانش ساخت پمپ های SRP از طریق انعقاد قرارداد بومی سازی دانش ساخت تجهیزات ARTIFICIAL LIFTING با دانشگاه صنعتی شریف و دانشگاه شهید چمران اهواز',
+ t4: 'تجهیز کارگاه ساخت پمپ های SRP با تجهیزات مدرن',
+ t5: 'شروع عملیات ساخت پمپ های SRP ',
+ t6: 'دراین راستا شرکت اُریس اوکسین ضمن پیوستن به لیست سازندگان مورد تایید شرکت ملی نفت ایران و سرمایه گذاری گسترده و با یاری دانش مهندسین و متخصصین ایرانی، فعالیت های گسترده ای را در زمینه تولید و بومی سازی پمپ های سر چاهی اقدامات به شرح ذیل را انجام داده است:'
+ },
+ s3: {
+ t1: 'لوازم برون چاهی',
+ t2: 'ابزارهای حفاری',
+ t3: 'پمپ گلدان برتر درایور',
+ t4: 'رسم آثار',
+ t5: 'درایو چرخشی'
+ },
+ s4: {
+ t1: 'لوازم درون چاهی',
+ t2: 'ابزارهای حفاری',
+ t3: 'لوله حفاری',
+ t4: 'لوله وزنی',
+ t5: 'تثبیت کننده بیت و تثبیت کننده رشته ',
+ t6: 'لوله مته با وزن سنگین',
+ t7: 'لوله های سنگین بالای لوله حفاری',
+ t8: 'بیت های حفاری: مته های حفاری ، Rock bit ، PDC',
+ t9: ' X-Over sub, Bit Sub, Junk Double Pin Sub, Shouck Sub',
+ t10: 'Reamer (رشته و بیت نزدیک)',
+ t11: 'ابزارهای ماهیگیری',
+ t12: 'دستگاه های خرد کن روکش ، یقه های چرخشی ، Overshot ، Packer',
+ t13: 'آسیاب کننده های حفاری',
+ t14: 'آسیاب غرق شده ، آسیاب اکونو ، آسیاب مخروطی',
+ t15: 'ضربه زننده های حفاری'
+ },
+ s5: {
+ t1: 'وازم سر چاهی',
+ t2: 'تجهیزات Wealhead',
+ t3: "Wellhead & X'mass Tree (christmass Tree) ، B.P ، سوپاپ ها",
+ t4: 'سر روکش ، Globe Valve ، Choke & Kill Manifold',
+ t5: 'منیفولد ترکیبی ، شیر چوک حفاری ، منیفولد گل و لای ، جداکننده گل و لای'
+ },
+ s6: {
+ t1: 'پوشش و لوله',
+ t2:
+ 'این گروه قادر به تامین انواع لوله های Casing & Tubing & Liner از کارخانجات مورد تایید صنعت حفاری می باشد.لوله های تیوبینگ از 8/27 تا 12 و کیسینگ از 5 تا 20 و کنداکتور از 26 الی 30 در گریدهای، C30 ، T90، P110، K56، L80، Q125 قابل تامین و تهیه می باشد.' +
+ 'لوله های فوق مطابق با استاندارد API5CT و بر اساس ترکیبات مورد نیاز کروم و نیکل از لوله های Seamless یا ERW با گرید های J55 و K55 به صورت RL45، SWIFT BUTRESS ، BIG OMEGA ، VAMTOP، DW2 و سایر رزوه های عمومی و تخصصی و کوپلینگ ها تولید خواهد شد.'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'SRP (Sucker Rod Pump) bar pump'
+ },
+ s2: {
+ t1: 'Different methods are used to increase production due to the pressure drop of oil tanks in different oil-rich areas caused by long production and age of the tanks. One of the most practical methods is to use Sucker Rod Pump (SRP) which is more practical and cost effective than other wellhead pumps and is simpler and more durable than other methods in terms of repairs and services.',
+ t2: 'Concluding an agency contract with SHENGLI HIGHLAND Company to transfer the SRP manufacturing technology',
+ t3: 'Continuing the localization process of SRP manufacturing knowledge through conclusion of contracts with Sharif University of Technology and Shahid Chamran University of Ahvaz to localize the knowledge of manufacturing ARTIFICIAL LIFTING equipment',
+ t4: ' Equipping SRP manufacturing site with modern equipment',
+ t5: ' Start of SRP manufacturing operations',
+ t6: 'In this regard, in addition to joining the list of the manufacturers confirmed by NIOC and an extensive investment, Oris Oxin Company has accomplished extensive measures in the realm of manufacturing and localization of wellhead pumps assisted by the knowledge of Iranian engineers and experts as follows:'
+ },
+ s3: {
+ t1: ' Out-Of-Well Appliances ',
+ t2: ' Drilling ring equipment',
+ t3: ' Top Driver Mud Pump',
+ t4: ' Draw works',
+ t5: ' Rotary drive'
+ },
+ s4: {
+ t1: 'In-Well Appliances',
+ t2: ' Drilling Tools',
+ t3: ' Drill Pipe',
+ t4: ' Drill Collar لوله وزنی',
+ t5: ' Near Bit Stabilizer and String Stabilizer',
+ t6: ' Heavy Weight drill pipe',
+ t7: 'Kelly',
+ t8: ' Drilling bits: Rock bit, PDC',
+ t9: ' X-Over sub, Bit Sub, Junk Double Pin Sub, Shouck Sub',
+ t10: ' Reamer (string and Near bit)',
+ t11: ' Fishing Tools',
+ t12: ' Casing scraders, Rotery die Collars, Over shot, Dacker',
+ t13: ' Drilling Mill',
+ t14: ' Sunk Mill,Econo Mill,Taper Mill',
+ t15: ' Drilling Jar and oil Jar'
+ },
+ s5: {
+ t1: ' Wellhead Accessories ',
+ t2: ' Wealhead equipment',
+ t3: " Wellhead & X'mass Tree( christmass Tree),B.P , Valves",
+ t4: ' Casing head,Globe Valve,Choke & Kill Manifold',
+ t5: ' Combination Manifold, Drilling Choke valve, Mud Manifold, Mud-Gas-Separrator '
+ },
+ s6: {
+ t1: ' Casing And Tubing ',
+ t2: ' This ward has the capacity to supply variety of casing, tubing, and liner tubes from the competent and creditable producers in drilling industry. Tubing pipes ranged from 12” to 27.8”, casing ranged from 5” to 20”, conductors ranged from 26” to 30” at C30, T90, P110, K56, L80, Q125 grades are available. The said products are manufactured based on API5CT standard and made of chrome and nickel. Seamless or ERW tubes with J55 and K55 grads are available as RL45, Swift Butress, Big Omega, Vamtop, and Dw2 with general and specific screw threats and coupling. '
+ }
+ }
+ },
+ srpConex: {
+ fa: {
+ s1: {
+ t1: 'مشخصات کانکس اتاقک کنترل سیستم SRP-ساخت شرکت اُریس اوکسین'
+ },
+ s2: {
+ t1: 'ابعاد کانکس (ارتفاع*عرض*طول) 2600*2500*4000 میلیمتر میباشد.',
+ t2: 'شاسی کانکس از تیرآهن نمره 14 بصورت دور کلاف ',
+ t3: 'اسکلت از ورق 3 میلیمتر خمکاری شده از آلیاژ ST-37که با کلاف قوطی 40در 80 میلیمتر از داخل تقویت شده است و کف ریزی شاسی از پروفیل مقطع 70 میلیمتر اجرا شده است و همچنین سقف با قوطی 40 در 40 میلیمتر تقویت گردیده. (جوشکاری ها بصورت فول جوش )',
+ t4: 'رنگ استراکچر کانکس با اجرای کامل آستری زینک ریچ آپوکسی در دو مرحله و اجرای یک مرحله رنگ پلی اورتان نمای بیرونی',
+ t5: 'دیواره ها و سقف کانکس از نوع ساندویچ پنل 4 سانتیمتر با دانسیته 40 از ورق گالوانیزه آلوزینک ضخامت 0.5 میلیمتر کند سوز اجرا گردیده.',
+ t6: 'کف کانکس با ورق 2 میلیمتر گالوانیزه و تخته چند لایه ضدآب به ضخامت 16 میلیمتر با روکش کفپوش رولی آنتی استاتیک اجرا گردیده.',
+ t7: 'درب ورودی از جنس ساندویچ پانل دارای شیشه خور 50*40 سانتیمتر به همراه دستگیره سوئیچی به همراه نوار آب بندی',
+ t8: 'پنجره از نوع UPVC با شیشه دو جداره ثابت',
+ t9: 'تعبیه دریچه هدایت (ورودی وخروجی) کابل های برق به خارج از کانکس با گلند پلیت',
+ t10: 'تعبیه 4 عدد لاگ حمل با جرثقیل در چهار گوشه بالای کانکس( از نبشی سایز100 میلمتر و ضخامت 10 میلیمتر)- تعبیه قلاب در تیرآهن شاسی اصلی جهت حمل اضطراری به ضخامت 15 میلیمتر و از بالا مجهز به چهار قلاب از سیم بکسل 16 میلیمتر با شگل جهت حمل با جرثقیل ',
+ t11: 'برق کشی کانکس با رعایت استانداردهای لازم طبق دستورالعمل تایید شده از سوی کارفرما',
+ t12: 'نصب یک دستگاه کولر اسپیلت 18000 BTUبا موتور پیستونی از برند های مورد تایید کارفرما.',
+ t13: 'تهیه و نصب پایه و سایبان جهت محافظت از یونیت out door کولر اسپلیت.',
+ t14: 'کلیه ورودی ها و خروجی ها از قبیل درب و پنجره دارای آب چکان می باشند.',
+ t15: 'آب بندی و درزگیری با چسب مخصوص و سیلیکون انجام گرفته است.',
+ t16: 'نقاط اتصال سقف و دیواره و تمامی زوایای ظاهری بصورت مناسب با استفاده از فلاشینگ پوشیده و آب بندی شده است.',
+ t17: 'شیب بندی مناسب سقف کانکس جهت هدایت آب',
+ t18: 'کانکس دارای درجه محافظت IP 65 می باشد.'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Specifications of SRP system control room canopy - made by Oris Oxin company'
+ },
+ s2: {
+ t1: 'The dimensions of the canopy (height * width * length) are 2600 * 2500 * 4000 mm.',
+ t2: 'The chassis of the canopy is made of grade 14 beams in a coil circumference',
+ t3: 'The frame is made of 3 mm bent sheet of ST-37 alloy, which is reinforced with a 40 by 80 mm can coil from the inside, and the chassis floor is made of a 70 mm cross-section profile, and the roof is reinforced with a 40 by 40 mm can. (Welding in full welding)',
+ t4: 'Concrete structure paint with full application of zinc-rich epoxy primer in two stages and one-stage application of polyurethane exterior paint',
+ t5: 'The walls and roof of the canopy are made of 4 cm sandwich panel with a density of 40 galvanized sheets of Aluzink, 0.5 mm thick, slow-burning.',
+ t6: 'The floor of the canopy is made of 2 mm galvanized sheet and 16 mm thick waterproof laminate board with antistatic roll floor covering.',
+ t7: 'Entrance door made of sandwich panel with glass opening 50 * 40 cm with switch handle with sealing tape',
+ t8: 'UPVC type window with fixed double glazing',
+ t9: 'Installation of control valves (input and output) of power cables outside the canopy with gland plate',
+ t10: 'Installation of 4 carrying logs with cranes in the upper four corners of the canopy (from the corner of size 100 mm and thickness 10 mm) - Installation of hooks in the main chassis beam for emergency transport with a thickness of 15 mm and equipped with four hooks of 16 mm tow wire from above With rope for transport by crane',
+ t11: 'Electrical installation of the canopy in compliance with the necessary standards, according to the instructions approved by the employer',
+ t12: "Installation of an 18000 BTU split air conditioner with a piston motor from the client's approved brands.",
+ t13: 'Preparing and installing the base and canopy to protect the split air conditioner out door unit.',
+ t14: 'All inputs and outputs such as doors and windows have sprinklers.',
+ t15: 'Sealing and sealing is done with special glue and silicone.',
+ t16: 'The connection points of the ceiling and the wall and all the apparent angles are properly covered and sealed using flushing.',
+ t17: 'Proper slope of the roof of the canopy to direct water',
+ t18: 'The canopy has a degree of protection of IP 65.'
+ }
+ }
+ },
+ dieselConnex: {
+ fa: {
+ s1: {
+ t1: 'مشخصات کانکس دیزل ژنراتور-ساخت شرکت اُریس اوکسین'
+ },
+ s2: {
+ t1: 'ابعاد کانکس (ارتفاع*عرض*طول) 3000*2500*7500 میلیمتر می باشد.',
+ t2: 'دیواره ها و سقف کانکس از نوع ساندویچ پنل برند ماموت 6 سانتیمتر با دانسیته 40 از ورق گالوانیزه آلوزینک ضخامت 0.5 میلیمتر با تزریق فوم پلی اورتان خارجی کند سوز می باشد.',
+ t3: 'یک سمت دیوار طولی دارای یک لنگه درب نفر رو به ابعاد 90*200 سانتیمتر از جنس ساندویچ پنل و دو درب دسترسی بالا بازشو به دیزل ژنراتور می باشد و سمت دیگر آن علاوه بر درب نفر رو و دو درب دسترسی بالا باز شو، دارای یک دریچه هواکش به ابعاد مناسب جهت ورود هوای مورد نیاز ژنراتور ها نیز می باشد که این دریچه ها مجهز به فیلتر قابل تعویض جهت جلوگیری از ورود گرد و غبار به داخل کانکس می باشد.',
+ t4: 'کلیه درب ها از جنس ساندویچ پنل 6 سانتیمتر با کلاف آلومینیومی مقاوم در مقابل حرارت میباشند.',
+ t5: 'دو درب بازشو مجهز به دریچه هواکش در عرض کانکس جهت انتقال دیزل ژنراتور به داخل یا بیرون کانکس تعبیه شده است.',
+ t6: 'نوع رنگ استراکچر از دو لایه آستری زینک ریچ اپوکسی و یک لایه رویه پلی اورتان می باشد. ',
+ t7: 'کانکس دارای دو عدد فن هواکش 30*30 (مجهز به دمپر برای جلوگیری از ورود گرد و غبار) می باشد.',
+ t8: 'کانکس دارای سیستم روشنایی داخل و بیرون با تجهیزات کلید و پریز برق با رعایت استانداردهای لازم طبق دستورالعمل تایید شده از سوی کارفرما برق کشی شده است.',
+ t9: '4 عدد قلاب حمل با جرثقیل بهمراه شگل در چهار گوشه کانکس تعبیه شده است.',
+ t10: 'استراکچر و ستونهای کانکس از ورق فولادی ضخامت 5 میلمتر از آلیاژ A283 GR-C خمکاری شده که با کلاف قوطی40در80 میلیمتر و قوطی 60در60 میلیمتر به ضخامت 2.5 میلیمتر از داخل تقویت شده اند.',
+ t11: 'کلاف شاسی ناودانی از ورق خمکاری شده به ضخامت 8 میلیمتر از آلیاژ A283 GR-C می باشد.',
+ t12: 'کف کانکس از ورق آجدار به ضخامت 3 میلیمتر و رام بندی از ورق 5 میلیمتر ناودانی خمکاری می باشد.',
+ t13: 'دریچه هدایت (ورودی و خروجی) کابل های برق به خارج از کانکس با گلند پلیت تعبیه شده است.',
+ t14: 'لوله کشی مناسب جهت انتقال گازوئیل بصورت رفت و برگشتی در نظر گرفته شده که از لوله کربن استیل اجرا شده است.',
+ t15: 'سقف کانکس دارای 2 عدد دریچه اگزوز مناسب موتور، به همراه عایق بندی محل اتصال میباشد.',
+ t16: 'نقاط اتصال سقف و دیواره و تمامی زوایای ظاهری بصورت مناسب با استفاده از فلاشینگ پوشیده و آب بندی می شود.',
+ t17: 'کانکس دارای 2 عدد کپسول آتش نشانی به همراه جانمایی جعبه کپسول ها در بدنه بیرونی می باشد.',
+ t18: 'مجموعه دارای فریم نگهدارنده دیزل ژنراتور به همراه لرزه گیر و ناودانی ریلی جهت ورود و خروج ژنراتور و همچنین سینی تخلیه روغن میباشد.',
+ t19: 'سقف کانکس دارای 4 درصد شیب عرضی و همچنین ناودان هدایت آب باران دارای 0.5 درصد شیب طولی میباشد.'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Specifications of diesel generator canopy-made by Oris Oxin company'
+ },
+ s2: {
+ t1: 'The dimensions of the canopy (height * width * length) are 3000 * 2500 * 7500 mm.',
+ t2: 'The walls and ceiling of the canopy are of Mammoth brand sandwich panel type, 6 cm, with a density of 40, made of galvanized Aluzink sheet, 0.5 mm thick, by injection of slow-burning external polyurethane foam.',
+ t3: 'One side of the longitudinal wall has a door handle with dimensions of 90 x 200 cm made of sandwich panel and two high access doors open to the diesel generator and the other side in addition to the front door and two high access doors open, It also has a ventilation valve with suitable dimensions to enter the air required by the generators. These valves are equipped with a replaceable filter to prevent dust from entering the canopy.',
+ t4: 'All doors are made of 6 cm sandwich panel with heat-resistant aluminum coil.',
+ t5: 'Two opening doors equipped with a vent valve are installed in the width of the canopy to transfer the diesel generator to the inside or outside of the canopy.',
+ t6: 'The type of structure paint is two layers of zinc-rich epoxy primer and one layer of polyurethane surface.',
+ t7: 'The canopy has two 30 * 30 ventilation fans (equipped with a damper to prevent the entry of dust).',
+ t8: 'The canopy has an indoor and outdoor lighting system with switchgear and socket equipment in accordance with the necessary standards, according to the instructions approved by the employer.',
+ t9: '4 hooks with crane and rope are installed in the four corners of the canopy.',
+ t10: 'The structure and columns of the canopy are made of 5 mm thick steel sheet made of A283 GR-C alloy, which is reinforced with a 40 by 80 mm can and a 60 by 60 mm can with a thickness of 2.5 mm from the inside.',
+ t11: 'The stud chassis coil is made of bent sheet with a thickness of 8 mm made of A283 GR-C alloy.',
+ t12: 'The floor of the canopy is made of ribbed sheet with a thickness of 3 mm and the taming of the sheet is 5 mm with bending studs.',
+ t13: 'Conduction valve (input and output) of power cables outside the canopy with gland plate is installed.',
+ t14: 'Suitable piping for diesel transfer is considered as a reciprocating, which is made of carbon steel pipe.',
+ t15: 'The roof of the canopy has 2 exhaust valves suitable for the engine, along with the insulation of the joint.',
+ t16: 'The connection points of the ceiling and walls and all the apparent angles are properly covered and sealed using flushing.',
+ t17: 'The canopy has 2 fire extinguishers with the location of the capsule box in the outer body.',
+ t18: 'The set has a diesel generator holding frame with anti-vibration and rail studs for generator entry and exit, as well as oil drain tray.',
+ t19: 'The roof of the canopy has a 4% transverse slope and also the rainwater gutter has a 0.5% longitudinal slope.'
+ }
+ }
+ },
+ piping: {
+ fa: {
+ s1: {
+ t1: 'زنجیره تامین خطوط لوله نفت، گاز و آب'
+ },
+ s2: {
+ t1: 'یکی از مهمترین فعالیت های شرکت اُریس اوکسین تأمین لوله های فولادی جهت خطوط انتقال نفت و گاز متناسب با محیط های ترش و شیرین به صورت بدون درز و درزدار می باشد. این شرکت در راستای تأمین لوله از مرحله تأمین اسلب ،تأمین ورق تا لوله پوشش شده را در دستورکار خود قرار داده است و این فعالیت را در قالب چهارچوب های متفاوت جهت تأمین رضایت کارفرمایان گوناگون به انجام می رساند.',
+ t2: 'انواع ورق',
+ t3: 'لوله های جوش داده شده',
+ t4: 'لوله های بدون درز',
+ t5: 'فلج و مفاصل',
+ t6: 'شیرآلات',
+ t7: 'لوله های HFW با ERW',
+ t8: 'لوله های LSAW',
+ t9: 'لوله های اسپیرال SSAW',
+ t10: 'از سایز "6 الى "24',
+ t11: 'از سایز "24 الى "56',
+ t12: 'از سایز "24 الى "100',
+ t13: 'از سایز "1/2 الى "24',
+ t14: 'لوله های SMLS'
+ },
+ s3: {
+ t1: 'انواع ورق',
+ t2: 'اُریس اوکسین با توجه به نیاز کارفرمایان، توانایی تامین انواع کویل، ورق های فولادی و الیاژی از کشورهای اروپایی غربی، کره جنوبی (posco) و کارخانجات معتبر کشورچین را در کوتاهترین زمان ممکن دارد. این شرکت در جهت برطرف نمودن نیازهای فوریتی صنایع اقدام به واردات و ایجاد موجودی کاملی از انواع ورق های الیاژی، استیل،صنعتی و ورق های مخصوص تولید خطوط لوله با ارایه گواهینامه های معتبر نموده است.',
+ t3: 'تامین ورق های مورد نیاز بر اساس گریدهای مورد نیاز جهت ساخت لوله های فولادی ',
+ t4: 'توانمندی تامین ورق بر اساس گریدهای مورد نیاز ساخت لوله از جمله Grib,X42,X52,X60,X65,X70 از کارخانه های داخل کشور فولاد مبارکه و اکسین اهواز و از کارخانه های خارج از کشور و وندور لیت مورد تایید شرکت نفت و گاز ایران '
+ },
+ s4: {
+ t1: 'لوله های درزدار',
+ t2: 'یکی از بزرگترین فعالیت های شرکت اُریس اوکسین تامین کلیه لوله ای فولادی جهت خطوط نفت و گاز اعم از سرویس های ترش و شیرین به صورت درزدار و بدون درز می باشد. لوله های درز دار( LSA,SSAW,ERW,HFW) این شرکت در راستای تامین لول های فولادی به عنوان نماینده شرکت لوله سازی اهواز فعالیت نموده و با توجه به انبار شرکت لوله سازی اهواز و همچنین طرفیت تولید این شرکت به صورت ذیل، تامین و ساخت لول های فولادی را به انجام می رساند.',
+ t3: ' مشارکت مالی جهت تامین مواد اولیه خطوط لوله ',
+ t4: 'تامین ورق های API جهت ساخت لوله ',
+ t5: 'تامین و ساخت لوله از کارخانجات شرکت لوله سازی اهواز',
+ t6: 'شرکت لوله سازی اهواز تولید کننده انواع لوله های فولادی ( ترش و غیر ترش) جوش مستقیم به روش های HFW از سایز6 تا 2 اینچ، SAWL از سایز 24 تا 56 اینچ و SAWH از سایز 24 الی 100 اینچ جهت مصارف نفت ، گاز و آبرسانی می باشد.همچنین این شرکت قادر است لولهای 2 تا 56 اینچ را در کارخانه های پوشش پلی اتیلن سه لایه گرم خود بر اساس استاندارد DIN 30670 و استانداردهای شرکت ملی گاز ایران وپوشش خارجی و نیز لولهای فولادی را از سایز 20 الی 56 اینچ پوشش داخلی اپوکسی نماید. '
+ },
+ s5: {
+ t1: 'لوله های بدون درز',
+ t2: 'ا توجه به محدودیت تولید لوله های بدون درز در ایران اعم از سرویس ترش و شیرین و نیاز کارفرمایان به منابع خارجی، شرکت اُریس اوکسین با توجه به روابط گسترده با بهترین سازندگان و تامین کنندگان خارجی اقدام به تامین و واردات انواع لولهای بدون درز در سایزها و ضخامت های گوناگون مطابق با استانداردهای مورد نیاز کارفرمایان می نماید. همچنین این شرکت در جهت تسریع و با توجه به نیازهای فوریتی کارفرمایان، می تواند از بزرگترین انبارهای جهانی به صورت فوریتی انواع لوله های مورد نیاز را تامین کند. این شرکت با توجه به شرکای تجاری با کشور جین، توانمندی تامین کلیه لوله های بدون درز از کارخانه های چینی مورد تایید وندور لیست شرکت نفت و گاز ایران را دارد. '
+ },
+ s6: {
+ t1: 'فلنج و اتصالات',
+ t2: 'ریس اوکسین به عنوان تامین کننده تخصصی انواع فلنج و اتصالات،با ایجاد انبار وسیعی از محصولات فوق ساخت کشورهای اروپایی و کره جنوبی به صورت فوریتی نیاز کارفرمایان این شرکت می تواند از طریق دفاتر خود به صورت مستقیم از کارخانجات اروپایی و نیز بزرگترین کارخانجات کره جنوبی نیاز کارفرمایان را تامین نماید. '
+ },
+ s7: {
+ t1: 'شیرآلات',
+ t2: 'با توجه به شناخت پروژه های صنعتی نیز کاربرد انواع شیرالات صنعتی در پروژه ها، اُریس اوکسین می تواند با توجه به دارا بودن تیم کارشناسی در این زمینه از بهترین سازندگان خارجی ( اروپایی و نیز سازندگان مطرح کشور کره جنوبی) خدمات تامین انواع شیرالات را ارایه نماید.'
+ },
+ s8: {
+ t1: 'سوپر آلیاژها'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Supply chain of oil, gas and water pipelines'
+ },
+ s2: {
+ t1: 'One of the most important activities of Oris Oxin Company is to supply seamed and seamless steel pipes for oil and gas transmission lines proportionate to sour and sweet mediums.This company has put in its agenda the supply of pipes, from supply of slabs and sheets to coated pipes, and it carries out this activity within different frameworks to meet the satisfaction of various clients.',
+ t2: 'Sheets',
+ t3: 'Welded pipes',
+ t4: 'Seamless pipes',
+ t5: 'Flinch and joints',
+ t6: 'Valves',
+ t7: 'HFW/ERW Pipes',
+ t8: 'LSAW pipes',
+ t9: 'SSAW Spiral Tubes',
+ t10: 'from size "6 to "24',
+ t11: 'from size "24 to "56',
+ t12: 'from size "24 to "100 ',
+ t13: 'from size "1/2 to "24 ',
+ t14: 'SMLS pipes'
+ },
+ s3: {
+ t1: 'Sheets',
+ t2: ' Given our clients’ demand, Oris Oxin the company is ready to supply variety of coils and steel and alloy sheets from West European countries, South Korea (POSCO), and creditable Chinese producers in shortest feasible time. To meet urgent needs of the industry, the company has imported and amassed all types of standard alloy, steel, industrial, and pipeline sheets. ',
+ t3: ' Supplying sheets needed of API steel pipe grade',
+ t4: 'Supplying sheets of pipe grades (e.g. Grib, X42, X52, X60, X65, X70) '
+ },
+ s4: {
+ t1: ' Welded pipes ',
+ t2: ' One of the main activities of Oris Oxin Co. is to supply all types of welded and seamless steel pipes for gas and oil industry including sour and sweet services. Welded pipes (LSA, SSAW, ERW, HFW) Oris Oxin is representative of Ahvaz Pipe Company and supplies and manufactures steel pipes based on the following arrangements: ',
+ t3: ' Financial cooperation to supply raw materials for pipe lines',
+ t4: 'Supplying API sheets for pipe production.',
+ t5: 'Supplying pipes manufactured in Ahvaz Pipe Company.',
+ t6: ' Ahvaz Pipe Company is producer of direct welded steel pipes (sour and sweet) produced through HFW (2-6”), SAWL (24-56”), and SAWH (24-100”) for oil, gas, and water services. The company also produces 2-56” pipes based on DIN 30670 standard and standards of National Iran Gas Company in hot three layer polyethylene coating factory. Steel pipe with epoxy lining are available at size range 20-56”. '
+ },
+ s5: {
+ t1: ' Seamless pipes ',
+ t2: ' Given the limited production capacity for seamless pipe in Iran for sour and sweet services, Oris Oxin supplies standard seamless pipes of different diameter and thickness from creditable foreign producers. To meet urgent needs of our clients, we supply pipes from main international suppliers. We can supply seamless pipe from Chinese producers in vendor list of Iran Oil and gas Company. '
+ },
+ s6: {
+ t1: ' Flinch and joints ',
+ t2: ' Oris Oxin is an expert producer of variety of flinches and joints and with its large warehouses, the company can cover urgent needs of the clients by European and Korean products. We import products directly from European and Korean main producers. '
+ },
+ s7: {
+ t1: ' Valves ',
+ t2: ' Relying on our knowledge about industrial products and usages of industrial pipelines and our team of experienced experts, Oris Oxin supplies variety of valves from main European and Korean Producers. '
+ },
+ s8: {
+ t1: 'Super Alloys'
+ }
+ }
+ },
+ projects: {
+ fa: {
+ s1: {
+ t1: 'پروژه ها'
+ },
+ s2: {
+ t1: 'ادامه خواندن',
+ t2: 'هنوز پروژه ای وجود ندارد!',
+ t3: 'عنوان پروژه',
+ t4: 'نام کارفرما',
+ t5: 'تاریخ',
+ t6: 'جزئیات',
+ t7: 'جزئیات بیشتر',
+ t8: 'این پروژه فاقد جزئیات میباشد!',
+ t9: 'همه',
+ t10: 'حجم(kg)',
+ t11: 'متراژ(m)'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'PROJECTS'
+ },
+ s2: {
+ t1: 'Countinue Reading',
+ t2: 'There is no project yet!',
+ t3: 'Subject',
+ t4: 'Customer Name',
+ t5: 'Date',
+ t6: 'Detail',
+ t7: 'More Details',
+ t8: 'This project lacks details!',
+ t9: 'All',
+ t10: 'volume (kg)',
+ t11: 'Area (m)'
+ }
+ }
+ },
+ detailsProject: {
+ fa: {
+ s1: {},
+ s2: {
+ t1: 'اطلاعات پروژه',
+ t2: 'مشتری',
+ t3: 'حجم(kg)',
+ t4: 'متراژ(m)'
+ },
+ s5: {
+ t1: 'مشاهده آلبوم'
+ },
+ s7: {
+ t1: 'متشکرم!',
+ t2: 'برای مطالعه'
+ }
+ },
+ en: {
+ s1: {},
+ s2: {
+ t1: 'Project Information',
+ t2: 'Client',
+ t3: 'Size(kg)',
+ t4: 'Area(m)'
+ },
+ s5: {
+ t1: 'View album'
+ },
+ s7: {
+ t1: 'THANK YOU!',
+ t2: ' For Reading '
+ }
+ }
+ },
+ gallery: {
+ fa: {
+ s1: {
+ t1: 'گالری'
+ },
+ s2: {
+ t1: 'همه',
+ t2: 'بدون دسته بندی'
+ },
+ s3: {
+ t1: 'پمپ های لوله کشی ، حفاری ، پتروشیمی ، شیرین سازی و چاه',
+ t2: 'هنوز تصویری وجود ندارد!'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'GALLERY'
+ },
+ s2: {
+ t1: 'All',
+ t2: 'Without Category'
+ },
+ s3: {
+ t1: ' Piping, drilling, Petrochemical, desalination & Wellhead pumps ',
+ t2: 'No picture yet!'
+ }
+ }
+ },
+ catalog: {
+ fa: {
+ s1: {
+ t1: 'کاتالوگ'
+ },
+ s2: {
+ t1: 'دانلود',
+ t2: 'هنوز پستی وجود ندارد!'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'CATALOG'
+ },
+ s2: {
+ t1: 'Download',
+ t2: 'There is no Post yet!'
+ }
+ }
+ },
+ blog: {
+ fa: {
+ s1: {
+ t1: 'رویدادها'
+ },
+ s2: {
+ t1: 'همه'
+ },
+ s3: {
+ t1: 'ادامه متن',
+ t2: 'هنوز پستی وجود ندارد!'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Blog'
+ },
+ s2: {
+ t1: 'All'
+ },
+ s3: {
+ t1: 'Countinue Reading',
+ t2: 'There is no Post yet!'
+ }
+ }
+ },
+ blogDetails: {
+ fa: {
+ s1: {
+ t1: 'رویداد'
+ },
+ s2: {
+ t1: 'رویداد',
+ t2: 'صفحه اصلی'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Blog'
+ },
+ s2: {
+ t1: 'Blog',
+ t2: 'Home'
+ }
+ }
+ },
+ contact: {
+ fa: {
+ s1: {
+ t1: 'تماس با ما'
+ },
+ s2: {
+ t1: 'کارخانه',
+ t2: 'اهواز، برومی، خیابان ۲۰ متری شهرداری',
+ t3: 'خوزستان',
+ t4: 'اهواز، زیتون کارمندی، خیابان زاویه، نبش خیابان صالح پور، پلاک ۶۷، طبقه ۲',
+ t5: 'اصفهان',
+ t6: 'اصفهان، خیابان چهار باغ خواجو، خیابان شهدای خواجو،ساختمان اداری پارسا،طبقه اول واحد ۱',
+ t9: 'تلفن',
+ t10: 'ایمیل',
+ t11: 'دفتر مرکزی',
+ t12: 'تهران، ملاصدرا،شیراز شمالی، دانشور شرقی، پلاک ۴۰، واحد ۲۰۴',
+ t13: 'South Korea',
+ t14: 'Address:#905, Hans Building, 124, Yeongjong Daero, Jung Gu, Incheon City, Korea',
+ // t14: "#905 ، ساختمان هانس ، 124 ، یونگ جونگ دائرو ، یونگ گو ، شهر اینچئون ، کره",
+ t15: 'China',
+ t16: 'Qingdao NPA Industry Co.,LtdMiddle Tongda Road, Pingdu Hi-Tech Park,Qingdao China. P.C.266706',
+ t17: 'GTC',
+ t18: '56 Sinsan-ro, Sanin-meyeon Haman. Gyeongnam,Korea',
+ t19: 'Brazil',
+ t20: 'Ernesto Cardinalli St,333 Pq lndl, Miguel Abdelnur CEP13571-390 sao Carlos,SP BRAZIL.',
+ t21: 'Wonjin',
+ t22: '39. SanmakgongdanBuk4-gil, Yangsan-si, Kyungsangnam-do, 50567 Republic of Korea',
+ t23: 'وب سایت',
+ t24: 'فکس',
+ t25: 'تلفکس'
+ },
+ s3: {
+ t1: 'با ما در ارتباط باشید',
+ t2: 'شرکت اُریس اوکسین با هدف تامین و تهیه کلیه کالاهای مرتبط به خطوط لوله، اتصالات، فلنج ها و شیرآلات در پروژه های صنعتی صنایع مادر از قبیل نفت، حفاری، گاز، پتروشیمی، فولاد، صنایع نیروگاهی و همچنین صنایع آب و فاضلاب آغاز به کار نموده است.',
+ t3: 'نام کامل',
+ t4: 'ایمیل شما',
+ t5: 'موضوع',
+ t6: 'متن پیام...',
+ t7: 'ارسال',
+ t8: 'موقعیت مکانی',
+ t9: 'تهران، ملاصدرا،شیراز شمالی، دانشور شرقی، پلاک ۴۰، واحد ۲۰۴'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'CONTACT US'
+ },
+ s2: {
+ t1: 'Factory',
+ t2: '20 meters from Shahrdari Street,Boroumi,Ahvaz',
+ t3: 'Khuzestan',
+ t4: '2nd Floor,corner of Salehpour St. No. 67,Zavieh St.,Zaytoun Karmandi, Ahvaz',
+ t5: 'Esfahan',
+ t6: 'Parsa Office Building No. 1, next to Mazhari High School,Martyrs of Khajoo Street (behind the Radio and Television), Chahar Bagh Khajoo St.,Isfahan,',
+ t9: 'Tel',
+ t10: 'Email',
+ t11: 'Head Office',
+ t12: 'Unit 204 No. 40,East Daneshvar St,North Shiraz,MullaSadra, Tehran',
+ t13: 'South Korea',
+ t14: 'Address:#905, Hans Building, 124, Yeongjong Daero, Jung Gu, Incheon City, Korea',
+ t15: 'China',
+ t16: 'Qingdao NPA Industry Co., LtdMiddle Tongda Road, Pingdu Hi-Tech Park, Qingdao China. P.C.266706',
+ t17: 'GTC',
+ t18: '56 Sinsan-ro, Sanin-meyeon Haman. Gyeongnam,Korea',
+ t19: 'Brazil',
+ t20: 'Ernesto Cardinalli S1,333 Pa Indi, Miguel Abdelnur CEP13571-390 sao Carlos, SP BRAZIL',
+ t21: 'Wonjin',
+ t22: '39. SanmakgongdanBuk4-gil, Yangsan-si, Kyungsangnam-do, 50567 Republic of Korea',
+ t23: 'Web Site',
+ t24: 'Fax',
+ t25: 'telefax'
+ },
+ s3: {
+ t1: 'Get in touch with us',
+ t2: 'Oris Oxin Company started to supply and supply all goods related to pipelines, fittings, flanges and valves in industrial projects of parent industries such as oil, drilling, gas, petrochemical, steel, power plant industries as well as water and wastewater industries. Has done.',
+ t3: 'Full Name',
+ t4: 'your Email',
+ t5: 'Subject',
+ t6: 'Try Message...',
+ t7: 'Send',
+ t8: 'Location',
+ t9: 'No. 204 Unit 20, East University St., Shiraz St., Mulla Sadra Alley, Tehran'
+ }
+ }
+ },
+ consents: {
+ fa: {
+ s1: {
+ t1: 'رضایتنامه ها'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Consents'
+ }
+ }
+ },
+ search: {
+ fa: {
+ s1: {
+ t1: 'جستجو'
+ },
+ s2: {
+ t1: 'رویدادها',
+ t2: 'آلبوم',
+ t3: 'پروژه'
+ }
+ },
+ en: {
+ s1: {
+ t1: 'Search'
+ },
+ s2: {
+ t1: 'Blog',
+ t2: 'Gallery',
+ t3: 'Project'
+ }
+ }
+ }
+})
diff --git a/store/global.js b/store/global.js
new file mode 100644
index 0000000..1d5ce9b
--- /dev/null
+++ b/store/global.js
@@ -0,0 +1,9 @@
+export const state = () => ({
+ cover: {}
+})
+
+export const mutations = {
+ setCover(state, payload) {
+ state.cover = payload
+ }
+}
diff --git a/utils/animations.js b/utils/animations.js
new file mode 100644
index 0000000..885a971
--- /dev/null
+++ b/utils/animations.js
@@ -0,0 +1,123 @@
+export const fadeInAnimation = $gsap => {
+ /////////////////////////////////////// class 1 animation
+ const fadeInElements = $('.anim-fadeIn')
+ Object.keys(fadeInElements).forEach((item, index) => {
+ if (index < fadeInElements.length) {
+ $gsap
+ .timeline({
+ scrollTrigger: {
+ trigger: $(fadeInElements[item]),
+ start: 'top 95%'
+ }
+ })
+ .from($(fadeInElements[item]), { y: 30, opacity: 0, duration: 0.3, stagger: 5 })
+ }
+ })
+}
+
+export const fadeInStaggerAnimation = $gsap => {
+ const fadeInElements = $('.anim-fadeInStagger')
+ Object.keys(fadeInElements).forEach((item, index) => {
+ if (index < fadeInElements.length) {
+ $gsap
+ .timeline({
+ scrollTrigger: {
+ trigger: $(fadeInElements[item]),
+ start: 'top 80%'
+ }
+ })
+ .from($(fadeInElements[item]), { y: 30, opacity: 0, duration: 0.3, stagger: 0.2 })
+ }
+ })
+}
+
+export const leftToRightAnimation = $gsap => {
+ const fadeInElements = $('.anim-leftToRight')
+ Object.keys(fadeInElements).forEach((item, index) => {
+ if (index < fadeInElements.length) {
+ $gsap
+ .timeline({
+ scrollTrigger: {
+ trigger: $(fadeInElements[item]),
+ start: 'top 80%'
+ }
+ })
+ .from($(fadeInElements[item]), { x: -300, opacity: 0, duration: 0.7 })
+ }
+ })
+}
+
+export const leftToRightStaggerAnimation = $gsap => {
+ const fadeInElements = $('.anim-leftToRightStagger')
+ Object.keys(fadeInElements).forEach((item, index) => {
+ if (index < fadeInElements.length) {
+ this.$gsap
+ .timeline({
+ scrollTrigger: {
+ trigger: $(fadeInElements[item]),
+ start: 'top 80%'
+ }
+ })
+ .from($(fadeInElements[item]), {
+ x: 30,
+ opacity: 0,
+ duration: 0.3,
+ stagger: 0.2
+ })
+ }
+ })
+}
+
+export const rightToLeftAnimation = $gsap => {
+ const fadeInElements = $('.anim-RightToLeft')
+ Object.keys(fadeInElements).forEach((item, index) => {
+ if (index < fadeInElements.length) {
+ $gsap
+ .timeline({
+ scrollTrigger: {
+ trigger: $(fadeInElements[item]),
+ start: 'top 80%'
+ }
+ })
+ .from($(fadeInElements[item]), { x: 300, opacity: 0, duration: 0.7 })
+ }
+ })
+}
+
+export const numberAnimation = $gsap => {
+ const fadeInElements = $('.anim-number')
+ Object.keys(fadeInElements).forEach((item, index) => {
+ if (index < fadeInElements.length) {
+ $gsap
+ .timeline({
+ scrollTrigger: {
+ trigger: $(fadeInElements[item]),
+ start: 'top 80%'
+ }
+ })
+ .from($(fadeInElements[item]), {
+ textContent: 0,
+ duration: 0.5,
+ ease: 'power1.in',
+ snap: { textContent: 1 },
+ stagger: 1
+ })
+ }
+ })
+}
+
+export const progressAnimation = $gsap => {
+ const fadeInElements = $('.anim-progress')
+ Object.keys(fadeInElements).forEach((item, index) => {
+ if (index < fadeInElements.length) {
+ $gsap
+ .timeline({
+ scrollTrigger: {
+ trigger: $(fadeInElements[item]),
+ start: 'top 80%'
+ }
+ })
+ .from($(fadeInElements[item]), { width: 0, opacity: 0, duration: 0.5 })
+ }
+ })
+}