diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..9d1b07d5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,148 @@
+# private
+/log/*
+/package-lock.json
+package-lock.json
+/.idea
+.idea
+./.idea
+.idea/*
+../.idea
+.DS_Store
+
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# 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
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://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/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+.cache
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+Footer
+© 2022 GitHub, Inc.
+Footer navigation
+Terms
+Privacy
+Security
+Status
diff --git a/Backend/.gitignore b/Backend/.gitignore
new file mode 100755
index 00000000..00d6346f
--- /dev/null
+++ b/Backend/.gitignore
@@ -0,0 +1,153 @@
+# private
+/config/database.js
+/config/secret.js
+/log/*
+/package-lock.json
+package-lock.json
+/.idea
+.idea
+./.idea
+.idea/*
+
+# refactor for later
+/middlewares
+
+# Logs
+log
+./log
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# 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
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://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/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+.cache
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+Footer
+© 2022 GitHub, Inc.
+Footer navigation
+Terms
+Privacy
+Security
+Status
diff --git a/Backend/README.md b/Backend/README.md
new file mode 100755
index 00000000..94be9069
--- /dev/null
+++ b/Backend/README.md
@@ -0,0 +1,143 @@
+# Node.js Template
+
+## To Test
+> 웹 브라우저 주소창 or Postman에서 다음을 입력
+>
+>> 서버주소/app/test
+>
+> 현재 서버 주소 :
+
+> 다음 결과가 나오면 성공
+>> {"isSuccess":true,"code":1000,"message":"성공"}
+
+
+
+### Folder Structure
+- `src`: 메인 로직
+ `src`에는 도메인 별로 패키지를 구성하도록 했다. **도메인**이란 회원(User), 게시글(Post), 댓글(Comment), 주문(Order) 등 소프트웨어에 대한 요구사항 혹은 문제 영역이라고 생각하면 된다. 각자 설계할 APP을 분석하고 필요한 도메인을 도출하여 `src` 폴더를 구성하자.
+- `config` 및 `util` 폴더: 메인 로직은 아니지만 `src` 에서 필요한 부차적인 파일들을 모아놓은 폴더
+- 도메인 폴더 구조
+> Route - Controller - Provider/Service - DAO
+
+- Route: Request에서 보낸 라우팅 처리
+- Controller: Request를 처리하고 Response 해주는 곳. (Provider/Service에 넘겨주고 다시 받아온 결과값을 형식화), 형식적 Validation
+- Provider/Service: 비즈니스 로직 처리, 의미적 Validation
+- DAO: Data Access Object의 줄임말. Query가 작성되어 있는 곳.
+
+- 메소드 네이밍룰
+ 이 템플릿에서는 사용되는 메소드 명명 규칙은 User 도메인을 참고하자. 항상 이 규칙을 따라야 하는 것은 아니지만, 네이밍은 통일성 있게 해주는 게 좋다.
+
+
+### Comparison
+3개 템플릿 모두 다음과 같이 Request에 대해 DB 단까지 거친 뒤, 다시 Controller로 돌아와 Response 해주는 구조를 갖는다. 구조를 먼저 이해하고 템플릿을 사용하자.
+> `Request` -> Route -> Controller -> Service/Provider -> DAO -> DB
+
+> DB -> DAO -> Service/Provider -> Controller -> Route -> `Response`
+
+다음은 각 템플릿 별 차이점을 비교 기술해 놓은 것이다.
+#### PHP (패키지매니저 = composer)
+> Request(시작) / Response(끝) ⇄ Router (index.php) ⇄ Controller ⇄ Service (CUD) / Provider (R) ⇄ PDO (DB)
+
+#### Node.js (패키지매니저 = npm)
+> Request(시작) / Response(끝) ⇄ Router (*Route.js) ⇄ Controller (*Controller.js) ⇄ Service (CUD) / Provider (R) ⇄ DAO (DB)
+
+#### Springboot java (패키지매니저 = Maven (= Spring 선호), Gradle (Springboot 선호))
+> Request(시작) / Response(끝) ⇄ Controller(= Router + Controller) ⇄ Service (CUD) / Provider (R) ⇄ DAO (DB)
+
+### Validation
+서버 API 구성의 기본은 Validation을 잘 처리하는 것이다. 외부에서 어떤 값을 날리든 Validation을 잘 처리하여 서버가 터지는 일이 없도록 유의하자.
+값, 형식, 길이 등의 형식적 Validation은 Controller에서,
+DB에서 검증해야 하는 의미적 Validation은 Provider 혹은 Service에서 처리하면 된다.
+
+## ✨Structure
+앞에 (*)이 붙어있는 파일(or 폴더)은 추가적인 과정 이후에 생성된다.
+```
+├── config #
+│ ├── baseResponseStatus.js # Response 시의 Status들을 모아 놓은 곳.
+│ ├── database.js # 데이터베이스 관련 설정
+│ ├── express.js # express Framework 설정 파일
+│ ├── jwtMiddleware.js # jwt 관련 미들웨어 파일
+│ ├── secret.js # 서버 key 값들
+│ └── winston.js # logger 라이브러리 설정
+├── * log # 생성된 로그 폴더
+├── * node_modules # 외부 라이브러리 폴더 (package.json 의 dependencies)
+├── src #
+│ ├── app # 앱에 대한 코드 작성
+│ │ ├── User # User 도메인 폴더
+│ │ │ ├── userRoute.js # routing 처리
+│ │ │ ├── userDao.js # User 관련 데이터베이스
+│ │ │ ├── userController.js # req, res 처리
+│ │ │ ├── userProvider.js # R에 해당하는 서버 로직 처리
+│ │ │ └── userService.js # CUD에 해당하는 서버 로직 처리
+├── .gitignore # git 에 포함되지 않아야 하는 폴더, 파일들을 작성 해놓는 곳
+├── index.js # 포트 설정 및 시작 파일
+├── * package-lock.json
+├── package.json # 프로그램 이름, 버전, 필요한 모듈 등 노드 프로그램의 정보를 기술
+└── README.md
+```
+
+* database.js나 secret.js 등 외부로 노출되면 안되는 파일들은 .gitignore에 추가하여 github에 올리지 않도록 관리해야 합니다.
+* node_modules 또한 github에 올리지 않고, package.json을 통해 관리하시면 됩니다.
+
+## ✨Description
+본 템플릿은 `Node.js`와 `Express` (`Node.js`의 웹 프레임워크)를 기반으로 구성되었다. `Node.js`와 `Express`의 자세한 내용과 원리는 각자 구글링을 통해 살펴보기 바란다.
+
+### [Node.js](https://nodejs.org/ko/)
+- `node index.js` 를 통해서 js 파일을 실행한다.
+- node는 js 파일을 실행할 때 `package.json` 이라는 파일을 통해서 어떤 환경으로 구동하는지, 어떤 라이브러리들을 썼는지(dependencies) 등의 기본적인 설정값 들을 참고한다.
+- `npm install` npm(node package manager)을 통해 package.json에 있는 dependencies 등을 참고하여 node_modules 폴더를 생성하고 라이브러리 파일을 다운로드 한다. 이 라이브러리들은 사용하고 싶은 파일에서 require 하여 사용할 수 있다.
+
+### [Express](https://expressjs.com/ko/)
+config > express.js 에서 express 프레임워크를 기반으로 한 app 모듈을 export 하도록 하여 어느 폴더에서든 사용할 수 있도록 구성했다.
+새로운 도메인을 만들 경우, 해당 파일에 다음과 같이 Route 폴더를 추가하여 express.js에서 만든 app 모듈을 사용할 수 있도록 구성하면 된다.
+```javascript
+require('../src/app/User/userRoute')(app);
+```
+`index.js`에서 express에서 만든 app이 3000번 포트를 Listen 하도록 구성했다. 본인이 사용하고 싶은 포트 번호는 이곳에서 지정해주면 된다.
+
+### [mysql2](https://www.npmjs.com/package/mysql2)
+Database는 config > database.js에 mysql2 라이브러리를 사용해 구성했다. 자세한 설명과 추가적인 기능들은 mysql2 라이브러리의 공식 README를 참고하자.
+cf. connection을 다 사용했다면 release를 통해 꼭 할당 해제를 해야 한다.
+
+### [winston](https://www.npmjs.com/package/winston)
+Log는 winston, winston-daily-rotate-file 라이브러리를 사용해 구성했다. 서버 접근 시에 새로 생기게 될 log 폴더에서 로그를 어떻게 남기는지 살펴보자. (커스텀해도 좋다.)
+
+## ✨Usage
+
+### API 만들기 예제
+로컬에서 npm install을 통해 node_modules 라이브러리 폴더를 생성한다.
+
+[DB 연결 없이 TEST]
+1. userRoute.js의 0. 테스트 API 부분을 주석 해제한다.
+2. userController.js의 테스트 API 부분을 주석 해제한다.
+3. node index.js를 통해 로컬 서버를 구동시키고 포스트맨을 통해 GET localhost:3000/app/test로 테스트가 잘 되는지 확인한다.
+
+[DB 연결 이후 TEST]
+1. config > database.js에서 본인의 DB 정보를 입력한다.
+2. DB에 TEST를 위한 간단한 테이블을 하나 만든다.
+3. userRoute.js, userController.js, userProvider.js, userDao.js를 구성하여 해당 테이블의 값들을 불러오는 로직을 만든다.
+4. node index.js를 통해 로컬 서버를 구동시키고 포스트맨을 통해 본인이 만든 API 테스트가 잘 되는지 확인한다.
+
+
+- 주의할 점
+1. DAO에 새로운 함수를 만들었다면, 아래 부분에서 export 해줘야 합니다. (userDao.js 참고)
+2. 만약 새로운 Domain을 추가했다면, Route파일의 경로를 express.js에 추가해줘야 합니다.
+
+
+### [PM2](https://pm2.keymetrics.io/)
+무중단 서비스를 위해 PM2를 사용한다. (JavaScript 런타임 Node.js의 프로세스 관리자) 자세한 사용법은 공식 사이트를 참고하자.
+
+### JavaScript
+기본적인 문법들은 스스로 학습하자. 학습할 수 있는 사이트들은 다음과 같이 다양하다.
+- [MDN Web Docs](https://developer.mozilla.org/ko/docs/Web/JavaScript)
+- [모던 JavaScript 튜토리얼](https://ko.javascript.info/)
+
+### Error
+서버 Error를 마주했다면, 원인을 파악할 수 있는 다양한 방법들을 통해 문제 원인을 찾자.
+- Nginx 로그 확인
+- pm2 log 확인
+- console.log 로 디버깅
+
+
+## ✨License
+- 본 자료에 대한 상업적 이용 및 무단 복제, 배포 및 변경을 원칙적으로 금지하며 이를 위반할 때에는 형사처벌을 받을 수 있습니다.
diff --git a/Backend/babel.config.json b/Backend/babel.config.json
new file mode 100644
index 00000000..1320b9a3
--- /dev/null
+++ b/Backend/babel.config.json
@@ -0,0 +1,3 @@
+{
+ "presets": ["@babel/preset-env"]
+}
diff --git a/Backend/config/baseResponseStatus.js b/Backend/config/baseResponseStatus.js
new file mode 100755
index 00000000..cae04369
--- /dev/null
+++ b/Backend/config/baseResponseStatus.js
@@ -0,0 +1,85 @@
+//Response로 보내줄 상태코드와 메세지 등을 이 파일에서 관리함
+
+module.exports = {
+
+ // Success
+ SUCCESS : { "isSuccess": true, "code": 1000, "message":"성공" },
+
+ // Common
+ TOKEN_EMPTY : { "isSuccess": false, "code": 2000, "message":"JWT 토큰을 입력해주세요." },
+ TOKEN_VERIFICATION_FAILURE : { "isSuccess": false, "code": 3000, "message":"JWT 토큰 검증 실패" },
+ TOKEN_VERIFICATION_SUCCESS : { "isSuccess": true, "code": 1001, "message":"JWT 토큰 검증 성공" }, // ?
+
+ //Request error
+ SIGNUP_EMPTY : { "isSuccess": false, "code": 2001, "message":"빠진 내용을 입력해주세요" },
+
+ SIGNUP_EMAIL_LENGTH : { "isSuccess": false, "code": 2002, "message":"이메일은 30자리 미만으로 입력해주세요." },
+ SIGNUP_EMAIL_ERROR_TYPE : { "isSuccess": false, "code": 2003, "message":"이메일을 형식을 정확하게 입력해주세요." },
+ SIGNUP_PASSWORD_EMPTY : { "isSuccess": false, "code": 2004, "message": "비밀번호를 입력 해주세요." },
+ SIGNUP_PASSWORD_LENGTH : { "isSuccess": false, "code": 2005, "message":"비밀번호는 6~20자리를 입력해주세요." },
+ SIGNUP_NICKNAME_EMPTY : { "isSuccess": false, "code": 2006, "message":"닉네임을 입력 해주세요." },
+ SIGNUP_NICKNAME_LENGTH : { "isSuccess": false,"code": 2007,"message":"닉네임은 최대 20자리를 입력해주세요." },
+
+ SIGNIN_EMAIL_EMPTY : { "isSuccess": false, "code": 2008, "message":"이메일을 입력해주세요" },
+ SIGNIN_EMAIL_LENGTH : { "isSuccess": false, "code": 2009, "message":"이메일은 30자리 미만으로 입력해주세요." },
+ SIGNIN_EMAIL_ERROR_TYPE : { "isSuccess": false, "code": 2010, "message":"이메일을 형식을 정확하게 입력해주세요." },
+ SIGNIN_PASSWORD_EMPTY : { "isSuccess": false, "code": 2011, "message": "비밀번호를 입력 해주세요." },
+
+ USER_USERID_EMPTY : { "isSuccess": false, "code": 2012, "message": "userId를 입력해주세요." },
+ USER_USERID_NOT_EXIST : { "isSuccess": false, "code": 2013, "message": "해당 회원이 존재하지 않습니다." },
+ USER_NICKNAME_EMPTY : { "isSuccess": false, "code": 2017, "message": "아이디를 입력해주세요" },
+
+ USER_USEREMAIL_EMPTY : { "isSuccess": false, "code": 2014, "message": "이메일을 입력해주세요." },
+ USER_USEREMAIL_NOT_EXIST : { "isSuccess": false, "code": 2015, "message": "해당 이메일을 가진 회원이 존재하지 않습니다." },
+ USER_ID_NOT_MATCH : { "isSuccess": false, "code": 2016, "message": "유저 아이디 값을 확인해주세요." },
+
+ USER_STATUS_EMPTY : { "isSuccess": false, "code": 2018, "message": "회원 상태값을 입력해주세.요" },
+
+ // ---
+ MEETING_ID_EMPTY : { "isSuccess": false, "code": 2100, "message": "회의 ID를 입력해주세요." },
+ MEETING_NAME_EMPTY : { "isSuccess": false, "code": 2101, "message": "회의 이름을 입력해주세요." },
+ MEETING_TOPIC_EMPTY : { "isSuccess": false, "code": 2102, "message": "회의 주제를 입력해주세요." },
+ MEETING_SEARCH_EMPTY : { "isSuccess": false, "code": 2103, "message": "검색어를 입력해 입력해주세요." },
+
+ // ---
+ SUBMEETING_ID_EMPTY : { "isSuccess": false, "code": 2200, "message": "서브회의 ID를 입력해주세요." },
+ SUBMEETING_TOPIC_EMPTY : { "isSuccess": false, "code": 2201, "message": "서브회의 주제를 입력해주세요." },
+
+ // ---
+ MATCH_ID_EMPTY : { "isSuccess": false, "code": 2300, "message": "매칭 ID를 입력해주세요." },
+
+ // ---
+ MEMO_ID_EMPTY : { "isSuccess": false, "code": 2400, "message": "매모 ID를 입력해주세요." },
+
+ // Response error
+ SIGNUP_REDUNDANT_EMAIL : { "isSuccess": false, "code": 3001, "message":"중복된 이메일입니다." },
+ SIGNUP_REDUNDANT_NICKNAME : { "isSuccess": false, "code": 3002, "message":"중복된 아이디입니다." },
+
+ SIGNIN_NICKNAME_WRONG : { "isSuccess": false, "code": 3003, "message": "아이디가 잘못 되었습니다." },
+ SIGNIN_PASSWORD_WRONG : { "isSuccess": false, "code": 3004, "message": "비밀번호가 잘못 되었습니다." },
+ SIGNIN_INACTIVE_ACCOUNT : { "isSuccess": false, "code": 3005, "message": "비활성화 된 계정입니다. 고객센터에 문의해주세요." },
+ SIGNIN_WITHDRAWAL_ACCOUNT : { "isSuccess": false, "code": 3006, "message": "탈퇴 된 계정입니다. 고객센터에 문의해주세요." },
+
+ MEETING_ID_NOT_EXISTS : { "isSuccess": false, "code": 3100, "message": "해당 ID의 회의가 존재하지 않습니다." },
+ MEETING_REDUNDANT_NAME : { "isSuccess": false, "code": 3101, "message": "중복된 회의 이름입니다." },
+ MEETING_SEARCH_NOT_EXISTS : { "isSuccess": false, "code": 3103, "message": "해당 검색어를 포함한 회의가 존재하지 않습니다." },
+ MEETING_SUBMEETING_VALIDATION_FAIL : { "isSuccess": false, "code": 3104, "message": "회의ID와 서브회의ID가 연결되지 않습니다." },
+
+ MATCHING_NO_RESULT : { "isSuccess": false, "code": 3200, "message": "해당 match_id의 매칭 정보가 없습니다." },
+ UMMATCH_ALREADY_EXISTS : { "isSuccess": false, "code": 3201, "message": "이미 해당 회원은 해당 회의와 매칭 정보가 있습니다." },
+ UMMATCH_NOT_EXISTS : { "isSuccess": false, "code": 3202, "message": "해당 회원과 회의간의 매칭 정보가 없습니다." },
+ UMMATCH_DELETION_FAIL : { "isSuccess": false, "code": 3203, "message": "회의를 내 회의 리스트에서 제거하는데 실패했습니다." },
+ MATCHING_ALREADY_EXISTS : { "isSuccess": false, "code": 3204, "message": "이미 해당 회원은 회의에 참석중입니다." },
+ MEETING_MATCH_VALIDATION_FAIL : { "isSuccess": false, "code": 3205, "message": "회의ID와 매칭ID가 연결되지 않습니다." },
+ MATCHING_CLOSE_NOT_READY : { "isSuccess": false, "code": 3206, "message": "매칭 상태가 올바르지 않습니다.(not active)" },
+
+ ENTER_MEETING_FAILED : { "isSuccess": false, "code": 3250, "message": "회의에 입장하는데 실패했습니다. (자세한 내용은 개발자에게 물어보세요)" },
+
+ MEMO_NO_OPEN_SUBMEETING : { "isSuccess": false, "code": 3300, "message": "서브회의가 없거나, 열려있는 상태가 아닙니다." },
+
+ //Connection, Transaction 등의 서버 오류
+ DB_ERROR : { "isSuccess": false, "code": 4000, "message": "데이터 베이스 에러"},
+ SERVER_ERROR : { "isSuccess": false, "code": 4001, "message": "서버 에러"},
+ TRANSACTION_ERROR : { "isSuccess": false, "code": 4002, "message": "트랜잭션 도중 에러"},
+
+}
diff --git a/Backend/config/express.js b/Backend/config/express.js
new file mode 100755
index 00000000..982a0f3b
--- /dev/null
+++ b/Backend/config/express.js
@@ -0,0 +1,28 @@
+const express = require('express');
+const compression = require('compression');
+const methodOverride = require('method-override');
+const cors = require('cors');
+module.exports = function () {
+ const app = express();
+
+ app.use(compression());
+
+ app.use(express.json());
+
+ app.use(express.urlencoded({extended: true}));
+
+ app.use(methodOverride());
+
+ app.use(cors());
+ // app.use(express.static(process.cwd() + '/public'));
+
+ /* App (Android, iOS) */
+ // TODO: 도메인을 추가할 경우 이곳에 Route를 추가하세요.
+ require('../src/app/User/userRoute')(app);
+ require('../src/app/Meeting/meetingRoute')(app);
+ require('../src/app/Memo/memoRoute')(app);
+ require('../src/app/Summary/summaryRoute')(app);
+ // require('../src/app/Keyword/keywordRoute')(app);
+
+ return app;
+};
\ No newline at end of file
diff --git a/Backend/config/jwtMiddleware.js b/Backend/config/jwtMiddleware.js
new file mode 100755
index 00000000..92b2d145
--- /dev/null
+++ b/Backend/config/jwtMiddleware.js
@@ -0,0 +1,38 @@
+const jwt = require('jsonwebtoken');
+const secret_config = require('./secret');
+const { response } = require("./response")
+const { errResponse } = require("./response")
+const baseResponse = require("./baseResponseStatus");
+
+
+const jwtMiddleware = (req, res, next) => {
+ // read the token from header or url
+ const token = req.headers['x-access-token'] || req.query.token;
+ // token does not exist
+ if(!token) {
+ return res.send(errResponse(baseResponse.TOKEN_EMPTY))
+ }
+
+ // create a promise that decodes the token
+ const p = new Promise(
+ (resolve, reject) => {
+ jwt.verify(token, secret_config.jwtsecret , (err, verifiedToken) => {
+ if(err) reject(err);
+ resolve(verifiedToken)
+ })
+ }
+ );
+
+ // if it has failed to verify, it will return an error message
+ const onError = (error) => {
+ return res.send(errResponse(baseResponse.TOKEN_VERIFICATION_FAILURE))
+ };
+ // process the promise
+ p.then((verifiedToken)=>{
+ //비밀 번호 바뀌었을 때 검증 부분 추가 할 곳
+ req.verifiedToken = verifiedToken;
+ next();
+ }).catch(onError)
+};
+
+module.exports = jwtMiddleware;
\ No newline at end of file
diff --git a/Backend/config/response.js b/Backend/config/response.js
new file mode 100755
index 00000000..8992a223
--- /dev/null
+++ b/Backend/config/response.js
@@ -0,0 +1,18 @@
+const response = ({isSuccess, code, message}, result) => {
+ return {
+ isSuccess: isSuccess,
+ code: code,
+ message: message,
+ result: result
+ }
+ };
+
+ const errResponse = ({isSuccess, code, message}) => {
+ return {
+ isSuccess: isSuccess,
+ code: code,
+ message: message
+ }
+ };
+
+ module.exports = { response, errResponse };
\ No newline at end of file
diff --git a/Backend/config/server.js b/Backend/config/server.js
new file mode 100644
index 00000000..0bfa9814
--- /dev/null
+++ b/Backend/config/server.js
@@ -0,0 +1,4 @@
+module.exports = {
+ "web_host" : "localhost",
+ "web_port" : 3000
+};
\ No newline at end of file
diff --git a/Backend/config/winston.js b/Backend/config/winston.js
new file mode 100755
index 00000000..b81fc9a3
--- /dev/null
+++ b/Backend/config/winston.js
@@ -0,0 +1,47 @@
+const { createLogger, format, transports } = require('winston');
+require('winston-daily-rotate-file');
+const fs = require('fs');
+
+const env = process.env.NODE_ENV || 'development';
+const logDir = 'log';
+
+// https://lovemewithoutall.github.io/it/winston-example/
+// Create the log directory if it does not exist
+if (!fs.existsSync(logDir)) {
+ fs.mkdirSync(logDir)
+}
+
+const dailyRotateFileTransport = new transports.DailyRotateFile({
+ level: 'debug',
+ filename: `${logDir}/%DATE%-smart-push.log`,
+ datePattern: 'YYYY-MM-DD',
+ zippedArchive: true,
+ maxSize: '20m',
+ maxFiles: '14d'
+});
+
+const logger = createLogger({
+ level: env === 'development' ? 'debug' : 'info',
+ format: format.combine(
+ format.timestamp({
+ format: 'YYYY-MM-DD HH:mm:ss'
+ }),
+ format.json()
+ ),
+ transports: [
+ new transports.Console({
+ level: 'info',
+ format: format.combine(
+ format.colorize(),
+ format.printf(
+ info => `${info.timestamp} ${info.level}: ${info.message}`
+ )
+ )
+ }),
+ dailyRotateFileTransport
+ ]
+});
+
+module.exports = {
+ logger: logger
+};
\ No newline at end of file
diff --git a/Backend/controllers/socket.js b/Backend/controllers/socket.js
new file mode 100644
index 00000000..a52c9846
--- /dev/null
+++ b/Backend/controllers/socket.js
@@ -0,0 +1,89 @@
+const path = require('path');
+
+/**
+ * Websocket handler
+ * @param server
+ */
+module.exports = (server) => {
+ // const io = require('socket.io')(server);
+ const {spawn} = require('child_process'); // python 파일을 읽어오기 위해
+ const io = require("socket.io")(server, {
+ cors: {
+ origin: "*",
+ credentials: true,
+ },
+ });
+
+ // --- (오픈 소스 설계 방식) ---
+ // let rooms = {};
+ // /**
+ // * SocketId로 방을 탐색 합니다.
+ // * @param value
+ // * @returns {*}
+ // */
+ // function findRoomBySocketId(value) {
+ // const arr = Object.keys(rooms);
+ // let result = null;
+
+ // for (let i = 0; i < arr.length; i++) {
+ // if (rooms[arr[i]][value]) {
+ // result = arr[i];
+ // break;
+ // }
+ // }
+
+ // return result;
+ // }
+ // -------------------------
+
+ /**
+ * 소켓 연결
+ */
+ io.on("connection", (socket) => {
+ socket.on("join-room", (roomName, userStream, done) => {
+ if (typeof done === "function") done(userStream);
+ socket.join(roomName);
+
+ socket.to(roomName).emit("user-connected", userStream);
+
+ socket.on("disconnect", () => {
+ socket.to(roomName).emit("user-disconnected", userStream);
+ });
+ });
+
+ // [문서 요약]
+ socket.on("stt_data", (text) => {
+ console.log(text);
+
+ // 요약 모델 디렉토리
+ const summary_dir = path.join(__dirname, '../../Text Summarization/KoreanReviewSummarizer/ks4r');
+ console.log(summary_dir);
+
+ // spawn 으로 새 프로세스 생성
+ const summarize_process = spawn("python", [summary_dir+"/__init__.py", text.trim()]);
+ // [AWS 에서 할 땐 아래껄로 해야함]
+ // const summarize_process = spawn("python3", [summary_dir+"/__init__.py", text.trim()]);
+
+ try{
+ // 반환 내용 출력
+ summarize_process.stdout.on('data', (result) => {
+ console.log(result.toString());
+ // 요약 결과 보내기
+ socket.emit("result", result.toString());
+ });
+
+ // 에러 시 출력
+ summarize_process.stderr.on('data', (result)=>{
+ console.log('error 발생 :', result.toString());
+ })
+
+ // 명령이 끝나면 close
+ summarize_process.on('exit', (code)=>{
+ console.log('exit code :', code);
+ })
+ } catch (err) {
+ console.log('error');
+ }
+ });
+ });
+};
diff --git a/Backend/index.js b/Backend/index.js
new file mode 100644
index 00000000..b91cfa40
--- /dev/null
+++ b/Backend/index.js
@@ -0,0 +1,17 @@
+const express = require("./config/express");
+const app = express();
+const server = require("http").createServer(app);
+
+const server_config = require("./config/server");
+const PORT = server_config.web_port || process.env.PORT;
+
+app.get("/", (req, res) => {
+ res.send("Server is Running");
+});
+
+// Socket.io
+require('./controllers/socket.js')(server);
+
+server.listen(PORT, () =>
+ console.log(`✅ Listening on http://${server_config.web_host}:${PORT}`)
+);
diff --git a/Backend/nodemon.json b/Backend/nodemon.json
new file mode 100644
index 00000000..9f48f3c3
--- /dev/null
+++ b/Backend/nodemon.json
@@ -0,0 +1,4 @@
+{
+ "ignore": ["../Frontend/*"],
+ "exec": "babel-node ./index.js"
+}
diff --git a/Backend/package.json b/Backend/package.json
new file mode 100755
index 00000000..2d2c01e4
--- /dev/null
+++ b/Backend/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "api-server-node",
+ "version": "1.0.0",
+ "description": "Node.js API Server",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "dev": "NODE_ENV=development node index.js",
+ "prod": "NODE_ENV=production node index.js",
+ "start": "nodemon"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "@babel/cli": "^7.19.3",
+ "@babel/core": "^7.19.3",
+ "@babel/node": "^7.19.1",
+ "@babel/preset-env": "^7.19.4",
+ "@types/express": "^4.17.13",
+ "compression": "^1.7.4",
+ "cors": "^2.8.5",
+ "crypto": "^1.0.1",
+ "express": "^4.17.1",
+ "jsonwebtoken": "^8.5.1",
+ "method-override": "^3.0.0",
+ "mysql2": "^2.0.0",
+ "nodemon": "^2.0.7",
+ "regex-email": "^1.0.2",
+ "socket.io": "^4.5.3",
+ "uuid": "^9.0.0",
+ "winston": "^3.2.1",
+ "winston-daily-rotate-file": "^4.2.1"
+ }
+}
diff --git a/Backend/src/app/Meeting/meetingController.js b/Backend/src/app/Meeting/meetingController.js
new file mode 100755
index 00000000..fe60c372
--- /dev/null
+++ b/Backend/src/app/Meeting/meetingController.js
@@ -0,0 +1,197 @@
+const jwtMiddleware = require("../../../config/jwtMiddleware");
+const meetingProvider = require("../../app/Meeting/meetingProvider");
+const meetingService = require("../../app/Meeting/meetingService");
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response, errResponse} = require("../../../config/response");
+
+/**
+ * API No. 1
+ * API Name : 전체 회의 리스트 API
+ * [GET] /meetings/allList
+ * header : x-access-token
+ */
+exports.getAllMeetings = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+ // 로그인 아이디 확인
+ // console.log(userIdxFromJWT);
+ // return res.send(response(baseResponse.SUCCESS, {'verified_user_id' : userIdxFromJWT}));
+
+ const meetingListResponse = await meetingProvider.retrieveAllMeeting(userIdxFromJWT);
+
+ return res.send(meetingListResponse);
+};
+
+/**
+ * API No. 2
+ * API Name : 본인이 속한 회의 검색어로 검색 API
+ * [GET] /meetings/myMeeting/?search=
+ * header : x-access-token
+ * query string : search
+ */
+exports.getMeetingById = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+ const search = req.query.search;
+
+ // errResponse 전달
+ if (!search) return res.send(errResponse(baseResponse.MEETING_SEARCH_EMPTY));
+
+ const meetingSearchResponse = await meetingProvider.retrieveMeetingSearch(userIdxFromJWT, search);
+ return res.send(meetingSearchResponse);
+};
+
+/**
+ * API No. 3
+ * API Name : meeting_id로 회의 검색 API
+ * [GET] /meetings/search/:meetingId'
+ * header : x-access-token
+ * path variable : meetingId
+ */
+exports.getSortedMeetingById = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+ const meeting_id = req.params.meetingId;
+
+ // errResponse 전달
+ if (!meeting_id) return res.send(errResponse(baseResponse.MEETING_ID_EMPTY));
+
+ // 내 회의면 isMyMeeting : 1 else 0
+ const meetingSearchResponse = await meetingProvider.retrieveSortedMeetingSearch(userIdxFromJWT, meeting_id);
+ return res.send(meetingSearchResponse);
+};
+
+/**
+ * API No. 4
+ * API Name : 회의를 내 회의 리스트에 추가하기 API
+ * [POST] '/meetings/myMeeting/:meetingId'
+ * header : x-access-token
+ * path variable : meetingId
+ */
+exports.postNewMeetingMatch = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+ const meeting_id = req.params.meetingId;
+
+ if (!meeting_id) return res.send(errResponse(baseResponse.MEETING_ID_EMPTY));
+
+ const matchUserMeetingInfo = await meetingService.matchUserMeeting(userIdxFromJWT, meeting_id);
+ return res.send(matchUserMeetingInfo);
+};
+
+/**
+ * API No. 5
+ * API Name : 새 회의 개설 API
+ * [POST] '/meetings/newMeeting'
+ * header : x-access-token
+ * body : meeting_name
+ */
+exports.postNewMeeting = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const meeting_name = req.body.meeting_name;
+
+ if (!meeting_name) return res.send(errResponse(baseResponse.MEETING_NAME_EMPTY));
+
+ const addMeetingInfo = await meetingService.addNewMeeting(userIdxFromJWT, meeting_name);
+ return res.send(addMeetingInfo);
+};
+
+/**
+ * API No. 6
+ * API Name : 회의를 내 회의 리스트에서 제거하기 API
+ * [DELETE] '/meetings/myMeeting/:meetingId'
+ * header : x-access-token
+ * path variable : meetingId
+ */
+exports.deleteMyMeeting = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const meeting_id = req.params.meetingId;
+
+ if (!meeting_id) return res.send(errResponse(baseResponse.MEETING_ID_EMPTY));
+
+ const deleteMyMeetingInfo = await meetingService.unMatchUserMeeting(userIdxFromJWT, meeting_id);
+ return res.send(deleteMyMeetingInfo);
+};
+
+/**
+ * API No. 7
+ * API Name : (서브)회의에 입장하기 API
+ * [POST] '/meetings/openMeeting/:meetingId'
+ * header : x-access-token
+ * path variable : meetingId
+ */
+exports.postEnterMeeting = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const meeting_id = req.params.meetingId;
+
+ if (!meeting_id) return res.send(errResponse(baseResponse.MEETING_ID_EMPTY));
+
+ const enterMeetingInfo = await meetingService.enterMeeting(userIdxFromJWT, meeting_id);
+ return res.send(enterMeetingInfo);
+};
+
+/**
+ * API No. 8
+ * API Name : (서브)회의에 퇴장하기 API
+ * [POST] '/meetings/closeMeeting/:meetingId'
+ * header : x-access-token
+ * path variable : meetingId, subMeetingId
+ * body : matchId
+ */
+exports.patchExitMeeting = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const meeting_id = req.params.meetingId;
+ const sub_meeting_id = req.params.subMeetingId;
+ const match_id = req.body.matchId;
+
+ if (!meeting_id) return res.send(errResponse(baseResponse.MEETING_ID_EMPTY));
+ if (!sub_meeting_id) return res.send(errResponse(baseResponse.SUBMEETING_ID_EMPTY));
+ if (!match_id) return res.send(errResponse(baseResponse.MATCH_ID_EMPTY));
+
+ const exitMeetingInfo = await meetingService.exitMeeting(userIdxFromJWT, meeting_id, sub_meeting_id, match_id);
+ return res.send(exitMeetingInfo);
+};
+
+/**
+ * API No. 9
+ * API Name : (서브)회의 주제 변경(저장)하기 API
+ * [POST] '/meetings/openMeeting/:meetingId/:subMeetingId'
+ * header : x-access-token
+ * path variable : meetingId, subMeetingId
+ * body : topic
+ */
+exports.patchSubMeetingTopic = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const meeting_id = req.params.meetingId;
+ const sub_meeting_id = req.params.subMeetingId;
+ let topic = req.body.topic;
+
+ if (!meeting_id) return res.send(errResponse(baseResponse.MEETING_ID_EMPTY));
+ if (!sub_meeting_id) return res.send(errResponse(baseResponse.SUBMEETING_ID_EMPTY));
+ // if (!topic) return res.send(errResponse(baseResponse.SUBMEETING_TOPIC_EMPTY));
+ if (!topic || topic == "") topic = '새로운 주제';
+ // console.log(topic);
+
+ const updateSubMeetingTopicInfo = await meetingService.updateSubMeetingTopic(userIdxFromJWT, meeting_id, sub_meeting_id, topic);
+ return res.send(updateSubMeetingTopicInfo);
+};
+
+/**
+ * API No. 10
+ * API Name : 회의 히스토리 리스트 API
+ * [GET] /meetings/meetingHistory
+ * header : x-access-token
+ * query string : meetingId
+ */
+exports.getSubMeetingHistoryById = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const meeting_id = req.query.meetingId;
+
+ if (!meeting_id) return res.send(errResponse(baseResponse.MEETING_ID_EMPTY));
+
+ const subMeetingHistoryResponse = await meetingProvider.retrieveAllSubMeetingHistory(userIdxFromJWT, meeting_id);
+ return res.send(subMeetingHistoryResponse);
+};
+
diff --git a/Backend/src/app/Meeting/meetingDao.js b/Backend/src/app/Meeting/meetingDao.js
new file mode 100755
index 00000000..b8ac4c69
--- /dev/null
+++ b/Backend/src/app/Meeting/meetingDao.js
@@ -0,0 +1,400 @@
+// user_id로 전체 회의 리스트 조회
+async function selectAllMeetingByUserId(connection, user_id) {
+ const selectAllMeetingByIdQuery = `
+ SELECT M.meeting_id, M.meeting_name, M.createdAt
+ FROM UserMeetingMatch UMM INNER JOIN Meeting M on UMM.meeting_id = M.meeting_id
+ WHERE UMM.user_id = ?;
+ `;
+ const [meetingRows] = await connection.query(selectAllMeetingByIdQuery, user_id);
+ return meetingRows;
+}
+
+// user_id의 사용자가 포함되어 있는 회의를 meeting_id로 검색
+async function selectMyMeetingById(connection, selectMeetingParams) {
+ const searchMeetingByIdQuery = `
+ SELECT M.meeting_id, M.meeting_name, M.createdAt
+ FROM UserMeetingMatch UMM INNER JOIN Meeting M on UMM.meeting_id = M.meeting_id
+ WHERE UMM.user_id = ? AND M.meeting_id = ?;
+ `;
+ const meetingRow = await connection.query(searchMeetingByIdQuery, selectMeetingParams);
+ return meetingRow[0];
+}
+
+// (maybe later -> selectSortedMeetingById) 회의 id로 회의 존재 여부 체크
+async function findMeetingId(connection, meeting_id) {
+ const selectMeetingIdQuery = `
+ SELECT *
+ FROM Meeting
+ WHERE meeting_id = ?;
+ `;
+ const meetingRow = await connection.query(selectMeetingIdQuery, meeting_id);
+ return meetingRow[0];
+}
+
+// meeting_id로 회의 검색 - 내 회의면 'isMyMeeting' = 1 else 0
+async function selectSortedMeetingById(connection, selectMeetingParams) {
+ const searchSortedMeetingByIdQuery = `
+ SELECT M.meeting_id, M.meeting_name, M.createdAt,
+ (SELECT EXISTS(SELECT * FROM UserMeetingMatch UMM WHERE UMM.user_id = ? and UMM.meeting_id = ?)) AS isMyMeeting
+ FROM Meeting M
+ WHERE M.meeting_id = ?;
+ `;
+ const meetingRow = await connection.query(searchSortedMeetingByIdQuery, selectMeetingParams);
+ return meetingRow[0];
+}
+
+// user_id의 사용자가 포함되어 있는 회의를 검색어로 검색
+async function selectMeetingSearch(connection, selectMeetingParams) {
+ const searchMeetingSearchQuery = `
+ SELECT M.meeting_id, M.meeting_name, M.createdAt
+ FROM UserMeetingMatch UMM INNER JOIN Meeting M on UMM.meeting_id = M.meeting_id
+ WHERE UMM.user_id = ? AND M.meeting_name like ?;
+ `;
+ const meetingRow = await connection.query(searchMeetingSearchQuery, selectMeetingParams);
+ return meetingRow[0];
+}
+
+// meeting_id 로 회의가 존재하는지 체크
+async function selectMeetingById(connection, meeting_id) {
+ const searchMeetingByIdQuery = `
+ SELECT meeting_id, meeting_name, createdAt
+ FROM Meeting
+ WHERE meeting_id = ?;
+ `;
+ const meetingRow = await connection.query(searchMeetingByIdQuery, meeting_id);
+ return meetingRow[0];
+}
+
+// 이미 매칭된 유저-회의 매칭 정보가 있는지 체크
+async function checkUMMatch(connection, selectUMMParams) {
+ const selectUMMQuery = `
+ SELECT *
+ FROM UserMeetingMatch
+ WHERE user_id = ? AND meeting_id = ?;
+ `;
+ const [matchRows] = await connection.query(selectUMMQuery, selectUMMParams);
+ return matchRows;
+}
+
+// 회의를 내 회의 리스트에 추가하기
+async function insertUserMeetingMatchInfo(connection, insertUMMParams) {
+ const insertUserMeetingMatchInfoQuery = `
+ INSERT INTO UserMeetingMatch (user_id, meeting_id)
+ VALUE (?, ?);
+ `;
+ const insertUserMeetingMatchInfoRow = await connection.query(insertUserMeetingMatchInfoQuery, insertUMMParams);
+
+ return insertUserMeetingMatchInfoRow;
+}
+
+// 새 회의 개설
+async function insertMeetingInfo(connection, meeting_name) {
+ const insertMeetingInfoQuery = `
+ INSERT INTO Meeting (meeting_name)
+ VALUE (?);
+ `;
+ const insertMeetingInfoRow = await connection.query(insertMeetingInfoQuery, meeting_name);
+
+ return insertMeetingInfoRow;
+}
+
+// 회의를 내 회의 리스트에서 제거하기
+async function deleteUserMeetingMatchInfo(connection, deleteUMMParams) {
+ const deleteUserMeetingMatchInfoQuery = `
+ DELETE FROM UserMeetingMatch
+ WHERE user_id = ? AND meeting_id = ?;
+ `;
+ const deleteUserMeetingMatchInfoRow = await connection.query(deleteUserMeetingMatchInfoQuery, deleteUMMParams);
+
+ return deleteUserMeetingMatchInfoRow;
+}
+
+// 회의에 남아있는 사람이 없는지 확인 - TODO 추후 남아있는 사람이 없으면 해당 Meeting을 삭제하기 위해
+async function checkUMMById(connection, meeting_id) {
+ const selectUMMByIdQuery = `
+ SELECT *
+ FROM UserMeetingMatch
+ WHERE meeting_id = ?;
+ `;
+ const selectUMMByIdRow = await connection.query(selectUMMByIdQuery, meeting_id);
+
+ return selectUMMByIdRow;
+}
+
+
+// 열려있는 서브회의가 있는지 확인하기 - 있으면 sub_meeting 반환, 없으면 null
+async function selectOpenSubMeetingById(connection, meeting_id) {
+ const selectOpenSubMeetingByIdQuery = `
+ SELECT max(SM.sub_meeting_id) AS latest_sub_meeting_id
+ FROM Meeting MT INNER JOIN SubMeeting SM on MT.meeting_id = SM.meeting_id
+ WHERE MT.meeting_id = ? and SM.status = 'open';
+ `;
+ const meetingRow = await connection.query(selectOpenSubMeetingByIdQuery, meeting_id);
+ return meetingRow[0];
+}
+
+// 열려있는 서브회의에 참여한 적이 있는지/없는지 확인하기 - 있으면 match_id 반환, 없으면 null
+async function checkOnceEntered(connection, selectReenterSubMeetingParams) {
+ const selectReenterSubMeetingQuery = `
+ SELECT MC.match_id AS previous_match_id, MC.status
+ FROM Matching MC
+ WHERE MC.user_id = ? and MC.sub_meeting_id = ?;
+ `;
+ const subMeetingRow = await connection.query(selectReenterSubMeetingQuery, selectReenterSubMeetingParams);
+ return subMeetingRow[0];
+}
+
+// 서브회의 입장하기1 - 서브회의 추가하기 (방을 새로 입장하는 경우)
+async function insertSubMeetingInfo(connection, meeting_id) {
+ const insertSubMeetingInfoQuery = `
+ INSERT INTO SubMeeting (meeting_id)
+ VALUE (?);
+ `;
+ const insertSubMeetingInfoRow = await connection.query(insertSubMeetingInfoQuery, meeting_id);
+
+ return insertSubMeetingInfoRow;
+}
+
+// 서브회의 입장하기2 - 서브회의와 회원 매칭하기 (서브회의 개설한 경우, 열려있는 서브회의에 새로 참여하는 경우)
+async function makeMatching(connection, insertMatchingParams) {
+ const insertMatchingInfoQuery = `
+ INSERT INTO Matching (user_id, sub_meeting_id)
+ VALUE (?, ?);
+ `;
+ const insertMatchingInfoRow = await connection.query(insertMatchingInfoQuery, insertMatchingParams);
+
+ return insertMatchingInfoRow;
+}
+
+// 서브회의 입장하기3 - 매칭 상태 활성화하기 (열려있는 회의에 참여한 적이 있다가 다시 참여하는 경우)
+async function updateMatchingToActiveById(connection, match_id) {
+ const updateMatchingToActiveByIdQuery = `
+ UPDATE Matching
+ SET status='active'
+ WHERE match_id = ?;
+ `;
+ const updateMatchingToActiveByIdRow = await connection.query(updateMatchingToActiveByIdQuery, match_id);
+
+ return updateMatchingToActiveByIdRow;
+}
+
+// meeting_id 와 match_id 가 올바르게 매칭되어있는지 확인 (맞으면 1, 아니면 0)
+async function checkMMMatch(connection, selectMMMatchParams) {
+ const selectMMMatchQuery = `
+ SELECT IF(
+ EXISTS(
+ SELECT *
+ FROM Matching MC INNER JOIN SubMeeting SM on MC.sub_meeting_id = SM.sub_meeting_id
+ WHERE SM.meeting_id = ? AND MC.match_id = ?
+ ), 1, 0) AS validation_result;
+ `;
+ const matchResult = await connection.query(selectMMMatchQuery, selectMMMatchParams);
+ return matchResult[0];
+}
+
+// 매칭 상태 확인 (is active?)
+async function checkActiveMatchById(connection, matchId) {
+ const selectActiveMatchQuery = `
+ SELECT IF(
+ EXISTS(
+ SELECT *
+ FROM Matching
+ WHERE match_id = ? AND status = 'active'
+ ), 1, 0) AS match_result;
+ `;
+ const matchResult = await connection.query(selectActiveMatchQuery, matchId);
+ return matchResult[0];
+}
+
+// 서브회의 퇴장하기
+async function updateMatchingToInactiveById(connection, match_id) {
+ const updateMatchingToInactiveByIdQuery = `
+ UPDATE Matching
+ SET status='inactive'
+ WHERE match_id = ?;
+ `;
+ const updateMatchingToInactiveByIdRow = await connection.query(updateMatchingToInactiveByIdQuery, match_id);
+
+ return updateMatchingToInactiveByIdRow;
+}
+
+// 서브회의에 활성화 상태에 있는 매칭 있는지 확인
+async function checkAnyActiveMatchById(connection, sub_meeting_id) {
+ const checkAnyActiveMatchByIdQuery = `
+ SELECT IF(
+ EXISTS(
+ SELECT *
+ FROM Matching
+ WHERE sub_meeting_id = ? AND status='active'
+ ), 1, 0) AS left_match_result;
+ `;
+ const subMeetingResult = await connection.query(checkAnyActiveMatchByIdQuery, sub_meeting_id);
+
+ return subMeetingResult[0];
+}
+
+// 서브회의 종료(닫기)
+async function updateSubMeetingStatus(connection, sub_meeting_id) {
+ const updateSubMeetingStatusQuery = `
+ UPDATE SubMeeting
+ SET status='terminated'
+ WHERE sub_meeting_id = ?;
+ `;
+ const updateSubMeetingStatusResult = await connection.query(updateSubMeetingStatusQuery, sub_meeting_id);
+
+ return updateSubMeetingStatusResult[0];
+}
+
+// 서브회의의 모든 매칭 정보 종료(상태 변경)
+async function updateAllMatchingStatus(connection, sub_meeting_id) {
+ const updateAllMatchingStatusQuery = `
+ UPDATE Matching
+ SET status='terminated'
+ WHERE sub_meeting_id = ?;
+ `;
+ const updateAllMatchingStatusResult = await connection.query(updateAllMatchingStatusQuery, sub_meeting_id);
+
+ return updateAllMatchingStatusResult[0];
+}
+
+// sub_meeting_id로 meeting_id 알아내기
+async function selectMeetingBySubId(connection, sub_meeting_id) {
+ const selectMeetingBySubIdQuery = `
+ SELECT meeting_id
+ FROM SubMeeting
+ WHERE sub_meeting_id = ?;
+ `;
+ const meetingRow = await connection.query(selectMeetingBySubIdQuery, sub_meeting_id);
+ return meetingRow[0];
+}
+
+// sub_meeting_id로 meeting_id 알아내기
+async function selectTopicBySubId(connection, sub_meeting_id) {
+ const selectTopicBySubIdQuery = `
+ SELECT topic
+ FROM SubMeeting
+ WHERE sub_meeting_id = ?;
+ `;
+ const topicRow = await connection.query(selectTopicBySubIdQuery, sub_meeting_id);
+ return topicRow[0];
+}
+
+// 서브회의 주제 갱신하기
+async function updateSubMeetingTopic(connection, patchTopicParams) {
+ const updateSubMeetingTopicQuery = `
+ UPDATE SubMeeting
+ SET topic=?
+ WHERE sub_meeting_id = ?;
+ `;
+ const updateSubMeetingTopicResult = await connection.query(updateSubMeetingTopicQuery, patchTopicParams);
+
+ return updateSubMeetingTopicResult[0];
+}
+
+// 회의 id로 서브 회의 히스토리 조회
+async function selectAllSubMeetingHistory(connection, meeting_id) {
+ const selectAllSubMeetingHistoryQuery = `
+ SELECT SM.sub_meeting_id, SM.createdAt, SM.topic
+ FROM SubMeeting SM INNER JOIN Meeting M on SM.meeting_id = M.meeting_id
+ WHERE M.meeting_id = ? AND SM.status = 'terminated';
+ `;
+ const [historyRows] = await connection.query(selectAllSubMeetingHistoryQuery, meeting_id);
+ return historyRows;
+}
+
+// 서브회의 id로 참가자 조회
+async function selectAllParticipantBySubMeetingId(connection, sub_meeting_id) {
+ const selectAllParticipantBySubMeetingIdQuery = `
+ SELECT U.user_name
+ FROM User U INNER JOIN Matching MC on U.user_id = MC.user_id
+ WHERE MC.sub_meeting_id = ? AND MC.status = 'terminated'
+ GROUP BY U.user_id;
+ `;
+ const [participantRows] = await connection.query(selectAllParticipantBySubMeetingIdQuery, sub_meeting_id);
+ return participantRows;
+}
+
+// 서브회의 id로 키워드 조회
+async function selectAllKeywordBySubMeetingId(connection, sub_meeting_id) {
+ const selectAllKeywordBySubMeetingIdQuery = `
+ SELECT DISTINCT K.keyword_content
+ FROM Keyword K INNER JOIN Memo MM on K.memo_id = MM.memo_id INNER JOIN Matching MC on MM.sub_meeting_id = MC.sub_meeting_id
+ WHERE MM.sub_meeting_id = ?;
+ `;
+ const [keywordRows] = await connection.query(selectAllKeywordBySubMeetingIdQuery, sub_meeting_id);
+ return keywordRows;
+}
+
+// (deprecated)회의 id로 해당 서브회의 id 검색
+async function selectSubMeetingById(connection, meeting_id) {
+ const searchSubMeetingByIdQuery = `
+ SELECT max(SM.sub_meeting_id) AS latest_sub_meeting_id
+ FROM Meeting MT INNER JOIN SubMeeting SM on MT.meeting_id = SM.meeting_id
+ WHERE MT.meeting_id = ?;
+ `;
+ const subMeetingRow = await connection.query(searchSubMeetingByIdQuery, meeting_id);
+ return subMeetingRow[0];
+}
+
+// (unused)회원과 회의 사이의 매칭 id 체크
+async function findAllMatchingId(connection, selectMatchingParams) {
+ const selectMatchingIdQuery = `
+ SELECT MC.match_id
+ FROM SubMeeting SM INNER JOIN Meeting MT on SM.meeting_id = MT.meeting_id INNER JOIN Matching MC on SM.sub_meeting_id = MC.sub_meeting_id
+ WHERE MC.user_id = ? AND MT.meeting_id = ?;
+ `;
+ const [matchingRows] = await connection.query(selectMatchingIdQuery, selectMatchingParams);
+ return matchingRows;
+}
+
+// (deprecated)회원 id와 회의 id 를 포함한 매칭 id 삭제
+async function deleteAllMatchingIds(connection, deleteMatchingParams) {
+ const deleteAllMatchingIdQuery = `
+ DELETE FROM Matching
+ WHERE match_id IN (
+ SELECT match_id
+ FROM (
+ SELECT MC.match_id
+ FROM SubMeeting SM INNER JOIN Meeting MT on SM.meeting_id = MT.meeting_id INNER JOIN Matching MC on SM.sub_meeting_id = MC.sub_meeting_id
+ WHERE MC.user_id = ? AND MT.meeting_id = ?
+ ) AS TMP
+ );
+ `;
+ const deleteMatchingInfoRow = await connection.query(deleteAllMatchingIdQuery, deleteMatchingParams);
+ return deleteMatchingInfoRow;
+}
+
+module.exports = {
+ selectAllMeetingByUserId,
+ selectMyMeetingById,
+ findMeetingId,
+ selectSortedMeetingById,
+ selectMeetingSearch,
+ selectMeetingById,
+ checkUMMatch,
+ insertUserMeetingMatchInfo,
+ insertMeetingInfo,
+ deleteUserMeetingMatchInfo,
+ checkUMMById,
+ selectOpenSubMeetingById,
+ checkOnceEntered,
+ insertSubMeetingInfo,
+ makeMatching,
+ updateMatchingToActiveById,
+ checkMMMatch,
+ checkActiveMatchById,
+ updateMatchingToInactiveById,
+ checkAnyActiveMatchById,
+ updateSubMeetingStatus,
+ updateAllMatchingStatus,
+ selectMeetingBySubId,
+ selectTopicBySubId,
+ updateSubMeetingTopic,
+ selectAllSubMeetingHistory,
+ selectAllParticipantBySubMeetingId,
+ selectAllKeywordBySubMeetingId,
+
+ selectSubMeetingById,
+ findAllMatchingId,
+ deleteAllMatchingIds,
+};
diff --git a/Backend/src/app/Meeting/meetingProvider.js b/Backend/src/app/Meeting/meetingProvider.js
new file mode 100755
index 00000000..9f32e657
--- /dev/null
+++ b/Backend/src/app/Meeting/meetingProvider.js
@@ -0,0 +1,174 @@
+const { pool } = require("../../../config/database");
+const { logger } = require("../../../config/winston");
+
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response} = require("../../../config/response");
+const {errResponse} = require("../../../config/response");
+
+const meetingDao = require("./meetingDao");
+
+// Provider: Read 비즈니스 로직 처리
+
+exports.retrieveAllMeeting = async function (userIdx) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const allMeetingListResult = await meetingDao.selectAllMeetingByUserId(connection, userIdx);
+ // connection 해제
+ connection.release();
+
+ return response(baseResponse.SUCCESS, allMeetingListResult);
+};
+
+exports.retrieveMeeting = async function (userIdx, meetingId) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const meetingResult = await meetingDao.selectMyMeetingById(connection, [userIdx, meetingId]);
+
+ connection.release();
+
+ if (meetingResult.length > 0)
+ return response(baseResponse.SUCCESS, meetingResult);
+ else
+ return errResponse(baseResponse.MEETING_ID_NOT_EXISTS);
+
+ // return meetingResult[0]; // 한 명의 유저 정보만을 불러오므로 배열 타입을 리턴하는 게 아닌 0번 인덱스를 파싱해서 오브젝트 타입 리턴
+};
+
+exports.retrieveMeetingSearch = async function (userIdx, search) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ search = '%' + search + '%' // 해당 검색어를 포함하는 모든 결과를 찾기 위해
+ const meetingResult = await meetingDao.selectMeetingSearch(connection, [userIdx, search]);
+
+ connection.release();
+
+ if (meetingResult.length > 0)
+ return response(baseResponse.SUCCESS, meetingResult);
+ else
+ return errResponse(baseResponse.MEETING_SEARCH_NOT_EXISTS);
+};
+
+exports.retrieveSortedMeetingSearch = async function (userIdx, meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const meetingResult = await meetingDao.selectSortedMeetingById(connection, [userIdx, meeting_id, meeting_id]);
+
+ connection.release();
+
+ if (meetingResult.length > 0)
+ return response(baseResponse.SUCCESS, meetingResult);
+ else
+ return errResponse(baseResponse.MEETING_ID_NOT_EXISTS);
+};
+
+exports.checkMeetingById = async function (meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const idCheckResult = await meetingDao.selectMeetingById(connection, meeting_id);
+ connection.release();
+
+ return idCheckResult;
+};
+
+exports.checkUserMeetingMatch = async function (userIdx, meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const matchCheckResult = await meetingDao.checkUMMatch(connection, [userIdx, meeting_id]);
+ connection.release();
+
+ return matchCheckResult;
+};
+
+exports.checkOpenSubMeetingById = async function (meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const subMeetingOpenCheckResult = await meetingDao.selectOpenSubMeetingById(connection, meeting_id);
+ connection.release();
+
+ return subMeetingOpenCheckResult[0];
+};
+
+exports.checkPreviousMatchingById = async function (userIdx, sub_meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const previousMatchingCheckResult = await meetingDao.checkOnceEntered(connection, [userIdx, sub_meeting_id]);
+ connection.release();
+
+ return previousMatchingCheckResult;
+};
+
+exports.checkMeetingMatchingValidation = async function (meeting_id, match_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const matchValidationResult = await meetingDao.checkMMMatch(connection, [meeting_id, match_id]);
+ connection.release();
+
+ return matchValidationResult[0];
+};
+
+exports.checkActiveMatchingById = async function (match_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ const activeMatchCheckResult = await meetingDao.checkActiveMatchById(connection, match_id);
+ connection.release();
+
+ return activeMatchCheckResult[0];
+};
+
+exports.checkLeftMatchById = async function (sub_meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ const leftMatchResult = await meetingDao.checkAnyActiveMatchById(connection, sub_meeting_id);
+ connection.release();
+
+ return leftMatchResult[0];
+};
+
+exports.checkMeetingBySubId = async function (sub_meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const meetingIdResult = await meetingDao.selectMeetingBySubId(connection, sub_meeting_id);
+ connection.release();
+
+ return meetingIdResult[0];
+};
+
+exports.checkSubMeetingTopicById = async function (sub_meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const subMeetingTopicResult = await meetingDao.selectTopicBySubId(connection, sub_meeting_id);
+ connection.release();
+
+ return subMeetingTopicResult[0];
+};
+
+exports.retrieveAllSubMeetingHistory = async function (userIdx, meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ // 서브 회의 리스트 가져오기
+ const allSubMeetingHistoryResult = await meetingDao.selectAllSubMeetingHistory(connection, meeting_id);
+ // console.log(allSubMeetingHistoryResult);
+
+ let sub_meeting_id;
+ for (const result of allSubMeetingHistoryResult) {
+ sub_meeting_id = result.sub_meeting_id;
+ // console.log(sub_meeting_id);
+
+ // 각 서브회의 id 들로 참가자들 가져오기
+ let participants = []
+ const getAllParticipantResult = await meetingDao.selectAllParticipantBySubMeetingId(connection, sub_meeting_id);
+ // console.log(`sub_id : ${sub_meeting_id}, participants : ${getAllParticipantResult}`);
+ // console.log(getAllParticipantResult);
+ getAllParticipantResult.forEach((participant) => {
+ participants.push(participant.user_name);
+ })
+ // console.log(participants);
+
+ // 각 서브회의 id 들로 키워드들 가져오기
+ let keywords = []
+ const getAllKeywordResult = await meetingDao.selectAllKeywordBySubMeetingId(connection, sub_meeting_id);
+ // console.log(`sub_id : ${sub_meeting_id}, keywords : ${getAllKeywordResult}`);
+ // console.log(getAllKeywordResult);
+ getAllKeywordResult.forEach((keyword) => {
+ keywords.push(keyword.keyword_content);
+ })
+ // console.log(keywords);
+
+ result['participants'] = participants;
+ result['keywords'] = keywords;
+ }
+ // console.log(allSubMeetingHistoryResult);
+
+ connection.release();
+
+ return response(baseResponse.SUCCESS, allSubMeetingHistoryResult);
+};
diff --git a/Backend/src/app/Meeting/meetingRoute.js b/Backend/src/app/Meeting/meetingRoute.js
new file mode 100755
index 00000000..847f4f37
--- /dev/null
+++ b/Backend/src/app/Meeting/meetingRoute.js
@@ -0,0 +1,37 @@
+const jwtMiddleware = require("../../../config/jwtMiddleware");
+const meeting = require("./meetingController");
+module.exports = function(app){
+ const meeting = require('./meetingController');
+ const jwtMiddleware = require('../../../config/jwtMiddleware');
+
+ // 1. 전체 회의 리스트 API
+ app.get('/meetings/allList', jwtMiddleware, meeting.getAllMeetings);
+
+ // 2. 본인이 속한 회의 검색어로 찾기 API
+ app.get('/meetings/myMeeting', jwtMiddleware, meeting.getMeetingById);
+
+ // 3. meeting_id로 회의 검색 API
+ app.get('/meetings/search/:meetingId', jwtMiddleware, meeting.getSortedMeetingById);
+
+ // 4. 회의를 내 회의 리스트에 추가하기 API
+ app.post('/meetings/myMeeting/:meetingId', jwtMiddleware, meeting.postNewMeetingMatch);
+
+ // 5. 새 회의 개설 API
+ app.post('/meetings/newMeeting', jwtMiddleware, meeting.postNewMeeting);
+
+ // 6. 회의를 내 회의 리스트에서 제거하기 API
+ app.delete('/meetings/myMeeting/:meetingId', jwtMiddleware, meeting.deleteMyMeeting);
+
+ // 7. (서브)회의에 입장하기 API
+ app.post('/meetings/openMeeting/:meetingId', jwtMiddleware, meeting.postEnterMeeting);
+
+ // 8. (서브)회의에서 퇴장하기 API (퇴장 시, 모든 사람이 다 나오면 회의 종료)
+ app.patch('/meetings/closeMeeting/:meetingId/:subMeetingId', jwtMiddleware, meeting.patchExitMeeting);
+
+ // 9. (서브)회의 주제 갱신(저장)하기 API
+ app.patch('/meetings/openMeeting/:meetingId/:subMeetingId', jwtMiddleware, meeting.patchSubMeetingTopic);
+
+ // 10. 회의 히스토리 리스트 API
+ app.get('/meetings/meetingHistory', jwtMiddleware, meeting.getSubMeetingHistoryById);
+
+};
\ No newline at end of file
diff --git a/Backend/src/app/Meeting/meetingService.js b/Backend/src/app/Meeting/meetingService.js
new file mode 100755
index 00000000..880f2611
--- /dev/null
+++ b/Backend/src/app/Meeting/meetingService.js
@@ -0,0 +1,413 @@
+const {logger} = require("../../../config/winston");
+const {pool} = require("../../../config/database");
+
+const meetingProvider = require("./meetingProvider");
+const meetingDao = require("./meetingDao");
+
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response} = require("../../../config/response");
+const {errResponse} = require("../../../config/response");
+
+// Service: Create, Update, Delete 비즈니스 로직 처리
+exports.matchUserMeeting = async function (userIdx, meeting_id) {
+ try {
+ // [Validation Check]
+ // 해당 회의가 db에 존재하는가?
+ const meetingRow = await meetingProvider.checkMeetingById(meeting_id);
+ if (meetingRow.length <= 0)
+ return errResponse(baseResponse.MEETING_ID_NOT_EXISTS);
+ // 이미 매칭 정보가 있는가?
+ const matchRow = await meetingProvider.checkUserMeetingMatch(userIdx, meeting_id);
+ if (matchRow.length > 0)
+ return errResponse(baseResponse.UMMATCH_ALREADY_EXISTS);
+
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ // 유저와 회의 매칭하기
+ const createUserMeetingMatchResult = await meetingDao.insertUserMeetingMatchInfo(connection, [userIdx, meeting_id]);
+ const added_umMatch_id = createUserMeetingMatchResult[0].insertId;
+ console.log(`매칭된 umm_id : ${added_umMatch_id}`);
+
+ connection.release();
+ return response(baseResponse.SUCCESS, {"added_umMatch_id" : added_umMatch_id});
+
+ } catch (err) {
+ logger.error(`App - matchUserMeeting Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+exports.unMatchUserMeeting = async function (userIdx, meeting_id) {
+ try {
+ // [Validation]
+ // 해당 회의 ID가 db에 없는 경우
+ const meetingRow = await meetingProvider.checkMeetingById(meeting_id);
+ if (meetingRow.length <= 0)
+ return errResponse(baseResponse.MEETING_ID_NOT_EXISTS);
+ // console.log(meetingRow)
+ // 해당 회의 ID와 유저가 연결이 없는 경우 (연결이 없는 경우)
+ const matchRow = await meetingProvider.checkUserMeetingMatch(userIdx, meeting_id);
+ if (matchRow.length <= 0)
+ return errResponse(baseResponse.UMMATCH_NOT_EXISTS);
+
+ const connection = await pool.getConnection(async (conn) => conn);
+ // [Transaction]
+ try {
+ // [트랜잭션 시작]
+ await connection.beginTransaction();
+
+ const deleteUserMeetingMatchResult = await meetingDao.deleteUserMeetingMatchInfo(connection, [userIdx, meeting_id]);
+ // console.log(deleteUserMeetingMatchResult);
+
+ const deleted_umMatchId_count = deleteUserMeetingMatchResult[0].affectedRows;
+ // console.log(`삭제된 um매칭 수 : ${deleted_umMatchId_count}`);
+ if (deleted_umMatchId_count < 1) {
+ await connection.rollback();
+ return errResponse(baseResponse.UMMATCH_DELETION_FAIL);
+ }
+
+ // TODO 회의에 남아있는 사람이 없으면 회의 삭제 (?)
+
+ // [정상적으로 처리되면 트랜잭션 완료]
+ await connection.commit();
+ return response(baseResponse.SUCCESS);
+ } catch (err) {
+ // [비정상적으로 처리되면 트랜잭션 롤백]
+ await connection.rollback();
+ console.log(err);
+ return errResponse(baseResponse.TRANSACTION_ERROR);
+ } finally {
+ // [연결 해제]
+ connection.release();
+ }
+ } catch (err) {
+ logger.error(`App - unMatchUserMeeting Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+}
+
+exports.addNewMeeting = async function (userIdx, meeting_name) {
+ try {
+ // [Validation Check]
+ // 회의 이름 중복 확인
+ // const meetingRows = await meetingProvider.meetingCheck(meeting_name);
+ // if (meetingRows.length > 0)
+ // return errResponse(baseResponse.SIGNUP_REDUNDANT_NICKNAME);
+
+ // const insertMeetingInfoParams = [userIdx, meeting_name, first_topic];
+
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ // [Transaction]
+ try {
+ // [트랜잭션 시작]
+ await connection.beginTransaction();
+
+ // 새 회의 개설
+ const createMeetingResult = await meetingDao.insertMeetingInfo(connection, meeting_name);
+ const added_meeting_id = createMeetingResult[0].insertId;
+ console.log(`추가된 회의 id : ${added_meeting_id}`);
+
+ // -- (deprecated) --
+ // 새로 만든 회의의 첫 주제 입력하기
+ // const createSubMeetingResult = await meetingDao.insertSubMeetingInfo(connection, [added_meeting_id, first_topic]);
+ // const added_subMeeting_id = createSubMeetingResult[0].insertId;
+ // console.log(`추가된 주제 id : ${added_subMeeting_id}`);
+
+ // 서브 회의와 회원 매칭하기
+ // const matchMeetingWithUser = await meetingDao.makeMatching(connection, [userIdx, added_subMeeting_id]);
+ // const added_match_id = matchMeetingWithUser[0].insertId;
+ // console.log(`매칭된 id : ${added_match_id}`);
+ // ----
+ // 개설자(회원)와 회의 매칭하기
+ const matchMeetingWithUser = await meetingDao.insertUserMeetingMatchInfo(connection, [userIdx, added_meeting_id]);
+ const added_umMatch_id = matchMeetingWithUser[0].insertId;
+ console.log(`매칭된 umm_id : ${added_umMatch_id}`);
+
+ // [정상적으로 처리되면 트랜잭션 완료]
+ await connection.commit();
+ return response(baseResponse.SUCCESS, {"added_meeting_id" : added_meeting_id, "added_umMatch_id" : added_umMatch_id});
+ } catch (err) {
+ // [비정상적으로 처리되면 트랜잭션 롤백]
+ await connection.rollback();
+ console.log(err);
+ return errResponse(baseResponse.TRANSACTION_ERROR);
+ } finally {
+ // [연결 해제]
+ connection.release();
+ }
+ } catch (err) {
+ logger.error(`App - addNewMeeting Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+exports.enterMeeting = async function (userIdx, meeting_id) {
+ try {
+ // [Validation]
+ let previous_match_id = null;
+ let previous_match_status = null;
+
+ // 개설된 서브회의가 있는가? (있다면 sub_meeting_id 반환, 없다면 null 반환)
+ const subMeetingRow = await meetingProvider.checkOpenSubMeetingById(meeting_id);
+ const openSubMeetingId = subMeetingRow.latest_sub_meeting_id;
+ // console.log(openSubMeetingId);
+ if (openSubMeetingId != null){
+ console.log(`회의에 입장합니다.`);
+ // 서브회의에 참여한 적이 있는가? (있다면 match_id 반환, 없다면 null 반환)
+ const matchRow = await meetingProvider.checkPreviousMatchingById(userIdx, openSubMeetingId);
+ // console.log(matchRow);
+ if (matchRow.length <= 0) {
+ console.log(`회의에 새로 입장합니다.`);
+ } else {
+ console.log(`회의에 다시 입장합니다.`);
+ previous_match_id = matchRow[0].previous_match_id;
+ previous_match_status = matchRow[0].status;
+ // console.log(previous_match_id, previous_match_status);
+ // 매칭 상태가 이미 연결되어 있는가?
+ if (previous_match_status == 'active') {
+ return errResponse(baseResponse.MATCHING_ALREADY_EXISTS);
+ }
+ }
+
+ // (match status 신경 안 쓴다면 아래 방식이 더 좋음)
+ // previous_match_id = matchRow.previous_match_id;
+ // // console.log(previous_match_id);
+ // if (previous_match_id != null) {
+ // console.log(`회의에 다시 입장합니다.`);
+ // } else {
+ // console.log(`회의에 새로 입장합니다.`);
+ // }
+ } else {
+ console.log('회의를 개설합니다.');
+ }
+
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ // [Transaction]
+ try {
+ // [트랜잭션 시작]
+ await connection.beginTransaction();
+ // CASE 1 - 서브회의를 새로 개설하는 경우
+ if (openSubMeetingId == null) {
+ // 새 서브회의 개설
+ const createSubMeetingResult = await meetingDao.insertSubMeetingInfo(connection, meeting_id);
+ const added_subMeeting_id = createSubMeetingResult[0].insertId;
+ console.log(`추가된 서브회의 id : ${added_subMeeting_id}`);
+
+ // 서브 회의와 회원 매칭하기
+ const matchSubMeetingWithUser = await meetingDao.makeMatching(connection, [userIdx, added_subMeeting_id]);
+ const added_match_id = matchSubMeetingWithUser[0].insertId;
+ console.log(`매칭된 id : ${added_match_id}`);
+
+ // [정상적으로 처리되면 트랜잭션 완료]
+ await connection.commit();
+ return response(baseResponse.SUCCESS, {"action": "회의를 개설합니다.", "added_subMeeting_id": added_subMeeting_id, "added_match_id" : added_match_id});
+ }
+
+ // CASE 2 - 열려있는 서브회의에 새로 참여하는 경우
+ else if (openSubMeetingId != null && previous_match_id == null) {
+ // 서브 회의와 회원 매칭하기
+ const matchSubMeetingWithUser = await meetingDao.makeMatching(connection, [userIdx, openSubMeetingId]);
+ const added_match_id = matchSubMeetingWithUser[0].insertId;
+ console.log(`매칭된 id : ${added_match_id}`);
+
+ // [정상적으로 처리되면 트랜잭션 완료]
+ await connection.commit();
+ return response(baseResponse.SUCCESS, {"action": "회의에 참가합니다.", "opened_subMeeting_id": openSubMeetingId, "added_match_id" : added_match_id});
+ }
+
+ // CASE 3 - 열려있는 서브회의에 다시 참여하는 경우
+ else if (openSubMeetingId != null && previous_match_id != null) {
+ const updateMatchStatus = await meetingDao.updateMatchingToActiveById(connection, previous_match_id);
+ console.log(updateMatchStatus);
+ console.log(`갱신된 매칭id : ${previous_match_id}`);
+
+ // [정상적으로 처리되면 트랜잭션 완료]
+ await connection.commit();
+ return response(baseResponse.SUCCESS, {"action": "회의에 재입장합니다.", "opened_subMeeting_id": openSubMeetingId, "updated_match_id" : previous_match_id});
+ }
+
+ // [나머지 경우에 트랜잭션 처리 -> 실패]
+ await connection.rollback();
+ return errResponse(baseResponse.ENTER_MEETING_FAILED);
+ } catch (err) {
+ // [비정상적으로 처리되면 트랜잭션 롤백]
+ await connection.rollback();
+ console.log(err);
+ return errResponse(baseResponse.TRANSACTION_ERROR);
+ } finally {
+ // [연결 해제]
+ // console.log('여기까지 와..? -> 오넹!');
+ connection.release();
+ }
+ } catch (err) {
+ logger.error(`App - enterMeeting Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+exports.exitMeeting = async function (userIdx, meeting_id, sub_meeting_id, match_id) {
+ try {
+ // [Validation]
+ // 회의id와 서브회의id가 유효한가? (잘 매칭되는가?)
+ const meetingIdResult = await meetingProvider.checkMeetingBySubId(sub_meeting_id);
+ // console.log(meetingIdResult);
+ if (meeting_id != meetingIdResult.meeting_id){
+ return errResponse(baseResponse.MEETING_SUBMEETING_VALIDATION_FAIL);
+ }
+ // 회의와 매칭 정보가 올바른가?
+ const checkMatchValidationResult = await meetingProvider.checkMeetingMatchingValidation(meeting_id, match_id);
+ // console.log(checkMatchValidationResult);
+ if (checkMatchValidationResult.validation_result == 0) {
+ return errResponse(baseResponse.MEETING_MATCH_VALIDATION_FAIL);
+ }
+
+ // 매칭이 현재 닫을 수 있는 상태인가? (=active 인가)
+ const checkExitableMatchResult = await meetingProvider.checkActiveMatchingById(match_id);
+ // console.log(checkExitableMatchResult);
+ if (checkExitableMatchResult.match_result == 0) {
+ return errResponse(baseResponse.MATCHING_CLOSE_NOT_READY);
+ }
+
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ // 매칭상태 inactive으로 변경
+ const updateMatchStatus = await meetingDao.updateMatchingToInactiveById(connection, match_id);
+ // console.log(updateMatchStatus);
+
+ // 서브회의가 완전히 종료됐는지 확인 (해당 서브회의의 모든 매칭상태를 확인하여 연결된 사람이 있는지 확인)
+ const activeMatchResult = await meetingProvider.checkLeftMatchById(sub_meeting_id);
+ // console.log(activeMatchResult);
+
+ // [Transaction]
+ try {
+ // [트랜잭션 시작]
+ await connection.beginTransaction();
+
+ // 서브회의에 남아있는 참가자 유무에 따라
+ if (activeMatchResult.left_match_result == 0) {
+ // 서브회의 종료
+ const closeSubMeetingResult = await meetingDao.updateSubMeetingStatus(connection, sub_meeting_id);
+ // console.log(closeSubMeetingResult);
+
+ // 매칭 정보 종료로 변경
+ const terminateMatchingsResult = await meetingDao.updateAllMatchingStatus(connection, sub_meeting_id);
+ // console.log(terminateMatchingsResult);
+
+ // [정상적으로 처리되면 트랜잭션 완료]
+ await connection.commit();
+ return response(baseResponse.SUCCESS, {"updated_match_id" : match_id, "terminated_sub_meeting_id" : sub_meeting_id});
+ } else {
+ // [정상적으로 처리되면 트랜잭션 완료]
+ await connection.commit();
+ return response(baseResponse.SUCCESS, {"updated_match_id" : match_id});
+ }
+ } catch (err) {
+ // [비정상적으로 처리되면 트랜잭션 롤백]
+ await connection.rollback();
+ console.log(err);
+ return errResponse(baseResponse.TRANSACTION_ERROR);
+ } finally {
+ // [연결 해제]
+ connection.release();
+ }
+ } catch (err) {
+ logger.error(`App - exitMeeting Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+exports.updateSubMeetingTopic = async function (userIdx, meeting_id, sub_meeting_id, topic) {
+ try {
+ // [Validation Check]
+ let previous_topic = null;
+ // 회의id와 서브회의id가 유효한가? (잘 매칭되는가?)
+ const meetingIdResult = await meetingProvider.checkMeetingBySubId(sub_meeting_id);
+ // console.log(meetingIdResult);
+ if (meeting_id != meetingIdResult.meeting_id){
+ return errResponse(baseResponse.MEETING_SUBMEETING_VALIDATION_FAIL);
+ }
+
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ // [Transaction]
+ try {
+ // [트랜잭션 시작]
+ await connection.beginTransaction();
+
+ // 해당 서브회의의 기존 주제 가져오기
+ const getSubMeetingTopicResult = await meetingProvider.checkSubMeetingTopicById(sub_meeting_id);
+ previous_topic = getSubMeetingTopicResult.topic;
+ // console.log(previous_topic);
+
+ // 서브회의 주제 갱신하기 (기존 주제랑 다른 경우만)
+ if (previous_topic != topic) {
+ const updateSubMeetingTopicResult = await meetingDao.updateSubMeetingTopic(connection, [topic, sub_meeting_id]);
+ // console.log(updateSubMeetingTopicResult);
+ }
+
+ // [정상적으로 처리되면 트랜잭션 완료]
+ await connection.commit();
+ return response(baseResponse.SUCCESS, {"previous_topic" : previous_topic, "updated_topic" : topic});
+ } catch (err) {
+ // [비정상적으로 처리되면 트랜잭션 롤백]
+ await connection.rollback();
+ console.log(err);
+ return errResponse(baseResponse.TRANSACTION_ERROR);
+ } finally {
+ // [연결 해제]
+ connection.release();
+ }
+ } catch (err) {
+ logger.error(`App - updateSubMeetingTopic Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+
+// (deprecated)
+// exports.joinNewMeeting = async function (userIdx, meeting_id) {
+// try {
+// // [Validation]
+// // 해당 회의 ID가 db에 없는 경우
+// const meetingRow = await meetingProvider.checkMeetingById(meeting_id);
+// if (meetingRow.length <= 0)
+// return errResponse(baseResponse.MEETING_ID_NOT_EXISTS);
+// // console.log(meetingRow)
+// // ---
+//
+// const connection = await pool.getConnection(async (conn) => conn);
+//
+// // [Transaction]
+// try {
+// // [트랜잭션 시작]
+// await connection.beginTransaction();
+//
+// // 회의 id로 가장 최신 서브회의 id 찾기
+// const getSubMeetingIdResult = await meetingDao.selectSubMeetingById(connection, meeting_id);
+// const latest_sub_meeting_id = getSubMeetingIdResult[0].latest_sub_meeting_id;
+// // console.log(latest_sub_meeting_id);
+//
+// // 서브 회의와 회원 매칭하기
+// const matchMeetingWithUser = await meetingDao.makeMatching(connection, [userIdx, latest_sub_meeting_id]);
+// const added_match_id = matchMeetingWithUser[0].insertId;
+// console.log(`added_match_id : ${added_match_id}`);
+//
+// // [정상적으로 처리되면 트랜잭션 완료]
+// await connection.commit();
+// return response(baseResponse.SUCCESS, {"added_match_id" : added_match_id});
+// } catch (err) {
+// // [비정상적으로 처리되면 트랜잭션 롤백]
+// await connection.rollback();
+// console.log(err);
+// return errResponse(baseResponse.TRANSACTION_ERROR);
+// } finally {
+// // [연결 해제]
+// connection.release();
+// }
+// } catch (err) {
+// logger.error(`App - joinNewMeeting Service error\n: ${err.message}`);
+// return errResponse(baseResponse.DB_ERROR);
+// }
+// }
diff --git a/Backend/src/app/Memo/memoController.js b/Backend/src/app/Memo/memoController.js
new file mode 100644
index 00000000..a9bbff28
--- /dev/null
+++ b/Backend/src/app/Memo/memoController.js
@@ -0,0 +1,99 @@
+const jwtMiddleware = require("../../../config/jwtMiddleware");
+const memoProvider = require("../../app/Memo/memoProvider");
+const memoService = require("../../app/Memo/memoService");
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response, errResponse} = require("../../../config/response");
+
+/**
+ * API No. 1
+ * API Name : 새 메모 추가 API
+ * [POST] '/memos/memo'
+ * header : x-access-token
+ * body : subMeeting_id, content
+ */
+exports.postNewMemo = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const sub_meeting_id = req.body.subMeeting_id;
+ const memo_content = req.body.content;
+
+ if (!sub_meeting_id) return res.send(errResponse(baseResponse.SUBMEETING_ID_EMPTY));
+
+ const addMemoInfo = await memoService.addNewMemo(userIdxFromJWT, sub_meeting_id, memo_content);
+ return res.send(addMemoInfo);
+};
+
+/**
+ * API No. 2
+ * API Name : 메모 조회 API
+ * [GET] /memos/memo/:subMeetingId
+ * header : x-access-token
+ * path variable : subMeetingId
+ */
+exports.getMemoById = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+ const sub_meeting_id = req.params.subMeetingId;
+
+ if (!sub_meeting_id) return res.send(errResponse(baseResponse.SUBMEETING_ID_EMPTY));
+
+ const getMemoResponse = await memoProvider.retrieveMemo(userIdxFromJWT, sub_meeting_id);
+ return res.send(getMemoResponse);
+};
+
+/**
+ * API No. 3
+ * API Name : 메모 수정 API
+ * [PATCH] /memos/memo/?subMeetingId=
+ * header : x-access-token
+ * path variable : subMeetingId
+ * body : content
+ */
+exports.patchMemo = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+ const sub_meeting_id = req.params.subMeetingId;
+ const changed_content = req.body.content;
+
+ if (!sub_meeting_id) return res.send(errResponse(baseResponse.SUBMEETING_ID_EMPTY));
+
+ // meetingId를 통한 유저 검색 함수 호출 및 결과 저장
+ const patchMemoResponse = await memoService.changeMemo(userIdxFromJWT, sub_meeting_id, changed_content);
+ return res.send(patchMemoResponse);
+};
+
+/**
+ * API No. 4
+ * API Name : 한 회의에 대한 모든 메모리스트 조회 API
+ * [GET] /memos/memoList/:meetingId
+ * header : x-access-token
+ * path variable : meetingId
+ */
+exports.getAllMemos = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+ const meeting_id = req.params.meetingId;
+
+ if (!meeting_id) return res.send(errResponse(baseResponse.MEETING_ID_EMPTY));
+
+ const memoListResponse = await memoProvider.retrieveAllMemoById(userIdxFromJWT, meeting_id);
+
+ return res.send(memoListResponse);
+};
+
+
+/**
+ * API No. 5
+ * API Name : 키워드 추가 API
+ * [POST] '/memos/keywords'
+ * header : x-access-token
+ * body : memo_id, keywords
+ */
+exports.postKeywords = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const memo_id = req.body.memo_id;
+ const keywords = req.body.keywords;
+
+ if (!memo_id) return res.send(errResponse(baseResponse.MEMO_ID_EMPTY));
+
+ const addKeywordInfo = await memoService.addKeywords(userIdxFromJWT, memo_id, keywords);
+ return res.send(addKeywordInfo);
+};
diff --git a/Backend/src/app/Memo/memoDao.js b/Backend/src/app/Memo/memoDao.js
new file mode 100644
index 00000000..df7c50fc
--- /dev/null
+++ b/Backend/src/app/Memo/memoDao.js
@@ -0,0 +1,89 @@
+// 열려있는 서브회의 있는지 확인
+async function checkOpenSubMeetingById(connection, sub_meeting_id) {
+ const selectOpenSubMeetingByIdQuery = `
+ SELECT *
+ FROM SubMeeting
+ WHERE sub_meeting_id = ? AND status = 'open';
+ `;
+ const subMeetingResult = await connection.query(selectOpenSubMeetingByIdQuery, sub_meeting_id);
+ return subMeetingResult[0];
+}
+
+// 메모가 이미 있는지 확인
+async function checkMemoById(connection, sub_meeting_id) {
+ const selectMemoByIdQuery = `
+ SELECT *
+ FROM Memo
+ WHERE sub_meeting_id = ?;
+ `;
+ const memoResult = await connection.query(selectMemoByIdQuery, sub_meeting_id);
+ return memoResult[0];
+}
+
+// 새 메모 추가
+async function insertMemoInfo(connection, insertMemoParams) {
+ const insertMemoInfoQuery = `
+ INSERT INTO Memo (sub_meeting_id, memo_content)
+ VALUE (?, ?);
+ `;
+ const insertMemoInfoRow = await connection.query(insertMemoInfoQuery, insertMemoParams);
+
+ return insertMemoInfoRow;
+}
+
+// 서브회의 id로 메모 검색
+async function selectMemoById(connection, sub_meeting_id) {
+ const searchMemoByIdQuery = `
+ SELECT MM.memo_id, SM.sub_meeting_id, SM.createdAt, SM.topic, MM.memo_content
+ FROM Memo MM INNER JOIN SubMeeting SM on MM.sub_meeting_id = SM.sub_meeting_id
+ WHERE SM.sub_meeting_id = ?;
+ `;
+ const memoRow = await connection.query(searchMemoByIdQuery, sub_meeting_id);
+ return memoRow[0];
+}
+
+// 메모 수정
+async function updateMemoInfo(connection, updateMemoParams) {
+ const updateMemoInfoQuery = `
+ UPDATE Memo
+ SET memo_content = ?
+ WHERE sub_meeting_id = ?;
+ `;
+ const updateMemoInfoRow = await connection.query(updateMemoInfoQuery, updateMemoParams);
+
+ return updateMemoInfoRow;
+}
+
+// 회의 id로 전체 메모 리스트 조회
+async function selectAllMemoById(connection, meeting_id) {
+ const selectAllMemoByIdQuery = `
+ SELECT MM.memo_id, SM.sub_meeting_id, SM.createdAt, SM.topic, MM.memo_content
+ FROM Memo MM INNER JOIN SubMeeting SM on MM.sub_meeting_id = SM.sub_meeting_id INNER JOIN Meeting MT on SM.meeting_id = MT.meeting_id
+ WHERE MT.meeting_id = ?;
+ `;
+ const [memoRows] = await connection.query(selectAllMemoByIdQuery, meeting_id);
+ return memoRows;
+}
+
+
+// 키워드 추가
+async function insertKeywordInfo(connection, insertKeywordParams) {
+ const insertKeywordInfoQuery = `
+ INSERT INTO Keyword (memo_id, keyword_content)
+ VALUE (?, ?);
+ `;
+ const insertKeywordInfoRow = await connection.query(insertKeywordInfoQuery, insertKeywordParams);
+
+ return insertKeywordInfoRow;
+}
+
+module.exports = {
+ checkOpenSubMeetingById,
+ checkMemoById,
+ insertMemoInfo,
+ selectMemoById,
+ updateMemoInfo,
+ selectAllMemoById,
+ insertKeywordInfo,
+
+};
diff --git a/Backend/src/app/Memo/memoProvider.js b/Backend/src/app/Memo/memoProvider.js
new file mode 100644
index 00000000..79bee8a8
--- /dev/null
+++ b/Backend/src/app/Memo/memoProvider.js
@@ -0,0 +1,46 @@
+const { pool } = require("../../../config/database");
+const { logger } = require("../../../config/winston");
+
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response} = require("../../../config/response");
+const {errResponse} = require("../../../config/response");
+
+const memoDao = require("./memoDao");
+
+// Provider: Read 비즈니스 로직 처리
+
+exports.retrieveMemo = async function (userIdx, sub_meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const memoResult = await memoDao.selectMemoById(connection, sub_meeting_id);
+
+ connection.release();
+
+ return response(baseResponse.SUCCESS, memoResult);
+};
+
+exports.retrieveAllMemoById = async function (userIdx, meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const allMemoListResult = await memoDao.selectAllMemoById(connection, meeting_id);
+ // connection 해제
+ connection.release();
+
+ return response(baseResponse.SUCCESS, allMemoListResult);
+};
+
+exports.checkSubMeeting = async function (sub_meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const subMeetingResult = await memoDao.checkOpenSubMeetingById(connection, sub_meeting_id);
+
+ connection.release();
+
+ return subMeetingResult;
+};
+
+exports.checkMemo = async function (sub_meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const memoResult = await memoDao.checkMemoById(connection, sub_meeting_id);
+
+ connection.release();
+
+ return memoResult;
+};
\ No newline at end of file
diff --git a/Backend/src/app/Memo/memoRoute.js b/Backend/src/app/Memo/memoRoute.js
new file mode 100644
index 00000000..586a85c8
--- /dev/null
+++ b/Backend/src/app/Memo/memoRoute.js
@@ -0,0 +1,21 @@
+module.exports = function(app){
+ const memo = require('./memoController');
+ const jwtMiddleware = require('../../../config/jwtMiddleware');
+
+ // 1. 새 메모 추가 API
+ app.post('/memos/memo', jwtMiddleware, memo.postNewMemo);
+
+ // 2. 메모 조회 API
+ app.get('/memos/memo/:subMeetingId', jwtMiddleware, memo.getMemoById);
+
+ // 3. 메모 수정 API
+ app.patch('/memos/memo/:subMeetingId', jwtMiddleware, memo.patchMemo);
+
+ // 4. 한 회의에 대한 모든 메모리스트 조회 API
+ app.get('/memos/memoList/:meetingId', jwtMiddleware, memo.getAllMemos);
+
+
+ // TODO 메모 추가 시, 바로 키워드를 뽑아서 keyword db에 넣기?
+ // 5. 키워드 추가 API
+ app.post('/memos/keywords', jwtMiddleware, memo.postKeywords);
+};
\ No newline at end of file
diff --git a/Backend/src/app/Memo/memoService.js b/Backend/src/app/Memo/memoService.js
new file mode 100644
index 00000000..b88fa47b
--- /dev/null
+++ b/Backend/src/app/Memo/memoService.js
@@ -0,0 +1,107 @@
+const {logger} = require("../../../config/winston");
+const {pool} = require("../../../config/database");
+
+const memoProvider = require("./memoProvider");
+const memoDao = require("./memoDao");
+
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response} = require("../../../config/response");
+const {errResponse} = require("../../../config/response");
+
+// Service: Create, Update, Delete 비즈니스 로직 처리
+
+exports.addNewMemo = async function (userIdx, sub_meeting_id, memo_content) {
+ try {
+ // [Validation]
+ // 해당 서브회의가 존재하는가 (아직 회의중인)
+ const subMeetingRow = await memoProvider.checkSubMeeting(sub_meeting_id);
+ // console.log(subMeetingRow);
+ if (subMeetingRow.length <= 0){
+ return errResponse(baseResponse.MEMO_NO_OPEN_SUBMEETING);
+ }
+
+ // 이미 메모가 작성되어 있는가 (처음 메모를 저장하는것인가) - 없다면 새로 저장, 있다면 업데이트
+ const memoRow = await memoProvider.checkMemo(sub_meeting_id);
+ // console.log(memoRow);
+ // 새로운 메모인 경우 그냥 추가
+ if (memoRow.length <= 0) {
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ const insertMemoResult = await memoDao.insertMemoInfo(connection, [sub_meeting_id, memo_content]);
+ const added_memo_id = insertMemoResult[0].insertId;
+
+ connection.release();
+
+ return response(baseResponse.SUCCESS, {"added_memo_id" : added_memo_id});
+ }
+ // 기존 메모가 있는 경우, 기존 메모와 새 메모 비교
+ else {
+ prevMemoInfo = memoRow[0];
+ prev_memo_id = prevMemoInfo.memo_id;
+ prev_memo_content = prevMemoInfo.memo_content;
+ // 같으면 아무 작업도 하지 않기
+ if (prev_memo_content == memo_content) {
+ return response(baseResponse.SUCCESS, {"action" : "내용이 같아 아무 작업도 하지 않습니다."})
+ }
+ // 다르면 업데이트하기
+ else {
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ const patchMemoResult = await memoDao.updateMemoInfo(connection, [memo_content, sub_meeting_id]);
+
+ connection.release();
+
+ return response(baseResponse.SUCCESS, {"updated_memo_id" : prev_memo_id});
+ }
+ }
+ } catch (err) {
+ logger.error(`App - addNewMemo Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+exports.changeMemo = async function (userIdx, sub_meeting_id, memo_content) {
+ try {
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ const patchMemoResult = await memoDao.updateMemoInfo(connection, [memo_content, sub_meeting_id]);
+ // console.log(patchMemoResult[0]);
+
+ connection.release();
+
+ // return response(baseResponse.SUCCESS, {"added_memo_id" : added_memo_id});
+ return response(baseResponse.SUCCESS);
+
+ } catch (err) {
+ logger.error(`App - changeMemo Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+exports.addKeywords = async function (userIdx, memo_id, keywords) {
+ try {
+ // 키워드들 분리
+ keyword_list = keywords.split(', ');
+ console.log(keyword_list);
+
+ // TODO 트랜잭션을 할지 안할지 아직 모름
+ const connection = await pool.getConnection(async (conn) => conn);
+ const added_keyword_id_list = []
+
+ // 키워드 개수만큼 추가하기
+ for (const keyword of keyword_list) {
+ const insertKeywordResult = await memoDao.insertKeywordInfo(connection, [memo_id, keyword]);
+ const added_keyword_id = insertKeywordResult[0].insertId
+ console.log(`${added_keyword_id} : ${keyword}`);
+ added_keyword_id_list.push(added_keyword_id);
+ }
+
+ connection.release();
+
+ return response(baseResponse.SUCCESS, {"added_keyword_id_list" : added_keyword_id_list});
+
+ } catch (err) {
+ logger.error(`App - addNewMemo Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
diff --git a/Backend/src/app/Summary/summaryController.js b/Backend/src/app/Summary/summaryController.js
new file mode 100755
index 00000000..63c5fcd6
--- /dev/null
+++ b/Backend/src/app/Summary/summaryController.js
@@ -0,0 +1,62 @@
+const jwtMiddleware = require("../../../config/jwtMiddleware");
+const summaryProvider = require("../../app/Summary/summaryProvider");
+const summaryService = require("../../app/Summary/summaryService");
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response, errResponse} = require("../../../config/response");
+
+/**
+ * API No. 1
+ * API Name : 요약 내용 조회 API
+ * [GET] /summaries/summary/:subMeetingId
+ * header : x-access-token
+ * path variable : subMeetingId
+ */
+exports.getSummaryById = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+ const sub_meeting_id = req.params.subMeetingId;
+
+ if (!sub_meeting_id) return res.send(errResponse(baseResponse.SUBMEETING_ID_EMPTY));
+
+ const summaryResponse = await summaryProvider.retrieveSummary(userIdxFromJWT, sub_meeting_id);
+
+ return res.send(summaryResponse);
+};
+
+/**
+ * API No. 2
+ * API Name : 요약 추가 API
+ * [POST] '/summaries/summary'
+ * header : x-access-token
+ * body : match_id, summary_content, original_content
+ */
+exports.postSummary = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const match_id = req.body.match_id;
+ const summary_content = req.body.summary_content;
+ const original_content = req.body.original_content;
+
+ if (!match_id) return res.send(errResponse(baseResponse.MATCH_ID_EMPTY));
+
+ const addSummaryInfo = await summaryService.addSummary(userIdxFromJWT, match_id, summary_content, original_content);
+ return res.send(addSummaryInfo);
+};
+
+/**
+ * API No. 3
+ * API Name : 요약 수정 API
+ * [PATCH] '/summaries/summary'
+ * header : x-access-token
+ * body : match_id, summary_content
+ */
+exports.patchSummary = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ const match_id = req.body.match_id;
+ const summary_content = req.body.summary_content;
+
+ if (!match_id) return res.send(errResponse(baseResponse.MATCH_ID_EMPTY));
+
+ const changeSummaryInfo = await summaryService.changeSummary(userIdxFromJWT, match_id, summary_content);
+ return res.send(changeSummaryInfo);
+};
diff --git a/Backend/src/app/Summary/summaryDao.js b/Backend/src/app/Summary/summaryDao.js
new file mode 100755
index 00000000..4141b8f2
--- /dev/null
+++ b/Backend/src/app/Summary/summaryDao.js
@@ -0,0 +1,53 @@
+// 회원 id로 전체 회의 리스트 조회
+async function selectSummaryById(connection, sub_meeting_id) {
+ const selectSummaryByIdQuery = `
+ SELECT S.match_id, U.user_name, S.summary_content, S.original_content
+ FROM Summary S INNER JOIN Matching MC on S.match_id = MC.match_id INNER JOIN User U on MC.user_id = U.user_id
+ WHERE MC.sub_meeting_id = ?;
+ `;
+ const summaryRow = await connection.query(selectSummaryByIdQuery, sub_meeting_id);
+ return summaryRow[0];
+}
+
+// 요약 추가
+async function insertSummaryInfo(connection, insertSummaryParams) {
+ const insertSummaryInfoQuery = `
+ INSERT INTO Summary (match_id, summary_content, original_content)
+ VALUES
+ (?, ?, ?)
+ `;
+ const insertSummaryInfoRow = await connection.query(insertSummaryInfoQuery, insertSummaryParams);
+
+ return insertSummaryInfoRow;
+}
+
+// 요약 수정
+async function updateSummaryInfo(connection, updateSummaryParams) {
+ const updateSummaryInfoQuery = `
+ UPDATE Summary
+ SET summary_content = ?
+ WHERE match_id = ?;
+ `;
+ const updateSummaryInfoRow = await connection.query(updateSummaryInfoQuery, updateSummaryParams);
+
+ return updateSummaryInfoRow;
+}
+
+// 매칭 id로 매칭 존재 여부 체크
+async function findMatchingById(connection, match_id) {
+ const selectMatchingIdQuery = `
+ SELECT *
+ FROM Matching
+ WHERE match_id = ?
+ `;
+ const matchingRow = await connection.query(selectMatchingIdQuery, match_id);
+ return matchingRow[0];
+}
+
+module.exports = {
+ selectSummaryById,
+ insertSummaryInfo,
+ updateSummaryInfo,
+ findMatchingById,
+
+};
diff --git a/Backend/src/app/Summary/summaryProvider.js b/Backend/src/app/Summary/summaryProvider.js
new file mode 100755
index 00000000..0ab20cd0
--- /dev/null
+++ b/Backend/src/app/Summary/summaryProvider.js
@@ -0,0 +1,27 @@
+const { pool } = require("../../../config/database");
+const { logger } = require("../../../config/winston");
+
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response} = require("../../../config/response");
+const {errResponse} = require("../../../config/response");
+
+const summaryDao = require("./summaryDao");
+
+// Provider: Read 비즈니스 로직 처리
+
+exports.retrieveSummary = async function (userIdx, sub_meeting_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const summaryResult = await summaryDao.selectSummaryById(connection, sub_meeting_id);
+
+ connection.release();
+
+ return response(baseResponse.SUCCESS, summaryResult);
+};
+
+exports.matchingCheck = async function (match_id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const matchCheckResult = await summaryDao.findMatchingById(connection, match_id);
+ connection.release();
+
+ return matchCheckResult;
+};
diff --git a/Backend/src/app/Summary/summaryRoute.js b/Backend/src/app/Summary/summaryRoute.js
new file mode 100755
index 00000000..aa5ae6da
--- /dev/null
+++ b/Backend/src/app/Summary/summaryRoute.js
@@ -0,0 +1,14 @@
+module.exports = function(app){
+ const summary = require('./summaryController');
+ const jwtMiddleware = require('../../../config/jwtMiddleware');
+
+ // 1. 요약 내용 조회 API
+ app.get('/summaries/summary/:subMeetingId', jwtMiddleware, summary.getSummaryById);
+
+ // 2. 요약 추가 API
+ app.post('/summaries/summary', jwtMiddleware, summary.postSummary);
+
+ // 3. 요약 수정 API
+ app.patch('/summaries/summary', jwtMiddleware, summary.patchSummary);
+
+};
\ No newline at end of file
diff --git a/Backend/src/app/Summary/summaryService.js b/Backend/src/app/Summary/summaryService.js
new file mode 100755
index 00000000..3bf3d091
--- /dev/null
+++ b/Backend/src/app/Summary/summaryService.js
@@ -0,0 +1,48 @@
+const {logger} = require("../../../config/winston");
+const {pool} = require("../../../config/database");
+
+const summaryProvider = require("./summaryProvider");
+const summaryDao = require("./summaryDao");
+
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response} = require("../../../config/response");
+const {errResponse} = require("../../../config/response");
+
+exports.addSummary = async function (userIdx, match_id, summary_content, original_content) {
+ try {
+ // [Validation Check]
+ // 매칭 ID 존재 여부 확인
+ const matchRow = await summaryProvider.matchingCheck(match_id);
+ if (matchRow.length <= 0)
+ return errResponse(baseResponse.MATCHING_NO_RESULT);
+
+ const connection = await pool.getConnection(async (conn) => conn);
+ const addSummaryResult = await summaryDao.insertSummaryInfo(connection, [match_id, summary_content, original_content]);
+ // const added_summary_id = addSummaryResult[0].insertId;
+ connection.release();
+
+ return response(baseResponse.SUCCESS);
+ } catch (err) {
+ logger.error(`App - addSummary Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+exports.changeSummary = async function (userIdx, match_id, summary_content) {
+ try {
+ // [Validation Check]
+ // 매칭 ID 존재 여부 확인
+ const matchRow = await summaryProvider.matchingCheck(match_id);
+ if (matchRow.length <= 0)
+ return errResponse(baseResponse.MATCHING_NO_RESULT);
+
+ const connection = await pool.getConnection(async (conn) => conn);
+ const changeSummaryResult = await summaryDao.updateSummaryInfo(connection, [summary_content, match_id]);
+ connection.release();
+
+ return response(baseResponse.SUCCESS);
+ } catch (err) {
+ logger.error(`App - changeSummary Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
diff --git a/Backend/src/app/User/userController.js b/Backend/src/app/User/userController.js
new file mode 100755
index 00000000..43198cbb
--- /dev/null
+++ b/Backend/src/app/User/userController.js
@@ -0,0 +1,164 @@
+const jwtMiddleware = require("../../../config/jwtMiddleware");
+const userProvider = require("../../app/User/userProvider");
+const userService = require("../../app/User/userService");
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response, errResponse} = require("../../../config/response");
+
+const regexEmail = require("regex-email");
+
+/**
+ * API No. 0
+ * API Name : 테스트 API
+ * [GET] /app/test
+ */
+exports.getTest = async function (req, res) {
+ return res.send(response(baseResponse.SUCCESS))
+}
+exports.getTestDB = async function (req, res) {
+ const testResponse = await userProvider.retrieveAllUser()
+ return res.send(testResponse)
+}
+
+/**
+ * API No. 1
+ * API Name : 유저 생성 (회원가입) API
+ * [POST] /app/signup
+ */
+exports.postUsers = async function (req, res) {
+
+ /**
+ * Body: name, id, password, email, phone
+ */
+ const {name, id, password, email, phone} = req.body;
+
+ // [Validation Check]
+ // 빈 값 체크
+ if (!name || !id || !password || !email)
+ return res.send(response(baseResponse.SIGNUP_EMPTY));
+
+ // 이메일 형식 체크 (by 정규표현식)
+ if (!regexEmail.test(email))
+ return res.send(response(baseResponse.SIGNUP_EMAIL_ERROR_TYPE));
+
+ // 이메일 길이 체크
+ // if (email.length > 30)
+ // return res.send(response(baseResponse.SIGNUP_EMAIL_LENGTH));
+
+ // ------
+
+ // createUser 함수 실행을 통한 결과 값을 signUpResponse에 저장
+ const signUpResponse = await userService.createUser(name, id, password, email, phone);
+
+ // signUpResponse 값을 json으로 전달
+ return res.send(signUpResponse);
+};
+
+// TODO: After 로그인 인증 방법 (JWT)
+/**
+ * API No. 2
+ * API Name : 로그인 API
+ * [POST] /app/login
+ * body : id, passsword
+ */
+exports.login = async function (req, res) {
+
+ const {id, password} = req.body;
+
+ const signInResponse = await userService.postSignIn(id, password);
+
+ return res.send(signInResponse);
+};
+
+/**
+ * API No. 3
+ * API Name : 특정 유저 조회 API (중복체크)
+ * [GET] /app/users
+ */
+exports.getUserById = async function (req, res) {
+
+ /**
+ * Query String: id
+ */
+ const userId = req.query.id;
+
+ // errResponse 전달
+ if (!userId) return res.send(errResponse(baseResponse.USER_NICKNAME_EMPTY));
+
+ // userId를 통한 유저 검색 함수 호출 및 결과 저장
+ const checkUserIdResponse = await userProvider.retrieveUser(userId);
+ return res.send(checkUserIdResponse);
+};
+
+/**
+ * API No. 4
+ * API Name : 로그인한 회원 정보 불러오기 API
+ * [GET] /app/users/userInfo
+ */
+exports.getUser = async function (req, res) {
+ const userIdxFromJWT = req.verifiedToken.user_id;
+
+ // userId를 통한 유저 검색 함수 호출 및 결과 저장
+ const userInfoListResponse = await userProvider.retrieveUserList(userIdxFromJWT);
+ return res.send(userInfoListResponse);
+};
+
+
+/**
+ * API No.
+ * API Name : 유저 조회 API (+ 이메일로 검색 조회)
+ * [GET] /app/users
+ */
+// exports.getUsers = async function (req, res) {
+
+// /**
+// * Path Variable: email
+// */
+// const email = req.params.email;
+
+// if (!email) {
+// // 유저 전체 조회
+// const userListResult = await userProvider.retrieveUserList();
+// // SUCCESS : { "isSuccess": true, "code": 1000, "message":"성공" }, 메세지와 함께 userListResult 호출
+// return res.send(response(baseResponse.SUCCESS, userListResult));
+// } else {
+// // 아메일을 통한 유저 검색 조회
+// const userListByEmail = await userProvider.retrieveUserList(email);
+// return res.send(response(baseResponse.SUCCESS, userListByEmail));
+// }
+// };
+
+/**
+ * API No.
+ * API Name : 회원 정보 수정 API + JWT + Validation
+ * [PATCH] /app/users/:userId
+ * path variable : userId
+ * body : nickname
+ */
+// exports.patchUsers = async function (req, res) {
+
+// // jwt - userId, path variable :userId
+
+// const userIdFromJWT = req.verifiedToken.userId
+
+// const userId = req.params.userId;
+// const nickname = req.body.nickname;
+
+// // JWT는 이 후 주차에 다룰 내용
+// if (userIdFromJWT != userId) {
+// res.send(errResponse(baseResponse.USER_ID_NOT_MATCH));
+// } else {
+// if (!nickname) return res.send(errResponse(baseResponse.USER_NICKNAME_EMPTY));
+
+// const editUserInfo = await userService.editUser(userId, nickname)
+// return res.send(editUserInfo);
+// }
+// };
+
+/** JWT 토큰 검증 API
+ * [GET] /app/auto-login
+ */
+exports.check = async function (req, res) {
+ const userIdResult = req.verifiedToken.userId;
+ console.log(userIdResult);
+ return res.send(response(baseResponse.TOKEN_VERIFICATION_SUCCESS));
+};
diff --git a/Backend/src/app/User/userDao.js b/Backend/src/app/User/userDao.js
new file mode 100755
index 00000000..cce6c4e2
--- /dev/null
+++ b/Backend/src/app/User/userDao.js
@@ -0,0 +1,107 @@
+
+// 새롭게 추가한 함수를 아래 부분에서 export 해줘야 외부의 Provider, Service 등에서 사용가능합니다.
+
+// 유저 생성 (회원가입)
+async function insertUserInfo(connection, insertUserInfoParams) {
+ const insertUserInfoQuery = `
+ INSERT INTO User(user_name, id, password, email, phone)
+ VALUES (?, ?, ?, ?, ?);
+ `;
+ const insertUserInfoRow = await connection.query(
+ insertUserInfoQuery,
+ insertUserInfoParams
+ );
+
+ return insertUserInfoRow;
+}
+
+// 로그인 아이디로 회원 조회
+async function selectUserId(connection, id) {
+ const selectUserIdQuery = `
+ SELECT *
+ FROM User
+ WHERE id = ?;
+ `;
+ const [idRows] = await connection.query(selectUserIdQuery, id);
+ return idRows;
+}
+
+// 고유 아이디로 회원 조회
+async function selectUserById(connection, user_id) {
+ const selectUserInfoQuery = `
+ SELECT *
+ FROM User
+ WHERE user_id = ?;
+ `;
+ const [selectUserInfoRows] = await connection.query(selectUserInfoQuery, user_id);
+ return selectUserInfoRows;
+}
+
+// 패스워드 체크
+async function selectUserPassword(connection, selectUserPasswordParams) {
+ const selectUserPasswordQuery = `
+ SELECT *
+ FROM User
+ WHERE id = ? AND password = ?;`;
+ const selectUserPasswordRow = await connection.query(
+ selectUserPasswordQuery,
+ selectUserPasswordParams
+ );
+
+ return selectUserPasswordRow[0];
+}
+
+// 이메일로 회원 조회
+async function selectUserEmail(connection, email) {
+ const selectUserEmailQuery = `
+ SELECT email
+ FROM User
+ WHERE email = ?;
+ `;
+ const [emailRows] = await connection.query(selectUserEmailQuery, email);
+ return emailRows;
+}
+
+// 유저 계정 상태 체크 (jwt 생성 위해 id 값도 가져온다.)
+async function selectUserAccount(connection, id) {
+ const selectUserAccountQuery = `
+ SELECT status, user_id, user_name
+ FROM User
+ WHERE id = ?;`;
+ const selectUserAccountRow = await connection.query(
+ selectUserAccountQuery,
+ id
+ );
+ return selectUserAccountRow[0];
+}
+
+// 모든 유저 조회
+async function selectUser(connection) {
+ const selectUserListQuery = `
+ SELECT *
+ FROM User;
+ `;
+ const [userRows] = await connection.query(selectUserListQuery);
+ return userRows;
+}
+
+async function updateUserInfo(connection, id, nickname) {
+ const updateUserQuery = `
+ UPDATE UserInfo
+ SET nickname = ?
+ WHERE id = ?;`;
+ const updateUserRow = await connection.query(updateUserQuery, [nickname, id]);
+ return updateUserRow[0];
+}
+
+
+module.exports = {
+ insertUserInfo,
+ selectUserId,
+ selectUserById,
+ selectUserPassword,
+ selectUserEmail,
+ selectUser,
+ selectUserAccount,
+ updateUserInfo,
+};
diff --git a/Backend/src/app/User/userProvider.js b/Backend/src/app/User/userProvider.js
new file mode 100755
index 00000000..b8967f16
--- /dev/null
+++ b/Backend/src/app/User/userProvider.js
@@ -0,0 +1,79 @@
+const { pool } = require("../../../config/database");
+const { logger } = require("../../../config/winston");
+
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response} = require("../../../config/response");
+const {errResponse} = require("../../../config/response");
+
+const userDao = require("./userDao");
+
+// Provider: Read 비즈니스 로직 처리
+
+exports.retrieveAllUser = async function () {
+ // connection 은 db와의 연결을 도와줌
+ const connection = await pool.getConnection(async (conn) => conn);
+ // Dao 쿼리문의 결과를 호출
+ const userListResult = await userDao.selectUser(connection);
+ // connection 해제
+ connection.release();
+
+ return userListResult;
+};
+
+exports.retrieveUser = async function (userId) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const userResult = await userDao.selectUserId(connection, userId);
+
+ connection.release();
+
+ if (userResult.length > 0)
+ return response(baseResponse.SUCCESS, {'unique': false});
+ else
+ return response(baseResponse.SUCCESS, {'unique': true});
+ };
+
+ exports.retrieveUserList = async function (userId) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const userListResult = await userDao.selectUserById(connection, userId);
+
+ connection.release();
+
+ // return userResult[0]; // 한 명의 유저 정보만을 불러오므로 배열 타입을 리턴하는 게 아닌 0번 인덱스를 파싱해서 오브젝트 타입 리턴
+ return response(baseResponse.SUCCESS, userListResult[0]);
+};
+
+exports.idCheck = async function (id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const idCheckResult = await userDao.selectUserId(connection, id);
+ connection.release();
+
+ return idCheckResult;
+};
+
+exports.emailCheck = async function (email) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const emailCheckResult = await userDao.selectUserEmail(connection, email);
+ connection.release();
+
+ return emailCheckResult;
+};
+
+exports.passwordCheck = async function (selectUserPasswordParams) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ // 쿼리문에 여러개의 인자를 전달할 때 selectUserPasswordParams와 같이 사용합니다.
+ const passwordCheckResult = await userDao.selectUserPassword(
+ connection,
+ selectUserPasswordParams
+ );
+ connection.release();
+ // return passwordCheckResult[0];
+ return passwordCheckResult;
+};
+
+exports.accountCheck = async function (id) {
+ const connection = await pool.getConnection(async (conn) => conn);
+ const userAccountResult = await userDao.selectUserAccount(connection, id);
+ connection.release();
+
+ return userAccountResult;
+};
\ No newline at end of file
diff --git a/Backend/src/app/User/userRoute.js b/Backend/src/app/User/userRoute.js
new file mode 100755
index 00000000..14ecfa9a
--- /dev/null
+++ b/Backend/src/app/User/userRoute.js
@@ -0,0 +1,37 @@
+module.exports = function(app){
+ const user = require('./userController');
+ const jwtMiddleware = require('../../../config/jwtMiddleware');
+
+ // 0. 테스트 API
+ app.get('/test', user.getTest)
+ app.get('/testdb', user.getTestDB)
+
+ // 1. 유저 생성 (회원가입) API
+ app.post('/users/signup', user.postUsers);
+
+ // 2. 로그인 하기 (JWT 생성) API
+ app.post('/users/login', user.login);
+
+ // 3. 중복 아이디 체크하기 API
+ app.get('/users', user.getUserById);
+
+ // 4. 로그인한 회원 정보 불러오기 API
+ app.get('/users/userInfo', jwtMiddleware, user.getUser)
+
+ // 회원 정보 수정 API (JWT 검증 및 Validation - 메소드 체이닝 방식으로 jwtMiddleware 사용)
+ // app.patch('/app/users/:userId', jwtMiddleware, user.patchUsers)
+
+ // 유저 조회 API (+ 검색)
+ // app.get('/app/users',user.getUsers);
+
+ // 특정 유저 조회 API
+ // app.get('/app/users/:userId', user.getUserById);
+
+};
+
+
+// TODO: 자동로그인 API (JWT 검증 및 Payload 내뱉기)
+// JWT 검증 API
+// app.get('/app/auto-login', jwtMiddleware, user.check);
+
+// TODO: 탈퇴하기 API
\ No newline at end of file
diff --git a/Backend/src/app/User/userService.js b/Backend/src/app/User/userService.js
new file mode 100755
index 00000000..6d6725f0
--- /dev/null
+++ b/Backend/src/app/User/userService.js
@@ -0,0 +1,133 @@
+const {logger} = require("../../../config/winston");
+const {pool} = require("../../../config/database");
+const secret_config = require("../../../config/secret");
+
+// user 뿐만 아니라 다른 도메인의 Provider와 Dao도 아래처럼 require하여 사용할 수 있습니다.
+const userProvider = require("./userProvider");
+const userDao = require("./userDao");
+
+const baseResponse = require("../../../config/baseResponseStatus");
+const {response} = require("../../../config/response");
+const {errResponse} = require("../../../config/response");
+
+const jwt = require("jsonwebtoken");
+const crypto = require("crypto");
+
+// Service: Create, Update, Delete 비즈니스 로직 처리
+
+exports.createUser = async function (name, id, password, email, phone) {
+ try {
+ // [Validation Check]
+ // 아이디 중복 확인
+ const idRows = await userProvider.idCheck(id);
+ if (idRows.length > 0)
+ return errResponse(baseResponse.SIGNUP_REDUNDANT_NICKNAME);
+
+ // 이메일 중복 확인
+ // UserProvider에서 해당 이메일과 같은 User 목록을 받아서 emailRows에 저장한 후, 배열의 길이를 검사한다.
+ // -> 길이가 0 이상이면 이미 해당 이메일을 갖고 있는 User가 조회된다는 의미
+ const emailRows = await userProvider.emailCheck(email);
+ if (emailRows.length > 0)
+ return errResponse(baseResponse.SIGNUP_REDUNDANT_EMAIL);
+
+ // ------
+
+ // 비밀번호 암호화
+ // const hashedPassword = await crypto
+ // .createHash("sha512")
+ // .update(password)
+ // .digest("hex");
+
+ // 쿼리문에 사용할 변수 값을 배열 형태로 전달
+ // const insertUserInfoParams = [name, id, hashedPassword, email, phone];
+ const insertUserInfoParams = [name, id, password, email, phone];
+
+ const connection = await pool.getConnection(async (conn) => conn);
+
+ const userIdResult = await userDao.insertUserInfo(connection, insertUserInfoParams);
+ console.log(`추가된 회원id : ${userIdResult[0].insertId}`)
+ connection.release();
+ return response(baseResponse.SUCCESS);
+
+ } catch (err) {
+ logger.error(`App - createUser Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+
+// TODO: After 로그인 인증 방법 (JWT)
+exports.postSignIn = async function (id, password) {
+ try {
+ // [Validation Check]
+ // 닉네임 여부 확인
+ const idRows = await userProvider.idCheck(id);
+ if (idRows.length < 1) return errResponse(baseResponse.SIGNIN_NICKNAME_WRONG);
+
+ // ------
+
+ const selectId = idRows[0].id;
+ // console.log(selectId);
+
+ // 비밀번호 확인 (입력한 비밀번호를 암호화한 것과 DB에 저장된 비밀번호가 일치하는 지 확인함)
+ // const hashedPassword = await crypto
+ // .createHash("sha512")
+ // .update(password)
+ // .digest("hex");
+
+ // const selectUserPasswordParams = [selectEmail, hashedPassword];
+ const selectUserPasswordParams = [selectId, password];
+ const passwordRows = await userProvider.passwordCheck(selectUserPasswordParams);
+ // console.log(passwordRows);
+
+ // if (passwordRows[0].password !== hashedPassword) {
+ // return errResponse(baseResponse.SIGNIN_PASSWORD_WRONG);
+ // }
+ if (passwordRows.length < 1) return errResponse(baseResponse.SIGNIN_PASSWORD_WRONG);
+
+ // 계정 상태 확인
+ const userInfoRows = await userProvider.accountCheck(id);
+
+ if (userInfoRows[0].status === "INACTIVE") {
+ return errResponse(baseResponse.SIGNIN_INACTIVE_ACCOUNT);
+ } else if (userInfoRows[0].status === "DELETED") {
+ return errResponse(baseResponse.SIGNIN_WITHDRAWAL_ACCOUNT);
+ }
+
+ // console.log(userInfoRows[0].user_id) // DB의 userId
+
+ //토큰 생성 Service
+ let token = await jwt.sign(
+ {
+ user_id: userInfoRows[0].user_id,
+ id: id
+ }, // 토큰의 내용(payload)
+ secret_config.jwtsecret, // 비밀키
+ {
+ expiresIn: "365d",
+ subject: "userInfo",
+ } // 유효 기간 365일
+ );
+
+ return response(baseResponse.SUCCESS, {'user_id': userInfoRows[0].user_id, 'user_name': userInfoRows[0].user_name, 'id': id, 'jwt': token});
+
+ } catch (err) {
+ logger.error(`App - postSignIn Service error\n: ${err.message} \n${JSON.stringify(err)}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+};
+
+exports.editUser = async function (id, nickname) {
+ try {
+ console.log(id)
+ const connection = await pool.getConnection(async (conn) => conn);
+ const editUserResult = await userDao.updateUserInfo(connection, id, nickname)
+ connection.release();
+
+ return response(baseResponse.SUCCESS);
+
+ } catch (err) {
+ logger.error(`App - editUser Service error\n: ${err.message}`);
+ return errResponse(baseResponse.DB_ERROR);
+ }
+}
\ No newline at end of file
diff --git a/Frontend/.DS_Store b/Frontend/.DS_Store
new file mode 100644
index 00000000..68055ef6
Binary files /dev/null and b/Frontend/.DS_Store differ
diff --git a/Frontend/.gitignore b/Frontend/.gitignore
old mode 100644
new mode 100755
index 4d29575d..3cb8a3fc
--- a/Frontend/.gitignore
+++ b/Frontend/.gitignore
@@ -1,23 +1,147 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+# private
+/log/*
+/package-lock.json
+package-lock.json
+/.idea
+.idea
+./.idea
+.idea/*
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-# testing
-/coverage
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
-# production
-/build
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-# misc
-.DS_Store
-.env.local
+# 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
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://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/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
.env.development.local
.env.test.local
.env.production.local
+.env.local
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+.cache
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+Footer
+© 2022 GitHub, Inc.
+Footer navigation
+Terms
+Privacy
+Security
+Status
diff --git a/Frontend/README.md b/Frontend/README.md
deleted file mode 100644
index 58beeacc..00000000
--- a/Frontend/README.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# Getting Started with Create React App
-
-This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
-
-## Available Scripts
-
-In the project directory, you can run:
-
-### `npm start`
-
-Runs the app in the development mode.\
-Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
-
-The page will reload when you make changes.\
-You may also see any lint errors in the console.
-
-### `npm test`
-
-Launches the test runner in the interactive watch mode.\
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.\
-It correctly bundles React in production mode and optimizes the build for the best performance.
-
-The build is minified and the filenames include the hashes.\
-Your app is ready to be deployed!
-
-See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
-
-### `npm run eject`
-
-**Note: this is a one-way operation. Once you `eject`, you can't go back!**
-
-If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
-
-Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
-
-You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
-
-## Learn More
-
-You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
-
-To learn React, check out the [React documentation](https://reactjs.org/).
-
-### Code Splitting
-
-This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
-
-### Analyzing the Bundle Size
-
-This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
-
-### Making a Progressive Web App
-
-This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
-
-### Advanced Configuration
-
-This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
-
-### Deployment
-
-This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
-
-### `npm run build` fails to minify
-
-This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
diff --git a/Frontend/build/asset-manifest.json b/Frontend/build/asset-manifest.json
new file mode 100644
index 00000000..e9ce9da6
--- /dev/null
+++ b/Frontend/build/asset-manifest.json
@@ -0,0 +1,28 @@
+{
+ "files": {
+ "main.css": "/static/css/main.78ded201.css",
+ "main.js": "/static/js/main.29e802a0.js",
+ "static/media/NotoSansKR-Light.otf": "/static/media/NotoSansKR-Light.7d4ce2f6f92cffc70600.otf",
+ "static/media/NotoSansKR-Bold.otf": "/static/media/NotoSansKR-Bold.bbb4ca5df6c6540f4af8.otf",
+ "static/media/NotoSansKR-Regular.otf": "/static/media/NotoSansKR-Regular.bf54b090356010039bab.otf",
+ "static/media/NotoSansKR-Medium.otf": "/static/media/NotoSansKR-Medium.7def03a7e5e60c5e0704.otf",
+ "static/media/NotoSansKR-Bold.woff": "/static/media/NotoSansKR-Bold.bccfd5fe964d7e12ae44.woff",
+ "static/media/NotoSansKR-Regular.woff": "/static/media/NotoSansKR-Regular.957d49ad23632e4a9349.woff",
+ "static/media/NotoSansKR-Medium.woff": "/static/media/NotoSansKR-Medium.865a70c3c4af55e98eb5.woff",
+ "static/media/NotoSansKR-Light.woff": "/static/media/NotoSansKR-Light.45736342560b8c933202.woff",
+ "static/media/NotoSansKR-Regular.woff2": "/static/media/NotoSansKR-Regular.e95adf0e9aeddac43f42.woff2",
+ "static/media/NotoSansKR-Bold.woff2": "/static/media/NotoSansKR-Bold.a4ecc3f7a43f7d43ce24.woff2",
+ "static/media/NotoSansKR-Medium.woff2": "/static/media/NotoSansKR-Medium.e5d0c16f11ebac0c56d2.woff2",
+ "static/media/NotoSansKR-Light.woff2": "/static/media/NotoSansKR-Light.e2557c2be18ddd169ee9.woff2",
+ "static/media/spinner.gif": "/static/media/spinner.06dae33aed9397bec1be.gif",
+ "static/media/logo.png": "/static/media/logo.ab472640bd7542bff4c9.png",
+ "static/media/close.png": "/static/media/close.875a0b537b61d221eae5.png",
+ "index.html": "/index.html",
+ "main.78ded201.css.map": "/static/css/main.78ded201.css.map",
+ "main.29e802a0.js.map": "/static/js/main.29e802a0.js.map"
+ },
+ "entrypoints": [
+ "static/css/main.78ded201.css",
+ "static/js/main.29e802a0.js"
+ ]
+}
\ No newline at end of file
diff --git a/Frontend/build/index.html b/Frontend/build/index.html
new file mode 100644
index 00000000..4d8f1484
--- /dev/null
+++ b/Frontend/build/index.html
@@ -0,0 +1 @@
+
React App
\ No newline at end of file
diff --git a/Frontend/build/static/css/main.78ded201.css b/Frontend/build/static/css/main.78ded201.css
new file mode 100644
index 00000000..7434b397
--- /dev/null
+++ b/Frontend/build/static/css/main.78ded201.css
@@ -0,0 +1,9 @@
+body{height:100%;line-height:inherit;margin:0;padding:0}#root,html{font-family:Noto Sans CJK KR;font-style:normal;font-weight:light;height:100%}a{color:inherit;text-decoration:none}button{cursor:pointer}ul{-webkit-padding-start:0;list-style:none;padding-inline-start:0}@font-face{font-display:block;font-family:Noto Sans CJK KR;font-style:normal;font-weight:light;src:url(/static/media/NotoSansKR-Light.e2557c2be18ddd169ee9.woff2) format("woff2"),url(/static/media/NotoSansKR-Light.45736342560b8c933202.woff) format("woff"),url(/static/media/NotoSansKR-Light.7d4ce2f6f92cffc70600.otf) format("truetype")}@font-face{font-display:block;font-family:Noto Sans CJK KR;font-style:normal;font-weight:400;src:url(/static/media/NotoSansKR-Regular.e95adf0e9aeddac43f42.woff2) format("woff2"),url(/static/media/NotoSansKR-Regular.957d49ad23632e4a9349.woff) format("woff"),url(/static/media/NotoSansKR-Regular.bf54b090356010039bab.otf) format("truetype")}@font-face{font-display:block;font-family:Noto Sans CJK KR;font-style:normal;font-weight:medium;src:url(/static/media/NotoSansKR-Medium.e5d0c16f11ebac0c56d2.woff2) format("woff2"),url(/static/media/NotoSansKR-Medium.865a70c3c4af55e98eb5.woff) format("woff"),url(/static/media/NotoSansKR-Medium.7def03a7e5e60c5e0704.otf) format("truetype")}@font-face{font-display:block;font-family:Noto Sans CJK KR;font-style:normal;font-weight:700;src:url(/static/media/NotoSansKR-Bold.a4ecc3f7a43f7d43ce24.woff2) format("woff2"),url(/static/media/NotoSansKR-Bold.bccfd5fe964d7e12ae44.woff) format("woff"),url(/static/media/NotoSansKR-Bold.bbb4ca5df6c6540f4af8.otf) format("truetype")}.ql-editing{left:0;position:inherit}.ql-formats{line-height:1}.ql-snow .ql-picker.ql-header{width:125px!important}.ql-bubble .ql-editor{padding:10px}.ql-snow .ql-editor{padding-top:25px}.notion{caret-color:#37352f;color:#37352f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Apple Color Emoji,Arial,sans-serif,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5}.notion-column>*,.notion-page>*,.notion>*{padding:3px 0}.notion *{-webkit-margin-before:0;-webkit-margin-after:0;box-sizing:border-box;margin-block-end:0;margin-block-start:0}.notion-red{color:#e03e3e}.notion-pink{color:#ad1a72}.notion-blue{color:#0b6e99}.notion-purple{color:#6940a5}.notion-teal{color:#0f7b6c}.notion-yellow{color:#dfab01}.notion-orange{color:#d9730d}.notion-brown{color:#64473a}.notion-gray{color:#9b9a97}.notion-red_background{background-color:#fbe4e4}.notion-pink_background{background-color:#f4dfeb}.notion-blue_background{background-color:#ddebf1}.notion-purple_background{background-color:#eae4f2}.notion-teal_background{background-color:#ddedea}.notion-yellow_background{background-color:#fbf3db}.notion-orange_background{background-color:#faebdd}.notion-brown_background{background-color:#e9e5e3}.notion-gray_background{background-color:#ebeced}.notion-red_background_co{background-color:hsla(0,74%,94%,.3)}.notion-pink_background_co{background-color:rgba(244,223,235,.3)}.notion-blue_background_co{background-color:rgba(221,235,241,.3)}.notion-purple_background_co{background-color:rgba(234,228,242,.3)}.notion-teal_background_co{background-color:rgba(221,237,234,.3)}.notion-yellow_background_co{background-color:hsla(45,80%,92%,.3)}.notion-orange_background_co{background-color:hsla(29,74%,92%,.3)}.notion-brown_background_co{background-color:hsla(20,12%,90%,.3)}.notion-gray_background_co{background-color:hsla(210,5%,93%,.3)}.notion b{font-weight:600}.notion-title{font-size:2.5em;font-weight:700;margin-bottom:.25em;margin-top:.75em}.notion-h1,.notion-h2,.notion-h3{font-weight:600;line-height:1.3;padding:3px 2px}.notion-h1{font-size:1.875em;margin-top:1.4em}.notion-h1:first-child{margin-top:0}.notion-h2{font-size:1.5em;margin-top:1.1em}.notion-h3{font-size:1.25em;margin-top:1em}.notion-emoji{font-family:Apple Color Emoji,Arial,sans-serif,Segoe UI Emoji,Segoe UI Symbol}.notion-page-cover{display:block;height:30vh;min-height:30vh;object-fit:cover;padding:0;width:100%}.notion-page{margin:0 auto;max-width:708px;padding:0;width:100%}@media only screen and (max-width:730px){.notion-page{padding:0 2vw}}.notion-page-offset{margin-top:96px}span.notion-page-icon-cover{display:inline-block;font-size:78px;height:78px;line-height:1.1;margin-left:0;width:78px}span.notion-page-icon-offset{margin-top:-42px}img.notion-page-icon-cover{border-radius:3px;height:124px;margin:8px;width:124px}img.notion-page-icon-offset{margin-top:-80px}.notion-full-width{max-width:100%;padding:0 40px}.notion-small-text{font-size:14px}.notion-quote{border-left:3px solid;font-size:1.2em;margin:0;padding:.2em .9em;white-space:pre-wrap;word-break:break-word}.notion-hr{border-bottom-width:0;border-color:rgba(55,53,47,.09);border-top-width:1px;margin:6px 0;padding:0}.notion-link{color:inherit;text-decoration:underline;text-decoration-color:inherit;word-break:break-word}.notion-blank{margin-bottom:1px;margin-top:1px;min-height:1rem;padding:3px 2px}.notion-page-link{color:#37352f;display:flex;height:30px;margin:1px 0;text-decoration:none;transition:background .12s ease-in 0s}.notion-page-link:hover{background:rgba(55,53,47,.08)}.notion-page-icon{line-height:1.4;margin-left:2px;margin-right:4px}img.notion-page-icon{border-radius:3px;display:block;height:20px;object-fit:cover;width:20px}.notion-icon{color:rgba(55,53,47,.4);display:block;height:18px;width:18px}.notion-page-text{border-bottom:1px solid rgba(55,53,47,.16);font-weight:500;line-height:1.3;margin:1px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notion-inline-code{background:hsla(44,6%,50%,.15);border-radius:3px;color:#eb5757;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:85%;padding:.2em .4em}.notion-list{-webkit-margin-before:.6em;-webkit-margin-after:.6em;margin:0;margin-block-end:.6em;margin-block-start:.6em}.notion-list-disc{list-style-type:disc}.notion-list-disc,.notion-list-numbered{-webkit-padding-start:1.6em;margin-bottom:0;margin-top:0;padding-inline-start:1.6em}.notion-list-numbered{list-style-type:decimal}.notion-list-disc li{padding-left:.1em}.notion-list-numbered li{padding-left:.2em}.notion-list li{padding:4px 0;white-space:pre-wrap}.notion-list>.notion-text{margin-left:-1.6em;padding-left:0}.notion-asset-wrapper{margin:.5rem auto;max-width:100%}.notion-asset-wrapper>img{max-width:100%}.notion-asset-wrapper iframe{border:none}.notion-text{caret-color:#37352f;white-space:pre-wrap}.notion-block,.notion-text{padding:3px 2px}.notion .notion-code{font-size:85%}.notion-code{background:#f7f6f3;border-radius:3px;box-sizing:border-box;display:block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;margin:4px 0;overflow-x:scroll;padding:30px 16px 30px 20px;tab-size:2}.notion-column{padding-bottom:12px;padding-top:12px}.notion-column>:first-child{margin-left:0;margin-right:0;margin-top:0}.notion-column>:last-child{margin-bottom:0;margin-left:0;margin-right:0}.notion-bookmark,.notion-row{display:flex;overflow:hidden}.notion-bookmark{border:1px solid rgba(55,53,47,.16);border-radius:3px;box-sizing:border-box;margin:4px 0;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%}.notion-bookmark>div:first-child{color:#37352f;flex:4 1 180px;overflow:hidden;padding:12px 14px 14px;text-align:left}.notion-bookmark-title{font-size:14px;line-height:20px;margin-bottom:2px;min-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notion-bookmark-description{font-size:12px;height:32px;line-height:16px;opacity:.6;overflow:hidden}.notion-bookmark-link{display:flex;margin-top:6px}.notion-bookmark-link>img{height:16px;margin-right:6px;min-width:16px;width:16px}.notion-bookmark-link>div{color:#37352f;font-size:12px;line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notion-bookmark-image{flex:1 1 180px;position:relative}.notion-bookmark-image img{height:100%;object-fit:cover;position:absolute;width:100%}.notion-column .notion-bookmark-image{display:none}@media (max-width:640px){.notion-bookmark-image{display:none}.notion-row{flex-direction:column}.notion-column>*,.notion-row>*{width:100%!important}}.notion-spacer:last-child{display:none}.notion-image-inset{border-radius:1px;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.notion-image-caption{caret-color:#37352f;color:rgba(55,53,47,.6);font-size:14px;line-height:1.4;padding:6px 0;white-space:pre-wrap;word-break:break-word}.notion-callout{align-items:center;border-radius:3px;border-width:1px;box-sizing:border-box;display:inline-flex;margin:4px 0;padding:16px 16px 16px 12px;width:100%}.notion-callout-text{margin-left:8px;white-space:pre-line}.notion-toggle{padding:3px 2px}.notion-toggle>summary{cursor:pointer;outline:none}.notion-toggle>div{margin-left:1.1em}.notion-table,.notion-td,.notion-th{border:1px solid rgba(55,53,47,.09);border-collapse:collapse}.notion-table{border-left:none;border-right:none;border-spacing:0;white-space:nowrap;width:100%}.notion-td,.notion-th{font-size:14px;font-weight:400;line-height:1.5;min-height:1.5em;padding:.25em .5em;text-align:left}.notion-td.notion-bold{font-weight:500}.notion-th{color:rgba(55,53,47,.6);font-size:14px}.notion-td:first-child,.notion-th:first-child{border-left:0}.notion-td:last-child,.notion-th:last-child{border-right:0}.notion-gallery{grid-gap:16px;border-top:1px solid rgba(55,53,47,.16);display:grid;gap:16px;grid-auto-rows:1fr;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));padding-bottom:4px;padding-top:16px;position:relative}.notion-gallery-card{background:#fff;border-radius:3px;box-shadow:0 0 0 1px hsla(0,0%,6%,.1),0 2px 4px hsla(0,0%,6%,.1);color:inherit;display:block;height:100%;overflow:hidden;position:static;text-decoration:none;transition:background .1s ease-out 0s}.notion-gallery-content{font-size:12px;padding:8px 10px 6px;white-space:nowrap}.notion-gallery-data.is-first{caret-color:#37352f;font-size:14px;font-weight:500;line-height:1.5;min-height:21px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-word}.notion-page-header{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background:#fff;box-sizing:border-box;font-size:14px;height:45px;justify-content:space-between;line-height:1.5;line-height:1.2;max-width:100vw;min-height:45px;padding:0 12px;position:-webkit-sticky;position:sticky;top:0;width:100%}.notion-nav-breadcrumbs,.notion-page-header{align-items:center;display:flex;flex-direction:row}.notion-nav-breadcrumbs{flex-grow:0;height:100%;margin-right:8px;min-width:0}.notion-nav-breadcrumb{align-items:center;background:transparent;border-radius:3px;color:#37352f;cursor:pointer;display:inline-flex;flex-direction:row;justify-content:center;margin:1px 0;padding:4px 6px;text-decoration:none;transition:background .12s ease-in 0s;-webkit-user-select:none;user-select:none;white-space:nowrap}img.notion-nav-icon{height:18px!important;width:18px!important}.notion-nav-icon{color:#000;font-size:18px;line-height:1.1;margin-right:6px}.notion-nav-breadcrumb:not(.notion-nav-breadcrumb-active):hover{background:rgba(55,53,47,.08)}.notion-nav-breadcrumb:not(.notion-nav-breadcrumb-active):active{background:rgba(55,53,47,.16)}.notion-nav-breadcrumb.notion-nav-breadcrumb-active{cursor:default}.notion-nav-spacer{color:rgba(55,53,47,.4);margin:0 2px}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#ccc;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:1.5;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.HomeSidebar_sidebar__ldf1q{align-items:center;background-color:#f9f9f9;bottom:0;box-shadow:1px 0 3px 1px #e3e3e3;flex-direction:column;height:100%;left:0;position:fixed;text-align:center;top:0;width:15%;z-index:99}.HomeSidebar_logo__1FTCd{font-size:30px;height:120px}.HomeSidebar_logo__1FTCd:hover{cursor:pointer}.HomeSidebar_userProfile__hSRmR{align-items:center;border-bottom:1px solid #dbdbdb;border-top:1px solid #dbdbdb;padding:30px 0;text-align:center;width:100%}.HomeSidebar_userName__JSMrj{font-size:18px}.HomeSidebar_userEmail__6qWlG{color:gray;font-size:12px}.HomeSidebar_menu__YjdAu{padding:10px}.HomeSidebar_menuTitle__gzz-4{display:inline-block;font-size:15px;font-weight:700;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.HomeSidebar_menuContent__p0zqa{overflow:auto;padding-top:10px;width:100%}.HomeSidebar_menuItem__adC7I{align-content:center;align-items:center;border-radius:5px;color:dimgray;font-size:14px;height:40px;padding:5px}.HomeSidebar_menuItem__adC7I:hover{background-color:#e7e7e7;cursor:pointer}.HomeSidebar_myPage__yWb7-{border-top:1px solid #dbdbdb;bottom:0;color:dimgray;padding:20px;position:absolute;width:100%}.HomeSidebar_active__yix2w{align-content:center;align-items:center;background-color:#e7e7e7;border-radius:5px;color:dimgray;cursor:pointer;font-size:14px;height:40px;padding:5px;text-align:center}.HomeSidebar_atag__IEPne{height:30px;line-height:30px}.HomePage_body__Qcmz0{margin-left:14%;overflow-x:hidden;position:relative;width:86%}.HomePage_body__Qcmz0::-webkit-scrollbar{display:none}.HomePage_maindiv__2t0gp{display:flex;height:100%;margin:auto;padding:10px;width:101%}::-webkit-scrollbar{display:none}.HomePage_text__2XixT{margin:auto;overflow:scroll;width:100%}.HomePage_top__X4ChP{height:57px;right:0;top:0;width:100%}.HomePage_top__X4ChP,.HomePage_top__button__WNcDL{background-color:#fff;padding:5px;position:fixed;z-index:1}.HomePage_top__button__WNcDL{flex-direction:row;right:10px;top:10px}.HomePage_LetUse__5b8zH{align-items:center;background-color:#e7e7e7;height:60%;padding:130px 70px 30px 20px;text-align:center}.HomePage_forUse__wZWIm{height:150px}.HomePage_logo__kUDLi{font-size:30px;height:120px}.HomePage_useContent__7QAxz{padding:20px 0 100px}.HomePage_contributor__u5C48{border-top:1px solid #dbdbdb;bottom:0;padding:30px 0}.HomePage_contributorItem__jaGiU{font-family:-apple-system;font-size:17px;margin:10px 20px 20px 0}.MeetingBlock_block__n\+KqJ:hover{-webkit-animation:MeetingBlock_rotate_image__GGTU7 1s linear;animation:MeetingBlock_rotate_image__GGTU7 1s linear}@-webkit-keyframes MeetingBlock_rotate_image__GGTU7{to{-webkit-transform:rotateY(1turn);transform:rotateY(1turn)}}@keyframes MeetingBlock_rotate_image__GGTU7{to{-webkit-transform:rotateY(1turn);transform:rotateY(1turn)}}.MeetingBlock_hvrBounceIn__IlKeE{box-shadow:0 0 1px transparent;display:inline-block;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);transition-duration:1s;vertical-align:middle}.MeetingBlock_hvrBounceIn__IlKeE:active,.MeetingBlock_hvrBounceIn__IlKeE:focus,.MeetingBlock_hvrBounceIn__IlKeE:hover{-webkit-transform:scale(1.05);transform:scale(1.05);transition-timing-function:cubic-bezier(.47,2.02,.31,-.36)}.MeetingBlock_meetingBlock_buttons__sidVQ{padding-bottom:16px}.Meeting_meetingBlock__2zkCd{background-color:bisque;border:1px;border-radius:10px;clear:both;height:150px;margin:2px;padding:10px;width:300px}.Meeting_modalBG__XEqaU{align-items:center;background-color:rgba(0,0,0,.7);display:flex;height:100%;left:0;position:fixed;top:0;width:100%}#Meeting_closeimg__PW9ID{float:right}.Meeting_modalcover__u3bN3{background-color:#fff;border:1px;border-radius:10px;display:block;height:40%;margin:50% 20% 50% 43%;opacity:1;padding:20px;width:30%}.Meeting_meetingBlock_buttons__BejbJ{padding-bottom:16px}.Meeting_meetingInfo__ST9fm{padding-bottom:20px}.Meeting_date__TGyYr{font-size:16px}b{line-height:30px;width:20px}b,span{font-size:20px}.MeetingListPage_body__xMaiH{padding-left:15%}.MeetingListPage_listTitle__O1cLf{background:linear-gradient(0deg,rgba(255,217,0,.3) 40%,transparent 0);font-family:Noto Sans CJK KR;font-style:normal;font-weight:700;margin:25px auto;padding:0 10px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.MeetingListPage_content__e3omw{text-align:center}.MeetingListPage_makeNewMeetingBtn__\+k2vf{background-color:bisque;border:1px;border-radius:10px;height:150px;margin:5px;padding:10px;width:300px}.MeetingListPage_grid__9IVAd{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,auto));grid-template-rows:repeat(auto-fill,minmax(150px,160px));overflow:auto;padding:20px;position:absolute;width:100%}.MeetingListPage_gridscroll__FaeJ4{background-color:#dcdcdc;border-radius:5px;box-shadow:inset 0 2px 3px 2px #c5c5c5;display:inline-block;height:75vh;margin:20px;overflow:auto;position:relative;white-space:nowrap;width:85%}.MeetingListPage_searchGroup__a-vSm{display:flex;justify-content:center;margin:auto;position:relative;width:85%}.MeetingListPage_searchMeeting__ZTWRQ{background-color:#e9e9e9;border:none;border-radius:10px;height:30px;margin:0 10px;outline:none;padding:0 10px}.MeetingListPage_searchbar__0r7FV{padding:0 10px}.MeetingListPage_searchBtn__Zmkg5{background-color:#e9e9e9;border:none;border-radius:10px;height:30px;width:50px}.MeetingListPage_searchBtn__Zmkg5:hover{background-color:#c8c8c8}.MeetingListPage_searchMeeting__ZTWRQ:focus{outline:1px solid gray}.MeetingListPage_bombRightOut__7OZI2{-webkit-animation-name:MeetingListPage_bombRightOut__7OZI2;animation-name:MeetingListPage_bombRightOut__7OZI2}.MeetingListPage_hvrBounceIn__2FMC6{box-shadow:0 0 1px transparent;display:inline-block;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);transition-duration:1s;vertical-align:middle}.MeetingListPage_hvrBounceIn__2FMC6:active,.MeetingListPage_hvrBounceIn__2FMC6:focus,.MeetingListPage_hvrBounceIn__2FMC6:hover{box-shadow:#fffacd;-webkit-transform:scale(1.05);transform:scale(1.05);transition-timing-function:cubic-bezier(.47,2.02,.31,-.36)}.HistoryItem_historyItem__qBfCl{background-color:hsla(0,0%,100%,.5);border-radius:10px;box-shadow:1px 1px 2px .5px gray;margin-bottom:15px;width:100%}.HistoryItem_historyInfo__5THN\+:hover,.HistoryItem_toggle__TEr9n:hover{cursor:pointer}.HistoryItem_historyInfo__5THN\+{border-radius:10px 10px 0 0;display:flex;height:100%;padding:20px;width:100%}.HistoryItem_historyInfo__5THN\+.HistoryItem_clicked__Uq8z1{padding:20px 20px 10px}.HistoryItem_historyDetails__A9PQU{border-top:1px solid #bebebe;margin:0 20px;padding:10px 10px 20px 5px}.HistoryItem_clicked__Uq8z1{background-color:#fff}.HistoryItem_historyInfo__5THN\+>div{display:inline-block;font-family:Noto Sans CJK KR;font-style:normal;line-height:25px}.HistoryItem_date__R39fI{color:gray;float:left;font-size:12px;margin-right:10px;padding-left:5px}.HistoryItem_topic__NygjU{font-size:16px;font-weight:700}.HistoryItem_participants__lpiWw{font-size:13px;padding-bottom:10px}.HistoryItem_keywords__NEmzL{float:right;font-size:14px;font-weight:400;margin-left:auto}.HistoryItem_keyword__2xG7G{background-color:#ffedbb;border-radius:5px;font-size:12px;margin:3px;padding:5px 8px}.HistoryItem_toggle__TEr9n{font-family:Noto Sans CJK KR;font-size:15px;font-style:normal;font-weight:medium;padding:5px 0}.HistoryItem_toggle__TEr9n.HistoryItem_opened__CjJm3{border-bottom:1px solid #bebebe;font-weight:700}.MemoContents_memoContents__MIsmC{padding:15px}div{font-family:Noto Sans CJK KR;font-size:14px;font-style:normal;font-weight:light}.SummaryContents_userName__\+wIEb{font-weight:700}.SummaryContents_summaryContainer__5sGUo{display:flex;justify-content:space-between}.SummaryContents_userContent__Y3vQv{padding-top:10px}.SummaryContents_summaryTitle__8FtCC{font-weight:700;padding:5px 0;text-align:right}.SummaryContents_summaryContent__ts5-2{padding:5px 0;width:100%}.OriginalContent_originalTitle__nvq9Q{border-bottom:1px solid #b4b4b4;color:gray;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.OriginalContent_originalTitle__nvq9Q:hover{cursor:pointer}.OriginalContent_originalContent__tbbFF{padding-top:5px}.HistoryList_historyList__pTnH\+{background-color:#dcdcdc;border-radius:10px;box-shadow:inset 0 2px 3px 2px #c5c5c5;height:88vh;margin:0 auto;overflow-x:auto;padding:20px;white-space:nowrap;width:85%}.HistoryList_list__eB-gS{-webkit-padding-start:0;list-style:none;margin-block:0;padding-inline-start:0}.HistoryPage_historyTitle__c1lWL{background:linear-gradient(0deg,rgba(255,217,0,.3) 40%,transparent 0);font-family:Noto Sans CJK KR;font-style:normal;font-weight:700;margin:0 auto;padding:0 10px;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.HistoryPage_history__78IUm{padding-left:15%;padding-right:25%;position:relative;width:100%}.TimeLineList_timeline__DSz3B{align-items:center;bottom:0;box-shadow:1px 0 5px 1px #c8c8c8;display:flex;flex-direction:column;overflow:scroll;padding:2px;position:absolute;right:0;top:0;width:25%}.TimeLineList_date__dOdr-{color:gray;float:left;font-size:12px;padding-left:5px;width:120px}.TimeLineList_timeline__DSz3B h2{margin-bottom:0;padding-top:10px}.TimeLineList_timecontent__u-mUt{font-weight:700}.registerForm{height:40%;width:93%}.loginForm,.registerForm{align-items:center;display:flex;flex-direction:column;margin:auto;padding:10px;position:relative;-webkit-transform:translateY(20%);transform:translateY(20%)}.loginForm{height:20%;width:90%}.btndiv{display:flex;justify-content:space-between}.MemoList_memoLog__XyB0o{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:hsla(0,0%,92%,.7);border-radius:20px;box-shadow:1px 1px 3px 1px #868686;height:50%;overflow:auto;padding:10px;position:absolute;top:55px;width:calc(100% - 20px);z-index:99}.MemoList_backdrop__OyTsA{height:100vh;left:0;position:fixed;top:0;width:100%;z-index:10}.MemoList_memoList__MySPL{-webkit-padding-start:0;list-style:none;margin-block:0;padding-inline-start:0;padding:10px}.MemoList_zeroNote__gyleK{align-items:center;display:flex;height:100%;justify-content:center;padding:10px}.MemoItem_memoItem__DYqds{border-radius:10px;box-shadow:1px 1px 3px 1px gray;margin-bottom:10px;padding:10px 20px}.MemoItem_memoItem__DYqds:hover{background-color:hsla(0,0%,80%,.5)}.MemoItem_memoTopic__NprZN{font-family:Noto Sans CJK KR;font-size:17px;font-style:normal;font-weight:medium;padding-bottom:5px}.MemoItem_memoContent__xIAoY{border:1px solid #9b9b9b;border-radius:5px;color:#464646;font-family:Noto Sans CJK KR;font-style:normal;font-weight:thin;height:100px;margin:10px 0;overflow:auto}.MemoItem_memoDate__6v4Pf{color:gray;font-family:Noto Sans CJK KR;font-size:12px;font-style:normal;font-weight:light;padding-left:10px}.Memo_memoView__C7B2o{align-content:center;border:none;box-shadow:0 -1px 2px 2px rgba(46,46,46,.5);display:flex;flex-direction:column;height:100%;position:relative;width:50%}.Memo_memoTitle__9kObz{padding:10px}.Memo_memoArea__NEa\+1,.Memo_memoText__nR094{height:100%;width:100%}.Memo_memoText__nR094{background-color:initial;border:none;color:#373737;font-family:Noto Sans CJK KR;font-size:15px;font-style:normal;font-weight:light;letter-spacing:.5px;outline:none;padding:10px 40px 10px 20px;resize:none}.Memo_logBtn__wEnHb{height:30px}.Memo_selectedMemo__lrKmS{border-bottom:1px solid #d4d4d4;height:70%;overflow:auto;padding:0 20px}.Memo_memoTopic__imQOR{font-family:Noto Sans CJK KR;font-size:20px;font-style:normal;font-weight:700;padding-bottom:5px}.Memo_memoDate__6agCC{color:gray;font-size:12px;padding-left:10px}.Memo_memoContent__hdKRp,.Memo_memoDate__6agCC{font-family:Noto Sans CJK KR;font-style:normal;font-weight:light}.Memo_memoContent__hdKRp{color:#373737;font-size:15px;padding:5px 40px 5px 0}.Memo_closeBtn__QTqCM{background-color:hsla(0,0%,100%,0);border:none;float:right}.Memo_memoListBtn__FJkOh{background-color:#e9e9e9;border:none;border-radius:10px;box-shadow:1px 1px 1px .5px #bebebe;font-family:Noto Sans CJK KR;font-size:13px;font-style:normal;font-weight:medium;padding:8px}.Memo_clicked__Q2-GX,.Memo_memoListBtn__FJkOh:hover{background-color:hsla(0,0%,55%,.5)}
+
+/*!
+ * Quill Editor v1.3.7
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{height:1px;left:-100000px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{word-wrap:break-word;box-sizing:border-box;height:100%;line-height:1.42;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;margin:0;padding:0}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-increment:list-0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow .ql-toolbar:after,.ql-snow.ql-toolbar:after{clear:both;content:"";display:table}.ql-snow .ql-toolbar button,.ql-snow.ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow .ql-toolbar button svg,.ql-snow.ql-toolbar button svg{float:left;height:100%}.ql-snow .ql-toolbar button:active:hover,.ql-snow.ql-toolbar button:active:hover{outline:none}.ql-snow .ql-toolbar input.ql-image[type=file],.ql-snow.ql-toolbar input.ql-image[type=file]{display:none}.ql-snow .ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar button.ql-active,.ql-snow .ql-toolbar button:focus,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow.ql-toolbar button:focus,.ql-snow.ql-toolbar button:hover{color:#06c}.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill{fill:#06c}.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow .ql-toolbar button:hover:not(.ql-active),.ql-snow.ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;-webkit-transform:translateY(10px);transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{margin-bottom:5px;margin-top:5px;padding:5px 10px;white-space:pre-wrap}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;padding:2px 4px;width:24px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{margin-top:-9px;position:absolute;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-item:before,.ql-snow .ql-picker.ql-header .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-item:before,.ql-snow .ql-picker.ql-font .ql-picker-label:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-item:before,.ql-snow .ql-picker.ql-size .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{border:1px solid #ccc;display:none;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}.Controllers_controllers__MmmbW{align-items:center;background-color:hsla(0,0%,100%,.2);bottom:0;box-shadow:1px 0 3px -3px #464646;display:flex;height:55px;justify-content:space-between;left:0;position:absolute;width:100%}.Controllers_controllers__MmmbW .Controllers_controllers_col__7hP60{align-items:center;display:flex;height:100%;width:100%}.Controllers_controllers_col1__FFx-z{padding-left:50px;width:85%}.Controllers_controllers_col2__kh67p{width:15%}.Controllers_controllers__MmmbW .Controllers_buttons__yjWut{display:flex;justify-content:center}.Controllers_controllers__MmmbW .Controllers_buttons__yjWut button{background:none;border:none;border-radius:5px;margin-right:10px;padding:5px 15px;transition:all .2s ease-in-out}.Controllers_controllers__MmmbW .Controllers_leave__niDy2{border:1px solid #ff9c89;border-radius:10px;color:#ff9c89;font-size:14px;letter-spacing:1px;padding-right:10px;transition:all .2s ease-in-out}.Controllers_controllers__MmmbW .Controllers_leave__niDy2:hover{background-color:#ff9c89;border:1px solid #ff9c89;color:#fff}.StreamBox_streamBox__lyivy{background-color:#535353;height:100%;position:relative;width:50%}.StreamBox_streams__dHv8c{padding:10px 30px;width:100%}.StreamBox_streams__dHv8c video{border-radius:5px;height:225px;margin:10px;transform:rotateY(180deg);-webkit-transform:rotateY(180deg);-moz-transform:rotateY(180deg);width:300px}.StreamBox_streams__dHv8c .StreamBox_people1__znbTh{height:70%;width:70%}.StreamBox_streams__dHv8c .StreamBox_people2__pCGAe{height:47%;width:47%}.StreamBox_streams__dHv8c .StreamBox_people3__WOkHN,.StreamBox_streams__dHv8c .StreamBox_people4__VSL3K{height:42%;width:45%}.StreamBox_streams__dHv8c .StreamBox_people5__86Y5h,.StreamBox_streams__dHv8c .StreamBox_people6__Dqi2a{height:32%;width:32%}.StreamBox_streams__dHv8c .StreamBox_userNickname__7eiNl{color:#fff;font-size:18px;font-weight:500;letter-spacing:1px;margin-top:5px;text-align:center}.StreamBox_speakerIcon__NqDzH{font-size:20px;height:50px;line-height:50px;margin:0 10px}.StreamBox_sttBox__lTHj-{bottom:70px;display:flex;position:absolute;width:100%}.StreamBox_sttText__5iplr{color:#535353;font-size:13px;height:50px;letter-spacing:1px;margin-right:20px;padding:10px 15px;width:100%}.StreamBox_meetingLog__qsnHF,.StreamBox_sttText__5iplr{background-color:hsla(0,0%,100%,.7);border-radius:10px;overflow:auto}.StreamBox_meetingLog__qsnHF{height:32%;margin:10px 20px;padding:20px}.StreamBox_logOn__PEPkw{height:340px;padding:0 110px}.StreamBox_logOn__PEPkw video{height:150px;width:200px}.StreamBox_closeBtn__wb4JH{background-color:hsla(0,0%,100%,0);border:none;float:right}.StreamBox_meetingTopic__zPzKS{font-family:Noto Sans CJK KR;font-size:18px;font-style:normal;font-weight:700;padding-bottom:5px}.StreamBox_meetingDate__Fi6l8{color:gray;font-family:Noto Sans CJK KR;font-size:12px;font-style:normal;font-weight:light;padding-left:10px}.StreamBox_zeroNote__T32J-{padding:10px}.MeetingHeader_meetingHeader__tHb2B{background-color:hsla(0,0%,100%,.2);box-shadow:0 4px 3px -3px #464646;display:flex;justify-content:space-between;line-height:35px;padding:10px}.MeetingHeader_roomName__O5RSI{background-color:rgba(0,0,0,.3);border-radius:10px;color:#fff;font-size:16px;padding:0 10px}.MeetingHeader_roomName__O5RSI:hover{background-color:rgba(0,0,0,.5);cursor:pointer}.MeetingHeader_topicForm__K90EC input{background-color:rgba(0,0,0,.5);border:none;border-radius:10px;color:#fff;font-size:15px;height:35px;margin:0 10px;outline:none;padding:0 10px;text-align:center;width:200px}.MeetingHeader_topicForm__K90EC input:disabled{font-weight:700}.MeetingHeader_topicForm__K90EC input:focus{border-bottom:1px solid gray}.MeetingHeader_topicForm__K90EC{line-height:35px}.MeetingHeader_topicForm__K90EC>button{background-color:hsla(0,0%,100%,0);border:none;border-radius:10px;height:35px;width:50px}.MeetingHeader_topicForm__K90EC>button:hover{background-color:hsla(0,0%,100%,.3)}.MeetingLog_meetingLog__\+IXoI{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:hsla(0,0%,100%,.7);border-radius:20px;box-shadow:1px 1px 3px 1px #3e3e3e;height:50%;margin:10px;overflow:auto;padding:10px;position:absolute;top:55px;width:50%;z-index:99}.MeetingLog_backdrop__bKolz{height:100vh;left:0;position:fixed;top:0;width:100%;z-index:10}.MeetingLog_zeroNote__V7a45{align-items:center;display:flex;height:100%;justify-content:center;padding:10px}.MeetingLog_logList__t\+Dw3{margin:10px 0;padding:0 10px}.MeetingLogItem_logItem__jlyxZ{border-radius:10px;box-shadow:1px 1px 3px 1px #777;margin-bottom:10px;padding:10px 20px}.MeetingLogItem_logItem__jlyxZ:hover{background-color:hsla(0,0%,58%,.5)}.MeetingLogItem_topic__Cx-rq{font-family:Noto Sans CJK KR;font-size:16px;font-style:normal;font-weight:medium;padding-bottom:5px}.MeetingLogItem_date__3wt8g{color:#3c3c3c;font-family:Noto Sans CJK KR;font-size:12px;font-style:normal;font-weight:light;padding-left:10px}.Loading_loading__ja9R\+{align-items:center;background:#ffffffb7;display:flex;flex-direction:column;height:100vh;justify-content:center;left:0;position:absolute;top:0;width:100vw;z-index:999}.Loading_loadingText__nMbIe{font-size:17px;text-align:center}.MeetingRoomPage_meetingRoomPage__1xljU{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.Sidebar_sidebar__Ejtsl{align-items:center;background-color:#f9f9f9;bottom:0;box-shadow:1px 0 3px 1px #e3e3e3;display:flex;flex-direction:column;height:100%;left:0;position:absolute;text-align:center;top:0;width:15%;z-index:99}.Sidebar_logo__qmtHS{font-size:30px;height:120px}.Sidebar_logo__qmtHS:hover{cursor:pointer}.Sidebar_userProfile__7ygc5{border-bottom:1px solid #dbdbdb;border-top:1px solid #dbdbdb;padding:20px 0;text-align:center;width:100%}.Sidebar_userName__yzPfk{font-size:18px}.Sidebar_userEmail__ka\+GL{color:gray;font-size:12px;margin-top:3px}.Sidebar_menu__WJogG{width:100%}.Sidebar_menuTitle__K5C-c{display:inline-block;font-size:15px;font-weight:700;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.Sidebar_menuContent__82V7z{overflow:auto;padding-top:10px;width:100%}.Sidebar_meeting__DmZ8C{border-radius:5px;color:dimgray;font-size:14px;height:30px;line-height:30px;padding:0 20px 8px}.Sidebar_meeting__DmZ8C:hover{background-color:#e7e7e7;cursor:pointer}.Sidebar_myPage__evV3w{border-top:1px solid #dbdbdb;bottom:0;color:dimgray;padding:20px;position:absolute;width:100%}.LogoutBtn_logoutBtn__6yX2o{margin-top:10px}.LogoutBtn_btn__Oof5O{background-color:#fff;border:1px solid #ff9c89;border-radius:5px;color:#ff9c89;font-weight:700;padding:5px 10px}
+/*# sourceMappingURL=main.78ded201.css.map*/
\ No newline at end of file
diff --git a/Frontend/build/static/css/main.78ded201.css.map b/Frontend/build/static/css/main.78ded201.css.map
new file mode 100644
index 00000000..1db2f8c5
--- /dev/null
+++ b/Frontend/build/static/css/main.78ded201.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/main.78ded201.css","mappings":"AAAA,KAGE,WAAY,CACZ,mBAAoB,CAHpB,QAAS,CACT,SAGF,CAEA,WAGE,4BAA+B,CAC/B,iBAAkB,CAClB,iBAAkB,CAHlB,WAIF,CAEA,EAEE,aAAc,CADd,oBAEF,CAEA,OACE,cACF,CAEA,GAEE,uBAAuB,CADvB,eAAgB,CAChB,sBACF,CAEA,WAOE,kBAAmB,CANnB,4BAA+B,CAC/B,iBAAkB,CAClB,iBAAkB,CAClB,+OAIF,CAEA,WAOE,kBAAmB,CANnB,4BAA+B,CAC/B,iBAAkB,CAClB,eAAmB,CACnB,qPAIF,CAEA,WAOE,kBAAmB,CANnB,4BAA+B,CAC/B,iBAAkB,CAClB,kBAAmB,CACnB,kPAIF,CAEA,WAOE,kBAAmB,CANnB,4BAA+B,CAC/B,iBAAkB,CAClB,eAAiB,CACjB,4OAIF,CAEA,YAEE,MAAO,CADP,gBAEF,CAEA,YACE,aACF,CAEA,8BACE,qBACF,CAEA,sBACE,YACF,CAEA,oBACE,gBACF,CCxFA,QAIE,mBAA4B,CAD5B,aAAsB,CAEtB,iIAC6E,CAL7E,cAAe,CACf,eAKF,CAEA,0CAGE,aACF,CAEA,UAEE,uBAAuB,CACvB,sBAAqB,CAFrB,qBAAsB,CAEtB,kBAAqB,CADrB,oBAEF,CAEA,YACE,aACF,CACA,aACE,aACF,CACA,aACE,aACF,CACA,eACE,aACF,CACA,aACE,aACF,CACA,eACE,aACF,CACA,eACE,aACF,CACA,cACE,aACF,CACA,aACE,aACF,CACA,uBACE,wBACF,CACA,wBACE,wBACF,CACA,wBACE,wBACF,CACA,0BACE,wBACF,CACA,wBACE,wBACF,CACA,0BACE,wBACF,CACA,0BACE,wBACF,CACA,yBACE,wBACF,CACA,wBACE,wBACF,CACA,0BACE,mCACF,CACA,2BACE,qCACF,CACA,2BACE,qCACF,CACA,6BACE,qCACF,CACA,2BACE,qCACF,CACA,6BACE,oCACF,CACA,6BACE,oCACF,CACA,4BACE,oCACF,CACA,2BACE,oCACF,CAEA,UACE,eACF,CAEA,cACE,eAAgB,CAChB,eAAgB,CAEhB,mBAAqB,CADrB,gBAEF,CAEA,iCAGE,eAAgB,CAChB,eAAgB,CAChB,eACF,CAEA,WACE,iBAAkB,CAClB,gBACF,CACA,uBACE,YACF,CACA,WACE,eAAgB,CAChB,gBACF,CACA,WACE,gBAAiB,CACjB,cACF,CACA,cACE,6EAEF,CACA,mBACE,aAAc,CAGd,WAAY,CACZ,eAAgB,CAHhB,gBAAiB,CAIjB,SAAU,CAHV,UAIF,CAEA,aAEE,aAAc,CACd,eAAgB,CAFhB,SAAU,CAGV,UACF,CAEA,yCACE,aACE,aACF,CACF,CAEA,oBACE,eACF,CAEA,4BAIE,oBAAqB,CADrB,cAAe,CAFf,WAAY,CAIZ,eAAgB,CAChB,aAAgB,CAJhB,UAKF,CAEA,6BACE,gBACF,CAEA,2BACE,iBAAkB,CAElB,YAAa,CACb,UAAW,CAFX,WAGF,CAEA,4BACE,gBACF,CAEA,mBAEE,cAAe,CADf,cAEF,CAEA,mBACE,cACF,CACA,cAGE,qBAAmC,CAGnC,eAAgB,CADhB,QAAS,CADT,iBAAoB,CAHpB,oBAAqB,CACrB,qBAKF,CACA,WAIE,qBAAsB,CACtB,+BAAoC,CAFpC,oBAAqB,CAFrB,YAAe,CACf,SAIF,CACA,aACE,aAAc,CAEd,yBAA0B,CAC1B,6BAA8B,CAF9B,qBAGF,CACA,cAIE,iBAAkB,CADlB,cAAe,CAFf,eAAgB,CAChB,eAGF,CACA,kBAEE,aAAsB,CADtB,YAAa,CAGb,WAAY,CACZ,YAAe,CAFf,oBAAqB,CAGrB,qCACF,CACA,wBACE,6BACF,CAEA,kBACE,eAAgB,CAEhB,eAAgB,CADhB,gBAEF,CACA,qBAGE,iBAAkB,CAFlB,aAAc,CAId,WAAY,CAHZ,gBAAiB,CAEjB,UAEF,CAEA,aAIE,uBAA4B,CAH5B,aAAc,CAEd,WAAY,CADZ,UAGF,CAEA,kBAME,0CAA+C,CAF/C,eAAgB,CAChB,eAAgB,CAEhB,YAAe,CALf,eAAgB,CAChB,sBAAuB,CAFvB,kBAOF,CAEA,oBAGE,8BAAqC,CACrC,iBAAkB,CAHlB,aAAc,CAKd,2EACW,CAFX,aAAc,CAHd,iBAMF,CAEA,aAEE,0BAAyB,CACzB,yBAAuB,CAFvB,QAAS,CAET,qBAAuB,CADvB,uBAEF,CAEA,kBACE,oBAIF,CACA,wCAJE,2BAA2B,CAE3B,eAAkB,CADlB,YAAe,CADf,0BASF,CALA,sBACE,uBAIF,CAEA,qBACE,iBACF,CAEA,yBACE,iBACF,CAEA,gBACE,aAAgB,CAChB,oBACF,CAEA,0BACE,kBAAmB,CACnB,cACF,CAEA,sBACE,iBAA0B,CAC1B,cACF,CAEA,0BACE,cACF,CAEA,6BACE,WACF,CAEA,aAEE,mBAA4B,CAD5B,oBAGF,CACA,2BAFE,eAIF,CAEA,qBACE,aACF,CAEA,aAQE,kBAA8B,CAL9B,iBAAkB,CAGlB,qBAAsB,CADtB,aAAc,CAId,2EACW,CARX,YAAa,CAKb,iBAAkB,CANlB,2BAA4B,CAG5B,UAOF,CAEA,eAEE,mBAAoB,CADpB,gBAEF,CAEA,4BAEE,aAAc,CACd,cAAe,CAFf,YAGF,CAEA,2BAGE,eAAgB,CAFhB,aAAc,CACd,cAEF,CAOA,6BAJE,YAAa,CACb,eAaF,CAVA,iBAKE,mCAAwC,CACxC,iBAAkB,CAHlB,qBAAsB,CAFtB,YAAa,CAGb,oBAAqB,CAKrB,wBAAiB,CAAjB,gBAAiB,CAPjB,UAQF,CAEA,iCAKE,aAAsB,CAJtB,cAAe,CAEf,eAAgB,CADhB,sBAAuB,CAEvB,eAEF,CAEA,uBACE,cAAe,CACf,gBAAiB,CAKjB,iBAAkB,CADlB,eAAgB,CAFhB,eAAgB,CAChB,sBAAuB,CAFvB,kBAKF,CAEA,6BACE,cAAe,CAGf,WAAY,CAFZ,gBAAiB,CACjB,UAAY,CAEZ,eACF,CAEA,sBACE,YAAa,CACb,cACF,CAEA,0BAEE,WAAY,CAEZ,gBAAiB,CADjB,cAAe,CAFf,UAIF,CAEA,0BAGE,aAAsB,CAFtB,cAAe,CACf,gBAAiB,CAGjB,eAAgB,CAChB,sBAAuB,CAFvB,kBAGF,CAEA,uBACE,cAAe,CACf,iBACF,CAEA,2BAGE,WAAY,CAFZ,gBAAiB,CAGjB,iBAAkB,CAFlB,UAGF,CAEA,sCACE,YACF,CAEA,yBACE,uBACE,YACF,CAEA,YACE,qBACF,CAEA,+BAEE,oBACF,CACF,CAEA,0BACE,YACF,CAEA,oBAQE,iBAAkB,CAHlB,QAAS,CAET,WAAY,CALZ,MAAO,CADP,iBAAkB,CAGlB,OAAQ,CADR,KAAM,CAGN,UAGF,CAEA,sBAIE,mBAA4B,CAG5B,uBAA4B,CAF5B,cAAe,CACf,eAAgB,CALhB,aAAgB,CAChB,oBAAqB,CACrB,qBAKF,CAEA,gBAME,kBAAmB,CAFnB,iBAAkB,CAClB,gBAAiB,CAEjB,qBAAsB,CALtB,mBAAoB,CAMpB,YAAa,CAPb,2BAA4B,CAE5B,UAMF,CACA,qBACE,eAAgB,CAChB,oBACF,CAEA,eACE,eACF,CACA,uBACE,cAAe,CACf,YACF,CACA,mBACE,iBACF,CAEA,oCAGE,mCAAwC,CACxC,wBACF,CAEA,cAEE,gBAAiB,CACjB,iBAAkB,CAClB,gBAAmB,CACnB,kBAAmB,CAJnB,UAKF,CAEA,sBAOE,cAAe,CALf,eAAmB,CAEnB,eAAgB,CAChB,gBAAiB,CAFjB,kBAAqB,CAGrB,eAEF,CAEA,uBACE,eACF,CAEA,WACE,uBAA4B,CAC5B,cACF,CAEA,8CAEE,aACF,CAEA,4CAEE,cACF,CAEA,gBAKE,aAAS,CACT,uCAA4C,CAL5C,YAAa,CAIb,QAAS,CADT,kBAAmB,CADnB,yDAA4D,CAK5D,kBAAmB,CADnB,gBAAiB,CALjB,iBAOF,CACA,qBAOE,eAAiB,CADjB,iBAAkB,CAFlB,gEACmC,CAHnC,aAAc,CADd,aAAc,CAUd,WAAY,CAHZ,eAAgB,CAEhB,eAAgB,CAPhB,oBAAqB,CAMrB,qCAGF,CAEA,wBAEE,cAAe,CADf,oBAAqB,CAErB,kBACF,CAEA,8BAGE,mBAA4B,CAC5B,cAAe,CAGf,eAAgB,CAFhB,eAAgB,CAChB,eAAgB,CAEhB,eAAgB,CAChB,sBAAuB,CARvB,kBAAmB,CACnB,qBAQF,CAEA,oBAcE,6BAAsB,CAAtB,0BAAsB,CAAtB,qBAAsB,CANtB,eAAgB,CAEhB,qBAAsB,CAOtB,cAAe,CAZf,WAAY,CAMZ,6BAA8B,CAI9B,eAAgB,CAChB,eAAgB,CAZhB,eAAgB,CAEhB,eAAgB,CAOhB,cAAe,CAZf,uBAAgB,CAAhB,eAAgB,CAChB,KAAM,CACN,UAeF,CAEA,4CARE,kBAAmB,CALnB,YAAa,CAEb,kBAmBF,CARA,wBAKE,WAAY,CADZ,WAAY,CAGZ,gBAAiB,CADjB,WAEF,CAEA,uBAGE,kBAAmB,CAWnB,sBAAuB,CAHvB,iBAAkB,CAJlB,aAAsB,CAQtB,cAAe,CAdf,mBAAoB,CACpB,kBAAmB,CAEnB,sBAAuB,CAKvB,YAAe,CACf,eAAgB,CAFhB,oBAAqB,CAIrB,qCAAuC,CACvC,wBAAiB,CAAjB,gBAAiB,CARjB,kBAWF,CAEA,oBAEE,qBAAuB,CADvB,oBAEF,CAEA,iBAIE,UAAW,CAHX,cAAe,CAEf,eAAgB,CADhB,gBAGF,CAEA,gEACE,6BACF,CAEA,iEACE,6BACF,CAEA,oDACE,cACF,CAEA,mBAEE,uBAA4B,CAD5B,YAEF,CChqBA,6CAUC,gBAAiB,CAPjB,eAAgB,CADhB,UAAW,CAEX,6DAAsE,CACtE,aAAc,CAYd,oBAAqB,CAGrB,YAAa,CATb,eAAgB,CAIhB,UAAW,CATX,eAAgB,CAChB,eAAgB,CAEhB,iBAAkB,CADlB,mBAcD,CAGA,sBAEC,aAAc,CACd,aAAc,CAFd,WAGD,CAEA,uDAEC,kBACD,CAGA,iCAEC,kBAAmB,CADnB,YAAa,CAEb,kBACD,CAEA,8EAKC,UACD,CAEA,mBACC,UACD,CAEA,4DAIC,aACD,CAEA,qBACC,aACD,CAEA,6CAGC,aACD,CAEA,gEAIC,aACD,CAEA,6EAKC,aACD,CAEA,yEAKC,aACD,CAEA,yCAGC,aACD,CAEA,6BAEC,eACD,CACA,cACC,iBACD,CAEA,cACC,WACD,CAEA,gBACC,WACD,CCzHA,4BAIE,kBAAmB,CAQnB,wBAAyB,CAJzB,QAAS,CANT,gCAA4C,CAC5C,qBAAsB,CAGtB,WAAY,CAGZ,MAAO,CARP,cAAe,CASf,iBAAkB,CAHlB,KAAM,CAFN,SAAU,CAMV,UAEF,CAEA,yBACE,cAAe,CACf,YACF,CAEA,+BACE,cACF,CAEA,gCAIE,kBAAmB,CAEnB,+BAA2C,CAD3C,4BAAwC,CAJxC,cAAe,CAEf,iBAAkB,CADlB,UAKF,CAEA,6BACE,cACF,CAEA,8BAEE,UAAW,CADX,cAEF,CAEA,yBACE,YACF,CAEA,8BACE,oBAAqB,CAErB,cAAe,CACf,eAAiB,CAFjB,yBAAkB,CAAlB,sBAAkB,CAAlB,iBAGF,CAEA,gCAGE,aAAc,CADd,gBAAiB,CADjB,UAGF,CAEA,6BAOI,oBAAqB,CADrB,kBAAmB,CAFnB,iBAAkB,CAClB,aAAc,CAHd,cAAe,CADf,WAAY,CAEZ,WAKJ,CAEA,mCAEE,wBAAyB,CADzB,cAEF,CAEA,2BAEI,4BAAwC,CAExC,QAAS,CAET,aAAc,CADd,YAAa,CAFb,iBAAkB,CAFlB,UAMJ,CAEA,2BAMI,oBAAqB,CACrB,kBAAmB,CAGnB,wBAAyB,CANzB,iBAAkB,CAClB,aAAc,CAId,cAAe,CAPf,cAAe,CADf,WAAY,CAEZ,WAAY,CAKZ,iBAIJ,CACA,yBACI,WAAY,CACZ,gBACJ,CCnGA,sBAEI,eAAgB,CAEhB,iBAAkB,CADlB,iBAAkB,CAFlB,SAKJ,CACA,yCACI,YACJ,CAEA,yBACI,YAAa,CAEb,WAAY,CACZ,WAAY,CAFZ,YAAa,CAGb,UAEJ,CACA,oBACI,YACJ,CACA,sBAEI,WAAY,CADZ,eAAgB,CAEhB,UACJ,CAEA,qBAGI,WAAY,CAEZ,OAAQ,CADR,KAAM,CAHN,UASJ,CAEA,kDAJI,qBAAuB,CADvB,WAAY,CALZ,cAAe,CAIf,SAcJ,CARA,6BAEI,kBAAmB,CAEnB,UAAW,CADX,QAKJ,CAEA,wBACI,kBAAmB,CAGnB,wBAAyB,CADzB,UAAW,CAEX,4BAA6B,CAH7B,iBAMJ,CACA,wBACI,YACJ,CACA,sBACI,cAAe,CACf,YACJ,CAEA,4BACI,oBACJ,CAEA,6BAEI,4BAAwC,CACxC,QAAS,CAFT,cAIJ,CAEA,iCAEI,yBAA0B,CAD1B,cAAe,CAEf,uBACJ,CClFA,kCACI,4DAAiC,CAAjC,oDACJ,CACA,oDACI,GACI,gCAA0B,CAA1B,wBACJ,CACJ,CAJA,4CACI,GACI,gCAA0B,CAA1B,wBACJ,CACJ,CACA,iCAII,8BAAoC,CAHpC,oBAAqB,CAErB,gDAAyC,CAAzC,wCAAyC,CAEzC,sBAAuB,CAHvB,qBAIJ,CACA,sHACI,6BAAsB,CAAtB,qBAAsB,CACtB,0DACJ,CAEA,0CACI,mBACJ,CCtBA,6BAQE,uBAAwB,CAJxB,UAAW,CACX,kBAAmB,CAJnB,UAAW,CAEX,YAAa,CAIb,UAAW,CADX,YAAa,CAJb,WAOF,CAEA,wBAOE,kBAAmB,CACnB,+BAAoC,CAFpC,YAAa,CADb,WAAY,CAFZ,MAAO,CAFP,cAAe,CACf,KAAM,CAEN,UAKF,CACA,yBACE,WACF,CAEA,2BAIE,qBAAuB,CACvB,UAAW,CACX,kBAAmB,CAGnB,aAAc,CANd,UAAW,CAFX,sBAAuB,CAOvB,SAAU,CADV,YAAa,CALb,SAQF,CAEA,qCACE,mBACF,CAEA,4BACE,mBACF,CAEA,qBACE,cACF,CC/CA,EAEE,gBAAiB,CACjB,UACF,CACA,OAJE,cAMF,CAEA,6BACE,gBACF,CAEA,kCAOE,qEAIC,CAPD,4BAA+B,CAC/B,iBAAkB,CAClB,eAAiB,CAHjB,gBAAiB,CAFjB,cAAe,CACf,yBAAkB,CAAlB,sBAAkB,CAAlB,iBAUF,CAEA,gCACE,iBACF,CAEA,2CAOE,uBAAwB,CAJxB,UAAW,CACX,kBAAmB,CAFnB,YAAa,CAIb,UAAW,CADX,YAAa,CAJb,WAOF,CAEA,6BAME,aAAS,CAHT,YAAa,CAGb,QAAS,CAFT,0DAA6D,CAC7D,wDAA2D,CAG3D,aAAc,CADd,YAAa,CANb,iBAAkB,CAClB,UAOF,CAEA,mCAIE,wBAA2B,CAK3B,iBAAkB,CAClB,sCAAkD,CAHlD,oBAAqB,CAJrB,WAAY,CAKZ,WAAY,CAHZ,aAAc,CAJd,iBAAkB,CAKlB,kBAAmB,CAJnB,SASF,CAEA,oCAGE,YAAa,CAEb,sBAAuB,CADvB,WAAY,CAHZ,iBAAkB,CAClB,SAIF,CAEA,sCAEE,wBAAoC,CADpC,WAAY,CAEZ,kBAAmB,CACnB,WAAY,CAEZ,aAAc,CADd,YAAa,CAEb,cACF,CAEA,kCACE,cACF,CAEA,kCAGE,wBAAoC,CAEpC,WAAY,CADZ,kBAAmB,CAFnB,WAAY,CADZ,UAKF,CAEA,wCACE,wBACF,CAEA,4CACE,sBACF,CACA,qCACE,0DAAoC,CACpC,kDACF,CAEA,oCAIE,8BAAoC,CAHpC,oBAAqB,CAErB,gDAAyC,CAAzC,wCAAyC,CAEzC,sBAAuB,CAHvB,qBAIF,CACA,+HAKE,kBAAwB,CAFxB,6BAAsB,CAAtB,qBAAsB,CACtB,0DAEF,CCxHA,gCAKE,mCAA0C,CAD1C,kBAAmB,CADnB,gCAAkC,CADlC,kBAAmB,CADnB,UAKF,CAEA,wEAEE,cACF,CAEA,iCAKE,2BAA4B,CAJ5B,YAAa,CAEb,WAAY,CACZ,YAAa,CAFb,UAIF,CAEA,4DACE,sBACF,CAEA,mCACE,4BAAwC,CACxC,aAAc,CACd,0BACF,CAEA,4BACE,qBACF,CAEA,qCACE,oBAAqB,CACrB,4BAA+B,CAC/B,iBAAkB,CAClB,gBACF,CAEA,yBAGE,UAAW,CAFX,UAAW,CACX,cAAe,CAGf,iBAAkB,CADlB,gBAEF,CAEA,0BACE,cAAe,CACf,eACF,CAEA,iCACE,cAAe,CACf,mBACF,CAEA,6BACE,WAAY,CAEZ,cAAe,CADf,eAAmB,CAEnB,gBACF,CAEA,4BAKE,wBAAoC,CAHpC,iBAAkB,CADlB,cAAe,CAGf,UAAW,CADX,eAGF,CAEA,2BAEE,4BAA+B,CAD/B,cAAe,CAEf,iBAAkB,CAClB,kBAAmB,CACnB,aACF,CAEA,qDAEE,+BAA2C,CAD3C,eAEF,CCtFA,kCACE,YACF,CCFA,IAEE,4BAA+B,CAD/B,cAAe,CAEf,iBAAkB,CAClB,iBACF,CAEA,kCACE,eACF,CAEA,yCACE,YAAa,CACb,6BACF,CAEA,oCACE,gBACF,CAEA,qCACE,eAAiB,CACjB,aAAc,CACd,gBACF,CAEA,uCACE,aAAc,CACd,UACF,CC7BA,sCAGE,+BAA2C,CAD3C,UAAW,CADX,yBAAkB,CAAlB,sBAAkB,CAAlB,iBAGF,CAEA,4CACE,cACF,CAEA,wCACE,eACF,CCZA,iCAIE,wBAA2B,CAE3B,kBAAmB,CAGnB,sCAAkD,CANlD,WAAY,CADZ,aAAc,CAMd,eAAgB,CADhB,YAAa,CAFb,kBAAmB,CAJnB,SASF,CAEA,yBAEE,uBAAyB,CADzB,eAAgB,CAEhB,cAAe,CADf,sBAEF,CChBA,iCAQE,qEAIC,CARD,4BAA+B,CAC/B,iBAAkB,CAClB,eAAiB,CALjB,aAAc,CAEd,cAAe,CAIf,iBAAkB,CALlB,yBAAkB,CAAlB,sBAAkB,CAAlB,iBAWF,CAEA,4BACE,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,UACF,CCpBA,8BAKE,kBAAmB,CAInB,QAAS,CANT,gCAA4C,CAD5C,YAAa,CAEb,qBAAsB,CAOtB,eAAgB,CAVhB,WAAY,CAMZ,iBAAkB,CAGlB,OAAQ,CAFR,KAAM,CAFN,SAMF,CACA,0BAIE,UAAW,CAFX,UAAW,CACX,cAAe,CAEf,gBAAiB,CAJjB,WAKF,CAEA,iCAEE,eAAgB,CADhB,gBAEF,CAEA,iCACE,eACF,CC5BA,cAEI,UAAW,CADX,SASJ,CCVA,yBDKI,kBAAmB,CAFnB,YAAa,CACb,qBAAsB,CAItB,WAAa,CAFb,YAAa,CACb,iBAAkB,CAElB,iCAA4B,CAA5B,yBCCJ,CAVA,WAEI,UAAW,CADX,SASJ,CACA,QACI,YAAa,CAEb,6BACJ,CCfA,yBAQE,iCAA0B,CAA1B,yBAA0B,CAF1B,kCAA0C,CAI1C,kBAAmB,CAHnB,kCAA8C,CAL9C,UAAW,CASX,aAAc,CAFd,YAAa,CALb,iBAAkB,CAClB,QAAS,CAJT,uBAAwB,CAExB,UASF,CAEA,0BAKE,YAAa,CAFb,MAAO,CAFP,cAAe,CACf,KAAM,CAEN,UAAW,CAEX,UACF,CAEA,0BAEE,uBAAyB,CADzB,eAAgB,CAEhB,cAAe,CADf,sBAAyB,CAEzB,YACF,CAEA,0BAIE,kBAAmB,CADnB,YAAa,CAFb,WAAY,CAIZ,sBAAuB,CAHvB,YAIF,CCpCA,0BAIE,kBAAmB,CADnB,+BAAgC,CADhC,kBAAmB,CADnB,iBAIF,CAEA,gCACE,kCACF,CAEA,2BAGE,4BAA+B,CAD/B,cAAe,CAEf,iBAAkB,CAClB,kBAAmB,CAJnB,kBAKF,CAEA,6BAQE,wBAAoC,CACpC,iBAAkB,CALlB,aAAsB,CACtB,4BAA+B,CAC/B,iBAAkB,CAClB,gBAAiB,CANjB,YAAa,CAEb,aAAc,CADd,aAQF,CAEA,0BAGE,UAAW,CACX,4BAA+B,CAH/B,cAAe,CAIf,iBAAkB,CAClB,iBAAkB,CAJlB,iBAKF,CCtCA,sBAOE,oBAAqB,CACrB,WAAY,CACZ,2CAAgD,CAPhD,YAAa,CACb,qBAAsB,CAGtB,WAAY,CALZ,iBAAkB,CAGlB,SAMF,CAEA,uBACE,YACF,CAOA,6CAHE,WAAY,CADZ,UAkBF,CAdA,sBAIE,wBAA6B,CAD7B,WAAY,CAUZ,aAAsB,CAHtB,4BAA+B,CAJ/B,cAAe,CAKf,iBAAkB,CAClB,iBAAkB,CALlB,mBAAqB,CAFrB,YAAa,CAGb,2BAA4B,CAC5B,WAKF,CAEA,oBACE,WACF,CAEA,0BAGE,+BAA2C,CAF3C,UAAW,CAGX,aAAc,CAFd,cAGF,CAEA,uBAGE,4BAA+B,CAD/B,cAAe,CAEf,iBAAkB,CAClB,eAAiB,CAJjB,kBAKF,CAEA,sBAGE,UAAW,CAFX,cAAe,CACf,iBAKF,CAEA,+CALE,4BAA+B,CAC/B,iBAAkB,CAClB,iBAUF,CAPA,yBAGE,aAAsB,CADtB,cAAe,CADf,sBAMF,CAEA,sBAGE,kCAAwC,CADxC,WAAY,CADZ,WAGF,CAEA,yBASE,wBAAoC,CAPpC,WAAY,CACZ,kBAAmB,CAFnB,mCAAgD,CAKhD,4BAA+B,CAF/B,cAAe,CAGf,iBAAkB,CAClB,kBAAmB,CAHnB,WAKF,CAEA,oDAEE,kCACF;;AC/FA;;;;;EAKE,CACF,cACE,qBAAsB,CACtB,sCAAyC,CACzC,cAAe,CACf,WAAY,CACZ,QAAW,CACX,iBACF,CACA,sCACE,iBACF,CACA,gEACE,mBACF,CACA,cAEE,UAAW,CADX,cAAe,CAEf,iBAAkB,CAClB,iBAAkB,CAClB,OACF,CACA,gBACE,QAAS,CACT,SACF,CACA,WAWE,oBAAqB,CAVrB,qBAAsB,CAEtB,WAAY,CADZ,gBAAiB,CAEjB,YAAa,CACb,eAAgB,CAChB,iBAAkB,CAClB,UAAW,CACX,eAAgB,CAChB,eAAgB,CAChB,oBAEF,CACA,aACE,WACF,CACA,kKAaE,4EAA6E,CAF7E,QAAS,CACT,SAEF,CACA,4BAEE,kBACF,CACA,kCAEE,oBACF,CACA,wBACE,eACF,CACA,mEAEE,mBACF,CACA,6EAEE,kBACF,CACA,uFAEE,UAAW,CACX,cAAe,CACf,kBACF,CACA,2CACE,eACF,CACA,4CACE,eACF,CACA,qBACE,oBAAqB,CACrB,kBAAmB,CACnB,WACF,CACA,4CACE,kBAAmB,CACnB,iBAAmB,CACnB,gBACF,CACA,sCACE,gBAAkB,CAClB,mBACF,CACA,gFAEE,kBACF,CACA,oEAEE,mBACF,CACA,iBAEE,wBAAyB,CADzB,4EAEF,CACA,wBACE,oCACF,CACA,6BACE,wBACF,CACA,oCACE,wCACF,CACA,6BACE,qEACF,CACA,6BACE,wBACF,CACA,oCACE,wCACF,CACA,6BACE,8DACF,CACA,6BACE,wBACF,CACA,oCACE,oCACF,CACA,6BACE,uDACF,CACA,6BACE,wBACF,CACA,oCACE,wCACF,CACA,6BACE,gDACF,CACA,6BACE,wBACF,CACA,oCACE,wCACF,CACA,6BACE,yCACF,CACA,6BACE,wBACF,CACA,oCACE,oCACF,CACA,6BACE,kCACF,CACA,6BACE,wBACF,CACA,oCACE,wCACF,CACA,6BACE,2BACF,CACA,6BACE,wBACF,CACA,oCACE,wCACF,CACA,6BACE,oBACF,CACA,6BACE,wBACF,CACA,oCACE,oCACF,CACA,+CACE,gBACF,CACA,iDACE,kBACF,CACA,wDACE,iBACF,CACA,0DACE,mBACF,CACA,+CACE,gBACF,CACA,iDACE,kBACF,CACA,wDACE,iBACF,CACA,0DACE,mBACF,CACA,+CACE,gBACF,CACA,iDACE,mBACF,CACA,wDACE,iBACF,CACA,0DACE,oBACF,CACA,+CACE,iBACF,CACA,iDACE,mBACF,CACA,wDACE,kBACF,CACA,0DACE,oBACF,CACA,+CACE,iBACF,CACA,iDACE,mBACF,CACA,wDACE,kBACF,CACA,0DACE,oBACF,CACA,+CACE,iBACF,CACA,iDACE,mBACF,CACA,wDACE,kBACF,CACA,0DACE,oBACF,CACA,+CACE,iBACF,CACA,iDACE,mBACF,CACA,wDACE,kBACF,CACA,0DACE,oBACF,CACA,+CACE,iBACF,CACA,iDACE,mBACF,CACA,wDACE,kBACF,CACA,0DACE,oBACF,CACA,+CACE,iBACF,CACA,iDACE,mBACF,CACA,wDACE,kBACF,CACA,0DACE,oBACF,CACA,qBACE,aAAc,CACd,cACF,CACA,qCACE,aACF,CACA,oCACE,iBACF,CACA,wBACE,qBACF,CACA,sBACE,wBACF,CACA,yBACE,qBACF,CACA,yBACE,qBACF,CACA,wBACE,wBACF,CACA,uBACE,qBACF,CACA,yBACE,qBACF,CACA,2BACE,UACF,CACA,yBACE,aACF,CACA,4BACE,UACF,CACA,4BACE,UACF,CACA,2BACE,aACF,CACA,0BACE,UACF,CACA,4BACE,UACF,CACA,0BACE,yCACF,CACA,8BACE,wCACF,CACA,0BACE,eACF,CACA,0BACE,eACF,CACA,yBACE,eACF,CACA,6BACE,aAAc,CACd,kBACF,CACA,4BACE,iBACF,CACA,6BACE,kBACF,CACA,2BACE,gBACF,CACA,2BACE,oBAAsB,CACtB,8BAA+B,CAC/B,iBAAkB,CAClB,SAAU,CACV,mBAAoB,CACpB,iBAAkB,CAClB,UACF,CACA,qDAEE,UAAW,CACX,UAAW,CACX,aACF,CACA,uDAEE,eAAgB,CAChB,WAAY,CACZ,cAAe,CACf,oBAAqB,CACrB,UAAW,CACX,WAAY,CACZ,eAAgB,CAChB,UACF,CACA,+DAEE,UAAW,CACX,WACF,CACA,iFAEE,YACF,CACA,6FAEE,YACF,CACA,6jBAcE,UACF,CACA,kgDA4BE,SACF,CACA,kgDA4BE,WACF,CACA,wBACE,mGAEE,UACF,CACA,8PAIE,SACF,CACA,8PAIE,WACF,CACF,CAIA,oBACE,qBACF,CACA,oBACE,YACF,CACA,6CAEE,iBACF,CACA,qBACE,iBAAkB,CAClB,kCAA2B,CAA3B,0BACF,CACA,uBACE,cAAe,CACf,oBACF,CACA,6BACE,mCAA4B,CAA5B,2BACF,CACA,qBACE,oBAAqB,CACrB,qBACF,CACA,2BACE,UAAW,CACX,UAAW,CACX,aACF,CACA,oBACE,SAAU,CACV,WAAY,CACZ,oBAAqB,CACrB,qBAAsB,CACtB,cACF,CACA,0BACE,SAAU,CACV,WAAY,CACZ,oBAAqB,CACrB,cACF,CACA,8CAEE,SACF,CACA,mBACE,SACF,CACA,kBACE,iBACF,CACA,8CAEE,cACF,CACA,yBACE,UACF,CACA,sCACE,YACF,CACA,gDACE,cACF,CACA,iDACE,YACF,CACA,uBACE,aACF,CACA,uBACE,eACF,CACA,uBACE,gBACF,CACA,uBACE,aACF,CACA,uBACE,eACF,CACA,uBACE,eACF,CACA,sBACE,yBACF,CACA,+BACE,0BAA2B,CAC3B,iBAAkB,CAClB,cAAe,CACf,iBACF,CACA,iDAEE,wBAAyB,CACzB,iBACF,CACA,wBAEE,iBAAkB,CAClB,cAAe,CACf,gBAAiB,CAHjB,oBAIF,CACA,yBACE,aAAc,CACd,eACF,CACA,kCACE,wBAAyB,CACzB,aAAc,CACd,gBACF,CACA,wBACE,cACF,CACA,oBACE,UAAW,CACX,oBAAqB,CACrB,UAAW,CACX,cAAe,CACf,eAAgB,CAChB,WAAY,CACZ,iBAAkB,CAClB,qBACF,CACA,0BACE,cAAe,CACf,oBAAqB,CACrB,WAAY,CACZ,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,UACF,CACA,iCACE,oBAAqB,CACrB,gBACF,CACA,4BACE,qBAAsB,CACtB,YAAa,CACb,cAAe,CACf,eAAgB,CAChB,iBAAkB,CAClB,kBACF,CACA,4CACE,cAAe,CACf,aAAc,CACd,kBAAmB,CACnB,eACF,CACA,iDACE,UAAW,CACX,SACF,CACA,0DACE,SACF,CACA,4DACE,WACF,CACA,mDACE,aAAc,CACd,eAAgB,CAChB,QAAS,CACT,SACF,CACA,mDAEE,UACF,CACA,qFAEE,eACF,CACA,6FAEE,SACF,CACA,4CACE,aACF,CACA,yCACE,WAAY,CAEZ,eAAgB,CADhB,UAEF,CACA,6CACE,eAAgB,CAChB,WACF,CACA,0CACE,4BAA6B,CAC7B,UAAW,CACX,WAAY,CACZ,UAAW,CACX,SAAY,CACZ,UACF,CACA,mEAEE,eAAgB,CADhB,iBAAkB,CAElB,OAAQ,CACR,OAAQ,CACR,UACF,CACA,+fAME,wBACF,CACA,8BACE,UACF,CACA,2GAEE,gBACF,CACA,2IAEE,mBACF,CACA,2IAEE,mBACF,CACA,2IAEE,mBACF,CACA,2IAEE,mBACF,CACA,2IAEE,mBACF,CACA,2IAEE,mBACF,CACA,qEACE,aACF,CACA,qEACE,eACF,CACA,qEACE,gBACF,CACA,qEACE,aACF,CACA,qEACE,eACF,CACA,qEACE,eACF,CACA,4BACE,WACF,CACA,uGAEE,oBACF,CACA,2IAEE,eACF,CACA,mJAEE,mBACF,CACA,qEACE,yCACF,CACA,yEACE,wCACF,CACA,4BACE,UACF,CACA,uGAEE,gBACF,CACA,2IAEE,eACF,CACA,2IAEE,eACF,CACA,yIAEE,cACF,CACA,qEACE,cACF,CACA,qEACE,cACF,CACA,oEACE,cACF,CACA,wDACE,qBACF,CACA,mDACE,qBACF,CACA,oBACE,qBAAsB,CACtB,qBAAsB,CACtB,qDAA+D,CAC/D,WACF,CACA,gCACE,iBACF,CACA,qCACE,4BACF,CACA,uCACE,4BAA6B,CAC7B,mCACF,CAIA,0HACE,iBACF,CACA,4HAEE,iBACF,CACA,0CACE,YACF,CACA,qBACE,qBAAsB,CACtB,qBAAsB,CACtB,uBAA4B,CAC5B,UAAW,CACX,gBAAiB,CACjB,kBACF,CACA,4BACE,oBAAqB,CACrB,gBAAiB,CACjB,gBACF,CACA,sCAEE,qBAAsB,CADtB,YAAa,CAEb,cAAe,CACf,WAAY,CACZ,QAAW,CACX,eAAgB,CAChB,WACF,CACA,kCACE,oBAAqB,CACrB,eAAgB,CAChB,iBAAkB,CAClB,sBAAuB,CACvB,kBACF,CACA,uCACE,2BAA4B,CAC5B,cAAe,CACf,gBAAiB,CACjB,iBACF,CACA,wCACE,gBAAiB,CACjB,eACF,CACA,uBACE,gBACF,CACA,yFAEE,YACF,CACA,iDACE,oBACF,CACA,kDACE,cAAiB,CACjB,cAAe,CACf,eACF,CACA,4CACE,qBACF,CACA,+CACE,wBACF,CACA,6CACE,sBACF,CACA,WACE,UACF,CACA,sBACE,qBACF,CCh7BA,gCASE,kBAAmB,CAHnB,mCAA0C,CAJ1C,QAAS,CAKT,iCAA0C,CAC1C,YAAa,CAHb,WAAY,CAKZ,6BAA8B,CAP9B,MAAO,CAFP,iBAAkB,CAGlB,UAOF,CAEA,oEAKE,kBAAmB,CADnB,YAAa,CAFb,WAAY,CADZ,UAKF,CAEA,qCACE,iBAAkB,CAClB,SACF,CAEA,qCACE,SACF,CAEA,4DACE,YAAa,CACb,sBACF,CAEA,mEAGE,eAAgB,CAChB,WAAY,CACZ,iBAAkB,CAHlB,iBAAkB,CADlB,gBAAiB,CAKjB,8BACF,CAEA,0DAKE,wBAAyB,CAFzB,kBAAmB,CACnB,aAAc,CAFd,cAAe,CAKf,kBAAmB,CANnB,kBAAmB,CAKnB,8BAEF,CAEA,gEAEE,wBAAyB,CADzB,wBAAyB,CAEzB,UACF,CC1DA,4BAIE,wBAAiC,CADjC,WAAY,CAFZ,iBAAkB,CAClB,SAGF,CAEA,0BAEE,iBAAkB,CADlB,UAEF,CAEA,gCAGE,iBAAkB,CADlB,YAAa,CAEb,WAAY,CAEZ,yBAA0B,CAC1B,iCAAkC,CAClC,8BAA+B,CAP/B,WAQF,CAGA,oDAEE,UAAW,CADX,SAEF,CAGA,oDAEE,UAAW,CADX,SAEF,CAGA,wGAGE,UAAW,CADX,SAEF,CAGA,wGAGE,UAAW,CADX,SAEF,CAEA,yDAGE,UAAY,CACZ,cAAe,CACf,eAAgB,CAChB,kBAAmB,CALnB,cAAe,CACf,iBAKF,CAEA,8BACE,cAAe,CACf,WAAY,CAEZ,gBAAiB,CADjB,aAEF,CAEA,yBAGE,WAAY,CACZ,YAAa,CAFb,iBAAkB,CADlB,UAIF,CAEA,0BAOE,aAAsB,CACtB,cAAe,CAPf,WAAY,CASZ,kBAAmB,CARnB,iBAAkB,CAGlB,iBAAkB,CAIlB,UAEF,CAEA,uDATE,mCAA0C,CAD1C,kBAAmB,CAGnB,aAcF,CAPA,6BAEE,UAAW,CACX,gBAAiB,CACjB,YAGF,CAEA,wBACE,YAAa,CACb,eACF,CAEA,8BAEE,YAAa,CADb,WAEF,CAEA,2BAGE,kCAAwC,CADxC,WAAY,CADZ,WAGF,CAEA,+BAGE,4BAA+B,CAD/B,cAAe,CAEf,iBAAkB,CAClB,eAAiB,CAJjB,kBAKF,CAEA,8BAGE,UAAW,CACX,4BAA+B,CAH/B,cAAe,CAIf,iBAAkB,CAClB,iBAAkB,CAJlB,iBAKF,CAEA,2BACE,YACF,CCjIA,oCACE,mCAA0C,CAC1C,iCAA0C,CAE1C,YAAa,CACb,6BAA8B,CAC9B,gBAAiB,CAHjB,YAIF,CAEA,+BAGE,+BAAoC,CACpC,kBAAmB,CACnB,UAAY,CAHZ,cAAe,CADf,cAKF,CAEA,qCACE,+BAAoC,CACpC,cACF,CAEA,sCACE,+BAAoC,CACpC,WAAY,CAQZ,kBAAmB,CACnB,UAAY,CAFZ,cAAe,CALf,WAAY,CAEZ,aAAc,CADd,YAAa,CAEb,cAAe,CACf,iBAAkB,CALlB,WASF,CAEA,+CACE,eACF,CAEA,4CACE,4BACF,CAEA,gCACE,gBACF,CAEA,uCAKE,kCAAwC,CADxC,WAAY,CADZ,kBAAmB,CADnB,WAAY,CADZ,UAKF,CAEA,6CACE,mCACF,CC1DA,+BAQE,iCAA0B,CAA1B,yBAA0B,CAF1B,mCAA0C,CAI1C,kBAAmB,CAHnB,kCAA2C,CAL3C,UAAW,CASX,WAAY,CACZ,aAAc,CAHd,YAAa,CALb,iBAAkB,CAClB,QAAS,CAJT,SAAU,CAEV,UAUF,CAEA,4BAKE,YAAa,CAFb,MAAO,CAFP,cAAe,CACf,KAAM,CAEN,UAAW,CAEX,UACF,CAEA,4BAIE,kBAAmB,CADnB,YAAa,CAFb,WAAY,CAIZ,sBAAuB,CAHvB,YAIF,CAEA,4BAEE,aAAc,CADd,cAEF,CCnCA,+BAIE,kBAAmB,CADnB,+BAA8C,CAD9C,kBAAmB,CADnB,iBAIF,CAEA,qCACE,kCACF,CAEA,6BAGE,4BAA+B,CAD/B,cAAe,CAEf,iBAAkB,CAClB,kBAAmB,CAJnB,kBAKF,CAEA,4BAGE,aAAsB,CACtB,4BAA+B,CAH/B,cAAe,CAIf,iBAAkB,CAClB,iBAAkB,CAJlB,iBAKF,CC1BA,yBAUE,kBAAmB,CAJnB,oBAAqB,CAErB,YAAa,CACb,qBAAsB,CANtB,YAAa,CAQb,sBAAuB,CANvB,MAAO,CAJP,iBAAkB,CAGlB,KAAM,CAFN,WAAY,CAKZ,WAKF,CAEA,4BAEE,cAAe,CADf,iBAEF,CCjBA,wCAKE,kBAAmB,CAFnB,YAAa,CADb,WAAY,CAEZ,sBAAuB,CAHvB,UAKF,CCNA,wBAIE,kBAAmB,CASnB,wBAAyB,CAJzB,QAAS,CAPT,gCAA4C,CAD5C,YAAa,CAEb,qBAAsB,CAGtB,WAAY,CAIZ,MAAO,CAHP,iBAAkB,CAIlB,iBAAkB,CAHlB,KAAM,CAHN,SAAU,CAOV,UAEF,CAEA,qBACE,cAAe,CACf,YACF,CAEA,2BACE,cACF,CAEA,4BAKE,+BAA2C,CAD3C,4BAAwC,CAHxC,cAAsB,CAEtB,iBAAkB,CADlB,UAIF,CAEA,yBACE,cACF,CAEA,2BAGE,UAAW,CADX,cAAe,CADf,cAGF,CAEA,qBACE,UACF,CAEA,0BACE,oBAAqB,CAErB,cAAe,CACf,eAAiB,CAFjB,yBAAkB,CAAlB,sBAAkB,CAAlB,iBAGF,CAEA,4BAGE,aAAc,CADd,gBAAiB,CADjB,UAGF,CAEA,wBAME,iBAAkB,CAClB,aAAc,CAJd,cAAe,CADf,WAAY,CAGZ,gBAAiB,CADjB,kBAIF,CAEA,8BAEE,wBAAyB,CADzB,cAEF,CAEA,uBAEE,4BAAwC,CAExC,QAAS,CAET,aAAc,CADd,YAAa,CAFb,iBAAkB,CAFlB,UAMF,CClFA,4BACI,eACJ,CAEA,sBACI,qBAAuB,CAGvB,wBAAyB,CAFzB,iBAAkB,CAClB,aAAc,CAGd,eAAiB,CADjB,gBAEJ","sources":["index.css","../node_modules/react-notion/src/styles.css","../node_modules/prismjs/themes/prism-tomorrow.css","components/Home/HomeSidebar.module.css","pages/HomePage/HomePage.module.css","components/MeetingListBlock/MeetingBlock.module.css","components/MeetingListBlock/Meeting.module.css","pages/MeetingListPage/MeetingListPage.module.css","components/History/HistoryItem.module.css","components/History/MemoContents.module.css","components/History/SummaryContents.module.css","components/History/OriginalContent.module.css","components/History/HistoryList.module.css","pages/HistoryPage/HistoryPage.module.css","components/History/TimeLineList.module.css","pages/RegisterPage/RegisterPage.css","pages/LoginPage/LoginPage.css","components/MeetingRoom/Memo/MemoList.module.css","components/MeetingRoom/Memo/MemoItem.module.css","components/MeetingRoom/Memo/Memo.module.css","../node_modules/react-quill/dist/quill.snow.css","components/MeetingRoom/Controllers.module.css","components/MeetingRoom/StreamBox.module.css","components/MeetingRoom/MeetingHeader.module.css","components/MeetingRoom/MeetingLog.module.css","components/MeetingRoom/MeetingLogItem.module.css","components/UI/Loading.module.css","pages/MeetingRoomPage/MeetingRoomPage.module.css","components/UI/Sidebar.module.css","components/UI/LogoutBtn.module.css"],"sourcesContent":["body {\n margin: 0;\n padding: 0;\n height: 100%;\n line-height: inherit;\n}\n\nhtml,\n#root {\n height: 100%;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: light;\n}\n\na {\n text-decoration: none;\n color: inherit;\n}\n\nbutton {\n cursor: pointer;\n}\n\nul {\n list-style: none;\n padding-inline-start: 0;\n}\n\n@font-face {\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: light;\n src: url(\"styles/fonts/NotoSansKR-Light.woff2\") format(\"woff2\"),\n url(\"styles/fonts/NotoSansKR-Light.woff\") format(\"woff\"),\n url(\"styles/fonts/NotoSansKR-Light.otf\") format(\"truetype\");\n font-display: block;\n}\n\n@font-face {\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: normal;\n src: url(\"styles/fonts/NotoSansKR-Regular.woff2\") format(\"woff2\"),\n url(\"styles/fonts/NotoSansKR-Regular.woff\") format(\"woff\"),\n url(\"styles/fonts/NotoSansKR-Regular.otf\") format(\"truetype\");\n font-display: block;\n}\n\n@font-face {\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: medium;\n src: url(\"styles/fonts/NotoSansKR-Medium.woff2\") format(\"woff2\"),\n url(\"styles/fonts/NotoSansKR-Medium.woff\") format(\"woff\"),\n url(\"styles/fonts/NotoSansKR-Medium.otf\") format(\"truetype\");\n font-display: block;\n}\n\n@font-face {\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: bold;\n src: url(\"styles/fonts/NotoSansKR-Bold.woff2\") format(\"woff2\"),\n url(\"styles/fonts/NotoSansKR-Bold.woff\") format(\"woff\"),\n url(\"styles/fonts/NotoSansKR-Bold.otf\") format(\"truetype\");\n font-display: block;\n}\n\n.ql-editing {\n position: inherit;\n left: 0;\n}\n\n.ql-formats {\n line-height: 1;\n}\n\n.ql-snow .ql-picker.ql-header {\n width: 125px !important;\n}\n\n.ql-bubble .ql-editor {\n padding: 10px;\n}\n\n.ql-snow .ql-editor {\n padding-top: 25px;\n}\n",".notion {\n font-size: 16px;\n line-height: 1.5;\n color: rgb(55, 53, 47);\n caret-color: rgb(55, 53, 47);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica,\n \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n}\n\n.notion > *,\n.notion-page > *,\n.notion-column > * {\n padding: 3px 0px;\n}\n\n.notion * {\n box-sizing: border-box;\n margin-block-start: 0px;\n margin-block-end: 0px;\n}\n\n.notion-red {\n color: rgb(224, 62, 62);\n}\n.notion-pink {\n color: rgb(173, 26, 114);\n}\n.notion-blue {\n color: rgb(11, 110, 153);\n}\n.notion-purple {\n color: rgb(105, 64, 165);\n}\n.notion-teal {\n color: rgb(15, 123, 108);\n}\n.notion-yellow {\n color: rgb(223, 171, 1);\n}\n.notion-orange {\n color: rgb(217, 115, 13);\n}\n.notion-brown {\n color: rgb(100, 71, 58);\n}\n.notion-gray {\n color: rgb(155, 154, 151);\n}\n.notion-red_background {\n background-color: rgb(251, 228, 228);\n}\n.notion-pink_background {\n background-color: rgb(244, 223, 235);\n}\n.notion-blue_background {\n background-color: rgb(221, 235, 241);\n}\n.notion-purple_background {\n background-color: rgb(234, 228, 242);\n}\n.notion-teal_background {\n background-color: rgb(221, 237, 234);\n}\n.notion-yellow_background {\n background-color: rgb(251, 243, 219);\n}\n.notion-orange_background {\n background-color: rgb(250, 235, 221);\n}\n.notion-brown_background {\n background-color: rgb(233, 229, 227);\n}\n.notion-gray_background {\n background-color: rgb(235, 236, 237);\n}\n.notion-red_background_co {\n background-color: rgb(251, 228, 228, 0.3);\n}\n.notion-pink_background_co {\n background-color: rgb(244, 223, 235, 0.3);\n}\n.notion-blue_background_co {\n background-color: rgb(221, 235, 241, 0.3);\n}\n.notion-purple_background_co {\n background-color: rgb(234, 228, 242, 0.3);\n}\n.notion-teal_background_co {\n background-color: rgb(221, 237, 234, 0.3);\n}\n.notion-yellow_background_co {\n background-color: rgb(251, 243, 219, 0.3);\n}\n.notion-orange_background_co {\n background-color: rgb(250, 235, 221, 0.3);\n}\n.notion-brown_background_co {\n background-color: rgb(233, 229, 227, 0.3);\n}\n.notion-gray_background_co {\n background-color: rgb(235, 236, 237, 0.3);\n}\n\n.notion b {\n font-weight: 600;\n}\n\n.notion-title {\n font-size: 2.5em;\n font-weight: 700;\n margin-top: 0.75em;\n margin-bottom: 0.25em;\n}\n\n.notion-h1,\n.notion-h2,\n.notion-h3 {\n font-weight: 600;\n line-height: 1.3;\n padding: 3px 2px;\n}\n\n.notion-h1 {\n font-size: 1.875em;\n margin-top: 1.4em;\n}\n.notion-h1:first-child {\n margin-top: 0;\n}\n.notion-h2 {\n font-size: 1.5em;\n margin-top: 1.1em;\n}\n.notion-h3 {\n font-size: 1.25em;\n margin-top: 1em;\n}\n.notion-emoji {\n font-family: \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\",\n \"Segoe UI Symbol\";\n}\n.notion-page-cover {\n display: block;\n object-fit: cover;\n width: 100%;\n height: 30vh;\n min-height: 30vh;\n padding: 0;\n}\n\n.notion-page {\n padding: 0;\n margin: 0 auto;\n max-width: 708px;\n width: 100%;\n}\n\n@media only screen and (max-width: 730px) {\n .notion-page {\n padding: 0 2vw;\n }\n}\n\n.notion-page-offset {\n margin-top: 96px;\n}\n\nspan.notion-page-icon-cover {\n height: 78px;\n width: 78px;\n font-size: 78px;\n display: inline-block;\n line-height: 1.1;\n margin-left: 0px;\n}\n\nspan.notion-page-icon-offset {\n margin-top: -42px;\n}\n\nimg.notion-page-icon-cover {\n border-radius: 3px;\n width: 124px;\n height: 124px;\n margin: 8px;\n}\n\nimg.notion-page-icon-offset {\n margin-top: -80px;\n}\n\n.notion-full-width {\n padding: 0 40px;\n max-width: 100%;\n}\n\n.notion-small-text {\n font-size: 14px;\n}\n.notion-quote {\n white-space: pre-wrap;\n word-break: break-word;\n border-left: 3px solid currentcolor;\n padding: 0.2em 0.9em;\n margin: 0;\n font-size: 1.2em;\n}\n.notion-hr {\n margin: 6px 0px;\n padding: 0;\n border-top-width: 1px;\n border-bottom-width: 0;\n border-color: rgba(55, 53, 47, 0.09);\n}\n.notion-link {\n color: inherit;\n word-break: break-word;\n text-decoration: underline;\n text-decoration-color: inherit;\n}\n.notion-blank {\n min-height: 1rem;\n padding: 3px 2px;\n margin-top: 1px;\n margin-bottom: 1px;\n}\n.notion-page-link {\n display: flex;\n color: rgb(55, 53, 47);\n text-decoration: none;\n height: 30px;\n margin: 1px 0px;\n transition: background 120ms ease-in 0s;\n}\n.notion-page-link:hover {\n background: rgba(55, 53, 47, 0.08);\n}\n\n.notion-page-icon {\n line-height: 1.4;\n margin-right: 4px;\n margin-left: 2px;\n}\nimg.notion-page-icon {\n display: block;\n object-fit: cover;\n border-radius: 3px;\n width: 20px;\n height: 20px;\n}\n\n.notion-icon {\n display: block;\n width: 18px;\n height: 18px;\n color: rgba(55, 53, 47, 0.4);\n}\n\n.notion-page-text {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 500;\n line-height: 1.3;\n border-bottom: 1px solid rgba(55, 53, 47, 0.16);\n margin: 1px 0px;\n}\n\n.notion-inline-code {\n color: #eb5757;\n padding: 0.2em 0.4em;\n background: rgba(135, 131, 120, 0.15);\n border-radius: 3px;\n font-size: 85%;\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier,\n monospace;\n}\n\n.notion-list {\n margin: 0;\n margin-block-start: 0.6em;\n margin-block-end: 0.6em;\n}\n\n.notion-list-disc {\n list-style-type: disc;\n padding-inline-start: 1.6em;\n margin-top: 0px;\n margin-bottom: 0px;\n}\n.notion-list-numbered {\n list-style-type: decimal;\n padding-inline-start: 1.6em;\n margin-top: 0px;\n margin-bottom: 0px;\n}\n\n.notion-list-disc li {\n padding-left: 0.1em;\n}\n\n.notion-list-numbered li {\n padding-left: 0.2em;\n}\n\n.notion-list li {\n padding: 4px 0px;\n white-space: pre-wrap;\n}\n\n.notion-list > .notion-text {\n margin-left: -1.6em;\n padding-left: 0px;\n}\n\n.notion-asset-wrapper {\n margin: 0.5rem auto 0.5rem;\n max-width: 100%;\n}\n\n.notion-asset-wrapper > img {\n max-width: 100%;\n}\n\n.notion-asset-wrapper iframe {\n border: none;\n}\n\n.notion-text {\n white-space: pre-wrap;\n caret-color: rgb(55, 53, 47);\n padding: 3px 2px;\n}\n.notion-block {\n padding: 3px 2px;\n}\n\n.notion .notion-code {\n font-size: 85%;\n}\n\n.notion-code {\n padding: 30px 16px 30px 20px;\n margin: 4px 0;\n border-radius: 3px;\n tab-size: 2;\n display: block;\n box-sizing: border-box;\n overflow-x: scroll;\n background: rgb(247, 246, 243);\n font-family: SFMono-Regular, Consolas, \"Liberation Mono\", Menlo, Courier,\n monospace;\n}\n\n.notion-column {\n padding-top: 12px;\n padding-bottom: 12px;\n}\n\n.notion-column > *:first-child {\n margin-top: 0;\n margin-left: 0;\n margin-right: 0;\n}\n\n.notion-column > *:last-child {\n margin-left: 0;\n margin-right: 0;\n margin-bottom: 0;\n}\n\n.notion-row {\n display: flex;\n overflow: hidden;\n}\n\n.notion-bookmark {\n margin: 4px 0;\n width: 100%;\n box-sizing: border-box;\n text-decoration: none;\n border: 1px solid rgba(55, 53, 47, 0.16);\n border-radius: 3px;\n display: flex;\n overflow: hidden;\n user-select: none;\n}\n\n.notion-bookmark > div:first-child {\n flex: 4 1 180px;\n padding: 12px 14px 14px;\n overflow: hidden;\n text-align: left;\n color: rgb(55, 53, 47);\n}\n\n.notion-bookmark-title {\n font-size: 14px;\n line-height: 20px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-height: 24px;\n margin-bottom: 2px;\n}\n\n.notion-bookmark-description {\n font-size: 12px;\n line-height: 16px;\n opacity: 0.6;\n height: 32px;\n overflow: hidden;\n}\n\n.notion-bookmark-link {\n display: flex;\n margin-top: 6px;\n}\n\n.notion-bookmark-link > img {\n width: 16px;\n height: 16px;\n min-width: 16px;\n margin-right: 6px;\n}\n\n.notion-bookmark-link > div {\n font-size: 12px;\n line-height: 16px;\n color: rgb(55, 53, 47);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.notion-bookmark-image {\n flex: 1 1 180px;\n position: relative;\n}\n\n.notion-bookmark-image img {\n object-fit: cover;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.notion-column .notion-bookmark-image {\n display: none;\n}\n\n@media (max-width: 640px) {\n .notion-bookmark-image {\n display: none;\n }\n\n .notion-row {\n flex-direction: column;\n }\n\n .notion-row > *,\n .notion-column > * {\n width: 100% !important;\n }\n}\n\n.notion-spacer:last-child {\n display: none;\n}\n\n.notion-image-inset {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n border-radius: 1px;\n}\n\n.notion-image-caption {\n padding: 6px 0px;\n white-space: pre-wrap;\n word-break: break-word;\n caret-color: rgb(55, 53, 47);\n font-size: 14px;\n line-height: 1.4;\n color: rgba(55, 53, 47, 0.6);\n}\n\n.notion-callout {\n padding: 16px 16px 16px 12px;\n display: inline-flex;\n width: 100%;\n border-radius: 3px;\n border-width: 1px;\n align-items: center;\n box-sizing: border-box;\n margin: 4px 0;\n}\n.notion-callout-text {\n margin-left: 8px;\n white-space: pre-line;\n}\n\n.notion-toggle {\n padding: 3px 2px;\n}\n.notion-toggle > summary {\n cursor: pointer;\n outline: none;\n}\n.notion-toggle > div {\n margin-left: 1.1em;\n}\n\n.notion-table,\n.notion-th,\n.notion-td {\n border: 1px solid rgba(55, 53, 47, 0.09);\n border-collapse: collapse;\n}\n\n.notion-table {\n width: 100%;\n border-left: none;\n border-right: none;\n border-spacing: 0px;\n white-space: nowrap;\n}\n\n.notion-th,\n.notion-td {\n font-weight: normal;\n padding: 0.25em 0.5em;\n line-height: 1.5;\n min-height: 1.5em;\n text-align: left;\n font-size: 14px;\n}\n\n.notion-td.notion-bold {\n font-weight: 500;\n}\n\n.notion-th {\n color: rgba(55, 53, 47, 0.6);\n font-size: 14px;\n}\n\n.notion-td:first-child,\n.notion-th:first-child {\n border-left: 0;\n}\n\n.notion-td:last-child,\n.notion-th:last-child {\n border-right: 0;\n}\n\n.notion-gallery {\n display: grid;\n position: relative;\n grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));\n grid-auto-rows: 1fr;\n gap: 16px;\n border-top: 1px solid rgba(55, 53, 47, 0.16);\n padding-top: 16px;\n padding-bottom: 4px;\n}\n.notion-gallery-card {\n display: block;\n color: inherit;\n text-decoration: none;\n box-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px,\n rgba(15, 15, 15, 0.1) 0px 2px 4px;\n border-radius: 3px;\n background: white;\n overflow: hidden;\n transition: background 100ms ease-out 0s;\n position: static;\n height: 100%;\n}\n\n.notion-gallery-content {\n padding: 8px 10px 6px;\n font-size: 12px;\n white-space: nowrap;\n}\n\n.notion-gallery-data.is-first {\n white-space: nowrap;\n word-break: break-word;\n caret-color: rgb(55, 53, 47);\n font-size: 14px;\n line-height: 1.5;\n min-height: 21px;\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.notion-page-header {\n position: sticky;\n top: 0;\n width: 100%;\n max-width: 100vw;\n height: 45px;\n min-height: 45px;\n display: flex;\n background: #fff;\n flex-direction: row;\n box-sizing: border-box;\n justify-content: space-between;\n align-items: center;\n padding: 0 12px;\n text-size-adjust: 100%;\n line-height: 1.5;\n line-height: 1.2;\n font-size: 14px;\n}\n\n.notion-nav-breadcrumbs {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 100%;\n flex-grow: 0;\n min-width: 0;\n margin-right: 8px;\n}\n\n.notion-nav-breadcrumb {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n\n color: rgb(55, 53, 47);\n text-decoration: none;\n margin: 1px 0px;\n padding: 4px 6px;\n border-radius: 3px;\n transition: background 120ms ease-in 0s;\n user-select: none;\n background: transparent;\n cursor: pointer;\n}\n\nimg.notion-nav-icon {\n width: 18px !important;\n height: 18px !important;\n}\n\n.notion-nav-icon {\n font-size: 18px;\n margin-right: 6px;\n line-height: 1.1;\n color: #000;\n}\n\n.notion-nav-breadcrumb:not(.notion-nav-breadcrumb-active):hover {\n background: rgba(55, 53, 47, 0.08);\n}\n\n.notion-nav-breadcrumb:not(.notion-nav-breadcrumb-active):active {\n background: rgba(55, 53, 47, 0.16);\n}\n\n.notion-nav-breadcrumb.notion-nav-breadcrumb-active {\n cursor: default;\n}\n\n.notion-nav-spacer {\n margin: 0 2px;\n color: rgba(55, 53, 47, 0.4);\n}\n","/**\n * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML\n * Based on https://github.com/chriskempson/tomorrow-theme\n * @author Rose Pritchard\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: #ccc;\n\tbackground: none;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\tfont-size: 1em;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\tpadding: 1em;\n\tmargin: .5em 0;\n\toverflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tbackground: #2d2d2d;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\tpadding: .1em;\n\tborder-radius: .3em;\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.block-comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: #999;\n}\n\n.token.punctuation {\n\tcolor: #ccc;\n}\n\n.token.tag,\n.token.attr-name,\n.token.namespace,\n.token.deleted {\n\tcolor: #e2777a;\n}\n\n.token.function-name {\n\tcolor: #6196cc;\n}\n\n.token.boolean,\n.token.number,\n.token.function {\n\tcolor: #f08d49;\n}\n\n.token.property,\n.token.class-name,\n.token.constant,\n.token.symbol {\n\tcolor: #f8c555;\n}\n\n.token.selector,\n.token.important,\n.token.atrule,\n.token.keyword,\n.token.builtin {\n\tcolor: #cc99cd;\n}\n\n.token.string,\n.token.char,\n.token.attr-value,\n.token.regex,\n.token.variable {\n\tcolor: #7ec699;\n}\n\n.token.operator,\n.token.entity,\n.token.url {\n\tcolor: #67cdcc;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n\n.token.inserted {\n\tcolor: green;\n}\n",".sidebar {\n position: fixed;\n box-shadow: 1px 0 3px 1px rgb(227, 227, 227);\n flex-direction: column;\n align-items: center;\n width: 15%;\n height: 100%;\n top: 0;\n bottom: 0;\n left: 0;\n text-align: center;\n z-index: 99;\n background-color: #f9f9f9;\n}\n\n.logo {\n font-size: 30px;\n height: 120px;\n}\n\n.logo:hover {\n cursor: pointer;\n}\n\n.userProfile {\n padding: 30px 0;\n width: 100%;\n text-align: center;\n align-items: center;\n border-top: 1px solid rgb(219, 219, 219);\n border-bottom: 1px solid rgb(219, 219, 219);\n}\n\n.userName {\n font-size: 18px;\n}\n\n.userEmail {\n font-size: 12px;\n color: gray;\n}\n\n.menu {\n padding: 10px;\n}\n\n.menuTitle {\n display: inline-block;\n width: fit-content;\n font-size: 15px;\n font-weight: bold;\n}\n\n.menuContent {\n width: 100%;\n padding-top: 10px;\n overflow: auto;\n}\n\n.menuItem {\n height: 40px;\n font-size: 14px;\n padding: 5px;\n border-radius: 5px;\n color: dimgray;\n align-items: center;\n align-content: center;\n}\n\n.menuItem:hover {\n cursor: pointer;\n background-color: #e7e7e7;\n}\n\n.myPage {\n width: 100%;\n border-top: 1px solid rgb(219, 219, 219);\n position: absolute;\n bottom: 0;\n padding: 20px;\n color: dimgray;\n}\n\n.active{\n height: 40px;\n font-size: 14px;\n padding: 5px;\n border-radius: 5px;\n color: dimgray;\n align-content: center;\n align-items: center;\n text-align: center;\n cursor: pointer;\n background-color: #e7e7e7;\n\n}\n.atag{\n height: 30px;\n line-height: 30px;\n}",".body {\n width: 86%;\n margin-left: 14%;\n position: relative;\n overflow-x: hidden;\n\n}\n.body::-webkit-scrollbar{\n display: none;\n}\n\n.maindiv{\n display: flex;\n padding: 10px;\n height: 100%;\n margin: auto;\n width: 101%;\n\n}\n::-webkit-scrollbar{\n display: none;\n}\n.text{\n overflow: scroll;\n margin: auto;\n width: 100%;\n}\n\n.top{\n width: 100%;\n position: fixed;\n height: 57px;\n top: 0;\n right: 0;\n z-index: 1;\n padding: 5px;\n background-color: white;\n\n}\n\n.top__button{\n position: fixed;\n flex-direction: row;\n top: 10px;\n right: 10px;\n z-index: 1;\n padding: 5px;\n background-color: white;\n}\n\n.LetUse{\n align-items: center;\n text-align: center;\n height: 60%;\n background-color: #e7e7e7;\n padding: 130px 70px 30px 20px;\n\n\n}\n.forUse{\n height: 150px;\n}\n.logo {\n font-size: 30px;\n height: 120px;\n}\n\n.useContent{\n padding: 20px 0 100px 0;\n}\n\n.contributor{\n padding: 30px 0;\n border-top: 1px solid rgb(219, 219, 219);\n bottom: 0;\n\n}\n\n.contributorItem{\n font-size: 17px;\n font-family: -apple-system;\n margin: 10px 20px 20px 0;\n}",".block:hover {\n animation: rotate_image 1s linear;\n}\n@keyframes rotate_image{\n 100% {\n transform: rotateY(360deg);\n }\n}\n.hvrBounceIn {\n display: inline-block;\n vertical-align: middle;\n transform: perspective(1px) translateZ(0);\n box-shadow: 0 0 1px rgba(0, 0, 0, 0);\n transition-duration: 1s;\n}\n.hvrBounceIn:hover, .hvrBounceIn:focus, .hvrBounceIn:active {\n transform: scale(1.05);\n transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);\n}\n\n.meetingBlock_buttons {\n padding-bottom: 16px;\n}",".meetingBlock {\n clear: both;\n width: 300px;\n height: 150px;\n border: 1px;\n border-radius: 10px;\n padding: 10px;\n margin: 2px;\n background-color: bisque;\n}\n\n.modalBG {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n background-color: rgba(0, 0, 0, 0.7);\n}\n#closeimg {\n float: right;\n}\n\n.modalcover {\n margin: 50% 20% 50% 43%;\n width: 30%;\n height: 40%;\n background-color: white;\n border: 1px;\n border-radius: 10px;\n padding: 20px;\n opacity: 1;\n display: block;\n}\n\n.meetingBlock_buttons {\n padding-bottom: 16px;\n}\n\n.meetingInfo {\n padding-bottom: 20px;\n}\n\n.date {\n font-size: 16px;\n}\n","b {\n font-size: 20px;\n line-height: 30px;\n width: 20px;\n}\nspan {\n font-size: 20px;\n}\n\n.body {\n padding-left: 15%;\n}\n\n.listTitle {\n padding: 0 10px;\n width: fit-content;\n margin: 25px auto;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: bold;\n background: linear-gradient(\n to top,\n rgba(255, 217, 0, 0.3) 40%,\n transparent 40%\n );\n}\n\n.content {\n text-align: center;\n}\n\n.makeNewMeetingBtn {\n width: 300px;\n height: 150px;\n border: 1px;\n border-radius: 10px;\n padding: 10px;\n margin: 5px;\n background-color: bisque;\n}\n\n.grid {\n position: absolute;\n width: 100%;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, auto));\n grid-template-rows: repeat(auto-fill, minmax(150px, 160px));\n gap: 20px;\n padding: 20px;\n overflow: auto;\n}\n\n.gridscroll {\n position: relative;\n width: 85%;\n height: 75vh;\n background-color: gainsboro;\n overflow: auto;\n white-space: nowrap;\n display: inline-block;\n margin: 20px;\n border-radius: 5px;\n box-shadow: inset 0 2px 3px 2px rgb(197, 197, 197);\n}\n\n.searchGroup {\n position: relative;\n width: 85%;\n display: flex;\n margin: auto;\n justify-content: center;\n}\n\n.searchMeeting {\n border: none;\n background-color: rgb(233, 233, 233);\n border-radius: 10px;\n height: 30px;\n outline: none;\n margin: 0 10px;\n padding: 0 10px;\n}\n\n.searchbar {\n padding: 0 10px;\n}\n\n.searchBtn {\n width: 50px;\n height: 30px;\n background-color: rgb(233, 233, 233);\n border-radius: 10px;\n border: none;\n}\n\n.searchBtn:hover {\n background-color: rgb(200, 200, 200);\n}\n\n.searchMeeting:focus {\n outline: 1px solid gray;\n}\n.bombRightOut {\n -webkit-animation-name: bombRightOut;\n animation-name: bombRightOut;\n}\n\n.hvrBounceIn {\n display: inline-block;\n vertical-align: middle;\n transform: perspective(1px) translateZ(0);\n box-shadow: 0 0 1px rgba(0, 0, 0, 0);\n transition-duration: 1s;\n}\n.hvrBounceIn:hover,\n.hvrBounceIn:focus,\n.hvrBounceIn:active {\n transform: scale(1.05);\n transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);\n box-shadow: lemonchiffon;\n}\n",".historyItem {\n width: 100%;\n margin-bottom: 15px;\n box-shadow: 1px 1px 2px 0.5px gray;\n border-radius: 10px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.historyInfo:hover,\n.toggle:hover {\n cursor: pointer;\n}\n\n.historyInfo {\n display: flex;\n width: 100%;\n height: 100%;\n padding: 20px;\n border-radius: 10px 10px 0 0;\n}\n\n.historyInfo.clicked {\n padding: 20px 20px 10px 20px;\n}\n\n.historyDetails {\n border-top: 1px solid rgb(190, 190, 190);\n margin: 0 20px;\n padding: 10px 10px 20px 5px;\n}\n\n.clicked {\n background-color: rgba(255, 255, 255);\n}\n\n.historyInfo > div {\n display: inline-block;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n line-height: 25px;\n}\n\n.date {\n float: left;\n font-size: 12px;\n color: gray;\n padding-left: 5px;\n margin-right: 10px;\n}\n\n.topic {\n font-size: 16px;\n font-weight: bold;\n}\n\n.participants {\n font-size: 13px;\n padding-bottom: 10px;\n}\n\n.keywords {\n float: right;\n font-weight: normal;\n font-size: 14px;\n margin-left: auto;\n}\n\n.keyword {\n font-size: 12px;\n border-radius: 5px;\n padding: 5px 8px;\n margin: 3px;\n background-color: rgb(255, 237, 187);\n}\n\n.toggle {\n font-size: 15px;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: medium;\n padding: 5px 0;\n}\n\n.toggle.opened {\n font-weight: bold;\n border-bottom: 1px solid rgb(190, 190, 190);\n}\n",".memoContents {\n padding: 15px 15px 15px 15px;\n}\n","div {\n font-size: 14px;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: light;\n}\n\n.userName {\n font-weight: bold;\n}\n\n.summaryContainer {\n display: flex;\n justify-content: space-between;\n}\n\n.userContent {\n padding-top: 10px;\n}\n\n.summaryTitle {\n font-weight: bold;\n padding: 5px 0;\n text-align: right;\n}\n\n.summaryContent {\n padding: 5px 0;\n width: 100%;\n}\n",".originalTitle {\n width: fit-content;\n color: gray;\n border-bottom: 1px solid rgb(180, 180, 180);\n}\n\n.originalTitle:hover {\n cursor: pointer;\n}\n\n.originalContent {\n padding-top: 5px;\n}\n",".historyList {\n width: 85%;\n margin: 0 auto;\n height: 88vh;\n background-color: gainsboro;\n white-space: nowrap;\n border-radius: 10px;\n padding: 20px;\n overflow-x: auto;\n box-shadow: inset 0 2px 3px 2px rgb(197, 197, 197);\n}\n\n.list {\n list-style: none;\n padding-inline-start: 0px;\n margin-block: 0;\n}\n",".historyTitle {\n margin: 0 auto;\n width: fit-content;\n padding: 0 10px;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: bold;\n text-align: center;\n background: linear-gradient(\n to top,\n rgba(255, 217, 0, 0.3) 40%,\n transparent 40%\n );\n}\n\n.history {\n padding-left: 15%;\n padding-right: 25%;\n position: relative;\n width: 100%;\n}\n",".timeline {\n padding: 2px;\n display: flex;\n box-shadow: 1px 0 5px 1px rgb(200, 200, 200);\n flex-direction: column;\n align-items: center;\n width: 25%;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n overflow: scroll;\n}\n.date {\n width: 120px;\n float: left;\n font-size: 12px;\n color: gray;\n padding-left: 5px;\n}\n\n.timeline h2 {\n padding-top: 10px;\n margin-bottom: 0;\n}\n\n.timecontent {\n font-weight: bold;\n}\n",".registerForm{\n width: 93%;\n height: 40%;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 10px;\n position: relative;\n margin : auto;\n transform: translate(0, 20%);\n}",".loginForm{\n width: 90%;\n height: 20%;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 10px;\n position: relative;\n margin : auto;\n transform: translate(0, 20%);\n}\n.btndiv{\n display: flex;\n\n justify-content: space-between;\n}\n",".memoLog {\n width: calc(100% - 20px);\n height: 50%;\n z-index: 99;\n position: absolute;\n top: 55px;\n background-color: rgba(235, 235, 235, 0.7);\n box-shadow: 1px 1px 3px 1px rgb(134, 134, 134);\n backdrop-filter: blur(5px);\n padding: 10px;\n border-radius: 20px;\n overflow: auto;\n}\n\n.backdrop {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n z-index: 10;\n}\n\n.memoList {\n list-style: none;\n padding-inline-start: 0px;\n margin-block: 0;\n padding: 10px;\n}\n\n.zeroNote {\n height: 100%;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n",".memoItem {\n padding: 10px 20px;\n margin-bottom: 10px;\n box-shadow: 1px 1px 3px 1px gray;\n border-radius: 10px;\n}\n\n.memoItem:hover {\n background-color: rgba(205, 205, 205, 0.5);\n}\n\n.memoTopic {\n padding-bottom: 5px;\n font-size: 17px;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: medium;\n}\n\n.memoContent {\n height: 100px;\n overflow: auto;\n margin: 10px 0;\n color: rgb(70, 70, 70);\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: thin;\n border: 1px solid rgb(155, 155, 155);\n border-radius: 5px;\n}\n\n.memoDate {\n font-size: 12px;\n padding-left: 10px;\n color: gray;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: light;\n}\n",".memoView {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 50%;\n border-left: 2px solid #c8c8c8;\n height: 100%;\n align-content: center;\n border: none;\n box-shadow: 0 -1px 2px 2px rgba(46, 46, 46, 0.5);\n}\n\n.memoTitle {\n padding: 10px;\n}\n\n.memoArea {\n width: 100%;\n height: 100%;\n}\n\n.memoText {\n width: 100%;\n height: 100%;\n border: none;\n background-color: transparent;\n outline: none;\n font-size: 15px;\n letter-spacing: 0.5px;\n padding: 10px 40px 10px 20px;\n resize: none;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: light;\n color: rgb(55, 55, 55);\n}\n\n.logBtn {\n height: 30px;\n}\n\n.selectedMemo {\n height: 70%;\n padding: 0 20px;\n border-bottom: 1px solid rgb(212, 212, 212);\n overflow: auto;\n}\n\n.memoTopic {\n padding-bottom: 5px;\n font-size: 20px;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: bold;\n}\n\n.memoDate {\n font-size: 12px;\n padding-left: 10px;\n color: gray;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: light;\n}\n\n.memoContent {\n padding: 5px 40px 5px 0;\n font-size: 15px;\n color: rgb(55, 55, 55);\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: light;\n}\n\n.closeBtn {\n float: right;\n border: none;\n background-color: rgba(255, 255, 255, 0);\n}\n\n.memoListBtn {\n box-shadow: 1px 1px 1px 0.5px rgb(190, 190, 190);\n border: none;\n border-radius: 10px;\n font-size: 13px;\n padding: 8px;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: medium;\n background-color: rgb(233, 233, 233);\n}\n\n.clicked,\n.memoListBtn:hover {\n background-color: rgba(140, 140, 140, 0.5);\n}\n","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n.ql-container {\n box-sizing: border-box;\n font-family: Helvetica, Arial, sans-serif;\n font-size: 13px;\n height: 100%;\n margin: 0px;\n position: relative;\n}\n.ql-container.ql-disabled .ql-tooltip {\n visibility: hidden;\n}\n.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {\n pointer-events: none;\n}\n.ql-clipboard {\n left: -100000px;\n height: 1px;\n overflow-y: hidden;\n position: absolute;\n top: 50%;\n}\n.ql-clipboard p {\n margin: 0;\n padding: 0;\n}\n.ql-editor {\n box-sizing: border-box;\n line-height: 1.42;\n height: 100%;\n outline: none;\n overflow-y: auto;\n padding: 12px 15px;\n tab-size: 4;\n -moz-tab-size: 4;\n text-align: left;\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n.ql-editor > * {\n cursor: text;\n}\n.ql-editor p,\n.ql-editor ol,\n.ql-editor ul,\n.ql-editor pre,\n.ql-editor blockquote,\n.ql-editor h1,\n.ql-editor h2,\n.ql-editor h3,\n.ql-editor h4,\n.ql-editor h5,\n.ql-editor h6 {\n margin: 0;\n padding: 0;\n counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol,\n.ql-editor ul {\n padding-left: 1.5em;\n}\n.ql-editor ol > li,\n.ql-editor ul > li {\n list-style-type: none;\n}\n.ql-editor ul > li::before {\n content: '\\2022';\n}\n.ql-editor ul[data-checked=true],\n.ql-editor ul[data-checked=false] {\n pointer-events: none;\n}\n.ql-editor ul[data-checked=true] > li *,\n.ql-editor ul[data-checked=false] > li * {\n pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before,\n.ql-editor ul[data-checked=false] > li::before {\n color: #777;\n cursor: pointer;\n pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before {\n content: '\\2611';\n}\n.ql-editor ul[data-checked=false] > li::before {\n content: '\\2610';\n}\n.ql-editor li::before {\n display: inline-block;\n white-space: nowrap;\n width: 1.2em;\n}\n.ql-editor li:not(.ql-direction-rtl)::before {\n margin-left: -1.5em;\n margin-right: 0.3em;\n text-align: right;\n}\n.ql-editor li.ql-direction-rtl::before {\n margin-left: 0.3em;\n margin-right: -1.5em;\n}\n.ql-editor ol li:not(.ql-direction-rtl),\n.ql-editor ul li:not(.ql-direction-rtl) {\n padding-left: 1.5em;\n}\n.ql-editor ol li.ql-direction-rtl,\n.ql-editor ul li.ql-direction-rtl {\n padding-right: 1.5em;\n}\n.ql-editor ol li {\n counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n counter-increment: list-0;\n}\n.ql-editor ol li:before {\n content: counter(list-0, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n counter-increment: list-1;\n}\n.ql-editor ol li.ql-indent-1:before {\n content: counter(list-1, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-2 {\n counter-increment: list-2;\n}\n.ql-editor ol li.ql-indent-2:before {\n content: counter(list-2, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-2 {\n counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-3 {\n counter-increment: list-3;\n}\n.ql-editor ol li.ql-indent-3:before {\n content: counter(list-3, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-3 {\n counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-4 {\n counter-increment: list-4;\n}\n.ql-editor ol li.ql-indent-4:before {\n content: counter(list-4, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-4 {\n counter-reset: list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-5 {\n counter-increment: list-5;\n}\n.ql-editor ol li.ql-indent-5:before {\n content: counter(list-5, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-5 {\n counter-reset: list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-6 {\n counter-increment: list-6;\n}\n.ql-editor ol li.ql-indent-6:before {\n content: counter(list-6, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-6 {\n counter-reset: list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-7 {\n counter-increment: list-7;\n}\n.ql-editor ol li.ql-indent-7:before {\n content: counter(list-7, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-7 {\n counter-reset: list-8 list-9;\n}\n.ql-editor ol li.ql-indent-8 {\n counter-increment: list-8;\n}\n.ql-editor ol li.ql-indent-8:before {\n content: counter(list-8, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-8 {\n counter-reset: list-9;\n}\n.ql-editor ol li.ql-indent-9 {\n counter-increment: list-9;\n}\n.ql-editor ol li.ql-indent-9:before {\n content: counter(list-9, decimal) '. ';\n}\n.ql-editor .ql-indent-1:not(.ql-direction-rtl) {\n padding-left: 3em;\n}\n.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {\n padding-left: 4.5em;\n}\n.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {\n padding-right: 3em;\n}\n.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {\n padding-right: 4.5em;\n}\n.ql-editor .ql-indent-2:not(.ql-direction-rtl) {\n padding-left: 6em;\n}\n.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {\n padding-left: 7.5em;\n}\n.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {\n padding-right: 6em;\n}\n.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {\n padding-right: 7.5em;\n}\n.ql-editor .ql-indent-3:not(.ql-direction-rtl) {\n padding-left: 9em;\n}\n.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {\n padding-left: 10.5em;\n}\n.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {\n padding-right: 9em;\n}\n.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {\n padding-right: 10.5em;\n}\n.ql-editor .ql-indent-4:not(.ql-direction-rtl) {\n padding-left: 12em;\n}\n.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {\n padding-left: 13.5em;\n}\n.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {\n padding-right: 12em;\n}\n.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {\n padding-right: 13.5em;\n}\n.ql-editor .ql-indent-5:not(.ql-direction-rtl) {\n padding-left: 15em;\n}\n.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {\n padding-left: 16.5em;\n}\n.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {\n padding-right: 15em;\n}\n.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {\n padding-right: 16.5em;\n}\n.ql-editor .ql-indent-6:not(.ql-direction-rtl) {\n padding-left: 18em;\n}\n.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {\n padding-left: 19.5em;\n}\n.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {\n padding-right: 18em;\n}\n.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {\n padding-right: 19.5em;\n}\n.ql-editor .ql-indent-7:not(.ql-direction-rtl) {\n padding-left: 21em;\n}\n.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {\n padding-left: 22.5em;\n}\n.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {\n padding-right: 21em;\n}\n.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {\n padding-right: 22.5em;\n}\n.ql-editor .ql-indent-8:not(.ql-direction-rtl) {\n padding-left: 24em;\n}\n.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {\n padding-left: 25.5em;\n}\n.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {\n padding-right: 24em;\n}\n.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {\n padding-right: 25.5em;\n}\n.ql-editor .ql-indent-9:not(.ql-direction-rtl) {\n padding-left: 27em;\n}\n.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {\n padding-left: 28.5em;\n}\n.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {\n padding-right: 27em;\n}\n.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {\n padding-right: 28.5em;\n}\n.ql-editor .ql-video {\n display: block;\n max-width: 100%;\n}\n.ql-editor .ql-video.ql-align-center {\n margin: 0 auto;\n}\n.ql-editor .ql-video.ql-align-right {\n margin: 0 0 0 auto;\n}\n.ql-editor .ql-bg-black {\n background-color: #000;\n}\n.ql-editor .ql-bg-red {\n background-color: #e60000;\n}\n.ql-editor .ql-bg-orange {\n background-color: #f90;\n}\n.ql-editor .ql-bg-yellow {\n background-color: #ff0;\n}\n.ql-editor .ql-bg-green {\n background-color: #008a00;\n}\n.ql-editor .ql-bg-blue {\n background-color: #06c;\n}\n.ql-editor .ql-bg-purple {\n background-color: #93f;\n}\n.ql-editor .ql-color-white {\n color: #fff;\n}\n.ql-editor .ql-color-red {\n color: #e60000;\n}\n.ql-editor .ql-color-orange {\n color: #f90;\n}\n.ql-editor .ql-color-yellow {\n color: #ff0;\n}\n.ql-editor .ql-color-green {\n color: #008a00;\n}\n.ql-editor .ql-color-blue {\n color: #06c;\n}\n.ql-editor .ql-color-purple {\n color: #93f;\n}\n.ql-editor .ql-font-serif {\n font-family: Georgia, Times New Roman, serif;\n}\n.ql-editor .ql-font-monospace {\n font-family: Monaco, Courier New, monospace;\n}\n.ql-editor .ql-size-small {\n font-size: 0.75em;\n}\n.ql-editor .ql-size-large {\n font-size: 1.5em;\n}\n.ql-editor .ql-size-huge {\n font-size: 2.5em;\n}\n.ql-editor .ql-direction-rtl {\n direction: rtl;\n text-align: inherit;\n}\n.ql-editor .ql-align-center {\n text-align: center;\n}\n.ql-editor .ql-align-justify {\n text-align: justify;\n}\n.ql-editor .ql-align-right {\n text-align: right;\n}\n.ql-editor.ql-blank::before {\n color: rgba(0,0,0,0.6);\n content: attr(data-placeholder);\n font-style: italic;\n left: 15px;\n pointer-events: none;\n position: absolute;\n right: 15px;\n}\n.ql-snow.ql-toolbar:after,\n.ql-snow .ql-toolbar:after {\n clear: both;\n content: '';\n display: table;\n}\n.ql-snow.ql-toolbar button,\n.ql-snow .ql-toolbar button {\n background: none;\n border: none;\n cursor: pointer;\n display: inline-block;\n float: left;\n height: 24px;\n padding: 3px 5px;\n width: 28px;\n}\n.ql-snow.ql-toolbar button svg,\n.ql-snow .ql-toolbar button svg {\n float: left;\n height: 100%;\n}\n.ql-snow.ql-toolbar button:active:hover,\n.ql-snow .ql-toolbar button:active:hover {\n outline: none;\n}\n.ql-snow.ql-toolbar input.ql-image[type=file],\n.ql-snow .ql-toolbar input.ql-image[type=file] {\n display: none;\n}\n.ql-snow.ql-toolbar button:hover,\n.ql-snow .ql-toolbar button:hover,\n.ql-snow.ql-toolbar button:focus,\n.ql-snow .ql-toolbar button:focus,\n.ql-snow.ql-toolbar button.ql-active,\n.ql-snow .ql-toolbar button.ql-active,\n.ql-snow.ql-toolbar .ql-picker-label:hover,\n.ql-snow .ql-toolbar .ql-picker-label:hover,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active,\n.ql-snow.ql-toolbar .ql-picker-item:hover,\n.ql-snow .ql-toolbar .ql-picker-item:hover,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected {\n color: #06c;\n}\n.ql-snow.ql-toolbar button:hover .ql-fill,\n.ql-snow .ql-toolbar button:hover .ql-fill,\n.ql-snow.ql-toolbar button:focus .ql-fill,\n.ql-snow .ql-toolbar button:focus .ql-fill,\n.ql-snow.ql-toolbar button.ql-active .ql-fill,\n.ql-snow .ql-toolbar button.ql-active .ql-fill,\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,\n.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {\n fill: #06c;\n}\n.ql-snow.ql-toolbar button:hover .ql-stroke,\n.ql-snow .ql-toolbar button:hover .ql-stroke,\n.ql-snow.ql-toolbar button:focus .ql-stroke,\n.ql-snow .ql-toolbar button:focus .ql-stroke,\n.ql-snow.ql-toolbar button.ql-active .ql-stroke,\n.ql-snow .ql-toolbar button.ql-active .ql-stroke,\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,\n.ql-snow.ql-toolbar button:hover .ql-stroke-miter,\n.ql-snow .ql-toolbar button:hover .ql-stroke-miter,\n.ql-snow.ql-toolbar button:focus .ql-stroke-miter,\n.ql-snow .ql-toolbar button:focus .ql-stroke-miter,\n.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,\n.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {\n stroke: #06c;\n}\n@media (pointer: coarse) {\n .ql-snow.ql-toolbar button:hover:not(.ql-active),\n .ql-snow .ql-toolbar button:hover:not(.ql-active) {\n color: #444;\n }\n .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,\n .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,\n .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,\n .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {\n fill: #444;\n }\n .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,\n .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,\n .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,\n .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {\n stroke: #444;\n }\n}\n.ql-snow {\n box-sizing: border-box;\n}\n.ql-snow * {\n box-sizing: border-box;\n}\n.ql-snow .ql-hidden {\n display: none;\n}\n.ql-snow .ql-out-bottom,\n.ql-snow .ql-out-top {\n visibility: hidden;\n}\n.ql-snow .ql-tooltip {\n position: absolute;\n transform: translateY(10px);\n}\n.ql-snow .ql-tooltip a {\n cursor: pointer;\n text-decoration: none;\n}\n.ql-snow .ql-tooltip.ql-flip {\n transform: translateY(-10px);\n}\n.ql-snow .ql-formats {\n display: inline-block;\n vertical-align: middle;\n}\n.ql-snow .ql-formats:after {\n clear: both;\n content: '';\n display: table;\n}\n.ql-snow .ql-stroke {\n fill: none;\n stroke: #444;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 2;\n}\n.ql-snow .ql-stroke-miter {\n fill: none;\n stroke: #444;\n stroke-miterlimit: 10;\n stroke-width: 2;\n}\n.ql-snow .ql-fill,\n.ql-snow .ql-stroke.ql-fill {\n fill: #444;\n}\n.ql-snow .ql-empty {\n fill: none;\n}\n.ql-snow .ql-even {\n fill-rule: evenodd;\n}\n.ql-snow .ql-thin,\n.ql-snow .ql-stroke.ql-thin {\n stroke-width: 1;\n}\n.ql-snow .ql-transparent {\n opacity: 0.4;\n}\n.ql-snow .ql-direction svg:last-child {\n display: none;\n}\n.ql-snow .ql-direction.ql-active svg:last-child {\n display: inline;\n}\n.ql-snow .ql-direction.ql-active svg:first-child {\n display: none;\n}\n.ql-snow .ql-editor h1 {\n font-size: 2em;\n}\n.ql-snow .ql-editor h2 {\n font-size: 1.5em;\n}\n.ql-snow .ql-editor h3 {\n font-size: 1.17em;\n}\n.ql-snow .ql-editor h4 {\n font-size: 1em;\n}\n.ql-snow .ql-editor h5 {\n font-size: 0.83em;\n}\n.ql-snow .ql-editor h6 {\n font-size: 0.67em;\n}\n.ql-snow .ql-editor a {\n text-decoration: underline;\n}\n.ql-snow .ql-editor blockquote {\n border-left: 4px solid #ccc;\n margin-bottom: 5px;\n margin-top: 5px;\n padding-left: 16px;\n}\n.ql-snow .ql-editor code,\n.ql-snow .ql-editor pre {\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n.ql-snow .ql-editor pre {\n white-space: pre-wrap;\n margin-bottom: 5px;\n margin-top: 5px;\n padding: 5px 10px;\n}\n.ql-snow .ql-editor code {\n font-size: 85%;\n padding: 2px 4px;\n}\n.ql-snow .ql-editor pre.ql-syntax {\n background-color: #23241f;\n color: #f8f8f2;\n overflow: visible;\n}\n.ql-snow .ql-editor img {\n max-width: 100%;\n}\n.ql-snow .ql-picker {\n color: #444;\n display: inline-block;\n float: left;\n font-size: 14px;\n font-weight: 500;\n height: 24px;\n position: relative;\n vertical-align: middle;\n}\n.ql-snow .ql-picker-label {\n cursor: pointer;\n display: inline-block;\n height: 100%;\n padding-left: 8px;\n padding-right: 2px;\n position: relative;\n width: 100%;\n}\n.ql-snow .ql-picker-label::before {\n display: inline-block;\n line-height: 22px;\n}\n.ql-snow .ql-picker-options {\n background-color: #fff;\n display: none;\n min-width: 100%;\n padding: 4px 8px;\n position: absolute;\n white-space: nowrap;\n}\n.ql-snow .ql-picker-options .ql-picker-item {\n cursor: pointer;\n display: block;\n padding-bottom: 5px;\n padding-top: 5px;\n}\n.ql-snow .ql-picker.ql-expanded .ql-picker-label {\n color: #ccc;\n z-index: 2;\n}\n.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {\n fill: #ccc;\n}\n.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {\n stroke: #ccc;\n}\n.ql-snow .ql-picker.ql-expanded .ql-picker-options {\n display: block;\n margin-top: -1px;\n top: 100%;\n z-index: 1;\n}\n.ql-snow .ql-color-picker,\n.ql-snow .ql-icon-picker {\n width: 28px;\n}\n.ql-snow .ql-color-picker .ql-picker-label,\n.ql-snow .ql-icon-picker .ql-picker-label {\n padding: 2px 4px;\n}\n.ql-snow .ql-color-picker .ql-picker-label svg,\n.ql-snow .ql-icon-picker .ql-picker-label svg {\n right: 4px;\n}\n.ql-snow .ql-icon-picker .ql-picker-options {\n padding: 4px 0px;\n}\n.ql-snow .ql-icon-picker .ql-picker-item {\n height: 24px;\n width: 24px;\n padding: 2px 4px;\n}\n.ql-snow .ql-color-picker .ql-picker-options {\n padding: 3px 5px;\n width: 152px;\n}\n.ql-snow .ql-color-picker .ql-picker-item {\n border: 1px solid transparent;\n float: left;\n height: 16px;\n margin: 2px;\n padding: 0px;\n width: 16px;\n}\n.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {\n position: absolute;\n margin-top: -9px;\n right: 0;\n top: 50%;\n width: 18px;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {\n content: attr(data-label);\n}\n.ql-snow .ql-picker.ql-header {\n width: 98px;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item::before {\n content: 'Normal';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]::before {\n content: 'Heading 1';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]::before {\n content: 'Heading 2';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]::before {\n content: 'Heading 3';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]::before {\n content: 'Heading 4';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]::before {\n content: 'Heading 5';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]::before {\n content: 'Heading 6';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]::before {\n font-size: 2em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]::before {\n font-size: 1.5em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]::before {\n font-size: 1.17em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]::before {\n font-size: 1em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]::before {\n font-size: 0.83em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]::before {\n font-size: 0.67em;\n}\n.ql-snow .ql-picker.ql-font {\n width: 108px;\n}\n.ql-snow .ql-picker.ql-font .ql-picker-label::before,\n.ql-snow .ql-picker.ql-font .ql-picker-item::before {\n content: 'Sans Serif';\n}\n.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {\n content: 'Serif';\n}\n.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {\n content: 'Monospace';\n}\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {\n font-family: Georgia, Times New Roman, serif;\n}\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {\n font-family: Monaco, Courier New, monospace;\n}\n.ql-snow .ql-picker.ql-size {\n width: 98px;\n}\n.ql-snow .ql-picker.ql-size .ql-picker-label::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item::before {\n content: 'Normal';\n}\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {\n content: 'Small';\n}\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {\n content: 'Large';\n}\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {\n content: 'Huge';\n}\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {\n font-size: 10px;\n}\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {\n font-size: 18px;\n}\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {\n font-size: 32px;\n}\n.ql-snow .ql-color-picker.ql-background .ql-picker-item {\n background-color: #fff;\n}\n.ql-snow .ql-color-picker.ql-color .ql-picker-item {\n background-color: #000;\n}\n.ql-toolbar.ql-snow {\n border: 1px solid #ccc;\n box-sizing: border-box;\n font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;\n padding: 8px;\n}\n.ql-toolbar.ql-snow .ql-formats {\n margin-right: 15px;\n}\n.ql-toolbar.ql-snow .ql-picker-label {\n border: 1px solid transparent;\n}\n.ql-toolbar.ql-snow .ql-picker-options {\n border: 1px solid transparent;\n box-shadow: rgba(0,0,0,0.2) 0 2px 8px;\n}\n.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {\n border-color: #ccc;\n}\n.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {\n border-color: #ccc;\n}\n.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,\n.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {\n border-color: #000;\n}\n.ql-toolbar.ql-snow + .ql-container.ql-snow {\n border-top: 0px;\n}\n.ql-snow .ql-tooltip {\n background-color: #fff;\n border: 1px solid #ccc;\n box-shadow: 0px 0px 5px #ddd;\n color: #444;\n padding: 5px 12px;\n white-space: nowrap;\n}\n.ql-snow .ql-tooltip::before {\n content: \"Visit URL:\";\n line-height: 26px;\n margin-right: 8px;\n}\n.ql-snow .ql-tooltip input[type=text] {\n display: none;\n border: 1px solid #ccc;\n font-size: 13px;\n height: 26px;\n margin: 0px;\n padding: 3px 5px;\n width: 170px;\n}\n.ql-snow .ql-tooltip a.ql-preview {\n display: inline-block;\n max-width: 200px;\n overflow-x: hidden;\n text-overflow: ellipsis;\n vertical-align: top;\n}\n.ql-snow .ql-tooltip a.ql-action::after {\n border-right: 1px solid #ccc;\n content: 'Edit';\n margin-left: 16px;\n padding-right: 8px;\n}\n.ql-snow .ql-tooltip a.ql-remove::before {\n content: 'Remove';\n margin-left: 8px;\n}\n.ql-snow .ql-tooltip a {\n line-height: 26px;\n}\n.ql-snow .ql-tooltip.ql-editing a.ql-preview,\n.ql-snow .ql-tooltip.ql-editing a.ql-remove {\n display: none;\n}\n.ql-snow .ql-tooltip.ql-editing input[type=text] {\n display: inline-block;\n}\n.ql-snow .ql-tooltip.ql-editing a.ql-action::after {\n border-right: 0px;\n content: 'Save';\n padding-right: 0px;\n}\n.ql-snow .ql-tooltip[data-mode=link]::before {\n content: \"Enter link:\";\n}\n.ql-snow .ql-tooltip[data-mode=formula]::before {\n content: \"Enter formula:\";\n}\n.ql-snow .ql-tooltip[data-mode=video]::before {\n content: \"Enter video:\";\n}\n.ql-snow a {\n color: #06c;\n}\n.ql-container.ql-snow {\n border: 1px solid #ccc;\n}\n",".controllers {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 55px;\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 1px 0 3px -3px rgb(70, 70, 70);\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.controllers .controllers_col {\n width: 100%;\n height: 100%;\n\n display: flex;\n align-items: center;\n}\n\n.controllers_col1 {\n padding-left: 50px;\n width: 85%;\n}\n\n.controllers_col2 {\n width: 15%;\n}\n\n.controllers .buttons {\n display: flex;\n justify-content: center;\n}\n\n.controllers .buttons button {\n padding: 5px 15px;\n margin-right: 10px;\n background: none;\n border: none;\n border-radius: 5px;\n transition: all 0.2s ease-in-out;\n}\n\n.controllers .leave {\n padding-right: 10px;\n font-size: 14px;\n border-radius: 10px;\n color: #ff9c89;\n border: 1px solid #ff9c89;\n transition: all 0.2s ease-in-out;\n letter-spacing: 1px;\n}\n\n.controllers .leave:hover {\n border: 1px solid #ff9c89;\n background-color: #ff9c89;\n color: white;\n}\n",".streamBox {\n position: relative;\n width: 50%;\n height: 100%;\n background-color: rgb(83, 83, 83);\n}\n\n.streams {\n width: 100%;\n padding: 10px 30px;\n}\n\n.streams video {\n width: 300px;\n height: 225px;\n border-radius: 5px;\n margin: 10px;\n\n transform: rotateY(180deg);\n -webkit-transform: rotateY(180deg); /* Safari and Chrome */\n -moz-transform: rotateY(180deg); /* Firefox */\n}\n\n/* row 1 */\n.streams .people1 {\n width: 70%;\n height: 70%;\n}\n\n/* row 1 */\n.streams .people2 {\n width: 47%;\n height: 47%;\n}\n\n/* row 2 */\n.streams .people3,\n.streams .people4 {\n width: 45%;\n height: 42%;\n}\n\n/* row 2 */\n.streams .people5,\n.streams .people6 {\n width: 32%;\n height: 32%;\n}\n\n.streams .userNickname {\n margin-top: 5px;\n text-align: center;\n color: white;\n font-size: 18px;\n font-weight: 500;\n letter-spacing: 1px;\n}\n\n.speakerIcon {\n font-size: 20px;\n height: 50px;\n margin: 0 10px;\n line-height: 50px;\n}\n\n.sttBox {\n width: 100%;\n position: absolute;\n bottom: 70px;\n display: flex;\n}\n\n.sttText {\n height: 50px;\n margin-right: 20px;\n border-radius: 10px;\n background-color: rgba(255, 255, 255, 0.7);\n padding: 10px 15px;\n overflow: auto;\n color: rgb(83, 83, 83);\n font-size: 13px;\n width: 100%;\n letter-spacing: 1px;\n}\n\n.meetingLog {\n background-color: rgba(255, 255, 255, 0.7);\n height: 32%;\n margin: 10px 20px;\n padding: 20px;\n border-radius: 10px;\n overflow: auto;\n}\n\n.logOn {\n height: 340px;\n padding: 0 110px;\n}\n\n.logOn video {\n width: 200px;\n height: 150px;\n}\n\n.closeBtn {\n float: right;\n border: none;\n background-color: rgba(255, 255, 255, 0);\n}\n\n.meetingTopic {\n padding-bottom: 5px;\n font-size: 18px;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: bold;\n}\n\n.meetingDate {\n font-size: 12px;\n padding-left: 10px;\n color: gray;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: light;\n}\n\n.zeroNote {\n padding: 10px;\n}\n",".meetingHeader {\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 4px 3px -3px rgb(70, 70, 70);\n padding: 10px;\n display: flex;\n justify-content: space-between;\n line-height: 35px;\n}\n\n.roomName {\n padding: 0 10px;\n font-size: 16px;\n background-color: rgba(0, 0, 0, 0.3);\n border-radius: 10px;\n color: white;\n}\n\n.roomName:hover {\n background-color: rgba(0, 0, 0, 0.5);\n cursor: pointer;\n}\n\n.topicForm input {\n background-color: rgba(0, 0, 0, 0.5);\n border: none;\n width: 200px;\n height: 35px;\n outline: none;\n margin: 0 10px;\n padding: 0 10px;\n text-align: center;\n font-size: 15px;\n border-radius: 10px;\n color: white;\n}\n\n.topicForm input:disabled {\n font-weight: bold;\n}\n\n.topicForm input:focus {\n border-bottom: 1px solid gray;\n}\n\n.topicForm {\n line-height: 35px;\n}\n\n.topicForm > button {\n width: 50px;\n height: 35px;\n border-radius: 10px;\n border: none;\n background-color: rgba(255, 255, 255, 0);\n}\n\n.topicForm > button:hover {\n background-color: rgba(255, 255, 255, 0.3);\n}\n",".meetingLog {\n width: 50%;\n height: 50%;\n z-index: 99;\n position: absolute;\n top: 55px;\n background-color: rgba(255, 255, 255, 0.7);\n box-shadow: 1px 1px 3px 1px rgb(62, 62, 62);\n backdrop-filter: blur(5px);\n padding: 10px;\n border-radius: 20px;\n margin: 10px;\n overflow: auto;\n}\n\n.backdrop {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n z-index: 10;\n}\n\n.zeroNote {\n height: 100%;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.logList {\n padding: 0 10px;\n margin: 10px 0;\n}\n",".logItem {\n padding: 10px 20px;\n margin-bottom: 10px;\n box-shadow: 1px 1px 3px 1px rgb(119, 119, 119);\n border-radius: 10px;\n}\n\n.logItem:hover {\n background-color: rgba(149, 149, 149, 0.5);\n}\n\n.topic {\n padding-bottom: 5px;\n font-size: 16px;\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: medium;\n}\n\n.date {\n font-size: 12px;\n padding-left: 10px;\n color: rgb(60, 60, 60);\n font-family: \"Noto Sans CJK KR\";\n font-style: normal;\n font-weight: light;\n}\n",".loading {\n position: absolute;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n background: #ffffffb7;\n z-index: 999;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.loadingText {\n text-align: center;\n font-size: 17px;\n}\n",".meetingRoomPage {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n",".sidebar {\n display: flex;\n box-shadow: 1px 0 3px 1px rgb(227, 227, 227);\n flex-direction: column;\n align-items: center;\n width: 15%;\n height: 100%;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n text-align: center;\n z-index: 99;\n background-color: #f9f9f9;\n}\n\n.logo {\n font-size: 30px;\n height: 120px;\n}\n\n.logo:hover {\n cursor: pointer;\n}\n\n.userProfile {\n padding: 20px 0 20px 0;\n width: 100%;\n text-align: center;\n border-top: 1px solid rgb(219, 219, 219);\n border-bottom: 1px solid rgb(219, 219, 219);\n}\n\n.userName {\n font-size: 18px;\n}\n\n.userEmail {\n margin-top: 3px;\n font-size: 12px;\n color: gray;\n}\n\n.menu {\n width: 100%;\n}\n\n.menuTitle {\n display: inline-block;\n width: fit-content;\n font-size: 15px;\n font-weight: bold;\n}\n\n.menuContent {\n width: 100%;\n padding-top: 10px;\n overflow: auto;\n}\n\n.meeting {\n padding: 0 20px;\n height: 30px;\n font-size: 14px;\n padding-bottom: 8px;\n line-height: 30px;\n border-radius: 5px;\n color: dimgray;\n}\n\n.meeting:hover {\n cursor: pointer;\n background-color: #e7e7e7;\n}\n\n.myPage {\n width: 100%;\n border-top: 1px solid rgb(219, 219, 219);\n position: absolute;\n bottom: 0;\n padding: 20px;\n color: dimgray;\n}\n",".logoutBtn{\n margin-top: 10px;\n}\n\n.btn{\n background-color: white;\n border-radius: 5px;\n color: #ff9c89;\n border: 1px solid #ff9c89;\n padding: 5px 10px;\n font-weight: bold;\n}"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/Frontend/build/static/js/main.29e802a0.js b/Frontend/build/static/js/main.29e802a0.js
new file mode 100644
index 00000000..62bf20f2
--- /dev/null
+++ b/Frontend/build/static/js/main.29e802a0.js
@@ -0,0 +1,3 @@
+/*! For license information please see main.29e802a0.js.LICENSE.txt */
+!function(){var e={55:function(e){e.exports={current_host:"15.164.18.253",current_port:"",socket_port:"3000"}},3361:function(e,t,n){"use strict";n.d(t,{Z:function(){return oe}});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?u(_,--y):0,m--,10===b&&(m=1,v--),b}function S(){return b=y2||T(b)>3?"":" "}function N(e,t){for(;--t&&S()&&!(b<48||b>102||b>57&&b<65||b>70&&b<97););return O(e,C()+(t<6&&32==E()&&32==S()))}function L(e){for(;S();)switch(b){case e:return y;case 34:case 39:34!==e&&39!==e&&L(b);break;case 40:41===e&&L(e);break;case 92:S()}return y}function M(e,t){for(;S()&&e+b!==57&&(e+b!==84||47!==E()););return"/*"+O(t,y-1)+"*"+i(47===e?e:S())}function I(e){for(;!T(E());)S();return O(e,y)}var D="-ms-",Z="-moz-",F="-webkit-",B="comm",q="rule",z="decl",U="@keyframes";function W(e,t){for(var n="",r=p(e),o=0;o0&&d(Z)-g&&h(b>32?Y(Z+";",r,n,g-1):Y(l(Z," ","")+";",r,n,g-2),p);break;case 59:Z+=";";default:if(h(D=K(Z,t,n,v,m,o,f,R,P=[],L=[],g),a),123===T)if(0===m)$(Z,t,D,D,P,a,g,f,L);else switch(99===y&&110===u(Z,3)?100:y){case 100:case 109:case 115:$(e,D,D,r&&h(K(e,D,D,0,0,o,f,R,o,P=[],g),L),o,L,g,f,r?P:L);break;default:$(Z,D,D,D,[""],L,0,f,L)}}v=m=b=0,w=O=1,R=Z="",g=s;break;case 58:g=1+d(Z),b=_;default:if(w<1)if(123==T)--w;else if(125==T&&0==w++&&125==x())continue;switch(Z+=i(T),T*w){case 38:O=m>0?1:(Z+="\f",-1);break;case 44:f[v++]=(d(Z)-1)*O,O=1;break;case 64:45===E()&&(Z+=A(S())),y=E(),m=g=d(R=Z+=I(C())),T++;break;case 45:45===_&&2==d(Z)&&(w=0)}}return a}function K(e,t,n,r,i,a,c,u,d,h,v){for(var m=i-1,g=0===i?a:[""],y=p(g),b=0,_=0,k=0;b0?g[x]+" "+S:l(S,/&\f/g,g[x])))&&(d[k++]=E);return w(e,t,n,0===i?q:u,d,h,v)}function G(e,t,n){return w(e,t,n,B,i(b),f(e,2,-2),0)}function Y(e,t,n,r){return w(e,t,n,z,f(e,0,r),f(e,r+1,-1),r)}var J=function(e,t,n){for(var r=0,o=0;r=o,o=E(),38===r&&12===o&&(t[n]=1),!T(o);)S();return O(e,y)},Q=function(e,t){return P(function(e,t){var n=-1,r=44;do{switch(T(r)){case 0:38===r&&12===E()&&(t[n]=1),e[n]+=J(y-1,t,n);break;case 2:e[n]+=A(r);break;case 4:if(44===r){e[++n]=58===E()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=i(r)}}while(r=S());return e}(R(e),t))},X=new WeakMap,ee=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||X.get(n))&&!r){X.set(e,!0);for(var o=[],i=Q(t,o),a=n.props,s=0,l=0;s6)switch(u(e,t+1)){case 109:if(45!==u(e,t+4))break;case 102:return l(e,/(.+:)(.+)-([^]+)/,"$1"+F+"$2-$3$1"+Z+(108==u(e,t+3)?"$3":"$2-$3"))+e;case 115:return~c(e,"stretch")?ne(l(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==u(e,t+1))break;case 6444:switch(u(e,d(e)-3-(~c(e,"!important")&&10))){case 107:return l(e,":",":"+F)+e;case 101:return l(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+F+(45===u(e,14)?"inline-":"")+"box$3$1"+F+"$2$3$1"+D+"$2box$3")+e}break;case 5936:switch(u(e,t+11)){case 114:return F+e+D+l(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return F+e+D+l(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return F+e+D+l(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return F+e+D+e+e}return e}var re=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case z:e.return=ne(e.value,e.length);break;case U:return W([k(e,{value:l(e.value,"@","@"+F)})],r);case q:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return W([k(e,{props:[l(t,/:(read-\w+)/,":"+Z+"$1")]})],r);case"::placeholder":return W([k(e,{props:[l(t,/:(plac\w+)/,":"+F+"input-$1")]}),k(e,{props:[l(t,/:(plac\w+)/,":"+Z+"$1")]}),k(e,{props:[l(t,/:(plac\w+)/,D+"input-$1")]})],r)}return""}))}}],oe=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var o=e.stylisPlugins||re;var i,a,s={},l=[];i=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(o){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)},o={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},i=n(9797),a=/[A-Z]|^ms/g,s=/_EMO_([^_]+?)_([^]*?)_EMO_/g,l=function(e){return 45===e.charCodeAt(1)},c=function(e){return null!=e&&"boolean"!==typeof e},u=(0,i.Z)((function(e){return l(e)?e:e.replace(a,"-$&").toLowerCase()})),f=function(e,t){switch(e){case"animation":case"animationName":if("string"===typeof t)return t.replace(s,(function(e,t,n){return p={name:t,styles:n,next:p},t}))}return 1===o[e]||l(e)||"number"!==typeof t||0===t?t:t+"px"};function d(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return p={name:n.name,styles:n.styles,next:p},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)p={name:r.name,styles:r.styles,next:p},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:"light")?{main:y[200],light:y[50],dark:y[400]}:{main:y[700],light:y[400],dark:y[800]}}(n),C=e.secondary||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:v[200],light:v[50],dark:v[400]}:{main:v[500],light:v[300],dark:v[700]}}(n),O=e.error||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:m[500],light:m[300],dark:m[700]}:{main:m[700],light:m[400],dark:m[800]}}(n),T=e.info||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:b[400],light:b[300],dark:b[700]}:{main:b[700],light:b[500],dark:b[900]}}(n),R=e.success||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:_[400],light:_[300],dark:_[700]}:{main:_[800],light:_[500],dark:_[900]}}(n),P=e.warning||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:g[400],light:g[300],dark:g[700]}:{main:"#ed6c02",light:g[500],dark:g[900]}}(n);function A(e){return(0,d.mi)(e,x.text.primary)>=l?x.text.primary:k.text.primary}var j=function(e){var t=e.color,n=e.name,o=e.mainShade,a=void 0===o?500:o,s=e.lightShade,l=void 0===s?300:s,c=e.darkShade,f=void 0===c?700:c;if(!(t=(0,r.Z)({},t)).main&&t[a]&&(t.main=t[a]),!t.hasOwnProperty("main"))throw new Error((0,i.Z)(11,n?" (".concat(n,")"):"",a));if("string"!==typeof t.main)throw new Error((0,i.Z)(12,n?" (".concat(n,")"):"",JSON.stringify(t.main)));return S(t,"light",l,u),S(t,"dark",f,u),t.contrastText||(t.contrastText=A(t.main)),t},N={dark:x,light:k};return(0,a.Z)((0,r.Z)({common:(0,r.Z)({},p),mode:n,primary:j({color:E,name:"primary"}),secondary:j({color:C,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:j({color:O,name:"error"}),warning:j({color:P,name:"warning"}),info:j({color:T,name:"info"}),success:j({color:R,name:"success"}),grey:h,contrastThreshold:l,getContrastText:A,augmentColor:j,tonalOffset:u},N[n]),f)}var C=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];var O={textTransform:"uppercase"},T='"Roboto", "Helvetica", "Arial", sans-serif';function R(e,t){var n="function"===typeof t?t(e):t,i=n.fontFamily,s=void 0===i?T:i,l=n.fontSize,c=void 0===l?14:l,u=n.fontWeightLight,f=void 0===u?300:u,d=n.fontWeightRegular,p=void 0===d?400:d,h=n.fontWeightMedium,v=void 0===h?500:h,m=n.fontWeightBold,g=void 0===m?700:m,y=n.htmlFontSize,b=void 0===y?16:y,_=n.allVariants,w=n.pxToRem,k=(0,o.Z)(n,C);var x=c/14,S=w||function(e){return"".concat(e/b*x,"rem")},E=function(e,t,n,o,i){return(0,r.Z)({fontFamily:s,fontWeight:e,fontSize:S(t),lineHeight:n},s===T?{letterSpacing:"".concat((a=o/t,Math.round(1e5*a)/1e5),"em")}:{},i,_);var a},R={h1:E(f,96,1.167,-1.5),h2:E(f,60,1.2,-.5),h3:E(p,48,1.167,0),h4:E(p,34,1.235,.25),h5:E(p,24,1.334,0),h6:E(v,20,1.6,.15),subtitle1:E(p,16,1.75,.15),subtitle2:E(v,14,1.57,.1),body1:E(p,16,1.5,.15),body2:E(p,14,1.43,.15),button:E(v,14,1.75,.4,O),caption:E(p,12,1.66,.4),overline:E(p,12,2.66,1,O),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,a.Z)((0,r.Z)({htmlFontSize:b,pxToRem:S,fontFamily:s,fontSize:c,fontWeightLight:f,fontWeightRegular:p,fontWeightMedium:v,fontWeightBold:g},R),k,{clone:!1})}function P(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(.2,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(.14,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(.12,")")].join(",")}var A=["none",P(0,2,1,-1,0,1,1,0,0,1,3,0),P(0,3,1,-2,0,2,2,0,0,1,5,0),P(0,3,3,-2,0,3,4,0,0,1,8,0),P(0,2,4,-1,0,4,5,0,0,1,10,0),P(0,3,5,-1,0,5,8,0,0,1,14,0),P(0,3,5,-1,0,6,10,0,0,1,18,0),P(0,4,5,-2,0,7,10,1,0,2,16,1),P(0,5,5,-3,0,8,10,1,0,3,14,2),P(0,5,6,-3,0,9,12,1,0,3,16,2),P(0,6,6,-3,0,10,14,1,0,4,18,3),P(0,6,7,-4,0,11,15,1,0,4,20,3),P(0,7,8,-4,0,12,17,2,0,5,22,4),P(0,7,8,-4,0,13,19,2,0,5,24,4),P(0,7,9,-4,0,14,21,2,0,5,26,4),P(0,8,9,-5,0,15,22,2,0,6,28,5),P(0,8,10,-5,0,16,24,2,0,6,30,5),P(0,8,11,-5,0,17,26,2,0,6,32,5),P(0,9,11,-5,0,18,28,2,0,7,34,6),P(0,9,12,-6,0,19,29,2,0,7,36,6),P(0,10,13,-6,0,20,31,3,0,8,38,7),P(0,10,13,-6,0,21,33,3,0,8,40,7),P(0,10,14,-6,0,22,35,3,0,8,42,7),P(0,11,14,-7,0,23,36,3,0,9,44,8),P(0,11,15,-7,0,24,38,3,0,9,46,8)],j=["duration","easing","delay"],N={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},L={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function M(e){return"".concat(Math.round(e),"ms")}function I(e){if(!e)return 0;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}function D(e){var t=(0,r.Z)({},N,e.easing),n=(0,r.Z)({},L,e.duration);return(0,r.Z)({getAutoHeightDuration:I,create:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.duration,a=void 0===i?n.standard:i,s=r.easing,l=void 0===s?t.easeInOut:s,c=r.delay,u=void 0===c?0:c;(0,o.Z)(r,j);return(Array.isArray(e)?e:[e]).map((function(e){return"".concat(e," ").concat("string"===typeof a?a:M(a)," ").concat(l," ").concat("string"===typeof u?u:M(u))})).join(",")}},e,{easing:t,duration:n})}var Z={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},F=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function B(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.mixins,n=void 0===t?{}:t,u=e.palette,d=void 0===u?{}:u,p=e.transitions,h=void 0===p?{}:p,v=e.typography,m=void 0===v?{}:v,g=(0,o.Z)(e,F);if(e.vars)throw new Error((0,i.Z)(18));var y=E(d),b=(0,s.Z)(e),_=(0,a.Z)(b,{mixins:f(b.breakpoints,n),palette:y,shadows:A.slice(),typography:R(y,m),transitions:D(h),zIndex:(0,r.Z)({},Z)});_=(0,a.Z)(_,g);for(var w=arguments.length,k=new Array(w>1?w-1:0),x=1;x0&&void 0!==arguments[0]?arguments[0]:{},t=e.themeId,n=e.defaultTheme,l=void 0===n?m:n,c=e.rootShouldForwardProp,u=void 0===c?v:c,f=e.slotShouldForwardProp,y=void 0===f?v:f,b=function(e){return(0,p.Z)((0,a.Z)({},e,{theme:g((0,a.Z)({},e,{defaultTheme:l,themeId:t}))}))};return b.__mui_systemSx=!0,function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,s.Co)(e,(function(e){return e.filter((function(e){return!(null!=e&&e.__mui_systemSx)}))}));var c=n.name,f=n.slot,p=n.skipVariantsResolver,m=n.skipSx,_=n.overridesResolver,w=(0,i.Z)(n,h),k=void 0!==p?p:f&&"Root"!==f||!1,x=m||!1;var S=v;"Root"===f?S=u:f?S=y:function(e){return"string"===typeof e&&e.charCodeAt(0)>96}(e)&&(S=void 0);var E=(0,s.ZP)(e,(0,a.Z)({shouldForwardProp:S,label:undefined},w)),C=function(n){for(var i=arguments.length,s=new Array(i>1?i-1:0),u=1;u0){var v=new Array(h).fill("");(p=[].concat((0,r.Z)(n),(0,r.Z)(v))).raw=[].concat((0,r.Z)(n.raw),(0,r.Z)(v))}else"function"===typeof n&&n.__emotion_real!==n&&(p=function(e){return n((0,a.Z)({},e,{theme:g((0,a.Z)({},e,{defaultTheme:l,themeId:t}))}))});var m=E.apply(void 0,[p].concat((0,r.Z)(f)));return e.muiName&&(m.muiName=e.muiName),m};return E.withConfig&&(C.withConfig=E.withConfig),C}}({themeId:b.Z,defaultTheme:y.Z,rootShouldForwardProp:_}),x=k},1046:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var r=n(5735);var o=n(418);function i(e){var t=e.props,n=e.name,i=e.defaultTheme,a=e.themeId,s=(0,o.Z)(i);a&&(s=s[a]||s);var l=function(e){var t=e.theme,n=e.name,o=e.props;return t&&t.components&&t.components[n]&&t.components[n].defaultProps?(0,r.Z)(t.components[n].defaultProps,o):o}({theme:s,name:n,props:t});return l}var a=n(6482),s=n(988);function l(e){return i({props:e.props,name:e.name,defaultTheme:a.Z,themeId:s.Z})}},4036:function(e,t,n){"use strict";var r=n(7312);t.Z=r.Z},9201:function(e,t,n){"use strict";n.d(t,{Z:function(){return b}});var r=n(7462),o=n(2791),i=n(3366),a=n(8182),s=n(4419),l=n(4036),c=n(1046),u=n(7630),f=n(5878),d=n(1217);function p(e){return(0,d.Z)("MuiSvgIcon",e)}(0,f.Z)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var h=n(184),v=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],m=(0,u.ZP)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,"inherit"!==n.color&&t["color".concat((0,l.Z)(n.color))],t["fontSize".concat((0,l.Z)(n.fontSize))]]}})((function(e){var t,n,r,o,i,a,s,l,c,u,f,d,p,h,v,m,g,y=e.theme,b=e.ownerState;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:"currentColor",flexShrink:0,transition:null==(t=y.transitions)||null==(n=t.create)?void 0:n.call(t,"fill",{duration:null==(r=y.transitions)||null==(o=r.duration)?void 0:o.shorter}),fontSize:{inherit:"inherit",small:(null==(i=y.typography)||null==(a=i.pxToRem)?void 0:a.call(i,20))||"1.25rem",medium:(null==(s=y.typography)||null==(l=s.pxToRem)?void 0:l.call(s,24))||"1.5rem",large:(null==(c=y.typography)||null==(u=c.pxToRem)?void 0:u.call(c,35))||"2.1875rem"}[b.fontSize],color:null!=(f=null==(d=(y.vars||y).palette)||null==(p=d[b.color])?void 0:p.main)?f:{action:null==(h=(y.vars||y).palette)||null==(v=h.action)?void 0:v.active,disabled:null==(m=(y.vars||y).palette)||null==(g=m.action)?void 0:g.disabled,inherit:void 0}[b.color]}})),g=o.forwardRef((function(e,t){var n=(0,c.Z)({props:e,name:"MuiSvgIcon"}),o=n.children,u=n.className,f=n.color,d=void 0===f?"inherit":f,g=n.component,y=void 0===g?"svg":g,b=n.fontSize,_=void 0===b?"medium":b,w=n.htmlColor,k=n.inheritViewBox,x=void 0!==k&&k,S=n.titleAccess,E=n.viewBox,C=void 0===E?"0 0 24 24":E,O=(0,i.Z)(n,v),T=(0,r.Z)({},n,{color:d,component:y,fontSize:_,instanceFontSize:e.fontSize,inheritViewBox:x,viewBox:C}),R={};x||(R.viewBox=C);var P=function(e){var t=e.color,n=e.fontSize,r=e.classes,o={root:["root","inherit"!==t&&"color".concat((0,l.Z)(t)),"fontSize".concat((0,l.Z)(n))]};return(0,s.Z)(o,p,r)}(T);return(0,h.jsxs)(m,(0,r.Z)({as:y,className:(0,a.Z)(P.root,u),focusable:"false",color:w,"aria-hidden":!S||void 0,role:S?"img":void 0,ref:t},R,O,{ownerState:T,children:[o,S?(0,h.jsx)("title",{children:S}):null]}))}));g.muiName="SvgIcon";var y=g;function b(e,t){function n(n,o){return(0,h.jsx)(y,(0,r.Z)({"data-testid":"".concat(t,"Icon"),ref:o},n,{children:e}))}return n.muiName=y.muiName,o.memo(o.forwardRef(n))}},3199:function(e,t,n){"use strict";var r=n(3981);t.Z=r.Z},4421:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return o.Z},createChainedFunction:function(){return i},createSvgIcon:function(){return a.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return f.Z},requirePropFactory:function(){return d},setRef:function(){return p},unstable_ClassNameGenerator:function(){return w},unstable_useEnhancedEffect:function(){return h.Z},unstable_useId:function(){return v.Z},unsupportedProp:function(){return m},useControlled:function(){return g.Z},useEventCallback:function(){return y.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return _.Z}});var r=n(5902),o=n(4036),i=n(8949).Z,a=n(9201),s=n(3199);var l=function(e,t){return function(){return null}},c=n(9103),u=n(8301),f=n(7602);n(7462);var d=function(e,t){return function(){return null}},p=n(2971).Z,h=n(162),v=n(7384);var m=function(e,t,n,r,o){return null},g=n(8744),y=n(9683),b=n(2071),_=n(3031),w={configure:function(e){r.Z.configure(e)}}},9103:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(2791);var o=function(e,t){return r.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},8301:function(e,t,n){"use strict";var r=n(9723);t.Z=r.Z},7602:function(e,t,n){"use strict";var r=n(7979);t.Z=r.Z},8744:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(9439),o=n(2791);var i=function(e){var t=e.controlled,n=e.default,i=(e.name,e.state,o.useRef(void 0!==t).current),a=o.useState(n),s=(0,r.Z)(a,2),l=s[0],c=s[1];return[i?t:l,o.useCallback((function(e){i||c(e)}),[])]}},162:function(e,t,n){"use strict";var r=n(5721);t.Z=r.Z},9683:function(e,t,n){"use strict";var r=n(8956);t.Z=r.Z},2071:function(e,t,n){"use strict";var r=n(7563);t.Z=r.Z},7384:function(e,t,n){"use strict";var r=n(6248);t.Z=r.Z},3031:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r,o=n(2791),i=!0,a=!1,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function l(e){e.metaKey||e.altKey||e.ctrlKey||(i=!0)}function c(){i=!1}function u(){"hidden"===this.visibilityState&&a&&(i=!0)}function f(e){var t=e.target;try{return t.matches(":focus-visible")}catch(n){}return i||function(e){var t=e.type,n=e.tagName;return!("INPUT"!==n||!s[t]||e.readOnly)||"TEXTAREA"===n&&!e.readOnly||!!e.isContentEditable}(t)}var d=function(){var e=o.useCallback((function(e){var t;null!=e&&((t=e.ownerDocument).addEventListener("keydown",l,!0),t.addEventListener("mousedown",c,!0),t.addEventListener("pointerdown",c,!0),t.addEventListener("touchstart",c,!0),t.addEventListener("visibilitychange",u,!0))}),[]),t=o.useRef(!1);return{isFocusVisibleRef:t,onFocus:function(e){return!!f(e)&&(t.current=!0,!0)},onBlur:function(){return!!t.current&&(a=!0,window.clearTimeout(r),r=window.setTimeout((function(){a=!1}),100),t.current=!1,!0)},ref:e}}},3842:function(e,t,n){"use strict";n.d(t,{ZP:function(){return y},Co:function(){return b}});var r=n(2791),o=n(7462),i=n(9791),a=n(9886),s=n(5438),l=n(5207),c=n(2561),u=i.Z,f=function(e){return"theme"!==e},d=function(e){return"string"===typeof e&&e.charCodeAt(0)>96?u:f},p=function(e,t,n){var r;if(t){var o=t.shouldForwardProp;r=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!==typeof r&&n&&(r=e.__emotion_forwardProp),r},h=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;(0,s.hC)(t,n,r);(0,c.L)((function(){return(0,s.My)(t,n,r)}));return null},v=function e(t,n){var i,c,u=t.__emotion_real===t,f=u&&t.__emotion_base||t;void 0!==n&&(i=n.label,c=n.target);var v=p(t,n,u),m=v||d(f),g=!m("as");return function(){var y=arguments,b=u&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==i&&b.push("label:"+i+";"),null==y[0]||void 0===y[0].raw)b.push.apply(b,y);else{0,b.push(y[0][0]);for(var _=y.length,w=1;w<_;w++)b.push(y[w],y[0][w])}var k=(0,a.w)((function(e,t,n){var o=g&&e.as||f,i="",u=[],p=e;if(null==e.theme){for(var y in p={},e)p[y]=e[y];p.theme=(0,r.useContext)(a.T)}"string"===typeof e.className?i=(0,s.fp)(t.registered,u,e.className):null!=e.className&&(i=e.className+" ");var _=(0,l.O)(b.concat(u),t.registered,p);i+=t.key+"-"+_.name,void 0!==c&&(i+=" "+c);var w=g&&void 0===v?d(o):m,k={};for(var x in e)g&&"as"===x||w(x)&&(k[x]=e[x]);return k.className=i,k.ref=n,(0,r.createElement)(r.Fragment,null,(0,r.createElement)(h,{cache:t,serialized:_,isStringTag:"string"===typeof o}),(0,r.createElement)(o,k))}));return k.displayName=void 0!==i?i:"Styled("+("string"===typeof f?f:f.displayName||f.name||"Component")+")",k.defaultProps=t.defaultProps,k.__emotion_real=k,k.__emotion_base=f,k.__emotion_styles=b,k.__emotion_forwardProp=v,Object.defineProperty(k,"toString",{value:function(){return"."+c}}),k.withComponent=function(t,r){return e(t,(0,o.Z)({},n,r,{shouldForwardProp:p(k,r,!0)})).apply(void 0,b)},k}},m=v.bind();["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){m[e]=m(e)}));var g=m;function y(e,t){return g(e,t)}var b=function(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},1184:function(e,t,n){"use strict";n.d(t,{L7:function(){return s},P$:function(){return l},VO:function(){return r},W8:function(){return a},k9:function(){return i}});var r={xs:0,sm:600,md:900,lg:1200,xl:1536},o={keys:["xs","sm","md","lg","xl"],up:function(e){return"@media (min-width:".concat(r[e],"px)")}};function i(e,t,n){var i=e.theme||{};if(Array.isArray(t)){var a=i.breakpoints||o;return t.reduce((function(e,r,o){return e[a.up(a.keys[o])]=n(t[o]),e}),{})}if("object"===typeof t){var s=i.breakpoints||o;return Object.keys(t).reduce((function(e,o){if(-1!==Object.keys(s.values||r).indexOf(o)){e[s.up(o)]=n(t[o],o)}else{var i=o;e[i]=t[i]}return e}),{})}return n(t)}function a(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(null==(e=t.keys)?void 0:e.reduce((function(e,n){return e[t.up(n)]={},e}),{}))||{}}function s(e,t){return e.reduce((function(e,t){var n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e}),t)}function l(e){var t,n=e.values,r=e.breakpoints,o=e.base||function(e,t){if("object"!==typeof e)return{};var n={},r=Object.keys(t);return Array.isArray(e)?r.forEach((function(t,r){r1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(Math.max(t,e),n)}function i(e){if(e.type)return e;if("#"===e.charAt(0))return i(function(e){e=e.slice(1);var t=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g"),n=e.match(t);return n&&1===n[0].length&&(n=n.map((function(e){return e+e}))),n?"rgb".concat(4===n.length?"a":"","(").concat(n.map((function(e,t){return t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3})).join(", "),")"):""}(e));var t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,r.Z)(9,e));var o,a=e.substring(t+1,e.length-1);if("color"===n){if(o=(a=a.split(" ")).shift(),4===a.length&&"/"===a[3].charAt(0)&&(a[3]=a[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(o))throw new Error((0,r.Z)(10,o))}else a=a.split(",");return{type:n,values:a=a.map((function(e){return parseFloat(e)})),colorSpace:o}}function a(e){var t=e.type,n=e.colorSpace,r=e.values;return-1!==t.indexOf("rgb")?r=r.map((function(e,t){return t<3?parseInt(e,10):e})):-1!==t.indexOf("hsl")&&(r[1]="".concat(r[1],"%"),r[2]="".concat(r[2],"%")),r=-1!==t.indexOf("color")?"".concat(n," ").concat(r.join(" ")):"".concat(r.join(", ")),"".concat(t,"(").concat(r,")")}function s(e){var t="hsl"===(e=i(e)).type||"hsla"===e.type?i(function(e){var t=(e=i(e)).values,n=t[0],r=t[1]/100,o=t[2]/100,s=r*Math.min(o,1-o),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e+n/30)%12;return o-s*Math.max(Math.min(t-3,9-t,1),-1)},c="rgb",u=[Math.round(255*l(0)),Math.round(255*l(8)),Math.round(255*l(4))];return"hsla"===e.type&&(c+="a",u.push(t[3])),a({type:c,values:u})}(e)).values:e.values;return t=t.map((function(t){return"color"!==e.type&&(t/=255),t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)})),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function l(e,t){var n=s(e),r=s(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function c(e,t){return e=i(e),t=o(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]="/".concat(t):e.values[3]=t,a(e)}function u(e,t){if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(var n=0;n<3;n+=1)e.values[n]*=1-t;return a(e)}function f(e,t){if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(-1!==e.type.indexOf("color"))for(var r=0;r<3;r+=1)e.values[r]+=(1-e.values[r])*t;return a(e)}},5080:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});var r=n(7462),o=n(3366),i=n(2466),a=n(4942),s=["values","unit","step"],l=function(e){var t=Object.keys(e).map((function(t){return{key:t,val:e[t]}}))||[];return t.sort((function(e,t){return e.val-t.val})),t.reduce((function(e,t){return(0,r.Z)({},e,(0,a.Z)({},t.key,t.val))}),{})};var c={borderRadius:4},u=n(5682);var f=n(104),d=n(7416),p=["breakpoints","palette","spacing","shape"];var h=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.breakpoints,n=void 0===t?{}:t,a=e.palette,h=void 0===a?{}:a,v=e.spacing,m=e.shape,g=void 0===m?{}:m,y=(0,o.Z)(e,p),b=function(e){var t=e.values,n=void 0===t?{xs:0,sm:600,md:900,lg:1200,xl:1536}:t,i=e.unit,a=void 0===i?"px":i,c=e.step,u=void 0===c?5:c,f=(0,o.Z)(e,s),d=l(n),p=Object.keys(d);function h(e){var t="number"===typeof n[e]?n[e]:e;return"@media (min-width:".concat(t).concat(a,")")}function v(e){var t="number"===typeof n[e]?n[e]:e;return"@media (max-width:".concat(t-u/100).concat(a,")")}function m(e,t){var r=p.indexOf(t);return"@media (min-width:".concat("number"===typeof n[e]?n[e]:e).concat(a,") and ")+"(max-width:".concat((-1!==r&&"number"===typeof n[p[r]]?n[p[r]]:t)-u/100).concat(a,")")}return(0,r.Z)({keys:p,values:d,up:h,down:v,between:m,only:function(e){return p.indexOf(e)+10&&void 0!==arguments[0]?arguments[0]:8;if(e.mui)return e;var t=(0,u.hB)({spacing:e}),n=function(){for(var e=arguments.length,n=new Array(e),r=0;r1?k-1:0),S=1;S2){if(!c[e])return[e];e=c[e]}var t=e.split(""),n=(0,r.Z)(t,2),o=n[0],i=n[1],a=s[o],u=l[i]||"";return Array.isArray(u)?u.map((function(e){return a+e})):[a+u]})),f=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],d=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],p=[].concat(f,d);function h(e,t,n,r){var o,a=null!=(o=(0,i.DW)(e,t,!1))?o:n;return"number"===typeof a?function(e){return"string"===typeof e?e:a*e}:Array.isArray(a)?function(e){return"string"===typeof e?e:a[e]}:"function"===typeof a?a:function(){}}function v(e){return h(e,"spacing",8)}function m(e,t){if("string"===typeof t||null==t)return t;var n=e(Math.abs(t));return t>=0?n:"number"===typeof n?-n:"-".concat(n)}function g(e,t,n,r){if(-1===t.indexOf(n))return null;var i=function(e,t){return function(n){return e.reduce((function(e,r){return e[r]=m(t,n),e}),{})}}(u(n),r),a=e[n];return(0,o.k9)(e,a,i)}function y(e,t){var n=v(e.theme);return Object.keys(e).map((function(r){return g(e,t,r,n)})).reduce(a.Z,{})}function b(e){return y(e,f)}function _(e){return y(e,d)}function w(e){return y(e,p)}b.propTypes={},b.filterProps=f,_.propTypes={},_.filterProps=d,w.propTypes={},w.filterProps=p},8529:function(e,t,n){"use strict";n.d(t,{DW:function(){return a},Jq:function(){return s}});var r=n(4942),o=n(7312),i=n(1184);function a(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!t||"string"!==typeof t)return null;if(e&&e.vars&&n){var r="vars.".concat(t).split(".").reduce((function(e,t){return e&&e[t]?e[t]:null}),e);if(null!=r)return r}return t.split(".").reduce((function(e,t){return e&&null!=e[t]?e[t]:null}),e)}function s(e,t,n){var r,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n;return r="function"===typeof e?e(n):Array.isArray(e)?e[n]||o:a(e,n)||o,t&&(r=t(r,o,e)),r}t.ZP=function(e){var t=e.prop,n=e.cssProperty,l=void 0===n?e.prop:n,c=e.themeKey,u=e.transform,f=function(e){if(null==e[t])return null;var n=e[t],f=a(e.theme,c)||{};return(0,i.k9)(e,n,(function(e){var n=s(f,u,e);return e===n&&"string"===typeof e&&(n=s(f,u,"".concat(t).concat("default"===e?"":(0,o.Z)(e)),e)),!1===l?n:(0,r.Z)({},l,n)}))};return f.propTypes={},f.filterProps=[t],f}},7416:function(e,t,n){"use strict";n.d(t,{Z:function(){return A}});var r=n(5682),o=n(8529),i=n(8247);var a=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:i;return(0,o.Z)(e)}},9120:function(e,t,n){"use strict";var r=n(2791),o=n(9886);t.Z=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=r.useContext(o.T);return n&&(e=n,0!==Object.keys(e).length)?n:t}},5902:function(e,t){"use strict";var n=function(e){return e},r=function(){var e=n;return{configure:function(t){e=t},generate:function(t){return e(t)},reset:function(){e=n}}}();t.Z=r},7312:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(6189);function o(e){if("string"!==typeof e)throw new Error((0,r.Z)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},4419:function(e,t,n){"use strict";function r(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r={};return Object.keys(e).forEach((function(o){r[o]=e[o].reduce((function(e,r){if(r){var o=t(r);""!==o&&e.push(o),n&&n[r]&&e.push(n[r])}return e}),[]).join(" ")})),r}n.d(t,{Z:function(){return r}})},8949:function(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:166;function r(){for(var r=this,o=arguments.length,i=new Array(o),a=0;a2&&void 0!==arguments[2]?arguments[2]:{clone:!0},s=n.clone?(0,r.Z)({},e):e;return o(e)&&o(t)&&Object.keys(t).forEach((function(r){"__proto__"!==r&&(o(t[r])&&r in e&&o(e[r])?s[r]=a(e[r],t[r],n):n.clone?s[r]=o(t[r])?i(t[r]):t[r]:s[r]=t[r])})),s}},6189:function(e,t,n){"use strict";function r(e){for(var t="https://mui.com/production-error/?code="+e,n=1;n2&&void 0!==arguments[2]?arguments[2]:"Mui",i=o[t];return i?"".concat(n,"-").concat(i):"".concat(r.Z.generate(e),"-").concat(t)}},5878:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(1217);function o(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Mui",o={};return t.forEach((function(t){o[t]=(0,r.Z)(e,t,n)})),o}},9723:function(e,t,n){"use strict";function r(e){return e&&e.ownerDocument||document}n.d(t,{Z:function(){return r}})},7979:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(9723);function o(e){return(0,r.Z)(e).defaultView||window}},5735:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7462);function o(e,t){var n=(0,r.Z)({},t);return Object.keys(e).forEach((function(i){if(i.toString().match(/^(components|slots)$/))n[i]=(0,r.Z)({},e[i],n[i]);else if(i.toString().match(/^(componentsProps|slotProps)$/)){var a=e[i]||{},s=t[i];n[i]={},s&&Object.keys(s)?a&&Object.keys(a)?(n[i]=(0,r.Z)({},s),Object.keys(a).forEach((function(e){n[i][e]=o(a[e],s[e])}))):n[i]=s:n[i]=a}else void 0===n[i]&&(n[i]=e[i])})),n}},2971:function(e,t,n){"use strict";function r(e,t){"function"===typeof e?e(t):e&&(e.current=t)}n.d(t,{Z:function(){return r}})},5721:function(e,t,n){"use strict";var r=n(2791),o="undefined"!==typeof window?r.useLayoutEffect:r.useEffect;t.Z=o},8956:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(2791),o=n(5721);function i(e){var t=r.useRef(e);return(0,o.Z)((function(){t.current=e})),r.useCallback((function(){return t.current.apply(void 0,arguments)}),[])}},7563:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(2791),o=n(2971);function i(){for(var e=arguments.length,t=new Array(e),n=0;n=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){u.headers[e]=r.merge(l)})),e.exports=u},6789:function(e){"use strict";e.exports={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}},7600:function(e){e.exports={version:"0.27.2"}},4049:function(e){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}})),a):a}},6261:function(e){"use strict";e.exports=function(e){var t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}},8089:function(e){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},1397:function(e,t,n){"use strict";var r=n(3589);e.exports=function(e,t){t=t||new FormData;var n=[];function o(e){return null===e?"":r.isDate(e)?e.toISOString():r.isArrayBuffer(e)||r.isTypedArray(e)?"function"===typeof Blob?new Blob([e]):Buffer.from(e):e}return function e(i,a){if(r.isPlainObject(i)||r.isArray(i)){if(-1!==n.indexOf(i))throw Error("Circular reference detected in "+a);n.push(i),r.forEach(i,(function(n,i){if(!r.isUndefined(n)){var s,l=a?a+"."+i:i;if(n&&!a&&"object"===typeof n)if(r.endsWith(i,"{}"))n=JSON.stringify(n);else if(r.endsWith(i,"[]")&&(s=r.toArray(n)))return void s.forEach((function(e){!r.isUndefined(e)&&t.append(l,o(e))}));e(n,l)}})),n.pop()}else t.append(a,o(i))}(e),t}},7835:function(e,t,n){"use strict";var r=n(7600).version,o=n(4531),i={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){i[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var a={};i.transitional=function(e,t,n){function i(e,t){return"[Axios v"+r+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,r,s){if(!1===e)throw new o(i(r," has been removed"+(t?" in "+t:"")),o.ERR_DEPRECATED);return t&&!a[r]&&(a[r]=!0,console.warn(i(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,s)}},e.exports={assertOptions:function(e,t,n){if("object"!==typeof e)throw new o("options must be an object",o.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),i=r.length;i-- >0;){var a=r[i],s=t[a];if(s){var l=e[a],c=void 0===l||s(l,a,e);if(!0!==c)throw new o("option "+a+" must be "+c,o.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new o("Unknown option "+a,o.ERR_BAD_OPTION)}},validators:i}},3589:function(e,t,n){"use strict";var r,o=n(4049),i=Object.prototype.toString,a=(r=Object.create(null),function(e){var t=i.call(e);return r[t]||(r[t]=t.slice(8,-1).toLowerCase())});function s(e){return e=e.toLowerCase(),function(t){return a(t)===e}}function l(e){return Array.isArray(e)}function c(e){return"undefined"===typeof e}var u=s("ArrayBuffer");function f(e){return null!==e&&"object"===typeof e}function d(e){if("object"!==a(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}var p=s("Date"),h=s("File"),v=s("Blob"),m=s("FileList");function g(e){return"[object Function]"===i.call(e)}var y=s("URLSearchParams");function b(e,t){if(null!==e&&"undefined"!==typeof e)if("object"!==typeof e&&(e=[e]),l(e))for(var n=0,r=e.length;n0;)a[i=r[o]]||(t[i]=e[i],a[i]=!0);e=Object.getPrototypeOf(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:a,kindOfTest:s,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;var t=e.length;if(c(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},isTypedArray:w,isFileList:m}},8182:function(e,t,n){"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;tu))return!1;var d=l.get(e),p=l.get(t);if(d&&p)return d==t&&p==e;var h=-1,v=!0,m=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++h-1&&e%1==0&&e-1}},7109:function(e,t,n){var r=n(7112);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},4086:function(e,t,n){var r=n(9676),o=n(8384),i=n(5797);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},9255:function(e,t,n){var r=n(2799);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},9186:function(e,t,n){var r=n(2799);e.exports=function(e){return r(this,e).get(e)}},3423:function(e,t,n){var r=n(2799);e.exports=function(e){return r(this,e).has(e)}},3739:function(e,t,n){var r=n(2799);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},234:function(e){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},9620:function(e,t,n){var r=n(8136)(Object,"create");e.exports=r},8836:function(e,t,n){var r=n(2709)(Object.keys,Object);e.exports=r},9494:function(e,t,n){e=n.nmd(e);var r=n(1032),o=t&&!t.nodeType&&t,i=o&&e&&!e.nodeType&&e,a=i&&i.exports===o&&r.process,s=function(){try{var e=i&&i.require&&i.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(t){}}();e.exports=s},3581:function(e){var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},2709:function(e){e.exports=function(e,t){return function(n){return e(t(n))}}},7009:function(e,t,n){var r=n(1032),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},5774:function(e){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},1596:function(e){e.exports=function(e){return this.__data__.has(e)}},2230:function(e){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},511:function(e,t,n){var r=n(8384);e.exports=function(){this.__data__=new r,this.size=0}},835:function(e){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},707:function(e){e.exports=function(e){return this.__data__.get(e)}},8832:function(e){e.exports=function(e){return this.__data__.has(e)}},5077:function(e,t,n){var r=n(8384),o=n(5797),i=n(8059);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([e,t]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(e,t),this.size=n.size,this}},7907:function(e){var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},9231:function(e){e.exports=function(e,t){return e===t||e!==e&&t!==t}},4963:function(e,t,n){var r=n(4906),o=n(3141),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},3629:function(e){var t=Array.isArray;e.exports=t},1473:function(e,t,n){var r=n(4786),o=n(4635);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},5174:function(e,t,n){e=n.nmd(e);var r=n(7009),o=n(9488),i=t&&!t.nodeType&&t,a=i&&e&&!e.nodeType&&e,s=a&&a.exports===i?r.Buffer:void 0,l=(s?s.isBuffer:void 0)||o;e.exports=l},8111:function(e,t,n){var r=n(1848);e.exports=function(e,t){return r(e,t)}},4786:function(e,t,n){var r=n(9066),o=n(8092);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},4635:function(e){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},8092:function(e){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},3141:function(e){e.exports=function(e){return null!=e&&"object"==typeof e}},9102:function(e,t,n){var r=n(8150),o=n(6194),i=n(9494),a=i&&i.isTypedArray,s=a?o(a):r;e.exports=s},2742:function(e,t,n){var r=n(7538),o=n(3654),i=n(1473);e.exports=function(e){return i(e)?r(e):o(e)}},8174:function(e){e.exports=function(){return[]}},9488:function(e){e.exports=function(){return!1}},8327:function(e,t,n){var r=n(8737).MY,o=n(8737).cx,i={unpack:function(e){return new a(e).unpack()},pack:function(e){var t=new s;return t.pack(e),t.getBuffer()}};function a(e){this.index=0,this.dataBuffer=e,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}function s(){this.bufferBuilder=new r}function l(e){var t=e.charCodeAt(0);return t<=2047?"00":t<=65535?"000":t<=2097151?"0000":t<=67108863?"00000":"000000"}e.exports=i,a.prototype.unpack=function(){var e,t=this.unpack_uint8();if(t<128)return t;if((224^t)<32)return(224^t)-32;if((e=160^t)<=15)return this.unpack_raw(e);if((e=176^t)<=15)return this.unpack_string(e);if((e=144^t)<=15)return this.unpack_array(e);if((e=128^t)<=15)return this.unpack_map(e);switch(t){case 192:return null;case 193:case 212:case 213:case 214:case 215:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 216:return e=this.unpack_uint16(),this.unpack_string(e);case 217:return e=this.unpack_uint32(),this.unpack_string(e);case 218:return e=this.unpack_uint16(),this.unpack_raw(e);case 219:return e=this.unpack_uint32(),this.unpack_raw(e);case 220:return e=this.unpack_uint16(),this.unpack_array(e);case 221:return e=this.unpack_uint32(),this.unpack_array(e);case 222:return e=this.unpack_uint16(),this.unpack_map(e);case 223:return e=this.unpack_uint32(),this.unpack_map(e)}},a.prototype.unpack_uint8=function(){var e=255&this.dataView[this.index];return this.index++,e},a.prototype.unpack_uint16=function(){var e=this.read(2),t=256*(255&e[0])+(255&e[1]);return this.index+=2,t},a.prototype.unpack_uint32=function(){var e=this.read(4),t=256*(256*(256*e[0]+e[1])+e[2])+e[3];return this.index+=4,t},a.prototype.unpack_uint64=function(){var e=this.read(8),t=256*(256*(256*(256*(256*(256*(256*e[0]+e[1])+e[2])+e[3])+e[4])+e[5])+e[6])+e[7];return this.index+=8,t},a.prototype.unpack_int8=function(){var e=this.unpack_uint8();return e<128?e:e-256},a.prototype.unpack_int16=function(){var e=this.unpack_uint16();return e<32768?e:e-65536},a.prototype.unpack_int32=function(){var e=this.unpack_uint32();return e>23&255)-127;return(0===e>>31?1:-1)*(8388607&e|8388608)*Math.pow(2,t-23)},a.prototype.unpack_double=function(){var e=this.unpack_uint32(),t=this.unpack_uint32(),n=(e>>20&2047)-1023;return(0===e>>31?1:-1)*((1048575&e|1048576)*Math.pow(2,n-20)+t*Math.pow(2,n-52))},a.prototype.read=function(e){var t=this.index;if(t+e<=this.length)return this.dataView.subarray(t,t+e);throw new Error("BinaryPackFailure: read index out of range")},s.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},s.prototype.pack=function(e){var t=typeof e;if("string"===t)this.pack_string(e);else if("number"===t)Math.floor(e)===e?this.pack_integer(e):this.pack_double(e);else if("boolean"===t)!0===e?this.bufferBuilder.append(195):!1===e&&this.bufferBuilder.append(194);else if("undefined"===t)this.bufferBuilder.append(192);else{if("object"!==t)throw new Error('Type "'+t+'" not yet supported');if(null===e)this.bufferBuilder.append(192);else{var n=e.constructor;if(n==Array)this.pack_array(e);else if(n==Blob||n==File||e instanceof Blob||e instanceof File)this.pack_bin(e);else if(n==ArrayBuffer)o.useArrayBufferView?this.pack_bin(new Uint8Array(e)):this.pack_bin(e);else if("BYTES_PER_ELEMENT"in e)o.useArrayBufferView?this.pack_bin(new Uint8Array(e.buffer)):this.pack_bin(e.buffer);else if(n==Object||n.toString().startsWith("class"))this.pack_object(e);else if(n==Date)this.pack_string(e.toString());else{if("function"!==typeof e.toBinaryPack)throw new Error('Type "'+n.toString()+'" not yet supported');this.bufferBuilder.append(e.toBinaryPack())}}}this.bufferBuilder.flush()},s.prototype.pack_bin=function(e){var t=e.length||e.byteLength||e.size;if(t<=15)this.pack_uint8(160+t);else if(t<=65535)this.bufferBuilder.append(218),this.pack_uint16(t);else{if(!(t<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(219),this.pack_uint32(t)}this.bufferBuilder.append(e)},s.prototype.pack_string=function(e){var t=function(e){return e.length>600?new Blob([e]).size:e.replace(/[^\u0000-\u007F]/g,l).length}(e);if(t<=15)this.pack_uint8(176+t);else if(t<=65535)this.bufferBuilder.append(216),this.pack_uint16(t);else{if(!(t<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(217),this.pack_uint32(t)}this.bufferBuilder.append(e)},s.prototype.pack_array=function(e){var t=e.length;if(t<=15)this.pack_uint8(144+t);else if(t<=65535)this.bufferBuilder.append(220),this.pack_uint16(t);else{if(!(t<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(221),this.pack_uint32(t)}for(var n=0;n=-32&&e<=127)this.bufferBuilder.append(255&e);else if(e>=0&&e<=255)this.bufferBuilder.append(204),this.pack_uint8(e);else if(e>=-128&&e<=127)this.bufferBuilder.append(208),this.pack_int8(e);else if(e>=0&&e<=65535)this.bufferBuilder.append(205),this.pack_uint16(e);else if(e>=-32768&&e<=32767)this.bufferBuilder.append(209),this.pack_int16(e);else if(e>=0&&e<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(e);else if(e>=-2147483648&&e<=2147483647)this.bufferBuilder.append(210),this.pack_int32(e);else if(e>=-0x8000000000000000&&e<=0x8000000000000000)this.bufferBuilder.append(211),this.pack_int64(e);else{if(!(e>=0&&e<=0x10000000000000000))throw new Error("Invalid integer");this.bufferBuilder.append(207),this.pack_uint64(e)}},s.prototype.pack_double=function(e){var t=0;e<0&&(t=1,e=-e);var n=Math.floor(Math.log(e)/Math.LN2),r=e/Math.pow(2,n)-1,o=Math.floor(r*Math.pow(2,52)),i=Math.pow(2,32),a=t<<31|n+1023<<20|o/i&1048575,s=o%i;this.bufferBuilder.append(203),this.pack_int32(a),this.pack_int32(s)},s.prototype.pack_object=function(e){var t=Object.keys(e).length;if(t<=15)this.pack_uint8(128+t);else if(t<=65535)this.bufferBuilder.append(222),this.pack_uint16(t);else{if(!(t<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(223),this.pack_uint32(t)}for(var n in e)e.hasOwnProperty(n)&&(this.pack(n),this.pack(e[n]))},s.prototype.pack_uint8=function(e){this.bufferBuilder.append(e)},s.prototype.pack_uint16=function(e){this.bufferBuilder.append(e>>8),this.bufferBuilder.append(255&e)},s.prototype.pack_uint32=function(e){var t=4294967295&e;this.bufferBuilder.append((4278190080&t)>>>24),this.bufferBuilder.append((16711680&t)>>>16),this.bufferBuilder.append((65280&t)>>>8),this.bufferBuilder.append(255&t)},s.prototype.pack_uint64=function(e){var t=e/Math.pow(2,32),n=e%Math.pow(2,32);this.bufferBuilder.append((4278190080&t)>>>24),this.bufferBuilder.append((16711680&t)>>>16),this.bufferBuilder.append((65280&t)>>>8),this.bufferBuilder.append(255&t),this.bufferBuilder.append((4278190080&n)>>>24),this.bufferBuilder.append((16711680&n)>>>16),this.bufferBuilder.append((65280&n)>>>8),this.bufferBuilder.append(255&n)},s.prototype.pack_int8=function(e){this.bufferBuilder.append(255&e)},s.prototype.pack_int16=function(e){this.bufferBuilder.append((65280&e)>>8),this.bufferBuilder.append(255&e)},s.prototype.pack_int32=function(e){this.bufferBuilder.append(e>>>24&255),this.bufferBuilder.append((16711680&e)>>>16),this.bufferBuilder.append((65280&e)>>>8),this.bufferBuilder.append(255&e)},s.prototype.pack_int64=function(e){var t=Math.floor(e/Math.pow(2,32)),n=e%Math.pow(2,32);this.bufferBuilder.append((4278190080&t)>>>24),this.bufferBuilder.append((16711680&t)>>>16),this.bufferBuilder.append((65280&t)>>>8),this.bufferBuilder.append(255&t),this.bufferBuilder.append((4278190080&n)>>>24),this.bufferBuilder.append((16711680&n)>>>16),this.bufferBuilder.append((65280&n)>>>8),this.bufferBuilder.append(255&n)}},8737:function(e){var t={};t.useBlobBuilder=function(){try{return new Blob([]),!1}catch(e){return!0}}(),t.useArrayBufferView=!t.useBlobBuilder&&function(){try{return 0===new Blob([new Uint8Array([])]).size}catch(e){return!0}}(),e.exports.cx=t;var n=e.exports.xE;function r(){this._pieces=[],this._parts=[]}"undefined"!==typeof window&&(n=e.exports.xE=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder),r.prototype.append=function(e){"number"===typeof e?this._pieces.push(e):(this.flush(),this._parts.push(e))},r.prototype.flush=function(){if(this._pieces.length>0){var e=new Uint8Array(this._pieces);t.useArrayBufferView||(e=e.buffer),this._parts.push(e),this._pieces=[]}},r.prototype.getBuffer=function(){if(this.flush(),t.useBlobBuilder){for(var e=new n,r=0,o=this._parts.length;r*\.{3}(?:[^{}]|)*\})/.source;function i(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return o})),RegExp(e,t)}o=i(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=i(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:i(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:i(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var a=function e(t){return t?"string"===typeof t?t:"string"===typeof t.content?t.content:t.content.map(e).join(""):""},s=function t(n){for(var r=[],o=0;o0&&r[r.length-1].tagName===a(i.content[0].content[1])&&r.pop():"/>"===i.content[i.content.length-1].content||r.push({tagName:a(i.content[0].content[1]),openedBraces:0}):r.length>0&&"punctuation"===i.type&&"{"===i.content?r[r.length-1].openedBraces++:r.length>0&&r[r.length-1].openedBraces>0&&"punctuation"===i.type&&"}"===i.content?r[r.length-1].openedBraces--:s=!0),(s||"string"===typeof i)&&r.length>0&&0===r[r.length-1].openedBraces){var l=a(i);o0&&("string"===typeof n[o-1]||"plain-text"===n[o-1].type)&&(l=a(n[o-1])+l,n.splice(o-1,1),o--),n[o]=new e.Token("plain-text",l,null,l)}i.content&&"string"!==typeof i.content&&t(i.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||s(e.tokens)}))}(Prism)},1293:function(e,t,n){var r=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,r={},o={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof i?new i(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=f.reach);x+=k.value.length,k=k.next){var S=k.value;if(t.length>e.length)return;if(!(S instanceof i)){var E,C=1;if(y){if(!(E=a(w,x,e,g))||E.index>=e.length)break;var O=E.index,T=E.index+E[0].length,R=x;for(R+=k.value.length;O>=R;)R+=(k=k.next).value.length;if(x=R-=k.value.length,k.value instanceof i)continue;for(var P=k;P!==t.tail&&(Rf.reach&&(f.reach=L);var M=k.prev;if(j&&(M=c(t,M,j),x+=j.length),u(t,M,C),k=c(t,M,new i(d,m?o.tokenize(A,m):A,b,A)),N&&c(t,k,N),C>1){var I={cause:d+","+h,reach:L};s(e,t,n,k.prev,x,I),f&&I.reach>f.reach&&(f.reach=I.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function c(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function u(e,t,n){for(var r=t.next,o=0;o"+i.content+""+i.tag+">"},!e.document)return e.addEventListener?(o.disableWorkerMessageHandler||e.addEventListener("message",(function(t){var n=JSON.parse(t.data),r=n.language,i=n.code,a=n.immediateClose;e.postMessage(o.highlight(i,o.languages[r],r)),a&&e.close()}),!1),o):o;var f=o.util.currentScript();function d(){o.manual||o.highlightAll()}if(f&&(o.filename=f.src,f.hasAttribute("data-manual")&&(o.manual=!0)),!o.manual){var p=document.readyState;"loading"===p||"interactive"===p&&f&&f.defer?document.addEventListener("DOMContentLoaded",d):window.requestAnimationFrame?window.requestAnimationFrame(d):window.setTimeout(d,16)}return o}("undefined"!==typeof window?window:"undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=r),"undefined"!==typeof n.g&&(n.g.Prism=r),r.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/?[\da-f]{1,8};/i]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:r.languages[t]},n.cdata=/^$/i;var o={"included-cdata":{pattern://i,inside:n}};o["language-"+t]={pattern:/[\s\S]+/,inside:r.languages[t]};var i={};i[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:o},r.languages.insertBefore("markup","cdata",i)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(e,t){r.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:r.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(r),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{"class-name":[r.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:r.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),r.languages.js=r.languages.javascript,function(){if("undefined"!==typeof r&&"undefined"!==typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},t="data-src-status",n="loading",o="loaded",i="pre[data-src]:not(["+t+'="'+o+'"]):not(['+t+'="'+n+'"])';r.hooks.add("before-highlightall",(function(e){e.selector+=", "+i})),r.hooks.add("before-sanity-check",(function(a){var s=a.element;if(s.matches(i)){a.code="",s.setAttribute(t,n);var l=s.appendChild(document.createElement("CODE"));l.textContent="Loading\u2026";var c=s.getAttribute("data-src"),u=a.language;if("none"===u){var f=(/\.(\w+)$/.exec(c)||[,"none"])[1];u=e[f]||f}r.util.setLanguage(l,u),r.util.setLanguage(s,u);var d=r.plugins.autoloader;d&&d.loadLanguages(u),function(e,t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.onreadystatechange=function(){4==r.readyState&&(r.status<400&&r.responseText?t(r.responseText):r.status>=400?n("\u2716 Error "+r.status+" while fetching file: "+r.statusText):n("\u2716 Error: File does not exist or is empty"))},r.send(null)}(c,(function(e){s.setAttribute(t,o);var n=function(e){var t=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||"");if(t){var n=Number(t[1]),r=t[2],o=t[3];return r?o?[n,Number(o)]:[n,void 0]:[n,n]}}(s.getAttribute("data-range"));if(n){var i=e.split(/\r\n?|\n/g),a=n[0],c=null==n[1]?i.length:n[1];a<0&&(a+=i.length),a=Math.max(0,Math.min(a-1,i.length)),c<0&&(c+=i.length),c=Math.max(0,Math.min(c,i.length)),e=i.slice(a,c).join("\n"),s.hasAttribute("data-start")||s.setAttribute("data-start",String(a+1))}l.textContent=e,r.highlightElement(l)}),(function(e){s.setAttribute(t,"failed"),l.textContent=e}))}})),r.plugins.fileHighlight={highlight:function(e){for(var t,n=(e||document).querySelectorAll(i),o=0;t=n[o++];)r.highlightElement(t)}};var a=!1;r.fileHighlight=function(){a||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),a=!0),r.plugins.fileHighlight.highlight.apply(this,arguments)}}}()},510:function(e){self,e.exports=function(){var e={582:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(81),o=n.n(r),i=n(645),a=n.n(i)()(o());a.push([e.id,".ql-container{position:relative;overflow:hidden}@media(pointer: coarse){.ql-cursor-caret-container{z-index:-1}}.ql-cursor.hidden{display:none}.ql-cursor .ql-cursor-caret-container,.ql-cursor .ql-cursor-flag{position:absolute}.ql-cursor .ql-cursor-flag{z-index:1;transform:translate3d(-1px, -100%, 0);opacity:0;visibility:hidden;color:#fff;padding-bottom:2px;border-radius:0 3px 3px 0}.ql-cursor .ql-cursor-flag.flag-flipped{border-radius:3px 0 0 3px;transform:translate3d(calc(-100% + 1px ), -100%, 0)}@media screen{.ql-cursor .ql-cursor-flag{transition:opacity 0ms cubic-bezier(0.25, 0.46, 0.45, 0.94) 0ms,visibility 0ms cubic-bezier(0.25, 0.46, 0.45, 0.94) 0ms}}.ql-cursor .ql-cursor-flag .ql-cursor-name{margin-left:5px;margin-right:5px;display:inline-block;margin-top:-2px;white-space:nowrap}.ql-cursor .ql-cursor-flag.no-delay[style]{transition-delay:unset !important}.ql-cursor .ql-cursor-caret-container{cursor:text;margin-left:-9px;padding:0 9px}.ql-cursor .ql-cursor-caret-container.hover+.ql-cursor-flag{opacity:1;visibility:visible;transition:none}.ql-cursor .ql-cursor-caret-container.no-pointer{pointer-events:none}.ql-cursor .ql-cursor-caret-container .ql-cursor-caret{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background-color:attr(data-color)}.ql-cursor .ql-cursor-selection-block{position:absolute;pointer-events:none}",""]);var s=a},645:function(e){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,o,i){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var s=0;s0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=i),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),o&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=o):u[4]="".concat(o)),t.push(u))}},t}},81:function(e){"use strict";e.exports=function(e){return e[1]}},529:function(e){var t=-1;function n(e,s,l,c){if(e===s)return e?[[0,e]]:[];if(null!=l){var u=function(e,t,n){var r="number"==typeof n?{index:n,length:0}:n.oldRange,o="number"==typeof n?null:n.newRange,i=e.length,a=t.length;if(0===r.length&&(null===o||0===o.length)){var s=r.index,l=e.slice(0,s),c=e.slice(s),u=o?o.index:null,d=s+a-i;if((null===u||u===d)&&!(d<0||d>a)){var p=t.slice(0,d);if((m=t.slice(d))===c){var h=Math.min(s,d);if((y=l.slice(0,h))===(_=p.slice(0,h)))return f(y,l.slice(h),p.slice(h),c)}}if(null===u||u===s){var v=s,m=(p=t.slice(0,v),t.slice(v));if(p===l){var g=Math.min(i-v,a-v);if((b=c.slice(c.length-g))===(w=m.slice(m.length-g)))return f(l,c.slice(0,c.length-g),m.slice(0,m.length-g),b)}}}if(r.length>0&&o&&0===o.length){var y=e.slice(0,r.index),b=e.slice(r.index+r.length);if(!(a<(h=y.length)+(g=b.length))){var _=t.slice(0,h),w=t.slice(a-g);if(y===_&&b===w)return f(y,e.slice(h,i-g),t.slice(h,a-g),b)}}return null}(e,s,l);if(u)return u}var d=o(e,s),p=e.substring(0,d);d=i(e=e.substring(d),s=s.substring(d));var h=e.substring(e.length-d),v=function(e,a){var s;if(!e)return[[1,a]];if(!a)return[[t,e]];var l=e.length>a.length?e:a,c=e.length>a.length?a:e,u=l.indexOf(c);if(-1!==u)return s=[[1,l.substring(0,u)],[0,c],[1,l.substring(u+c.length)]],e.length>a.length&&(s[0][0]=s[2][0]=t),s;if(1===c.length)return[[t,e],[1,a]];var f=function(e,t){var n=e.length>t.length?e:t,r=e.length>t.length?t:e;if(n.length<4||2*r.length=e.length?[r,a,s,l,f]:null}var s,l,c,u,f,d=a(n,r,Math.ceil(n.length/4)),p=a(n,r,Math.ceil(n.length/2));return d||p?(s=p?d&&d[4].length>p[4].length?d:p:d,e.length>t.length?(l=s[0],c=s[1],u=s[2],f=s[3]):(u=s[0],f=s[1],l=s[2],c=s[3]),[l,c,u,f,s[4]]):null}(e,a);if(f){var d=f[0],p=f[1],h=f[2],v=f[3],m=f[4],g=n(d,h),y=n(p,v);return g.concat([[0,m]],y)}return function(e,n){for(var o=e.length,i=n.length,a=Math.ceil((o+i)/2),s=a,l=2*a,c=new Array(l),u=new Array(l),f=0;fo)v+=2;else if(w>i)h+=2;else if(p&&(S=s+d-b)>=0&&S=(x=o-u[S]))return r(e,n,C,w)}for(var k=-y+m;k<=y-g;k+=2){for(var x,S=s+k,E=(x=k===-y||k!==y&&u[S-1]o)g+=2;else if(E>i)m+=2;else if(!p){var C;if((_=s+d-k)>=0&&_=(x=o-x)))return r(e,n,C,w)}}}return[[t,e],[1,n]]}(e,a)}(e=e.substring(0,e.length-d),s=s.substring(0,s.length-d));return p&&v.unshift([0,p]),h&&v.push([0,h]),a(v,c),v}function r(e,t,r,o){var i=e.substring(0,r),a=t.substring(0,o),s=e.substring(r),l=t.substring(o),c=n(i,a),u=n(s,l);return c.concat(u)}function o(e,t){if(!e||!t||e.charAt(0)!==t.charAt(0))return 0;for(var n=0,r=Math.min(e.length,t.length),o=r,i=0;n=0&&u(e[h][1])){var v=e[h][1].slice(-1);if(e[h][1]=e[h][1].slice(0,-1),d=v+d,p=v+p,!e[h][1]){e.splice(h,1),s--;var m=h-1;e[m]&&1===e[m][0]&&(f++,p=e[m][1]+p,m--),e[m]&&e[m][0]===t&&(l++,d=e[m][1]+d,m--),h=m}}c(e[s][1])&&(v=e[s][1].charAt(0),e[s][1]=e[s][1].slice(1),d+=v,p+=v)}if(s0||p.length>0){d.length>0&&p.length>0&&(0!==(r=o(p,d))&&(h>=0?e[h][1]+=p.substring(0,r):(e.splice(0,0,[0,p.substring(0,r)]),s++),p=p.substring(r),d=d.substring(r)),0!==(r=i(p,d))&&(e[s][1]=p.substring(p.length-r)+e[s][1],p=p.substring(0,p.length-r),d=d.substring(0,d.length-r)));var g=f+l;0===d.length&&0===p.length?(e.splice(s-g,g),s-=g):0===d.length?(e.splice(s-g,g,[1,p]),s=s-g+1):0===p.length?(e.splice(s-g,g,[t,d]),s=s-g+1):(e.splice(s-g,g,[t,d],[1,p]),s=s-g+2)}0!==s&&0===e[s-1][0]?(e[s-1][1]+=e[s][1],e.splice(s,1)):s++,f=0,l=0,d="",p=""}""===e[e.length-1][1]&&e.pop();var y=!1;for(s=1;s=55296&&e<=56319}function l(e){return e>=56320&&e<=57343}function c(e){return l(e.charCodeAt(0))}function u(e){return s(e.charCodeAt(e.length-1))}function f(e,n,r,o){return u(e)||c(o)?null:function(e){for(var t=[],n=0;n0&&t.push(e[n]);return t}([[0,e],[t,n],[1,r],[0,o]])}function d(e,t,r){return n(e,t,r,!0)}d.INSERT=1,d.DELETE=t,d.EQUAL=0,e.exports=d},465:function(e,t,n){e=n.nmd(e);var r="__lodash_hash_undefined__",o=9007199254740991,i="[object Arguments]",a="[object Boolean]",s="[object Date]",l="[object Function]",c="[object GeneratorFunction]",u="[object Map]",f="[object Number]",d="[object Object]",p="[object Promise]",h="[object RegExp]",v="[object Set]",m="[object String]",g="[object Symbol]",y="[object WeakMap]",b="[object ArrayBuffer]",_="[object DataView]",w="[object Float32Array]",k="[object Float64Array]",x="[object Int8Array]",S="[object Int16Array]",E="[object Int32Array]",C="[object Uint8Array]",O="[object Uint8ClampedArray]",T="[object Uint16Array]",R="[object Uint32Array]",P=/\w*$/,A=/^\[object .+?Constructor\]$/,j=/^(?:0|[1-9]\d*)$/,N={};N[i]=N["[object Array]"]=N[b]=N[_]=N[a]=N[s]=N[w]=N[k]=N[x]=N[S]=N[E]=N[u]=N[f]=N[d]=N[h]=N[v]=N[m]=N[g]=N[C]=N[O]=N[T]=N[R]=!0,N["[object Error]"]=N[l]=N[y]=!1;var L="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,M="object"==typeof self&&self&&self.Object===Object&&self,I=L||M||Function("return this")(),D=t&&!t.nodeType&&t,Z=D&&e&&!e.nodeType&&e,F=Z&&Z.exports===D;function B(e,t){return e.set(t[0],t[1]),e}function q(e,t){return e.add(t),e}function z(e,t,n,r){var o=-1,i=e?e.length:0;for(r&&i&&(n=e[++o]);++o-1},Oe.prototype.set=function(e,t){var n=this.__data__,r=Ae(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},Te.prototype.clear=function(){this.__data__={hash:new Ce,map:new(he||Oe),string:new Ce}},Te.prototype.delete=function(e){return Me(this,e).delete(e)},Te.prototype.get=function(e){return Me(this,e).get(e)},Te.prototype.has=function(e){return Me(this,e).has(e)},Te.prototype.set=function(e,t){return Me(this,e).set(e,t),this},Re.prototype.clear=function(){this.__data__=new Oe},Re.prototype.delete=function(e){return this.__data__.delete(e)},Re.prototype.get=function(e){return this.__data__.get(e)},Re.prototype.has=function(e){return this.__data__.has(e)},Re.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Oe){var r=n.__data__;if(!he||r.length<199)return r.push([e,t]),this;n=this.__data__=new Te(r)}return n.set(e,t),this};var De=ue?H(ue,Object):function(){return[]},Ze=function(e){return te.call(e)};function Fe(e,t){return!!(t=null==t?o:t)&&("number"==typeof e||j.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=o}(e.length)&&!Ve(e)}var He=fe||function(){return!1};function Ve(e){var t=$e(e)?te.call(e):"";return t==l||t==c}function $e(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ke(e){return We(e)?function(e,t){var n=Ue(e)||function(e){return function(e){return function(e){return!!e&&"object"==typeof e}(e)&&We(e)}(e)&&ee.call(e,"callee")&&(!le.call(e,"callee")||te.call(e)==i)}(e)?function(e,t){for(var n=-1,r=Array(e);++ns))return!1;var c=i.get(e);if(c&&i.get(t))return c==t;var u=-1,f=!0,d=2&n?new be:void 0;for(i.set(e,t),i.set(t,e);++u-1},ge.prototype.set=function(e,t){var n=this.__data__,r=we(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},ye.prototype.clear=function(){this.size=0,this.__data__={hash:new me,map:new(oe||ge),string:new me}},ye.prototype.delete=function(e){var t=Oe(this,e).delete(e);return this.size-=t?1:0,t},ye.prototype.get=function(e){return Oe(this,e).get(e)},ye.prototype.has=function(e){return Oe(this,e).has(e)},ye.prototype.set=function(e,t){var n=Oe(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},be.prototype.add=be.prototype.push=function(e){return this.__data__.set(e,r),this},be.prototype.has=function(e){return this.__data__.has(e)},_e.prototype.clear=function(){this.__data__=new ge,this.size=0},_e.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},_e.prototype.get=function(e){return this.__data__.get(e)},_e.prototype.has=function(e){return this.__data__.has(e)},_e.prototype.set=function(e,t){var n=this.__data__;if(n instanceof ge){var r=n.__data__;if(!oe||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new ye(r)}return n.set(e,t),this.size=n.size,this};var Re=ee?function(e){return null==e?[]:(e=Object(e),function(t,n){for(var r=-1,o=null==t?0:t.length,i=0,a=[];++r-1&&e%1==0&&e-1&&e%1==0&&e<=o}function Fe(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Be(e){return null!=e&&"object"==typeof e}var qe=j?function(e){return function(t){return e(t)}}(j):function(e){return Be(e)&&Ze(e.length)&&!!x[ke(e)]};function ze(e){return null!=(t=e)&&Ze(t.length)&&!De(t)?function(e,t){var n=Me(e),r=!n&&Le(e),o=!n&&!r&&Ie(e),i=!n&&!r&&!o&&qe(e),a=n||r||o||i,s=a?function(e,t){for(var n=-1,r=Array(e);++n0?r:void 0},e.diff=function(e,t){void 0===e&&(e={}),void 0===t&&(t={}),"object"!=typeof e&&(e={}),"object"!=typeof t&&(t={});var n=Object.keys(e).concat(Object.keys(t)).reduce((function(n,r){return a.default(e[r],t[r])||(n[r]=void 0===t[r]?null:t[r]),n}),{});return Object.keys(n).length>0?n:void 0},e.invert=function(e,t){void 0===e&&(e={}),void 0===t&&(t={}),e=e||{};var n=Object.keys(t).reduce((function(n,r){return t[r]!==e[r]&&void 0!==e[r]&&(n[r]=t[r]),n}),{});return Object.keys(e).reduce((function(n,r){return e[r]!==t[r]&&void 0===t[r]&&(n[r]=null),n}),n)},e.transform=function(e,t,n){if(void 0===n&&(n=!1),"object"!=typeof e)return t;if("object"==typeof t){if(!n)return t;var r=Object.keys(t).reduce((function(n,r){return void 0===e[r]&&(n[r]=t[r]),n}),{});return Object.keys(r).length>0?r:void 0}}}(o||(o={})),t.default=o},895:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},o=r(n(529)),i=r(n(465)),a=r(n(307)),s=r(n(210)),l=r(n(430)),c=String.fromCharCode(0),u=function(){function e(e){Array.isArray(e)?this.ops=e:null!=e&&Array.isArray(e.ops)?this.ops=e.ops:this.ops=[]}return e.prototype.insert=function(e,t){var n={};return"string"==typeof e&&0===e.length?this:(n.insert=e,null!=t&&"object"==typeof t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n))},e.prototype.delete=function(e){return e<=0?this:this.push({delete:e})},e.prototype.retain=function(e,t){if(e<=0)return this;var n={retain:e};return null!=t&&"object"==typeof t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n)},e.prototype.push=function(e){var t=this.ops.length,n=this.ops[t-1];if(e=i.default(e),"object"==typeof n){if("number"==typeof e.delete&&"number"==typeof n.delete)return this.ops[t-1]={delete:n.delete+e.delete},this;if("number"==typeof n.delete&&null!=e.insert&&(t-=1,"object"!=typeof(n=this.ops[t-1])))return this.ops.unshift(e),this;if(a.default(e.attributes,n.attributes)){if("string"==typeof e.insert&&"string"==typeof n.insert)return this.ops[t-1]={insert:n.insert+e.insert},"object"==typeof e.attributes&&(this.ops[t-1].attributes=e.attributes),this;if("number"==typeof e.retain&&"number"==typeof n.retain)return this.ops[t-1]={retain:n.retain+e.retain},"object"==typeof e.attributes&&(this.ops[t-1].attributes=e.attributes),this}}return t===this.ops.length?this.ops.push(e):this.ops.splice(t,0,e),this},e.prototype.chop=function(){var e=this.ops[this.ops.length-1];return e&&e.retain&&!e.attributes&&this.ops.pop(),this},e.prototype.filter=function(e){return this.ops.filter(e)},e.prototype.forEach=function(e){this.ops.forEach(e)},e.prototype.map=function(e){return this.ops.map(e)},e.prototype.partition=function(e){var t=[],n=[];return this.forEach((function(r){(e(r)?t:n).push(r)})),[t,n]},e.prototype.reduce=function(e,t){return this.ops.reduce(e,t)},e.prototype.changeLength=function(){return this.reduce((function(e,t){return t.insert?e+l.default.length(t):t.delete?e-t.delete:e}),0)},e.prototype.length=function(){return this.reduce((function(e,t){return e+l.default.length(t)}),0)},e.prototype.slice=function(t,n){void 0===t&&(t=0),void 0===n&&(n=1/0);for(var r=[],o=l.default.iterator(this.ops),i=0;i0&&r.next(i.retain-c)}for(var u=new e(o);n.hasNext()||r.hasNext();)if("insert"===r.peekType())u.push(r.next());else if("delete"===n.peekType())u.push(n.next());else{var f=Math.min(n.peekLength(),r.peekLength()),d=n.next(f),p=r.next(f);if("number"==typeof p.retain){var h={};"number"==typeof d.retain?h.retain=f:h.insert=d.insert;var v=s.default.compose(d.attributes,p.attributes,"number"==typeof d.retain);if(v&&(h.attributes=v),u.push(h),!r.hasNext()&&a.default(u.ops[u.ops.length-1],h)){var m=new e(n.rest());return u.concat(m).chop()}}else"number"==typeof p.delete&&"number"==typeof d.retain&&u.push(p)}return u.chop()},e.prototype.concat=function(t){var n=new e(this.ops.slice());return t.ops.length>0&&(n.push(t.ops[0]),n.ops=n.ops.concat(t.ops.slice(1))),n},e.prototype.diff=function(t,n){if(this.ops===t.ops)return new e;var r=[this,t].map((function(e){return e.map((function(n){if(null!=n.insert)return"string"==typeof n.insert?n.insert:c;throw new Error("diff() called "+(e===t?"on":"with")+" non-document")})).join("")})),i=new e,u=o.default(r[0],r[1],n),f=l.default.iterator(this.ops),d=l.default.iterator(t.ops);return u.forEach((function(e){for(var t=e[1].length;t>0;){var n=0;switch(e[0]){case o.default.INSERT:n=Math.min(d.peekLength(),t),i.push(d.next(n));break;case o.default.DELETE:n=Math.min(t,f.peekLength()),f.next(n),i.delete(n);break;case o.default.EQUAL:n=Math.min(f.peekLength(),d.peekLength(),t);var r=f.next(n),l=d.next(n);a.default(r.insert,l.insert)?i.retain(n,s.default.diff(r.attributes,l.attributes)):i.push(l).delete(n)}t-=n}})),i.chop()},e.prototype.eachLine=function(t,n){void 0===n&&(n="\n");for(var r=l.default.iterator(this.ops),o=new e,i=0;r.hasNext();){if("insert"!==r.peekType())return;var a=r.peek(),s=l.default.length(a)-r.peekLength(),c="string"==typeof a.insert?a.insert.indexOf(n,s)-s:-1;if(c<0)o.push(r.next());else if(c>0)o.push(r.next(c));else{if(!1===t(o,r.next(1).attributes||{},i))return;i+=1,o=new e}}o.length()>0&&t(o,{},i)},e.prototype.invert=function(t){var n=new e;return this.reduce((function(e,r){if(r.insert)n.delete(l.default.length(r));else{if(r.retain&&null==r.attributes)return n.retain(r.retain),e+r.retain;if(r.delete||r.retain&&r.attributes){var o=r.delete||r.retain;return t.slice(e,e+o).forEach((function(e){r.delete?n.push(e):r.retain&&r.attributes&&n.retain(l.default.length(e),s.default.invert(r.attributes,e.attributes))})),e+o}}return e}),0),n.chop()},e.prototype.transform=function(t,n){if(void 0===n&&(n=!1),n=!!n,"number"==typeof t)return this.transformPosition(t,n);for(var r=t,o=l.default.iterator(this.ops),i=l.default.iterator(r.ops),a=new e;o.hasNext()||i.hasNext();)if("insert"!==o.peekType()||!n&&"insert"===i.peekType())if("insert"===i.peekType())a.push(i.next());else{var c=Math.min(o.peekLength(),i.peekLength()),u=o.next(c),f=i.next(c);if(u.delete)continue;f.delete?a.push(f):a.retain(c,s.default.transform(u.attributes,f.attributes,n))}else a.retain(l.default.length(o.next()));return a.chop()},e.prototype.transformPosition=function(e,t){void 0===t&&(t=!1),t=!!t;for(var n=l.default.iterator(this.ops),r=0;n.hasNext()&&r<=e;){var o=n.peekLength(),i=n.peekType();n.next(),"delete"!==i?("insert"===i&&(r=r-n?(e=r-n,this.index+=1,this.offset=0):this.offset+=e,"number"==typeof t.delete)return{delete:e};var i={};return t.attributes&&(i.attributes=t.attributes),"number"==typeof t.retain?i.retain=e:"string"==typeof t.insert?i.insert=t.insert.substr(n,e):i.insert=t.insert,i}return{retain:1/0}},e.prototype.peek=function(){return this.ops[this.index]},e.prototype.peekLength=function(){return this.ops[this.index]?o.default.length(this.ops[this.index])-this.offset:1/0},e.prototype.peekType=function(){return this.ops[this.index]?"number"==typeof this.ops[this.index].delete?"delete":"number"==typeof this.ops[this.index].retain?"retain":"insert":"retain"},e.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var e=this.offset,t=this.index,n=this.next(),r=this.ops.slice(this.index);return this.offset=e,this.index=t,[n].concat(r)}return[]},e}();t.default=i},430:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o,i=r(n(977));!function(e){e.iterator=function(e){return new i.default(e)},e.length=function(e){return"number"==typeof e.delete?e.delete:"number"==typeof e.retain?e.retain:"string"==typeof e.insert?e.insert.length:1}}(o||(o={})),t.default=o},165:function(e,t,n){var r,o;void 0===(o="function"==typeof(r=function(){var e,t={};function n(e,t,n){var r=e.getClientRects();if(2===r.length){var o=e.getBoundingClientRect();return r[t][n]=t.length)return Array.prototype.push.apply(e,t);for(;r1,e.getClientRects||(s.setEnd(i,1),e.getClientRects=e.getBoundingClientRect=2===s.getClientRects().length),!e.getBoundingClientRect){s.setEnd(s.startContainer,s.startOffset);var l=s.getBoundingClientRect();e.getBoundingClientRect=0===l.top&&0===l.left}if(document.body.removeChild(t),!e.getBoundingClientRect){var c=document.createElement("p");c.style.width="0px",c.style.fontSize="20px",c.style.whiteSpace="normal",c.style.wordBreak="normal";var u=document.createTextNode("m mm");c.appendChild(u),document.body.appendChild(c),s.setStart(u,1),s.setEnd(u,2),n(s,1,"left")?e.getBoundingClientRect=!0:(s.setStart(u,1),s.setEnd(u,3),n(s,0,"top")&&(e.getBoundingClientRect=!0)),document.body.removeChild(c)}var f=window.ActiveXObject&&new Function("/*@cc_on return @_jscript_version; @*/")();e.ieZoom=!!f&&f<=10}return e},t.getClientRects=function(e){var t=this.isBroken();if(t.ieZoom)return r(e.getClientRects());if(!t.getClientRects)return e.getClientRects();var n=[],i=[],a=e.endContainer,s=e.endOffset,l=document.createRange();function c(e){for(var t=0;e=e.previousSibling;)t++;return t}for(;a!==e.commonAncestorContainer;)l.setStart(a,0),l.setEnd(a,s),o(i,l.getClientRects()),s=c(a),a=a.parentNode;return(l=e.cloneRange()).setEnd(a,s),o(n,l.getClientRects()),o(n,i),n},t.getBoundingClientRect=function(e){var t=this.getClientRects(e);if(0===t.length)return null;var n,o=e.getBoundingClientRect(),i=this.isBroken();if(i.ieZoom)return r(o);if(!i.getBoundingClientRect)return o;if(0===o.width&&0===o.height)return t[0];for(var a=0,s=t.length;a0},e.prototype.connect_=function(){o&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),l?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){o&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;s.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),u=function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),w="undefined"!=typeof WeakMap?new WeakMap:new r,k=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=c.getInstance(),r=new _(t,n,this);w.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){k.prototype[e]=function(){var t;return(t=w.get(this))[e].apply(t,arguments)}}));var x=void 0!==i.ResizeObserver?i.ResizeObserver:k},413:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return g}});var r=n(379),o=n.n(r),i=n(795),a=n.n(i),s=n(569),l=n.n(s),c=n(565),u=n.n(c),f=n(216),d=n.n(f),p=n(589),h=n.n(p),v=n(582),m={};m.styleTagTransform=h(),m.setAttributes=u(),m.insert=l().bind(null,"head"),m.domAPI=a(),m.insertStyleElement=d(),o()(v.Z,m);var g=v.Z&&v.Z.locals?v.Z.locals:void 0},379:function(e){"use strict";var t=[];function n(e){for(var n=-1,r=0;r0?" ".concat(n.layer):""," {")),r+=n.css,o&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var i=n.sourceMap;i&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:function(e){"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},607:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Cursor=t.default=void 0;var o=r(n(678));t.default=o.default;var i=r(n(353));t.Cursor=i.default,n(413)},353:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(207),o=function(){function e(e,t,n){this.id=e,this.name=t,this.color=n,this.toggleNearCursor=this.toggleNearCursor.bind(this),this._toggleOpenedCursor=this._toggleOpenedCursor.bind(this),this._setHoverState=this._setHoverState.bind(this)}return e.prototype.build=function(t){var n=document.createElement(e.CONTAINER_ELEMENT_TAG);n.classList.add(e.CURSOR_CLASS),n.id="ql-cursor-".concat(this.id),n.innerHTML=t.template;var r=n.getElementsByClassName(e.SELECTION_CLASS)[0],o=n.getElementsByClassName(e.CARET_CONTAINER_CLASS)[0],i=o.getElementsByClassName(e.CARET_CLASS)[0],a=n.getElementsByClassName(e.FLAG_CLASS)[0];return a.style.backgroundColor=this.color,i.style.backgroundColor=this.color,n.getElementsByClassName(e.NAME_CLASS)[0].textContent=this.name,this._hideDelay="".concat(t.hideDelayMs,"ms"),this._hideSpeedMs=t.hideSpeedMs,this._positionFlag=t.positionFlag,a.style.transitionDelay=this._hideDelay,a.style.transitionDuration="".concat(this._hideSpeedMs,"ms"),this._el=n,this._selectionEl=r,this._caretEl=o,this._flagEl=a,o.addEventListener("mouseover",this._setHoverState),this._el},e.prototype.show=function(){this._el.classList.remove(e.HIDDEN_CLASS)},e.prototype.hide=function(){this._el.classList.add(e.HIDDEN_CLASS)},e.prototype.remove=function(){this._el.parentNode.removeChild(this._el)},e.prototype.toggleNearCursor=function(t,n){var r=this._getCoordinates(),o=r.left,i=r.right,a=r.top,s=r.bottom,l=t>=o&&t<=i&&n>=a&&n<=s;return this._caretEl.classList.toggle(e.CONTAINER_HOVER_CLASS,l),l},e.prototype.toggleFlag=function(t){var n=this;this._caretEl.classList.toggle(e.CONTAINER_HOVER_CLASS,t)||(this._flagEl.classList.add(e.NO_DELAY_CLASS),setTimeout((function(){return n._flagEl.classList.remove(e.NO_DELAY_CLASS)}),this._hideSpeedMs))},e.prototype.updateCaret=function(e,t){this._caretEl.style.top="".concat(e.top,"px"),this._caretEl.style.left="".concat(e.left,"px"),this._caretEl.style.height="".concat(e.height,"px"),this._positionFlag?this._positionFlag(this._flagEl,e,t):this._updateCaretFlag(e,t)},e.prototype.updateSelection=function(e,t){var n=this;this._clearSelection(),e=e||[],e=Array.from(e),e=this._sanitize(e),(e=this._sortByDomPosition(e)).forEach((function(e){return n._addSelection(e,t)}))},e.prototype._setHoverState=function(){document.addEventListener("mousemove",this._toggleOpenedCursor)},e.prototype._toggleOpenedCursor=function(t){var n=this.toggleNearCursor(t.clientX,t.clientY);this._caretEl.classList.toggle(e.CONTAINER_NO_POINTER_CLASS,n),n||document.removeEventListener("mousemove",this._toggleOpenedCursor)},e.prototype._getCoordinates=function(){return this._caretEl.getBoundingClientRect()},e.prototype._updateCaretFlag=function(t,n){this._flagEl.style.width="";var r=this._flagEl.getBoundingClientRect();this._flagEl.classList.remove(e.FLAG_FLIPPED_CLASS),t.left>n.width-r.width&&this._flagEl.classList.add(e.FLAG_FLIPPED_CLASS),this._flagEl.style.left="".concat(t.left,"px"),this._flagEl.style.top="".concat(t.top,"px"),this._flagEl.style.width="".concat(Math.ceil(r.width),"px")},e.prototype._clearSelection=function(){this._selectionEl.innerHTML=""},e.prototype._addSelection=function(e,t){var n=this._selectionBlock(e,t);this._selectionEl.appendChild(n)},e.prototype._selectionBlock=function(t,n){var o=document.createElement(e.SELECTION_ELEMENT_TAG);return o.classList.add(e.SELECTION_BLOCK_CLASS),o.style.top="".concat(t.top-n.top,"px"),o.style.left="".concat(t.left-n.left,"px"),o.style.width="".concat(t.width,"px"),o.style.height="".concat(t.height,"px"),o.style.backgroundColor=r(this.color).setAlpha(.3).toString(),o},e.prototype._sortByDomPosition=function(e){return e.sort((function(e,t){return e.top===t.top?e.left-t.left:e.top-t.top}))},e.prototype._sanitize=function(e){var t=this,n=new Set;return e.filter((function(e){if(!e.width||!e.height)return!1;var r=t._serialize(e);return!n.has(r)&&(n.add(r),!0)}))},e.prototype._serialize=function(e){return["top:".concat(e.top),"right:".concat(e.right),"bottom:".concat(e.bottom),"left:".concat(e.left)].join(";")},e.CONTAINER_ELEMENT_TAG="SPAN",e.SELECTION_ELEMENT_TAG="SPAN",e.CURSOR_CLASS="ql-cursor",e.SELECTION_CLASS="ql-cursor-selections",e.SELECTION_BLOCK_CLASS="ql-cursor-selection-block",e.CARET_CLASS="ql-cursor-caret",e.CARET_CONTAINER_CLASS="ql-cursor-caret-container",e.CONTAINER_HOVER_CLASS="hover",e.CONTAINER_NO_POINTER_CLASS="no-pointer",e.FLAG_CLASS="ql-cursor-flag",e.FLAG_FLIPPED_CLASS="flag-flipped",e.NAME_CLASS="ql-cursor-name",e.HIDDEN_CLASS="hidden",e.NO_DELAY_CLASS="no-delay",e}();t.default=o},678:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var s=a(n(353)),l=i(n(165)),c=a(n(338)),u=a(n(33)),f=n(895),d=function(){function e(e,t){void 0===t&&(t={}),this._cursors={},this._isObserving=!1,this._handleCursorTouch=this._handleCursorTouch.bind(this),this.quill=e,this.options=this._setDefaults(t),this._container=this.quill.addContainer(this.options.containerClass),this._boundsContainer=this.options.boundsContainer||this.quill.container,this._currentSelection=this.quill.getSelection(),this._registerSelectionChangeListeners(),this._registerTextChangeListener(),this._registerDomListeners()}return e.prototype.createCursor=function(e,t,n){var r=this._cursors[e];if(!r){r=new s.default(e,t,n),this._cursors[e]=r;var o=r.build(this.options);this._container.appendChild(o)}return r},e.prototype.moveCursor=function(e,t){var n=this._cursors[e];n&&(n.range=t,this._updateCursor(n))},e.prototype.removeCursor=function(e){var t=this._cursors[e];t&&(t.remove(),delete this._cursors[e])},e.prototype.update=function(){var e=this;this.cursors().forEach((function(t){return e._updateCursor(t)}))},e.prototype.clearCursors=function(){var e=this;this.cursors().forEach((function(t){return e.removeCursor(t.id)}))},e.prototype.toggleFlag=function(e,t){var n=this._cursors[e];n&&n.toggleFlag(t)},e.prototype.cursors=function(){var e=this;return Object.keys(this._cursors).map((function(t){return e._cursors[t]}))},e.prototype._registerSelectionChangeListeners=function(){var e=this;this.quill.on(this.quill.constructor.events.SELECTION_CHANGE,(function(t){e._currentSelection=t}))},e.prototype._registerTextChangeListener=function(){var e=this;this.quill.on(this.quill.constructor.events.TEXT_CHANGE,(function(t){return e._handleTextChange(t)}))},e.prototype._registerDomListeners=function(){var e=this,t=this.quill.container.getElementsByClassName("ql-editor")[0];t.addEventListener("scroll",(function(){return e.update()})),t.addEventListener("touchstart",this._handleCursorTouch)},e.prototype._handleCursorTouch=function(e){var t=this;this.cursors().forEach((function(n){n.toggleNearCursor(e.pageX,e.pageY),setTimeout((function(){return n.toggleFlag(!1)}),t.options.hideDelayMs)}))},e.prototype._registerResizeObserver=function(){var e=this;if(!this._isObserving){var t=this.quill.container.getElementsByClassName("ql-editor")[0],n=new u.default((function(t){if(!t[0].target.isConnected)return n.disconnect(),void(e._isObserving=!1);e.update()}));n.observe(t),this._isObserving=!0}},e.prototype._updateCursor=function(e){if(this._registerResizeObserver(),!e.range)return e.hide();var t=this._indexWithinQuillBounds(e.range.index),n=this._indexWithinQuillBounds(e.range.index+e.range.length),r=this.quill.getLeaf(t),o=this.quill.getLeaf(n);if(!this._leafIsValid(r)||!this._leafIsValid(o))return e.hide();e.show();var i=this._boundsContainer.getBoundingClientRect(),a=this.quill.getBounds(n);e.updateCaret(a,i);var s=this._lineRanges(e,r,o).reduce((function(e,t){return e.concat(Array.from(l.getClientRects(t)))}),[]);e.updateSelection(s,i)},e.prototype._indexWithinQuillBounds=function(e){var t=this.quill.getLength(),n=t?t-1:0;return e=Math.max(e,0),Math.min(e,n)},e.prototype._leafIsValid=function(e){return e&&e[0]&&e[0].domNode&&e[1]>=0},e.prototype._handleTextChange=function(e){var t=this;window.setTimeout((function(){t.options.transformOnTextChange&&t._transformCursors(e),t.options.selectionChangeSource&&(t._emitSelection(),t.update())}))},e.prototype._emitSelection=function(){this.quill.emitter.emit(this.quill.constructor.events.SELECTION_CHANGE,this.quill.getSelection(),this._currentSelection,this.options.selectionChangeSource)},e.prototype._setDefaults=function(t){return(t=Object.assign({},t)).template||(t.template=e.DEFAULTS.template),t.containerClass||(t.containerClass=e.DEFAULTS.containerClass),null!==t.selectionChangeSource&&(t.selectionChangeSource||(t.selectionChangeSource=e.DEFAULTS.selectionChangeSource)),t.hideDelayMs=Number.isInteger(t.hideDelayMs)?t.hideDelayMs:e.DEFAULTS.hideDelayMs,t.hideSpeedMs=Number.isInteger(t.hideSpeedMs)?t.hideSpeedMs:e.DEFAULTS.hideSpeedMs,t.transformOnTextChange=!!t.transformOnTextChange,t},e.prototype._lineRanges=function(e,t,n){var r=this.quill.getLines(e.range);return r.reduce((function(e,o,i){if(!o.children){var a=document.createRange();return a.selectNode(o.domNode),e.concat(a)}var s=0===i?t:o.path(0).pop(),l=s[0],c=s[1],u=i===r.length-1?n:o.path(o.length()-1).pop(),f=u[0],d=u[1],p=document.createRange();return l.domNode.nodeType===Node.TEXT_NODE?p.setStart(l.domNode,c):p.setStartBefore(l.domNode),f.domNode.nodeType===Node.TEXT_NODE?p.setEnd(f.domNode,d):p.setEndAfter(f.domNode),e.concat(p)}),[])},e.prototype._transformCursors=function(e){var t=this;e=new f(e),this.cursors().filter((function(e){return e.range})).forEach((function(n){n.range.index=e.transformPosition(n.range.index),t._updateCursor(n)}))},e.DEFAULTS={template:c.default,containerClass:"ql-cursors",selectionChangeSource:"api",hideDelayMs:3e3,hideSpeedMs:400},e}();t.default=d},338:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(353)),i='\n \n \n \n \n \n \n
\n');t.default=i},207:function(e){e.exports=function(){"use strict";var e=/^\s+/,t=/\s+$/;function n(r,o){if(o=o||{},(r=r||"")instanceof n)return r;if(!(this instanceof n))return new n(r,o);var i=function(n){var r,o,i,a={r:0,g:0,b:0},s=1,l=null,c=null,u=null,f=!1,d=!1;return"string"==typeof n&&(n=function(n){n=n.replace(e,"").replace(t,"").toLowerCase();var r,o=!1;if(b[n])n=b[n],o=!0;else if("transparent"==n)return{r:0,g:0,b:0,a:0,format:"name"};return(r=j.rgb.exec(n))?{r:r[1],g:r[2],b:r[3]}:(r=j.rgba.exec(n))?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=j.hsl.exec(n))?{h:r[1],s:r[2],l:r[3]}:(r=j.hsla.exec(n))?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=j.hsv.exec(n))?{h:r[1],s:r[2],v:r[3]}:(r=j.hsva.exec(n))?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=j.hex8.exec(n))?{r:S(r[1]),g:S(r[2]),b:S(r[3]),a:T(r[4]),format:o?"name":"hex8"}:(r=j.hex6.exec(n))?{r:S(r[1]),g:S(r[2]),b:S(r[3]),format:o?"name":"hex"}:(r=j.hex4.exec(n))?{r:S(r[1]+""+r[1]),g:S(r[2]+""+r[2]),b:S(r[3]+""+r[3]),a:T(r[4]+""+r[4]),format:o?"name":"hex8"}:!!(r=j.hex3.exec(n))&&{r:S(r[1]+""+r[1]),g:S(r[2]+""+r[2]),b:S(r[3]+""+r[3]),format:o?"name":"hex"}}(n)),"object"==typeof n&&(N(n.r)&&N(n.g)&&N(n.b)?(r=n.r,o=n.g,i=n.b,a={r:255*k(r,255),g:255*k(o,255),b:255*k(i,255)},f=!0,d="%"===String(n.r).substr(-1)?"prgb":"rgb"):N(n.h)&&N(n.s)&&N(n.v)?(l=C(n.s),c=C(n.v),a=function(e,t,n){e=6*k(e,360),t=k(t,100),n=k(n,100);var r=Math.floor(e),o=e-r,i=n*(1-t),a=n*(1-o*t),s=n*(1-(1-o)*t),l=r%6;return{r:255*[n,a,i,i,s,n][l],g:255*[s,n,n,a,i,i][l],b:255*[i,i,s,n,n,a][l]}}(n.h,l,c),f=!0,d="hsv"):N(n.h)&&N(n.s)&&N(n.l)&&(l=C(n.s),u=C(n.l),a=function(e,t,n){var r,o,i;function a(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(e=k(e,360),t=k(t,100),n=k(n,100),0===t)r=o=i=n;else{var s=n<.5?n*(1+t):n+t-n*t,l=2*n-s;r=a(l,s,e+1/3),o=a(l,s,e),i=a(l,s,e-1/3)}return{r:255*r,g:255*o,b:255*i}}(n.h,l,u),f=!0,d="hsl"),n.hasOwnProperty("a")&&(s=n.a)),s=w(s),{ok:f,format:n.format||d,r:Math.min(255,Math.max(a.r,0)),g:Math.min(255,Math.max(a.g,0)),b:Math.min(255,Math.max(a.b,0)),a:s}}(r);this._originalInput=r,this._r=i.r,this._g=i.g,this._b=i.b,this._a=i.a,this._roundA=Math.round(100*this._a)/100,this._format=o.format||i.format,this._gradientType=o.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=i.ok}function r(e,t,n){e=k(e,255),t=k(t,255),n=k(n,255);var r,o,i=Math.max(e,t,n),a=Math.min(e,t,n),s=(i+a)/2;if(i==a)r=o=0;else{var l=i-a;switch(o=s>.5?l/(2-i-a):l/(i+a),i){case e:r=(t-n)/l+(t>1)+720)%360;--t;)o.h=(o.h+i)%360,a.push(n(o));return a}function y(e,t){t=t||6;for(var r=n(e).toHsv(),o=r.h,i=r.s,a=r.v,s=[],l=1/t;t--;)s.push(n({h:o,s:i,v:a})),a=(a+l)%1;return s}n.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,n,r=this.toRgb();return e=r.r/255,t=r.g/255,n=r.b/255,.2126*(e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))},setAlpha:function(e){return this._a=w(e),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var e=o(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=o(this._r,this._g,this._b),t=Math.round(360*e.h),n=Math.round(100*e.s),r=Math.round(100*e.v);return 1==this._a?"hsv("+t+", "+n+"%, "+r+"%)":"hsva("+t+", "+n+"%, "+r+"%, "+this._roundA+")"},toHsl:function(){var e=r(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=r(this._r,this._g,this._b),t=Math.round(360*e.h),n=Math.round(100*e.s),o=Math.round(100*e.l);return 1==this._a?"hsl("+t+", "+n+"%, "+o+"%)":"hsla("+t+", "+n+"%, "+o+"%, "+this._roundA+")"},toHex:function(e){return i(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,n,r,o){var i=[E(Math.round(e).toString(16)),E(Math.round(t).toString(16)),E(Math.round(n).toString(16)),E(O(r))];return o&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)&&i[3].charAt(0)==i[3].charAt(1)?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0)+i[3].charAt(0):i.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(100*k(this._r,255))+"%",g:Math.round(100*k(this._g,255))+"%",b:Math.round(100*k(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+Math.round(100*k(this._r,255))+"%, "+Math.round(100*k(this._g,255))+"%, "+Math.round(100*k(this._b,255))+"%)":"rgba("+Math.round(100*k(this._r,255))+"%, "+Math.round(100*k(this._g,255))+"%, "+Math.round(100*k(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(_[i(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+a(this._r,this._g,this._b,this._a),r=t,o=this._gradientType?"GradientType = 1, ":"";if(e){var i=n(e);r="#"+a(i._r,i._g,i._b,i._a)}return"progid:DXImageTransform.Microsoft.gradient("+o+"startColorstr="+t+",endColorstr="+r+")"},toString:function(e){var t=!!e;e=e||this._format;var n=!1,r=this._a<1&&this._a>=0;return t||!r||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return n(this.toString())},_applyModification:function(e,t){var n=e.apply(null,[this].concat([].slice.call(t)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(u,arguments)},brighten:function(){return this._applyModification(f,arguments)},darken:function(){return this._applyModification(d,arguments)},desaturate:function(){return this._applyModification(s,arguments)},saturate:function(){return this._applyModification(l,arguments)},greyscale:function(){return this._applyModification(c,arguments)},spin:function(){return this._applyModification(p,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(g,arguments)},complement:function(){return this._applyCombination(h,arguments)},monochromatic:function(){return this._applyCombination(y,arguments)},splitcomplement:function(){return this._applyCombination(m,arguments)},triad:function(){return this._applyCombination(v,[3])},tetrad:function(){return this._applyCombination(v,[4])}},n.fromRatio=function(e,t){if("object"==typeof e){var r={};for(var o in e)e.hasOwnProperty(o)&&(r[o]="a"===o?e[o]:C(e[o]));e=r}return n(e,t)},n.equals=function(e,t){return!(!e||!t)&&n(e).toRgbString()==n(t).toRgbString()},n.random=function(){return n.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})},n.mix=function(e,t,r){r=0===r?0:r||50;var o=n(e).toRgb(),i=n(t).toRgb(),a=r/100;return n({r:(i.r-o.r)*a+o.r,g:(i.g-o.g)*a+o.g,b:(i.b-o.b)*a+o.b,a:(i.a-o.a)*a+o.a})},n.readability=function(e,t){var r=n(e),o=n(t);return(Math.max(r.getLuminance(),o.getLuminance())+.05)/(Math.min(r.getLuminance(),o.getLuminance())+.05)},n.isReadable=function(e,t,r){var o,i,a,s,l,c=n.readability(e,t);switch(i=!1,(a=r,"AA"!==(s=((a=a||{level:"AA",size:"small"}).level||"AA").toUpperCase())&&"AAA"!==s&&(s="AA"),"small"!==(l=(a.size||"small").toLowerCase())&&"large"!==l&&(l="small"),o={level:s,size:l}).level+o.size){case"AAsmall":case"AAAlarge":i=c>=4.5;break;case"AAlarge":i=c>=3;break;case"AAAsmall":i=c>=7}return i},n.mostReadable=function(e,t,r){var o,i,a,s,l=null,c=0;i=(r=r||{}).includeFallbackColors,a=r.level,s=r.size;for(var u=0;uc&&(c=o,l=n(t[u]));return n.isReadable(e,l,{level:a,size:s})||!i?l:(r.includeFallbackColors=!1,n.mostReadable(e,["#fff","#000"],r))};var b=n.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},_=n.hexNames=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}(b);function w(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function k(e,t){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function x(e){return Math.min(1,Math.max(0,e))}function S(e){return parseInt(e,16)}function E(e){return 1==e.length?"0"+e:""+e}function C(e){return e<=1&&(e=100*e+"%"),e}function O(e){return Math.round(255*parseFloat(e)).toString(16)}function T(e){return S(e)/255}var R,P,A,j=(P="[\\s|\\(]+("+(R="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+R+")[,|\\s]+("+R+")\\s*\\)?",A="[\\s|\\(]+("+R+")[,|\\s]+("+R+")[,|\\s]+("+R+")[,|\\s]+("+R+")\\s*\\)?",{CSS_UNIT:new RegExp(R),rgb:new RegExp("rgb"+P),rgba:new RegExp("rgba"+A),hsl:new RegExp("hsl"+P),hsla:new RegExp("hsla"+A),hsv:new RegExp("hsv"+P),hsva:new RegExp("hsva"+A),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function N(e){return!!j.CSS_UNIT.exec(e)}return n}()}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}return n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},n.nc=void 0,n(607).default}()},6921:function(e){var t;"undefined"!==typeof self&&self,t=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=109)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(17),o=n(18),i=n(19),a=n(45),s=n(46),l=n(47),c=n(48),u=n(49),f=n(12),d=n(32),p=n(33),h=n(31),v=n(1),m={Scope:v.Scope,create:v.create,find:v.find,query:v.query,register:v.register,Container:r.default,Format:o.default,Leaf:i.default,Embed:c.default,Scroll:a.default,Block:l.default,Inline:s.default,Text:u.default,Attributor:{Attribute:f.default,Class:d.default,Style:p.default,Store:h.default}};t.default=m},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=function(e){function t(t){var n=this;return t="[Parchment] "+t,(n=e.call(this,t)||this).message=t,n.name=n.constructor.name,n}return r(t,e),t}(Error);t.ParchmentError=o;var i,a={},s={},l={},c={};function u(e,t){var n;if(void 0===t&&(t=i.ANY),"string"===typeof e)n=c[e]||a[e];else if(e instanceof Text||e.nodeType===Node.TEXT_NODE)n=c.text;else if("number"===typeof e)e&i.LEVEL&i.BLOCK?n=c.block:e&i.LEVEL&i.INLINE&&(n=c.inline);else if(e instanceof HTMLElement){var r=(e.getAttribute("class")||"").split(/\s+/);for(var o in r)if(n=s[r[o]])break;n=n||l[e.tagName]}return null==n?null:t&i.LEVEL&n.scope&&t&i.TYPE&n.scope?n:null}t.DATA_KEY="__blot",function(e){e[e.TYPE=3]="TYPE",e[e.LEVEL=12]="LEVEL",e[e.ATTRIBUTE=13]="ATTRIBUTE",e[e.BLOT=14]="BLOT",e[e.INLINE=7]="INLINE",e[e.BLOCK=11]="BLOCK",e[e.BLOCK_BLOT=10]="BLOCK_BLOT",e[e.INLINE_BLOT=6]="INLINE_BLOT",e[e.BLOCK_ATTRIBUTE=9]="BLOCK_ATTRIBUTE",e[e.INLINE_ATTRIBUTE=5]="INLINE_ATTRIBUTE",e[e.ANY=15]="ANY"}(i=t.Scope||(t.Scope={})),t.create=function(e,t){var n=u(e);if(null==n)throw new o("Unable to create "+e+" blot");var r=n,i=e instanceof Node||e.nodeType===Node.TEXT_NODE?e:r.create(t);return new r(i,t)},t.find=function e(n,r){return void 0===r&&(r=!1),null==n?null:null!=n[t.DATA_KEY]?n[t.DATA_KEY].blot:r?e(n.parentNode,r):null},t.query=u,t.register=function e(){for(var t=[],n=0;n1)return t.map((function(t){return e(t)}));var r=t[0];if("string"!==typeof r.blotName&&"string"!==typeof r.attrName)throw new o("Invalid definition");if("abstract"===r.blotName)throw new o("Cannot register abstract class");return c[r.blotName||r.attrName]=r,"string"===typeof r.keyName?a[r.keyName]=r:(null!=r.className&&(s[r.className]=r),null!=r.tagName&&(Array.isArray(r.tagName)?r.tagName=r.tagName.map((function(e){return e.toUpperCase()})):r.tagName=r.tagName.toUpperCase(),(Array.isArray(r.tagName)?r.tagName:[r.tagName]).forEach((function(e){null!=l[e]&&null!=r.className||(l[e]=r)})))),r}},function(e,t,n){var r=n(51),o=n(11),i=n(3),a=n(20),s=String.fromCharCode(0),l=function(e){Array.isArray(e)?this.ops=e:null!=e&&Array.isArray(e.ops)?this.ops=e.ops:this.ops=[]};l.prototype.insert=function(e,t){var n={};return 0===e.length?this:(n.insert=e,null!=t&&"object"===typeof t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n))},l.prototype.delete=function(e){return e<=0?this:this.push({delete:e})},l.prototype.retain=function(e,t){if(e<=0)return this;var n={retain:e};return null!=t&&"object"===typeof t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n)},l.prototype.push=function(e){var t=this.ops.length,n=this.ops[t-1];if(e=i(!0,{},e),"object"===typeof n){if("number"===typeof e.delete&&"number"===typeof n.delete)return this.ops[t-1]={delete:n.delete+e.delete},this;if("number"===typeof n.delete&&null!=e.insert&&(t-=1,"object"!==typeof(n=this.ops[t-1])))return this.ops.unshift(e),this;if(o(e.attributes,n.attributes)){if("string"===typeof e.insert&&"string"===typeof n.insert)return this.ops[t-1]={insert:n.insert+e.insert},"object"===typeof e.attributes&&(this.ops[t-1].attributes=e.attributes),this;if("number"===typeof e.retain&&"number"===typeof n.retain)return this.ops[t-1]={retain:n.retain+e.retain},"object"===typeof e.attributes&&(this.ops[t-1].attributes=e.attributes),this}}return t===this.ops.length?this.ops.push(e):this.ops.splice(t,0,e),this},l.prototype.chop=function(){var e=this.ops[this.ops.length-1];return e&&e.retain&&!e.attributes&&this.ops.pop(),this},l.prototype.filter=function(e){return this.ops.filter(e)},l.prototype.forEach=function(e){this.ops.forEach(e)},l.prototype.map=function(e){return this.ops.map(e)},l.prototype.partition=function(e){var t=[],n=[];return this.forEach((function(r){(e(r)?t:n).push(r)})),[t,n]},l.prototype.reduce=function(e,t){return this.ops.reduce(e,t)},l.prototype.changeLength=function(){return this.reduce((function(e,t){return t.insert?e+a.length(t):t.delete?e-t.delete:e}),0)},l.prototype.length=function(){return this.reduce((function(e,t){return e+a.length(t)}),0)},l.prototype.slice=function(e,t){e=e||0,"number"!==typeof t&&(t=1/0);for(var n=[],r=a.iterator(this.ops),o=0;o0&&n.next(i.retain-s)}for(var c=new l(r);t.hasNext()||n.hasNext();)if("insert"===n.peekType())c.push(n.next());else if("delete"===t.peekType())c.push(t.next());else{var u=Math.min(t.peekLength(),n.peekLength()),f=t.next(u),d=n.next(u);if("number"===typeof d.retain){var p={};"number"===typeof f.retain?p.retain=u:p.insert=f.insert;var h=a.attributes.compose(f.attributes,d.attributes,"number"===typeof f.retain);if(h&&(p.attributes=h),c.push(p),!n.hasNext()&&o(c.ops[c.ops.length-1],p)){var v=new l(t.rest());return c.concat(v).chop()}}else"number"===typeof d.delete&&"number"===typeof f.retain&&c.push(d)}return c.chop()},l.prototype.concat=function(e){var t=new l(this.ops.slice());return e.ops.length>0&&(t.push(e.ops[0]),t.ops=t.ops.concat(e.ops.slice(1))),t},l.prototype.diff=function(e,t){if(this.ops===e.ops)return new l;var n=[this,e].map((function(t){return t.map((function(n){if(null!=n.insert)return"string"===typeof n.insert?n.insert:s;throw new Error("diff() called "+(t===e?"on":"with")+" non-document")})).join("")})),i=new l,c=r(n[0],n[1],t),u=a.iterator(this.ops),f=a.iterator(e.ops);return c.forEach((function(e){for(var t=e[1].length;t>0;){var n=0;switch(e[0]){case r.INSERT:n=Math.min(f.peekLength(),t),i.push(f.next(n));break;case r.DELETE:n=Math.min(t,u.peekLength()),u.next(n),i.delete(n);break;case r.EQUAL:n=Math.min(u.peekLength(),f.peekLength(),t);var s=u.next(n),l=f.next(n);o(s.insert,l.insert)?i.retain(n,a.attributes.diff(s.attributes,l.attributes)):i.push(l).delete(n)}t-=n}})),i.chop()},l.prototype.eachLine=function(e,t){t=t||"\n";for(var n=a.iterator(this.ops),r=new l,o=0;n.hasNext();){if("insert"!==n.peekType())return;var i=n.peek(),s=a.length(i)-n.peekLength(),c="string"===typeof i.insert?i.insert.indexOf(t,s)-s:-1;if(c<0)r.push(n.next());else if(c>0)r.push(n.next(c));else{if(!1===e(r,n.next(1).attributes||{},o))return;o+=1,r=new l}}r.length()>0&&e(r,{},o)},l.prototype.transform=function(e,t){if(t=!!t,"number"===typeof e)return this.transformPosition(e,t);for(var n=a.iterator(this.ops),r=a.iterator(e.ops),o=new l;n.hasNext()||r.hasNext();)if("insert"!==n.peekType()||!t&&"insert"===r.peekType())if("insert"===r.peekType())o.push(r.next());else{var i=Math.min(n.peekLength(),r.peekLength()),s=n.next(i),c=r.next(i);if(s.delete)continue;c.delete?o.push(c):o.retain(i,a.attributes.transform(s.attributes,c.attributes,t))}else o.retain(a.length(n.next()));return o.chop()},l.prototype.transformPosition=function(e,t){t=!!t;for(var n=a.iterator(this.ops),r=0;n.hasNext()&&r<=e;){var o=n.peekLength(),i=n.peekType();n.next(),"delete"!==i?("insert"===i&&(r0&&(e1&&void 0!==arguments[1]&&arguments[1];if(n&&(0===e||e>=this.length()-1)){var r=this.clone();return 0===e?(this.parent.insertBefore(r,this),this):(this.parent.insertBefore(r,this.next),r)}var i=o(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"split",this).call(this,e,n);return this.cache={},i}}]),t}(s.default.Block);function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return null==e?t:("function"===typeof e.formats&&(t=(0,i.default)(t,e.formats())),null==e.parent||"scroll"==e.parent.blotName||e.parent.statics.scope!==e.statics.scope?t:g(e.parent,t))}m.blotName="block",m.tagName="P",m.defaultChild="break",m.allowedChildren=[c.default,s.default.Embed,u.default],t.bubbleFormats=g,t.BlockEmbed=v,t.default=m},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.overload=t.expandConfig=void 0;var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){o=!0,i=l}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},i=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options=_(t,r),this.container=this.options.container,null==this.container)return y.error("Invalid Quill container",t);this.options.debug&&e.debug(this.options.debug);var o=this.container.innerHTML.trim();this.container.classList.add("ql-container"),this.container.innerHTML="",this.container.__quill=this,this.root=this.addContainer("ql-editor"),this.root.classList.add("ql-blank"),this.root.setAttribute("data-gramm",!1),this.scrollingContainer=this.options.scrollingContainer||this.root,this.emitter=new l.default,this.scroll=u.default.create(this.root,{emitter:this.emitter,whitelist:this.options.formats}),this.editor=new s.default(this.scroll),this.selection=new d.default(this.scroll,this.emitter),this.theme=new this.options.theme(this,this.options),this.keyboard=this.theme.addModule("keyboard"),this.clipboard=this.theme.addModule("clipboard"),this.history=this.theme.addModule("history"),this.theme.init(),this.emitter.on(l.default.events.EDITOR_CHANGE,(function(e){e===l.default.events.TEXT_CHANGE&&n.root.classList.toggle("ql-blank",n.editor.isBlank())})),this.emitter.on(l.default.events.SCROLL_UPDATE,(function(e,t){var r=n.selection.lastRange,o=r&&0===r.length?r.index:void 0;w.call(n,(function(){return n.editor.update(null,t,o)}),e)}));var i=this.clipboard.convert("");this.setContents(i),this.history.clear(),this.options.placeholder&&this.root.setAttribute("data-placeholder",this.options.placeholder),this.options.readOnly&&this.disable()}return i(e,null,[{key:"debug",value:function(e){!0===e&&(e="log"),h.default.level(e)}},{key:"find",value:function(e){return e.__quill||u.default.find(e)}},{key:"import",value:function(e){return null==this.imports[e]&&y.error("Cannot import "+e+". Are you sure it was registered?"),this.imports[e]}},{key:"register",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"!==typeof e){var o=e.attrName||e.blotName;"string"===typeof o?this.register("formats/"+o,e,t):Object.keys(e).forEach((function(r){n.register(r,e[r],t)}))}else null==this.imports[e]||r||y.warn("Overwriting "+e+" with",t),this.imports[e]=t,(e.startsWith("blots/")||e.startsWith("formats/"))&&"abstract"!==t.blotName?u.default.register(t):e.startsWith("modules")&&"function"===typeof t.register&&t.register()}}]),i(e,[{key:"addContainer",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"===typeof e){var n=e;(e=document.createElement("div")).classList.add(n)}return this.container.insertBefore(e,t),e}},{key:"blur",value:function(){this.selection.setRange(null)}},{key:"deleteText",value:function(e,t,n){var r=this,i=k(e,t,n),a=o(i,4);return e=a[0],t=a[1],n=a[3],w.call(this,(function(){return r.editor.deleteText(e,t)}),n,e,-1*t)}},{key:"disable",value:function(){this.enable(!1)}},{key:"enable",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.scroll.enable(e),this.container.classList.toggle("ql-disabled",!e)}},{key:"focus",value:function(){var e=this.scrollingContainer.scrollTop;this.selection.focus(),this.scrollingContainer.scrollTop=e,this.scrollIntoView()}},{key:"format",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l.default.sources.API;return w.call(this,(function(){var r=n.getSelection(!0),o=new a.default;if(null==r)return o;if(u.default.query(e,u.default.Scope.BLOCK))o=n.editor.formatLine(r.index,r.length,g({},e,t));else{if(0===r.length)return n.selection.format(e,t),o;o=n.editor.formatText(r.index,r.length,g({},e,t))}return n.setSelection(r,l.default.sources.SILENT),o}),r)}},{key:"formatLine",value:function(e,t,n,r,i){var a,s=this,l=k(e,t,n,r,i),c=o(l,4);return e=c[0],t=c[1],a=c[2],i=c[3],w.call(this,(function(){return s.editor.formatLine(e,t,a)}),i,e,0)}},{key:"formatText",value:function(e,t,n,r,i){var a,s=this,l=k(e,t,n,r,i),c=o(l,4);return e=c[0],t=c[1],a=c[2],i=c[3],w.call(this,(function(){return s.editor.formatText(e,t,a)}),i,e,0)}},{key:"getBounds",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=void 0;n="number"===typeof e?this.selection.getBounds(e,t):this.selection.getBounds(e.index,e.length);var r=this.container.getBoundingClientRect();return{bottom:n.bottom-r.top,height:n.height,left:n.left-r.left,right:n.right-r.left,top:n.top-r.top,width:n.width}}},{key:"getContents",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-e,n=k(e,t),r=o(n,2);return e=r[0],t=r[1],this.editor.getContents(e,t)}},{key:"getFormat",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.getSelection(!0),t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"number"===typeof e?this.editor.getFormat(e,t):this.editor.getFormat(e.index,e.length)}},{key:"getIndex",value:function(e){return e.offset(this.scroll)}},{key:"getLength",value:function(){return this.scroll.length()}},{key:"getLeaf",value:function(e){return this.scroll.leaf(e)}},{key:"getLine",value:function(e){return this.scroll.line(e)}},{key:"getLines",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE;return"number"!==typeof e?this.scroll.lines(e.index,e.length):this.scroll.lines(e,t)}},{key:"getModule",value:function(e){return this.theme.modules[e]}},{key:"getSelection",value:function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.focus(),this.update(),this.selection.getRange()[0]}},{key:"getText",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-e,n=k(e,t),r=o(n,2);return e=r[0],t=r[1],this.editor.getText(e,t)}},{key:"hasFocus",value:function(){return this.selection.hasFocus()}},{key:"insertEmbed",value:function(t,n,r){var o=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.sources.API;return w.call(this,(function(){return o.editor.insertEmbed(t,n,r)}),i,t)}},{key:"insertText",value:function(e,t,n,r,i){var a,s=this,l=k(e,0,n,r,i),c=o(l,4);return e=c[0],a=c[2],i=c[3],w.call(this,(function(){return s.editor.insertText(e,t,a)}),i,e,t.length)}},{key:"isEnabled",value:function(){return!this.container.classList.contains("ql-disabled")}},{key:"off",value:function(){return this.emitter.off.apply(this.emitter,arguments)}},{key:"on",value:function(){return this.emitter.on.apply(this.emitter,arguments)}},{key:"once",value:function(){return this.emitter.once.apply(this.emitter,arguments)}},{key:"pasteHTML",value:function(e,t,n){this.clipboard.dangerouslyPasteHTML(e,t,n)}},{key:"removeFormat",value:function(e,t,n){var r=this,i=k(e,t,n),a=o(i,4);return e=a[0],t=a[1],n=a[3],w.call(this,(function(){return r.editor.removeFormat(e,t)}),n,e)}},{key:"scrollIntoView",value:function(){this.selection.scrollIntoView(this.scrollingContainer)}},{key:"setContents",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.default.sources.API;return w.call(this,(function(){e=new a.default(e);var n=t.getLength(),r=t.editor.deleteText(0,n),o=t.editor.applyDelta(e),i=o.ops[o.ops.length-1];return null!=i&&"string"===typeof i.insert&&"\n"===i.insert[i.insert.length-1]&&(t.editor.deleteText(t.getLength()-1,1),o.delete(1)),r.compose(o)}),n)}},{key:"setSelection",value:function(t,n,r){if(null==t)this.selection.setRange(null,n||e.sources.API);else{var i=k(t,n,r),a=o(i,4);t=a[0],n=a[1],r=a[3],this.selection.setRange(new f.Range(t,n),r),r!==l.default.sources.SILENT&&this.selection.scrollIntoView(this.scrollingContainer)}}},{key:"setText",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.default.sources.API,n=(new a.default).insert(e);return this.setContents(n,t)}},{key:"update",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l.default.sources.USER,t=this.scroll.update(e);return this.selection.update(e),t}},{key:"updateContents",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.default.sources.API;return w.call(this,(function(){return e=new a.default(e),t.editor.applyDelta(e,n)}),n,!0)}}]),e}();function _(e,t){if((t=(0,p.default)(!0,{container:e,modules:{clipboard:!0,keyboard:!0,history:!0}},t)).theme&&t.theme!==b.DEFAULTS.theme){if(t.theme=b.import("themes/"+t.theme),null==t.theme)throw new Error("Invalid theme "+t.theme+". Did you register it?")}else t.theme=v.default;var n=(0,p.default)(!0,{},t.theme.DEFAULTS);[n,t].forEach((function(e){e.modules=e.modules||{},Object.keys(e.modules).forEach((function(t){!0===e.modules[t]&&(e.modules[t]={})}))}));var r=Object.keys(n.modules).concat(Object.keys(t.modules)).reduce((function(e,t){var n=b.import("modules/"+t);return null==n?y.error("Cannot load "+t+" module. Are you sure you registered it?"):e[t]=n.DEFAULTS||{},e}),{});return null!=t.modules&&t.modules.toolbar&&t.modules.toolbar.constructor!==Object&&(t.modules.toolbar={container:t.modules.toolbar}),t=(0,p.default)(!0,{},b.DEFAULTS,{modules:r},n,t),["bounds","container","scrollingContainer"].forEach((function(e){"string"===typeof t[e]&&(t[e]=document.querySelector(t[e]))})),t.modules=Object.keys(t.modules).reduce((function(e,n){return t.modules[n]&&(e[n]=t.modules[n]),e}),{}),t}function w(e,t,n,r){if(this.options.strict&&!this.isEnabled()&&t===l.default.sources.USER)return new a.default;var o=null==n?null:this.getSelection(),i=this.editor.delta,s=e();if(null!=o&&(!0===n&&(n=o.index),null==r?o=x(o,s,t):0!==r&&(o=x(o,n,r,t)),this.setSelection(o,l.default.sources.SILENT)),s.length()>0){var c,u,f=[l.default.events.TEXT_CHANGE,s,i,t];(c=this.emitter).emit.apply(c,[l.default.events.EDITOR_CHANGE].concat(f)),t!==l.default.sources.SILENT&&(u=this.emitter).emit.apply(u,f)}return s}function k(e,t,n,o,i){var a={};return"number"===typeof e.index&&"number"===typeof e.length?"number"!==typeof t?(i=o,o=n,n=t,t=e.length,e=e.index):(t=e.length,e=e.index):"number"!==typeof t&&(i=o,o=n,n=t,t=0),"object"===("undefined"===typeof n?"undefined":r(n))?(a=n,i=o):"string"===typeof n&&(null!=o?a[n]=o:i=n),[e,t,a,i=i||l.default.sources.API]}function x(e,t,n,r){if(null==e)return null;var i=void 0,s=void 0;if(t instanceof a.default){var c=[e.index,e.index+e.length].map((function(e){return t.transformPosition(e,r!==l.default.sources.USER)})),u=o(c,2);i=u[0],s=u[1]}else{var d=[e.index,e.index+e.length].map((function(e){return e=0?e+n:Math.max(t,e+n)})),p=o(d,2);i=p[0],s=p[1]}return new f.Range(i,s-i)}b.DEFAULTS={bounds:null,formats:null,modules:{},placeholder:"",readOnly:!1,scrollingContainer:null,strict:!0,theme:"default"},b.events=l.default.events,b.sources=l.default.sources,b.version="1.3.7",b.imports={delta:a.default,parchment:u.default,"core/module":c.default,"core/theme":v.default},t.expandConfig=_,t.overload=k,t.default=b},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0){var n=this.parent.isolate(this.offset(),this.length());this.moveChildren(n),n.wrap(this)}}}],[{key:"compare",value:function(e,n){var r=t.order.indexOf(e),o=t.order.indexOf(n);return r>=0||o>=0?r-o:e===n?0:e1?t-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.quill=t,this.options=n};r.DEFAULTS={},t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=["error","warn","log","info"],o="warn";function i(e){if(r.indexOf(e)<=r.indexOf(o)){for(var t,n=arguments.length,i=Array(n>1?n-1:0),a=1;a=0;c--)if(f[c]!=d[c])return!1;for(c=f.length-1;c>=0;c--)if(u=f[c],!a(e[u],t[u],n))return!1;return typeof e===typeof t}(e,t,n))};function s(e){return null===e||void 0===e}function l(e){return!(!e||"object"!==typeof e||"number"!==typeof e.length)&&"function"===typeof e.copy&&"function"===typeof e.slice&&!(e.length>0&&"number"!==typeof e[0])}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),o=function(){function e(e,t,n){void 0===n&&(n={}),this.attrName=e,this.keyName=t;var o=r.Scope.TYPE&r.Scope.ATTRIBUTE;null!=n.scope?this.scope=n.scope&r.Scope.LEVEL|o:this.scope=r.Scope.ATTRIBUTE,null!=n.whitelist&&(this.whitelist=n.whitelist)}return e.keys=function(e){return[].map.call(e.attributes,(function(e){return e.name}))},e.prototype.add=function(e,t){return!!this.canAdd(e,t)&&(e.setAttribute(this.keyName,t),!0)},e.prototype.canAdd=function(e,t){return null!=r.query(e,r.Scope.BLOT&(this.scope|r.Scope.TYPE))&&(null==this.whitelist||("string"===typeof t?this.whitelist.indexOf(t.replace(/["']/g,""))>-1:this.whitelist.indexOf(t)>-1))},e.prototype.remove=function(e){e.removeAttribute(this.keyName)},e.prototype.value=function(e){var t=e.getAttribute(this.keyName);return this.canAdd(e,t)&&t?t:""},e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.Code=void 0;var r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){o=!0,i=l}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=function(){function e(e,t){for(var n=0;n=e+n)){var a=this.newlineIndex(e,!0)+1,l=i-a+1,c=this.isolate(a,l),u=c.next;c.format(r,o),u instanceof t&&u.formatAt(0,e-a+n-l,r,o)}}}},{key:"insertAt",value:function(e,t,n){if(null==n){var o=this.descendant(u.default,e),i=r(o,2),a=i[0],s=i[1];a.insertAt(s,t)}}},{key:"length",value:function(){var e=this.domNode.textContent.length;return this.domNode.textContent.endsWith("\n")?e:e+1}},{key:"newlineIndex",value:function(e){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1])return this.domNode.textContent.slice(0,e).lastIndexOf("\n");var t=this.domNode.textContent.slice(e).indexOf("\n");return t>-1?e+t:-1}},{key:"optimize",value:function(e){this.domNode.textContent.endsWith("\n")||this.appendChild(s.default.create("text","\n")),i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"optimize",this).call(this,e);var n=this.next;null!=n&&n.prev===this&&n.statics.blotName===this.statics.blotName&&this.statics.formats(this.domNode)===n.statics.formats(n.domNode)&&(n.optimize(e),n.moveChildren(this),n.remove())}},{key:"replace",value:function(e){i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"replace",this).call(this,e),[].slice.call(this.domNode.querySelectorAll("*")).forEach((function(e){var t=s.default.find(e);null==t?e.parentNode.removeChild(e):t instanceof s.default.Embed?t.remove():t.unwrap()}))}}],[{key:"create",value:function(e){var n=i(t.__proto__||Object.getPrototypeOf(t),"create",this).call(this,e);return n.setAttribute("spellcheck",!1),n}},{key:"formats",value:function(){return!0}}]),t}(l.default);m.blotName="code-block",m.tagName="PRE",m.TAB=" ",t.Code=v,t.default=m},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){o=!0,i=l}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},i=function(){function e(e,t){for(var n=0;n=i&&!p.endsWith("\n")&&(n=!0),t.scroll.insertAt(e,p);var h=t.scroll.line(e),v=o(h,2),g=v[0],y=v[1],b=(0,m.default)({},(0,f.bubbleFormats)(g));if(g instanceof d.default){var _=g.descendant(l.default.Leaf,y),w=o(_,1)[0];b=(0,m.default)(b,(0,f.bubbleFormats)(w))}u=s.default.attributes.diff(b,u)||{}}else if("object"===r(a.insert)){var k=Object.keys(a.insert)[0];if(null==k)return e;t.scroll.insertAt(e,k,a.insert[k])}i+=c}return Object.keys(u).forEach((function(n){t.scroll.formatAt(e,c,n,u[n])})),e+c}),0),e.reduce((function(e,n){return"number"===typeof n.delete?(t.scroll.deleteAt(e,n.delete),e):e+(n.retain||n.insert.length||1)}),0),this.scroll.batchEnd(),this.update(e)}},{key:"deleteText",value:function(e,t){return this.scroll.deleteAt(e,t),this.update((new a.default).retain(e).delete(t))}},{key:"formatLine",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.scroll.update(),Object.keys(r).forEach((function(o){if(null==n.scroll.whitelist||n.scroll.whitelist[o]){var i=n.scroll.lines(e,Math.max(t,1)),a=t;i.forEach((function(t){var i=t.length();if(t instanceof c.default){var s=e-t.offset(n.scroll),l=t.newlineIndex(s+a)-s+1;t.formatAt(s,l,o,r[o])}else t.format(o,r[o]);a-=i}))}})),this.scroll.optimize(),this.update((new a.default).retain(e).retain(t,(0,h.default)(r)))}},{key:"formatText",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Object.keys(r).forEach((function(o){n.scroll.formatAt(e,t,o,r[o])})),this.update((new a.default).retain(e).retain(t,(0,h.default)(r)))}},{key:"getContents",value:function(e,t){return this.delta.slice(e,e+t)}},{key:"getDelta",value:function(){return this.scroll.lines().reduce((function(e,t){return e.concat(t.delta())}),new a.default)}},{key:"getFormat",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=[],r=[];0===t?this.scroll.path(e).forEach((function(e){var t=o(e,1)[0];t instanceof d.default?n.push(t):t instanceof l.default.Leaf&&r.push(t)})):(n=this.scroll.lines(e,t),r=this.scroll.descendants(l.default.Leaf,e,t));var i=[n,r].map((function(e){if(0===e.length)return{};for(var t=(0,f.bubbleFormats)(e.shift());Object.keys(t).length>0;){var n=e.shift();if(null==n)return t;t=_((0,f.bubbleFormats)(n),t)}return t}));return m.default.apply(m.default,i)}},{key:"getText",value:function(e,t){return this.getContents(e,t).filter((function(e){return"string"===typeof e.insert})).map((function(e){return e.insert})).join("")}},{key:"insertEmbed",value:function(e,t,n){return this.scroll.insertAt(e,t,n),this.update((new a.default).retain(e).insert(function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},t,n)))}},{key:"insertText",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t=t.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),this.scroll.insertAt(e,t),Object.keys(r).forEach((function(o){n.scroll.formatAt(e,t.length,o,r[o])})),this.update((new a.default).retain(e).insert(t,(0,h.default)(r)))}},{key:"isBlank",value:function(){if(0==this.scroll.children.length)return!0;if(this.scroll.children.length>1)return!1;var e=this.scroll.children.head;return e.statics.blotName===d.default.blotName&&!(e.children.length>1)&&e.children.head instanceof p.default}},{key:"removeFormat",value:function(e,t){var n=this.getText(e,t),r=this.scroll.line(e+t),i=o(r,2),s=i[0],l=i[1],u=0,f=new a.default;null!=s&&(u=s instanceof c.default?s.newlineIndex(l)-l+1:s.length()-l,f=s.delta().slice(l,l+u-1).insert("\n"));var d=this.getContents(e,t+u).diff((new a.default).insert(n).concat(f)),p=(new a.default).retain(e).concat(d);return this.applyDelta(p)}},{key:"update",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=this.delta;if(1===t.length&&"characterData"===t[0].type&&t[0].target.data.match(y)&&l.default.find(t[0].target)){var o=l.default.find(t[0].target),i=(0,f.bubbleFormats)(o),s=o.offset(this.scroll),c=t[0].oldValue.replace(u.default.CONTENTS,""),d=(new a.default).insert(c),p=(new a.default).insert(o.value());e=(new a.default).retain(s).concat(d.diff(p,n)).reduce((function(e,t){return t.insert?e.insert(t.insert,i):e.push(t)}),new a.default),this.delta=r.compose(e)}else this.delta=this.getDelta(),e&&(0,v.default)(r.compose(e),this.delta)||(e=r.diff(this.delta,n));return e}}]),e}();function _(e,t){return Object.keys(t).reduce((function(n,r){return null==e[r]||(t[r]===e[r]?n[r]=t[r]:Array.isArray(t[r])?t[r].indexOf(e[r])<0&&(n[r]=t[r].concat([e[r]])):n[r]=[t[r],e[r]]),n}),{})}t.default=b},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.Range=void 0;var r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){o=!0,i=l}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:0;f(this,e),this.index=t,this.length=n},h=function(){function e(t,n){var r=this;f(this,e),this.emitter=n,this.scroll=t,this.composing=!1,this.mouseDown=!1,this.root=this.scroll.domNode,this.cursor=i.default.create("cursor",this),this.lastRange=this.savedRange=new p(0,0),this.handleComposition(),this.handleDragging(),this.emitter.listenDOM("selectionchange",document,(function(){r.mouseDown||setTimeout(r.update.bind(r,l.default.sources.USER),1)})),this.emitter.on(l.default.events.EDITOR_CHANGE,(function(e,t){e===l.default.events.TEXT_CHANGE&&t.length()>0&&r.update(l.default.sources.SILENT)})),this.emitter.on(l.default.events.SCROLL_BEFORE_UPDATE,(function(){if(r.hasFocus()){var e=r.getNativeRange();null!=e&&e.start.node!==r.cursor.textNode&&r.emitter.once(l.default.events.SCROLL_UPDATE,(function(){try{r.setNativeRange(e.start.node,e.start.offset,e.end.node,e.end.offset)}catch(t){}}))}})),this.emitter.on(l.default.events.SCROLL_OPTIMIZE,(function(e,t){if(t.range){var n=t.range,o=n.startNode,i=n.startOffset,a=n.endNode,s=n.endOffset;r.setNativeRange(o,i,a,s)}})),this.update(l.default.sources.SILENT)}return o(e,[{key:"handleComposition",value:function(){var e=this;this.root.addEventListener("compositionstart",(function(){e.composing=!0})),this.root.addEventListener("compositionend",(function(){if(e.composing=!1,e.cursor.parent){var t=e.cursor.restore();if(!t)return;setTimeout((function(){e.setNativeRange(t.startNode,t.startOffset,t.endNode,t.endOffset)}),1)}}))}},{key:"handleDragging",value:function(){var e=this;this.emitter.listenDOM("mousedown",document.body,(function(){e.mouseDown=!0})),this.emitter.listenDOM("mouseup",document.body,(function(){e.mouseDown=!1,e.update(l.default.sources.USER)}))}},{key:"focus",value:function(){this.hasFocus()||(this.root.focus(),this.setRange(this.savedRange))}},{key:"format",value:function(e,t){if(null==this.scroll.whitelist||this.scroll.whitelist[e]){this.scroll.update();var n=this.getNativeRange();if(null!=n&&n.native.collapsed&&!i.default.query(e,i.default.Scope.BLOCK)){if(n.start.node!==this.cursor.textNode){var r=i.default.find(n.start.node,!1);if(null==r)return;if(r instanceof i.default.Leaf){var o=r.split(n.start.offset);r.parent.insertBefore(this.cursor,o)}else r.insertBefore(this.cursor,n.start.node);this.cursor.attach()}this.cursor.format(e,t),this.scroll.optimize(),this.setNativeRange(this.cursor.textNode,this.cursor.textNode.data.length),this.update()}}}},{key:"getBounds",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.scroll.length();e=Math.min(e,n-1),t=Math.min(e+t,n-1)-e;var o=void 0,i=this.scroll.leaf(e),a=r(i,2),s=a[0],l=a[1];if(null==s)return null;var c=s.position(l,!0),u=r(c,2);o=u[0],l=u[1];var f=document.createRange();if(t>0){f.setStart(o,l);var d=this.scroll.leaf(e+t),p=r(d,2);if(s=p[0],l=p[1],null==s)return null;var h=s.position(l,!0),v=r(h,2);return o=v[0],l=v[1],f.setEnd(o,l),f.getBoundingClientRect()}var m="left",g=void 0;return o instanceof Text?(l0&&(m="right")),{bottom:g.top+g.height,height:g.height,left:g[m],right:g[m],top:g.top,width:0}}},{key:"getNativeRange",value:function(){var e=document.getSelection();if(null==e||e.rangeCount<=0)return null;var t=e.getRangeAt(0);if(null==t)return null;var n=this.normalizeNative(t);return d.info("getNativeRange",n),n}},{key:"getRange",value:function(){var e=this.getNativeRange();return null==e?[null,null]:[this.normalizedToRange(e),e]}},{key:"hasFocus",value:function(){return document.activeElement===this.root}},{key:"normalizedToRange",value:function(e){var t=this,n=[[e.start.node,e.start.offset]];e.native.collapsed||n.push([e.end.node,e.end.offset]);var o=n.map((function(e){var n=r(e,2),o=n[0],a=n[1],s=i.default.find(o,!0),l=s.offset(t.scroll);return 0===a?l:s instanceof i.default.Container?l+s.length():l+s.index(o,a)})),a=Math.min(Math.max.apply(Math,u(o)),this.scroll.length()-1),s=Math.min.apply(Math,[a].concat(u(o)));return new p(s,a-s)}},{key:"normalizeNative",value:function(e){if(!v(this.root,e.startContainer)||!e.collapsed&&!v(this.root,e.endContainer))return null;var t={start:{node:e.startContainer,offset:e.startOffset},end:{node:e.endContainer,offset:e.endOffset},native:e};return[t.start,t.end].forEach((function(e){for(var t=e.node,n=e.offset;!(t instanceof Text)&&t.childNodes.length>0;)if(t.childNodes.length>n)t=t.childNodes[n],n=0;else{if(t.childNodes.length!==n)break;n=(t=t.lastChild)instanceof Text?t.data.length:t.childNodes.length+1}e.node=t,e.offset=n})),t}},{key:"rangeToNative",value:function(e){var t=this,n=e.collapsed?[e.index]:[e.index,e.index+e.length],o=[],i=this.scroll.length();return n.forEach((function(e,n){e=Math.min(i-1,e);var a,s=t.scroll.leaf(e),l=r(s,2),c=l[0],u=l[1],f=c.position(u,0!==n),d=r(f,2);a=d[0],u=d[1],o.push(a,u)})),o.length<2&&(o=o.concat(o)),o}},{key:"scrollIntoView",value:function(e){var t=this.lastRange;if(null!=t){var n=this.getBounds(t.index,t.length);if(null!=n){var o=this.scroll.length()-1,i=this.scroll.line(Math.min(t.index,o)),a=r(i,1)[0],s=a;if(t.length>0){var l=this.scroll.line(Math.min(t.index+t.length,o));s=r(l,1)[0]}if(null!=a&&null!=s){var c=e.getBoundingClientRect();n.topc.bottom&&(e.scrollTop+=n.bottom-c.bottom)}}}}},{key:"setNativeRange",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(d.info("setNativeRange",e,t,n,r),null==e||null!=this.root.parentNode&&null!=e.parentNode&&null!=n.parentNode){var i=document.getSelection();if(null!=i)if(null!=e){this.hasFocus()||this.root.focus();var a=(this.getNativeRange()||{}).native;if(null==a||o||e!==a.startContainer||t!==a.startOffset||n!==a.endContainer||r!==a.endOffset){"BR"==e.tagName&&(t=[].indexOf.call(e.parentNode.childNodes,e),e=e.parentNode),"BR"==n.tagName&&(r=[].indexOf.call(n.parentNode.childNodes,n),n=n.parentNode);var s=document.createRange();s.setStart(e,t),s.setEnd(n,r),i.removeAllRanges(),i.addRange(s)}}else i.removeAllRanges(),this.root.blur(),document.body.focus()}}},{key:"setRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l.default.sources.API;if("string"===typeof t&&(n=t,t=!1),d.info("setRange",e),null!=e){var r=this.rangeToNative(e);this.setNativeRange.apply(this,u(r).concat([t]))}else this.setNativeRange(null);this.update(n)}},{key:"update",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l.default.sources.USER,t=this.lastRange,n=this.getRange(),o=r(n,2),i=o[0],c=o[1];if(this.lastRange=i,null!=this.lastRange&&(this.savedRange=this.lastRange),!(0,s.default)(t,this.lastRange)){var u;!this.composing&&null!=c&&c.native.collapsed&&c.start.node!==this.cursor.textNode&&this.cursor.restore();var f,d=[l.default.events.SELECTION_CHANGE,(0,a.default)(this.lastRange),(0,a.default)(t),e];(u=this.emitter).emit.apply(u,[l.default.events.EDITOR_CHANGE].concat(d)),e!==l.default.sources.SILENT&&(f=this.emitter).emit.apply(f,d)}}}]),e}();function v(e,t){try{t.parentNode}catch(n){return!1}return t instanceof Text&&(t=t.parentNode),e.contains(t)}t.Range=p,t.default=h},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function e(e,t){for(var n=0;n0&&(n+=1),[this.parent.domNode,n]},t.prototype.value=function(){var e;return(e={})[this.statics.blotName]=this.statics.value(this.domNode)||!0,e},t.scope=i.Scope.INLINE_BLOT,t}(o.default);t.default=a},function(e,t,n){var r=n(11),o=n(3),i={attributes:{compose:function(e,t,n){"object"!==typeof e&&(e={}),"object"!==typeof t&&(t={});var r=o(!0,{},t);for(var i in n||(r=Object.keys(r).reduce((function(e,t){return null!=r[t]&&(e[t]=r[t]),e}),{})),e)void 0!==e[i]&&void 0===t[i]&&(r[i]=e[i]);return Object.keys(r).length>0?r:void 0},diff:function(e,t){"object"!==typeof e&&(e={}),"object"!==typeof t&&(t={});var n=Object.keys(e).concat(Object.keys(t)).reduce((function(n,o){return r(e[o],t[o])||(n[o]=void 0===t[o]?null:t[o]),n}),{});return Object.keys(n).length>0?n:void 0},transform:function(e,t,n){if("object"!==typeof e)return t;if("object"===typeof t){if(!n)return t;var r=Object.keys(t).reduce((function(n,r){return void 0===e[r]&&(n[r]=t[r]),n}),{});return Object.keys(r).length>0?r:void 0}}},iterator:function(e){return new a(e)},length:function(e){return"number"===typeof e.delete?e.delete:"number"===typeof e.retain?e.retain:"string"===typeof e.insert?e.insert.length:1}};function a(e){this.ops=e,this.index=0,this.offset=0}a.prototype.hasNext=function(){return this.peekLength()<1/0},a.prototype.next=function(e){e||(e=1/0);var t=this.ops[this.index];if(t){var n=this.offset,r=i.length(t);if(e>=r-n?(e=r-n,this.index+=1,this.offset=0):this.offset+=e,"number"===typeof t.delete)return{delete:e};var o={};return t.attributes&&(o.attributes=t.attributes),"number"===typeof t.retain?o.retain=e:"string"===typeof t.insert?o.insert=t.insert.substr(n,e):o.insert=t.insert,o}return{retain:1/0}},a.prototype.peek=function(){return this.ops[this.index]},a.prototype.peekLength=function(){return this.ops[this.index]?i.length(this.ops[this.index])-this.offset:1/0},a.prototype.peekType=function(){return this.ops[this.index]?"number"===typeof this.ops[this.index].delete?"delete":"number"===typeof this.ops[this.index].retain?"retain":"insert":"retain"},a.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var e=this.offset,t=this.index,n=this.next(),r=this.ops.slice(this.index);return this.offset=e,this.index=t,[n].concat(r)}return[]},e.exports=i},function(e,t){var n=function(){"use strict";function e(e,t){return null!=t&&e instanceof t}var t,n,r;try{t=Map}catch(s){t=function(){}}try{n=Set}catch(s){n=function(){}}try{r=Promise}catch(s){r=function(){}}function o(i,s,l,c,u){"object"===typeof s&&(l=s.depth,c=s.prototype,u=s.includeNonEnumerable,s=s.circular);var f=[],d=[],p="undefined"!=typeof Buffer;return"undefined"==typeof s&&(s=!0),"undefined"==typeof l&&(l=1/0),function i(l,h){if(null===l)return null;if(0===h)return l;var v,m;if("object"!=typeof l)return l;if(e(l,t))v=new t;else if(e(l,n))v=new n;else if(e(l,r))v=new r((function(e,t){l.then((function(t){e(i(t,h-1))}),(function(e){t(i(e,h-1))}))}));else if(o.__isArray(l))v=[];else if(o.__isRegExp(l))v=new RegExp(l.source,a(l)),l.lastIndex&&(v.lastIndex=l.lastIndex);else if(o.__isDate(l))v=new Date(l.getTime());else{if(p&&Buffer.isBuffer(l))return v=Buffer.allocUnsafe?Buffer.allocUnsafe(l.length):new Buffer(l.length),l.copy(v),v;e(l,Error)?v=Object.create(l):"undefined"==typeof c?(m=Object.getPrototypeOf(l),v=Object.create(m)):(v=Object.create(c),m=c)}if(s){var g=f.indexOf(l);if(-1!=g)return d[g];f.push(l),d.push(v)}for(var y in e(l,t)&&l.forEach((function(e,t){var n=i(t,h-1),r=i(e,h-1);v.set(n,r)})),e(l,n)&&l.forEach((function(e){var t=i(e,h-1);v.add(t)})),l){var b;m&&(b=Object.getOwnPropertyDescriptor(m,y)),b&&null==b.set||(v[y]=i(l[y],h-1))}if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(l);for(y=0;y<_.length;y++){var w=_[y];(!(x=Object.getOwnPropertyDescriptor(l,w))||x.enumerable||u)&&(v[w]=i(l[w],h-1),x.enumerable||Object.defineProperty(v,w,{enumerable:!1}))}}if(u){var k=Object.getOwnPropertyNames(l);for(y=0;y0){if(s instanceof l.BlockEmbed||p instanceof l.BlockEmbed)return void this.optimize();if(s instanceof f.default){var h=s.newlineIndex(s.length(),!0);if(h>-1&&(s=s.split(h+1))===p)return void this.optimize()}else if(p instanceof f.default){var v=p.newlineIndex(0);v>-1&&p.split(v+1)}var m=p.children.head instanceof u.default?null:p.children.head;s.moveChildren(p,m),s.remove()}this.optimize()}},{key:"enable",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.domNode.setAttribute("contenteditable",e)}},{key:"formatAt",value:function(e,n,r,o){(null==this.whitelist||this.whitelist[r])&&(i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"formatAt",this).call(this,e,n,r,o),this.optimize())}},{key:"insertAt",value:function(e,n,r){if(null==r||null==this.whitelist||this.whitelist[n]){if(e>=this.length())if(null==r||null==a.default.query(n,a.default.Scope.BLOCK)){var o=a.default.create(this.statics.defaultChild);this.appendChild(o),null==r&&n.endsWith("\n")&&(n=n.slice(0,-1)),o.insertAt(0,n,r)}else{var s=a.default.create(n,r);this.appendChild(s)}else i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"insertAt",this).call(this,e,n,r);this.optimize()}}},{key:"insertBefore",value:function(e,n){if(e.statics.scope===a.default.Scope.INLINE_BLOT){var r=a.default.create(this.statics.defaultChild);r.appendChild(e),e=r}i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"insertBefore",this).call(this,e,n)}},{key:"leaf",value:function(e){return this.path(e).pop()||[null,-1]}},{key:"line",value:function(e){return e===this.length()?this.line(e-1):this.descendant(h,e)}},{key:"lines",value:function(){return function e(t,n,r){var o=[],i=r;return t.children.forEachAt(n,r,(function(t,n,r){h(t)?o.push(t):t instanceof a.default.Container&&(o=o.concat(e(t,n,i))),i-=r})),o}(this,arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE)}},{key:"optimize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!0!==this.batch&&(i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"optimize",this).call(this,e,n),e.length>0&&this.emitter.emit(s.default.events.SCROLL_OPTIMIZE,e,n))}},{key:"path",value:function(e){return i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"path",this).call(this,e).slice(1)}},{key:"update",value:function(e){if(!0!==this.batch){var n=s.default.sources.USER;"string"===typeof e&&(n=e),Array.isArray(e)||(e=this.observer.takeRecords()),e.length>0&&this.emitter.emit(s.default.events.SCROLL_BEFORE_UPDATE,n,e),i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"update",this).call(this,e.concat([])),e.length>0&&this.emitter.emit(s.default.events.SCROLL_UPDATE,n,e)}}}]),t}(a.default.Scroll);v.blotName="scroll",v.className="ql-editor",v.tagName="DIV",v.defaultChild="block",v.allowedChildren=[c.default,l.BlockEmbed,d.default],t.default=v},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SHORTKEY=t.default=void 0;var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){o=!0,i=l}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},i=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=O(e);if(null==r||null==r.key)return g.warn("Attempted to add invalid keyboard binding",r);"function"===typeof t&&(t={handler:t}),"function"===typeof n&&(n={handler:n}),r=(0,l.default)(r,t,n),this.bindings[r.key]=this.bindings[r.key]||[],this.bindings[r.key].push(r)}},{key:"listen",value:function(){var e=this;this.quill.root.addEventListener("keydown",(function(n){if(!n.defaultPrevented){var i=n.which||n.keyCode,a=(e.bindings[i]||[]).filter((function(e){return t.match(n,e)}));if(0!==a.length){var l=e.quill.getSelection();if(null!=l&&e.quill.hasFocus()){var c=e.quill.getLine(l.index),u=o(c,2),d=u[0],p=u[1],h=e.quill.getLeaf(l.index),v=o(h,2),m=v[0],g=v[1],y=0===l.length?[m,g]:e.quill.getLeaf(l.index+l.length),b=o(y,2),_=b[0],w=b[1],k=m instanceof f.default.Text?m.value().slice(0,g):"",x=_ instanceof f.default.Text?_.value().slice(w):"",S={collapsed:0===l.length,empty:0===l.length&&d.length()<=1,format:e.quill.getFormat(l),offset:p,prefix:k,suffix:x};a.some((function(t){if(null!=t.collapsed&&t.collapsed!==S.collapsed)return!1;if(null!=t.empty&&t.empty!==S.empty)return!1;if(null!=t.offset&&t.offset!==S.offset)return!1;if(Array.isArray(t.format)){if(t.format.every((function(e){return null==S.format[e]})))return!1}else if("object"===r(t.format)&&!Object.keys(t.format).every((function(e){return!0===t.format[e]?null!=S.format[e]:!1===t.format[e]?null==S.format[e]:(0,s.default)(t.format[e],S.format[e])})))return!1;return!(null!=t.prefix&&!t.prefix.test(S.prefix))&&!(null!=t.suffix&&!t.suffix.test(S.suffix))&&!0!==t.handler.call(e,l,S)}))&&n.preventDefault()}}}}))}}]),t}(h.default);function _(e,t){var n,r=e===b.keys.LEFT?"prefix":"suffix";return m(n={key:e,shiftKey:t,altKey:null},r,/^$/),m(n,"handler",(function(n){var r=n.index;e===b.keys.RIGHT&&(r+=n.length+1);var i=this.quill.getLeaf(r);return!(o(i,1)[0]instanceof f.default.Embed)||(e===b.keys.LEFT?t?this.quill.setSelection(n.index-1,n.length+1,d.default.sources.USER):this.quill.setSelection(n.index-1,d.default.sources.USER):t?this.quill.setSelection(n.index,n.length+1,d.default.sources.USER):this.quill.setSelection(n.index+n.length+1,d.default.sources.USER),!1)})),n}function w(e,t){if(!(0===e.index||this.quill.getLength()<=1)){var n=this.quill.getLine(e.index),r=o(n,1)[0],i={};if(0===t.offset){var a=this.quill.getLine(e.index-1),s=o(a,1)[0];if(null!=s&&s.length()>1){var l=r.formats(),c=this.quill.getFormat(e.index-1,1);i=u.default.attributes.diff(l,c)||{}}}var f=/[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(t.prefix)?2:1;this.quill.deleteText(e.index-f,f,d.default.sources.USER),Object.keys(i).length>0&&this.quill.formatLine(e.index-f,f,i,d.default.sources.USER),this.quill.focus()}}function k(e,t){var n=/^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(t.suffix)?2:1;if(!(e.index>=this.quill.getLength()-n)){var r={},i=0,a=this.quill.getLine(e.index),s=o(a,1)[0];if(t.offset>=s.length()-1){var l=this.quill.getLine(e.index+1),c=o(l,1)[0];if(c){var f=s.formats(),p=this.quill.getFormat(e.index,1);r=u.default.attributes.diff(f,p)||{},i=c.length()}}this.quill.deleteText(e.index,n,d.default.sources.USER),Object.keys(r).length>0&&this.quill.formatLine(e.index+i-1,n,r,d.default.sources.USER)}}function x(e){var t=this.quill.getLines(e),n={};if(t.length>1){var r=t[0].formats(),o=t[t.length-1].formats();n=u.default.attributes.diff(o,r)||{}}this.quill.deleteText(e,d.default.sources.USER),Object.keys(n).length>0&&this.quill.formatLine(e.index,1,n,d.default.sources.USER),this.quill.setSelection(e.index,d.default.sources.SILENT),this.quill.focus()}function S(e,t){var n=this;e.length>0&&this.quill.scroll.deleteAt(e.index,e.length);var r=Object.keys(t.format).reduce((function(e,n){return f.default.query(n,f.default.Scope.BLOCK)&&!Array.isArray(t.format[n])&&(e[n]=t.format[n]),e}),{});this.quill.insertText(e.index,"\n",r,d.default.sources.USER),this.quill.setSelection(e.index+1,d.default.sources.SILENT),this.quill.focus(),Object.keys(t.format).forEach((function(e){null==r[e]&&(Array.isArray(t.format[e])||"link"!==e&&n.quill.format(e,t.format[e],d.default.sources.USER))}))}function E(e){return{key:b.keys.TAB,shiftKey:!e,format:{"code-block":!0},handler:function(t){var n=f.default.query("code-block"),r=t.index,i=t.length,a=this.quill.scroll.descendant(n,r),s=o(a,2),l=s[0],c=s[1];if(null!=l){var u=this.quill.getIndex(l),p=l.newlineIndex(c,!0)+1,h=l.newlineIndex(u+c+i),v=l.domNode.textContent.slice(p,h).split("\n");c=0,v.forEach((function(t,o){e?(l.insertAt(p+c,n.TAB),c+=n.TAB.length,0===o?r+=n.TAB.length:i+=n.TAB.length):t.startsWith(n.TAB)&&(l.deleteAt(p+c,n.TAB.length),c-=n.TAB.length,0===o?r-=n.TAB.length:i-=n.TAB.length),c+=t.length+1})),this.quill.update(d.default.sources.USER),this.quill.setSelection(r,i,d.default.sources.SILENT)}}}}function C(e){return{key:e[0].toUpperCase(),shortKey:!0,handler:function(t,n){this.quill.format(e,!n.format[e],d.default.sources.USER)}}}function O(e){if("string"===typeof e||"number"===typeof e)return O({key:e});if("object"===("undefined"===typeof e?"undefined":r(e))&&(e=(0,a.default)(e,!1)),"string"===typeof e.key)if(null!=b.keys[e.key.toUpperCase()])e.key=b.keys[e.key.toUpperCase()];else{if(1!==e.key.length)return null;e.key=e.key.toUpperCase().charCodeAt(0)}return e.shortKey&&(e[y]=e.shortKey,delete e.shortKey),e}b.keys={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46},b.DEFAULTS={bindings:{bold:C("bold"),italic:C("italic"),underline:C("underline"),indent:{key:b.keys.TAB,format:["blockquote","indent","list"],handler:function(e,t){if(t.collapsed&&0!==t.offset)return!0;this.quill.format("indent","+1",d.default.sources.USER)}},outdent:{key:b.keys.TAB,shiftKey:!0,format:["blockquote","indent","list"],handler:function(e,t){if(t.collapsed&&0!==t.offset)return!0;this.quill.format("indent","-1",d.default.sources.USER)}},"outdent backspace":{key:b.keys.BACKSPACE,collapsed:!0,shiftKey:null,metaKey:null,ctrlKey:null,altKey:null,format:["indent","list"],offset:0,handler:function(e,t){null!=t.format.indent?this.quill.format("indent","-1",d.default.sources.USER):null!=t.format.list&&this.quill.format("list",!1,d.default.sources.USER)}},"indent code-block":E(!0),"outdent code-block":E(!1),"remove tab":{key:b.keys.TAB,shiftKey:!0,collapsed:!0,prefix:/\t$/,handler:function(e){this.quill.deleteText(e.index-1,1,d.default.sources.USER)}},tab:{key:b.keys.TAB,handler:function(e){this.quill.history.cutoff();var t=(new c.default).retain(e.index).delete(e.length).insert("\t");this.quill.updateContents(t,d.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(e.index+1,d.default.sources.SILENT)}},"list empty enter":{key:b.keys.ENTER,collapsed:!0,format:["list"],empty:!0,handler:function(e,t){this.quill.format("list",!1,d.default.sources.USER),t.format.indent&&this.quill.format("indent",!1,d.default.sources.USER)}},"checklist enter":{key:b.keys.ENTER,collapsed:!0,format:{list:"checked"},handler:function(e){var t=this.quill.getLine(e.index),n=o(t,2),r=n[0],i=n[1],a=(0,l.default)({},r.formats(),{list:"checked"}),s=(new c.default).retain(e.index).insert("\n",a).retain(r.length()-i-1).retain(1,{list:"unchecked"});this.quill.updateContents(s,d.default.sources.USER),this.quill.setSelection(e.index+1,d.default.sources.SILENT),this.quill.scrollIntoView()}},"header enter":{key:b.keys.ENTER,collapsed:!0,format:["header"],suffix:/^$/,handler:function(e,t){var n=this.quill.getLine(e.index),r=o(n,2),i=r[0],a=r[1],s=(new c.default).retain(e.index).insert("\n",t.format).retain(i.length()-a-1).retain(1,{header:null});this.quill.updateContents(s,d.default.sources.USER),this.quill.setSelection(e.index+1,d.default.sources.SILENT),this.quill.scrollIntoView()}},"list autofill":{key:" ",collapsed:!0,format:{list:!1},prefix:/^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/,handler:function(e,t){var n=t.prefix.length,r=this.quill.getLine(e.index),i=o(r,2),a=i[0],s=i[1];if(s>n)return!0;var l=void 0;switch(t.prefix.trim()){case"[]":case"[ ]":l="unchecked";break;case"[x]":l="checked";break;case"-":case"*":l="bullet";break;default:l="ordered"}this.quill.insertText(e.index," ",d.default.sources.USER),this.quill.history.cutoff();var u=(new c.default).retain(e.index-s).delete(n+1).retain(a.length()-2-s).retain(1,{list:l});this.quill.updateContents(u,d.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(e.index-n,d.default.sources.SILENT)}},"code exit":{key:b.keys.ENTER,collapsed:!0,format:["code-block"],prefix:/\n\n$/,suffix:/^\s+$/,handler:function(e){var t=this.quill.getLine(e.index),n=o(t,2),r=n[0],i=n[1],a=(new c.default).retain(e.index+r.length()-i-2).retain(1,{"code-block":null}).delete(1);this.quill.updateContents(a,d.default.sources.USER)}},"embed left":_(b.keys.LEFT,!1),"embed left shift":_(b.keys.LEFT,!0),"embed right":_(b.keys.RIGHT,!1),"embed right shift":_(b.keys.RIGHT,!0)}},t.default=b,t.SHORTKEY=y},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){o=!0,i=l}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=function e(t,n,r){null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,n);if(void 0===o){var i=Object.getPrototypeOf(t);return null===i?void 0:e(i,n,r)}if("value"in o)return o.value;var a=o.get;return void 0!==a?a.call(r):void 0},i=function(){function e(e,t){for(var n=0;n-1}s.blotName="link",s.tagName="A",s.SANITIZED_URL="about:blank",s.PROTOCOL_WHITELIST=["http","https","mailto","tel"],t.default=s,t.sanitize=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]&&arguments[1],n=this.container.querySelector(".ql-selected");if(e!==n&&(null!=n&&n.classList.remove("ql-selected"),null!=e&&(e.classList.add("ql-selected"),this.select.selectedIndex=[].indexOf.call(e.parentNode.children,e),e.hasAttribute("data-value")?this.label.setAttribute("data-value",e.getAttribute("data-value")):this.label.removeAttribute("data-value"),e.hasAttribute("data-label")?this.label.setAttribute("data-label",e.getAttribute("data-label")):this.label.removeAttribute("data-label"),t))){if("function"===typeof Event)this.select.dispatchEvent(new Event("change"));else if("object"===("undefined"===typeof Event?"undefined":r(Event))){var o=document.createEvent("Event");o.initEvent("change",!0,!0),this.select.dispatchEvent(o)}this.close()}}},{key:"update",value:function(){var e=void 0;if(this.select.selectedIndex>-1){var t=this.container.querySelector(".ql-picker-options").children[this.select.selectedIndex];e=this.select.options[this.select.selectedIndex],this.selectItem(t)}else this.selectItem(null);var n=null!=e&&e!==this.select.querySelector("option[selected]");this.label.classList.toggle("ql-active",n)}}]),e}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=g(n(0)),o=g(n(5)),i=n(4),a=g(i),s=g(n(16)),l=g(n(25)),c=g(n(24)),u=g(n(35)),f=g(n(6)),d=g(n(22)),p=g(n(7)),h=g(n(55)),v=g(n(42)),m=g(n(23));function g(e){return e&&e.__esModule?e:{default:e}}o.default.register({"blots/block":a.default,"blots/block/embed":i.BlockEmbed,"blots/break":s.default,"blots/container":l.default,"blots/cursor":c.default,"blots/embed":u.default,"blots/inline":f.default,"blots/scroll":d.default,"blots/text":p.default,"modules/clipboard":h.default,"modules/history":v.default,"modules/keyboard":m.default}),r.default.register(a.default,s.default,c.default,f.default,d.default,p.default),t.default=o.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),o=function(){function e(e){this.domNode=e,this.domNode[r.DATA_KEY]={blot:this}}return Object.defineProperty(e.prototype,"statics",{get:function(){return this.constructor},enumerable:!0,configurable:!0}),e.create=function(e){if(null==this.tagName)throw new r.ParchmentError("Blot definition missing tagName");var t;return Array.isArray(this.tagName)?("string"===typeof e&&(e=e.toUpperCase(),parseInt(e).toString()===e&&(e=parseInt(e))),t="number"===typeof e?document.createElement(this.tagName[e-1]):this.tagName.indexOf(e)>-1?document.createElement(e):document.createElement(this.tagName[0])):t=document.createElement(this.tagName),this.className&&t.classList.add(this.className),t},e.prototype.attach=function(){null!=this.parent&&(this.scroll=this.parent.scroll)},e.prototype.clone=function(){var e=this.domNode.cloneNode(!1);return r.create(e)},e.prototype.detach=function(){null!=this.parent&&this.parent.removeChild(this),delete this.domNode[r.DATA_KEY]},e.prototype.deleteAt=function(e,t){this.isolate(e,t).remove()},e.prototype.formatAt=function(e,t,n,o){var i=this.isolate(e,t);if(null!=r.query(n,r.Scope.BLOT)&&o)i.wrap(n,o);else if(null!=r.query(n,r.Scope.ATTRIBUTE)){var a=r.create(this.statics.scope);i.wrap(a),a.format(n,o)}},e.prototype.insertAt=function(e,t,n){var o=null==n?r.create("text",t):r.create(t,n),i=this.split(e);this.parent.insertBefore(o,i)},e.prototype.insertInto=function(e,t){void 0===t&&(t=null),null!=this.parent&&this.parent.children.remove(this);var n=null;e.children.insertBefore(this,t),null!=t&&(n=t.domNode),this.domNode.parentNode==e.domNode&&this.domNode.nextSibling==n||e.domNode.insertBefore(this.domNode,n),this.parent=e,this.attach()},e.prototype.isolate=function(e,t){var n=this.split(e);return n.split(t),n},e.prototype.length=function(){return 1},e.prototype.offset=function(e){return void 0===e&&(e=this.parent),null==this.parent||this==e?0:this.parent.children.offset(this)+this.parent.offset(e)},e.prototype.optimize=function(e){null!=this.domNode[r.DATA_KEY]&&delete this.domNode[r.DATA_KEY].mutations},e.prototype.remove=function(){null!=this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),this.detach()},e.prototype.replace=function(e){null!=e.parent&&(e.parent.insertBefore(this,e.next),e.remove())},e.prototype.replaceWith=function(e,t){var n="string"===typeof e?r.create(e,t):e;return n.replace(this),n},e.prototype.split=function(e,t){return 0===e?this:this.next},e.prototype.update=function(e,t){},e.prototype.wrap=function(e,t){var n="string"===typeof e?r.create(e,t):e;return null!=this.parent&&this.parent.insertBefore(n,this.next),n.appendChild(this),n},e.blotName="abstract",e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(12),o=n(32),i=n(33),a=n(1),s=function(){function e(e){this.attributes={},this.domNode=e,this.build()}return e.prototype.attribute=function(e,t){t?e.add(this.domNode,t)&&(null!=e.value(this.domNode)?this.attributes[e.attrName]=e:delete this.attributes[e.attrName]):(e.remove(this.domNode),delete this.attributes[e.attrName])},e.prototype.build=function(){var e=this;this.attributes={};var t=r.default.keys(this.domNode),n=o.default.keys(this.domNode),s=i.default.keys(this.domNode);t.concat(n).concat(s).forEach((function(t){var n=a.query(t,a.Scope.ATTRIBUTE);n instanceof r.default&&(e.attributes[n.attrName]=n)}))},e.prototype.copy=function(e){var t=this;Object.keys(this.attributes).forEach((function(n){var r=t.attributes[n].value(t.domNode);e.format(n,r)}))},e.prototype.move=function(e){var t=this;this.copy(e),Object.keys(this.attributes).forEach((function(e){t.attributes[e].remove(t.domNode)})),this.attributes={}},e.prototype.values=function(){var e=this;return Object.keys(this.attributes).reduce((function(t,n){return t[n]=e.attributes[n].value(e.domNode),t}),{})},e}();t.default=s},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function o(e,t){return(e.getAttribute("class")||"").split(/\s+/).filter((function(e){return 0===e.indexOf(t+"-")}))}Object.defineProperty(t,"__esModule",{value:!0});var i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.keys=function(e){return(e.getAttribute("class")||"").split(/\s+/).map((function(e){return e.split("-").slice(0,-1).join("-")}))},t.prototype.add=function(e,t){return!!this.canAdd(e,t)&&(this.remove(e),e.classList.add(this.keyName+"-"+t),!0)},t.prototype.remove=function(e){o(e,this.keyName).forEach((function(t){e.classList.remove(t)})),0===e.classList.length&&e.removeAttribute("class")},t.prototype.value=function(e){var t=(o(e,this.keyName)[0]||"").slice(this.keyName.length+1);return this.canAdd(e,t)?t:""},t}(n(12).default);t.default=i},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function o(e){var t=e.split("-"),n=t.slice(1).map((function(e){return e[0].toUpperCase()+e.slice(1)})).join("");return t[0]+n}Object.defineProperty(t,"__esModule",{value:!0});var i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.keys=function(e){return(e.getAttribute("style")||"").split(";").map((function(e){return e.split(":")[0].trim()}))},t.prototype.add=function(e,t){return!!this.canAdd(e,t)&&(e.style[o(this.keyName)]=t,!0)},t.prototype.remove=function(e){e.style[o(this.keyName)]="",e.getAttribute("style")||e.removeAttribute("style")},t.prototype.value=function(e){var t=e.style[o(this.keyName)];return this.canAdd(e,t)?t:""},t}(n(12).default);t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;nr&&this.stack.undo.length>0){var o=this.stack.undo.pop();n=n.compose(o.undo),e=o.redo.compose(e)}else this.lastRecorded=r;this.stack.undo.push({redo:e,undo:n}),this.stack.undo.length>this.options.maxStack&&this.stack.undo.shift()}}},{key:"redo",value:function(){this.change("redo","undo")}},{key:"transform",value:function(e){this.stack.undo.forEach((function(t){t.undo=e.transform(t.undo,!0),t.redo=e.transform(t.redo,!0)})),this.stack.redo.forEach((function(t){t.undo=e.transform(t.undo,!0),t.redo=e.transform(t.redo,!0)}))}},{key:"undo",value:function(){this.change("undo","redo")}}]),t}(a(n(9)).default);function l(e){var t=e.reduce((function(e,t){return e+=t.delete||0}),0),n=e.length()-t;return function(e){var t=e.ops[e.ops.length-1];return null!=t&&(null!=t.insert?"string"===typeof t.insert&&t.insert.endsWith("\n"):null!=t.attributes&&Object.keys(t.attributes).some((function(e){return null!=o.default.query(e,o.default.Scope.BLOCK)})))}(e)&&(n-=1),n}s.DEFAULTS={delay:1e3,maxStack:100,userOnly:!1},t.default=s,t.getLastChangeIndex=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.BaseTooltip=void 0;var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"link",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.root.classList.remove("ql-hidden"),this.root.classList.add("ql-editing"),null!=t?this.textbox.value=t:e!==this.root.getAttribute("data-mode")&&(this.textbox.value=""),this.position(this.quill.getBounds(this.quill.selection.savedRange)),this.textbox.select(),this.textbox.setAttribute("placeholder",this.textbox.getAttribute("data-"+e)||""),this.root.setAttribute("data-mode",e)}},{key:"restoreFocus",value:function(){var e=this.quill.scrollingContainer.scrollTop;this.quill.focus(),this.quill.scrollingContainer.scrollTop=e}},{key:"save",value:function(){var e=this.textbox.value;switch(this.root.getAttribute("data-mode")){case"link":var t=this.quill.root.scrollTop;this.linkRange?(this.quill.formatText(this.linkRange,"link",e,s.default.sources.USER),delete this.linkRange):(this.restoreFocus(),this.quill.format("link",e,s.default.sources.USER)),this.quill.root.scrollTop=t;break;case"video":e=function(e){var t=e.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/)||e.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);return t?(t[1]||"https")+"://www.youtube.com/embed/"+t[2]+"?showinfo=0":(t=e.match(/^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/))?(t[1]||"https")+"://player.vimeo.com/video/"+t[2]+"/":e}(e);case"formula":if(!e)break;var n=this.quill.getSelection(!0);if(null!=n){var r=n.index+n.length;this.quill.insertEmbed(r,this.root.getAttribute("data-mode"),e,s.default.sources.USER),"formula"===this.root.getAttribute("data-mode")&&this.quill.insertText(r+1," ",s.default.sources.USER),this.quill.setSelection(r+2,s.default.sources.USER)}}this.textbox.value="",this.hide()}}]),t}(p.default);function E(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t.forEach((function(t){var r=document.createElement("option");t===n?r.setAttribute("selected","selected"):r.setAttribute("value",t),e.appendChild(r)}))}t.BaseTooltip=S,t.default=x},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){this.head=this.tail=null,this.length=0}return e.prototype.append=function(){for(var e=[],t=0;t1&&this.append.apply(this,e.slice(1))},e.prototype.contains=function(e){for(var t,n=this.iterator();t=n();)if(t===e)return!0;return!1},e.prototype.insertBefore=function(e,t){e&&(e.next=t,null!=t?(e.prev=t.prev,null!=t.prev&&(t.prev.next=e),t.prev=e,t===this.head&&(this.head=e)):null!=this.tail?(this.tail.next=e,e.prev=this.tail,this.tail=e):(e.prev=null,this.head=this.tail=e),this.length+=1)},e.prototype.offset=function(e){for(var t=0,n=this.head;null!=n;){if(n===e)return t;t+=n.length(),n=n.next}return-1},e.prototype.remove=function(e){this.contains(e)&&(null!=e.prev&&(e.prev.next=e.next),null!=e.next&&(e.next.prev=e.prev),e===this.head&&(this.head=e.next),e===this.tail&&(this.tail=e.prev),this.length-=1)},e.prototype.iterator=function(e){return void 0===e&&(e=this.head),function(){var t=e;return null!=e&&(e=e.next),t}},e.prototype.find=function(e,t){void 0===t&&(t=!1);for(var n,r=this.iterator();n=r();){var o=n.length();if(ea?n(r,e-a,Math.min(t,a+l-e)):n(r,0,Math.min(l,e+t-a)),a+=l}},e.prototype.map=function(e){return this.reduce((function(t,n){return t.push(e(n)),t}),[])},e.prototype.reduce=function(e,t){for(var n,r=this.iterator();n=r();)t=e(t,n);return t},e}();t.default=r},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(17),i=n(1),a={attributes:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0},s=function(e){function t(t){var n=e.call(this,t)||this;return n.scroll=n,n.observer=new MutationObserver((function(e){n.update(e)})),n.observer.observe(n.domNode,a),n.attach(),n}return r(t,e),t.prototype.detach=function(){e.prototype.detach.call(this),this.observer.disconnect()},t.prototype.deleteAt=function(t,n){this.update(),0===t&&n===this.length()?this.children.forEach((function(e){e.remove()})):e.prototype.deleteAt.call(this,t,n)},t.prototype.formatAt=function(t,n,r,o){this.update(),e.prototype.formatAt.call(this,t,n,r,o)},t.prototype.insertAt=function(t,n,r){this.update(),e.prototype.insertAt.call(this,t,n,r)},t.prototype.optimize=function(t,n){var r=this;void 0===t&&(t=[]),void 0===n&&(n={}),e.prototype.optimize.call(this,n);for(var a=[].slice.call(this.observer.takeRecords());a.length>0;)t.push(a.pop());for(var s=function e(t,n){void 0===n&&(n=!0),null!=t&&t!==r&&null!=t.domNode.parentNode&&(null==t.domNode[i.DATA_KEY].mutations&&(t.domNode[i.DATA_KEY].mutations=[]),n&&e(t.parent))},l=function e(t){null!=t.domNode[i.DATA_KEY]&&null!=t.domNode[i.DATA_KEY].mutations&&(t instanceof o.default&&t.children.forEach(e),t.optimize(n))},c=t,u=0;c.length>0;u+=1){if(u>=100)throw new Error("[Parchment] Maximum optimize iterations reached");for(c.forEach((function(e){var t=i.find(e.target,!0);null!=t&&(t.domNode===e.target&&("childList"===e.type?(s(i.find(e.previousSibling,!1)),[].forEach.call(e.addedNodes,(function(e){var t=i.find(e,!1);s(t,!1),t instanceof o.default&&t.children.forEach((function(e){s(e,!1)}))}))):"attributes"===e.type&&s(t.prev)),s(t))})),this.children.forEach(l),a=(c=[].slice.call(this.observer.takeRecords())).slice();a.length>0;)t.push(a.pop())}},t.prototype.update=function(t,n){var r=this;void 0===n&&(n={}),(t=t||this.observer.takeRecords()).map((function(e){var t=i.find(e.target,!0);return null==t?null:null==t.domNode[i.DATA_KEY].mutations?(t.domNode[i.DATA_KEY].mutations=[e],t):(t.domNode[i.DATA_KEY].mutations.push(e),null)})).forEach((function(e){null!=e&&e!==r&&null!=e.domNode[i.DATA_KEY]&&e.update(e.domNode[i.DATA_KEY].mutations||[],n)})),null!=this.domNode[i.DATA_KEY].mutations&&e.prototype.update.call(this,this.domNode[i.DATA_KEY].mutations,n),this.optimize(t,n)},t.blotName="scroll",t.defaultChild="block",t.scope=i.Scope.BLOCK_BLOT,t.tagName="DIV",t}(o.default);t.default=s},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(18),i=n(1),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.formats=function(n){if(n.tagName!==t.tagName)return e.formats.call(this,n)},t.prototype.format=function(n,r){var i=this;n!==this.statics.blotName||r?e.prototype.format.call(this,n,r):(this.children.forEach((function(e){e instanceof o.default||(e=e.wrap(t.blotName,!0)),i.attributes.copy(e)})),this.unwrap())},t.prototype.formatAt=function(t,n,r,o){null!=this.formats()[r]||i.query(r,i.Scope.ATTRIBUTE)?this.isolate(t,n).format(r,o):e.prototype.formatAt.call(this,t,n,r,o)},t.prototype.optimize=function(n){e.prototype.optimize.call(this,n);var r=this.formats();if(0===Object.keys(r).length)return this.unwrap();var o=this.next;o instanceof t&&o.prev===this&&function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(e[n]!==t[n])return!1;return!0}(r,o.formats())&&(o.moveChildren(this),o.remove())},t.blotName="inline",t.scope=i.Scope.INLINE_BLOT,t.tagName="SPAN",t}(o.default);t.default=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(18),i=n(1),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.formats=function(n){var r=i.query(t.blotName).tagName;if(n.tagName!==r)return e.formats.call(this,n)},t.prototype.format=function(n,r){null!=i.query(n,i.Scope.BLOCK)&&(n!==this.statics.blotName||r?e.prototype.format.call(this,n,r):this.replaceWith(t.blotName))},t.prototype.formatAt=function(t,n,r,o){null!=i.query(r,i.Scope.BLOCK)?this.format(r,o):e.prototype.formatAt.call(this,t,n,r,o)},t.prototype.insertAt=function(t,n,r){if(null==r||null!=i.query(n,i.Scope.INLINE))e.prototype.insertAt.call(this,t,n,r);else{var o=this.split(t),a=i.create(n,r);o.parent.insertBefore(a,o)}},t.prototype.update=function(t,n){navigator.userAgent.match(/Trident/)?this.build():e.prototype.update.call(this,t,n)},t.blotName="block",t.scope=i.Scope.BLOCK_BLOT,t.tagName="P",t}(o.default);t.default=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.formats=function(e){},t.prototype.format=function(t,n){e.prototype.formatAt.call(this,0,this.length(),t,n)},t.prototype.formatAt=function(t,n,r,o){0===t&&n===this.length()?this.format(r,o):e.prototype.formatAt.call(this,t,n,r,o)},t.prototype.formats=function(){return this.statics.formats(this.domNode)},t}(n(19).default);t.default=o},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(19),i=n(1),a=function(e){function t(t){var n=e.call(this,t)||this;return n.text=n.statics.value(n.domNode),n}return r(t,e),t.create=function(e){return document.createTextNode(e)},t.value=function(e){var t=e.data;return t.normalize&&(t=t.normalize()),t},t.prototype.deleteAt=function(e,t){this.domNode.data=this.text=this.text.slice(0,e)+this.text.slice(e+t)},t.prototype.index=function(e,t){return this.domNode===e?t:-1},t.prototype.insertAt=function(t,n,r){null==r?(this.text=this.text.slice(0,t)+n+this.text.slice(t),this.domNode.data=this.text):e.prototype.insertAt.call(this,t,n,r)},t.prototype.length=function(){return this.text.length},t.prototype.optimize=function(n){e.prototype.optimize.call(this,n),this.text=this.statics.value(this.domNode),0===this.text.length?this.remove():this.next instanceof t&&this.next.prev===this&&(this.insertAt(this.length(),this.next.value()),this.next.remove())},t.prototype.position=function(e,t){return void 0===t&&(t=!1),[this.domNode,e]},t.prototype.split=function(e,t){if(void 0===t&&(t=!1),!t){if(0===e)return this;if(e===this.length())return this.next}var n=i.create(this.domNode.splitText(e));return this.parent.insertBefore(n,this.next),this.text=this.statics.value(this.domNode),n},t.prototype.update=function(e,t){var n=this;e.some((function(e){return"characterData"===e.type&&e.target===n.domNode}))&&(this.text=this.statics.value(this.domNode))},t.prototype.value=function(){return this.text},t.blotName="text",t.scope=i.Scope.INLINE_BLOT,t}(o.default);t.default=a},function(e,t,n){"use strict";var r=document.createElement("div");if(r.classList.toggle("test-class",!1),r.classList.contains("test-class")){var o=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return arguments.length>1&&!this.contains(e)===!t?t:o.call(this,e)}}String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){var n=this.toString();("number"!==typeof t||!isFinite(t)||Math.floor(t)!==t||t>n.length)&&(t=n.length),t-=e.length;var r=n.indexOf(e,t);return-1!==r&&r===t}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!==typeof e)throw new TypeError("predicate must be a function");for(var t,n=Object(this),r=n.length>>>0,o=arguments[1],i=0;it.length?e:t,f=e.length>t.length?t:e,d=u.indexOf(f);if(-1!=d)return c=[[r,u.substring(0,d)],[o,f],[r,u.substring(d+f.length)]],e.length>t.length&&(c[0][0]=c[2][0]=n),c;if(1==f.length)return[[n,e],[r,t]];var p=function(e,t){var n=e.length>t.length?e:t,r=e.length>t.length?t:e;if(n.length<4||2*r.length=e.length?[r,o,i,a,f]:null}var i,a,c,u,f,d=o(n,r,Math.ceil(n.length/4)),p=o(n,r,Math.ceil(n.length/2));if(!d&&!p)return null;i=p?d&&d[4].length>p[4].length?d:p:d,e.length>t.length?(a=i[0],c=i[1],u=i[2],f=i[3]):(u=i[0],f=i[1],a=i[2],c=i[3]);var h=i[4];return[a,c,u,f,h]}(e,t);if(p){var h=p[0],v=p[1],m=p[2],g=p[3],y=p[4],b=i(h,m),_=i(v,g);return b.concat([[o,y]],_)}return function(e,t){for(var o=e.length,i=t.length,s=Math.ceil((o+i)/2),l=s,c=2*s,u=new Array(c),f=new Array(c),d=0;do)m+=2;else if(k>i)v+=2;else if(h&&(E=l+p-_)>=0&&E=(S=o-f[E]))return a(e,t,O,k)}for(var x=-b+g;x<=b-y;x+=2){for(var S,E=l+x,C=(S=x==-b||x!=b&&f[E-1]o)y+=2;else if(C>i)g+=2;else if(!h){var O;if((w=l+p-x)>=0&&w=(S=o-S))return a(e,t,O,k)}}}return[[n,e],[r,t]]}(e,t)}(e=e.substring(0,e.length-d),t=t.substring(0,t.length-d));return p&&v.unshift([o,p]),h&&v.push([o,h]),c(v),null!=u&&(v=function(e,t){var r=function(e,t){if(0===t)return[o,e];for(var r=0,i=0;i0&&i.splice(a+2,0,[l[0],c]),f(i,a,3)}return e}(v,u)),v=function(e){for(var t=!1,i=function(e){return e.charCodeAt(0)>=56320&&e.charCodeAt(0)<=57343},a=function(e){return e.charCodeAt(e.length-1)>=55296&&e.charCodeAt(e.length-1)<=56319},s=2;s0&&l.push(e[s]);return l}(v)}function a(e,t,n,r){var o=e.substring(0,n),a=t.substring(0,r),s=e.substring(n),l=t.substring(r),c=i(o,a),u=i(s,l);return c.concat(u)}function s(e,t){if(!e||!t||e.charAt(0)!=t.charAt(0))return 0;for(var n=0,r=Math.min(e.length,t.length),o=r,i=0;n1?(0!==a&&0!==u&&(0!==(t=s(d,f))&&(i-a-u>0&&e[i-a-u-1][0]==o?e[i-a-u-1][1]+=d.substring(0,t):(e.splice(0,0,[o,d.substring(0,t)]),i++),d=d.substring(t),f=f.substring(t)),0!==(t=l(d,f))&&(e[i][1]=d.substring(d.length-t)+e[i][1],d=d.substring(0,d.length-t),f=f.substring(0,f.length-t))),0===a?e.splice(i-u,a+u,[r,d]):0===u?e.splice(i-a,a+u,[n,f]):e.splice(i-a-u,a+u,[n,f],[r,d]),i=i-a-u+(a?1:0)+(u?1:0)+1):0!==i&&e[i-1][0]==o?(e[i-1][1]+=e[i][1],e.splice(i,1)):i++,u=0,a=0,f="",d=""}""===e[e.length-1][1]&&e.pop();var p=!1;for(i=1;i=0&&r>=t-1;r--)if(r+1=700)&&(n.bold=!0),Object.keys(n).length>0&&(t=O(t,n)),parseFloat(r.textIndent||0)>0&&(t=(new s.default).insert("\t").concat(t)),t}],["li",function(e,t){var n=l.default.query(e);if(null==n||"list-item"!==n.blotName||!R(t,"\n"))return t;for(var r=-1,o=e.parentNode;!o.classList.contains("ql-clipboard");)"list"===(l.default.query(o)||{}).blotName&&(r+=1),o=o.parentNode;return r<=0?t:t.compose((new s.default).retain(t.length()-1).retain(1,{indent:r}))}],["b",j.bind(j,"bold")],["i",j.bind(j,"italic")],["style",function(){return new s.default}]],S=[d.AlignAttribute,m.DirectionAttribute].reduce((function(e,t){return e[t.keyName]=t,e}),{}),E=[d.AlignStyle,p.BackgroundStyle,v.ColorStyle,m.DirectionStyle,g.FontStyle,y.SizeStyle].reduce((function(e,t){return e[t.keyName]=t,e}),{}),C=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return r.quill.root.addEventListener("paste",r.onPaste.bind(r)),r.container=r.quill.addContainer("ql-clipboard"),r.container.setAttribute("contenteditable",!0),r.container.setAttribute("tabindex",-1),r.matchers=[],x.concat(r.options.matchers).forEach((function(e){var t=o(e,2),i=t[0],a=t[1];(n.matchVisual||a!==I)&&r.addMatcher(i,a)})),r}return function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"addMatcher",value:function(e,t){this.matchers.push([e,t])}},{key:"convert",value:function(e){if("string"===typeof e)return this.container.innerHTML=e.replace(/\>\r?\n +\<"),this.convert();var t=this.quill.getFormat(this.quill.selection.savedRange.index);if(t[h.default.blotName]){var n=this.container.innerText;return this.container.innerHTML="",(new s.default).insert(n,_({},h.default.blotName,t[h.default.blotName]))}var r=this.prepareMatching(),i=o(r,2),a=i[0],l=i[1],c=A(this.container,a,l);return R(c,"\n")&&null==c.ops[c.ops.length-1].attributes&&(c=c.compose((new s.default).retain(c.length()-1).delete(1))),w.log("convert",this.container.innerHTML,c),this.container.innerHTML="",c}},{key:"dangerouslyPasteHTML",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:c.default.sources.API;if("string"===typeof e)this.quill.setContents(this.convert(e),t),this.quill.setSelection(0,c.default.sources.SILENT);else{var r=this.convert(t);this.quill.updateContents((new s.default).retain(e).concat(r),n),this.quill.setSelection(e+r.length(),c.default.sources.SILENT)}}},{key:"onPaste",value:function(e){var t=this;if(!e.defaultPrevented&&this.quill.isEnabled()){var n=this.quill.getSelection(),r=(new s.default).retain(n.index),o=this.quill.scrollingContainer.scrollTop;this.container.focus(),this.quill.selection.update(c.default.sources.SILENT),setTimeout((function(){r=r.concat(t.convert()).delete(n.length),t.quill.updateContents(r,c.default.sources.USER),t.quill.setSelection(r.length()-n.length,c.default.sources.SILENT),t.quill.scrollingContainer.scrollTop=o,t.quill.focus()}),1)}}},{key:"prepareMatching",value:function(){var e=this,t=[],n=[];return this.matchers.forEach((function(r){var i=o(r,2),a=i[0],s=i[1];switch(a){case Node.TEXT_NODE:n.push(s);break;case Node.ELEMENT_NODE:t.push(s);break;default:[].forEach.call(e.container.querySelectorAll(a),(function(e){e[k]=e[k]||[],e[k].push(s)}))}})),[t,n]}}]),t}(f.default);function O(e,t,n){return"object"===("undefined"===typeof t?"undefined":r(t))?Object.keys(t).reduce((function(e,n){return O(e,n,t[n])}),e):e.reduce((function(e,r){return r.attributes&&r.attributes[t]?e.push(r):e.insert(r.insert,(0,a.default)({},_({},t,n),r.attributes))}),new s.default)}function T(e){if(e.nodeType!==Node.ELEMENT_NODE)return{};var t="__ql-computed-style";return e[t]||(e[t]=window.getComputedStyle(e))}function R(e,t){for(var n="",r=e.ops.length-1;r>=0&&n.length-1}function A(e,t,n){return e.nodeType===e.TEXT_NODE?n.reduce((function(t,n){return n(e,t)}),new s.default):e.nodeType===e.ELEMENT_NODE?[].reduce.call(e.childNodes||[],(function(r,o){var i=A(o,t,n);return o.nodeType===e.ELEMENT_NODE&&(i=t.reduce((function(e,t){return t(o,e)}),i),i=(o[k]||[]).reduce((function(e,t){return t(o,e)}),i)),r.concat(i)}),new s.default):new s.default}function j(e,t,n){return O(n,e,!0)}function N(e,t){var n=l.default.Attributor.Attribute.keys(e),r=l.default.Attributor.Class.keys(e),o=l.default.Attributor.Style.keys(e),i={};return n.concat(r).concat(o).forEach((function(t){var n=l.default.query(t,l.default.Scope.ATTRIBUTE);null!=n&&(i[n.attrName]=n.value(e),i[n.attrName])||(null==(n=S[t])||n.attrName!==t&&n.keyName!==t||(i[n.attrName]=n.value(e)||void 0),null==(n=E[t])||n.attrName!==t&&n.keyName!==t||(n=E[t],i[n.attrName]=n.value(e)||void 0))})),Object.keys(i).length>0&&(t=O(t,i)),t}function L(e,t){var n=l.default.query(e);if(null==n)return t;if(n.prototype instanceof l.default.Embed){var r={},o=n.value(e);null!=o&&(r[n.blotName]=o,t=(new s.default).insert(r,n.formats(e)))}else"function"===typeof n.formats&&(t=O(t,n.blotName,n.formats(e)));return t}function M(e,t){return R(t,"\n")||(P(e)||t.length()>0&&e.nextSibling&&P(e.nextSibling))&&t.insert("\n"),t}function I(e,t){if(P(e)&&null!=e.nextElementSibling&&!R(t,"\n\n")){var n=e.offsetHeight+parseFloat(T(e).marginTop)+parseFloat(T(e).marginBottom);e.nextElementSibling.offsetTop>e.offsetTop+1.5*n&&t.insert("\n")}return t}function D(e,t){var n=e.data;if("O:P"===e.parentNode.tagName)return t.insert(n.trim());if(0===n.trim().length&&e.parentNode.classList.contains("ql-clipboard"))return t;if(!T(e.parentNode).whiteSpace.startsWith("pre")){var r=function(e,t){return(t=t.replace(/[^\u00a0]/g,"")).length<1&&e?" ":t};n=(n=n.replace(/\r\n/g," ").replace(/\n/g," ")).replace(/\s\s+/g,r.bind(r,!0)),(null==e.previousSibling&&P(e.parentNode)||null!=e.previousSibling&&P(e.previousSibling))&&(n=n.replace(/^\s+/,r.bind(r,!1))),(null==e.nextSibling&&P(e.parentNode)||null!=e.nextSibling&&P(e.nextSibling))&&(n=n.replace(/\s+$/,r.bind(r,!1)))}return t.insert(n)}C.DEFAULTS={matchers:[],matchVisual:!0},t.default=C,t.matchAttributor=N,t.matchBlot=L,t.matchNewline=M,t.matchSpacing=I,t.matchText=D},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function e(e,t){for(var n=0;n '},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function e(e,t){for(var n=0;nr.right&&(i=r.right-o.right,this.root.style.left=t+i+"px"),o.leftr.bottom){var a=o.bottom-o.top,s=e.bottom-e.top+a;this.root.style.top=n-s+"px",this.root.classList.add("ql-flip")}return i}},{key:"show",value:function(){this.root.classList.remove("ql-editing"),this.root.classList.remove("ql-hidden")}}]),e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){o=!0,i=l}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=function e(t,n,r){null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,n);if(void 0===o){var i=Object.getPrototypeOf(t);return null===i?void 0:e(i,n,r)}if("value"in o)return o.value;var a=o.get;return void 0!==a?a.call(r):void 0},i=function(){function e(e,t){for(var n=0;n','','',''].join(""),t.default=y},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=M(n(29)),o=n(36),i=n(38),a=n(64),s=M(n(65)),l=M(n(66)),c=n(67),u=M(c),f=n(37),d=n(26),p=n(39),h=n(40),v=M(n(56)),m=M(n(68)),g=M(n(27)),y=M(n(69)),b=M(n(70)),_=M(n(71)),w=M(n(72)),k=M(n(73)),x=n(13),S=M(x),E=M(n(74)),C=M(n(75)),O=M(n(57)),T=M(n(41)),R=M(n(28)),P=M(n(59)),A=M(n(60)),j=M(n(61)),N=M(n(108)),L=M(n(62));function M(e){return e&&e.__esModule?e:{default:e}}r.default.register({"attributors/attribute/direction":i.DirectionAttribute,"attributors/class/align":o.AlignClass,"attributors/class/background":f.BackgroundClass,"attributors/class/color":d.ColorClass,"attributors/class/direction":i.DirectionClass,"attributors/class/font":p.FontClass,"attributors/class/size":h.SizeClass,"attributors/style/align":o.AlignStyle,"attributors/style/background":f.BackgroundStyle,"attributors/style/color":d.ColorStyle,"attributors/style/direction":i.DirectionStyle,"attributors/style/font":p.FontStyle,"attributors/style/size":h.SizeStyle},!0),r.default.register({"formats/align":o.AlignClass,"formats/direction":i.DirectionClass,"formats/indent":a.IndentClass,"formats/background":f.BackgroundStyle,"formats/color":d.ColorStyle,"formats/font":p.FontClass,"formats/size":h.SizeClass,"formats/blockquote":s.default,"formats/code-block":S.default,"formats/header":l.default,"formats/list":u.default,"formats/bold":v.default,"formats/code":x.Code,"formats/italic":m.default,"formats/link":g.default,"formats/script":y.default,"formats/strike":b.default,"formats/underline":_.default,"formats/image":w.default,"formats/video":k.default,"formats/list/item":c.ListItem,"modules/formula":E.default,"modules/syntax":C.default,"modules/toolbar":O.default,"themes/bubble":N.default,"themes/snow":L.default,"ui/icons":T.default,"ui/picker":R.default,"ui/icon-picker":A.default,"ui/color-picker":P.default,"ui/tooltip":j.default},!0),t.default=r.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IndentClass=void 0;var r,o=function(){function e(e,t){for(var n=0;n0&&this.children.tail.format(e,t)}},{key:"formats",value:function(){return e={},t=this.statics.blotName,n=this.statics.formats(this.domNode),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e;var e,t,n}},{key:"insertBefore",value:function(e,n){if(e instanceof d)o(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"insertBefore",this).call(this,e,n);else{var r=null==n?this.length():n.offset(this),i=this.split(r);i.parent.insertBefore(e,i)}}},{key:"optimize",value:function(e){o(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"optimize",this).call(this,e);var n=this.next;null!=n&&n.prev===this&&n.statics.blotName===this.statics.blotName&&n.domNode.tagName===this.domNode.tagName&&n.domNode.getAttribute("data-checked")===this.domNode.getAttribute("data-checked")&&(n.moveChildren(this),n.remove())}},{key:"replace",value:function(e){if(e.statics.blotName!==this.statics.blotName){var n=i.default.create(this.statics.defaultChild);e.moveChildren(n),this.appendChild(n)}o(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"replace",this).call(this,e)}}]),t}(s.default);p.blotName="list",p.scope=i.default.Scope.BLOCK_BLOT,p.tagName=["OL","UL"],p.defaultChild="list-item",p.allowedChildren=[d],t.ListItem=d,t.default=p},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(56),i=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(((r=o)&&r.__esModule?r:{default:r}).default);i.blotName="italic",i.tagName=["EM","I"],t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function e(e,t){for(var n=0;n-1?n?this.domNode.setAttribute(e,n):this.domNode.removeAttribute(e):i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"format",this).call(this,e,n)}}],[{key:"create",value:function(e){var n=i(t.__proto__||Object.getPrototypeOf(t),"create",this).call(this,e);return"string"===typeof e&&n.setAttribute("src",this.sanitize(e)),n}},{key:"formats",value:function(e){return c.reduce((function(t,n){return e.hasAttribute(n)&&(t[n]=e.getAttribute(n)),t}),{})}},{key:"match",value:function(e){return/\.(jpe?g|gif|png)$/.test(e)||/^data:image\/.+;base64/.test(e)}},{key:"sanitize",value:function(e){return(0,l.sanitize)(e,["http","https","data"])?e:"//:0"}},{key:"value",value:function(e){return e.getAttribute("src")}}]),t}(s.default.Embed);u.blotName="image",u.tagName="IMG",t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function e(e,t){for(var n=0;n-1?n?this.domNode.setAttribute(e,n):this.domNode.removeAttribute(e):i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"format",this).call(this,e,n)}}],[{key:"create",value:function(e){var n=i(t.__proto__||Object.getPrototypeOf(t),"create",this).call(this,e);return n.setAttribute("frameborder","0"),n.setAttribute("allowfullscreen",!0),n.setAttribute("src",this.sanitize(e)),n}},{key:"formats",value:function(e){return c.reduce((function(t,n){return e.hasAttribute(n)&&(t[n]=e.getAttribute(n)),t}),{})}},{key:"sanitize",value:function(e){return l.default.sanitize(e)}},{key:"value",value:function(e){return e.getAttribute("src")}}]),t}(a.BlockEmbed);u.blotName="video",u.className="ql-video",u.tagName="IFRAME",t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.FormulaBlot=void 0;var r=function(){function e(e,t){for(var n=0;n0||null==this.cachedText)&&(this.domNode.innerHTML=e(t),this.domNode.normalize(),this.attach()),this.cachedText=t)}}]),t}(l(n(13)).default);d.className="ql-syntax";var p=new i.default.Attributor.Class("token","hljs",{scope:i.default.Scope.INLINE}),h=function(e){function t(e,n){c(this,t);var r=u(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));if("function"!==typeof r.options.highlight)throw new Error("Syntax module requires highlight.js. Please include the library on the page before Quill.");var o=null;return r.quill.on(a.default.events.SCROLL_OPTIMIZE,(function(){clearTimeout(o),o=setTimeout((function(){r.highlight(),o=null}),r.options.interval)})),r.highlight(),r}return f(t,e),r(t,null,[{key:"register",value:function(){a.default.register(p,!0),a.default.register(d,!0)}}]),r(t,[{key:"highlight",value:function(){var e=this;if(!this.quill.selection.composing){this.quill.update(a.default.sources.USER);var t=this.quill.getSelection();this.quill.scroll.descendants(d).forEach((function(t){t.highlight(e.options.highlight)})),this.quill.update(a.default.sources.SILENT),null!=t&&this.quill.setSelection(t,a.default.sources.SILENT)}}}]),t}(s.default);h.DEFAULTS={highlight:null==window.hljs?null:function(e){return window.hljs.highlightAuto(e).value},interval:1e3},t.CodeBlock=d,t.CodeToken=p,t.default=h},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.BubbleTooltip=void 0;var r=function e(t,n,r){null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,n);if(void 0===o){var i=Object.getPrototypeOf(t);return null===i?void 0:e(i,n,r)}if("value"in o)return o.value;var a=o.get;return void 0!==a?a.call(r):void 0},o=function(){function e(e,t){for(var n=0;n0&&o===a.default.sources.USER){r.show(),r.root.style.left="0px",r.root.style.width="",r.root.style.width=r.root.offsetWidth+"px";var i=r.quill.getLines(t.index,t.length);if(1===i.length)r.position(r.quill.getBounds(t));else{var s=i[i.length-1],l=r.quill.getIndex(s),u=Math.min(s.length()-1,t.index+t.length-l),f=r.quill.getBounds(new c.Range(l,u));r.position(f)}}else document.activeElement!==r.textbox&&r.quill.hasFocus()&&r.hide()})),r}return h(t,e),o(t,[{key:"listen",value:function(){var e=this;r(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"listen",this).call(this),this.root.querySelector(".ql-close").addEventListener("click",(function(){e.root.classList.remove("ql-editing")})),this.quill.on(a.default.events.SCROLL_OPTIMIZE,(function(){setTimeout((function(){if(!e.root.classList.contains("ql-hidden")){var t=e.quill.getSelection();null!=t&&e.position(e.quill.getBounds(t))}}),1)}))}},{key:"cancel",value:function(){this.show()}},{key:"position",value:function(e){var n=r(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"position",this).call(this,e),o=this.root.querySelector(".ql-tooltip-arrow");if(o.style.marginLeft="",0===n)return n;o.style.marginLeft=-1*n-o.offsetWidth/2+"px"}}]),t}(s.BaseTooltip);g.TEMPLATE=['','"].join(""),t.BubbleTooltip=g,t.default=m},function(e,t,n){e.exports=n(63)}]).default},e.exports=t()},4463:function(e,t,n){"use strict";var r=n(2791),o=n(5296);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nt}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!f.call(h,e)||!f.call(p,e)&&(d.test(e)?h[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(g,y);m[t]=new v(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(g,y);m[t]=new v(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(g,y);m[t]=new v(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){m[e]=new v(e,1,!1,e.toLowerCase(),null,!1,!1)})),m.xlinkHref=new v("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){m[e]=new v(e,1,!1,e.toLowerCase(),null,!0,!0)}));var _=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,w=Symbol.for("react.element"),k=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),S=Symbol.for("react.strict_mode"),E=Symbol.for("react.profiler"),C=Symbol.for("react.provider"),O=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),R=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),A=Symbol.for("react.memo"),j=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var N=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var L=Symbol.iterator;function M(e){return null===e||"object"!==typeof e?null:"function"===typeof(e=L&&e[L]||e["@@iterator"])?e:null}var I,D=Object.assign;function Z(e){if(void 0===I)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);I=t&&t[1]||""}return"\n"+I+e}var F=!1;function B(e,t){if(!e||F)return"";F=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"===typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(c){var r=c}Reflect.construct(e,[],t)}else{try{t.call()}catch(c){r=c}e.call(t.prototype)}else{try{throw Error()}catch(c){r=c}e()}}catch(c){if(c&&r&&"string"===typeof c.stack){for(var o=c.stack.split("\n"),i=r.stack.split("\n"),a=o.length-1,s=i.length-1;1<=a&&0<=s&&o[a]!==i[s];)s--;for(;1<=a&&0<=s;a--,s--)if(o[a]!==i[s]){if(1!==a||1!==s)do{if(a--,0>--s||o[a]!==i[s]){var l="\n"+o[a].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}}while(1<=a&&0<=s);break}}}finally{F=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Z(e):""}function q(e){switch(e.tag){case 5:return Z(e.type);case 16:return Z("Lazy");case 13:return Z("Suspense");case 19:return Z("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function z(e){if(null==e)return null;if("function"===typeof e)return e.displayName||e.name||null;if("string"===typeof e)return e;switch(e){case x:return"Fragment";case k:return"Portal";case E:return"Profiler";case S:return"StrictMode";case R:return"Suspense";case P:return"SuspenseList"}if("object"===typeof e)switch(e.$$typeof){case O:return(e.displayName||"Context")+".Consumer";case C:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case A:return null!==(t=e.displayName||null)?t:z(e.type)||"Memo";case j:t=e._payload,e=e._init;try{return z(e(t))}catch(n){}}return null}function U(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return z(t);case 8:return t===S?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"===typeof t)return t.displayName||t.name||null;if("string"===typeof t)return t}return null}function W(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function H(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function V(e){e._valueTracker||(e._valueTracker=function(e){var t=H(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&"undefined"!==typeof n&&"function"===typeof n.get&&"function"===typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function $(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=H(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function K(e){if("undefined"===typeof(e=e||("undefined"!==typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function G(e,t){var n=t.checked;return D({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Y(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function J(e,t){null!=(t=t.checked)&&b(e,"checked",t,!1)}function Q(e,t){J(e,t);var n=W(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function X(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&K(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=ce.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ue(e,t)}))}:ue);function de(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},he=["Webkit","ms","Moz","O"];function ve(e,t,n){return null==t||"boolean"===typeof t||""===t?"":n||"number"!==typeof t||0===t||pe.hasOwnProperty(e)&&pe[e]?(""+t).trim():t+"px"}function me(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=ve(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(pe).forEach((function(e){he.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var ge=D({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ye(e,t){if(t){if(ge[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!==typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!==typeof t.style)throw Error(i(62))}}function be(e,t){if(-1===e.indexOf("-"))return"string"===typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var _e=null;function we(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var ke=null,xe=null,Se=null;function Ee(e){if(e=_o(e)){if("function"!==typeof ke)throw Error(i(280));var t=e.stateNode;t&&(t=ko(t),ke(e.stateNode,e.type,t))}}function Ce(e){xe?Se?Se.push(e):Se=[e]:xe=e}function Oe(){if(xe){var e=xe,t=Se;if(Se=xe=null,Ee(e),t)for(e=0;e>>=0,0===e?32:31-(st(e)/lt|0)|0},st=Math.log,lt=Math.LN2;var ct=64,ut=4194304;function ft(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=268435455&n;if(0!==a){var s=a&~o;0!==s?r=ft(s):0!==(i&=a)&&(r=ft(i))}else 0!==(a=n&~o)?r=ft(a):0!==i&&(r=ft(i));if(0===r)return 0;if(0!==t&&t!==r&&0===(t&o)&&((o=r&-r)>=(i=t&-t)||16===o&&0!==(4194240&i)))return t;if(0!==(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function gt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-at(t)]=n}function yt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-at(n),o=1<=Mn),Zn=String.fromCharCode(32),Fn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Nn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"===typeof(e=e.detail)&&"data"in e?e.data:null}var zn=!1;var Un={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Wn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Un[e.type]:"textarea"===t}function Hn(e,t,n,r){Ce(r),0<(t=Vr(t,"onChange")).length&&(n=new un("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,$n=null;function Kn(e){Zr(e,0)}function Gn(e){if($(wo(e)))return e}function Yn(e,t){if("change"===e)return t}var Jn=!1;if(u){var Qn;if(u){var Xn="oninput"in document;if(!Xn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Xn="function"===typeof er.oninput}Qn=Xn}else Qn=!1;Jn=Qn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=K();t instanceof e.HTMLIFrameElement;){try{var n="string"===typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=K((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function hr(e){var t=dr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&fr(n.ownerDocument.documentElement,n)){if(null!==r&&pr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=void 0===r.end?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=ur(n,i);var a=ur(n,r);o&&a&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"===typeof n.focus&&n.focus(),n=0;n=document.documentMode,mr=null,gr=null,yr=null,br=!1;function _r(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;br||null==mr||mr!==K(r)||("selectionStart"in(r=mr)&&pr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},yr&&lr(yr,r)||(yr=r,0<(r=Vr(gr,"onSelect")).length&&(t=new un("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=mr)))}function wr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var kr={animationend:wr("Animation","AnimationEnd"),animationiteration:wr("Animation","AnimationIteration"),animationstart:wr("Animation","AnimationStart"),transitionend:wr("Transition","TransitionEnd")},xr={},Sr={};function Er(e){if(xr[e])return xr[e];if(!kr[e])return e;var t,n=kr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Sr)return xr[e]=n[t];return e}u&&(Sr=document.createElement("div").style,"AnimationEvent"in window||(delete kr.animationend.animation,delete kr.animationiteration.animation,delete kr.animationstart.animation),"TransitionEvent"in window||delete kr.transitionend.transition);var Cr=Er("animationend"),Or=Er("animationiteration"),Tr=Er("animationstart"),Rr=Er("transitionend"),Pr=new Map,Ar="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function jr(e,t){Pr.set(e,t),l(t,[e])}for(var Nr=0;NrSo||(e.current=xo[So],xo[So]=null,So--)}function Oo(e,t){So++,xo[So]=e.current,e.current=t}var To={},Ro=Eo(To),Po=Eo(!1),Ao=To;function jo(e,t){var n=e.type.contextTypes;if(!n)return To;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function No(e){return null!==(e=e.childContextTypes)&&void 0!==e}function Lo(){Co(Po),Co(Ro)}function Mo(e,t,n){if(Ro.current!==To)throw Error(i(168));Oo(Ro,t),Oo(Po,n)}function Io(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!==typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(i(108,U(e)||"Unknown",o));return D({},n,r)}function Do(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||To,Ao=Ro.current,Oo(Ro,e),Oo(Po,Po.current),!0}function Zo(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=Io(e,t,Ao),r.__reactInternalMemoizedMergedChildContext=e,Co(Po),Co(Ro),Oo(Ro,e)):Co(Po),Oo(Po,n)}var Fo=null,Bo=!1,qo=!1;function zo(e){null===Fo?Fo=[e]:Fo.push(e)}function Uo(){if(!qo&&null!==Fo){qo=!0;var e=0,t=bt;try{var n=Fo;for(bt=1;e>=a,o-=a,Jo=1<<32-at(t)+o|n<v?(m=f,f=null):m=f.sibling;var g=p(o,f,s[v],l);if(null===g){null===f&&(f=m);break}e&&f&&null===g.alternate&&t(o,f),i=a(g,i,v),null===u?c=g:u.sibling=g,u=g,f=m}if(v===s.length)return n(o,f),ii&&Xo(o,v),c;if(null===f){for(;vm?(g=v,v=null):g=v.sibling;var b=p(o,v,y.value,c);if(null===b){null===v&&(v=g);break}e&&v&&null===b.alternate&&t(o,v),s=a(b,s,m),null===f?u=b:f.sibling=b,f=b,v=g}if(y.done)return n(o,v),ii&&Xo(o,m),u;if(null===v){for(;!y.done;m++,y=l.next())null!==(y=d(o,y.value,c))&&(s=a(y,s,m),null===f?u=y:f.sibling=y,f=y);return ii&&Xo(o,m),u}for(v=r(o,v);!y.done;m++,y=l.next())null!==(y=h(v,o,m,y.value,c))&&(e&&null!==y.alternate&&v.delete(null===y.key?m:y.key),s=a(y,s,m),null===f?u=y:f.sibling=y,f=y);return e&&v.forEach((function(e){return t(o,e)})),ii&&Xo(o,m),u}return function e(r,i,a,l){if("object"===typeof a&&null!==a&&a.type===x&&null===a.key&&(a=a.props.children),"object"===typeof a&&null!==a){switch(a.$$typeof){case w:e:{for(var c=a.key,u=i;null!==u;){if(u.key===c){if((c=a.type)===x){if(7===u.tag){n(r,u.sibling),(i=o(u,a.props.children)).return=r,r=i;break e}}else if(u.elementType===c||"object"===typeof c&&null!==c&&c.$$typeof===j&&Gi(c)===u.type){n(r,u.sibling),(i=o(u,a.props)).ref=$i(r,u,a),i.return=r,r=i;break e}n(r,u);break}t(r,u),u=u.sibling}a.type===x?((i=Ic(a.props.children,r.mode,l,a.key)).return=r,r=i):((l=Mc(a.type,a.key,a.props,null,r.mode,l)).ref=$i(r,i,a),l.return=r,r=l)}return s(r);case k:e:{for(u=a.key;null!==i;){if(i.key===u){if(4===i.tag&&i.stateNode.containerInfo===a.containerInfo&&i.stateNode.implementation===a.implementation){n(r,i.sibling),(i=o(i,a.children||[])).return=r,r=i;break e}n(r,i);break}t(r,i),i=i.sibling}(i=Fc(a,r.mode,l)).return=r,r=i}return s(r);case j:return e(r,i,(u=a._init)(a._payload),l)}if(te(a))return v(r,i,a,l);if(M(a))return m(r,i,a,l);Ki(r,a)}return"string"===typeof a&&""!==a||"number"===typeof a?(a=""+a,null!==i&&6===i.tag?(n(r,i.sibling),(i=o(i,a)).return=r,r=i):(n(r,i),(i=Zc(a,r.mode,l)).return=r,r=i),s(r)):n(r,i)}}var Ji=Yi(!0),Qi=Yi(!1),Xi={},ea=Eo(Xi),ta=Eo(Xi),na=Eo(Xi);function ra(e){if(e===Xi)throw Error(i(174));return e}function oa(e,t){switch(Oo(na,t),Oo(ta,e),Oo(ea,Xi),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:le(null,"");break;default:t=le(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Co(ea),Oo(ea,t)}function ia(){Co(ea),Co(ta),Co(na)}function aa(e){ra(na.current);var t=ra(ea.current),n=le(t,e.type);t!==n&&(Oo(ta,e),Oo(ea,n))}function sa(e){ta.current===e&&(Co(ea),Co(ta))}var la=Eo(0);function ca(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!==(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ua=[];function fa(){for(var e=0;en?n:4,e(!0);var r=pa.transition;pa.transition={};try{e(!1),t()}finally{bt=n,pa.transition=r}}function es(){return Oa().memoizedState}function ts(e,t,n){var r=nc(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rs(e))os(t,n);else if(null!==(n=Ri(e,t,n,r))){rc(n,e,r,tc()),is(n,t,r)}}function ns(e,t,n){var r=nc(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rs(e))os(t,o);else{var i=e.alternate;if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var a=t.lastRenderedState,s=i(a,n);if(o.hasEagerState=!0,o.eagerState=s,sr(s,a)){var l=t.interleaved;return null===l?(o.next=o,Ti(t)):(o.next=l.next,l.next=o),void(t.interleaved=o)}}catch(c){}null!==(n=Ri(e,t,o,r))&&(rc(n,e,r,o=tc()),is(n,t,r))}}function rs(e){var t=e.alternate;return e===va||null!==t&&t===va}function os(e,t){ba=ya=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function is(e,t,n){if(0!==(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,yt(e,n)}}var as={readContext:Ci,useCallback:ka,useContext:ka,useEffect:ka,useImperativeHandle:ka,useInsertionEffect:ka,useLayoutEffect:ka,useMemo:ka,useReducer:ka,useRef:ka,useState:ka,useDebugValue:ka,useDeferredValue:ka,useTransition:ka,useMutableSource:ka,useSyncExternalStore:ka,useId:ka,unstable_isNewReconciler:!1},ss={readContext:Ci,useCallback:function(e,t){return Ca().memoizedState=[e,void 0===t?null:t],e},useContext:Ci,useEffect:Ua,useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,qa(4194308,4,$a.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qa(4194308,4,e,t)},useInsertionEffect:function(e,t){return qa(4,2,e,t)},useMemo:function(e,t){var n=Ca();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ca();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=ts.bind(null,va,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ca().memoizedState=e},useState:Za,useDebugValue:Ga,useDeferredValue:function(e){return Ca().memoizedState=e},useTransition:function(){var e=Za(!1),t=e[0];return e=Xa.bind(null,e[1]),Ca().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=va,o=Ca();if(ii){if(void 0===n)throw Error(i(407));n=n()}else{if(n=t(),null===Pl)throw Error(i(349));0!==(30&ha)||Na(r,t,n)}o.memoizedState=n;var a={value:n,getSnapshot:t};return o.queue=a,Ua(Ma.bind(null,r,a,e),[e]),r.flags|=2048,Fa(9,La.bind(null,r,a,n,t),void 0,null),n},useId:function(){var e=Ca(),t=Pl.identifierPrefix;if(ii){var n=Qo;t=":"+t+"R"+(n=(Jo&~(1<<32-at(Jo)-1)).toString(32)+n),0<(n=_a++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=wa++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},ls={readContext:Ci,useCallback:Ya,useContext:Ci,useEffect:Wa,useImperativeHandle:Ka,useInsertionEffect:Ha,useLayoutEffect:Va,useMemo:Ja,useReducer:Ra,useRef:Ba,useState:function(){return Ra(Ta)},useDebugValue:Ga,useDeferredValue:function(e){return Qa(Oa(),ma.memoizedState,e)},useTransition:function(){return[Ra(Ta)[0],Oa().memoizedState]},useMutableSource:Aa,useSyncExternalStore:ja,useId:es,unstable_isNewReconciler:!1},cs={readContext:Ci,useCallback:Ya,useContext:Ci,useEffect:Wa,useImperativeHandle:Ka,useInsertionEffect:Ha,useLayoutEffect:Va,useMemo:Ja,useReducer:Pa,useRef:Ba,useState:function(){return Pa(Ta)},useDebugValue:Ga,useDeferredValue:function(e){var t=Oa();return null===ma?t.memoizedState=e:Qa(t,ma.memoizedState,e)},useTransition:function(){return[Pa(Ta)[0],Oa().memoizedState]},useMutableSource:Aa,useSyncExternalStore:ja,useId:es,unstable_isNewReconciler:!1};function us(e,t){try{var n="",r=t;do{n+=q(r),r=r.return}while(r);var o=n}catch(i){o="\nError generating stack: "+i.message+"\n"+i.stack}return{value:e,source:t,stack:o,digest:null}}function fs(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function ds(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var ps="function"===typeof WeakMap?WeakMap:Map;function hs(e,t,n){(n=Li(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hl||(Hl=!0,Vl=r),ds(0,t)},n}function vs(e,t,n){(n=Li(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"===typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){ds(0,t)}}var i=e.stateNode;return null!==i&&"function"===typeof i.componentDidCatch&&(n.callback=function(){ds(0,t),"function"!==typeof r&&(null===$l?$l=new Set([this]):$l.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function ms(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new ps;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=Cc.bind(null,e,t,n),t.then(e,e))}function gs(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function ys(e,t,n,r,o){return 0===(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Li(-1,1)).tag=2,Mi(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=o,e)}var bs=_.ReactCurrentOwner,_s=!1;function ws(e,t,n,r){t.child=null===e?Qi(t,null,n,r):Ji(t,e.child,n,r)}function ks(e,t,n,r,o){n=n.render;var i=t.ref;return Ei(t,o),r=Sa(e,t,n,r,i,o),n=Ea(),null===e||_s?(ii&&n&&ti(t),t.flags|=1,ws(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hs(e,t,o))}function xs(e,t,n,r,o){if(null===e){var i=n.type;return"function"!==typeof i||Nc(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Mc(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Ss(e,t,i,r,o))}if(i=e.child,0===(e.lanes&o)){var a=i.memoizedProps;if((n=null!==(n=n.compare)?n:lr)(a,r)&&e.ref===t.ref)return Hs(e,t,o)}return t.flags|=1,(e=Lc(i,r)).ref=t.ref,e.return=t,t.child=e}function Ss(e,t,n,r,o){if(null!==e){var i=e.memoizedProps;if(lr(i,r)&&e.ref===t.ref){if(_s=!1,t.pendingProps=r=i,0===(e.lanes&o))return t.lanes=e.lanes,Hs(e,t,o);0!==(131072&e.flags)&&(_s=!0)}}return Os(e,t,n,r,o)}function Es(e,t,n){var r=t.pendingProps,o=r.children,i=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0===(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Oo(Ll,Nl),Nl|=n;else{if(0===(1073741824&n))return e=null!==i?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Oo(Ll,Nl),Nl|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==i?i.baseLanes:n,Oo(Ll,Nl),Nl|=r}else null!==i?(r=i.baseLanes|n,t.memoizedState=null):r=n,Oo(Ll,Nl),Nl|=r;return ws(e,t,o,n),t.child}function Cs(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Os(e,t,n,r,o){var i=No(n)?Ao:Ro.current;return i=jo(t,i),Ei(t,o),n=Sa(e,t,n,r,i,o),r=Ea(),null===e||_s?(ii&&r&&ti(t),t.flags|=1,ws(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hs(e,t,o))}function Ts(e,t,n,r,o){if(No(n)){var i=!0;Do(t)}else i=!1;if(Ei(t,o),null===t.stateNode)Ws(e,t),Wi(t,n,r),Vi(t,n,r,o),r=!0;else if(null===e){var a=t.stateNode,s=t.memoizedProps;a.props=s;var l=a.context,c=n.contextType;"object"===typeof c&&null!==c?c=Ci(c):c=jo(t,c=No(n)?Ao:Ro.current);var u=n.getDerivedStateFromProps,f="function"===typeof u||"function"===typeof a.getSnapshotBeforeUpdate;f||"function"!==typeof a.UNSAFE_componentWillReceiveProps&&"function"!==typeof a.componentWillReceiveProps||(s!==r||l!==c)&&Hi(t,a,r,c),Ai=!1;var d=t.memoizedState;a.state=d,Zi(t,r,a,o),l=t.memoizedState,s!==r||d!==l||Po.current||Ai?("function"===typeof u&&(qi(t,n,u,r),l=t.memoizedState),(s=Ai||Ui(t,n,s,r,d,l,c))?(f||"function"!==typeof a.UNSAFE_componentWillMount&&"function"!==typeof a.componentWillMount||("function"===typeof a.componentWillMount&&a.componentWillMount(),"function"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"===typeof a.componentDidMount&&(t.flags|=4194308)):("function"===typeof a.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=c,r=s):("function"===typeof a.componentDidMount&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,Ni(e,t),s=t.memoizedProps,c=t.type===t.elementType?s:gi(t.type,s),a.props=c,f=t.pendingProps,d=a.context,"object"===typeof(l=n.contextType)&&null!==l?l=Ci(l):l=jo(t,l=No(n)?Ao:Ro.current);var p=n.getDerivedStateFromProps;(u="function"===typeof p||"function"===typeof a.getSnapshotBeforeUpdate)||"function"!==typeof a.UNSAFE_componentWillReceiveProps&&"function"!==typeof a.componentWillReceiveProps||(s!==f||d!==l)&&Hi(t,a,r,l),Ai=!1,d=t.memoizedState,a.state=d,Zi(t,r,a,o);var h=t.memoizedState;s!==f||d!==h||Po.current||Ai?("function"===typeof p&&(qi(t,n,p,r),h=t.memoizedState),(c=Ai||Ui(t,n,c,r,d,h,l)||!1)?(u||"function"!==typeof a.UNSAFE_componentWillUpdate&&"function"!==typeof a.componentWillUpdate||("function"===typeof a.componentWillUpdate&&a.componentWillUpdate(r,h,l),"function"===typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,h,l)),"function"===typeof a.componentDidUpdate&&(t.flags|=4),"function"===typeof a.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!==typeof a.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!==typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=h),a.props=r,a.state=h,a.context=l,r=c):("function"!==typeof a.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!==typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return Rs(e,t,n,r,i,o)}function Rs(e,t,n,r,o,i){Cs(e,t);var a=0!==(128&t.flags);if(!r&&!a)return o&&Zo(t,n,!1),Hs(e,t,i);r=t.stateNode,bs.current=t;var s=a&&"function"!==typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&a?(t.child=Ji(t,e.child,null,i),t.child=Ji(t,null,s,i)):ws(e,t,s,i),t.memoizedState=r.state,o&&Zo(t,n,!0),t.child}function Ps(e){var t=e.stateNode;t.pendingContext?Mo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Mo(0,t.context,!1),oa(e,t.containerInfo)}function As(e,t,n,r,o){return hi(),vi(o),t.flags|=256,ws(e,t,n,r),t.child}var js,Ns,Ls,Ms,Is={dehydrated:null,treeContext:null,retryLane:0};function Ds(e){return{baseLanes:e,cachePool:null,transitions:null}}function Zs(e,t,n){var r,o=t.pendingProps,a=la.current,s=!1,l=0!==(128&t.flags);if((r=l)||(r=(null===e||null!==e.memoizedState)&&0!==(2&a)),r?(s=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(a|=1),Oo(la,1&a),null===e)return ui(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0===(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(l=o.children,e=o.fallback,s?(o=t.mode,s=t.child,l={mode:"hidden",children:l},0===(1&o)&&null!==s?(s.childLanes=0,s.pendingProps=l):s=Dc(l,o,0,null),e=Ic(e,o,n,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=Ds(n),t.memoizedState=Is,e):Fs(t,l));if(null!==(a=e.memoizedState)&&null!==(r=a.dehydrated))return function(e,t,n,r,o,a,s){if(n)return 256&t.flags?(t.flags&=-257,Bs(e,t,s,r=fs(Error(i(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(a=r.fallback,o=t.mode,r=Dc({mode:"visible",children:r.children},o,0,null),(a=Ic(a,o,s,null)).flags|=2,r.return=t,a.return=t,r.sibling=a,t.child=r,0!==(1&t.mode)&&Ji(t,e.child,null,s),t.child.memoizedState=Ds(s),t.memoizedState=Is,a);if(0===(1&t.mode))return Bs(e,t,s,null);if("$!"===o.data){if(r=o.nextSibling&&o.nextSibling.dataset)var l=r.dgst;return r=l,Bs(e,t,s,r=fs(a=Error(i(419)),r,void 0))}if(l=0!==(s&e.childLanes),_s||l){if(null!==(r=Pl)){switch(s&-s){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=0!==(o&(r.suspendedLanes|s))?0:o)&&o!==a.retryLane&&(a.retryLane=o,Pi(e,o),rc(r,e,o,-1))}return mc(),Bs(e,t,s,r=fs(Error(i(421))))}return"$?"===o.data?(t.flags|=128,t.child=e.child,t=Tc.bind(null,e),o._reactRetry=t,null):(e=a.treeContext,oi=co(o.nextSibling),ri=t,ii=!0,ai=null,null!==e&&(Ko[Go++]=Jo,Ko[Go++]=Qo,Ko[Go++]=Yo,Jo=e.id,Qo=e.overflow,Yo=t),t=Fs(t,r.children),t.flags|=4096,t)}(e,t,l,o,r,a,n);if(s){s=o.fallback,l=t.mode,r=(a=e.child).sibling;var c={mode:"hidden",children:o.children};return 0===(1&l)&&t.child!==a?((o=t.child).childLanes=0,o.pendingProps=c,t.deletions=null):(o=Lc(a,c)).subtreeFlags=14680064&a.subtreeFlags,null!==r?s=Lc(r,s):(s=Ic(s,l,n,null)).flags|=2,s.return=t,o.return=t,o.sibling=s,t.child=o,o=s,s=t.child,l=null===(l=e.child.memoizedState)?Ds(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},s.memoizedState=l,s.childLanes=e.childLanes&~n,t.memoizedState=Is,o}return e=(s=e.child).sibling,o=Lc(s,{mode:"visible",children:o.children}),0===(1&t.mode)&&(o.lanes=n),o.return=t,o.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function Fs(e,t){return(t=Dc({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Bs(e,t,n,r){return null!==r&&vi(r),Ji(t,e.child,null,n),(e=Fs(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function qs(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Si(e.return,t,n)}function zs(e,t,n,r,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=o)}function Us(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(ws(e,t,r.children,n),0!==(2&(r=la.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!==(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&qs(e,n,t);else if(19===e.tag)qs(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Oo(la,r),0===(1&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===ca(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),zs(t,!1,o,n,i);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===ca(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}zs(t,!0,n,null,i);break;case"together":zs(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Ws(e,t){0===(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hs(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Dl|=t.lanes,0===(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Lc(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Lc(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Vs(e,t){if(!ii)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function $s(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&o.subtreeFlags,r|=14680064&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Ks(e,t,n){var r=t.pendingProps;switch(ni(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return $s(t),null;case 1:case 17:return No(t.type)&&Lo(),$s(t),null;case 3:return r=t.stateNode,ia(),Co(Po),Co(Ro),fa(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(di(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0===(256&t.flags)||(t.flags|=1024,null!==ai&&(sc(ai),ai=null))),Ns(e,t),$s(t),null;case 5:sa(t);var o=ra(na.current);if(n=t.type,null!==e&&null!=t.stateNode)Ls(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(i(166));return $s(t),null}if(e=ra(ea.current),di(t)){r=t.stateNode,n=t.type;var a=t.memoizedProps;switch(r[po]=t,r[ho]=a,e=0!==(1&t.mode),n){case"dialog":Fr("cancel",r),Fr("close",r);break;case"iframe":case"object":case"embed":Fr("load",r);break;case"video":case"audio":for(o=0;o<\/script>",e=e.removeChild(e.firstChild)):"string"===typeof r.is?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),"select"===n&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[po]=t,e[ho]=r,js(e,t,!1,!1),t.stateNode=e;e:{switch(l=be(n,r),n){case"dialog":Fr("cancel",e),Fr("close",e),o=r;break;case"iframe":case"object":case"embed":Fr("load",e),o=r;break;case"video":case"audio":for(o=0;oUl&&(t.flags|=128,r=!0,Vs(a,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ca(l))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Vs(a,!0),null===a.tail&&"hidden"===a.tailMode&&!l.alternate&&!ii)return $s(t),null}else 2*Je()-a.renderingStartTime>Ul&&1073741824!==n&&(t.flags|=128,r=!0,Vs(a,!1),t.lanes=4194304);a.isBackwards?(l.sibling=t.child,t.child=l):(null!==(n=a.last)?n.sibling=l:t.child=l,a.last=l)}return null!==a.tail?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=Je(),t.sibling=null,n=la.current,Oo(la,r?1&n|2:1&n),t):($s(t),null);case 22:case 23:return dc(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!==(1&t.mode)?0!==(1073741824&Nl)&&($s(t),6&t.subtreeFlags&&(t.flags|=8192)):$s(t),null;case 24:case 25:return null}throw Error(i(156,t.tag))}function Gs(e,t){switch(ni(t),t.tag){case 1:return No(t.type)&&Lo(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return ia(),Co(Po),Co(Ro),fa(),0!==(65536&(e=t.flags))&&0===(128&e)?(t.flags=-65537&e|128,t):null;case 5:return sa(t),null;case 13:if(Co(la),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));hi()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Co(la),null;case 4:return ia(),null;case 10:return xi(t.type._context),null;case 22:case 23:return dc(),null;default:return null}}js=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ns=function(){},Ls=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,ra(ea.current);var i,a=null;switch(n){case"input":o=G(e,o),r=G(e,r),a=[];break;case"select":o=D({},o,{value:void 0}),r=D({},r,{value:void 0}),a=[];break;case"textarea":o=re(e,o),r=re(e,r),a=[];break;default:"function"!==typeof o.onClick&&"function"===typeof r.onClick&&(e.onclick=Xr)}for(u in ye(n,r),n=null,o)if(!r.hasOwnProperty(u)&&o.hasOwnProperty(u)&&null!=o[u])if("style"===u){var l=o[u];for(i in l)l.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(s.hasOwnProperty(u)?a||(a=[]):(a=a||[]).push(u,null));for(u in r){var c=r[u];if(l=null!=o?o[u]:void 0,r.hasOwnProperty(u)&&c!==l&&(null!=c||null!=l))if("style"===u)if(l){for(i in l)!l.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&l[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(a||(a=[]),a.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,l=l?l.__html:void 0,null!=c&&l!==c&&(a=a||[]).push(u,c)):"children"===u?"string"!==typeof c&&"number"!==typeof c||(a=a||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(s.hasOwnProperty(u)?(null!=c&&"onScroll"===u&&Fr("scroll",e),a||l===c||(a=[])):(a=a||[]).push(u,c))}n&&(a=a||[]).push("style",n);var u=a;(t.updateQueue=u)&&(t.flags|=4)}},Ms=function(e,t,n,r){n!==r&&(t.flags|=4)};var Ys=!1,Js=!1,Qs="function"===typeof WeakSet?WeakSet:Set,Xs=null;function el(e,t){var n=e.ref;if(null!==n)if("function"===typeof n)try{n(null)}catch(r){Ec(e,t,r)}else n.current=null}function tl(e,t,n){try{n()}catch(r){Ec(e,t,r)}}var nl=!1;function rl(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,void 0!==i&&tl(t,n,i)}o=o.next}while(o!==r)}}function ol(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function il(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"===typeof t?t(e):t.current=e}}function al(e){var t=e.alternate;null!==t&&(e.alternate=null,al(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[po],delete t[ho],delete t[mo],delete t[go],delete t[yo])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function sl(e){return 5===e.tag||3===e.tag||4===e.tag}function ll(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||sl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function cl(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!==(n=n._reactRootContainer)&&void 0!==n||null!==t.onclick||(t.onclick=Xr));else if(4!==r&&null!==(e=e.child))for(cl(e,t,n),e=e.sibling;null!==e;)cl(e,t,n),e=e.sibling}function ul(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(ul(e,t,n),e=e.sibling;null!==e;)ul(e,t,n),e=e.sibling}var fl=null,dl=!1;function pl(e,t,n){for(n=n.child;null!==n;)hl(e,t,n),n=n.sibling}function hl(e,t,n){if(it&&"function"===typeof it.onCommitFiberUnmount)try{it.onCommitFiberUnmount(ot,n)}catch(s){}switch(n.tag){case 5:Js||el(n,t);case 6:var r=fl,o=dl;fl=null,pl(e,t,n),dl=o,null!==(fl=r)&&(dl?(e=fl,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):fl.removeChild(n.stateNode));break;case 18:null!==fl&&(dl?(e=fl,n=n.stateNode,8===e.nodeType?lo(e.parentNode,n):1===e.nodeType&&lo(e,n),zt(e)):lo(fl,n.stateNode));break;case 4:r=fl,o=dl,fl=n.stateNode.containerInfo,dl=!0,pl(e,t,n),fl=r,dl=o;break;case 0:case 11:case 14:case 15:if(!Js&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,void 0!==a&&(0!==(2&i)||0!==(4&i))&&tl(n,t,a),o=o.next}while(o!==r)}pl(e,t,n);break;case 1:if(!Js&&(el(n,t),"function"===typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){Ec(n,t,s)}pl(e,t,n);break;case 21:pl(e,t,n);break;case 22:1&n.mode?(Js=(r=Js)||null!==n.memoizedState,pl(e,t,n),Js=r):pl(e,t,n);break;default:pl(e,t,n)}}function vl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Qs),t.forEach((function(t){var r=Rc.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function ml(e,t){var n=t.deletions;if(null!==n)for(var r=0;ro&&(o=s),r&=~a}if(r=o,10<(r=(120>(r=Je()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*El(r/1960))-r)){e.timeoutHandle=ro(kc.bind(null,e,ql,Wl),r);break}kc(e,ql,Wl);break;default:throw Error(i(329))}}}return oc(e,Je()),e.callbackNode===n?ic.bind(null,e):null}function ac(e,t){var n=Bl;return e.current.memoizedState.isDehydrated&&(pc(e,t).flags|=256),2!==(e=gc(e,t))&&(t=ql,ql=n,null!==t&&sc(t)),e}function sc(e){null===ql?ql=e:ql.push.apply(ql,e)}function lc(e,t){for(t&=~Fl,t&=~Zl,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0e?16:e,null===Gl)var r=!1;else{if(e=Gl,Gl=null,Yl=0,0!==(6&Rl))throw Error(i(331));var o=Rl;for(Rl|=4,Xs=e.current;null!==Xs;){var a=Xs,s=a.child;if(0!==(16&Xs.flags)){var l=a.deletions;if(null!==l){for(var c=0;cJe()-zl?pc(e,0):Fl|=n),oc(e,t)}function Oc(e,t){0===t&&(0===(1&e.mode)?t=1:(t=ut,0===(130023424&(ut<<=1))&&(ut=4194304)));var n=tc();null!==(e=Pi(e,t))&&(gt(e,t,n),oc(e,n))}function Tc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Oc(e,n)}function Rc(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(i(314))}null!==r&&r.delete(t),Oc(e,n)}function Pc(e,t){return $e(e,t)}function Ac(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function jc(e,t,n,r){return new Ac(e,t,n,r)}function Nc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Lc(e,t){var n=e.alternate;return null===n?((n=jc(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Mc(e,t,n,r,o,a){var s=2;if(r=e,"function"===typeof e)Nc(e)&&(s=1);else if("string"===typeof e)s=5;else e:switch(e){case x:return Ic(n.children,o,a,t);case S:s=8,o|=8;break;case E:return(e=jc(12,n,t,2|o)).elementType=E,e.lanes=a,e;case R:return(e=jc(13,n,t,o)).elementType=R,e.lanes=a,e;case P:return(e=jc(19,n,t,o)).elementType=P,e.lanes=a,e;case N:return Dc(n,o,a,t);default:if("object"===typeof e&&null!==e)switch(e.$$typeof){case C:s=10;break e;case O:s=9;break e;case T:s=11;break e;case A:s=14;break e;case j:s=16,r=null;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=jc(s,n,t,o)).elementType=e,t.type=r,t.lanes=a,t}function Ic(e,t,n,r){return(e=jc(7,e,r,t)).lanes=n,e}function Dc(e,t,n,r){return(e=jc(22,e,r,t)).elementType=N,e.lanes=n,e.stateNode={isHidden:!1},e}function Zc(e,t,n){return(e=jc(6,e,null,t)).lanes=n,e}function Fc(e,t,n){return(t=jc(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Bc(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=mt(0),this.expirationTimes=mt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=mt(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function qc(e,t,n,r,o,i,a,s,l){return e=new Bc(e,t,n,s,l),1===t?(t=1,!0===i&&(t|=8)):t=0,i=jc(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ji(i),e}function zc(e){if(!e)return To;e:{if(ze(e=e._reactInternals)!==e||1!==e.tag)throw Error(i(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(No(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(i(171))}if(1===e.tag){var n=e.type;if(No(n))return Io(e,n,t)}return t}function Uc(e,t,n,r,o,i,a,s,l){return(e=qc(n,r,!0,e,0,i,0,s,l)).context=zc(null),n=e.current,(i=Li(r=tc(),o=nc(n))).callback=void 0!==t&&null!==t?t:null,Mi(n,i,o),e.current.lanes=o,gt(e,o,r),oc(e,r),e}function Wc(e,t,n,r){var o=t.current,i=tc(),a=nc(o);return n=zc(n),null===t.context?t.context=n:t.pendingContext=n,(t=Li(i,a)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Mi(o,t,a))&&(rc(e,o,a,i),Ii(e,o,a)),a}function Hc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Vc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n1)throw new Error("The Quill editing area can only be composed of a single React element.");if(s.default.Children.count(e.children)&&"textarea"===(null===(t=s.default.Children.only(e.children))||void 0===t?void 0:t.type))throw new Error("Quill does not support editing on a