From de24c2663d636c4a9e1d110730bb6d29a29123f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 00:45:12 +0000 Subject: [PATCH] Deploy to GitHub pages --- .nojekyll | 0 404.html | 24 +++ CNAME | 1 + assets/app.BBcJeYfC.js | 7 + .../chunks/@localSearchIndexroot.K-NVedZf.js | 1 + assets/chunks/VPLocalSearchBox.zgD-hVAD.js | 13 ++ assets/chunks/framework.4aTu-Nia.js | 17 ++ assets/chunks/theme.D9XVjfBS.js | 7 + assets/index.md.BDhab17L.js | 1 + assets/index.md.BDhab17L.lean.js | 1 + assets/instructions.md.qmaZDzzN.js | 1 + assets/instructions.md.qmaZDzzN.lean.js | 1 + .../inter-italic-cyrillic-ext.5XJwZIOp.woff2 | Bin 0 -> 28332 bytes assets/inter-italic-cyrillic.D6csxwjC.woff2 | Bin 0 -> 17824 bytes assets/inter-italic-greek-ext.CHOfFY1k.woff2 | Bin 0 -> 12188 bytes assets/inter-italic-greek.9J96vYpw.woff2 | Bin 0 -> 23264 bytes assets/inter-italic-latin-ext.BGcWXLrn.woff2 | Bin 0 -> 63552 bytes assets/inter-italic-latin.DbsTr1gm.woff2 | Bin 0 -> 46048 bytes assets/inter-italic-vietnamese.DHNAd7Wr.woff2 | Bin 0 -> 8784 bytes .../inter-roman-cyrillic-ext.DxP3Awbn.woff2 | Bin 0 -> 26600 bytes assets/inter-roman-cyrillic.CMhn1ESj.woff2 | Bin 0 -> 16780 bytes assets/inter-roman-greek-ext.D0mI3NpI.woff2 | Bin 0 -> 11808 bytes assets/inter-roman-greek.JvnBZ4YD.woff2 | Bin 0 -> 21776 bytes assets/inter-roman-latin-ext.ZlYT4o7i.woff2 | Bin 0 -> 59608 bytes assets/inter-roman-latin.Bu8hRsVA.woff2 | Bin 0 -> 42464 bytes assets/inter-roman-vietnamese.ClpjcLMQ.woff2 | Bin 0 -> 8492 bytes assets/language_common_json5.md.DxQ9Ke5l.js | 31 +++ .../language_common_json5.md.DxQ9Ke5l.lean.js | 1 + ..._common_variable-case-types.md.CPGmPoSY.js | 13 ++ ...on_variable-case-types.md.CPGmPoSY.lean.js | 1 + ...nguage_css_code-style-guide.md.Cna-gLBK.js | 55 ++++++ ...e_css_code-style-guide.md.Cna-gLBK.lean.js | 1 + ...ter_change-app-display-name.md.B1SMmu75.js | 19 ++ ...hange-app-display-name.md.B1SMmu75.lean.js | 1 + ...utter-library-flutter-icons.md.Cu-vffq8.js | 6 + ...-library-flutter-icons.md.Cu-vffq8.lean.js | 1 + ...pend-on-referenced-packages.md.DaC5IWKA.js | 22 +++ ...on-referenced-packages.md.DaC5IWKA.lean.js | 1 + ...r-row-column-main-axis-size.md.DCpTPXxC.js | 55 ++++++ ...-column-main-axis-size.md.DCpTPXxC.lean.js | 1 + ...ter_load-external-json-file.md.CdavlPVL.js | 36 ++++ ...oad-external-json-file.md.CdavlPVL.lean.js | 1 + ...ter_upgrade-flutter-version.md.Dxwe3XH4.js | 8 + ...pgrade-flutter-version.md.Dxwe3XH4.lean.js | 1 + ...dart_flutter_widget-inkwell.md.DnXGMLk_.js | 27 +++ ...flutter_widget-inkwell.md.DnXGMLk_.lean.js | 1 + ...uage_dart_naming-convention.md.SnPQkW0Y.js | 29 +++ ...dart_naming-convention.md.SnPQkW0Y.lean.js | 1 + ...uage_html5_code-style-guide.md.B9ClEv1d.js | 64 +++++++ ...html5_code-style-guide.md.B9ClEv1d.lean.js | 1 + ...script_alert-prompt-confirm.md.DHWH9Al2.js | 1 + ...t_alert-prompt-confirm.md.DHWH9Al2.lean.js | 1 + ...ript_clone-object-type-data.md.BohrPaUF.js | 26 +++ ...clone-object-type-data.md.BohrPaUF.lean.js | 1 + ...javascript_code-style-guide.md.6PRH9U8E.js | 150 +++++++++++++++ ...cript_code-style-guide.md.6PRH9U8E.lean.js | 1 + ...anguage_javascript_comments.md.BjcGSz1M.js | 15 ++ ...ge_javascript_comments.md.BjcGSz1M.lean.js | 1 + ...language_javascript_console.md.UWC0JsKA.js | 32 ++++ ...age_javascript_console.md.UWC0JsKA.lean.js | 1 + ...nullish-coalescing-operator.md.D3a4aDBZ.js | 9 + ...sh-coalescing-operator.md.D3a4aDBZ.lean.js | 1 + ...ript_es11-optional-chaining.md.nvSRIUCq.js | 29 +++ ...es11-optional-chaining.md.nvSRIUCq.lean.js | 1 + ...e_javascript_es5-use-strict.md.DHPHRI2V.js | 16 ++ ...ascript_es5-use-strict.md.DHPHRI2V.lean.js | 1 + ...script_es6-symbol-data-type.md.DHG3vAp7.js | 27 +++ ...t_es6-symbol-data-type.md.DHG3vAp7.lean.js | 1 + ...cript_es6-template-literals.md.BAD5AcpC.js | 14 ++ ..._es6-template-literals.md.BAD5AcpC.lean.js | 1 + ...n_complete-delete-data-file.md.D7sKRu4r.js | 13 ++ ...plete-delete-data-file.md.D7sKRu4r.lean.js | 1 + ...ctron_electron-handle-crash.md.CitAc_sG.js | 7 + ..._electron-handle-crash.md.CitAc_sG.lean.js | 1 + ...ron_unpack-asar-file-format.md.SedKHK-z.js | 5 + ...npack-asar-file-format.md.SedKHK-z.lean.js | 1 + ...-eslint-no-inferrable-types.md.YuQEY5GU.js | 11 ++ ...nt-no-inferrable-types.md.YuQEY5GU.lean.js | 1 + ...ascript_library_using-clasp.md.xZBJScD1.js | 11 ++ ...pt_library_using-clasp.md.xZBJScD1.lean.js | 1 + ..._javascript_method-chaining.md.Dn_lKFgS.js | 39 ++++ ...script_method-chaining.md.Dn_lKFgS.lean.js | 1 + .../language_javascript_switch.md.DR7-5tO-.js | 90 +++++++++ ...uage_javascript_switch.md.DR7-5tO-.lean.js | 1 + ...ernary-conditional-operator.md.Br-QFQJa.js | 4 + ...y-conditional-operator.md.Br-QFQJa.lean.js | 1 + ...ascript_variable-type-check.md.CgMSVv0Q.js | 13 ++ ...pt_variable-type-check.md.CgMSVv0Q.lean.js | 1 + ...script_positive-number-type.md.B5PjuLfw.js | 1 + ...t_positive-number-type.md.B5PjuLfw.lean.js | 1 + ...l-all-for-current-directory.md.BIjGWw29.js | 13 ++ ...-for-current-directory.md.BIjGWw29.lean.js | 1 + ...c_yubico-piv-tool-reset-all.md.BB1ICp79.js | 8 + ...ico-piv-tool-reset-all.md.BB1ICp79.lean.js | 1 + ...mmon_create-large-size-file.md.wCP1wJm9.js | 1 + ...create-large-size-file.md.wCP1wJm9.lean.js | 1 + ...-explorer-from-command-line.md.BLCZDIEx.js | 1 + ...orer-from-command-line.md.BLCZDIEx.lean.js | 1 + ..._linux_cd-argument-examples.md.jRsOjHzO.js | 1 + ...x_cd-argument-examples.md.jRsOjHzO.lean.js | 1 + ...onnection-configuration-ftp.md.B6osrkoJ.js | 1 + ...tion-configuration-ftp.md.B6osrkoJ.lean.js | 1 + ...ection-configuration-telnet.md.DJ1EmQW3.js | 24 +++ ...n-configuration-telnet.md.DJ1EmQW3.lean.js | 1 + ...nnection-configuration-xrdp.md.oGX5mEvA.js | 10 + ...ion-configuration-xrdp.md.oGX5mEvA.lean.js | 1 + assets/os_linux_firewall.md.CjNw_F_H.js | 14 ++ assets/os_linux_firewall.md.CjNw_F_H.lean.js | 1 + ..._linux_install-snap-package.md.BDJzu7Wh.js | 18 ++ ...x_install-snap-package.md.BDJzu7Wh.lean.js | 1 + ...x_install-zsh-and-oh-my-zsh.md.BzEl7cj0.js | 1 + ...tall-zsh-and-oh-my-zsh.md.BzEl7cj0.lean.js | 1 + .../os_linux_linux-multipass.md.C5Ou1_9I.js | 10 + ..._linux_linux-multipass.md.C5Ou1_9I.lean.js | 1 + ...s_linux_ls-file-type-string.md.ClBI3LoU.js | 8 + ...ux_ls-file-type-string.md.ClBI3LoU.lean.js | 1 + ...os_linux_sshd-tcp-keepalive.md.ljkSrJVv.js | 1 + ...nux_sshd-tcp-keepalive.md.ljkSrJVv.lean.js | 1 + ...er-for-sqlite-save-password.md.C-z3uKbH.js | 7 + ...r-sqlite-save-password.md.C-z3uKbH.lean.js | 1 + assets/style.Dmrovd0U.css | 1 + favicon.ico | Bin 0 -> 103112 bytes hashmap.json | 1 + index.html | 27 +++ instructions.html | 27 +++ language/common/json5.html | 57 ++++++ language/common/variable-case-types.html | 39 ++++ language/css/code-style-guide.html | 81 ++++++++ .../dart/flutter/change-app-display-name.html | 45 +++++ .../flutter-library-flutter-icons.html | 32 ++++ ...er-lint-depend-on-referenced-packages.html | 48 +++++ .../flutter-row-column-main-axis-size.html | 81 ++++++++ .../dart/flutter/load-external-json-file.html | 62 ++++++ .../dart/flutter/upgrade-flutter-version.html | 34 ++++ language/dart/flutter/widget-inkwell.html | 53 ++++++ language/dart/naming-convention.html | 55 ++++++ language/html5/code-style-guide.html | 90 +++++++++ language/javascript/alert-prompt-confirm.html | 33 ++++ .../javascript/clone-object-type-data.html | 52 ++++++ language/javascript/code-style-guide.html | 176 ++++++++++++++++++ language/javascript/comments.html | 41 ++++ language/javascript/console.html | 58 ++++++ .../es11-nullish-coalescing-operator.html | 35 ++++ .../javascript/es11-optional-chaining.html | 55 ++++++ language/javascript/es5-use-strict.html | 42 +++++ language/javascript/es6-symbol-data-type.html | 53 ++++++ .../javascript/es6-template-literals.html | 40 ++++ .../electron/complete-delete-data-file.html | 39 ++++ .../electron/electron-handle-crash.html | 33 ++++ .../electron/unpack-asar-file-format.html | 31 +++ ...typescript-eslint-no-inferrable-types.html | 37 ++++ language/javascript/library/using-clasp.html | 37 ++++ language/javascript/method-chaining.html | 65 +++++++ language/javascript/switch.html | 116 ++++++++++++ .../ternary-conditional-operator.html | 30 +++ language/javascript/variable-type-check.html | 39 ++++ language/typescript/positive-number-type.html | 33 ++++ logo-16.png | Bin 0 -> 616 bytes logo-32.png | Bin 0 -> 1398 bytes ...sh-git-pull-all-for-current-directory.html | 39 ++++ misc/yubico-piv-tool-reset-all.html | 34 ++++ os/common/create-large-size-file.html | 27 +++ .../open-in-explorer-from-command-line.html | 27 +++ os/linux/cd-argument-examples.html | 27 +++ os/linux/connection-configuration-ftp.html | 27 +++ os/linux/connection-configuration-telnet.html | 50 +++++ os/linux/connection-configuration-xrdp.html | 36 ++++ os/linux/firewall.html | 40 ++++ os/linux/install-snap-package.html | 44 +++++ os/linux/install-zsh-and-oh-my-zsh.html | 33 ++++ os/linux/linux-multipass.html | 36 ++++ os/linux/ls-file-type-string.html | 34 ++++ os/linux/sshd-tcp-keepalive.html | 29 +++ sitemap.xml | 1 + .../db-browser-for-sqlite-save-password.html | 33 ++++ study.png | Bin 0 -> 14697 bytes 176 files changed, 3412 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 CNAME create mode 100644 assets/app.BBcJeYfC.js create mode 100644 assets/chunks/@localSearchIndexroot.K-NVedZf.js create mode 100644 assets/chunks/VPLocalSearchBox.zgD-hVAD.js create mode 100644 assets/chunks/framework.4aTu-Nia.js create mode 100644 assets/chunks/theme.D9XVjfBS.js create mode 100644 assets/index.md.BDhab17L.js create mode 100644 assets/index.md.BDhab17L.lean.js create mode 100644 assets/instructions.md.qmaZDzzN.js create mode 100644 assets/instructions.md.qmaZDzzN.lean.js create mode 100644 assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 create mode 100644 assets/inter-italic-cyrillic.D6csxwjC.woff2 create mode 100644 assets/inter-italic-greek-ext.CHOfFY1k.woff2 create mode 100644 assets/inter-italic-greek.9J96vYpw.woff2 create mode 100644 assets/inter-italic-latin-ext.BGcWXLrn.woff2 create mode 100644 assets/inter-italic-latin.DbsTr1gm.woff2 create mode 100644 assets/inter-italic-vietnamese.DHNAd7Wr.woff2 create mode 100644 assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 create mode 100644 assets/inter-roman-cyrillic.CMhn1ESj.woff2 create mode 100644 assets/inter-roman-greek-ext.D0mI3NpI.woff2 create mode 100644 assets/inter-roman-greek.JvnBZ4YD.woff2 create mode 100644 assets/inter-roman-latin-ext.ZlYT4o7i.woff2 create mode 100644 assets/inter-roman-latin.Bu8hRsVA.woff2 create mode 100644 assets/inter-roman-vietnamese.ClpjcLMQ.woff2 create mode 100644 assets/language_common_json5.md.DxQ9Ke5l.js create mode 100644 assets/language_common_json5.md.DxQ9Ke5l.lean.js create mode 100644 assets/language_common_variable-case-types.md.CPGmPoSY.js create mode 100644 assets/language_common_variable-case-types.md.CPGmPoSY.lean.js create mode 100644 assets/language_css_code-style-guide.md.Cna-gLBK.js create mode 100644 assets/language_css_code-style-guide.md.Cna-gLBK.lean.js create mode 100644 assets/language_dart_flutter_change-app-display-name.md.B1SMmu75.js create mode 100644 assets/language_dart_flutter_change-app-display-name.md.B1SMmu75.lean.js create mode 100644 assets/language_dart_flutter_flutter-library-flutter-icons.md.Cu-vffq8.js create mode 100644 assets/language_dart_flutter_flutter-library-flutter-icons.md.Cu-vffq8.lean.js create mode 100644 assets/language_dart_flutter_flutter-lint-depend-on-referenced-packages.md.DaC5IWKA.js create mode 100644 assets/language_dart_flutter_flutter-lint-depend-on-referenced-packages.md.DaC5IWKA.lean.js create mode 100644 assets/language_dart_flutter_flutter-row-column-main-axis-size.md.DCpTPXxC.js create mode 100644 assets/language_dart_flutter_flutter-row-column-main-axis-size.md.DCpTPXxC.lean.js create mode 100644 assets/language_dart_flutter_load-external-json-file.md.CdavlPVL.js create mode 100644 assets/language_dart_flutter_load-external-json-file.md.CdavlPVL.lean.js create mode 100644 assets/language_dart_flutter_upgrade-flutter-version.md.Dxwe3XH4.js create mode 100644 assets/language_dart_flutter_upgrade-flutter-version.md.Dxwe3XH4.lean.js create mode 100644 assets/language_dart_flutter_widget-inkwell.md.DnXGMLk_.js create mode 100644 assets/language_dart_flutter_widget-inkwell.md.DnXGMLk_.lean.js create mode 100644 assets/language_dart_naming-convention.md.SnPQkW0Y.js create mode 100644 assets/language_dart_naming-convention.md.SnPQkW0Y.lean.js create mode 100644 assets/language_html5_code-style-guide.md.B9ClEv1d.js create mode 100644 assets/language_html5_code-style-guide.md.B9ClEv1d.lean.js create mode 100644 assets/language_javascript_alert-prompt-confirm.md.DHWH9Al2.js create mode 100644 assets/language_javascript_alert-prompt-confirm.md.DHWH9Al2.lean.js create mode 100644 assets/language_javascript_clone-object-type-data.md.BohrPaUF.js create mode 100644 assets/language_javascript_clone-object-type-data.md.BohrPaUF.lean.js create mode 100644 assets/language_javascript_code-style-guide.md.6PRH9U8E.js create mode 100644 assets/language_javascript_code-style-guide.md.6PRH9U8E.lean.js create mode 100644 assets/language_javascript_comments.md.BjcGSz1M.js create mode 100644 assets/language_javascript_comments.md.BjcGSz1M.lean.js create mode 100644 assets/language_javascript_console.md.UWC0JsKA.js create mode 100644 assets/language_javascript_console.md.UWC0JsKA.lean.js create mode 100644 assets/language_javascript_es11-nullish-coalescing-operator.md.D3a4aDBZ.js create mode 100644 assets/language_javascript_es11-nullish-coalescing-operator.md.D3a4aDBZ.lean.js create mode 100644 assets/language_javascript_es11-optional-chaining.md.nvSRIUCq.js create mode 100644 assets/language_javascript_es11-optional-chaining.md.nvSRIUCq.lean.js create mode 100644 assets/language_javascript_es5-use-strict.md.DHPHRI2V.js create mode 100644 assets/language_javascript_es5-use-strict.md.DHPHRI2V.lean.js create mode 100644 assets/language_javascript_es6-symbol-data-type.md.DHG3vAp7.js create mode 100644 assets/language_javascript_es6-symbol-data-type.md.DHG3vAp7.lean.js create mode 100644 assets/language_javascript_es6-template-literals.md.BAD5AcpC.js create mode 100644 assets/language_javascript_es6-template-literals.md.BAD5AcpC.lean.js create mode 100644 assets/language_javascript_framework_electron_complete-delete-data-file.md.D7sKRu4r.js create mode 100644 assets/language_javascript_framework_electron_complete-delete-data-file.md.D7sKRu4r.lean.js create mode 100644 assets/language_javascript_framework_electron_electron-handle-crash.md.CitAc_sG.js create mode 100644 assets/language_javascript_framework_electron_electron-handle-crash.md.CitAc_sG.lean.js create mode 100644 assets/language_javascript_framework_electron_unpack-asar-file-format.md.SedKHK-z.js create mode 100644 assets/language_javascript_framework_electron_unpack-asar-file-format.md.SedKHK-z.lean.js create mode 100644 assets/language_javascript_library_eslint_typescript-eslint-no-inferrable-types.md.YuQEY5GU.js create mode 100644 assets/language_javascript_library_eslint_typescript-eslint-no-inferrable-types.md.YuQEY5GU.lean.js create mode 100644 assets/language_javascript_library_using-clasp.md.xZBJScD1.js create mode 100644 assets/language_javascript_library_using-clasp.md.xZBJScD1.lean.js create mode 100644 assets/language_javascript_method-chaining.md.Dn_lKFgS.js create mode 100644 assets/language_javascript_method-chaining.md.Dn_lKFgS.lean.js create mode 100644 assets/language_javascript_switch.md.DR7-5tO-.js create mode 100644 assets/language_javascript_switch.md.DR7-5tO-.lean.js create mode 100644 assets/language_javascript_ternary-conditional-operator.md.Br-QFQJa.js create mode 100644 assets/language_javascript_ternary-conditional-operator.md.Br-QFQJa.lean.js create mode 100644 assets/language_javascript_variable-type-check.md.CgMSVv0Q.js create mode 100644 assets/language_javascript_variable-type-check.md.CgMSVv0Q.lean.js create mode 100644 assets/language_typescript_positive-number-type.md.B5PjuLfw.js create mode 100644 assets/language_typescript_positive-number-type.md.B5PjuLfw.lean.js create mode 100644 assets/misc_scripts_bash-git-pull-all-for-current-directory.md.BIjGWw29.js create mode 100644 assets/misc_scripts_bash-git-pull-all-for-current-directory.md.BIjGWw29.lean.js create mode 100644 assets/misc_yubico-piv-tool-reset-all.md.BB1ICp79.js create mode 100644 assets/misc_yubico-piv-tool-reset-all.md.BB1ICp79.lean.js create mode 100644 assets/os_common_create-large-size-file.md.wCP1wJm9.js create mode 100644 assets/os_common_create-large-size-file.md.wCP1wJm9.lean.js create mode 100644 assets/os_common_open-in-explorer-from-command-line.md.BLCZDIEx.js create mode 100644 assets/os_common_open-in-explorer-from-command-line.md.BLCZDIEx.lean.js create mode 100644 assets/os_linux_cd-argument-examples.md.jRsOjHzO.js create mode 100644 assets/os_linux_cd-argument-examples.md.jRsOjHzO.lean.js create mode 100644 assets/os_linux_connection-configuration-ftp.md.B6osrkoJ.js create mode 100644 assets/os_linux_connection-configuration-ftp.md.B6osrkoJ.lean.js create mode 100644 assets/os_linux_connection-configuration-telnet.md.DJ1EmQW3.js create mode 100644 assets/os_linux_connection-configuration-telnet.md.DJ1EmQW3.lean.js create mode 100644 assets/os_linux_connection-configuration-xrdp.md.oGX5mEvA.js create mode 100644 assets/os_linux_connection-configuration-xrdp.md.oGX5mEvA.lean.js create mode 100644 assets/os_linux_firewall.md.CjNw_F_H.js create mode 100644 assets/os_linux_firewall.md.CjNw_F_H.lean.js create mode 100644 assets/os_linux_install-snap-package.md.BDJzu7Wh.js create mode 100644 assets/os_linux_install-snap-package.md.BDJzu7Wh.lean.js create mode 100644 assets/os_linux_install-zsh-and-oh-my-zsh.md.BzEl7cj0.js create mode 100644 assets/os_linux_install-zsh-and-oh-my-zsh.md.BzEl7cj0.lean.js create mode 100644 assets/os_linux_linux-multipass.md.C5Ou1_9I.js create mode 100644 assets/os_linux_linux-multipass.md.C5Ou1_9I.lean.js create mode 100644 assets/os_linux_ls-file-type-string.md.ClBI3LoU.js create mode 100644 assets/os_linux_ls-file-type-string.md.ClBI3LoU.lean.js create mode 100644 assets/os_linux_sshd-tcp-keepalive.md.ljkSrJVv.js create mode 100644 assets/os_linux_sshd-tcp-keepalive.md.ljkSrJVv.lean.js create mode 100644 assets/software_db-browser-for-sqlite-save-password.md.C-z3uKbH.js create mode 100644 assets/software_db-browser-for-sqlite-save-password.md.C-z3uKbH.lean.js create mode 100644 assets/style.Dmrovd0U.css create mode 100644 favicon.ico create mode 100644 hashmap.json create mode 100644 index.html create mode 100644 instructions.html create mode 100644 language/common/json5.html create mode 100644 language/common/variable-case-types.html create mode 100644 language/css/code-style-guide.html create mode 100644 language/dart/flutter/change-app-display-name.html create mode 100644 language/dart/flutter/flutter-library-flutter-icons.html create mode 100644 language/dart/flutter/flutter-lint-depend-on-referenced-packages.html create mode 100644 language/dart/flutter/flutter-row-column-main-axis-size.html create mode 100644 language/dart/flutter/load-external-json-file.html create mode 100644 language/dart/flutter/upgrade-flutter-version.html create mode 100644 language/dart/flutter/widget-inkwell.html create mode 100644 language/dart/naming-convention.html create mode 100644 language/html5/code-style-guide.html create mode 100644 language/javascript/alert-prompt-confirm.html create mode 100644 language/javascript/clone-object-type-data.html create mode 100644 language/javascript/code-style-guide.html create mode 100644 language/javascript/comments.html create mode 100644 language/javascript/console.html create mode 100644 language/javascript/es11-nullish-coalescing-operator.html create mode 100644 language/javascript/es11-optional-chaining.html create mode 100644 language/javascript/es5-use-strict.html create mode 100644 language/javascript/es6-symbol-data-type.html create mode 100644 language/javascript/es6-template-literals.html create mode 100644 language/javascript/framework/electron/complete-delete-data-file.html create mode 100644 language/javascript/framework/electron/electron-handle-crash.html create mode 100644 language/javascript/framework/electron/unpack-asar-file-format.html create mode 100644 language/javascript/library/eslint/typescript-eslint-no-inferrable-types.html create mode 100644 language/javascript/library/using-clasp.html create mode 100644 language/javascript/method-chaining.html create mode 100644 language/javascript/switch.html create mode 100644 language/javascript/ternary-conditional-operator.html create mode 100644 language/javascript/variable-type-check.html create mode 100644 language/typescript/positive-number-type.html create mode 100644 logo-16.png create mode 100644 logo-32.png create mode 100644 misc/scripts/bash-git-pull-all-for-current-directory.html create mode 100644 misc/yubico-piv-tool-reset-all.html create mode 100644 os/common/create-large-size-file.html create mode 100644 os/common/open-in-explorer-from-command-line.html create mode 100644 os/linux/cd-argument-examples.html create mode 100644 os/linux/connection-configuration-ftp.html create mode 100644 os/linux/connection-configuration-telnet.html create mode 100644 os/linux/connection-configuration-xrdp.html create mode 100644 os/linux/firewall.html create mode 100644 os/linux/install-snap-package.html create mode 100644 os/linux/install-zsh-and-oh-my-zsh.html create mode 100644 os/linux/linux-multipass.html create mode 100644 os/linux/ls-file-type-string.html create mode 100644 os/linux/sshd-tcp-keepalive.html create mode 100644 sitemap.xml create mode 100644 software/db-browser-for-sqlite-save-password.html create mode 100644 study.png diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..57ec8a92 --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ + + + + + + 404 | TIL + + + + + + + + + + + + + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..7c836b8b --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +til.jooy2.com \ No newline at end of file diff --git a/assets/app.BBcJeYfC.js b/assets/app.BBcJeYfC.js new file mode 100644 index 00000000..66caac08 --- /dev/null +++ b/assets/app.BBcJeYfC.js @@ -0,0 +1,7 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +import{j as o,a5 as p,a6 as u,a7 as l,a8 as c,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,Y as P,d as _,u as v,l as y,z as C,af as E,ag as b,ah as w,ai as R}from"./chunks/framework.4aTu-Nia.js";import{t as S}from"./chunks/theme.D9XVjfBS.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&E(),b(),w(),s.setup&&s.setup(),()=>R(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=L(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function L(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),__vite__mapDeps([]))),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/assets/chunks/@localSearchIndexroot.K-NVedZf.js b/assets/chunks/@localSearchIndexroot.K-NVedZf.js new file mode 100644 index 00000000..87eae553 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.K-NVedZf.js @@ -0,0 +1 @@ +const t='{"documentCount":226,"nextId":226,"documentIds":{"0":"/instructions#소개","1":"/language/common/json5#json5-파일-확장자","2":"/language/common/variable-case-types#변수-이름-명명-시-케이스-타입","3":"/language/common/variable-case-types#카멜-케이스-camel-case","4":"/language/common/variable-case-types#파스칼-케이스-pascal-case","5":"/language/common/variable-case-types#스네이크-케이스-snake-case","6":"/language/common/variable-case-types#케밥-케이스-kebab-case","7":"/language/common/variable-case-types#헝가리안-표기법-hungarian-notation","8":"/language/css/code-style-guide#css3-code-style-guide","9":"/language/css/code-style-guide#css","10":"/language/css/code-style-guide#속성과-속성-사이-속성과-값-사이에-공백을-붙인다","11":"/language/css/code-style-guide#여러-단계의-선택자일-수록-아래쪽에-배치한다","12":"/language/css/code-style-guide#필요하지-않은-경우-important를-남용하지-않는다","13":"/language/css/code-style-guide#속성-값이-0인-경우-단위를-사용하지-않는다","14":"/language/css/code-style-guide#여러-방향의-속성을-정의할-경우-특히-같은-값일-때-가능한-한줄로-축약할-수-있도록-한다","15":"/language/css/code-style-guide#역할이-겹치는-속성을-중복하여-사용하지-않는다","16":"/language/dart/flutter/change-app-display-name#flutter-앱-표시-이름-변경하기","17":"/language/dart/flutter/change-app-display-name#android","18":"/language/dart/flutter/change-app-display-name#ios","19":"/language/dart/flutter/flutter-library-flutter-icons#flutter-flutter-icons-라이브러리","20":"/language/dart/flutter/flutter-library-flutter-icons#설치","21":"/language/dart/flutter/flutter-library-flutter-icons#troubleshooting","22":"/language/dart/flutter/flutter-lint-depend-on-referenced-packages#flutter-lint-depend-on-referenced-packages","23":"/language/dart/flutter/flutter-row-column-main-axis-size#flutter-row-column-위젯의-mainaxissize-파라미터","24":"/language/dart/flutter/flutter-row-column-main-axis-size#row-너비-의-wrap-content-minimum-width-적용","25":"/language/dart/flutter/flutter-row-column-main-axis-size#row-너비-의-match-parent-maximum-width-적용","26":"/language/dart/flutter/flutter-row-column-main-axis-size#column-높이-의-wrap-content-minimum-height-적용","27":"/language/dart/flutter/flutter-row-column-main-axis-size#column-높이-의-match-parent-maximum-height-적용","28":"/language/dart/flutter/flutter-row-column-main-axis-size#wrap을-사용하여-너비와-높이를-최소로-적용","29":"/language/dart/flutter/flutter-row-column-main-axis-size#container-height-속성을-사용하여-너비와-높이를-최대로-적용","30":"/language/dart/flutter/upgrade-flutter-version#동일한-프로젝트에서-flutter-버전-업그레이드","31":"/language/dart/flutter/upgrade-flutter-version#자동-업그레이드","32":"/language/dart/flutter/upgrade-flutter-version#수동-업그레이드-다운그레이드","33":"/language/dart/flutter/upgrade-flutter-version#flutter-3-x","34":"/language/dart/flutter/upgrade-flutter-version#flutter-2-x","35":"/language/dart/flutter/load-external-json-file#flutter-외부-json-파일-가져오기","36":"/language/dart/naming-convention#dart-네이밍-컨벤션-dart-naming-convention","37":"/language/dart/naming-convention#폴더-이름과-파일-이름은-스네이크-케이스-snake-case-를-사용한다","38":"/language/dart/naming-convention#폴더명은-복수형을-사용하며-파일명은-가급적-단수형을-사용한다","39":"/language/dart/naming-convention#변수-이름은-카멜-케이스-camelcase-를-사용한다","40":"/language/dart/naming-convention#가급적-변수가-private일-때만-언더스코어-를-사용한다","41":"/language/dart/naming-convention#라이브러리-프리픽스값은-스네이크-케이스-snake-case-를-사용한다","42":"/language/dart/naming-convention#함수-이름은-카멜-케이스-camelcase-를-사용한다","43":"/language/dart/naming-convention#클래스-이름은-카멜-케이스-camelcase-를-사용한다","44":"/language/dart/naming-convention#가능하다면-파일-이름의-끝에-디렉토리-이름을-포함한다","45":"/language/dart/naming-convention#파일-내-단일-클래스가-존재하는-경우-파일명과-동일한-이름을-사용한다","46":"/language/html5/code-style-guide#html5-code-style-guide","47":"/language/html5/code-style-guide#html","48":"/language/html5/code-style-guide#태그는-모두-소문자로-작성한다","49":"/language/html5/code-style-guide#태그의-시작점과-끝점-속성과-속성-사이에는-공백을-넣지-않는다","50":"/language/html5/code-style-guide#태그-속성은-큰따옴표-로-구분한다","51":"/language/html5/code-style-guide#인라인-스타일을-가능한-사용하지-않는다","52":"/language/html5/code-style-guide#script-태그는-body-하단에-두는-것을-권장한다","53":"/language/html5/code-style-guide#heading-태그에서-h1은-한번만-사용한다","54":"/language/html5/code-style-guide#heading은-높은-순서대로-의미있게-사용해야-하며-내용-콘텐츠에는-사용하지-않는다","55":"/language/html5/code-style-guide#리스트나-목록을-태그로-표현할-때-개행을-활용한다","56":"/language/html5/code-style-guide#이벤트-처리-명령은-script-태그로-빼는-것이-좋다","57":"/language/dart/flutter/widget-inkwell#inkwell-위젯","58":"/language/javascript/clone-object-type-data#객체-타입의-데이터-복제","59":"/language/javascript/clone-object-type-data#structuredclone-사용-권장","60":"/language/javascript/clone-object-type-data#lodash-clonedeep-사용","61":"/language/javascript/clone-object-type-data#clone-모듈-사용","62":"/language/javascript/alert-prompt-confirm#alert-prompt-confirm","63":"/language/javascript/alert-prompt-confirm#alert","64":"/language/javascript/alert-prompt-confirm#prompt","65":"/language/javascript/alert-prompt-confirm#confirm","66":"/language/javascript/code-style-guide#javascript-code-style-guide","67":"/language/javascript/code-style-guide#javascript-es6","68":"/language/javascript/code-style-guide#var-대신-const와-let을-사용한다","69":"/language/javascript/code-style-guide#삼항연산자에-function을-사용하지-않는다","70":"/language/javascript/code-style-guide#중첩된-삼항연산자를-가급적-지양하고-if문으로-대체한다","71":"/language/javascript/code-style-guide#arrow-function의-인자가-1개일-때-괄호를-넣지-않는다","72":"/language/javascript/code-style-guide#리턴만-존재하는-arrow-function은-한줄로-축약한다","73":"/language/javascript/code-style-guide#많은-단계의-callback은-async와-await으로-대체한다","74":"/language/javascript/code-style-guide#javascript","75":"/language/javascript/code-style-guide#string은-작은따옴표로-표시하는-것이-좋다","76":"/language/javascript/code-style-guide#object의-길이-체크는-object-keys를-사용한다","77":"/language/javascript/code-style-guide#object의-속성과-값이-동일한-이름일-경우-단축문을-사용한다","78":"/language/javascript/code-style-guide#object의-단축-속성-단축되지-않은-속성-순서로-균일하게-배치한다","79":"/language/javascript/code-style-guide#변수-할당-시-null-값을-대체할-값을-지정할-때-if문-대신-or-기호나-nullish-를-활용한다","80":"/language/javascript/code-style-guide#for문에서-length를-사용할-때-조건식에는-캐시된-값을-사용한다","81":"/language/javascript/code-style-guide#리턴할-때-한번만-사용되는-변수는-가급적-사용하지-않는다","82":"/language/javascript/code-style-guide#null과-undefined는-false값으로-대체할-수-있다","83":"/language/javascript/code-style-guide#모호한-부울연산은-괄호로-구분한다","84":"/language/javascript/code-style-guide#switch문에서-default는-하단에-배치한다","85":"/language/javascript/code-style-guide#비교-연산자는-자료형을-확인할-수-있도록-동등-연산자-대신-일치-연산자-를-사용한다","86":"/language/javascript/code-style-guide#accessor는-get-set을-활용한-이름으로-지정한다","87":"/language/javascript/code-style-guide#긴-메소드-체이닝-함수는-여러줄로-표시하고-인덴트를-활용한다","88":"/language/javascript/code-style-guide#중첩되는-여러줄의-코드는-의미있는-묶음일-경우-한줄-주석으로-작성하지-않는다","89":"/language/javascript/code-style-guide#추가-작성-또는-수정이-필요한-내용은-작업-주석을-사용한다","90":"/language/javascript/code-style-guide#alert-confirm은-가능한-배제하고-로깅은-console을-사용한다","91":"/language/javascript/code-style-guide#console-log에-string과-object를-효율적으로-표시하는-방법","92":"/language/javascript/code-style-guide#prettier","93":"/language/javascript/code-style-guide#if와-else가-있을-경우-중괄호를-혼용하거나-한줄로-작성하지-않는다","94":"/language/javascript/code-style-guide#if문이-종료되는-중괄호는-else-앞에-붙인다","95":"/language/javascript/code-style-guide#if와-else문의-리턴값이-각각-true-false값일-경우-한줄로-축약한다","96":"/language/javascript/comments#주석-comments","97":"/language/javascript/console#console로-로깅-메시지-출력하기","98":"/language/javascript/es11-nullish-coalescing-operator#널-병합-연산자-nullish-coalescing-operator","99":"/language/javascript/es11-nullish-coalescing-operator#reference","100":"/language/javascript/es11-optional-chaining#옵셔널-체이닝-optional-chaining","101":"/language/javascript/es11-optional-chaining#reference","102":"/language/javascript/es5-use-strict#strict-mode-엄격-모드","103":"/language/javascript/es6-symbol-data-type#심볼-symbol-타입-자료형","104":"/language/javascript/es6-template-literals#템플릿-리터럴-template-literals","105":"/language/javascript/es6-template-literals#기존-방식-string-literals-의-단점","106":"/language/javascript/es6-template-literals#템플릿-리터럴-사용하기","107":"/language/javascript/framework/electron/complete-delete-data-file#electron-앱-파일-완전-삭제","108":"/language/javascript/framework/electron/complete-delete-data-file#windows","109":"/language/javascript/framework/electron/complete-delete-data-file#linux","110":"/language/javascript/framework/electron/complete-delete-data-file#macos","111":"/language/javascript/framework/electron/electron-handle-crash#electron-에러로-인한-크래시-처리","112":"/language/javascript/framework/electron/electron-handle-crash#메인-프로세스-크래시-처리","113":"/language/javascript/framework/electron/electron-handle-crash#렌더러-프로세스-크래시-처리","114":"/language/javascript/framework/electron/unpack-asar-file-format#asar-파일-언팩","115":"/language/javascript/library/eslint/typescript-eslint-no-inferrable-types#typescript-eslint-no-inferrable-types","116":"/language/javascript/library/using-clasp#clasp","117":"/language/javascript/library/using-clasp#설치","118":"/language/javascript/library/using-clasp#사용법","119":"/language/javascript/method-chaining#메소드-체이닝","120":"/language/javascript/switch#switch문","121":"/language/javascript/ternary-conditional-operator#삼항연산자","122":"/language/javascript/variable-type-check#javascript-데이터-타입-검증","123":"/language/javascript/variable-type-check#동치-비교","124":"/language/javascript/variable-type-check#typeof-연산자","125":"/language/javascript/variable-type-check#instanceof-연산자","126":"/language/typescript/positive-number-type#typescript-positive-number-type","127":"/misc/scripts/bash-git-pull-all-for-current-directory#현재-디렉토리의-모든-하위-디렉토리에-대해-git-pull을-수행","128":"/misc/yubico-piv-tool-reset-all#yubikey-하드웨어-토큰-초기화","129":"/misc/yubico-piv-tool-reset-all#토큰-초기화-이후-pin-puk-변경하기","130":"/misc/yubico-piv-tool-reset-all#pin-변경","131":"/misc/yubico-piv-tool-reset-all#puk-변경","132":"/os/common/create-large-size-file#더미-데이터로-채워진-대용량-파일-만들기","133":"/os/common/create-large-size-file#windows","134":"/os/common/create-large-size-file#사용-방법","135":"/os/common/create-large-size-file#사용-예시","136":"/os/common/create-large-size-file#linux","137":"/os/common/create-large-size-file#사용-방법-1","138":"/os/common/create-large-size-file#사용-예시-1","139":"/os/common/open-in-explorer-from-command-line#커맨드-라인-명령어로-파일-탐색기에서-경로-열기","140":"/os/common/open-in-explorer-from-command-line#windows","141":"/os/common/open-in-explorer-from-command-line#macos","142":"/os/common/open-in-explorer-from-command-line#linux","143":"/os/linux/cd-argument-examples#리눅스-cd-명령어-인자값-예시","144":"/os/linux/connection-configuration-ftp#ftp-연결-설정-vsftpd","145":"/os/linux/connection-configuration-ftp#vsftpd-설치","146":"/os/linux/connection-configuration-ftp#yum-dnf-계열","147":"/os/linux/connection-configuration-ftp#apt-계열","148":"/os/linux/connection-configuration-ftp#vsftpd-설정","149":"/os/linux/connection-configuration-ftp#centos-redhat-계열","150":"/os/linux/connection-configuration-ftp#ubuntu-debian-계열","151":"/os/linux/connection-configuration-ftp#vsftpd-conf","152":"/os/linux/connection-configuration-ftp#익명-사용자의-사용자-접근-여부-yes-no","153":"/os/linux/connection-configuration-ftp#익명-사용자의-홈-디렉토리-설정","154":"/os/linux/connection-configuration-ftp#익명-사용자의-업로드-가능-여부","155":"/os/linux/connection-configuration-ftp#익명-사용자의-파일-생성-시-기본-권한","156":"/os/linux/connection-configuration-ftp#익명-사용자의-폴더-생성-가능-여부","157":"/os/linux/connection-configuration-ftp#로컬-사용자의-접근-여부-yes-no","158":"/os/linux/connection-configuration-ftp#파일-쓰기-허용-여부-yes-no","159":"/os/linux/connection-configuration-ftp#패시브-모드를-활성화-할지-여부-yes-no","160":"/os/linux/connection-configuration-ftp#패시브-모드의-최소-포트","161":"/os/linux/connection-configuration-ftp#패시브-모드의-최대-포트","162":"/os/linux/connection-configuration-ftp#배너-메시지","163":"/os/linux/connection-configuration-ftp#방화벽-허용","164":"/os/linux/connection-configuration-ftp#iptables","165":"/os/linux/connection-configuration-ftp#ufw","166":"/os/linux/connection-configuration-ftp#firewalld","167":"/os/linux/connection-configuration-ftp#권한-설정","168":"/os/linux/connection-configuration-ftp#vsftpd-서비스-시작","169":"/os/linux/connection-configuration-telnet#telnet-연결-설정-xinetd","170":"/os/linux/connection-configuration-telnet#xinetd-설치","171":"/os/linux/connection-configuration-telnet#redhat-계열-dnf","172":"/os/linux/connection-configuration-telnet#debian-계열-apt","173":"/os/linux/connection-configuration-telnet#방화벽-설정","174":"/os/linux/connection-configuration-telnet#iptables","175":"/os/linux/connection-configuration-telnet#firewalld","176":"/os/linux/connection-configuration-telnet#ufw","177":"/os/linux/connection-configuration-telnet#xinetd-설정","178":"/os/linux/connection-configuration-telnet#xinetd-서비스-시작","179":"/os/linux/connection-configuration-xrdp#xrdp-연결-설정","180":"/os/linux/connection-configuration-xrdp#방화벽-설정","181":"/os/linux/connection-configuration-xrdp#ufw-debian-ubuntu-계열","182":"/os/linux/connection-configuration-xrdp#firewalld-redhat-centos-계열","183":"/os/linux/connection-configuration-xrdp#iptables","184":"/os/linux/connection-configuration-xrdp#xrdp-패키지-설치","185":"/os/linux/connection-configuration-xrdp#debian-ubuntu-계열","186":"/os/linux/connection-configuration-xrdp#redhat-centos-계열","187":"/os/linux/connection-configuration-xrdp#xrdp-환경설정","188":"/os/linux/connection-configuration-xrdp#그래픽-데스크톱-환경-구성","189":"/os/linux/connection-configuration-xrdp#gnome-desktop-xubuntu-desktop-기본값","190":"/os/linux/connection-configuration-xrdp#xfce4","191":"/os/linux/connection-configuration-xrdp#색상-프로파일-편집","192":"/os/linux/connection-configuration-xrdp#서비스-시작-구성","193":"/os/linux/connection-configuration-xrdp#접속-방법","194":"/os/linux/firewall#리눅스-방화벽-간단-사용","195":"/os/linux/firewall#iptables","196":"/os/linux/firewall#firewalld","197":"/os/linux/firewall#ufw","198":"/os/linux/install-snap-package#리눅스-snap-설치","199":"/os/linux/install-snap-package#개요","200":"/os/linux/install-snap-package#설치","201":"/os/linux/install-snap-package#ubuntu-20-04-이상","202":"/os/linux/install-snap-package#ubuntu-18-04-이하-debian-계열","203":"/os/linux/install-snap-package#centos-6-8-redhat-계열","204":"/os/linux/install-snap-package#사용-방법","205":"/os/linux/install-snap-package#패키지-설치","206":"/os/linux/install-snap-package#패키지-삭제","207":"/os/linux/install-snap-package#패키지-업데이트","208":"/os/linux/install-snap-package#문제-해결","209":"/os/linux/install-zsh-and-oh-my-zsh#리눅스-zsh와-oh-my-zsh-설치하기","210":"/os/linux/install-zsh-and-oh-my-zsh#zsh-설치","211":"/os/linux/install-zsh-and-oh-my-zsh#ubuntu-계열","212":"/os/linux/install-zsh-and-oh-my-zsh#macos","213":"/os/linux/install-zsh-and-oh-my-zsh#설치-후-기본-셸을-zsh로-전환하기","214":"/os/linux/install-zsh-and-oh-my-zsh#oh-my-zsh-설치","215":"/os/linux/install-zsh-and-oh-my-zsh#curl-명령어로-설치","216":"/os/linux/install-zsh-and-oh-my-zsh#wget-명령어로-설치","217":"/os/linux/install-zsh-and-oh-my-zsh#설치-이후","218":"/os/linux/linux-multipass#리눅스-multipass-사용하기","219":"/os/linux/linux-multipass#multipass-기본-사용","220":"/os/linux/ls-file-type-string#리눅스-ls-명령어-내-파일-형식에-대한-문자열-표현","221":"/os/linux/sshd-tcp-keepalive#linux-sshd-tcp-keepalive","222":"/software/db-browser-for-sqlite-save-password#db-browser-for-sqlite-암호-기억하기","223":"/software/db-browser-for-sqlite-save-password#sqlcipher-3","224":"/software/db-browser-for-sqlite-save-password#sqlcipher-4","225":"/software/db-browser-for-sqlite-save-password#references"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,62],"1":[3,1,112],"2":[6,1,22],"3":[5,6,32],"4":[5,6,23],"5":[5,6,39],"6":[5,6,36],"7":[5,6,67],"8":[4,1,1],"9":[1,4,1],"10":[8,5,11],"11":[7,5,17],"12":[7,5,14],"13":[8,5,10],"14":[16,5,13],"15":[7,5,34],"16":[5,1,41],"17":[1,5,42],"18":[1,5,50],"19":[4,1,16],"20":[1,4,51],"21":[1,4,29],"22":[6,1,96],"23":[6,1,40],"24":[9,6,21],"25":[9,6,21],"26":[9,6,21],"27":[9,6,35],"28":[7,6,25],"29":[9,6,26],"30":[5,1,1],"31":[2,5,19],"32":[4,5,66],"33":[3,8,5],"34":[3,8,5],"35":[5,1,97],"36":[6,1,1],"37":[11,6,9],"38":[8,6,7],"39":[8,6,5],"40":[8,6,4],"41":[9,6,7],"42":[8,6,9],"43":[8,6,16],"44":[8,6,7],"45":[11,6,19],"46":[4,1,1],"47":[1,4,1],"48":[5,5,12],"49":[10,5,14],"50":[6,5,12],"51":[6,5,18],"52":[8,5,12],"53":[6,5,16],"54":[11,5,46],"55":[8,5,15],"56":[9,5,26],"57":[2,1,127],"58":[4,1,103],"59":[4,4,56],"60":[3,4,59],"61":[3,4,53],"62":[3,1,54],"63":[1,3,9],"64":[1,3,66],"65":[1,3,27],"66":[4,1,9],"67":[3,4,1],"68":[6,6,16],"69":[5,6,13],"70":[7,6,18],"71":[9,6,9],"72":[7,6,13],"73":[7,6,22],"74":[1,4,1],"75":[6,4,9],"76":[7,4,17],"77":[9,4,12],"78":[9,4,17],"79":[16,4,13],"80":[9,4,28],"81":[9,4,14],"82":[7,4,10],"83":[5,4,12],"84":[5,4,13],"85":[15,4,22],"86":[7,4,18],"87":[9,4,10],"88":[11,4,16],"89":[10,4,45],"90":[8,4,14],"91":[7,4,17],"92":[1,4,1],"93":[10,5,12],"94":[7,5,8],"95":[10,5,12],"96":[3,1,171],"97":[4,1,237],"98":[7,1,91],"99":[1,7,15],"100":[5,1,201],"101":[1,5,13],"102":[5,1,176],"103":[4,1,136],"104":[5,1,37],"105":[6,5,64],"106":[3,5,117],"107":[5,1,30],"108":[1,5,20],"109":[1,5,15],"110":[1,5,25],"111":[5,1,26],"112":[4,5,24],"113":[4,5,33],"114":[3,1,111],"115":[6,1,79],"116":[1,1,37],"117":[1,1,61],"118":[1,1,152],"119":[2,1,131],"120":[1,1,260],"121":[1,1,98],"122":[4,1,12],"123":[5,4,70],"124":[2,4,47],"125":[2,4,46],"126":[4,1,122],"127":[9,1,42],"128":[4,1,79],"129":[6,4,21],"130":[2,8,13],"131":[2,8,13],"132":[6,1,30],"133":[1,6,1],"134":[2,7,12],"135":[2,7,17],"136":[1,6,1],"137":[2,7,6],"138":[2,7,14],"139":[7,1,42],"140":[1,7,5],"141":[1,7,4],"142":[1,7,4],"143":[5,1,38],"144":[5,1,1],"145":[2,5,1],"146":[3,5,6],"147":[2,5,6],"148":[2,5,7],"149":[3,4,7],"150":[3,4,7],"151":[2,5,8],"152":[8,5,3],"153":[5,5,5],"154":[5,5,4],"155":[7,5,3],"156":[6,5,5],"157":[7,5,3],"158":[7,5,3],"159":[8,5,3],"160":[4,5,4],"161":[4,5,4],"162":[2,5,3],"163":[2,5,1],"164":[1,6,13],"165":[1,6,7],"166":[1,6,10],"167":[2,5,39],"168":[3,5,8],"169":[5,1,1],"170":[2,5,1],"171":[4,6,9],"172":[4,6,15],"173":[2,5,15],"174":[1,5,12],"175":[1,5,10],"176":[1,5,7],"177":[2,5,41],"178":[3,5,26],"179":[3,1,47],"180":[2,3,7],"181":[5,4,7],"182":[5,4,10],"183":[1,4,13],"184":[3,3,1],"185":[3,5,6],"186":[3,5,6],"187":[2,3,5],"188":[4,4,16],"189":[5,8,7],"190":[1,8,9],"191":[3,4,60],"192":[3,4,23],"193":[2,3,20],"194":[4,1,9],"195":[1,4,41],"196":[1,4,58],"197":[1,4,31],"198":[3,1,1],"199":[1,3,54],"200":[1,3,1],"201":[4,3,29],"202":[6,3,30],"203":[5,3,32],"204":[2,3,1],"205":[2,5,47],"206":[2,5,6],"207":[2,5,4],"208":[2,3,84],"209":[6,1,30],"210":[2,6,1],"211":[2,7,11],"212":[1,7,38],"213":[6,7,28],"214":[4,6,33],"215":[3,7,15],"216":[3,7,15],"217":[2,6,89],"218":[3,1,51],"219":[3,3,89],"220":[9,1,90],"221":[4,1,87],"222":[6,1,106],"223":[2,6,12],"224":[2,6,40],"225":[1,6,8]},"averageFieldLength":[4.477876106194688,4.163716814159293,31.58849557522125],"storedFields":{"0":{"title":"소개","titles":[]},"1":{"title":"JSON5 파일 확장자","titles":[]},"2":{"title":"변수 이름 명명 시 케이스 타입","titles":[]},"3":{"title":"카멜 케이스 (Camel Case)","titles":["변수 이름 명명 시 케이스 타입"]},"4":{"title":"파스칼 케이스 (Pascal Case)","titles":["변수 이름 명명 시 케이스 타입"]},"5":{"title":"스네이크 케이스 (Snake Case)","titles":["변수 이름 명명 시 케이스 타입"]},"6":{"title":"케밥 케이스 (Kebab Case)","titles":["변수 이름 명명 시 케이스 타입"]},"7":{"title":"헝가리안 표기법 (Hungarian Notation)","titles":["변수 이름 명명 시 케이스 타입"]},"8":{"title":"CSS3 Code Style Guide","titles":[]},"9":{"title":"CSS","titles":["CSS3 Code Style Guide"]},"10":{"title":"속성과 속성 사이, 속성과 값 사이에 공백을 붙인다.","titles":["CSS3 Code Style Guide","CSS"]},"11":{"title":"여러 단계의 선택자일 수록 아래쪽에 배치한다.","titles":["CSS3 Code Style Guide","CSS"]},"12":{"title":"필요하지 않은 경우 important를 남용하지 않는다.","titles":["CSS3 Code Style Guide","CSS"]},"13":{"title":"속성 값이 0인 경우 단위를 사용하지 않는다.","titles":["CSS3 Code Style Guide","CSS"]},"14":{"title":"여러 방향의 속성을 정의할 경우 (특히 같은 값일 때) 가능한 한줄로 축약할 수 있도록 한다.","titles":["CSS3 Code Style Guide","CSS"]},"15":{"title":"역할이 겹치는 속성을 중복하여 사용하지 않는다.","titles":["CSS3 Code Style Guide","CSS"]},"16":{"title":"Flutter 앱 표시 이름 변경하기","titles":[]},"17":{"title":"Android","titles":["Flutter 앱 표시 이름 변경하기"]},"18":{"title":"ios","titles":["Flutter 앱 표시 이름 변경하기"]},"19":{"title":"Flutter flutter_icons 라이브러리","titles":[]},"20":{"title":"설치","titles":["Flutter flutter_icons 라이브러리"]},"21":{"title":"Troubleshooting","titles":["Flutter flutter_icons 라이브러리"]},"22":{"title":"Flutter Lint depend_on_referenced_packages","titles":[]},"23":{"title":"Flutter Row, Column 위젯의 mainAxisSize 파라미터","titles":[]},"24":{"title":"Row(너비)의 wrap_content (Minimum width) 적용:","titles":["Flutter Row, Column 위젯의 mainAxisSize 파라미터"]},"25":{"title":"Row(너비)의 match_parent (Maximum width) 적용:","titles":["Flutter Row, Column 위젯의 mainAxisSize 파라미터"]},"26":{"title":"Column(높이)의 wrap_content (Minimum height) 적용:","titles":["Flutter Row, Column 위젯의 mainAxisSize 파라미터"]},"27":{"title":"Column(높이)의 match_parent (Maximum height) 적용:","titles":["Flutter Row, Column 위젯의 mainAxisSize 파라미터"]},"28":{"title":"Wrap을 사용하여 너비와 높이를 최소로 적용:","titles":["Flutter Row, Column 위젯의 mainAxisSize 파라미터"]},"29":{"title":"Container height 속성을 사용하여 너비와 높이를 최대로 적용:","titles":["Flutter Row, Column 위젯의 mainAxisSize 파라미터"]},"30":{"title":"동일한 프로젝트에서 Flutter 버전 업그레이드","titles":[]},"31":{"title":"자동 업그레이드","titles":["동일한 프로젝트에서 Flutter 버전 업그레이드"]},"32":{"title":"수동 업그레이드 & 다운그레이드","titles":["동일한 프로젝트에서 Flutter 버전 업그레이드"]},"33":{"title":"Flutter 3.x","titles":["동일한 프로젝트에서 Flutter 버전 업그레이드","수동 업그레이드 & 다운그레이드"]},"34":{"title":"Flutter 2.x","titles":["동일한 프로젝트에서 Flutter 버전 업그레이드","수동 업그레이드 & 다운그레이드"]},"35":{"title":"Flutter 외부 JSON 파일 가져오기","titles":[]},"36":{"title":"Dart 네이밍 컨벤션 (Dart Naming Convention)","titles":[]},"37":{"title":"폴더 이름과 파일 이름은 스네이크 케이스(snake_case)를 사용한다.","titles":["Dart 네이밍 컨벤션 (Dart Naming Convention)"]},"38":{"title":"폴더명은 복수형을 사용하며, 파일명은 가급적 단수형을 사용한다.","titles":["Dart 네이밍 컨벤션 (Dart Naming Convention)"]},"39":{"title":"변수 이름은 카멜 케이스(camelCase)를 사용한다.","titles":["Dart 네이밍 컨벤션 (Dart Naming Convention)"]},"40":{"title":"가급적 변수가 private일 때만 언더스코어(_)를 사용한다.","titles":["Dart 네이밍 컨벤션 (Dart Naming Convention)"]},"41":{"title":"라이브러리 프리픽스값은 스네이크 케이스(snake_case)를 사용한다.","titles":["Dart 네이밍 컨벤션 (Dart Naming Convention)"]},"42":{"title":"함수 이름은 카멜 케이스(camelCase)를 사용한다.","titles":["Dart 네이밍 컨벤션 (Dart Naming Convention)"]},"43":{"title":"클래스 이름은 카멜 케이스(camelCase)를 사용한다.","titles":["Dart 네이밍 컨벤션 (Dart Naming Convention)"]},"44":{"title":"가능하다면 파일 이름의 끝에 디렉토리 이름을 포함한다.","titles":["Dart 네이밍 컨벤션 (Dart Naming Convention)"]},"45":{"title":"파일 내 단일 클래스가 존재하는 경우 파일명과 동일한 이름을 사용한다.","titles":["Dart 네이밍 컨벤션 (Dart Naming Convention)"]},"46":{"title":"HTML5 Code Style Guide","titles":[]},"47":{"title":"HTML","titles":["HTML5 Code Style Guide"]},"48":{"title":"태그는 모두 소문자로 작성한다.","titles":["HTML5 Code Style Guide","HTML"]},"49":{"title":"태그의 시작점과 끝점, 속성과 속성 사이에는 공백을 넣지 않는다.","titles":["HTML5 Code Style Guide","HTML"]},"50":{"title":"태그 속성은 큰따옴표(“)로 구분한다.","titles":["HTML5 Code Style Guide","HTML"]},"51":{"title":"인라인 스타일을 가능한 사용하지 않는다.","titles":["HTML5 Code Style Guide","HTML"]},"52":{"title":"script 태그는 body 하단에 두는 것을 권장한다.","titles":["HTML5 Code Style Guide","HTML"]},"53":{"title":"Heading 태그에서 h1은 한번만 사용한다.","titles":["HTML5 Code Style Guide","HTML"]},"54":{"title":"Heading은 높은 순서대로, 의미있게 사용해야 하며 내용 콘텐츠에는 사용하지 않는다.","titles":["HTML5 Code Style Guide","HTML"]},"55":{"title":"리스트나 목록을 태그로 표현할 때 개행을 활용한다.","titles":["HTML5 Code Style Guide","HTML"]},"56":{"title":"이벤트 처리 명령은 script 태그로 빼는 것이 좋다.","titles":["HTML5 Code Style Guide","HTML"]},"57":{"title":"Inkwell 위젯","titles":[]},"58":{"title":"객체 타입의 데이터 복제","titles":[]},"59":{"title":"structuredClone 사용 (권장)","titles":["객체 타입의 데이터 복제"]},"60":{"title":"lodash cloneDeep 사용","titles":["객체 타입의 데이터 복제"]},"61":{"title":"clone 모듈 사용","titles":["객체 타입의 데이터 복제"]},"62":{"title":"alert, prompt, confirm","titles":[]},"63":{"title":"alert","titles":["alert, prompt, confirm"]},"64":{"title":"prompt","titles":["alert, prompt, confirm"]},"65":{"title":"confirm","titles":["alert, prompt, confirm"]},"66":{"title":"JavaScript Code Style Guide","titles":[]},"67":{"title":"JavaScript (ES6)","titles":["JavaScript Code Style Guide"]},"68":{"title":"var 대신 const와 let을 사용한다.","titles":["JavaScript Code Style Guide","JavaScript (ES6)"]},"69":{"title":"삼항연산자에 function을 사용하지 않는다.","titles":["JavaScript Code Style Guide","JavaScript (ES6)"]},"70":{"title":"중첩된 삼항연산자를 가급적 지양하고 if문으로 대체한다.","titles":["JavaScript Code Style Guide","JavaScript (ES6)"]},"71":{"title":"Arrow Function의 인자가 1개일 때 괄호를 넣지 않는다.","titles":["JavaScript Code Style Guide","JavaScript (ES6)"]},"72":{"title":"리턴만 존재하는 Arrow Function은 한줄로 축약한다.","titles":["JavaScript Code Style Guide","JavaScript (ES6)"]},"73":{"title":"많은 단계의 callback은 async와 await으로 대체한다.","titles":["JavaScript Code Style Guide","JavaScript (ES6)"]},"74":{"title":"JavaScript","titles":["JavaScript Code Style Guide"]},"75":{"title":"String은 작은따옴표로 표시하는 것이 좋다.","titles":["JavaScript Code Style Guide","JavaScript"]},"76":{"title":"Object의 길이 체크는 Object.keys를 사용한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"77":{"title":"Object의 속성과 값이 동일한 이름일 경우 단축문을 사용한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"78":{"title":"Object의 단축 속성, 단축되지 않은 속성 순서로 균일하게 배치한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"79":{"title":"변수 할당 시 null 값을 대체할 값을 지정할 때 if문 대신 OR 기호나 nullish (??)를 활용한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"80":{"title":"for문에서 length를 사용할 때 조건식에는 캐시된 값을 사용한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"81":{"title":"리턴할 때 한번만 사용되는 변수는 가급적 사용하지 않는다.","titles":["JavaScript Code Style Guide","JavaScript"]},"82":{"title":"null과 undefined는 false값으로 대체할 수 있다.","titles":["JavaScript Code Style Guide","JavaScript"]},"83":{"title":"모호한 부울연산은 괄호로 구분한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"84":{"title":"switch문에서 default는 하단에 배치한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"85":{"title":"비교 연산자는 자료형을 확인할 수 있도록 동등 연산자(==) 대신 일치 연산자(===)를 사용한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"86":{"title":"Accessor는 get, set을 활용한 이름으로 지정한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"87":{"title":"긴 메소드 체이닝 함수는 여러줄로 표시하고 인덴트를 활용한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"88":{"title":"중첩되는 여러줄의 코드는 의미있는 묶음일 경우 한줄 주석으로 작성하지 않는다.","titles":["JavaScript Code Style Guide","JavaScript"]},"89":{"title":"추가 작성 또는 수정이 필요한 내용은 작업 주석을 사용한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"90":{"title":"alert, confirm은 가능한 배제하고 로깅은 console을 사용한다.","titles":["JavaScript Code Style Guide","JavaScript"]},"91":{"title":"Console log에 String과 Object를 효율적으로 표시하는 방법","titles":["JavaScript Code Style Guide","JavaScript"]},"92":{"title":"Prettier","titles":["JavaScript Code Style Guide"]},"93":{"title":"if와 else가 있을 경우 중괄호를 혼용하거나 한줄로 작성하지 않는다.","titles":["JavaScript Code Style Guide","Prettier"]},"94":{"title":"if문이 종료되는 중괄호는 else 앞에 붙인다.","titles":["JavaScript Code Style Guide","Prettier"]},"95":{"title":"if와 else문의 리턴값이 각각 true/false값일 경우 한줄로 축약한다.","titles":["JavaScript Code Style Guide","Prettier"]},"96":{"title":"주석 (Comments)","titles":[]},"97":{"title":"console로 로깅 메시지 출력하기","titles":[]},"98":{"title":"널 병합 연산자 (Nullish coalescing operator)","titles":[]},"99":{"title":"Reference","titles":["널 병합 연산자 (Nullish coalescing operator)"]},"100":{"title":"옵셔널 체이닝 (Optional Chaining)","titles":[]},"101":{"title":"Reference","titles":["옵셔널 체이닝 (Optional Chaining)"]},"102":{"title":"Strict Mode (엄격 모드)","titles":[]},"103":{"title":"심볼 (Symbol) 타입 자료형","titles":[]},"104":{"title":"템플릿 리터럴 (Template literals)","titles":[]},"105":{"title":"기존 방식(String literals)의 단점","titles":["템플릿 리터럴 (Template literals)"]},"106":{"title":"템플릿 리터럴 사용하기","titles":["템플릿 리터럴 (Template literals)"]},"107":{"title":"Electron 앱 파일 완전 삭제","titles":[]},"108":{"title":"Windows","titles":["Electron 앱 파일 완전 삭제"]},"109":{"title":"Linux","titles":["Electron 앱 파일 완전 삭제"]},"110":{"title":"macOS","titles":["Electron 앱 파일 완전 삭제"]},"111":{"title":"Electron 에러로 인한 크래시 처리","titles":[]},"112":{"title":"메인 프로세스 크래시 처리","titles":["Electron 에러로 인한 크래시 처리"]},"113":{"title":"렌더러 프로세스 크래시 처리","titles":["Electron 에러로 인한 크래시 처리"]},"114":{"title":"asar 파일 언팩","titles":[]},"115":{"title":"@typescript-eslint/no-inferrable-types","titles":[]},"116":{"title":"Clasp","titles":[]},"117":{"title":"설치","titles":[]},"118":{"title":"사용법","titles":[]},"119":{"title":"메소드 체이닝","titles":[]},"120":{"title":"switch문","titles":[]},"121":{"title":"삼항연산자","titles":[]},"122":{"title":"JavaScript 데이터 타입 검증","titles":[]},"123":{"title":"동치 비교 (==, ===)","titles":["JavaScript 데이터 타입 검증"]},"124":{"title":"typeof 연산자","titles":["JavaScript 데이터 타입 검증"]},"125":{"title":"instanceof 연산자","titles":["JavaScript 데이터 타입 검증"]},"126":{"title":"TypeScript Positive Number Type","titles":[]},"127":{"title":"현재 디렉토리의 모든 하위 디렉토리에 대해 git pull을 수행","titles":[]},"128":{"title":"Yubikey 하드웨어 토큰 초기화","titles":[]},"129":{"title":"토큰 초기화 이후 PIN, PUK 변경하기","titles":["Yubikey 하드웨어 토큰 초기화"]},"130":{"title":"PIN 변경","titles":["Yubikey 하드웨어 토큰 초기화","토큰 초기화 이후 PIN, PUK 변경하기"]},"131":{"title":"PUK 변경","titles":["Yubikey 하드웨어 토큰 초기화","토큰 초기화 이후 PIN, PUK 변경하기"]},"132":{"title":"더미 데이터로 채워진 대용량 파일 만들기","titles":[]},"133":{"title":"Windows","titles":["더미 데이터로 채워진 대용량 파일 만들기"]},"134":{"title":"사용 방법","titles":["더미 데이터로 채워진 대용량 파일 만들기","Windows"]},"135":{"title":"사용 예시","titles":["더미 데이터로 채워진 대용량 파일 만들기","Windows"]},"136":{"title":"Linux","titles":["더미 데이터로 채워진 대용량 파일 만들기"]},"137":{"title":"사용 방법","titles":["더미 데이터로 채워진 대용량 파일 만들기","Linux"]},"138":{"title":"사용 예시","titles":["더미 데이터로 채워진 대용량 파일 만들기","Linux"]},"139":{"title":"커맨드 라인 명령어로 파일 탐색기에서 경로 열기","titles":[]},"140":{"title":"Windows","titles":["커맨드 라인 명령어로 파일 탐색기에서 경로 열기"]},"141":{"title":"macOS","titles":["커맨드 라인 명령어로 파일 탐색기에서 경로 열기"]},"142":{"title":"Linux","titles":["커맨드 라인 명령어로 파일 탐색기에서 경로 열기"]},"143":{"title":"리눅스 cd 명령어 인자값 예시","titles":[]},"144":{"title":"FTP 연결 설정 (vsftpd)","titles":[]},"145":{"title":"vsftpd 설치","titles":["FTP 연결 설정 (vsftpd)"]},"146":{"title":"yum, dnf 계열","titles":["FTP 연결 설정 (vsftpd)","vsftpd 설치"]},"147":{"title":"apt 계열","titles":["FTP 연결 설정 (vsftpd)","vsftpd 설치"]},"148":{"title":"vsftpd 설정","titles":["FTP 연결 설정 (vsftpd)"]},"149":{"title":"CentOS / RedHat 계열","titles":["FTP 연결 설정 (vsftpd)","vsftpd 설정"]},"150":{"title":"Ubuntu / Debian 계열","titles":["FTP 연결 설정 (vsftpd)","vsftpd 설정"]},"151":{"title":"vsftpd.conf","titles":["FTP 연결 설정 (vsftpd)"]},"152":{"title":"익명 사용자의 사용자 접근 여부 (yes/no)","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"153":{"title":"익명 사용자의 홈 디렉토리 설정","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"154":{"title":"익명 사용자의 업로드 가능 여부","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"155":{"title":"익명 사용자의 파일 생성 시 기본 권한","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"156":{"title":"익명 사용자의 폴더 생성 가능 여부","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"157":{"title":"로컬 사용자의 접근 여부 (yes/no)","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"158":{"title":"파일 쓰기 허용 여부 (yes/no)","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"159":{"title":"패시브 모드를 활성화 할지 여부 (yes/no)","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"160":{"title":"패시브 모드의 최소 포트","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"161":{"title":"패시브 모드의 최대 포트","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"162":{"title":"배너 메시지","titles":["FTP 연결 설정 (vsftpd)","vsftpd.conf"]},"163":{"title":"방화벽 허용","titles":["FTP 연결 설정 (vsftpd)"]},"164":{"title":"iptables","titles":["FTP 연결 설정 (vsftpd)","방화벽 허용"]},"165":{"title":"ufw","titles":["FTP 연결 설정 (vsftpd)","방화벽 허용"]},"166":{"title":"firewalld","titles":["FTP 연결 설정 (vsftpd)","방화벽 허용"]},"167":{"title":"권한 설정","titles":["FTP 연결 설정 (vsftpd)"]},"168":{"title":"vsftpd 서비스 시작","titles":["FTP 연결 설정 (vsftpd)"]},"169":{"title":"Telnet 연결 설정 (Xinetd)","titles":[]},"170":{"title":"xinetd 설치","titles":["Telnet 연결 설정 (Xinetd)"]},"171":{"title":"RedHat 계열 (dnf)","titles":["Telnet 연결 설정 (Xinetd)","xinetd 설치"]},"172":{"title":"Debian 계열 (apt)","titles":["Telnet 연결 설정 (Xinetd)","xinetd 설치"]},"173":{"title":"방화벽 설정","titles":["Telnet 연결 설정 (Xinetd)"]},"174":{"title":"iptables","titles":["Telnet 연결 설정 (Xinetd)","방화벽 설정"]},"175":{"title":"firewalld","titles":["Telnet 연결 설정 (Xinetd)","방화벽 설정"]},"176":{"title":"ufw","titles":["Telnet 연결 설정 (Xinetd)","방화벽 설정"]},"177":{"title":"Xinetd 설정","titles":["Telnet 연결 설정 (Xinetd)"]},"178":{"title":"Xinetd 서비스 시작","titles":["Telnet 연결 설정 (Xinetd)"]},"179":{"title":"Xrdp 연결 설정","titles":[]},"180":{"title":"방화벽 설정","titles":["Xrdp 연결 설정"]},"181":{"title":"ufw (Debian/Ubuntu 계열)","titles":["Xrdp 연결 설정","방화벽 설정"]},"182":{"title":"Firewalld (RedHat/CentOS 계열)","titles":["Xrdp 연결 설정","방화벽 설정"]},"183":{"title":"Iptables","titles":["Xrdp 연결 설정","방화벽 설정"]},"184":{"title":"Xrdp 패키지 설치","titles":["Xrdp 연결 설정"]},"185":{"title":"Debian / Ubuntu 계열","titles":["Xrdp 연결 설정","Xrdp 패키지 설치"]},"186":{"title":"RedHat / CentOS 계열","titles":["Xrdp 연결 설정","Xrdp 패키지 설치"]},"187":{"title":"Xrdp 환경설정","titles":["Xrdp 연결 설정"]},"188":{"title":"그래픽 데스크톱 환경 구성","titles":["Xrdp 연결 설정","Xrdp 환경설정"]},"189":{"title":"Gnome Desktop, Xubuntu Desktop (기본값)","titles":["Xrdp 연결 설정","Xrdp 환경설정","그래픽 데스크톱 환경 구성"]},"190":{"title":"Xfce4","titles":["Xrdp 연결 설정","Xrdp 환경설정","그래픽 데스크톱 환경 구성"]},"191":{"title":"색상 프로파일 편집","titles":["Xrdp 연결 설정","Xrdp 환경설정"]},"192":{"title":"서비스 시작 구성","titles":["Xrdp 연결 설정","Xrdp 환경설정"]},"193":{"title":"접속 방법","titles":["Xrdp 연결 설정"]},"194":{"title":"리눅스 방화벽 간단 사용","titles":[]},"195":{"title":"iptables","titles":["리눅스 방화벽 간단 사용"]},"196":{"title":"firewalld","titles":["리눅스 방화벽 간단 사용"]},"197":{"title":"ufw","titles":["리눅스 방화벽 간단 사용"]},"198":{"title":"리눅스 Snap 설치","titles":[]},"199":{"title":"개요","titles":["리눅스 Snap 설치"]},"200":{"title":"설치","titles":["리눅스 Snap 설치"]},"201":{"title":"Ubuntu 20.04 이상","titles":["리눅스 Snap 설치","설치"]},"202":{"title":"Ubuntu 18.04 이하 / Debian 계열","titles":["리눅스 Snap 설치","설치"]},"203":{"title":"CentOS 6 - 8 / RedHat 계열","titles":["리눅스 Snap 설치","설치"]},"204":{"title":"사용 방법","titles":["리눅스 Snap 설치"]},"205":{"title":"패키지 설치","titles":["리눅스 Snap 설치","사용 방법"]},"206":{"title":"패키지 삭제","titles":["리눅스 Snap 설치","사용 방법"]},"207":{"title":"패키지 업데이트","titles":["리눅스 Snap 설치","사용 방법"]},"208":{"title":"문제 해결","titles":["리눅스 Snap 설치"]},"209":{"title":"리눅스 Zsh와 Oh My Zsh 설치하기","titles":[]},"210":{"title":"Zsh 설치","titles":["리눅스 Zsh와 Oh My Zsh 설치하기"]},"211":{"title":"Ubuntu 계열","titles":["리눅스 Zsh와 Oh My Zsh 설치하기","Zsh 설치"]},"212":{"title":"macOS","titles":["리눅스 Zsh와 Oh My Zsh 설치하기","Zsh 설치"]},"213":{"title":"설치 후 기본 셸을 Zsh로 전환하기","titles":["리눅스 Zsh와 Oh My Zsh 설치하기","Zsh 설치"]},"214":{"title":"Oh My Zsh 설치","titles":["리눅스 Zsh와 Oh My Zsh 설치하기"]},"215":{"title":"curl 명령어로 설치","titles":["리눅스 Zsh와 Oh My Zsh 설치하기","Oh My Zsh 설치"]},"216":{"title":"wget 명령어로 설치","titles":["리눅스 Zsh와 Oh My Zsh 설치하기","Oh My Zsh 설치"]},"217":{"title":"설치 이후","titles":["리눅스 Zsh와 Oh My Zsh 설치하기"]},"218":{"title":"리눅스 Multipass 사용하기","titles":[]},"219":{"title":"Multipass 기본 사용","titles":["리눅스 Multipass 사용하기"]},"220":{"title":"리눅스 ls 명령어 내 파일 형식에 대한 문자열 표현","titles":[]},"221":{"title":"Linux sshd TCP KeepAlive","titles":[]},"222":{"title":"DB Browser for SQLite 암호 기억하기","titles":[]},"223":{"title":"SQLCipher 3","titles":["DB Browser for SQLite 암호 기억하기"]},"224":{"title":"SQLCipher 4","titles":["DB Browser for SQLite 암호 기억하기"]},"225":{"title":"References","titles":["DB Browser for SQLite 암호 기억하기"]}},"dirtCount":0,"index":[["읽을",{"2":{"224":1}}],["읽도록",{"2":{"100":1}}],["묻지",{"2":{"224":1}}],["묻는다면",{"2":{"191":1}}],["절차를",{"2":{"222":1}}],["절대",{"2":{"143":1}}],["초가",{"2":{"221":1}}],["초기화해야",{"2":{"128":1}}],["초기화",{"0":{"128":1,"129":1},"1":{"129":1,"130":2,"131":2},"2":{"128":2}}],["횟수",{"2":{"221":1}}],["네임드",{"2":{"220":1}}],["네이밍",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1}}],["물리적",{"2":{"220":2}}],["드라이버",{"2":{"220":4}}],["드라이브",{"2":{"179":1}}],["드라이브의",{"2":{"118":1}}],["장치를",{"2":{"220":2}}],["장치",{"2":{"220":4}}],["장점이",{"2":{"100":1}}],["나타내는",{"2":{"220":2}}],["나타나는",{"2":{"16":1}}],["윈도우와",{"2":{"218":1}}],["켜고",{"2":{"218":1}}],["켜야",{"2":{"213":1}}],["캐노니컬",{"2":{"218":1}}],["캐시된",{"0":{"80":1}}],["테마를",{"2":{"217":1}}],["테스트를",{"2":{"132":1,"218":1}}],["테스트",{"2":{"97":1}}],["테스트용으로",{"2":{"96":1}}],["껐다가",{"2":{"213":1}}],["별",{"2":{"222":1}}],["별다른",{"2":{"212":1}}],["별도로",{"2":{"115":2,"212":1,"218":1}}],["별도의",{"2":{"59":1,"106":1,"126":1}}],["셸을",{"0":{"213":1},"2":{"213":1}}],["셸로",{"2":{"212":1}}],["셸이다",{"2":{"209":1}}],["z",{"2":{"209":1}}],["zshrc",{"2":{"217":3}}],["zsh로",{"0":{"213":1}}],["zsh이",{"2":{"212":1}}],["zsh를",{"2":{"209":1,"211":1,"214":2,"217":1}}],["zsh에서",{"2":{"217":1}}],["zsh에",{"2":{"209":1}}],["zsh는",{"2":{"209":1}}],["zsh",{"0":{"209":1,"210":1,"214":1},"1":{"210":1,"211":2,"212":2,"213":2,"214":1,"215":2,"216":2,"217":1},"2":{"209":1,"211":1,"212":1,"213":1,"217":5}}],["zsh와",{"0":{"209":1},"1":{"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1}}],["zone=public",{"2":{"166":1,"175":1,"182":1,"196":2}}],["깨져있을",{"2":{"208":1}}],["채널명이",{"2":{"205":1}}],["채널",{"2":{"205":1}}],["채워진",{"0":{"132":1},"1":{"133":1,"134":1,"135":1,"136":1,"137":1,"138":1},"2":{"132":1}}],["필수로",{"2":{"205":1}}],["필요에",{"2":{"167":1,"178":1}}],["필요할",{"2":{"118":1,"132":1,"219":1}}],["필요가",{"2":{"115":1,"212":1}}],["필요는",{"2":{"102":1}}],["필요하다",{"2":{"100":1}}],["필요하거나",{"2":{"96":2,"218":1}}],["필요하지",{"0":{"12":1}}],["필요함",{"2":{"96":1}}],["필요한",{"0":{"89":1},"2":{"89":2,"96":1,"121":1,"151":1,"196":1}}],["필요",{"2":{"59":1,"89":1,"218":1}}],["페이지",{"2":{"199":1}}],["페이지에",{"2":{"117":1}}],["페이지에서",{"2":{"59":1}}],["손쉽게",{"2":{"199":1}}],["샌드박스",{"2":{"199":1}}],["관리자",{"2":{"211":1}}],["관리자이다",{"2":{"199":1}}],["관리해주는",{"2":{"209":1}}],["관리하려는",{"2":{"205":1}}],["관리하는",{"2":{"199":1}}],["관리할",{"2":{"199":2}}],["관련",{"2":{"191":1}}],["관련된",{"2":{"100":1}}],["64000",{"2":{"223":1}}],["64",{"2":{"220":1}}],["6",{"0":{"203":1}}],["6010",{"2":{"195":2,"196":3,"197":2}}],["6000",{"2":{"195":2,"196":2,"197":2}}],["6자",{"2":{"129":1}}],["영구적",{"2":{"195":1,"196":1}}],["영향을",{"2":{"118":1}}],["접속을",{"2":{"221":1}}],["접속에",{"2":{"196":1}}],["접속한다",{"2":{"193":1}}],["접속",{"0":{"193":1},"2":{"191":1}}],["접근할",{"2":{"167":1,"219":1}}],["접근",{"0":{"152":1,"157":1}}],["접근하여",{"2":{"100":1}}],["접근하기",{"2":{"100":1}}],["접근성",{"2":{"97":1}}],["편집한",{"2":{"217":1}}],["편집한다",{"2":{"177":1}}],["편집기로",{"2":{"191":1}}],["편집",{"0":{"191":1}}],["편집하여",{"2":{"188":1,"191":1,"217":1}}],["세션을",{"2":{"221":1}}],["세션",{"2":{"179":1}}],["세가지",{"2":{"62":1}}],["7",{"2":{"220":1}}],["711",{"2":{"167":1}}],["711로",{"2":{"167":1}}],["789",{"2":{"103":3}}],["활성화할",{"2":{"214":2}}],["활성화한다",{"2":{"202":1}}],["활성화",{"0":{"159":1}}],["활용되었으나",{"2":{"97":1}}],["활용할",{"2":{"96":1}}],["활용된다",{"2":{"96":1}}],["활용한",{"0":{"86":1}}],["활용한다면",{"2":{"119":1}}],["활용한다",{"0":{"55":1,"79":1,"87":1},"2":{"193":1}}],["활용하면",{"2":{"103":1}}],["활용하는",{"2":{"62":1}}],["활용하기도",{"2":{"7":1}}],["활용하여",{"2":{"0":1,"118":1,"179":1}}],["활용해야",{"2":{"2":1}}],["패킷을",{"2":{"221":2}}],["패시브",{"0":{"159":1,"160":1,"161":1}}],["패키징을",{"2":{"114":1}}],["패키징되는",{"2":{"114":1}}],["패키지의",{"2":{"205":1}}],["패키지관리",{"2":{"196":1}}],["패키지",{"0":{"184":1,"205":1,"206":1,"207":1},"1":{"185":1,"186":1},"2":{"114":2,"199":2,"208":2,"211":1}}],["패키지가",{"2":{"114":1,"172":1,"203":1}}],["패키지로",{"2":{"109":1}}],["패키지여도",{"2":{"22":1}}],["패키지는",{"2":{"22":1}}],["패키지를",{"2":{"20":1,"22":2,"114":1,"117":1,"199":2,"205":2,"208":1}}],["쓰기",{"0":{"158":1}}],["쓰는",{"2":{"121":1}}],["권한을",{"2":{"167":1,"191":1}}],["권한",{"0":{"155":1,"167":1}}],["권장",{"0":{"59":1},"2":{"222":1}}],["권장한다",{"0":{"52":1},"2":{"18":1,"179":1}}],["권장하고",{"2":{"120":1}}],["권장하지",{"2":{"7":1,"102":1}}],["권장하기도",{"2":{"3":1}}],["익명",{"0":{"152":1,"153":1,"154":1,"155":1,"156":1}}],["홈",{"0":{"153":1},"2":{"143":1,"167":1}}],["게정의",{"2":{"143":1}}],["운영체제별로",{"2":{"139":1}}],["탐색기에서",{"0":{"139":1},"1":{"140":1,"141":1,"142":1},"2":{"139":1}}],["탐지하여",{"2":{"102":1}}],["커맨드",{"0":{"139":1},"1":{"140":1,"141":1,"142":1},"2":{"139":1}}],["커맨드라인으로",{"2":{"199":1}}],["커맨드라인",{"2":{"97":1,"205":1,"218":1}}],["약",{"2":{"135":1,"138":1}}],["강제로",{"2":{"132":1}}],["찬",{"2":{"132":1}}],["용량으로",{"2":{"132":1}}],["용도는",{"2":{"103":1}}],["용도로",{"2":{"96":1,"97":1}}],["용도라면",{"2":{"57":1}}],["백업용",{"2":{"129":1}}],["백틱",{"2":{"106":1}}],["진행하기",{"2":{"128":1}}],["진행되었던",{"2":{"102":1}}],["토큰을",{"2":{"128":1}}],["토큰",{"0":{"128":1,"129":1},"1":{"129":1,"130":2,"131":2},"2":{"128":3}}],["토막",{"2":{"0":1}}],["돕는",{"2":{"127":1}}],["음수값인지",{"2":{"126":1}}],["링크",{"2":{"128":1,"220":2}}],["링크에서",{"2":{"218":1}}],["링크에",{"2":{"126":1}}],["링크를",{"2":{"126":1}}],["questions",{"2":{"126":1}}],["quot",{"2":{"106":2,"139":1}}],["싶은",{"2":{"126":1,"222":1}}],["양수만",{"2":{"126":1}}],["허용",{"0":{"158":1,"163":1},"1":{"164":1,"165":1,"166":1}}],["허용하고",{"2":{"126":1}}],["허용한다",{"2":{"126":1}}],["허용된다",{"2":{"102":1}}],["속하는지",{"2":{"125":1}}],["속성값은",{"2":{"103":1}}],["속성값의",{"2":{"58":1}}],["속성이",{"2":{"100":1}}],["속성에",{"2":{"100":1}}],["속성까지",{"2":{"58":1}}],["속성은",{"0":{"50":1}}],["속성의",{"2":{"15":1,"103":1}}],["속성을",{"0":{"14":1,"15":1,"29":1},"2":{"103":1,"126":1}}],["속성",{"0":{"10":1,"13":1,"49":1,"78":2},"2":{"58":3,"100":1,"102":1}}],["속성과",{"0":{"10":2,"49":1,"77":1},"2":{"103":1}}],["식에서는",{"2":{"123":1}}],["식별값을",{"2":{"103":1}}],["삼중",{"2":{"123":1}}],["삼항",{"2":{"121":1}}],["삼항연산자는",{"2":{"121":1}}],["삼항연산자로",{"2":{"121":1}}],["삼항연산자",{"0":{"121":1},"2":{"121":1}}],["삼항연산자를",{"0":{"70":1},"2":{"121":2}}],["삼항연산자에",{"0":{"69":1}}],["느슨한",{"2":{"123":1}}],["판단하게",{"2":{"123":1}}],["판단하므로",{"2":{"115":1}}],["외에",{"2":{"121":1}}],["외부에서",{"2":{"103":1}}],["외부에",{"2":{"96":1,"222":1}}],["외부",{"0":{"35":1},"2":{"103":2}}],["거짓에는",{"2":{"121":1}}],["거짓에",{"2":{"121":2}}],["거짓일",{"2":{"121":1}}],["거의",{"2":{"120":1}}],["크지는",{"2":{"121":1}}],["크래시가",{"2":{"111":3}}],["크래시",{"0":{"111":1,"112":1,"113":1},"1":{"112":1,"113":1},"2":{"112":1,"113":1}}],["차이가",{"2":{"121":1}}],["성능폭이",{"2":{"121":1}}],["성능",{"2":{"121":1}}],["성능면에서는",{"2":{"119":1}}],["먼저",{"2":{"120":1,"123":1,"128":1,"179":1,"222":1}}],["즉",{"2":{"120":1}}],["즉시",{"2":{"120":1}}],["툴은",{"2":{"120":1}}],["맨",{"2":{"120":4}}],["종료하기",{"2":{"221":1}}],["종료한다",{"2":{"120":2,"221":2}}],["종료",{"2":{"120":1}}],["종료되는",{"0":{"94":1}}],["못했을",{"2":{"221":1}}],["못한",{"2":{"120":1}}],["못할",{"2":{"6":1}}],["역할은",{"2":{"120":1}}],["역할이",{"0":{"15":1}}],["항상",{"2":{"120":1}}],["항목을",{"2":{"97":1}}],["항목이",{"2":{"97":1}}],["혼동을",{"2":{"119":1}}],["혼용하거나",{"0":{"93":1}}],["은",{"2":{"119":1,"205":1,"209":1}}],["갱신이",{"2":{"118":1}}],["갱신하려는",{"2":{"118":1}}],["좋으며",{"2":{"120":1}}],["좋지",{"2":{"119":1}}],["좋기",{"2":{"118":1}}],["좋다고",{"2":{"61":1}}],["좋다",{"0":{"56":1,"75":1},"2":{"7":1,"22":1,"96":2,"97":2,"119":1,"120":1,"121":2,"129":1}}],["연동",{"2":{"199":1}}],["연다",{"2":{"180":1}}],["연결을",{"2":{"221":1}}],["연결",{"0":{"144":1,"169":1,"179":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1},"2":{"221":1}}],["연속적으로",{"2":{"119":1}}],["연관있는",{"2":{"118":1}}],["연산에",{"2":{"104":1}}],["연산자이므로",{"2":{"124":1}}],["연산자이다",{"2":{"98":1,"125":1}}],["연산자의",{"2":{"121":1}}],["연산자를",{"2":{"98":2,"100":1}}],["연산자",{"0":{"85":2,"98":1,"124":1,"125":1},"1":{"99":1},"2":{"98":3}}],["연산자는",{"0":{"85":1},"2":{"98":1,"124":1}}],["미치지는",{"2":{"118":1}}],["미래에",{"2":{"102":1}}],["└─",{"2":{"118":1}}],["새로고침으로",{"2":{"118":1}}],["새로",{"2":{"118":1,"148":1,"177":1}}],["새로운",{"2":{"58":1,"116":1,"130":1,"131":1}}],["요구할",{"2":{"117":1}}],["요소들이",{"2":{"105":1}}],["액세스를",{"2":{"117":1}}],["액세스할",{"2":{"102":1}}],["앞으로",{"2":{"117":1}}],["앞에는",{"2":{"121":1}}],["앞에",{"0":{"94":1},"2":{"7":1,"106":1,"124":1,"125":1}}],["데스크톱",{"0":{"188":1},"1":{"189":1,"190":1},"2":{"179":2,"188":1}}],["데스크톱에",{"2":{"117":1}}],["데이터베이스",{"2":{"222":4,"224":2}}],["데이터로",{"0":{"132":1},"1":{"133":1,"134":1,"135":1,"136":1,"137":1,"138":1},"2":{"132":1}}],["데이터형의",{"2":{"126":1}}],["데이터형이",{"2":{"123":1}}],["데이터형에",{"2":{"97":1,"123":1}}],["데이터형을",{"2":{"7":1,"124":1}}],["데이터를",{"2":{"97":1,"98":1}}],["데이터의",{"2":{"97":1}}],["데이터가",{"2":{"64":1,"108":1,"128":1}}],["데이터는",{"2":{"1":1,"58":1}}],["데이터",{"0":{"58":1,"122":1},"1":{"59":1,"60":1,"61":1,"123":1,"124":1,"125":1},"2":{"1":5,"7":4,"58":3,"107":1,"122":1,"126":2}}],["으로",{"2":{"117":1,"195":1,"196":1}}],["계열에서는",{"2":{"202":1}}],["계열에서",{"2":{"167":1}}],["계열",{"0":{"146":1,"147":1,"149":1,"150":1,"171":1,"172":1,"181":1,"182":1,"185":1,"186":1,"202":1,"203":1,"211":1},"2":{"196":1,"197":1}}],["계정에서",{"2":{"205":1}}],["계정",{"2":{"117":2}}],["계정으로",{"2":{"117":1}}],["계산한다",{"2":{"80":1}}],["런타임에서",{"2":{"117":1}}],["업데이트",{"0":{"207":1}}],["업데이트하도록",{"2":{"127":1}}],["업데이트할",{"2":{"116":1}}],["업로드",{"0":{"154":1}}],["업로드하거나",{"2":{"199":1}}],["업로드하지",{"2":{"118":2}}],["업로드하는",{"2":{"118":1}}],["업로드하여",{"2":{"118":1}}],["업로드한다고",{"2":{"118":1}}],["업로드될",{"2":{"118":1}}],["업그레이드",{"0":{"30":1,"31":1,"32":1},"1":{"31":1,"32":1,"33":2,"34":2},"2":{"32":1}}],["끌",{"2":{"115":1,"218":1}}],["규칙을",{"2":{"195":1,"196":1,"197":1}}],["규칙의",{"2":{"118":1}}],["규칙",{"2":{"115":1}}],["된다",{"2":{"114":1,"115":1,"119":1,"120":1,"123":1,"222":1}}],["된다면",{"2":{"102":1}}],["처음",{"2":{"114":1,"120":2,"222":1}}],["처리도",{"2":{"143":2}}],["처리나",{"2":{"132":1}}],["처리해야",{"2":{"120":1}}],["처리를",{"2":{"100":2}}],["처리가",{"2":{"100":1}}],["처리에서",{"2":{"98":1}}],["처리하는",{"2":{"96":1}}],["처리할",{"2":{"57":1,"112":1,"113":1}}],["처리",{"0":{"56":1,"111":1,"112":1,"113":1},"1":{"112":1,"113":1},"2":{"96":1,"106":1}}],["과",{"2":{"123":1,"126":1}}],["과정을",{"2":{"218":1}}],["과정",{"2":{"114":1}}],["과거에는",{"2":{"97":1}}],["풀어볼",{"2":{"114":1}}],["풀어보려면",{"2":{"114":1}}],["볼",{"2":{"114":1}}],["압축",{"2":{"114":3}}],["압축되어",{"2":{"114":1}}],["암호일",{"2":{"224":1}}],["암호는",{"2":{"222":1}}],["암호가",{"2":{"222":1}}],["암호를",{"2":{"222":1,"224":1}}],["암호",{"0":{"222":1},"1":{"223":1,"224":1,"225":1},"2":{"130":1,"131":1,"222":1}}],["암호화",{"2":{"114":1,"222":2}}],["암묵적으로",{"2":{"102":1}}],["존재하면",{"2":{"118":1}}],["존재하는",{"0":{"45":1,"72":1},"2":{"61":1,"127":1,"203":1}}],["존재한다",{"2":{"114":1}}],["죽으면서",{"2":{"111":1}}],["렌더러",{"0":{"113":1},"2":{"111":1,"113":1}}],["애플리케이션",{"2":{"111":1}}],["~",{"2":{"109":2,"110":1,"143":2,"217":2}}],["현재",{"0":{"127":1},"2":{"107":1,"114":1,"118":1,"127":1,"139":1,"143":2,"213":1}}],["삭제된다",{"2":{"108":1}}],["삭제한다",{"2":{"107":1,"108":1}}],["삭제",{"0":{"107":1,"206":1},"1":{"108":1,"109":1,"110":1},"2":{"108":1}}],["삭제해주는",{"2":{"97":1}}],["좌측",{"2":{"123":1}}],["좌측에",{"2":{"106":1}}],["좌측의",{"2":{"98":2}}],["탭",{"2":{"106":1}}],["엔터로",{"2":{"106":1}}],["엔터를",{"2":{"64":1}}],["따른다",{"2":{"128":1,"222":1}}],["따옴표",{"2":{"106":2}}],["따라",{"2":{"96":1,"111":1,"114":1,"120":1,"167":1,"173":1,"178":1,"222":1}}],["따라서",{"2":{"58":1,"100":1,"103":1,"117":1,"119":2,"120":1,"212":1}}],["헷갈릴",{"2":{"105":1}}],["뿐만",{"2":{"105":1}}],["뿐만이",{"2":{"102":1}}],["너무",{"2":{"105":1}}],["너비는",{"2":{"29":1}}],["너비",{"0":{"24":1,"25":1},"2":{"23":3}}],["너비와",{"0":{"28":1,"29":1},"2":{"23":1,"28":1}}],["되어있기도",{"2":{"199":1}}],["되어있다면",{"2":{"128":1}}],["되어야",{"2":{"125":1}}],["되여",{"2":{"123":1}}],["되지만",{"2":{"120":1}}],["되었음이",{"2":{"120":1}}],["되었다",{"2":{"104":1}}],["되는",{"2":{"118":1}}],["되면",{"2":{"102":1,"105":1,"123":1}}],["불리게",{"2":{"104":1}}],["불러온",{"2":{"35":1}}],["말이지만",{"2":{"104":1}}],["템플릿",{"0":{"104":1,"106":1},"1":{"105":1,"106":1},"2":{"104":5,"106":4,"126":1}}],["둘",{"2":{"103":1}}],["둘러보시거나",{"2":{"0":1}}],["만든다",{"2":{"128":1,"177":1}}],["만들기",{"0":{"132":1},"1":{"133":1,"134":1,"135":1,"136":1,"137":1,"138":1}}],["만들",{"2":{"121":1,"132":1}}],["만들어야",{"2":{"132":1}}],["만들어진다",{"2":{"114":1}}],["만들어지고",{"2":{"114":1}}],["만들어지는",{"2":{"114":1}}],["만들어",{"2":{"103":1}}],["만약",{"2":{"57":1,"64":1,"126":1,"167":1,"212":1}}],["누군가에",{"2":{"103":1}}],["누르면",{"2":{"65":2}}],["누르기",{"2":{"57":1}}],["덮어씌우는",{"2":{"103":1}}],["겹치면서",{"2":{"103":1}}],["겹치는",{"0":{"15":1}}],["무시할",{"2":{"118":1}}],["무관한",{"2":{"118":1}}],["무의미해진다",{"2":{"103":1}}],["무거운",{"2":{"60":1}}],["고유한",{"2":{"103":4}}],["고찰이",{"2":{"0":1}}],["심볼릭",{"2":{"220":2}}],["심볼의",{"2":{"103":1}}],["심볼은",{"2":{"103":1}}],["심볼",{"0":{"103":1},"2":{"103":2}}],["민감한",{"2":{"102":1}}],["번",{"2":{"102":1}}],["번거로울",{"2":{"100":1}}],["블록",{"2":{"220":2}}],["블록문",{"2":{"102":1}}],["블로그",{"2":{"0":1}}],["향상된",{"2":{"102":1}}],["함께",{"2":{"209":1}}],["함으로서",{"2":{"102":1}}],["함수형",{"2":{"103":1}}],["함수에서",{"2":{"120":1}}],["함수에",{"2":{"102":1}}],["함수에만",{"2":{"102":1}}],["함수를",{"2":{"102":1,"121":1}}],["함수는",{"0":{"87":1}}],["함수가",{"2":{"62":1,"100":1}}],["함수의",{"2":{"60":1,"102":1}}],["함수",{"0":{"42":1},"2":{"120":1,"124":1}}],["엄격한",{"2":{"123":1}}],["엄격",{"0":{"102":1},"2":{"102":6}}],["엄격하게",{"2":{"85":1}}],["호스트",{"2":{"193":1}}],["호불호가",{"2":{"121":1}}],["호출할",{"2":{"119":1}}],["호출",{"2":{"100":1}}],["호환",{"2":{"59":1}}],["훨씬",{"2":{"100":1}}],["길게",{"2":{"120":1}}],["길어지게",{"2":{"105":1}}],["길어질",{"2":{"100":1}}],["길이",{"0":{"76":1}}],["찾으려는",{"2":{"100":1}}],["찾아",{"2":{"17":1,"18":1}}],["찾아보실",{"2":{"0":1}}],["찾아볼",{"2":{"0":1}}],["어떤",{"2":{"125":1}}],["어떻게",{"2":{"100":1}}],["어떠한",{"2":{"57":1}}],["얻을",{"2":{"100":1}}],["얻는",{"2":{"27":1}}],["순차적으로",{"2":{"100":1,"120":1}}],["순서대로",{"0":{"54":1}}],["순서로",{"0":{"78":1},"2":{"15":1,"54":1}}],["헤더의",{"2":{"100":1}}],["ⓒ",{"2":{"100":1}}],["옵셔널",{"0":{"100":1},"1":{"101":1},"2":{"100":4}}],["옵션은",{"2":{"222":1}}],["옵션을",{"2":{"114":1}}],["옵션",{"2":{"97":1,"222":1}}],["적어진다",{"2":{"98":1}}],["적용하려면",{"2":{"214":1}}],["적용하여",{"2":{"97":1}}],["적용한다",{"2":{"28":1,"29":1,"217":1}}],["적용",{"0":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"221":1}}],["적용할",{"2":{"20":1,"102":1}}],["적용된다",{"2":{"16":1,"102":2,"213":1}}],["실제",{"2":{"205":1}}],["실제로",{"2":{"114":1}}],["실수를",{"2":{"102":1}}],["실수가",{"2":{"98":1}}],["실행한",{"2":{"213":1}}],["실행한다",{"2":{"16":1,"31":1,"32":1,"120":1,"128":1,"205":1,"214":1}}],["실행해야",{"2":{"128":1,"214":1}}],["실행해주는",{"2":{"114":1}}],["실행식이",{"2":{"124":1}}],["실행된다",{"2":{"120":2}}],["실행되지",{"2":{"120":2}}],["실행되는",{"2":{"96":1}}],["실행이",{"2":{"120":1}}],["실행하면",{"2":{"114":1}}],["실행하여",{"2":{"20":1,"117":1,"217":1}}],["실행문은",{"2":{"120":1}}],["실행문도",{"2":{"120":1}}],["실행문",{"2":{"120":1}}],["실행문이",{"2":{"120":2}}],["실행문이지만",{"2":{"120":1}}],["실행문에서",{"2":{"102":1}}],["실행문을",{"2":{"102":1,"120":3}}],["실행",{"2":{"102":1,"107":1,"220":2}}],["실행을",{"2":{"96":1,"120":1}}],["실행될",{"2":{"80":1,"120":1}}],["잡아낼",{"2":{"98":1}}],["우분투를",{"2":{"218":1}}],["우측",{"2":{"123":1}}],["우측의",{"2":{"98":3}}],["우수하기",{"2":{"7":1}}],["피연산자가",{"2":{"98":1}}],["피연산자",{"2":{"98":1,"124":1,"125":2}}],["논리",{"2":{"98":2}}],["병합해야",{"2":{"105":1}}],["병합할",{"2":{"105":1}}],["병합",{"0":{"98":1},"1":{"99":1},"2":{"98":3}}],["널",{"0":{"98":1},"1":{"99":1},"2":{"98":3}}],["치환",{"2":{"97":2}}],["글자색을",{"2":{"97":1}}],["넘겨",{"2":{"97":1}}],["색상",{"0":{"191":1},"2":{"97":1,"191":1}}],["색상을",{"2":{"57":2}}],["통신을",{"2":{"220":2}}],["통한",{"2":{"139":1}}],["통해",{"2":{"97":2,"103":1,"117":1,"120":1,"139":1,"178":1,"196":1,"218":2}}],["통일성있게",{"2":{"2":1}}],["출력되고",{"2":{"120":1}}],["출력되는",{"2":{"97":1}}],["출력될",{"2":{"102":1}}],["출력한다",{"2":{"100":1,"102":1}}],["출력해준다",{"2":{"97":1}}],["출력하고자",{"2":{"97":1}}],["출력하지",{"2":{"97":1}}],["출력하기",{"0":{"97":1}}],["출력할",{"2":{"97":3}}],["출력을",{"2":{"97":2}}],["콘솔과",{"2":{"97":1}}],["콘솔에서는",{"2":{"97":2}}],["콘솔에",{"2":{"97":2,"102":1}}],["콘솔",{"2":{"97":4,"102":1,"120":1}}],["콘솔이나",{"2":{"97":1}}],["콘텐츠에는",{"0":{"54":1}}],["콘텐츠의",{"2":{"23":1}}],["탑재된",{"2":{"97":1,"116":1}}],["매번",{"2":{"100":1,"119":1,"222":1}}],["매시지를",{"2":{"97":1}}],["매",{"2":{"96":1}}],["알",{"2":{"167":1}}],["알아서",{"2":{"96":1,"115":1}}],["알기",{"2":{"96":1}}],["컴파일러에",{"2":{"96":1}}],["노출되기",{"2":{"96":1}}],["노드를",{"2":{"57":1}}],["및",{"2":{"96":1,"120":1,"167":1,"203":1,"209":1}}],["점점",{"2":{"100":1}}],["점이나",{"2":{"96":1}}],["점은",{"2":{"35":1,"100":1,"106":1,"120":1,"125":1,"126":1}}],["공개되지",{"2":{"222":1}}],["공식적인",{"2":{"96":1}}],["공백",{"2":{"205":1}}],["공백으로",{"2":{"96":1}}],["공백이나",{"2":{"106":1}}],["공백이",{"2":{"18":1,"89":1,"96":1,"139":1}}],["공백을",{"0":{"10":1,"49":1}}],["생성한",{"2":{"222":1}}],["생성한다",{"2":{"96":1,"222":1}}],["생성되었다면",{"2":{"219":1}}],["생성되어",{"2":{"118":1}}],["생성해서",{"2":{"148":1}}],["생성해주는",{"2":{"57":1}}],["생성하여",{"2":{"118":1}}],["생성하려면",{"2":{"118":1,"219":1}}],["생성된다",{"2":{"118":2}}],["생성할",{"2":{"116":1}}],["생성",{"0":{"155":1,"156":1},"2":{"114":1,"135":1,"138":1}}],["잠시",{"2":{"96":1}}],["쉬운",{"2":{"96":1}}],["목적이",{"2":{"97":1}}],["목적으로",{"2":{"96":1}}],["목록을",{"0":{"55":1}}],["목록에",{"2":{"22":1,"96":1}}],["남긴다",{"2":{"96":1}}],["남용하지",{"0":{"12":1}}],["와일드카드와",{"2":{"143":1}}],["와일드카드",{"2":{"143":1}}],["와",{"2":{"96":1,"98":1,"106":2,"107":1}}],["뒤에",{"2":{"96":1,"222":1}}],["뒤에는",{"2":{"89":1}}],["효율적으로",{"0":{"91":1}}],["효과가",{"2":{"57":2}}],["효과를",{"2":{"57":3}}],["효과와",{"2":{"57":2}}],["배포가",{"2":{"218":1}}],["배포하는",{"2":{"218":1}}],["배포중인",{"2":{"205":1}}],["배포판",{"2":{"218":1}}],["배포판에서는",{"2":{"199":1}}],["배포판에서",{"2":{"179":1,"195":1,"196":1,"197":1}}],["배포판별로",{"2":{"173":1}}],["배너",{"0":{"162":1}}],["배치하는",{"2":{"120":1}}],["배치한다",{"0":{"11":1,"78":1,"84":1}}],["배열의",{"2":{"119":1}}],["배열이나",{"2":{"97":1}}],["배경색이나",{"2":{"97":1}}],["배제하고",{"0":{"90":1}}],["콜론",{"2":{"89":1}}],["완전",{"0":{"107":1},"1":{"108":1,"109":1,"110":1}}],["완전하지",{"2":{"89":1}}],["완료",{"2":{"120":1}}],["완료되지",{"2":{"89":1,"96":1}}],["완료된",{"2":{"60":1}}],["완료한",{"2":{"32":1}}],["재시작",{"2":{"192":1,"221":1}}],["재시작해야",{"2":{"178":1,"191":1}}],["재현하기",{"2":{"132":1}}],["재작성이",{"2":{"96":1}}],["재작성",{"2":{"89":1}}],["재할당하여도",{"2":{"58":1}}],["묶음일",{"0":{"88":1}}],["체크가",{"2":{"126":1}}],["체크는",{"0":{"76":1}}],["체이닝에",{"2":{"119":1}}],["체이닝을",{"2":{"100":1,"119":2}}],["체이닝이",{"2":{"100":1}}],["체이닝은",{"2":{"100":2,"119":1}}],["체이닝",{"0":{"87":1,"100":1,"119":1},"1":{"101":1},"2":{"119":1}}],["긴급할",{"2":{"128":1}}],["긴",{"0":{"87":1},"2":{"120":1}}],["숫자를",{"2":{"126":1}}],["숫자",{"2":{"85":1}}],["괄호로",{"0":{"83":1}}],["괄호를",{"0":{"71":1},"2":{"121":1}}],["4를",{"2":{"222":1}}],["4096",{"2":{"220":3,"224":1}}],["4~",{"2":{"217":1}}],["49",{"2":{"208":1}}],["45",{"2":{"191":1}}],["456을",{"2":{"103":1}}],["456",{"2":{"103":5}}],["4개의",{"2":{"120":1}}],["4",{"0":{"224":1},"2":{"80":3,"120":1,"125":1,"220":2}}],["||",{"2":{"79":1,"83":2,"98":6}}],["균일하게",{"0":{"78":1}}],["작업한",{"2":{"118":1}}],["작업하고",{"2":{"116":1}}],["작업",{"0":{"89":1},"2":{"89":1,"179":1}}],["작은따옴표로",{"0":{"75":1}}],["작성해야",{"2":{"100":1}}],["작성해야하는",{"2":{"89":1}}],["작성이나",{"2":{"96":1}}],["작성하기",{"2":{"121":1}}],["작성하는",{"2":{"96":1,"102":1,"119":1,"120":1}}],["작성하면",{"2":{"96":1}}],["작성하지",{"0":{"88":1,"93":1}}],["작성된",{"2":{"96":1}}],["작성에",{"2":{"60":1}}],["작성",{"0":{"89":1},"2":{"54":1,"66":1}}],["작성한다",{"0":{"48":1}}],["작성할",{"2":{"1":1,"15":1,"102":1,"104":1,"119":2,"120":1,"121":1}}],["리다이렉션",{"2":{"179":1}}],["리눅스에서",{"2":{"179":1}}],["리눅스",{"0":{"143":1,"194":1,"198":1,"209":1,"218":1,"220":1},"1":{"195":1,"196":1,"197":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"219":1},"2":{"173":1,"179":2,"194":1,"195":1,"196":1,"197":1,"199":1,"218":2,"221":1}}],["리포지토리를",{"2":{"127":1}}],["리터럴을",{"2":{"126":1}}],["리터럴에서는",{"2":{"106":1}}],["리터럴이",{"2":{"106":1}}],["리터럴의",{"2":{"105":1,"106":1}}],["리터럴로는",{"2":{"106":1}}],["리터럴로",{"2":{"104":1}}],["리터럴은",{"2":{"104":2}}],["리터럴",{"0":{"104":1,"106":1},"1":{"105":1,"106":1},"2":{"106":1}}],["리팩토링이",{"2":{"89":1}}],["리턴한다",{"2":{"123":1,"124":1}}],["리턴하기",{"2":{"119":1}}],["리턴된",{"2":{"119":1}}],["리턴되어야",{"2":{"119":1}}],["리턴되는",{"2":{"98":1}}],["리턴시켜준다",{"2":{"100":1}}],["리턴값은",{"2":{"124":1}}],["리턴값",{"2":{"121":1}}],["리턴값을",{"2":{"100":1}}],["리턴값이",{"0":{"95":1}}],["리턴할",{"0":{"81":1}}],["리턴만",{"0":{"72":1}}],["리스트에",{"2":{"100":1}}],["리스트에서",{"2":{"16":1}}],["리스트를",{"2":{"96":1}}],["리스트나",{"0":{"55":1}}],["합당한",{"2":{"66":1}}],["합이",{"2":{"23":1}}],["`$",{"2":{"126":1}}],["`hello",{"2":{"106":1}}],["`",{"2":{"106":5,"126":3}}],["`false`",{"2":{"65":1}}],["`true`",{"2":{"65":1}}],["눌러서",{"2":{"64":1}}],["입력해야",{"2":{"205":1}}],["입력하지",{"2":{"222":1}}],["입력하여",{"2":{"193":1}}],["입력하면",{"2":{"64":1}}],["입력란에",{"2":{"64":1}}],["입력한",{"2":{"64":1}}],["입력한다",{"2":{"20":1,"114":1,"139":1}}],["빈",{"2":{"64":2}}],["취소",{"2":{"65":1}}],["취소하는",{"2":{"64":1}}],["취소하였을",{"2":{"64":1}}],["취소를",{"2":{"64":1,"65":1}}],["취소는",{"2":{"64":1}}],["취급합니다",{"2":{"0":1}}],["돌아온다",{"2":{"64":1}}],["반영되려면",{"2":{"213":1}}],["반복",{"2":{"102":1}}],["반환된",{"2":{"120":1}}],["반환된다",{"2":{"65":1,"98":1}}],["반환할",{"2":{"98":1,"120":1}}],["반환한다",{"2":{"98":1}}],["반환하는",{"2":{"98":1}}],["반환될",{"2":{"64":1}}],["반환값에",{"2":{"64":1}}],["반드시",{"2":{"1":1}}],["응답이",{"2":{"221":1}}],["응답",{"2":{"64":1}}],["응답을",{"2":{"64":1,"221":1}}],["받지",{"2":{"221":1}}],["받을",{"2":{"64":1}}],["받아",{"2":{"57":1}}],["띄운다",{"2":{"63":1,"64":1,"65":1}}],["띄우기",{"2":{"62":1}}],["띄우는",{"2":{"62":2}}],["참과",{"2":{"121":1}}],["참이나",{"2":{"121":2}}],["참일",{"2":{"121":1}}],["참조하고",{"2":{"139":1}}],["참조하기",{"2":{"100":1}}],["참조값이",{"2":{"100":1}}],["참조값을",{"2":{"58":1}}],["참조해야",{"2":{"100":1}}],["참조",{"2":{"100":1}}],["참조할",{"2":{"100":1}}],["참고",{"2":{"191":1}}],["참고하여",{"2":{"151":1}}],["참고사항",{"2":{"96":1}}],["참고한다",{"2":{"62":1,"64":1,"126":1}}],["많을수록",{"2":{"119":1}}],["많으면",{"2":{"119":1}}],["많아지게",{"2":{"105":1}}],["많아질",{"2":{"100":1,"105":1,"120":1,"121":1}}],["많이",{"2":{"62":1,"97":2}}],["많다",{"2":{"62":1,"209":1}}],["많은",{"0":{"73":1},"2":{"57":1,"60":2,"61":1,"120":1,"209":1}}],["창에서",{"2":{"64":1}}],["창보다는",{"2":{"62":1}}],["창을",{"2":{"62":1,"65":1}}],["팝업을",{"2":{"62":1}}],["웹페이지에",{"2":{"118":1}}],["웹사이트에서는",{"2":{"97":1}}],["웹개발자가",{"2":{"62":1}}],["웹",{"2":{"62":2}}],["그룹에서",{"2":{"218":1}}],["그래픽",{"0":{"188":1},"1":{"189":1,"190":1},"2":{"188":1,"219":1}}],["그렇다면",{"2":{"100":1}}],["그러나",{"2":{"98":1}}],["그리고",{"2":{"62":1}}],["그대로",{"2":{"58":1,"106":1}}],["그대로를",{"2":{"58":1}}],["보내지",{"2":{"221":1}}],["보내려면",{"2":{"221":1}}],["보낸다",{"2":{"221":1}}],["보일",{"2":{"119":1}}],["보이는",{"2":{"106":1}}],["보기에도",{"2":{"105":1}}],["보장한다",{"2":{"103":1}}],["보장하고",{"2":{"102":1}}],["보다시피",{"2":{"100":1}}],["보다는",{"2":{"96":1,"114":1}}],["보안",{"2":{"102":1}}],["보안을",{"2":{"97":1}}],["보안이나",{"2":{"97":1}}],["보통",{"2":{"96":1,"102":1}}],["보인다",{"2":{"61":1}}],["보완한",{"2":{"1":1}}],["몇가지",{"2":{"61":1}}],["끊겼으며",{"2":{"61":1}}],["퍼포먼스가",{"2":{"61":1}}],["신뢰할",{"2":{"61":1}}],["될까",{"2":{"100":1}}],["될",{"2":{"60":1,"102":2,"105":2,"120":1}}],["안에",{"2":{"105":1,"114":1}}],["안정성을",{"2":{"102":1}}],["안된다",{"2":{"85":1}}],["안내인지",{"2":{"97":1}}],["안내와",{"2":{"97":1}}],["안내",{"2":{"62":1}}],["안심하고",{"2":{"60":1}}],["안드로이드",{"2":{"32":1}}],["안드로이드에서",{"2":{"23":1}}],["검증",{"0":{"122":1},"1":{"123":1,"124":1,"125":1}}],["검증이",{"2":{"60":1}}],["검토",{"2":{"96":1}}],["검색되지",{"2":{"172":1}}],["검색으로",{"2":{"0":1}}],["검색과",{"2":{"0":1}}],["등호",{"2":{"123":1}}],["등",{"2":{"114":1}}],["등장했다",{"2":{"106":1}}],["등장하였다",{"2":{"100":1}}],["등으로",{"2":{"97":1}}],["등이",{"2":{"60":1,"124":1,"194":1}}],["등의",{"2":{"1":1,"179":1,"219":1}}],["집합체",{"2":{"60":1}}],["도구이다",{"2":{"117":1,"199":1,"218":1}}],["도구에서는",{"2":{"97":1}}],["도와주는",{"2":{"116":1}}],["도움을",{"2":{"60":1}}],["도중",{"2":{"57":1,"208":2}}],["서버측에서",{"2":{"221":1}}],["서버에서",{"2":{"221":2}}],["서버를",{"2":{"178":1}}],["서비스에",{"2":{"196":1}}],["서비스를",{"2":{"178":1,"179":1,"191":1,"192":2,"221":1}}],["서비스",{"0":{"168":1,"178":1,"192":1},"2":{"116":1,"178":4,"199":1}}],["서드파티",{"2":{"59":1}}],["서로",{"2":{"15":1,"97":1,"103":1}}],["레벨에서",{"2":{"59":1}}],["브라우저에",{"2":{"62":1,"97":1}}],["브라우저에서는",{"2":{"59":1}}],["브라우저에서",{"2":{"59":1,"62":1}}],["브라우저",{"2":{"59":1,"97":4}}],["여부",{"0":{"152":1,"154":1,"156":1,"157":1,"158":1,"159":1}}],["여부에",{"2":{"120":1}}],["여부를",{"2":{"59":1,"201":1}}],["여전히",{"2":{"100":1}}],["여기서",{"2":{"98":1,"100":1,"120":1}}],["여기서는",{"2":{"58":1}}],["여러줄",{"2":{"96":1}}],["여러줄의",{"0":{"88":1}}],["여러줄로",{"0":{"87":1},"2":{"1":1}}],["여러",{"0":{"11":1,"14":1},"2":{"1":2,"19":1,"96":2,"97":1,"120":2,"218":1}}],["여러가지",{"2":{"1":1,"60":1,"96":2,"102":1,"209":1}}],["중인",{"2":{"107":1,"116":1}}],["중요한",{"2":{"96":1}}],["중괄호",{"2":{"106":1}}],["중괄호는",{"0":{"94":1}}],["중괄호를",{"0":{"93":1}}],["중첩",{"2":{"121":2}}],["중첩되는",{"0":{"88":1}}],["중첩된",{"0":{"70":1},"2":{"58":1}}],["중에서",{"2":{"61":1}}],["중",{"2":{"58":1,"100":1,"127":1,"128":1}}],["중복하여",{"0":{"15":1}}],["원격",{"2":{"179":1}}],["원본",{"2":{"58":1}}],["원하는",{"2":{"32":1,"97":1,"120":1,"139":1,"217":1}}],["또",{"2":{"106":1}}],["또한",{"2":{"58":1,"62":1,"64":1,"106":1,"119":1,"120":1}}],["또는",{"0":{"89":1},"2":{"1":1,"5":1,"23":3,"35":1,"89":2,"100":2,"104":1,"105":1,"106":2,"119":1,"120":1,"121":1,"168":1,"196":1,"214":1,"221":1}}],["저하될",{"2":{"120":1}}],["저장된",{"2":{"222":1}}],["저장소를",{"2":{"203":1}}],["저장해",{"2":{"103":1}}],["저장한다",{"2":{"58":1,"117":1,"151":1}}],["저의",{"2":{"0":1}}],["조정해야",{"2":{"167":1}}],["조정해주면",{"2":{"114":1}}],["조회는",{"2":{"120":1}}],["조합이",{"2":{"105":1}}],["조합하고자",{"2":{"97":1}}],["조건값",{"2":{"123":1}}],["조건부",{"2":{"121":1}}],["조건식이",{"2":{"120":1}}],["조건식에는",{"0":{"80":1}}],["조건에",{"2":{"120":1}}],["조건이",{"2":{"119":1}}],["조건문",{"2":{"121":1}}],["조건문을",{"2":{"121":1}}],["조건문에서는",{"2":{"100":1}}],["조건문의",{"2":{"98":1}}],["조건문이",{"2":{"80":1}}],["조작하지",{"2":{"58":1}}],["조금",{"2":{"0":1,"98":1,"106":1}}],["직접적으로",{"2":{"58":1,"59":1}}],["들어간다",{"2":{"205":1}}],["들어가는",{"2":{"96":1,"121":1}}],["들어가야",{"2":{"89":1,"105":1}}],["들어오니",{"2":{"64":1}}],["들어",{"2":{"58":1,"96":1,"102":1,"221":1}}],["예상하지",{"2":{"120":1}}],["예시",{"0":{"135":1,"138":1,"143":1}}],["예시가",{"2":{"120":1}}],["예시이다",{"2":{"118":1}}],["예시에서는",{"2":{"120":1}}],["예시에서",{"2":{"22":1,"103":2}}],["예",{"2":{"118":1,"143":1}}],["예약어",{"2":{"102":1}}],["예외상황에",{"2":{"120":1}}],["예외",{"2":{"100":3}}],["예를",{"2":{"58":1,"96":1,"102":1,"221":1}}],["복잡성에",{"2":{"119":1}}],["복잡해",{"2":{"119":1}}],["복잡한",{"2":{"58":1,"96":1,"121":1}}],["복제할",{"2":{"61":1}}],["복제에",{"2":{"60":1}}],["복제하려면",{"2":{"58":1}}],["복제하기",{"2":{"58":1}}],["복제하는",{"2":{"58":1}}],["복제",{"0":{"58":1},"1":{"59":1,"60":1,"61":1},"2":{"58":1,"59":1,"61":1}}],["복수형을",{"0":{"38":1}}],["객체도",{"2":{"125":1}}],["객체로",{"2":{"103":1,"119":1}}],["객체에는",{"2":{"102":1}}],["객체가",{"2":{"100":1,"125":1}}],["객체의",{"2":{"97":2}}],["객체이며",{"2":{"97":1,"103":1}}],["객체를",{"2":{"58":3,"61":1,"97":2,"103":1,"119":1}}],["객체",{"0":{"58":1},"1":{"59":1,"60":1,"61":1},"2":{"58":3,"59":1,"60":1,"61":1,"97":1,"100":1}}],["감싸주어야",{"2":{"139":1}}],["감싸고",{"2":{"57":1}}],["감싸여",{"2":{"57":1}}],["투명으로",{"2":{"57":2}}],["클라이언트",{"2":{"221":1}}],["클라이언트를",{"2":{"193":1,"221":1}}],["클립보드",{"2":{"179":1}}],["클릭하였거나",{"2":{"64":1}}],["클릭",{"2":{"57":1}}],["클래스에",{"2":{"125":1}}],["클래스의",{"2":{"119":1}}],["클래스가",{"0":{"45":1},"2":{"119":1}}],["클래스",{"0":{"43":1},"2":{"102":1,"119":1,"125":1}}],["클래스명을",{"2":{"4":1}}],["머터리얼",{"2":{"57":1}}],["해야",{"2":{"221":1}}],["해야만",{"2":{"119":1}}],["해석에",{"2":{"119":1}}],["해석하여",{"2":{"96":1}}],["해제된",{"2":{"114":1}}],["해주는",{"2":{"104":1,"199":1}}],["해주어야",{"2":{"100":1}}],["해주거나",{"2":{"57":1}}],["해결된다",{"2":{"208":1}}],["해결",{"0":{"208":1}}],["해결하기",{"2":{"100":1,"106":1}}],["해결할",{"2":{"57":1,"167":1,"191":1}}],["해준다",{"2":{"97":1}}],["해당된다",{"2":{"224":1}}],["해당되었으므로",{"2":{"120":1}}],["해당하는",{"2":{"120":1}}],["해당하지",{"2":{"120":1}}],["해당",{"2":{"16":1,"17":1,"18":1,"22":1,"57":1,"89":1,"96":3,"106":1,"114":1,"115":1,"118":1,"120":3,"222":1}}],["없음",{"2":{"143":1}}],["없고",{"2":{"120":1}}],["없다면",{"2":{"114":1,"148":1,"177":1}}],["없다",{"2":{"102":7,"103":1,"115":1,"212":1}}],["없을",{"2":{"100":1,"221":1}}],["없으며",{"2":{"62":1,"103":1}}],["없이도",{"2":{"106":1}}],["없이",{"2":{"59":1,"102":1,"114":2,"218":1}}],["없는",{"2":{"57":1,"167":1,"205":1,"222":1}}],["없어",{"2":{"3":1,"100":1}}],["터미널에",{"2":{"219":1}}],["터미널에서",{"2":{"20":1,"31":1,"32":1,"214":1}}],["터미널",{"2":{"97":1,"213":1}}],["터치",{"2":{"57":1}}],["터치하였을",{"2":{"57":1}}],["터치나",{"2":{"57":1}}],["빼는",{"0":{"56":1}}],["올바르게",{"2":{"54":2}}],["분석",{"2":{"120":1}}],["분기에",{"2":{"120":2}}],["분기가",{"2":{"120":1,"121":1}}],["분기해야",{"2":{"120":1}}],["분류",{"2":{"54":1}}],["분야에서",{"2":{"0":1}}],["핵심적인",{"2":{"54":1}}],["높일",{"2":{"121":1}}],["높은",{"0":{"54":1}}],["높이는",{"2":{"29":1}}],["높이",{"0":{"26":1,"27":1}}],["높이이며",{"2":{"23":1}}],["높이의",{"2":{"23":1}}],["높이를",{"0":{"28":1,"29":1},"2":{"23":2,"28":1}}],["두개가",{"2":{"118":1}}],["두번째",{"2":{"64":1,"114":1}}],["두",{"2":{"58":1,"102":1,"103":1}}],["두는",{"0":{"52":1}}],["두가지가",{"2":{"23":1}}],["태그를",{"2":{"54":2}}],["태그로",{"0":{"55":1,"56":1},"2":{"54":1}}],["태그에서",{"0":{"53":1}}],["태그",{"0":{"50":1}}],["태그의",{"0":{"49":1}}],["태그는",{"0":{"48":1,"52":1}}],["ㄴ",{"2":{"44":2}}],["vim",{"2":{"149":1,"150":1,"191":1,"221":1}}],["vsftpd",{"0":{"144":1,"145":1,"148":1,"151":1,"168":1},"1":{"145":1,"146":2,"147":2,"148":1,"149":2,"150":2,"151":1,"152":2,"153":2,"154":2,"155":2,"156":2,"157":2,"158":2,"159":2,"160":2,"161":2,"162":2,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1},"2":{"146":1,"147":1,"149":2,"150":1,"168":2}}],["volumes",{"2":{"110":1}}],["void",{"2":{"42":1}}],["verify",{"2":{"128":3}}],["very",{"2":{"75":1}}],["version",{"2":{"34":1,"201":1}}],["version=",{"2":{"18":2}}],["v",{"2":{"71":2}}],["variable",{"2":{"97":1}}],["var",{"0":{"68":1},"2":{"68":1}}],["values",{"2":{"89":2}}],["value",{"2":{"61":1,"79":4,"82":2}}],["프리픽스로",{"2":{"222":1}}],["프리픽스값은",{"0":{"41":1}}],["프레임워크이며",{"2":{"209":1}}],["프레임워크의",{"2":{"62":1}}],["프롬프트에서",{"2":{"134":1,"139":1}}],["프롬프트",{"2":{"64":1}}],["프로파일",{"0":{"191":1},"2":{"191":1}}],["프로토콜을",{"2":{"179":1}}],["프로세스",{"0":{"112":1,"113":1},"2":{"111":1,"112":1,"113":1,"220":2}}],["프로세스에서",{"2":{"111":1}}],["프로세스를",{"2":{"107":1}}],["프로퍼티를",{"2":{"103":1}}],["프로덕션용",{"2":{"114":1}}],["프로덕션",{"2":{"97":1}}],["프로그램을",{"2":{"224":1}}],["프로그램이",{"2":{"97":1,"114":1}}],["프로그래밍",{"2":{"1":1,"7":1,"96":1,"119":1}}],["프로젝트와",{"2":{"118":1}}],["프로젝트의",{"2":{"118":1}}],["프로젝트를",{"2":{"32":2,"116":1,"118":1}}],["프로젝트",{"2":{"20":1,"32":2,"114":1,"118":2}}],["프로젝트나",{"2":{"2":1}}],["프로젝트는",{"2":{"0":1}}],["프로젝트에서",{"0":{"30":1},"1":{"31":1,"32":1,"33":1,"34":1}}],["프로젝트에",{"2":{"0":1}}],["컨벤션",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1}}],["범위",{"2":{"35":1}}],["범위와",{"2":{"0":1}}],["디버깅용",{"2":{"97":1}}],["디버그용으로도",{"2":{"62":1}}],["디자인",{"2":{"62":2}}],["디자인의",{"2":{"57":1}}],["디렉토리가",{"2":{"114":2}}],["디렉토리에",{"0":{"127":1},"2":{"114":1,"127":2,"167":1,"199":1}}],["디렉토리에서",{"2":{"114":1}}],["디렉토리의",{"0":{"127":1},"2":{"114":1}}],["디렉토리",{"0":{"44":1,"153":1},"2":{"114":2,"127":1,"143":6,"167":1,"220":1}}],["디렉토리를",{"2":{"32":1,"220":1}}],["디코딩한다",{"2":{"35":1}}],["폴더명은",{"0":{"38":1}}],["폴더",{"0":{"37":1,"156":1},"2":{"35":1,"167":1}}],["kdfalgorithm",{"2":{"222":1,"223":1,"224":1}}],["kdfiter",{"2":{"222":1,"223":1,"224":1}}],["kubernetes",{"2":{"219":1}}],["know",{"2":{"217":1}}],["kkkmhx",{"2":{"118":1}}],["killall",{"2":{"110":4}}],["kim",{"2":{"35":1}}],["korea",{"2":{"119":3}}],["ko",{"2":{"101":1}}],["keep",{"2":{"221":3}}],["keepalive",{"0":{"221":1}}],["kernel",{"2":{"201":1}}],["keyformat은",{"2":{"224":1}}],["keyformat",{"2":{"222":1,"223":1,"224":1}}],["keys",{"2":{"76":1}}],["keys를",{"0":{"76":1}}],["key",{"2":{"43":4,"45":4,"103":4,"224":1}}],["key>",{"2":{"18":1}}],["key>cfbundlename",{"2":{"18":1}}],["kebab",{"0":{"6":1}}],["3과",{"2":{"222":1}}],["30초",{"2":{"221":1}}],["3이면",{"2":{"221":1}}],["3760",{"2":{"220":1}}],["39",{"2":{"220":1}}],["3자",{"2":{"199":1}}],["3389",{"2":{"180":1,"181":1,"183":1}}],["3번씩",{"2":{"128":1}}],["3",{"0":{"33":1,"223":1},"2":{"80":3,"97":2,"105":2,"106":1,"120":1,"125":1,"221":1}}],["할지",{"0":{"159":1}}],["할일",{"2":{"96":1}}],["할당된",{"2":{"103":2}}],["할당하게",{"2":{"102":1}}],["할당",{"0":{"79":1}}],["할당할",{"2":{"58":1}}],["할",{"2":{"32":1,"96":1,"100":1,"102":1,"105":1,"106":1,"118":1,"120":1,"121":1,"123":1,"139":2,"167":1,"178":1,"191":1,"213":1,"218":1,"221":1}}],["빌드된",{"2":{"114":1}}],["빌드",{"2":{"32":1,"114":2}}],["빌드하면",{"2":{"16":1,"114":1}}],["인증용으로",{"2":{"129":1}}],["인한",{"0":{"111":1},"1":{"112":1,"113":1}}],["인해",{"2":{"97":1,"103":1,"115":1}}],["인덴트를",{"0":{"87":1}}],["인자값",{"0":{"143":1},"2":{"143":1}}],["인자값에",{"2":{"115":1}}],["인자값은",{"2":{"114":2}}],["인자값을",{"2":{"64":1}}],["인자의",{"2":{"102":1}}],["인자로",{"2":{"97":1}}],["인자를",{"2":{"97":1}}],["인자가",{"0":{"71":1}}],["인식되게",{"2":{"126":1}}],["인식",{"2":{"57":1}}],["인식뿐만",{"2":{"57":1}}],["인식하게",{"2":{"57":1}}],["인라인",{"0":{"51":1}}],["인덱싱을",{"2":{"32":1}}],["인지할",{"2":{"7":1}}],["제",{"2":{"199":1}}],["제한",{"2":{"102":1}}],["제거한",{"2":{"190":1}}],["제거한다",{"2":{"32":1}}],["제거하고",{"2":{"107":1}}],["제거해주기도",{"2":{"96":1}}],["제대로",{"2":{"57":1,"117":1,"213":1}}],["제목",{"2":{"54":1}}],["제목은",{"2":{"54":1}}],["제공받은",{"2":{"126":1}}],["제공하여",{"2":{"97":1}}],["제공하는",{"2":{"97":1,"128":1,"193":1,"199":1}}],["제공",{"2":{"22":1}}],["닫는다",{"2":{"32":1}}],["열면",{"2":{"224":1}}],["열려면",{"2":{"139":1}}],["열려있다면",{"2":{"118":1}}],["열려있는",{"2":{"32":1}}],["열",{"2":{"139":1}}],["열기",{"0":{"139":1},"1":{"140":1,"141":1,"142":1}}],["열어야",{"2":{"139":1}}],["열어보면",{"2":{"114":1,"118":1}}],["열어",{"2":{"32":1}}],["열고",{"2":{"17":1,"18":1,"191":1,"222":2,"224":1}}],["전환하기",{"0":{"213":1}}],["전송",{"2":{"132":1}}],["전역",{"2":{"125":1}}],["전용",{"2":{"61":1}}],["전",{"2":{"32":1,"100":1,"128":1,"221":1}}],["전체",{"2":{"7":1,"23":1,"35":1,"102":1}}],["버전과",{"2":{"222":1}}],["버전을",{"2":{"212":1}}],["버전별로",{"2":{"32":1}}],["버전의",{"2":{"32":1}}],["버전으로",{"2":{"31":1}}],["버전",{"0":{"30":1},"1":{"31":1,"32":1,"33":1,"34":1},"2":{"59":1,"212":1,"222":2}}],["방화벽",{"0":{"163":1,"173":1,"180":1,"194":1},"1":{"164":1,"165":1,"166":1,"174":1,"175":1,"176":1,"181":1,"182":1,"183":1,"195":1,"196":1,"197":1},"2":{"173":2,"194":1,"195":2,"196":1,"197":1}}],["방지하여",{"2":{"102":1}}],["방지하기",{"2":{"96":1,"103":1}}],["방식",{"0":{"105":1}}],["방식이",{"2":{"96":1}}],["방식으로",{"2":{"96":1}}],["방법으로",{"2":{"121":1,"122":1}}],["방법이기도",{"2":{"119":1}}],["방법들",{"2":{"61":1}}],["방법만",{"2":{"58":1}}],["방법",{"0":{"91":1,"134":1,"137":1,"193":1,"204":1},"1":{"205":1,"206":1,"207":1},"2":{"58":1}}],["방법을",{"2":{"58":1,"128":1}}],["방법도",{"2":{"57":1}}],["방법은",{"2":{"27":1}}],["방향",{"2":{"15":1}}],["방향의",{"0":{"14":1}}],["결론적으로",{"2":{"123":1}}],["결과로",{"2":{"143":1}}],["결과",{"2":{"120":1}}],["결과는",{"2":{"120":2}}],["결과에서",{"2":{"120":1}}],["결과에",{"2":{"120":1}}],["결과가",{"2":{"98":1}}],["결과를",{"2":{"27":1,"97":1}}],["결정하기",{"2":{"23":1}}],["비록",{"2":{"120":1}}],["비활성화하여",{"2":{"115":1,"167":1}}],["비교를",{"2":{"123":3}}],["비교하게",{"2":{"123":1}}],["비교하면",{"2":{"103":1}}],["비교하기",{"2":{"85":1}}],["비교",{"0":{"85":1,"123":1}}],["비슷한",{"2":{"27":1}}],["비롯한",{"2":{"3":1}}],["최소",{"0":{"160":1}}],["최소로",{"0":{"28":1}}],["최상위",{"2":{"118":1,"143":1}}],["최상단에",{"2":{"102":1}}],["최신",{"2":{"31":1,"59":1,"212":2}}],["최대로",{"0":{"29":1}}],["최대",{"0":{"161":1},"2":{"23":1,"221":1}}],["최근엔",{"2":{"97":1}}],["최근",{"2":{"7":1}}],["54",{"2":{"220":1}}],["59",{"2":{"220":1}}],["50",{"2":{"191":1,"201":3}}],["5개의",{"2":{"120":1}}],["5",{"2":{"22":1,"120":1,"125":1,"201":1,"220":1}}],["5px",{"2":{"15":2}}],["^1",{"2":{"22":2}}],["^0",{"2":{"20":1}}],["yes인",{"2":{"177":1}}],["yes",{"0":{"152":1,"157":1,"158":1,"159":1}}],["yum",{"0":{"146":1}}],["yubico",{"2":{"128":13}}],["yubikey의",{"2":{"128":1}}],["yubikey",{"0":{"128":1},"1":{"129":1,"130":1,"131":1}}],["you",{"2":{"118":1,"219":1}}],["your",{"2":{"22":2,"35":1,"64":2,"219":1}}],["yaml",{"2":{"35":1}}],["yamldependencies",{"2":{"22":1}}],["yamldev",{"2":{"20":1}}],["yamlflutter",{"2":{"20":1,"35":1}}],["yaml의",{"2":{"16":1,"22":1}}],["라고도",{"2":{"121":1}}],["라인을",{"2":{"139":1}}],["라인",{"0":{"139":1},"1":{"140":1,"141":1,"142":1}}],["라인의",{"2":{"96":1}}],["라인에서",{"2":{"22":1}}],["라이브러리에서",{"2":{"119":1}}],["라이브러리이다",{"2":{"116":1}}],["라이브러리",{"0":{"19":1,"41":1},"1":{"20":1,"21":1}}],["메인",{"0":{"112":1},"2":{"111":1,"112":1}}],["메시지로",{"2":{"115":1}}],["메시지에",{"2":{"97":1}}],["메시지가",{"2":{"97":1}}],["메시지와",{"2":{"65":1}}],["메시지는",{"2":{"64":1,"97":1,"115":1}}],["메시지를",{"2":{"63":1,"97":1,"100":1,"221":1}}],["메시지",{"0":{"97":1,"162":1},"2":{"62":2,"64":1,"97":1}}],["메소드에서",{"2":{"119":1}}],["메소드가",{"2":{"119":1}}],["메소드나",{"2":{"119":1}}],["메소드와",{"2":{"103":1}}],["메소드는",{"2":{"97":1,"119":1}}],["메소드",{"0":{"87":1,"119":1},"2":{"119":5}}],["메소드이므로",{"2":{"60":1}}],["메소드이다",{"2":{"59":1}}],["메소드를",{"2":{"22":1,"60":1,"97":1,"119":4}}],["메뉴",{"2":{"100":1}}],["메뉴에서",{"2":{"0":1}}],["메뉴를",{"2":{"0":1}}],["위나",{"2":{"120":1}}],["위에서부터",{"2":{"120":1}}],["위치한다",{"2":{"125":1}}],["위치하는",{"2":{"120":1}}],["위치해있다",{"2":{"114":1}}],["위치해야",{"2":{"57":1,"124":1}}],["위치에",{"2":{"111":1,"222":1}}],["위하여",{"2":{"100":1}}],["위의",{"2":{"97":1,"98":1,"125":1}}],["위한",{"2":{"62":1,"96":1,"119":1,"220":2}}],["위해서는",{"2":{"85":1,"100":1,"102":1,"114":1,"212":1}}],["위해",{"2":{"23":1,"58":1,"60":1,"96":2,"97":1,"103":1,"106":1,"119":1,"120":1,"121":1,"125":1,"132":1,"218":1,"220":2}}],["위젯인",{"2":{"57":1}}],["위젯이",{"2":{"57":1}}],["위젯이다",{"2":{"57":1}}],["위젯으로",{"2":{"57":3}}],["위젯과",{"2":{"57":1}}],["위젯은",{"2":{"57":3}}],["위젯",{"0":{"57":1}}],["위젯을",{"2":{"27":1,"28":1,"57":2}}],["위젯에서",{"2":{"23":1,"57":1}}],["위젯의",{"0":{"23":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"23":1,"57":2}}],["위와",{"2":{"22":1,"106":2,"119":1,"121":1,"123":1,"126":1}}],["위",{"2":{"22":1,"61":1,"100":4,"103":2,"114":1,"115":1,"120":4,"123":1,"126":2}}],["==",{"0":{"85":1,"123":1},"2":{"76":1,"85":2,"123":3}}],["===",{"0":{"85":1,"123":1},"2":{"60":1,"82":1,"85":1,"103":2,"120":5,"123":3,"124":1}}],["=>",{"2":{"43":1,"45":1,"71":2,"72":2,"73":3,"112":1,"113":1}}],["=",{"2":{"22":1,"35":2,"39":1,"40":1,"58":3,"59":3,"60":2,"61":4,"64":2,"65":1,"68":4,"72":2,"75":2,"76":2,"77":4,"78":6,"79":4,"80":8,"81":1,"86":2,"88":4,"91":2,"97":8,"100":5,"102":2,"103":12,"105":5,"106":8,"115":2,"119":10,"120":11,"123":2,"124":1,"125":1,"126":1,"177":6,"221":1,"222":8,"223":6,"224":6}}],["ohmyzsh",{"2":{"215":2,"216":2,"217":2}}],["oh",{"0":{"209":1,"214":1},"1":{"210":1,"211":1,"212":1,"213":1,"214":1,"215":2,"216":2,"217":1},"2":{"209":1,"214":1,"217":1}}],["options",{"2":{"137":1,"205":1}}],["optional",{"0":{"100":1},"1":{"101":1},"2":{"101":1}}],["open",{"2":{"118":1,"141":1}}],["operators",{"2":{"99":1,"101":1,"124":1}}],["operator",{"0":{"98":1},"1":{"99":1},"2":{"99":1,"121":1}}],["o",{"2":{"97":1,"216":1}}],["obj",{"2":{"76":4,"77":2,"78":2,"91":4,"97":7}}],["objb",{"2":{"58":5,"59":3}}],["objb의",{"2":{"58":1}}],["obja의",{"2":{"58":1}}],["obja를",{"2":{"58":1}}],["obja",{"2":{"58":4,"59":3}}],["object를",{"0":{"91":1}}],["object의",{"0":{"76":1,"77":1,"78":1}}],["objects",{"2":{"60":3}}],["object",{"0":{"76":1},"2":{"58":2,"76":1,"91":2,"124":1}}],["of",{"2":{"32":1,"61":1,"96":1,"100":1,"126":2,"217":3,"219":1}}],["override",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"42":1,"43":1,"45":1,"57":3}}],["one",{"2":{"217":1}}],["onmenuclick이",{"2":{"100":1}}],["onmenuclick",{"2":{"100":2}}],["onclicktestbutton",{"2":{"56":2}}],["onclick=",{"2":{"56":2}}],["on",{"0":{"22":1},"2":{"22":4,"112":1,"113":1,"118":1,"177":1,"208":1}}],["origin",{"2":{"112":1}}],["org",{"2":{"99":1,"101":1,"112":1,"113":1,"124":1,"191":5}}],["or",{"0":{"79":1},"2":{"21":2,"65":1,"98":1,"106":1,"192":2,"202":2,"203":2}}],["orange",{"2":{"1":1}}],["each",{"2":{"217":1}}],["eof",{"2":{"208":1}}],["edge",{"2":{"205":1}}],["edit",{"2":{"118":1}}],["epel",{"2":{"203":2}}],["etc",{"2":{"149":1,"150":1,"177":1,"187":1,"188":1,"189":1,"191":1,"220":1,"221":1}}],["echo",{"2":{"127":1,"217":1}}],["ecma",{"2":{"104":1}}],["ecmascript",{"2":{"100":1}}],["e",{"2":{"120":1}}],["err",{"2":{"112":1,"121":3}}],["error",{"2":{"21":1,"90":3,"97":1,"120":1,"208":2}}],["event",{"2":{"112":1,"113":2}}],["electronjs",{"2":{"113":1}}],["electron을",{"2":{"111":1}}],["electron",{"0":{"107":1,"111":1},"1":{"108":1,"109":1,"110":1,"112":1,"113":1},"2":{"107":1,"108":1,"110":2,"113":1,"114":3}}],["else와",{"2":{"120":1}}],["else문과",{"2":{"120":1}}],["else문을",{"2":{"120":2}}],["else문의",{"0":{"95":1}}],["else가",{"0":{"93":1}}],["else",{"0":{"94":1},"2":{"69":1,"70":2,"93":3,"94":2,"95":1,"120":4}}],["explorer",{"2":{"140":1}}],["exist",{"2":{"121":7}}],["extract의",{"2":{"114":1}}],["extract",{"2":{"114":2}}],["extends",{"2":{"43":1,"45":1,"126":4}}],["extension",{"2":{"32":1}}],["exe",{"2":{"114":1,"193":1}}],["exe로",{"2":{"108":1}}],["executed",{"2":{"96":1}}],["eslint에서",{"2":{"115":1}}],["eslint",{"0":{"115":1},"2":{"115":2}}],["es5",{"2":{"102":1}}],["es2015",{"2":{"103":1,"104":1}}],["es2009",{"2":{"102":1}}],["es2020",{"2":{"98":1}}],["es11",{"2":{"98":1,"100":1}}],["es6",{"0":{"67":1},"1":{"68":1,"69":1,"70":1,"71":1,"72":1,"73":1},"2":{"102":1,"103":1,"104":1}}],["esc를",{"2":{"64":1}}],["either",{"2":{"21":1}}],["encrypted",{"2":{"225":2}}],["encoding=",{"2":{"18":1}}],["env",{"2":{"222":1}}],["environment",{"2":{"219":2}}],["end",{"2":{"217":2}}],["enable",{"2":{"192":2,"202":2,"203":2}}],["enable=yes",{"2":{"154":1,"156":1,"157":1,"158":1,"159":1}}],["enable=no",{"2":{"152":1}}],["enterprise",{"2":{"203":1}}],["enter",{"2":{"64":2}}],["en",{"2":{"18":1,"99":1}}],["발생해야",{"2":{"126":1}}],["발생",{"2":{"97":1,"111":1,"112":1,"113":1}}],["발생할",{"2":{"58":1,"98":1,"100":1,"120":1,"208":2}}],["발생하고",{"2":{"167":1}}],["발생하면",{"2":{"111":3}}],["발생하도록",{"2":{"102":1}}],["발생하는",{"2":{"32":1,"100":1}}],["발생하지",{"2":{"1":1}}],["발생한다",{"2":{"22":1,"105":1,"111":1,"208":1}}],["발생한",{"2":{"21":1}}],["루트에",{"2":{"118":1}}],["루트",{"2":{"20":1}}],["경고나",{"2":{"97":1}}],["경고",{"2":{"63":1,"97":1}}],["경로와",{"2":{"222":1}}],["경로에",{"2":{"114":1,"118":1,"139":1}}],["경로로",{"2":{"32":1}}],["경로의",{"2":{"31":1,"32":1}}],["경로를",{"2":{"20":1,"139":3,"143":1}}],["경로",{"0":{"139":1},"1":{"140":1,"141":1,"142":1},"2":{"20":1,"35":1,"108":1,"114":2,"139":1,"143":1}}],["경우는",{"2":{"121":1,"126":1}}],["경우에",{"2":{"120":1,"224":1}}],["경우에는",{"2":{"100":1}}],["경우에만",{"2":{"98":1}}],["경우",{"0":{"12":1,"13":1,"14":1,"45":1,"77":1,"88":1,"93":1,"95":1},"2":{"5":1,"15":2,"16":1,"21":1,"31":1,"32":1,"57":2,"58":1,"64":1,"97":3,"100":3,"103":1,"108":2,"115":1,"118":1,"120":6,"121":3,"126":1,"128":1,"167":1,"172":1,"177":2,"195":2,"196":3,"197":2,"217":1,"221":1,"222":1,"224":2}}],["경우가",{"2":{"4":1,"22":1,"32":1,"62":1,"97":1,"102":1,"114":1,"209":1,"224":1}}],["구문이",{"2":{"121":1}}],["구글",{"2":{"117":1}}],["구동되는",{"2":{"117":1}}],["구현이",{"2":{"89":1}}],["구현할",{"2":{"59":1}}],["구현하는",{"2":{"57":1}}],["구성이",{"2":{"219":1}}],["구성하려면",{"2":{"219":1}}],["구성하거나",{"2":{"218":1}}],["구성하는",{"2":{"179":1}}],["구성해주어야",{"2":{"203":1}}],["구성",{"0":{"188":1,"192":1},"1":{"189":1,"190":1}}],["구성할",{"2":{"179":1,"218":1}}],["구성을",{"2":{"117":1,"209":1}}],["구성된",{"2":{"58":1,"100":1,"205":1}}],["구성한다",{"2":{"20":1}}],["구분할",{"2":{"106":1}}],["구분하게",{"2":{"97":1}}],["구분하여",{"2":{"97":2,"119":1,"222":1}}],["구분하며",{"2":{"5":1}}],["구분한다",{"0":{"50":1,"83":1},"2":{"6":1,"121":1}}],["구분",{"2":{"2":1,"3":1,"96":1}}],["설명된대로",{"2":{"126":1}}],["설명값을",{"2":{"103":1}}],["설명",{"2":{"103":2,"143":1,"220":1}}],["설명하는",{"2":{"96":1}}],["설명을",{"2":{"96":1}}],["설정은",{"2":{"222":2}}],["설정이름이",{"2":{"222":1}}],["설정이",{"2":{"213":1}}],["설정할",{"2":{"129":1}}],["설정한다",{"2":{"129":1,"221":1}}],["설정을",{"2":{"117":1,"212":1,"217":1}}],["설정에",{"2":{"114":1,"222":2}}],["설정",{"0":{"144":1,"148":1,"153":1,"167":1,"169":1,"173":1,"177":1,"179":1,"180":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":2,"150":2,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"170":1,"171":1,"172":1,"173":1,"174":2,"175":2,"176":2,"177":1,"178":1,"180":1,"181":2,"182":2,"183":2,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1},"2":{"107":1}}],["설정하여",{"2":{"57":1}}],["설정하지",{"2":{"16":1}}],["설정된",{"2":{"32":1,"221":1}}],["설치해야할",{"2":{"214":1}}],["설치해줄",{"2":{"212":1}}],["설치를",{"2":{"212":1}}],["설치명으로",{"2":{"205":1}}],["설치하는",{"2":{"209":1}}],["설치하기",{"0":{"209":1},"1":{"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1}}],["설치하려고",{"2":{"208":1}}],["설치하려면",{"2":{"205":1}}],["설치하여",{"2":{"199":1,"202":1}}],["설치하면",{"2":{"114":1,"208":1}}],["설치되지",{"2":{"196":1}}],["설치되어있지",{"2":{"203":1,"212":1}}],["설치되어있으며",{"2":{"201":1}}],["설치되어있다",{"2":{"199":1}}],["설치되어있거나",{"2":{"195":1}}],["설치되어있어야",{"2":{"179":1,"212":1}}],["설치되어",{"2":{"128":1,"202":1}}],["설치할",{"2":{"117":1,"196":1,"209":1,"212":1,"214":1,"218":1}}],["설치된",{"2":{"114":1}}],["설치했다면",{"2":{"109":2}}],["설치한",{"2":{"108":2,"208":1}}],["설치한다",{"2":{"20":1,"211":1}}],["설치",{"0":{"20":1,"117":1,"145":1,"170":1,"184":1,"198":1,"200":1,"205":1,"210":1,"213":1,"214":1,"215":1,"216":1,"217":1},"1":{"146":1,"147":1,"171":1,"172":1,"185":1,"186":1,"199":1,"200":1,"201":2,"202":2,"203":2,"204":1,"205":1,"206":1,"207":1,"208":1,"211":1,"212":1,"213":1,"215":1,"216":1},"2":{"31":1,"107":1,"114":1,"201":1,"205":1,"208":2,"217":1,"218":2}}],["유명",{"2":{"199":1}}],["유의해야만",{"2":{"120":1}}],["유의할점은",{"2":{"97":1}}],["유의할",{"2":{"96":1,"100":1}}],["유일성을",{"2":{"103":1}}],["유효한",{"2":{"100":1}}],["유지해야",{"2":{"221":1}}],["유지",{"2":{"221":1}}],["유지되며",{"2":{"179":1}}],["유지보수가",{"2":{"61":1}}],["유지하면서",{"2":{"58":1}}],["유사하다",{"2":{"118":1}}],["유사하지만",{"2":{"4":1,"57":1,"125":1}}],["유사한",{"2":{"96":1,"120":1}}],["유사",{"2":{"60":1}}],["유틸리티",{"2":{"60":1}}],["유틸",{"2":{"19":1}}],["개선사항과",{"2":{"209":1}}],["개요",{"0":{"199":1}}],["개방",{"2":{"196":1}}],["개방할",{"2":{"196":1}}],["개방하려는",{"2":{"195":2,"196":2,"197":2}}],["개방해야",{"2":{"173":1}}],["개행으로",{"2":{"119":1}}],["개행을",{"0":{"55":1},"2":{"106":1}}],["개정되면서",{"2":{"104":1}}],["개발이나",{"2":{"218":1}}],["개발한",{"2":{"218":1}}],["개발자",{"2":{"97":1}}],["개발",{"2":{"19":1,"62":1,"97":1}}],["개인적이지만",{"2":{"66":1}}],["개인",{"2":{"0":1}}],["플랫폼의",{"2":{"19":1}}],["플랫폼별",{"2":{"16":1}}],["플랫폼별로",{"2":{"16":1}}],["db라고",{"2":{"222":1}}],["db",{"0":{"222":1},"1":{"223":1,"224":1,"225":1},"2":{"222":8}}],["drwxr",{"2":{"220":4}}],["driver",{"2":{"220":2}}],["drive",{"2":{"118":1}}],["dport",{"2":{"164":1,"174":1,"183":1,"195":3}}],["dnf",{"0":{"146":1,"171":1},"2":{"146":1,"171":3,"186":1,"203":3}}],["databases",{"2":{"225":2}}],["data",{"2":{"110":1}}],["dartclass",{"2":{"43":1}}],["dartbool",{"2":{"42":1}}],["dartstring",{"2":{"39":1,"40":1}}],["dart",{"0":{"36":2},"1":{"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2},"2":{"22":3,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"35":2,"37":2,"38":1,"41":1,"44":2,"45":2,"57":3}}],["dartimport",{"2":{"22":1,"35":1,"41":1}}],["d",{"2":{"97":2,"118":1,"120":1,"127":3,"177":1,"191":1,"220":3}}],["dynamic>",{"2":{"35":1}}],["dynamic>>",{"2":{"35":1}}],["downloads",{"2":{"143":1}}],["done",{"2":{"127":1}}],["do",{"2":{"127":1}}],["doanotherfunction",{"2":{"93":1}}],["dofunction",{"2":{"93":2}}],["dotenvmydata",{"2":{"222":1}}],["dot",{"2":{"35":2}}],["double",{"2":{"29":2}}],["docker",{"2":{"219":2}}],["documents",{"2":{"116":1}}],["documentdir",{"2":{"22":2}}],["docs",{"2":{"99":1,"101":1,"113":1,"124":1}}],["doctype",{"2":{"18":1}}],["detected",{"2":{"208":1}}],["details",{"2":{"113":1}}],["desk",{"2":{"143":1}}],["desktop같은",{"2":{"179":1}}],["desktop",{"0":{"189":2},"2":{"135":1,"143":1,"193":1}}],["description",{"2":{"103":1}}],["declare를",{"2":{"126":1}}],["decode",{"2":{"35":1}}],["debian",{"0":{"150":1,"172":1,"181":1,"185":1,"202":1},"2":{"197":1,"202":1}}],["deb",{"2":{"109":1}}],["debug",{"2":{"97":1}}],["default와",{"2":{"120":1}}],["default",{"2":{"120":2}}],["default는",{"0":{"84":1},"2":{"120":2}}],["defined",{"2":{"102":1}}],["depth",{"2":{"97":4}}],["dependency",{"2":{"22":1}}],["dependencies",{"2":{"20":1,"22":1}}],["dependencies에",{"2":{"20":1,"22":1}}],["depend",{"0":{"22":1},"2":{"22":2}}],["delete나",{"2":{"102":1}}],["delete",{"2":{"87":2,"191":2}}],["deep",{"2":{"60":2}}],["development",{"2":{"219":1}}],["developers",{"2":{"116":1,"128":1}}],["developer",{"2":{"99":1,"101":1,"124":1}}],["device",{"2":{"191":3,"220":2}}],["devtool이",{"2":{"111":1}}],["dev",{"2":{"20":1,"219":1,"220":1}}],["dtds",{"2":{"18":1}}],["dtd",{"2":{"18":2}}],["disable",{"2":{"177":2}}],["displayname",{"2":{"17":2,"18":2}}],["directory",{"2":{"143":1}}],["dir=`pwd`",{"2":{"127":1}}],["dir",{"2":{"97":1,"143":1}}],["dir을",{"2":{"97":2}}],["dict>",{"2":{"18":2}}],["div>",{"2":{"48":3,"49":2,"50":2,"51":2}}],["div",{"2":{"11":4,"48":3,"49":2,"50":2,"51":2}}],["8",{"0":{"203":1},"2":{"18":1,"22":1,"201":1}}],["$random",{"2":{"217":1}}],["$d",{"2":{"127":3}}],["$dir",{"2":{"127":2}}],["$user",{"2":{"110":1,"167":1}}],["$",{"2":{"17":1,"31":1,"32":1,"106":4,"109":2,"126":1,"127":1,"128":7,"171":2,"172":2,"178":4,"192":2,"195":2,"196":3,"197":2,"202":3,"203":5,"213":1,"215":1,"216":1}}],["키값에는",{"2":{"222":1}}],["키값의",{"2":{"1":1}}],["키가",{"2":{"217":1}}],["키워드의",{"2":{"205":1}}],["키워드여야",{"2":{"205":1}}],["키로",{"2":{"129":1}}],["키를",{"2":{"17":1,"18":1}}],["xr",{"2":{"220":4}}],["xrdp나",{"2":{"219":1}}],["xrdp는",{"2":{"179":1}}],["xrdp",{"0":{"179":1,"184":1,"187":1},"1":{"180":1,"181":1,"182":1,"183":1,"184":1,"185":2,"186":2,"187":1,"188":2,"189":2,"190":2,"191":2,"192":2,"193":1},"2":{"185":1,"186":1,"187":2,"188":1,"191":1,"192":5}}],["xdmcp",{"2":{"196":1,"219":1}}],["xfce4",{"0":{"190":1}}],["xfce4나",{"2":{"179":1}}],["xsession",{"2":{"189":1}}],["x11",{"2":{"189":1}}],["xubuntu",{"0":{"189":1}}],["xinetd",{"0":{"169":1,"170":1,"177":1,"178":1},"1":{"170":1,"171":2,"172":2,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1},"2":{"171":1,"172":1,"177":1,"178":2}}],["xxx",{"2":{"89":1,"96":1}}],["x26",{"2":{"70":2,"83":4,"97":1,"100":4}}],["x",{"0":{"33":1,"34":1},"2":{"59":1,"220":4,"221":1}}],["xmlns",{"2":{"17":1}}],["xml",{"2":{"17":2,"18":2}}],["x3c",{"2":{"1":8,"17":4,"18":10,"35":3,"43":1,"45":1,"48":6,"49":4,"50":4,"51":6,"52":16,"53":16,"54":32,"55":16,"56":8,"80":3,"102":2,"119":1,"126":4,"137":1}}],["후에는",{"2":{"217":1}}],["후",{"0":{"213":1},"2":{"16":1,"32":2,"35":1,"117":1,"118":1,"126":1,"128":1,"151":1,"179":1,"190":1,"208":1,"217":1,"221":1}}],["앱에서",{"2":{"222":1}}],["앱과",{"2":{"199":1}}],["앱이",{"2":{"111":1}}],["앱을",{"2":{"16":1,"199":1,"213":1}}],["앱의",{"2":{"16":1,"107":1}}],["앱",{"0":{"16":1,"107":1},"1":{"17":1,"18":1,"108":1,"109":1,"110":1},"2":{"16":2,"18":1,"19":1,"107":1,"108":1}}],["의미를",{"2":{"220":1}}],["의미있는",{"0":{"88":1}}],["의미있게",{"0":{"54":1}}],["의해",{"2":{"103":2,"115":1,"120":1}}],["의도치",{"2":{"103":1}}],["의도하지",{"2":{"103":1}}],["의도를",{"2":{"103":1}}],["의",{"0":{"24":1,"25":1,"26":1,"27":1,"105":1},"2":{"15":1,"120":2}}],["다르다",{"2":{"139":1}}],["다르게",{"2":{"129":1}}],["다소",{"2":{"105":1}}],["다만",{"2":{"97":2,"100":1,"105":1,"119":1,"121":1,"123":1,"124":1,"139":1}}],["다를",{"2":{"96":1,"123":1,"173":1}}],["다이얼로그가",{"2":{"111":1}}],["다이얼로그",{"2":{"62":1}}],["다운로드하여",{"2":{"208":1}}],["다운로드",{"2":{"32":1,"61":1,"128":1}}],["다운그레이드",{"0":{"32":1},"1":{"33":1,"34":1}}],["다시",{"2":{"16":1,"32":1,"103":1,"119":1,"121":1,"179":1,"208":2}}],["다음과",{"2":{"57":1,"58":1,"96":1,"98":1,"100":2,"102":1,"105":1,"106":1,"115":1,"119":3,"120":1,"132":1,"208":1,"222":1}}],["다음",{"2":{"16":1,"20":2,"21":1,"22":1,"31":1,"32":3,"59":1,"100":1,"102":1,"115":1,"117":2,"118":2,"119":1,"120":1,"134":1,"190":1,"192":1,"205":1,"208":1,"217":2,"219":1,"220":1,"222":2}}],["다른",{"2":{"15":1,"27":1,"58":3,"97":1,"103":2,"106":1,"120":2,"214":1}}],["다양한",{"2":{"0":2,"122":1,"179":1}}],["random",{"2":{"217":2}}],["raw",{"2":{"215":1,"216":1,"224":1}}],["ram",{"2":{"179":1}}],["rdp",{"2":{"179":1,"180":1,"193":1}}],["rpm",{"2":{"109":1}}],["rf",{"2":{"109":2,"110":3}}],["rm",{"2":{"109":2,"110":3}}],["rhel",{"2":{"78":2}}],["ripple",{"2":{"57":1}}],["right",{"2":{"14":1,"15":1}}],["root=",{"2":{"153":1}}],["root",{"2":{"49":2,"177":1,"220":10}}],["rootbundle",{"2":{"35":3}}],["row",{"0":{"23":1,"24":1,"25":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"23":1,"24":1,"25":1,"27":1}}],["run",{"2":{"20":1,"35":1,"208":1,"217":1,"218":1}}],["runner",{"2":{"18":1}}],["related",{"2":{"219":1}}],["release",{"2":{"203":2}}],["releases",{"2":{"128":1}}],["remote",{"2":{"193":1}}],["remove",{"2":{"115":1,"206":1}}],["reuse",{"2":{"177":1}}],["represent",{"2":{"126":1}}],["render",{"2":{"113":2}}],["reading",{"2":{"100":1}}],["read",{"2":{"100":1,"208":4}}],["references",{"0":{"225":1}}],["referenceerror",{"2":{"102":2}}],["reference",{"0":{"99":1,"101":1},"2":{"99":1,"101":1,"124":1}}],["referenced",{"0":{"22":1},"2":{"22":3}}],["refresh",{"2":{"87":2,"207":1}}],["required",{"2":{"208":2}}],["require",{"2":{"61":1}}],["return을",{"2":{"120":1}}],["return",{"2":{"22":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"35":1,"42":1,"88":2,"91":2,"121":1,"123":4,"124":2,"125":2}}],["resultactive=yes",{"2":{"191":1}}],["resultany=no",{"2":{"191":1}}],["resultinactive=no",{"2":{"191":1}}],["restart",{"2":{"168":2,"178":4,"208":1,"221":2}}],["reset",{"2":{"128":1}}],["resources",{"2":{"114":1}}],["resources에",{"2":{"114":1}}],["response",{"2":{"64":4,"65":2,"120":6}}],["res",{"2":{"17":1}}],["redhat",{"0":{"149":1,"171":1,"182":1,"186":1,"203":1},"2":{"167":1,"196":1,"203":1}}],["red",{"2":{"10":2,"11":2,"12":2,"86":4}}],["축약한다",{"0":{"72":1,"95":1}}],["축약할",{"0":{"14":1}}],["축약형",{"2":{"7":1}}],["같다",{"2":{"115":1,"120":1,"222":1}}],["같지",{"2":{"103":1}}],["같은",{"0":{"14":1},"2":{"57":1,"97":1,"98":1,"100":2,"102":2,"103":1,"104":1,"106":2,"120":1,"121":3,"123":1,"126":2,"199":1,"208":1}}],["같이",{"2":{"0":1,"22":1,"35":1,"57":4,"58":1,"96":1,"97":5,"100":2,"102":1,"103":1,"105":1,"106":4,"117":1,"118":1,"119":4,"120":5,"121":1,"123":2,"126":2,"128":1,"132":1,"195":1,"196":2,"197":1,"205":1}}],["agnoster",{"2":{"217":1}}],["age",{"2":{"58":6,"59":4}}],["abcd",{"2":{"120":1}}],["abc",{"2":{"102":4}}],["affected",{"2":{"102":1}}],["admin",{"2":{"100":3}}],["added",{"2":{"89":2}}],["adds",{"2":{"22":1}}],["add",{"2":{"22":1,"35":2,"57":3,"68":4,"102":1,"118":1,"119":1,"166":1,"175":1,"182":1,"196":4}}],["alive",{"2":{"221":3}}],["all",{"2":{"191":1}}],["allow",{"2":{"165":1,"176":1,"181":1,"191":2,"197":3}}],["also",{"2":{"96":1,"102":1,"120":1}}],["alert의",{"2":{"97":1}}],["alert가",{"2":{"97":1}}],["alert는",{"2":{"62":1,"63":1}}],["alert와",{"2":{"62":1}}],["alert",{"0":{"62":1,"63":1,"90":1},"1":{"63":1,"64":1,"65":1}}],["are",{"2":{"118":1}}],["arguments로",{"2":{"102":1}}],["argument",{"2":{"89":2,"126":1}}],["array",{"2":{"125":1}}],["array나",{"2":{"100":1}}],["arrlength",{"2":{"80":2}}],["arr",{"2":{"80":6,"97":2}}],["arrow",{"0":{"71":1,"72":1}}],["action=org",{"2":{"191":1}}],["active",{"2":{"12":4}}],["accept",{"2":{"164":1,"174":1,"183":1,"195":2}}],["accessor는",{"0":{"86":1}}],["accounted",{"2":{"118":1}}],["amp",{"0":{"32":1},"1":{"33":1,"34":1},"2":{"98":2}}],["a",{"2":{"22":2,"35":2,"60":1,"61":8,"72":4,"76":2,"81":4,"83":2,"85":2,"88":4,"91":3,"96":2,"100":1,"105":2,"106":1,"115":1,"118":1,"120":1,"126":2,"128":9,"130":1,"131":1,"164":1,"174":1,"183":1,"195":2,"217":1,"219":3}}],["await으로",{"0":{"73":1}}],["await",{"2":{"22":1,"35":2}}],["asarresources",{"2":{"114":2}}],["asar",{"0":{"114":1},"2":{"114":8}}],["assignable",{"2":{"126":1}}],["assign을",{"2":{"58":1}}],["assets에",{"2":{"35":1}}],["assets",{"2":{"20":1,"35":7}}],["as",{"2":{"41":1}}],["async와",{"0":{"73":1}}],["async",{"2":{"22":1,"35":2}}],["apr",{"2":{"220":1}}],["apt",{"0":{"147":1,"172":1},"2":{"147":1,"172":3,"185":1,"202":1,"211":2}}],["api의",{"2":{"117":1}}],["api",{"2":{"112":1,"113":1}}],["apk",{"2":{"17":1}}],["appsscript",{"2":{"118":1}}],["apps",{"2":{"116":2,"117":1,"118":2}}],["appdata",{"2":{"108":2}}],["appname",{"2":{"107":1,"110":1}}],["appbar",{"2":{"24":2,"25":2,"26":2,"27":2,"28":2,"29":2}}],["appliance",{"2":{"219":2}}],["applications",{"2":{"110":1}}],["application>",{"2":{"17":1}}],["applicationname",{"2":{"17":1}}],["application",{"2":{"17":1,"22":1,"35":1,"110":1}}],["application의",{"2":{"17":1}}],["apple",{"2":{"1":1,"18":2,"77":3,"78":2,"84":4,"106":1}}],["app",{"2":{"17":3,"21":2,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"32":1,"107":1,"108":1,"109":2,"110":5,"113":3,"114":1}}],["anbox",{"2":{"219":2}}],["annotation",{"2":{"115":1}}],["anum",{"2":{"105":2,"106":2}}],["and",{"2":{"97":2,"98":1,"219":3}}],["android=",{"2":{"17":1}}],["androidmanifest",{"2":{"17":1}}],["android",{"0":{"17":1},"2":{"17":7,"20":1,"21":5,"32":1,"33":1,"34":1}}],["an",{"2":{"35":1}}],["another",{"2":{"12":2}}],["wget은",{"2":{"214":1}}],["wget",{"0":{"216":1},"2":{"214":1,"216":1}}],["was",{"2":{"217":1}}],["waiting",{"2":{"208":1}}],["wait",{"2":{"177":1}}],["way",{"2":{"126":1}}],["warn",{"2":{"97":1}}],["warning",{"2":{"63":1,"118":1}}],["webcontents",{"2":{"113":1}}],["web",{"2":{"99":1,"101":1,"124":1}}],["weight",{"2":{"97":1}}],["write",{"2":{"96":1,"156":1}}],["wrap을",{"0":{"28":1}}],["wrap과",{"2":{"27":1}}],["wrap",{"0":{"24":1,"26":1},"2":{"23":1,"28":1}}],["wiki",{"2":{"217":1,"225":1}}],["will",{"2":{"217":1}}],["win",{"2":{"114":1}}],["windows나",{"2":{"193":1}}],["windows",{"0":{"108":1,"133":1,"140":1},"1":{"134":1,"135":1},"2":{"78":2}}],["widgets",{"2":{"38":1}}],["widget",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"57":3}}],["width",{"0":{"24":1,"25":1},"2":{"29":2}}],["with를",{"2":{"102":1}}],["with",{"2":{"22":1,"219":1}}],["which",{"2":{"118":1,"213":1,"217":2}}],["while",{"2":{"102":1}}],["white",{"2":{"11":2}}],["when",{"2":{"22":1}}],["www",{"2":{"18":1,"113":1}}],["world",{"2":{"1":1,"97":8,"100":1,"105":2,"106":2}}],[">test",{"2":{"56":2}}],[">",{"2":{"11":6,"17":2,"18":3,"48":3,"49":2,"50":2,"51":2,"56":1,"61":1,"140":1,"220":1}}],["✅",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"75":2,"76":1,"77":1,"78":1,"79":2,"80":2,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"93":1,"94":1,"95":1}}],["🚫",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"48":2,"49":1,"50":1,"51":1,"52":2,"53":1,"54":1,"55":1,"56":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"93":2,"94":1,"95":1}}],["동치",{"0":{"123":1},"2":{"123":1}}],["동등",{"0":{"85":1}}],["동작한다",{"2":{"212":1}}],["동작하는데",{"2":{"96":1}}],["동작하지",{"2":{"59":1,"97":1,"111":1,"217":1}}],["동작과",{"2":{"57":1}}],["동작에",{"2":{"57":1,"96":2}}],["동작",{"2":{"57":2}}],["동작을",{"2":{"57":3}}],["동일",{"2":{"128":1}}],["동일한",{"0":{"30":1,"45":1,"77":1},"1":{"31":1,"32":1,"33":1,"34":1},"2":{"222":1}}],["동일하게",{"2":{"1":1}}],["동시에",{"2":{"7":1,"28":1,"58":1}}],["을",{"2":{"7":1,"16":1,"17":1,"18":1,"62":1,"85":1,"97":1,"114":1,"115":1}}],["bcd가",{"2":{"120":1}}],["browser",{"0":{"222":1},"1":{"223":1,"224":1,"225":1},"2":{"222":1}}],["browserwindow",{"2":{"111":1}}],["brew",{"2":{"212":1}}],["brew가",{"2":{"212":1}}],["break의",{"2":{"120":1}}],["break문에",{"2":{"120":1}}],["break문이",{"2":{"120":1}}],["break문을",{"2":{"120":1}}],["break문",{"2":{"120":1}}],["break인데",{"2":{"120":1}}],["break",{"2":{"120":2}}],["break이",{"2":{"120":1}}],["bionic",{"2":{"219":3}}],["bindkey",{"2":{"217":1}}],["bin",{"2":{"110":1,"127":1,"189":1,"220":2}}],["bisactive",{"2":{"7":1}}],["bnum",{"2":{"105":2,"106":2}}],["byte",{"2":{"134":1}}],["bye",{"2":{"120":4}}],["by",{"2":{"102":1}}],["beginning",{"2":{"217":1}}],["because",{"2":{"208":1}}],["beta",{"2":{"205":1}}],["be",{"2":{"89":2}}],["bug",{"2":{"96":1}}],["button>",{"2":{"56":2}}],["button",{"2":{"56":4}}],["burr",{"2":{"35":1}}],["builder에서",{"2":{"114":1}}],["builder",{"2":{"114":1}}],["buildcontext",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"57":3}}],["build",{"2":{"21":2,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"32":1,"57":3,"114":1}}],["boot",{"2":{"220":1}}],["boolean을",{"2":{"115":1}}],["boolean은",{"2":{"115":1}}],["boolean",{"2":{"7":1,"115":4,"124":1}}],["bold",{"2":{"97":1}}],["box",{"2":{"86":8}}],["body>",{"2":{"52":6,"56":2}}],["body",{"0":{"52":1},"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1}}],["bottom",{"2":{"14":1,"15":1}}],["black",{"2":{"12":2}}],["blue",{"2":{"11":2,"12":2}}],["block",{"2":{"10":2,"11":2,"128":2,"220":1}}],["base",{"2":{"208":2}}],["bash",{"2":{"127":2,"209":1}}],["banner=hello",{"2":{"162":1}}],["banana",{"2":{"1":1}}],["baz",{"2":{"61":1}}],["bar",{"2":{"61":2}}],["bad",{"2":{"10":1,"11":1,"12":1,"13":1,"48":2,"49":1,"50":1,"51":1,"52":2,"53":1,"54":1,"55":1,"56":1,"68":1,"69":1,"70":1,"71":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"93":2,"94":1,"95":1}}],["b",{"2":{"7":1,"60":1,"61":4,"72":4,"81":4,"83":2,"88":4,"105":2,"106":1,"120":1,"220":1}}],["하단",{"2":{"191":1}}],["하단에",{"0":{"52":1,"84":1},"2":{"20":1,"188":1,"217":1}}],["하지",{"2":{"143":2,"212":1}}],["하지만",{"2":{"60":1,"61":1,"62":1,"102":1}}],["하거나",{"2":{"132":1}}],["하드웨어",{"0":{"128":1},"1":{"129":1,"130":1,"131":1},"2":{"128":1}}],["하게",{"2":{"123":1}}],["하여",{"2":{"120":1}}],["하기",{"2":{"114":1}}],["하기에는",{"2":{"100":1}}],["하나의",{"2":{"105":1}}],["하나가",{"2":{"100":1,"128":1}}],["하위",{"0":{"127":1},"2":{"97":1,"100":3,"127":1}}],["하는",{"2":{"60":1,"97":2,"100":2,"105":1,"119":1,"120":2,"128":1,"205":1,"221":1}}],["하이라이트와",{"2":{"57":1}}],["하이라이트를",{"2":{"57":1}}],["하며",{"0":{"54":1},"2":{"199":1}}],["하고",{"2":{"7":2}}],["하다",{"2":{"6":1,"115":1,"119":1}}],["확장",{"2":{"209":2}}],["확장되어야",{"2":{"126":1}}],["확장자로",{"2":{"114":1}}],["확장자가",{"2":{"1":1}}],["확장자",{"0":{"1":1},"2":{"222":1}}],["확실하지",{"2":{"96":1}}],["확인된다면",{"2":{"126":1}}],["확인하기",{"2":{"125":1}}],["확인하는",{"2":{"97":1}}],["확인되면",{"2":{"120":1}}],["확인해본다",{"2":{"126":1}}],["확인해",{"2":{"114":1}}],["확인이",{"2":{"97":1}}],["확인을",{"2":{"65":1}}],["확인",{"2":{"65":1,"221":1}}],["확인한다",{"2":{"59":1}}],["확인할",{"0":{"85":1},"2":{"7":1,"58":1,"103":2,"118":1,"122":1,"123":1,"201":1}}],["쉽게",{"2":{"7":1,"57":1,"97":1,"218":1}}],["환경변수",{"2":{"222":1}}],["환경변수에서",{"2":{"32":1}}],["환경의",{"2":{"221":1}}],["환경을",{"2":{"219":1}}],["환경으로",{"2":{"188":1}}],["환경설정",{"0":{"187":1},"1":{"188":1,"189":1,"190":1,"191":1,"192":1}}],["환경이",{"2":{"179":1}}],["환경",{"0":{"188":1},"1":{"189":1,"190":1},"2":{"179":1}}],["환경에서만",{"2":{"104":1}}],["환경에서",{"2":{"7":1,"97":2,"100":1,"114":1,"218":1}}],["환영합니다",{"2":{"0":1}}],["에는",{"2":{"139":1,"205":1}}],["에디터로",{"2":{"177":1}}],["에디터가",{"2":{"118":1}}],["에디터나",{"2":{"7":1}}],["에",{"2":{"118":1}}],["에러로",{"0":{"111":1},"1":{"112":1,"113":1}}],["에러이다",{"2":{"100":1}}],["에러",{"2":{"100":1,"102":1,"115":1}}],["에러인지",{"2":{"97":1}}],["에러가",{"2":{"21":1,"22":1,"32":1,"100":1,"102":1,"111":1,"208":1}}],["에서",{"2":{"0":1,"98":1,"111":1,"128":1}}],["텍스트를",{"2":{"96":1}}],["텍스트의",{"2":{"63":1}}],["텍스트",{"2":{"7":1,"64":1,"96":1,"106":1,"177":1}}],["일시적으로",{"2":{"167":1}}],["일치하는",{"2":{"143":1}}],["일치하는지",{"2":{"123":1}}],["일치하더라도",{"2":{"123":1}}],["일치",{"0":{"85":1}}],["일반적인",{"2":{"123":1,"220":1}}],["일반적으로는",{"2":{"100":1}}],["일반적으로",{"2":{"96":1,"98":1,"102":1,"119":1,"208":1,"222":1}}],["일반",{"2":{"7":1,"220":1}}],["일부는",{"2":{"58":1}}],["일부",{"2":{"6":1,"96":1}}],["추론할",{"2":{"115":1}}],["추론에",{"2":{"115":1}}],["추출할",{"2":{"114":1}}],["추후",{"2":{"89":2,"96":1}}],["추세에서는",{"2":{"62":1}}],["추가할",{"2":{"195":1,"196":1,"197":1}}],["추가",{"0":{"89":1},"2":{"203":1,"219":1}}],["추가해야",{"2":{"102":1}}],["추가해준다",{"2":{"57":1}}],["추가해주는",{"2":{"22":1}}],["추가한다",{"2":{"21":1,"22":1,"35":1,"188":1,"190":1,"217":1}}],["추가로",{"2":{"1":1}}],["추적이",{"2":{"7":1}}],["추적하지",{"2":{"7":1}}],["명칭이며",{"2":{"199":1}}],["명시해주는",{"2":{"120":1}}],["명시하지",{"2":{"120":1}}],["명시된",{"2":{"120":1}}],["명확하지",{"2":{"96":1}}],["명확하게",{"2":{"7":1,"96":1,"97":1,"98":1,"103":1}}],["명령으로",{"2":{"219":1}}],["명령",{"2":{"134":1}}],["명령어가",{"2":{"214":1}}],["명령어에서",{"2":{"139":1}}],["명령어로",{"0":{"139":1,"215":1,"216":1},"1":{"140":1,"141":1,"142":1},"2":{"128":1,"192":1,"201":1,"202":1,"208":1,"211":1,"214":1}}],["명령어는",{"2":{"117":1,"139":1}}],["명령어",{"0":{"143":1,"220":1},"2":{"117":1}}],["명령어이다",{"2":{"114":1}}],["명령어를",{"2":{"20":1,"114":3,"117":1,"118":2,"128":2,"134":1,"178":1,"213":1,"218":1,"219":1}}],["명령형",{"2":{"97":1}}],["명령은",{"0":{"56":1}}],["명령을",{"2":{"16":1,"31":1,"32":1,"128":1,"139":1,"192":1,"205":1,"213":1,"214":2,"217":1}}],["명명",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1}}],["않아야",{"2":{"222":1}}],["않아도",{"2":{"115":1,"118":1,"120":1}}],["않고",{"2":{"222":1,"224":1}}],["않았다면",{"2":{"212":1}}],["않았을",{"2":{"196":1}}],["않았거나",{"2":{"89":1}}],["않음이다",{"2":{"177":1}}],["않음",{"2":{"143":2}}],["않다면",{"2":{"212":1}}],["않다",{"2":{"121":1,"203":1}}],["않다는",{"2":{"103":1}}],["않지만",{"2":{"118":1}}],["않게",{"2":{"103":1}}],["않으면",{"2":{"120":1}}],["않으며",{"2":{"97":1,"102":1}}],["않으려면",{"2":{"57":1,"221":1}}],["않거나",{"2":{"96":1}}],["않을",{"2":{"58":1,"59":1,"97":1,"119":1}}],["않은",{"0":{"12":1,"78":1},"2":{"16":1,"58":1,"89":1,"96":2,"102":1,"103":1}}],["않기도",{"2":{"7":1}}],["않는",{"2":{"7":2,"18":1,"96":1,"97":1,"103":1,"118":1,"120":1,"121":2,"172":1,"217":1}}],["않는다면",{"2":{"57":1}}],["않는다",{"0":{"12":1,"13":1,"15":1,"49":1,"51":1,"54":1,"69":1,"71":1,"81":1,"88":1,"93":1},"2":{"1":2,"4":1,"57":1,"103":1,"111":1,"120":2}}],["않도록",{"2":{"7":1}}],["넣고",{"2":{"121":1}}],["넣지",{"0":{"49":1,"71":1},"2":{"7":1}}],["넣어도",{"2":{"1":1}}],["n>",{"2":{"126":2}}],["n",{"2":{"126":8,"128":3,"130":1,"131":1,"221":1}}],["network",{"2":{"178":3}}],["never형으로",{"2":{"126":1}}],["never",{"2":{"126":2}}],["negative",{"2":{"126":1}}],["new",{"2":{"86":2,"118":2,"119":3,"125":1}}],["npm",{"2":{"117":2}}],["npx는",{"2":{"114":1}}],["npx",{"2":{"114":1}}],["nipsum",{"2":{"106":2}}],["nlorem",{"2":{"106":2}}],["nworld",{"2":{"106":2}}],["number2",{"2":{"126":2}}],["number1",{"2":{"126":2}}],["number>",{"2":{"126":2}}],["number형으로",{"2":{"126":1}}],["number형",{"2":{"123":1}}],["number",{"0":{"126":1},"2":{"97":4,"115":2,"124":3,"126":5}}],["null과",{"0":{"82":1},"2":{"98":1}}],["nullish한",{"2":{"98":1}}],["nullish",{"0":{"79":1,"98":1},"1":{"99":1},"2":{"99":1}}],["null",{"0":{"79":1},"2":{"82":1,"97":4,"98":3,"100":3,"121":3}}],["null이거나",{"2":{"100":2}}],["null이나",{"2":{"98":1,"100":1}}],["null이",{"2":{"64":2}}],["no인",{"2":{"177":1}}],["non",{"2":{"126":1}}],["no",{"0":{"115":1,"152":1,"157":1,"158":1,"159":1},"2":{"115":2,"177":2,"221":1}}],["normal",{"2":{"97":1}}],["nodejs",{"2":{"112":1,"117":1}}],["nodejs의",{"2":{"97":1}}],["nodejs는",{"2":{"59":1}}],["node",{"2":{"61":1,"118":5}}],["note",{"2":{"96":1}}],["not",{"2":{"14":1,"15":1,"21":1,"32":1,"72":1,"73":1,"96":1,"100":1,"102":1,"118":1,"121":2,"126":1}}],["notation",{"0":{"7":1}}],["ndkversion",{"2":{"32":1,"33":2}}],["nautilus",{"2":{"142":1}}],["naming",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1}}],["named",{"2":{"220":1}}],["name=",{"2":{"17":1}}],["name값을",{"2":{"16":1}}],["name",{"2":{"6":1,"17":1,"35":4,"58":1,"59":1,"64":2,"107":1,"108":1,"109":2,"110":4,"119":4,"205":5,"206":1,"217":1,"219":1}}],["nan",{"2":{"1":3,"98":1}}],["헝가리안",{"0":{"7":1}}],["pkla",{"2":{"191":1}}],["perform",{"2":{"208":1}}],["permanent",{"2":{"166":1,"175":1,"182":1,"195":1,"196":4}}],["person",{"2":{"103":12}}],["portainer",{"2":{"219":1}}],["port",{"2":{"196":1}}],["port=6000",{"2":{"196":1}}],["port=3389",{"2":{"182":1}}],["port=22",{"2":{"196":1}}],["port=23",{"2":{"175":1}}],["port=21",{"2":{"166":1}}],["port=10100",{"2":{"161":1}}],["port=10090",{"2":{"160":1}}],["polkit",{"2":{"191":1}}],["positivenumber라는",{"2":{"126":1}}],["positivenumber",{"2":{"126":4}}],["positive",{"0":{"126":1}}],["pipe",{"2":{"220":1}}],["picturescd",{"2":{"143":1}}],["pin은",{"2":{"129":1}}],["pin",{"0":{"129":1,"130":1},"1":{"130":1,"131":1},"2":{"128":3,"130":2}}],["pin과",{"2":{"128":1,"129":2}}],["pin이나",{"2":{"128":1}}],["piv",{"2":{"128":11,"130":1,"131":1}}],["p>html",{"2":{"54":1}}],["p>",{"2":{"53":4,"54":7}}],["p>내용",{"2":{"53":4,"54":6}}],["puts",{"2":{"219":1}}],["puk을",{"2":{"129":1}}],["puk은",{"2":{"129":2}}],["puk",{"0":{"129":1,"131":1},"1":{"130":1,"131":1},"2":{"128":2,"131":2}}],["pull",{"2":{"127":2}}],["pull명령을",{"2":{"127":1}}],["pull을",{"0":{"127":1}}],["push한",{"2":{"118":1}}],["push할",{"2":{"118":1}}],["push",{"2":{"118":1}}],["push하여",{"2":{"116":1}}],["purchasescreenstate",{"2":{"45":1}}],["purchasescreen>",{"2":{"45":1}}],["purchasescreen",{"2":{"45":2}}],["purchase",{"2":{"44":1,"45":1}}],["pub",{"2":{"20":1,"32":1}}],["public",{"2":{"18":1,"102":1}}],["pubspec",{"2":{"16":1,"22":2,"35":1}}],["prettier",{"0":{"92":1},"1":{"93":1,"94":1,"95":1}}],["private",{"2":{"102":1}}],["private일",{"0":{"40":1}}],["print",{"2":{"35":1,"57":3}}],["project",{"2":{"118":2}}],["process",{"2":{"112":1,"113":3}}],["prompt에",{"2":{"64":1}}],["prompt는",{"2":{"64":1}}],["prompt",{"0":{"62":1,"64":1},"1":{"63":1,"64":1,"65":1},"2":{"62":1,"64":2}}],["provider",{"2":{"22":2}}],["property",{"2":{"32":1}}],["propertylist",{"2":{"18":1}}],["properties에",{"2":{"21":1}}],["properties",{"2":{"21":1,"100":1}}],["propertiesspecify",{"2":{"21":1}}],["profile",{"2":{"6":1,"191":3}}],["png",{"2":{"20":1}}],["plaintextheadersize",{"2":{"222":1,"223":1,"224":1}}],["platform",{"2":{"6":1}}],["plugins",{"2":{"37":1}}],["plist>",{"2":{"18":1}}],["plist",{"2":{"18":4}}],["passphrase",{"2":{"224":1}}],["pascal",{"0":{"4":1}}],["pagesize",{"2":{"222":1,"223":1,"224":1}}],["parameter",{"2":{"126":1}}],["part",{"2":{"96":1}}],["park",{"2":{"35":1}}],["parent",{"0":{"25":1,"27":1}}],["parent를",{"2":{"23":1}}],["package",{"2":{"22":3,"35":1,"41":1,"114":1,"118":2,"205":3,"206":1}}],["packages가",{"2":{"22":1}}],["packages",{"0":{"22":1},"2":{"22":2}}],["package=",{"2":{"17":1}}],["pathwithname",{"2":{"134":1}}],["path",{"2":{"20":1,"22":7,"35":2,"139":1,"140":1,"141":1,"142":1,"143":2}}],["path에는",{"2":{"20":1}}],["padding이나",{"2":{"15":1}}],["p",{"2":{"11":2,"128":6,"130":1,"131":1,"164":1,"174":1,"183":1,"195":3,"220":1}}],["자신의",{"2":{"119":1}}],["자기",{"2":{"119":1}}],["자체에",{"2":{"118":1}}],["자료형이다",{"2":{"103":1}}],["자료형",{"0":{"103":1}}],["자료형에",{"2":{"97":1}}],["자료형을",{"0":{"85":1}}],["자바스크립트는",{"2":{"102":1}}],["자바스크립트에서는",{"2":{"119":1}}],["자바스크립트에서",{"2":{"97":1}}],["자바스크립트에서의",{"2":{"96":1}}],["자바스크립트",{"2":{"58":1,"60":1,"96":1,"102":1}}],["자동",{"0":{"31":1},"2":{"115":1}}],["자식",{"2":{"23":1}}],["자주",{"2":{"6":1}}],["자세한",{"2":{"0":1,"126":1}}],["udp",{"2":{"196":1}}],["ufw",{"0":{"165":1,"176":1,"181":1,"197":1},"2":{"165":1,"176":1,"181":1,"194":1,"197":2}}],["umask=002",{"2":{"155":1}}],["ubuntu는",{"2":{"201":1}}],["ubuntu에는",{"2":{"199":1}}],["ubuntu와",{"2":{"199":1}}],["ubuntu",{"0":{"150":1,"181":1,"185":1,"201":1,"202":1,"211":1},"2":{"201":1,"202":1,"219":3}}],["url",{"2":{"118":1}}],["url과",{"2":{"118":1}}],["url을",{"2":{"6":1}}],["usr",{"2":{"177":1,"220":1}}],["us",{"2":{"99":1}}],["user",{"2":{"39":1,"40":1,"97":2,"118":2,"143":2,"177":1,"191":1}}],["userid",{"2":{"39":1,"177":1}}],["usersettings",{"2":{"117":1}}],["users",{"2":{"35":2,"110":1,"135":1,"191":1}}],["use",{"2":{"22":1,"102":3}}],["unsquashfs",{"2":{"208":1}}],["unblock",{"2":{"128":3}}],["uniqueid",{"2":{"119":2}}],["unless",{"2":{"118":1}}],["unpacked",{"2":{"114":1}}],["uncaughtexception",{"2":{"112":2}}],["uncaught",{"2":{"102":1}}],["undefined가",{"2":{"100":1}}],["undefined로",{"2":{"100":1}}],["undefined인",{"2":{"100":1}}],["undefined이므로",{"2":{"100":1}}],["undefined",{"2":{"98":3,"100":4}}],["undefined일",{"2":{"98":2,"100":1}}],["undefined는",{"0":{"82":1}}],["underscore",{"2":{"60":1}}],["unknown",{"2":{"32":1,"79":3}}],["ul>",{"2":{"55":4}}],["util",{"2":{"37":1,"97":2}}],["utils",{"2":{"35":1,"37":1}}],["utf",{"2":{"18":1}}],["update",{"2":{"203":1}}],["updatestatus",{"2":{"87":2}}],["upgrade",{"2":{"31":1}}],["upload",{"2":{"5":1,"154":1}}],["모드의",{"0":{"160":1,"161":1}}],["모드는",{"2":{"102":1}}],["모드가",{"2":{"102":1}}],["모드를",{"0":{"159":1},"2":{"102":3}}],["모드",{"0":{"102":1},"2":{"102":1}}],["모호한",{"0":{"83":1}}],["모달",{"2":{"62":1}}],["모듈의",{"2":{"114":2}}],["모듈에서",{"2":{"103":1}}],["모듈",{"0":{"61":1}}],["모듈을",{"2":{"60":1,"61":1}}],["모듈로는",{"2":{"60":1}}],["모듈이다",{"2":{"60":1}}],["모듈이나",{"2":{"59":1,"102":1}}],["모듈은",{"2":{"60":1}}],["모던한",{"2":{"66":1}}],["모던",{"2":{"7":1,"62":1}}],["모든",{"0":{"127":1},"2":{"6":1,"58":1,"97":2,"117":1,"120":1,"126":1,"127":1}}],["모두",{"0":{"48":1},"2":{"5":1,"58":1,"97":3,"100":1,"104":1,"107":1,"114":1,"119":1,"120":2,"128":2,"195":1,"196":1,"197":1,"218":1}}],["케밥",{"0":{"6":1}}],["케이스와",{"2":{"4":1,"7":1}}],["케이스",{"0":{"2":1,"3":1,"4":1,"5":1,"6":1,"37":1,"39":1,"41":1,"42":1,"43":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1},"2":{"2":1,"3":1}}],["mstsc",{"2":{"193":1}}],["m",{"2":{"164":1,"183":1}}],["mkdir",{"2":{"156":1}}],["mount",{"2":{"208":1}}],["modify",{"2":{"191":2}}],["modules와",{"2":{"118":1}}],["modules",{"2":{"118":4}}],["mode",{"0":{"102":1},"2":{"102":2}}],["mozilla",{"2":{"99":1,"101":1,"124":1}}],["must",{"2":{"89":2}}],["multipass는",{"2":{"218":1}}],["multipass",{"0":{"218":1,"219":1},"1":{"219":1},"2":{"218":2,"219":4}}],["multi",{"2":{"1":1}}],["media",{"2":{"219":2}}],["method",{"2":{"119":1}}],["menu까지",{"2":{"100":1}}],["menus",{"2":{"100":2}}],["menu",{"2":{"100":6}}],["me",{"2":{"57":3}}],["microsoft",{"2":{"78":2,"108":1,"193":2}}],["minikube",{"2":{"219":2}}],["minimum",{"0":{"24":1,"26":1}}],["min",{"2":{"23":1,"24":1,"26":1,"160":1}}],["min과",{"2":{"23":1}}],["minsdkversion=30",{"2":{"21":1}}],["minsdk",{"2":{"21":2}}],["mipmap",{"2":{"17":1}}],["master",{"2":{"215":1,"216":1}}],["managing",{"2":{"219":1}}],["manager",{"2":{"191":6}}],["manifest>",{"2":{"17":1}}],["manifest",{"2":{"17":1}}],["macos를",{"2":{"218":1}}],["macos의",{"2":{"212":1}}],["macos에서",{"2":{"193":1}}],["macos",{"0":{"110":1,"141":1,"212":1}}],["mac",{"2":{"77":2,"78":2}}],["map",{"2":{"71":2}}],["material",{"2":{"41":2,"57":3}}],["match",{"0":{"25":1,"27":1},"2":{"23":1}}],["mainappstate",{"2":{"43":1}}],["mainapp>",{"2":{"43":1}}],["mainapp",{"2":{"43":2}}],["mainaxissize와",{"2":{"27":1}}],["mainaxissize는",{"2":{"23":1}}],["mainaxissize",{"0":{"23":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"23":2,"24":2,"25":2,"26":2,"27":2}}],["main",{"2":{"17":1,"20":1,"22":2,"35":1,"37":1,"44":1,"73":2,"96":4,"102":2}}],["margin",{"2":{"15":1}}],["maximum",{"0":{"25":1,"27":1}}],["max는",{"2":{"23":1}}],["max",{"2":{"5":1,"23":1,"25":1,"27":1,"161":1}}],["mydata",{"2":{"222":7}}],["mydiv",{"2":{"13":2,"14":2,"15":3,"51":2}}],["myubuntu가",{"2":{"219":1}}],["myubuntu",{"2":{"219":2}}],["myubuntu라는",{"2":{"219":1}}],["myclass",{"2":{"10":2,"11":6}}],["my",{"0":{"209":1,"214":1},"1":{"210":1,"211":1,"212":1,"213":1,"214":1,"215":2,"216":2,"217":1},"2":{"6":1,"209":1,"214":1,"217":1}}],["hmacalgorithm",{"2":{"222":1,"223":1,"224":1}}],["hi",{"2":{"120":4}}],["home",{"2":{"100":3,"117":1,"118":2,"138":1,"143":2,"153":1,"167":1,"217":1,"220":2}}],["halftruefunction",{"2":{"70":1}}],["ham",{"2":{"35":1}}],["h5>",{"2":{"54":1}}],["h5>참고자료",{"2":{"54":1}}],["h6>",{"2":{"54":1}}],["h6>html",{"2":{"54":1}}],["h4",{"2":{"54":1}}],["h3>html5",{"2":{"54":1}}],["h3>",{"2":{"54":2}}],["h3>javascript",{"2":{"54":1}}],["h3",{"2":{"54":1}}],["h2~h6은",{"2":{"54":1}}],["h2",{"2":{"54":1}}],["h2>html5",{"2":{"54":1}}],["h2>javascript",{"2":{"54":1}}],["h2>",{"2":{"53":1,"54":3}}],["h2>참고자료",{"2":{"53":1,"54":1}}],["h1",{"2":{"54":1}}],["h1>참고자료",{"2":{"53":1}}],["h1>",{"2":{"53":3,"54":2}}],["h1>코드",{"2":{"53":2,"54":2}}],["h1은",{"0":{"53":1},"2":{"54":1}}],["html",{"0":{"47":1},"1":{"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1},"2":{"48":3,"49":2,"50":2,"51":2,"52":3,"53":2,"54":2,"55":2,"56":2,"112":1}}],["html5",{"0":{"46":1},"1":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1}}],["https",{"2":{"19":1,"59":1,"99":1,"101":1,"112":1,"113":1,"116":2,"117":1,"118":2,"124":1,"126":1,"128":1,"199":1,"215":1,"216":1,"217":1,"218":1,"225":1}}],["http",{"2":{"17":1,"18":1}}],["here",{"2":{"115":2}}],["header를",{"2":{"100":1}}],["header",{"2":{"100":12}}],["heading은",{"0":{"54":1}}],["heading",{"0":{"53":1}}],["head>",{"2":{"52":4}}],["height로",{"2":{"29":1}}],["height",{"0":{"26":1,"27":1,"29":1},"2":{"29":1}}],["hello를",{"2":{"102":1}}],["hello",{"2":{"1":1,"56":2,"57":3,"64":1,"96":3,"97":14,"100":1,"102":3,"105":2,"106":2,"120":4}}],["hungarian",{"0":{"7":1}}],["humanized",{"2":{"5":1}}],["상태로",{"2":{"128":2}}],["상속받은",{"2":{"126":1}}],["상황을",{"2":{"120":1,"132":1}}],["상황에",{"2":{"119":1,"120":1}}],["상황이나",{"2":{"120":1}}],["상황이",{"2":{"64":1}}],["상위",{"2":{"57":2,"100":2,"143":1}}],["상수",{"2":{"5":1}}],["상단의",{"2":{"0":1,"217":1}}],["바로",{"2":{"224":1}}],["바로가기",{"2":{"96":1}}],["바람직",{"2":{"121":1}}],["바람직하다",{"2":{"96":1}}],["바꾼다면",{"2":{"121":1}}],["바꾸어버릴",{"2":{"103":1}}],["바",{"2":{"5":1}}],["언팩",{"0":{"114":1}}],["언더스코어",{"0":{"40":1},"2":{"222":1}}],["언더",{"2":{"5":1}}],["언어와",{"2":{"96":1}}],["언어의",{"2":{"2":1}}],["언어에서는",{"2":{"6":1,"7":1}}],["언어에서",{"2":{"1":1,"2":1,"3":1}}],["각자",{"2":{"214":1}}],["각각의",{"2":{"97":1,"120":1}}],["각각",{"0":{"95":1},"2":{"127":1,"128":1,"129":1,"139":1}}],["각",{"2":{"5":1,"6":1,"15":1,"107":1,"222":1}}],["각종",{"2":{"0":1,"57":1,"222":1}}],["스토어에",{"2":{"199":1}}],["스토어",{"2":{"199":2}}],["스프레드시트",{"2":{"118":1}}],["스트링이나",{"2":{"104":1}}],["스크립트이다",{"2":{"127":1}}],["스크립트는",{"2":{"127":1}}],["스크립트로",{"2":{"118":1}}],["스크립트가",{"2":{"116":1}}],["스크립트에",{"2":{"103":1}}],["스크립트",{"2":{"102":1,"118":3}}],["스타",{"2":{"61":1}}],["스타일",{"2":{"53":2,"54":2,"66":1}}],["스타일을",{"0":{"51":1},"2":{"62":1,"97":1}}],["스튜디오를",{"2":{"32":1}}],["스네이크",{"0":{"5":1,"37":1,"41":1}}],["스니펫과",{"2":{"0":1}}],["gnome",{"0":{"189":1},"2":{"179":1}}],["g",{"2":{"117":1}}],["google",{"2":{"116":3,"117":4,"118":6}}],["goodbye",{"2":{"120":4}}],["good",{"2":{"10":1,"11":1,"12":1,"13":1,"14":2,"15":2,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"68":1,"69":1,"70":1,"71":1,"72":2,"73":2,"75":2,"76":1,"77":1,"78":1,"79":2,"80":2,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"93":1,"94":1,"95":1}}],["gone",{"2":{"113":3}}],["git폴더가",{"2":{"127":1}}],["git",{"0":{"127":1},"2":{"127":4}}],["gitignore와",{"2":{"118":1}}],["github",{"2":{"19":1,"61":1,"116":2,"215":1,"216":1,"217":1,"225":1}}],["given",{"2":{"89":2}}],["generic",{"2":{"201":1}}],["gesturedetector",{"2":{"57":1}}],["gesturedetector의",{"2":{"57":1}}],["gesturedetector과",{"2":{"57":1}}],["getresponse",{"2":{"120":3}}],["getuseraccount",{"2":{"115":2}}],["getcolor",{"2":{"86":1}}],["getcompanyinfo",{"2":{"3":1}}],["getlistfromjson",{"2":{"35":2}}],["getapplicationdocumentsdirectory",{"2":{"22":1}}],["get",{"0":{"86":1},"2":{"5":1,"6":1,"22":1,"32":2,"86":2}}],["green",{"2":{"51":2}}],["gradle에서",{"2":{"32":1}}],["gradle",{"2":{"21":2}}],["gt",{"2":{"35":1,"126":1}}],["guides",{"2":{"116":1}}],["guide",{"0":{"8":1,"46":1,"66":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1}}],["globaloptions",{"2":{"4":1}}],["잘못되었거나",{"2":{"208":1}}],["잘못된",{"2":{"7":2}}],["잘",{"2":{"4":1}}],["아무",{"2":{"222":1}}],["아무런",{"2":{"143":2}}],["아닐",{"2":{"214":1}}],["아주",{"2":{"106":1}}],["아닌",{"2":{"58":1,"64":1,"97":1,"100":1,"102":1,"114":1,"124":1,"126":1}}],["아니다",{"2":{"96":1}}],["아니기",{"2":{"96":1}}],["아니라면",{"2":{"97":1,"224":1}}],["아니라",{"2":{"57":1,"102":1,"105":1}}],["아니면서",{"2":{"100":1}}],["아니면",{"2":{"4":1}}],["아이콘은",{"2":{"20":1}}],["아이콘의",{"2":{"20":1}}],["아이콘을",{"2":{"19":1,"20":1}}],["아래에",{"2":{"120":2}}],["아래와",{"2":{"35":1,"57":1,"97":2,"103":1,"106":1,"117":1,"120":1,"121":3,"123":1,"126":1,"128":1,"195":1,"196":2,"197":1,"205":1}}],["아래",{"2":{"16":1,"21":1,"58":1,"97":1,"106":1,"107":1,"108":1,"119":1,"120":3,"126":2,"127":1,"128":3,"139":1,"148":1,"151":1,"178":1,"188":1,"191":2,"192":1,"201":1,"202":1,"214":1,"218":1,"222":1}}],["아래쪽에",{"0":{"11":1}}],["아래는",{"2":{"2":1,"118":1}}],["특징은",{"2":{"106":1}}],["특성으로",{"2":{"103":1}}],["특성",{"2":{"98":1}}],["특성에",{"2":{"2":1}}],["특수한",{"2":{"96":1,"102":1}}],["특정",{"2":{"62":1,"65":1,"96":1,"97":1,"102":1,"114":1,"115":1,"119":1,"120":1,"123":1,"124":1,"125":1,"143":2,"188":1,"196":1,"205":1,"208":1}}],["특히",{"0":{"14":1}}],["특별한",{"2":{"4":1,"97":1,"224":1}}],["때도",{"2":{"123":1}}],["때를",{"2":{"121":1}}],["때와",{"2":{"121":1,"214":1}}],["때가",{"2":{"120":1,"132":1}}],["때에",{"2":{"100":1}}],["때에도",{"2":{"58":1}}],["때만",{"0":{"40":1},"2":{"98":1,"100":1,"123":1}}],["때문에",{"2":{"4":1,"7":1,"57":1,"62":1,"96":2,"98":1,"106":1,"118":1,"119":2}}],["때",{"0":{"14":1,"55":1,"71":1,"79":1,"80":1,"81":1},"2":{"4":1,"5":1,"6":1,"22":1,"57":1,"58":1,"80":1,"98":1,"100":1,"103":1,"105":1,"118":1,"119":2,"208":1,"209":1,"221":1}}],["때는",{"2":{"2":1,"7":1,"35":1,"97":1,"123":1}}],["파이프",{"2":{"220":1}}],["파동이나",{"2":{"57":1}}],["파동",{"2":{"57":3}}],["파라미터인",{"2":{"23":1}}],["파라미터",{"0":{"23":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"115":1}}],["파스칼",{"0":{"4":1}}],["파일만",{"2":{"118":1}}],["파일들도",{"2":{"118":1}}],["파일들이",{"2":{"114":1,"118":1}}],["파일로",{"2":{"116":1}}],["파일은",{"2":{"114":2,"118":2,"222":1}}],["파일과",{"2":{"107":1}}],["파일에서",{"2":{"114":1}}],["파일에서는",{"2":{"102":1}}],["파일에",{"2":{"102":1,"114":1}}],["파일명",{"2":{"222":1}}],["파일명이",{"2":{"222":1}}],["파일명과",{"0":{"45":1}}],["파일명은",{"0":{"38":1}}],["파일의",{"2":{"35":1,"114":1,"135":1,"138":1,"220":1}}],["파일이나",{"2":{"118":1}}],["파일이",{"2":{"31":1,"35":2,"118":1,"132":1,"148":1,"208":1}}],["파일을",{"2":{"17":1,"18":1,"32":1,"35":1,"107":1,"108":1,"114":3,"118":3,"132":2,"177":1,"188":1,"191":2,"208":1,"217":1,"218":1,"220":1,"222":2,"224":2}}],["파일",{"0":{"1":1,"35":1,"37":1,"44":1,"45":1,"107":1,"114":1,"132":1,"139":1,"155":1,"158":1,"220":1},"1":{"108":1,"109":1,"110":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"140":1,"141":1,"142":1},"2":{"1":3,"102":1,"107":1,"114":2,"132":1,"135":1,"138":1,"139":1,"191":1,"220":8,"222":2}}],["feb",{"2":{"220":1}}],["fssl",{"2":{"215":1}}],["fsutil",{"2":{"134":1,"135":1}}],["fatal",{"2":{"208":1}}],["failed",{"2":{"208":2}}],["failure",{"2":{"177":1}}],["fallocate",{"2":{"137":1,"138":1}}],["falsy한",{"2":{"98":3}}],["false값일",{"0":{"95":1}}],["false값으로",{"0":{"82":1}}],["falsefunction",{"2":{"69":1,"70":1}}],["false가",{"2":{"65":1}}],["false",{"2":{"60":1,"95":1,"97":2,"98":23,"103":2,"114":1,"120":2,"123":1}}],["flags",{"2":{"177":1}}],["flutterextension",{"2":{"32":1}}],["flutter의",{"2":{"23":1}}],["fluttercommunity",{"2":{"19":1}}],["flutter",{"0":{"16":1,"19":2,"22":1,"23":1,"30":1,"33":1,"34":1,"35":1},"1":{"17":1,"18":1,"20":2,"21":2,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"31":1,"32":1,"33":1,"34":1},"2":{"16":2,"19":1,"20":3,"22":3,"31":3,"32":4,"33":2,"35":4,"41":2}}],["ftp가",{"2":{"167":1}}],["ftppub",{"2":{"153":1}}],["ftp",{"0":{"144":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1}}],["f",{"2":{"97":1,"120":1}}],["function도",{"2":{"100":1}}],["function",{"2":{"73":1,"96":2,"100":2,"102":2,"115":2,"124":1}}],["function은",{"0":{"72":1}}],["function의",{"0":{"71":1}}],["function을",{"0":{"69":1}}],["future",{"2":{"35":1}}],["focal",{"2":{"219":1}}],["foo",{"2":{"61":3}}],["for과",{"2":{"102":1}}],["for문에서",{"0":{"80":1}}],["for",{"0":{"222":1},"1":{"223":1,"224":1,"225":1},"2":{"22":1,"32":1,"80":3,"118":1,"127":1,"208":1,"219":1,"222":1}}],["font",{"2":{"22":1,"97":2}}],["following",{"2":{"22":1,"208":1}}],["free",{"2":{"219":1}}],["freedesktop",{"2":{"191":6}}],["fruit",{"2":{"106":1}}],["fruits",{"2":{"1":1}}],["from",{"2":{"21":1,"97":1,"113":1,"115":1}}],["fifo",{"2":{"220":1}}],["firewall",{"2":{"166":1,"175":1,"182":1,"196":3}}],["firewalld",{"0":{"166":1,"175":1,"182":1,"196":1},"2":{"194":1}}],["first",{"2":{"73":1}}],["fi",{"2":{"127":1}}],["fixme",{"2":{"89":1,"96":1}}],["final",{"2":{"22":1,"35":1}}],["find",{"2":{"21":1,"127":1,"208":2,"219":1}}],["findelementbyid",{"2":{"3":1}}],["filename>",{"2":{"137":1}}],["filesystem",{"2":{"208":1}}],["files",{"2":{"118":1}}],["file",{"2":{"5":2,"22":1,"37":1,"118":2,"134":1,"135":1,"208":2}}],["간격",{"2":{"221":1}}],["간소화할",{"2":{"120":1}}],["간결해보이면서도",{"2":{"119":1}}],["간결하면서도",{"2":{"66":1}}],["간결하게",{"2":{"3":1,"100":1}}],["간략히",{"2":{"121":1}}],["간략하게",{"2":{"119":1,"120":1}}],["간략한",{"2":{"0":1}}],["간단한",{"2":{"199":1}}],["간단",{"0":{"194":1},"1":{"195":1,"196":1,"197":1}}],["간단히",{"2":{"106":1,"114":1,"115":1,"218":1}}],["간단하다",{"2":{"106":1}}],["간편하다",{"2":{"97":1}}],["간",{"2":{"3":1}}],["마찬가지로",{"2":{"97":1,"100":1,"125":1,"214":1}}],["마다",{"2":{"3":1,"15":1,"80":1,"96":1,"100":1,"192":1}}],["마지막에",{"2":{"120":1}}],["마지막",{"2":{"1":2}}],["부가",{"2":{"222":1}}],["부른다",{"2":{"121":1}}],["부동소수점",{"2":{"97":1}}],["부분은",{"2":{"107":1}}],["부분",{"2":{"96":2}}],["부분에",{"2":{"89":1,"96":1}}],["부울연산은",{"0":{"83":1}}],["부모",{"2":{"57":1}}],["부모의",{"2":{"23":1}}],["부제목에만",{"2":{"54":1}}],["부터는",{"2":{"212":1}}],["부터",{"2":{"3":1,"102":1}}],["부족했던",{"2":{"1":1}}],["단축되지",{"0":{"78":1}}],["단축",{"0":{"78":1}}],["단축문을",{"0":{"77":1}}],["단순히",{"2":{"64":1,"106":1,"132":1}}],["단순",{"2":{"63":1}}],["단순한",{"2":{"57":1}}],["단점",{"0":{"105":1}}],["단점이",{"2":{"60":1}}],["단점을",{"2":{"1":1}}],["단",{"2":{"59":1,"64":1}}],["단계가",{"2":{"100":1}}],["단계적으로",{"2":{"100":1}}],["단계로",{"2":{"58":1}}],["단계의",{"0":{"11":1,"73":1}}],["단일",{"0":{"45":1}}],["단수형을",{"0":{"38":1}}],["단위를",{"0":{"13":1}}],["단어",{"2":{"3":2,"5":1,"6":1}}],["첫글자",{"2":{"220":1}}],["첫번째",{"2":{"143":1}}],["첫",{"2":{"3":2,"4":2}}],["표준이",{"2":{"104":1}}],["표준을",{"2":{"100":1,"104":1}}],["표준으로",{"2":{"98":1,"103":1}}],["표시된다",{"2":{"97":1}}],["표시하고",{"0":{"87":1}}],["표시하는",{"0":{"75":1,"91":1}}],["표시할",{"2":{"64":1,"97":4}}],["표시되며",{"2":{"111":1}}],["표시되지",{"2":{"57":1,"97":1}}],["표시되려면",{"2":{"57":1}}],["표시되는",{"2":{"22":1,"115":1}}],["표시",{"0":{"16":1},"1":{"17":1,"18":1},"2":{"16":2}}],["표기법을",{"2":{"7":1}}],["표기법",{"0":{"7":1}}],["표기법으로",{"2":{"3":1}}],["표현되며",{"2":{"124":1}}],["표현되었다",{"2":{"106":1}}],["표현식과",{"2":{"120":1}}],["표현식에",{"2":{"120":1}}],["표현식의",{"2":{"100":1,"120":2}}],["표현해야",{"2":{"106":1}}],["표현은",{"2":{"105":1}}],["표현하고",{"2":{"6":1}}],["표현의",{"2":{"5":1}}],["표현할",{"0":{"55":1},"2":{"3":1,"5":1,"6":1,"97":1,"100":1,"103":1,"106":1,"120":1}}],["표현한다",{"2":{"3":1}}],["표현",{"0":{"220":1},"2":{"1":1}}],["형으로",{"2":{"103":1}}],["형식",{"2":{"118":1}}],["형식이며",{"2":{"220":1}}],["형식이었다면",{"2":{"98":1}}],["형식이기도",{"2":{"6":1}}],["형식에",{"0":{"220":1},"2":{"60":1}}],["형식의",{"2":{"58":1,"102":1}}],["형식을",{"2":{"1":1}}],["형태에",{"2":{"3":1}}],["굴곡진",{"2":{"3":1}}],["낙타의",{"2":{"3":1}}],["cmd",{"2":{"166":1,"175":1,"182":1,"196":3}}],["centos",{"0":{"149":1,"182":1,"186":1,"203":1},"2":{"167":1,"203":1}}],["ccc",{"2":{"128":1}}],["cd",{"0":{"143":1},"2":{"127":2,"143":8}}],["createnew",{"2":{"134":1,"135":1}}],["created",{"2":{"118":2}}],["create",{"2":{"118":2,"191":2}}],["createstate",{"2":{"43":1,"45":1}}],["cnum",{"2":{"105":2,"106":2}}],["curl",{"0":{"215":1},"2":{"214":2,"215":1}}],["current",{"2":{"86":2}}],["currentvalue",{"2":{"79":3}}],["cupertinoicons",{"2":{"22":1}}],["cupertino",{"2":{"22":2}}],["chsh",{"2":{"213":2}}],["chmod",{"2":{"167":1}}],["chuid",{"2":{"128":1}}],["character",{"2":{"220":1}}],["charmers",{"2":{"219":1}}],["charm",{"2":{"219":1}}],["channel",{"2":{"205":2}}],["change",{"2":{"61":1,"130":1,"131":1}}],["chaining",{"0":{"100":1},"1":{"101":1},"2":{"101":1,"119":1}}],["child",{"2":{"97":2,"113":1}}],["children",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1}}],["cloud",{"2":{"219":2}}],["cloned",{"2":{"118":1}}],["clonedeep",{"0":{"60":1},"2":{"60":1}}],["clone",{"0":{"61":1},"2":{"61":5,"116":1}}],["clientalivecountmax의",{"2":{"221":1}}],["clientalivecountmax가",{"2":{"221":1}}],["clientalivecountmax",{"2":{"221":2}}],["clientaliveinterval에",{"2":{"221":1}}],["clientaliveinterval이",{"2":{"221":1}}],["clientaliveinterval",{"2":{"221":2}}],["client",{"2":{"193":1}}],["cli",{"2":{"117":1,"128":1,"199":1}}],["click",{"2":{"57":3,"100":1}}],["claspignore는",{"2":{"118":1}}],["claspignore",{"2":{"118":2}}],["clasp를",{"2":{"118":1}}],["clasp의",{"2":{"117":1}}],["clasp는",{"2":{"116":1,"117":1}}],["clasp",{"0":{"116":1},"2":{"116":2,"117":2,"118":3}}],["class=",{"2":{"49":2,"51":1}}],["class",{"2":{"22":2,"35":1,"45":1}}],["clear",{"2":{"97":1}}],["clear를",{"2":{"97":1}}],["clean",{"2":{"16":1,"31":1,"32":1}}],["cfbundlename",{"2":{"18":1}}],["css를",{"2":{"97":1}}],["css",{"0":{"9":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"10":2,"11":2,"12":2,"13":2,"14":2,"15":3}}],["css3",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1}}],["c",{"2":{"5":1,"83":2,"97":2,"105":2,"106":1,"120":1,"135":1,"215":1,"216":1,"220":1}}],["corruption",{"2":{"208":1}}],["core를",{"2":{"208":1}}],["core18",{"2":{"208":2}}],["core",{"2":{"202":1,"203":1,"208":1}}],["coalescing",{"0":{"98":1},"1":{"99":1},"2":{"99":1}}],["country",{"2":{"119":7}}],["count",{"2":{"97":4}}],["could",{"2":{"32":1}}],["colord",{"2":{"191":2}}],["colors",{"2":{"57":2,"97":2}}],["color",{"2":{"51":1,"86":6,"191":6}}],["column의",{"2":{"27":1}}],["column",{"0":{"23":1,"26":1,"27":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"23":1,"26":1,"27":1}}],["conf",{"0":{"151":1},"1":{"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1},"2":{"149":1,"150":1}}],["config를",{"2":{"221":1}}],["config",{"2":{"109":1,"221":1}}],["confirm은",{"0":{"90":1},"2":{"62":1,"65":1}}],["confirm",{"0":{"62":1,"65":1},"1":{"63":1,"64":1,"65":1},"2":{"65":1,"90":1}}],["conditional",{"2":{"121":1}}],["console의",{"2":{"97":1}}],["console은",{"2":{"97":2}}],["console로",{"0":{"97":1},"2":{"97":1}}],["console을",{"0":{"90":1}}],["console이라는",{"2":{"62":1}}],["console",{"0":{"91":1},"2":{"56":1,"58":2,"59":2,"60":1,"61":2,"64":2,"65":1,"68":2,"90":2,"91":2,"96":2,"97":18,"98":8,"100":5,"102":2,"103":7,"105":2,"123":4,"124":2,"125":2}}],["constructor가",{"2":{"125":1}}],["const와",{"0":{"68":1}}],["const",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"43":1,"45":1,"57":3,"58":1,"59":1,"60":1,"61":2,"68":1,"77":2,"78":4,"80":1,"97":3,"100":1,"103":3,"105":3,"106":4}}],["constant",{"2":{"5":1}}],["convention",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1}}],["convert",{"2":{"35":1}}],["control",{"2":{"219":1}}],["continue",{"2":{"90":1}}],["containers",{"2":{"110":1}}],["container",{"0":{"29":1},"2":{"27":1,"29":1,"48":3,"49":2,"50":2,"57":1}}],["context",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"57":3}}],["content",{"0":{"24":1,"26":1}}],["content와",{"2":{"23":1}}],["compilesdkversion",{"2":{"33":2,"34":1}}],["company라는",{"2":{"119":1}}],["company",{"2":{"17":1,"84":2,"107":1,"110":1,"119":13,"125":4}}],["com",{"2":{"17":2,"18":1,"19":1,"59":1,"107":1,"110":1,"116":2,"117":1,"118":2,"126":2,"128":1,"215":1,"216":1,"217":1,"225":1}}],["comments",{"0":{"96":1}}],["comment",{"2":{"1":2,"96":2}}],["code",{"0":{"8":1,"46":1,"66":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1},"2":{"96":1,"115":2,"208":1}}],["callee",{"2":{"102":1}}],["caller",{"2":{"102":1}}],["callback은",{"0":{"73":1}}],["candidate",{"2":{"205":1}}],["caniuse",{"2":{"59":1}}],["cannot",{"2":{"21":1,"100":1,"208":5}}],["case문에",{"2":{"120":1}}],["case문의",{"2":{"120":4}}],["case가",{"2":{"120":1}}],["case의",{"2":{"120":1}}],["case에",{"2":{"120":2}}],["case와",{"2":{"120":1}}],["case",{"0":{"3":1,"4":1,"5":1,"6":1,"37":1,"41":1},"2":{"5":1,"6":1,"120":1,"217":1}}],["camelcase",{"0":{"39":1,"42":1,"43":1}}],["camel",{"0":{"3":1}}],["카멜",{"0":{"3":1,"39":1,"42":1,"43":1},"2":{"4":1,"7":1}}],["맞게",{"2":{"2":1,"97":2,"107":1}}],["타입은",{"2":{"126":1}}],["타입스크립트에서",{"2":{"126":1}}],["타입임을",{"2":{"115":1}}],["타입의",{"0":{"58":1},"1":{"59":1,"60":1,"61":1},"2":{"64":1}}],["타입에",{"2":{"7":1}}],["타입을",{"2":{"7":3,"58":1,"115":2,"122":1,"126":2}}],["타입이다",{"2":{"2":1}}],["타입",{"0":{"2":1,"103":1,"122":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"123":1,"124":1,"125":1},"2":{"126":2,"220":1}}],["시도해야",{"2":{"208":1}}],["시도한",{"2":{"208":1}}],["시도",{"2":{"172":1}}],["시에만",{"2":{"128":1}}],["시스템에",{"2":{"179":1}}],["시스템이",{"2":{"132":1}}],["시스템",{"2":{"111":1,"192":1}}],["시",{"0":{"2":1,"79":1,"155":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1},"2":{"32":1,"108":1,"112":1,"113":1,"120":1,"191":1,"192":1}}],["시작한다",{"2":{"192":1}}],["시작할",{"2":{"178":1}}],["시작",{"0":{"168":1,"178":1,"192":1},"2":{"178":4}}],["시작과",{"2":{"106":1}}],["시작점과",{"0":{"49":1}}],["시작하려면",{"2":{"188":1,"192":1}}],["시작하고",{"2":{"1":1}}],["시작하여야",{"2":{"1":1}}],["시작되었습니다",{"2":{"0":1}}],["변동되지",{"2":{"103":1}}],["변동되어도",{"2":{"103":1}}],["변동사항은",{"2":{"1":1}}],["변환할",{"2":{"103":1}}],["변환하여",{"2":{"5":1}}],["변경사항",{"2":{"221":1}}],["변경",{"0":{"130":1,"131":1}}],["변경해야",{"2":{"117":1}}],["변경해주는",{"2":{"19":1}}],["변경되거나",{"2":{"103":1}}],["변경되었음을",{"2":{"58":1}}],["변경함으로서",{"2":{"97":1}}],["변경하여",{"2":{"217":1}}],["변경하였다",{"2":{"58":1}}],["변경하기",{"0":{"16":1,"129":1},"1":{"17":1,"18":1,"130":1,"131":1}}],["변경될",{"2":{"58":1}}],["변경할",{"2":{"20":1,"213":1}}],["변경한다",{"2":{"17":1,"18":1,"143":1}}],["변경한",{"2":{"16":1}}],["변수이고",{"2":{"123":1}}],["변수들",{"2":{"105":1}}],["변수는",{"0":{"81":1},"2":{"103":1,"126":1}}],["변수의",{"2":{"58":1,"103":1,"124":1}}],["변수가",{"0":{"40":1},"2":{"58":1}}],["변수를",{"2":{"7":1,"62":1,"97":2,"103":1,"106":1}}],["변수에는",{"2":{"58":1}}],["변수에",{"2":{"7":1,"58":3,"102":1,"103":1}}],["변수명으로",{"2":{"102":1}}],["변수명의",{"2":{"2":1}}],["변수명을",{"2":{"2":1}}],["변수",{"0":{"2":1,"39":1,"79":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1},"2":{"7":1,"104":1,"105":1}}],["선입선출",{"2":{"220":1}}],["선언하였다면",{"2":{"126":1}}],["선언하지",{"2":{"102":1,"115":1}}],["선언해주어야",{"2":{"126":1}}],["선언한다",{"2":{"126":1}}],["선언한",{"2":{"103":1}}],["선언된",{"2":{"103":2,"126":1}}],["선언할",{"2":{"102":1,"115":1}}],["선택사항이다",{"2":{"103":1}}],["선택자일",{"0":{"11":1}}],["선택적으로",{"2":{"1":1}}],["선행",{"2":{"1":1}}],["0을",{"2":{"224":1}}],["0으로",{"2":{"221":1}}],["02",{"2":{"220":1}}],["033",{"2":{"217":2}}],["00",{"2":{"208":1}}],["00000000",{"2":{"128":9}}],["06",{"2":{"208":1,"220":3}}],["04t08",{"2":{"208":1}}],["04",{"0":{"201":1,"202":1},"2":{"201":1,"202":1,"219":6}}],["0과",{"2":{"98":1}}],["0px",{"2":{"13":1}}],["0인",{"0":{"13":1},"2":{"224":1}}],["0",{"2":{"1":1,"13":1,"15":3,"18":4,"20":1,"22":1,"35":2,"60":2,"76":1,"80":3,"85":2,"98":4,"100":2,"119":1,"167":1,"201":1,"221":1,"223":2,"224":2}}],["0xbc614e",{"2":{"1":1}}],["지나면",{"2":{"221":1}}],["지우려면",{"2":{"97":1}}],["지양하고",{"0":{"70":1}}],["지원하는",{"2":{"100":1,"209":1}}],["지원하지",{"2":{"57":1,"58":1}}],["지원되며",{"2":{"59":1}}],["지원되는",{"2":{"59":1}}],["지원한다",{"2":{"1":1,"179":1,"218":1}}],["지정한",{"2":{"115":1}}],["지정한다",{"0":{"86":1},"2":{"57":1,"106":1}}],["지정된",{"2":{"98":1,"103":1,"115":1}}],["지정할",{"0":{"79":1},"2":{"16":1,"62":1,"64":1,"102":1,"217":2}}],["지식이나",{"2":{"0":1}}],["지식을",{"2":{"0":1}}],["값과",{"2":{"120":1}}],["값에는",{"2":{"120":1}}],["값에",{"2":{"98":2,"122":1,"222":1}}],["값들이",{"2":{"98":1}}],["값으로",{"2":{"64":1,"103":1,"123":1}}],["값도",{"2":{"58":1}}],["값은",{"2":{"23":2,"98":1,"103":2,"123":1,"124":1,"125":1,"222":1}}],["값을",{"0":{"79":2,"80":1},"2":{"15":1,"58":1,"64":1,"80":1,"98":3,"100":2,"102":1,"103":4,"120":1,"123":1,"217":1,"221":1}}],["값일",{"0":{"14":1},"2":{"98":1,"100":1}}],["값이다",{"2":{"222":1}}],["값이며",{"2":{"205":1}}],["값이거나",{"2":{"120":1}}],["값이",{"0":{"13":1,"77":1},"2":{"58":1,"98":1,"100":2,"103":1,"120":3,"123":1,"126":2,"177":1}}],["값",{"0":{"10":1},"2":{"1":1,"17":1,"18":1,"58":1,"98":2,"103":1,"120":2,"123":1}}],["+=",{"2":{"68":2,"120":6,"177":1}}],["+1234",{"2":{"1":1}}],["+",{"2":{"1":2,"72":2,"81":2,"88":2,"91":1,"105":9,"106":4,"126":1}}],["소켓",{"2":{"220":1}}],["소프트웨어",{"2":{"199":1}}],["소프트웨어를",{"2":{"196":1}}],["소프트웨어이다",{"2":{"195":1}}],["소프트웨어로는",{"2":{"194":1}}],["소프트웨어는",{"2":{"173":1}}],["소프트웨어에",{"2":{"173":1}}],["소문자",{"2":{"5":1,"205":1}}],["소문자로",{"0":{"48":1},"2":{"3":1,"6":1,"205":1}}],["소문자를",{"2":{"2":1}}],["소수점",{"2":{"1":2}}],["소개",{"0":{"0":1}}],["sqlcipher의",{"2":{"222":1}}],["sqlcipher",{"0":{"223":1,"224":1},"2":{"222":2}}],["sqlitebrowser",{"2":{"225":2}}],["sqlite",{"0":{"222":1},"1":{"223":1,"224":1,"225":1},"2":{"222":1}}],["ssh",{"2":{"221":3}}],["sshd",{"0":{"221":1},"2":{"221":5}}],["specific",{"2":{"217":1}}],["splashcolor",{"2":{"57":1}}],["sbin",{"2":{"177":1}}],["soft",{"2":{"220":1}}],["software",{"2":{"219":1}}],["source",{"2":{"217":1}}],["south",{"2":{"119":3}}],["socket",{"2":{"177":1}}],["so",{"2":{"126":1}}],["switch문의",{"2":{"120":1}}],["switch문에는",{"2":{"120":1}}],["switch문에서",{"0":{"84":1}}],["switch문을",{"2":{"120":3}}],["switch문으로",{"2":{"120":1}}],["switch문은",{"2":{"120":1}}],["switch문",{"0":{"120":1},"2":{"120":1}}],["snapd를",{"2":{"202":1}}],["snapd",{"2":{"201":1,"202":5,"203":6,"208":1}}],["snapd패키지가",{"2":{"201":1}}],["snapd가",{"2":{"199":1,"202":1,"203":1}}],["snapd는",{"2":{"199":1}}],["snapcraft",{"2":{"199":2}}],["snapcraft는",{"2":{"199":1}}],["snapcraft에서",{"2":{"109":1}}],["snap은",{"2":{"199":1}}],["snap",{"0":{"198":1},"1":{"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1},"2":{"109":1,"199":3,"201":2,"202":1,"203":1,"205":2,"206":1,"207":1,"208":5}}],["snake",{"0":{"5":1,"37":1,"41":1}}],["symbol로",{"2":{"103":1}}],["symbolid",{"2":{"103":4}}],["symbol을",{"2":{"103":1}}],["symbol은",{"2":{"103":1}}],["symbol의",{"2":{"103":1}}],["symbolb",{"2":{"103":3}}],["symbola",{"2":{"103":4}}],["symbol",{"0":{"103":1},"2":{"103":5}}],["systemctl로",{"2":{"178":2}}],["systemctl",{"2":{"168":1,"178":2,"192":2,"202":2,"203":2,"221":1}}],["system",{"2":{"6":1,"110":1,"208":1,"219":1}}],["systemfileinfo",{"2":{"4":1}}],["s",{"2":{"97":2,"213":1,"220":1}}],["samsung",{"2":{"84":4,"119":3}}],["sample",{"2":{"1":1}}],["srt",{"2":{"75":1}}],["src",{"2":{"17":1}}],["sudo",{"2":{"146":1,"147":1,"149":1,"150":1,"164":1,"165":1,"166":1,"167":2,"168":2,"171":3,"172":3,"174":1,"175":1,"176":1,"178":4,"181":1,"182":1,"183":1,"185":1,"186":1,"191":1,"192":4,"195":2,"196":3,"197":2,"202":4,"203":6,"208":1,"211":1,"221":3}}],["support",{"2":{"110":1}}],["super",{"2":{"42":1,"43":1,"45":1}}],["subfolder",{"2":{"118":1}}],["sub",{"2":{"102":1}}],["sum",{"2":{"72":2,"81":2,"88":2,"89":2,"126":1}}],["sha512",{"2":{"224":2}}],["sha1",{"2":{"223":2}}],["sheet",{"2":{"118":1}}],["sheets",{"2":{"118":2}}],["shellbindkey",{"2":{"217":1}}],["shell에서",{"2":{"209":1}}],["shellerror",{"2":{"208":1}}],["shellexec",{"2":{"189":1}}],["shell2021",{"2":{"208":1}}],["shellxfce4",{"2":{"190":1}}],["shellservice",{"2":{"177":1}}],["shellftpd",{"2":{"162":1}}],["shellflutter",{"2":{"20":1}}],["shellpasv",{"2":{"159":1,"160":1,"161":1}}],["shellwrite",{"2":{"158":1}}],["shelllocal",{"2":{"157":1}}],["shellanon",{"2":{"153":1,"154":1,"155":1,"156":1}}],["shellanonymous",{"2":{"152":1}}],["shellc",{"2":{"140":1}}],["shell>",{"2":{"134":1,"135":1}}],["shellyubico",{"2":{"130":1,"131":1}}],["shelltcpkeepalive",{"2":{"221":1}}],["shellts2345",{"2":{"126":1}}],["shelltype",{"2":{"115":1}}],["shelltypeerror",{"2":{"100":2}}],["shell",{"2":{"108":1,"109":1,"110":1,"127":1,"178":2,"187":1,"191":1,"195":1,"196":2,"197":1,"209":1,"217":1,"219":2}}],["shell✗",{"2":{"21":1}}],["shell$",{"2":{"16":1,"31":1,"32":1,"114":1,"117":2,"118":2,"128":2,"137":1,"138":1,"141":1,"142":1,"146":1,"147":1,"149":1,"150":1,"164":1,"165":1,"166":1,"167":2,"168":2,"171":1,"172":1,"174":1,"175":1,"176":1,"181":1,"182":1,"183":1,"185":1,"186":1,"191":1,"192":2,"201":1,"202":1,"203":1,"205":2,"206":1,"207":1,"208":1,"211":1,"212":1,"213":1,"215":1,"216":1,"217":1,"219":3,"220":1,"221":3}}],["sh",{"2":{"110":1,"188":1,"189":1,"215":2,"216":2}}],["showerror",{"2":{"121":3}}],["showhidden",{"2":{"97":2}}],["show",{"2":{"61":2}}],["sep",{"2":{"220":1}}],["see",{"2":{"217":1}}],["seeya",{"2":{"120":4}}],["series",{"2":{"201":1}}],["server",{"2":{"171":1,"172":2,"177":1}}],["service=xdmcp",{"2":{"196":1}}],["service로",{"2":{"178":2}}],["service",{"2":{"168":1,"178":2,"192":2,"202":2,"203":2,"221":1}}],["services",{"2":{"35":1,"193":1}}],["session",{"2":{"190":1}}],["selinux를",{"2":{"167":2}}],["select",{"2":{"87":2}}],["setenforce",{"2":{"167":1}}],["setcountry",{"2":{"119":3}}],["setcolor",{"2":{"86":1}}],["setuniqueid",{"2":{"119":3}}],["setname",{"2":{"119":3}}],["set",{"2":{"86":2,"118":1,"128":2,"217":2}}],["set을",{"0":{"86":1}}],["seconds",{"2":{"221":1}}],["second",{"2":{"73":1}}],["section",{"2":{"35":1}}],["search=structuredclone",{"2":{"59":1}}],["script와는",{"2":{"118":1}}],["script>",{"2":{"52":6,"56":1}}],["script",{"0":{"52":1,"56":1},"2":{"56":1,"104":1,"116":2,"117":2,"118":5}}],["screens",{"2":{"38":1}}],["screen",{"2":{"37":1,"38":1,"44":2,"45":1}}],["scaffold",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1}}],["schemas",{"2":{"17":1}}],["sdk를",{"2":{"32":1}}],["sdk",{"2":{"22":1,"34":1}}],["start",{"2":{"192":2,"202":2,"203":2}}],["startwm",{"2":{"188":1}}],["stackoverflow",{"2":{"126":2}}],["static",{"2":{"102":1}}],["state",{"2":{"43":1,"45":1}}],["statefulwidget",{"2":{"43":1,"45":1}}],["store로",{"2":{"108":1}}],["stirng을",{"2":{"35":1}}],["styled",{"2":{"97":1}}],["style>",{"2":{"51":2}}],["style=",{"2":{"51":1}}],["style",{"0":{"8":1,"46":1,"66":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1},"2":{"22":1}}],["streaming",{"2":{"219":1}}],["stream",{"2":{"177":1}}],["str의",{"2":{"120":2}}],["strict",{"0":{"102":1},"2":{"102":5}}],["string으로",{"2":{"124":1}}],["string과",{"0":{"91":1}}],["string은",{"0":{"75":1}}],["string>",{"2":{"18":2}}],["string",{"0":{"105":1},"2":{"7":1,"35":1,"64":1,"124":1,"126":1}}],["structuredclone은",{"2":{"59":2}}],["structuredclone",{"0":{"59":1},"2":{"59":1}}],["strpassword",{"2":{"7":1}}],["str",{"2":{"7":1,"35":2,"75":1,"105":4,"106":5,"120":10}}],["simple",{"2":{"217":1}}],["size",{"2":{"5":2,"97":1}}],["single",{"2":{"1":1}}],["는",{"2":{"1":1,"98":1,"102":1,"218":1,"220":1}}],["주소창에",{"2":{"193":1}}],["주어진",{"2":{"121":1,"123":1}}],["주어질",{"2":{"100":1}}],["주어",{"2":{"64":1}}],["주는",{"2":{"60":1}}],["주축의",{"2":{"23":1}}],["주로",{"2":{"4":1,"5":1,"97":1,"98":1,"103":1,"119":1,"124":1,"195":1,"196":1,"197":1}}],["주의해야",{"2":{"118":1,"120":1}}],["주의할",{"2":{"35":1,"106":1,"125":1,"126":1}}],["주의",{"2":{"1":1,"20":1}}],["주석에",{"2":{"96":1}}],["주석과",{"2":{"96":1}}],["주석이",{"2":{"96":1}}],["주석이나",{"2":{"96":1}}],["주석",{"0":{"96":1}}],["주석의",{"2":{"89":1}}],["주석으로",{"0":{"88":1}}],["주석은",{"2":{"1":2,"96":5}}],["주석을",{"0":{"89":1},"2":{"1":1,"96":3}}],["붙인다",{"0":{"10":1,"94":1},"2":{"7":1,"222":1}}],["붙이지",{"2":{"1":1}}],["붙여넣으면",{"2":{"222":1}}],["붙여넣는다",{"2":{"222":1}}],["붙여서",{"2":{"106":1}}],["붙여야",{"2":{"1":1}}],["붙여",{"2":{"1":1,"96":1}}],["붙일",{"2":{"1":1,"7":1}}],["기억하기",{"0":{"222":1},"1":{"223":1,"224":1,"225":1}}],["기입하지",{"2":{"120":1}}],["기법이다",{"2":{"119":1}}],["기반의",{"2":{"128":1}}],["기반",{"2":{"116":1}}],["기능",{"2":{"89":1}}],["기능을",{"2":{"62":1,"120":1,"179":1,"209":1}}],["기술하였다",{"2":{"58":1}}],["기본적으로",{"2":{"195":1,"201":1}}],["기본값",{"0":{"189":1}}],["기본값으로",{"2":{"115":1,"128":1}}],["기본값을",{"2":{"115":1,"190":1}}],["기본값은",{"2":{"16":1}}],["기본으로",{"2":{"64":1,"199":1}}],["기본",{"0":{"155":1,"213":1,"219":1},"2":{"22":1,"202":1,"203":1,"212":1,"213":1,"214":1,"222":1}}],["기준",{"2":{"20":1,"114":1}}],["기타",{"2":{"7":1}}],["기호로",{"2":{"121":1,"123":1}}],["기호가",{"2":{"106":1}}],["기호나",{"0":{"79":1},"2":{"2":1}}],["기호",{"2":{"1":1,"6":1,"106":1}}],["기호를",{"2":{"1":1,"6":1,"105":1,"106":2,"139":1}}],["기존의",{"2":{"20":1,"98":1,"106":1,"128":1,"209":1}}],["기존",{"0":{"105":1},"2":{"1":1,"105":1}}],["문서",{"2":{"112":1,"113":1,"118":5,"124":1}}],["문서에서",{"2":{"107":1}}],["문서를",{"2":{"0":3,"116":1}}],["문법",{"2":{"102":1}}],["문법적인",{"2":{"102":1}}],["문법적",{"2":{"102":1}}],["문법이다",{"2":{"102":1,"104":1,"120":1}}],["문제",{"0":{"208":1},"2":{"97":1}}],["문제와",{"2":{"97":1}}],["문제로",{"2":{"97":1}}],["문제가",{"2":{"58":1,"89":1,"96":1,"105":1,"167":1,"208":2}}],["문제를",{"2":{"57":1,"100":1,"103":1,"106":1}}],["문자별로",{"2":{"220":1}}],["문자를",{"2":{"4":2,"97":1}}],["문자가",{"2":{"3":1,"106":1}}],["문자",{"2":{"3":1,"220":5}}],["문자는",{"2":{"3":1,"5":1,"6":1}}],["문자열과",{"2":{"97":2,"104":1}}],["문자열을",{"2":{"97":1}}],["문자열이나",{"2":{"97":2,"120":1}}],["문자열",{"0":{"220":1},"2":{"1":1,"85":1,"97":1,"104":2,"105":2,"106":1}}],["오른쪽",{"2":{"222":1}}],["오직",{"2":{"98":1}}],["오류를",{"2":{"102":1}}],["오류에",{"2":{"102":1}}],["오류",{"2":{"97":1}}],["오류가",{"2":{"1":1,"126":1}}],["오래전에",{"2":{"61":1}}],["오래된",{"2":{"59":1,"195":1,"202":1}}],["오신",{"2":{"0":1}}],["를",{"0":{"37":1,"39":1,"40":1,"41":1,"42":1,"43":1,"79":1,"85":1},"2":{"1":1,"5":2,"6":1,"35":1,"85":1,"96":1,"98":1,"102":1,"106":1,"114":1,"123":1,"195":1,"196":1,"197":1,"199":1}}],["콤마를",{"2":{"1":1}}],["콤마",{"2":{"1":1,"97":1}}],["끝을",{"2":{"106":1}}],["끝난",{"2":{"97":1}}],["끝난다",{"2":{"1":1}}],["끝점",{"0":{"49":1}}],["끝에",{"0":{"44":1},"2":{"1":4}}],["l에서",{"2":{"220":1}}],["lrwxrwxrwx",{"2":{"220":1}}],["ls",{"0":{"220":1},"2":{"220":2}}],["l",{"2":{"138":1,"220":3}}],["lts",{"2":{"219":4}}],["lt",{"2":{"126":1}}],["loaded",{"2":{"217":2}}],["load",{"2":{"217":2}}],["loadstring은",{"2":{"35":1}}],["loadstring",{"2":{"35":1}}],["loadstring을",{"2":{"35":1}}],["lorem",{"2":{"106":2}}],["lodash",{"0":{"60":1},"2":{"60":2}}],["login",{"2":{"100":3,"117":1}}],["log이며",{"2":{"97":1}}],["log에",{"0":{"91":1}}],["log",{"2":{"56":2,"58":2,"59":2,"60":1,"61":2,"64":2,"65":1,"68":2,"90":2,"91":2,"96":2,"97":12,"98":10,"100":7,"102":2,"103":7,"105":2,"120":3,"123":4,"124":2,"125":2,"177":1}}],["localauthority",{"2":{"191":1}}],["local",{"2":{"21":3,"191":1,"219":1}}],["literal",{"2":{"115":1}}],["literals",{"0":{"104":1,"105":1},"1":{"105":1,"106":1}}],["library",{"2":{"110":2}}],["li>",{"2":{"55":4}}],["li>포도",{"2":{"55":2}}],["li>바나나",{"2":{"55":2}}],["li>사과",{"2":{"55":2}}],["li",{"2":{"55":2}}],["list",{"2":{"35":2}}],["list로",{"2":{"35":1}}],["like",{"2":{"35":1}}],["link",{"2":{"220":1}}],["linux는",{"2":{"203":1}}],["linux",{"0":{"109":1,"136":1,"142":1,"221":1},"1":{"137":1,"138":1}}],["lint에서",{"2":{"22":1}}],["lint",{"0":{"22":1},"2":{"22":1}}],["line",{"2":{"1":2,"96":2,"102":1,"217":2}}],["launched",{"2":{"219":1}}],["launcher",{"2":{"17":1,"19":1,"20":3}}],["launch",{"2":{"219":1}}],["largefile",{"2":{"135":1,"138":1}}],["latest",{"2":{"113":1,"219":5}}],["layout2",{"2":{"100":2}}],["layout에",{"2":{"100":1}}],["layout",{"2":{"100":15}}],["label=",{"2":{"17":1}}],["label",{"2":{"17":1}}],["let",{"2":{"80":3,"88":4,"102":1}}],["let을",{"0":{"68":1}}],["length를",{"0":{"80":1}}],["length",{"2":{"76":2,"80":4}}],["left",{"2":{"14":1,"15":3}}],["lee",{"2":{"1":1,"35":2,"58":1,"59":1,"97":2,"103":2}}],["learned",{"2":{"0":1}}],["\\tlet",{"2":{"120":3}}],["\\tleadingdecimalpoint",{"2":{"1":1}}],["\\tswitch",{"2":{"120":3}}],["\\tsetcountry",{"2":{"119":2}}],["\\tsetuniqueid",{"2":{"119":1}}],["\\tsetname",{"2":{"119":1}}],["\\tsplashcolor",{"2":{"57":1}}],["\\tbody",{"2":{"100":1}}],["\\tbackground",{"2":{"10":2,"11":4,"12":2}}],["\\tchild",{"2":{"97":2}}],["\\tcase",{"2":{"84":4}}],["\\tconsole",{"2":{"100":1}}],["\\tconstructor",{"2":{"119":1}}],["\\tconst",{"2":{"81":1}}],["\\tcolor",{"2":{"11":2,"12":4}}],["\\tdofunction",{"2":{"93":1}}],["\\tdoanotherfunction",{"2":{"93":1}}],["\\tdefault",{"2":{"84":2}}],["\\tdisplay",{"2":{"10":2,"11":2}}],["\\tvalue",{"2":{"79":1}}],["\\tredhat",{"2":{"78":2}}],["\\treturn",{"2":{"72":1,"81":2,"95":2,"115":2,"120":3,"121":1,"126":1}}],["\\tapple",{"2":{"77":2,"78":2}}],["\\tawait",{"2":{"73":3}}],["\\theader",{"2":{"100":1}}],["\\thello",{"2":{"97":2}}],["\\thexadecimal",{"2":{"1":1}}],["\\thalftruefunction",{"2":{"70":1}}],["\\ttruefunction",{"2":{"69":1,"70":1}}],["\\tfooter",{"2":{"100":1}}],["\\tfirst",{"2":{"73":1}}],["\\tfalsefunction",{"2":{"69":1,"70":1}}],["\\tfunction",{"2":{"56":1,"102":1,"120":3}}],["\\tfruits",{"2":{"1":1}}],["\\t>",{"2":{"55":2}}],["\\tpadding",{"2":{"13":2,"14":5,"15":4}}],["\\tplus",{"2":{"1":1}}],["\\tmicrosoft",{"2":{"78":2}}],["\\tminus",{"2":{"1":1}}],["\\tmultilinestring",{"2":{"1":1}}],["\\tnan",{"2":{"1":1}}],["\\tname",{"2":{"1":1,"103":2}}],["\\tif",{"2":{"115":2,"120":1}}],["\\tinfinity",{"2":{"1":1}}],["\\tisenable",{"2":{"1":1}}],["\\tid",{"2":{"1":3,"103":2}}],["\\t\\tdefault",{"2":{"120":3}}],["\\t\\tdesc",{"2":{"100":1}}],["\\t\\tcase",{"2":{"120":13}}],["\\t\\tcopyright",{"2":{"100":1}}],["\\t\\tconsole",{"2":{"56":1}}],["\\t\\tcolor",{"2":{"51":1}}],["\\t\\tresponse",{"2":{"120":5}}],["\\t\\treturn",{"2":{"57":3,"119":4,"120":3}}],["\\t\\tthis",{"2":{"119":7}}],["\\t\\tonmenuclick",{"2":{"100":1}}],["\\t\\theading",{"2":{"100":1}}],["\\t\\theight",{"2":{"100":1}}],["\\t\\thello",{"2":{"97":2}}],["\\t\\tmenu",{"2":{"100":1}}],["\\t\\tbreak",{"2":{"84":6}}],["\\t\\tsecond",{"2":{"73":1}}],["\\t\\t\\tbreak",{"2":{"120":13}}],["\\t\\t\\tresponse",{"2":{"120":12}}],["\\t\\t\\titems",{"2":{"100":1}}],["\\t\\t\\tactive",{"2":{"100":1}}],["\\t\\t\\t",{"2":{"73":1}}],["\\t\\t\\tthird",{"2":{"73":1}}],["\\t\\t\\tconsole",{"2":{"100":1,"120":3}}],["\\t\\t\\tcolor",{"2":{"57":1}}],["\\t\\t\\tchild",{"2":{"57":1}}],["\\t\\t\\t\\t",{"2":{"73":1}}],["\\t\\t\\t\\tchild",{"2":{"57":3}}],["\\t\\t\\t\\tontap",{"2":{"57":3}}],["\\t\\t",{"2":{"1":3,"35":6,"52":2,"57":2,"73":1,"84":4,"100":2,"102":1,"114":1,"115":2}}],["\\t",{"2":{"1":3,"18":3,"35":6,"51":2,"52":10,"55":4,"56":2,"57":3,"73":1,"76":2,"82":2,"83":2,"85":2,"88":4,"89":2,"96":1,"97":2,"100":3,"102":4,"112":1,"113":1,"114":2,"115":2,"119":5,"120":11,"126":4}}],["15",{"2":{"220":2}}],["1~",{"2":{"217":1}}],["14+09",{"2":{"208":1}}],["16",{"2":{"201":1}}],["16진수",{"2":{"1":2}}],["177",{"2":{"196":1}}],["1g",{"2":{"138":1}}],["1gb",{"2":{"135":1,"138":1}}],["1일",{"2":{"123":1}}],["1인",{"2":{"120":1,"224":1}}],["1u3udirjb",{"2":{"118":1}}],["1로",{"2":{"98":1}}],["1과",{"2":{"85":1}}],["1개일",{"0":{"71":1}}],["18",{"0":{"202":1},"2":{"59":1,"202":1,"219":2}}],["1024",{"2":{"223":1}}],["10이고",{"2":{"221":1}}],["1000000000",{"2":{"135":1}}],["100",{"2":{"100":1,"220":1}}],["10",{"2":{"58":1,"59":2,"68":4,"221":2}}],["10px",{"2":{"14":5,"15":4}}],["12자",{"2":{"129":1}}],["123이",{"2":{"103":1}}],["123",{"2":{"103":3}}],["123456",{"2":{"130":1}}],["12345678",{"2":{"1":1,"119":3,"131":1}}],["12345",{"2":{"97":4,"105":2}}],["1234",{"2":{"1":4}}],["12",{"2":{"20":1}}],["1",{"2":{"18":4,"22":1,"35":1,"60":1,"76":2,"80":3,"85":1,"88":2,"91":3,"97":4,"105":2,"106":1,"118":1,"120":1,"123":6,"124":1,"125":1,"126":2,"191":1,"201":2,"220":2}}],["1월",{"2":{"0":1}}],["줄이",{"2":{"105":1}}],["줄엔",{"2":{"1":1}}],["줄",{"2":{"1":1,"96":2,"119":1}}],["로컬",{"0":{"157":1},"2":{"117":1,"220":1}}],["로컬에서",{"2":{"116":1,"118":1}}],["로그인",{"2":{"212":1,"213":1}}],["로그인해도",{"2":{"179":1}}],["로그인한",{"2":{"117":1}}],["로그아웃",{"2":{"179":1}}],["로그",{"2":{"97":1,"102":1}}],["로그를",{"2":{"97":1}}],["로깅",{"0":{"97":1},"2":{"97":1}}],["로깅은",{"0":{"90":1}}],["로직을",{"2":{"96":1}}],["로",{"0":{"50":1},"2":{"1":3,"97":1,"103":1,"139":1,"205":1,"222":1}}],["한정적으로",{"2":{"102":1}}],["한해",{"2":{"97":1}}],["한편",{"2":{"97":1}}],["한번",{"2":{"121":1}}],["한번만",{"0":{"53":1,"81":1},"2":{"54":1}}],["한번에",{"2":{"19":1,"119":1,"127":1}}],["한",{"2":{"32":1,"105":1}}],["한줄로",{"0":{"14":1,"72":1,"93":1,"95":1},"2":{"59":1}}],["한줄",{"0":{"88":1},"2":{"1":1,"96":2,"120":1}}],["한다면",{"2":{"132":1}}],["한다",{"0":{"14":1},"2":{"1":2,"2":1,"3":1,"5":1,"7":1,"23":1,"54":2,"57":1,"58":1,"61":1,"62":1,"89":1,"96":1,"97":2,"100":1,"102":2,"117":1,"119":1,"120":1,"124":1,"125":1,"126":4,"128":2,"173":1,"179":1,"203":1,"205":1,"208":1,"212":1,"214":1,"222":1}}],["것은",{"2":{"96":1}}],["것으로",{"2":{"61":1}}],["것",{"2":{"54":1,"96":1}}],["것이다",{"2":{"64":1,"98":1,"100":1,"102":1,"106":1,"118":1}}],["것이기",{"2":{"62":1}}],["것이",{"0":{"56":1,"75":1},"2":{"7":1,"22":1,"58":1,"60":1,"96":4,"97":3,"118":2,"119":1,"120":2,"121":3,"129":1}}],["것과",{"2":{"1":1}}],["것을",{"0":{"52":1},"2":{"0":1,"18":1,"103":1,"120":1,"179":1}}],["사라질",{"2":{"128":1}}],["사라지니",{"2":{"20":1}}],["사항이",{"2":{"102":1}}],["사전에",{"2":{"102":1,"212":1,"214":1}}],["사양",{"2":{"102":1}}],["사용했을",{"2":{"126":1}}],["사용했었다",{"2":{"105":1}}],["사용법",{"0":{"118":1}}],["사용법은",{"2":{"106":1}}],["사용함으로서",{"2":{"106":1}}],["사용을",{"2":{"102":1}}],["사용해도",{"2":{"119":1}}],["사용해서",{"2":{"97":1}}],["사용해서는",{"2":{"85":1}}],["사용해야",{"0":{"54":1},"2":{"54":2,"58":1,"60":1,"119":1}}],["사용할",{"0":{"80":1},"2":{"27":1,"35":1,"54":1,"57":1,"58":1,"59":2,"60":1,"96":1,"97":1,"100":2,"102":3,"103":1,"104":1,"106":1,"119":1,"120":1,"121":1,"125":1,"126":1}}],["사용한",{"2":{"22":1,"100":1,"103":1,"111":1,"120":1}}],["사용한다",{"0":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"45":1,"53":1,"68":1,"76":1,"77":1,"80":1,"85":1,"89":1,"90":1},"2":{"4":1,"5":1,"16":1,"23":2,"96":1,"97":2,"103":1,"118":2,"119":1,"128":1,"134":1,"139":1,"148":1,"192":1,"205":1,"219":1,"224":1}}],["사용된다",{"2":{"97":1,"120":1,"129":1,"197":1}}],["사용된",{"2":{"22":1}}],["사용자에도",{"2":{"214":1}}],["사용자에게만",{"2":{"213":1}}],["사용자에게",{"2":{"64":1,"65":1}}],["사용자지정할",{"2":{"97":1}}],["사용자의",{"0":{"152":1,"153":1,"154":1,"155":1,"156":1,"157":1},"2":{"64":1,"214":1}}],["사용자가",{"2":{"64":3,"65":1}}],["사용자",{"0":{"152":1},"2":{"16":1,"62":1,"199":1,"205":1,"217":1}}],["사용되었던",{"2":{"195":1}}],["사용되며",{"2":{"121":1,"129":1,"196":1,"218":1}}],["사용되어왔다",{"2":{"62":1}}],["사용되기도",{"2":{"5":1}}],["사용되는",{"0":{"81":1},"2":{"2":1,"6":1,"23":2,"97":1,"119":1,"196":1,"220":2}}],["사용하고",{"2":{"212":1}}],["사용하려면",{"2":{"117":1}}],["사용하며",{"0":{"38":1},"2":{"100":1,"222":1}}],["사용하면",{"2":{"28":1,"98":1,"102":3,"123":1}}],["사용하면서",{"2":{"22":1}}],["사용하여보면",{"2":{"98":1}}],["사용하여",{"0":{"28":1,"29":1},"2":{"5":1,"6":1,"35":1,"61":1,"97":1,"103":1,"106":1,"114":1,"120":1,"121":1,"123":1,"126":2,"128":1}}],["사용하지",{"0":{"13":1,"15":1,"51":1,"54":1,"69":1,"81":1},"2":{"4":1,"6":1,"7":1,"57":1,"121":2,"177":1}}],["사용하기도",{"2":{"7":1}}],["사용하기",{"0":{"106":1,"218":1},"1":{"219":1},"2":{"4":1,"60":1,"106":1,"119":2}}],["사용하는",{"2":{"1":1,"32":1,"57":1,"97":1,"98":1,"104":1,"117":1,"119":2,"120":1,"125":1,"139":1,"167":1}}],["사용",{"0":{"59":1,"60":1,"61":1,"134":1,"135":1,"137":1,"138":1,"194":1,"204":1,"219":1},"1":{"195":1,"196":1,"197":1,"205":1,"206":1,"207":1},"2":{"1":2,"35":1,"102":2,"103":1,"117":2,"120":1,"143":2,"177":1}}],["사이에서의",{"2":{"104":1}}],["사이에",{"0":{"10":1},"2":{"96":1,"105":1}}],["사이에는",{"0":{"49":1},"2":{"5":1,"6":1,"96":1}}],["사이",{"0":{"10":1}}],["사이드",{"2":{"0":1}}],["사이트에서",{"2":{"0":1}}],["대용량",{"0":{"132":1},"1":{"133":1,"134":1,"135":1,"136":1,"137":1,"138":1},"2":{"132":2,"135":1,"138":1}}],["대상",{"2":{"114":1,"122":1}}],["대입할",{"2":{"103":1}}],["대입한다",{"2":{"58":1}}],["대화상자를",{"2":{"64":1}}],["대체하여",{"2":{"97":1}}],["대체할",{"0":{"79":1,"82":1}}],["대체한다",{"0":{"70":1,"73":1}}],["대체",{"2":{"62":1}}],["대체된다",{"2":{"31":1}}],["대해서도",{"2":{"123":1}}],["대해",{"0":{"127":1},"2":{"60":1,"98":2,"102":2,"104":1,"119":1,"120":4,"127":1,"196":1}}],["대신에",{"2":{"120":2}}],["대신",{"0":{"68":1,"79":1,"85":1},"2":{"57":1,"106":2,"139":1}}],["대신하기도",{"2":{"23":1}}],["대시",{"2":{"6":2}}],["대문자",{"2":{"5":1}}],["대문자로",{"2":{"3":1,"4":2,"5":1}}],["대",{"2":{"2":1}}],["대부분의",{"2":{"1":1,"2":1,"3":1,"96":1}}],["대한",{"0":{"220":1},"2":{"0":1,"7":1,"57":1,"60":1,"96":2,"100":2,"118":1,"120":3,"122":1,"222":1}}],["달라질",{"2":{"222":1}}],["달라도",{"2":{"120":1}}],["달라진다",{"2":{"98":1}}],["달러",{"2":{"106":1}}],["달아",{"2":{"96":1}}],["달리",{"2":{"57":1,"100":1}}],["달",{"2":{"1":1}}],["내의",{"2":{"119":1}}],["내역을",{"2":{"118":1}}],["내부에",{"2":{"102":1}}],["내장된",{"2":{"62":1}}],["내",{"0":{"45":1,"220":1},"2":{"58":1,"97":1}}],["내용으로",{"2":{"191":1,"222":1}}],["내용은",{"0":{"89":1},"2":{"126":1}}],["내용",{"0":{"54":1}}],["내용을",{"2":{"20":1,"21":1,"32":1,"102":1,"151":2,"188":1,"190":1,"217":1,"222":1}}],["내용이",{"2":{"16":1}}],["내용만을",{"2":{"0":1}}],["내에서만",{"2":{"35":1}}],["내에",{"2":{"1":1,"118":1}}],["큰따옴표",{"0":{"50":1},"2":{"139":1}}],["큰",{"2":{"1":1}}],["가진다",{"2":{"220":1}}],["가상머신을",{"2":{"218":1,"219":1}}],["가상환경을",{"2":{"218":1}}],["가득",{"2":{"132":1}}],["가정한다",{"2":{"119":1,"222":1}}],["가정한다면",{"2":{"35":1,"106":1}}],["가리키고",{"2":{"118":1}}],["가깝다",{"2":{"114":1}}],["가지며",{"2":{"103":1}}],["가지고",{"2":{"100":1,"103":1}}],["가지는",{"2":{"15":1}}],["가",{"2":{"98":1,"120":1}}],["가이드",{"2":{"53":2,"54":2,"66":1}}],["가능",{"0":{"154":1,"156":1}}],["가능성도",{"2":{"98":1}}],["가능하다면",{"0":{"44":1}}],["가능하다",{"2":{"35":1}}],["가능한",{"0":{"14":1,"51":1,"90":1},"2":{"58":1,"97":1,"100":1,"118":1,"129":1}}],["가져오기",{"0":{"35":1}}],["가급적이면",{"2":{"62":1}}],["가급적",{"0":{"38":1,"40":1,"70":1,"81":1},"2":{"7":1,"22":1,"121":1}}],["가장",{"2":{"1":1,"61":1,"97":1}}],["가독성을",{"2":{"121":1}}],["가독성에",{"2":{"121":1}}],["가독성이",{"2":{"120":1}}],["가독성",{"2":{"0":1,"104":1,"106":1}}],["jellyfin",{"2":{"219":2}}],["jan",{"2":{"220":2}}],["jammy",{"2":{"219":1}}],["javascriptclass",{"2":{"119":2}}],["javascriptconsole",{"2":{"90":1,"97":3,"98":2}}],["javascriptconst",{"2":{"58":1,"59":1,"60":1,"61":1,"64":2,"65":1,"72":2,"76":2,"77":2,"78":2,"80":3,"86":2,"91":2,"97":5,"100":4,"103":4,"105":2,"106":4,"119":3,"123":2,"124":1,"125":1}}],["javascriptprocess",{"2":{"112":1}}],["javascript의",{"2":{"98":1,"103":1}}],["javascriptimport",{"2":{"97":1,"113":1}}],["javascriptif",{"2":{"69":1,"70":1,"82":2,"83":2,"85":2,"93":3,"94":2,"95":1,"100":1,"121":1}}],["javascriptbox",{"2":{"87":2}}],["javascriptswitch",{"2":{"84":2}}],["javascriptfunction",{"2":{"73":1,"81":2,"88":2,"89":2,"96":1,"102":1,"120":4}}],["javascriptabc",{"2":{"102":1}}],["javascriptasync",{"2":{"73":1}}],["javascriptarr",{"2":{"71":2}}],["javascriptalert",{"2":{"63":1,"90":1}}],["javascriptreturn",{"2":{"69":1,"70":1,"95":1,"121":4}}],["javascriptlet",{"2":{"68":1,"75":2,"79":3}}],["javascriptvar",{"2":{"68":1}}],["javascript에서는",{"2":{"100":1,"122":1}}],["javascript에서",{"2":{"58":1}}],["javascript",{"0":{"66":1,"67":1,"74":1,"122":1},"1":{"67":1,"68":2,"69":2,"70":2,"71":2,"72":2,"73":2,"74":1,"75":2,"76":2,"77":2,"78":2,"79":2,"80":2,"81":2,"82":2,"83":2,"84":2,"85":2,"86":2,"87":2,"88":2,"89":2,"90":2,"91":2,"92":1,"93":1,"94":1,"95":1,"123":1,"124":1,"125":1},"2":{"56":1,"96":1,"99":1,"101":1,"102":2,"124":1}}],["j",{"2":{"164":1,"174":1,"183":1,"195":2}}],["js",{"2":{"60":1}}],["jsondata",{"2":{"35":2}}],["json",{"0":{"35":1},"2":{"1":1,"35":8,"114":2,"118":5}}],["json5로",{"2":{"1":1}}],["json5는",{"2":{"1":1}}],["json5",{"0":{"1":1},"2":{"1":5}}],["jquery",{"2":{"60":1,"119":1}}],["jpeg",{"2":{"35":2}}],["join",{"2":{"22":2}}],["jooy2의",{"2":{"0":1}}],["왼쪽의",{"2":{"0":1}}],["포트번호를",{"2":{"193":1}}],["포트인",{"2":{"180":1}}],["포트를",{"2":{"173":1,"180":1,"195":1,"196":2,"197":1}}],["포트",{"0":{"160":1,"161":1},"2":{"195":1,"196":2,"197":1}}],["포커스",{"2":{"57":1}}],["포함",{"2":{"222":1}}],["포함하여",{"2":{"120":1}}],["포함하지",{"2":{"96":1}}],["포함되고",{"2":{"222":1}}],["포함되어",{"2":{"222":1}}],["포함되어있다면",{"2":{"139":1}}],["포함되므로",{"2":{"106":1}}],["포함되지",{"2":{"18":1}}],["포함할",{"2":{"106":1}}],["포함해야",{"2":{"97":1}}],["포함한다",{"0":{"44":1}}],["포함된",{"2":{"0":1,"35":1}}],["포맷들이",{"2":{"96":1}}],["포맷으로",{"2":{"96":1}}],["포맷이다",{"2":{"1":1}}],["포맷에서",{"2":{"1":1}}],["포스팅되고",{"2":{"0":1}}],["더미",{"0":{"132":1},"1":{"133":1,"134":1,"135":1,"136":1,"137":1,"138":1},"2":{"132":1}}],["더욱",{"2":{"121":1}}],["더",{"2":{"0":1,"57":1,"97":1,"98":1,"100":2,"106":1,"114":1,"120":1}}],["정상",{"2":{"217":1}}],["정상적으로",{"2":{"126":1}}],["정의된",{"2":{"103":1}}],["정의할",{"0":{"14":1},"2":{"2":1,"4":1}}],["정수",{"2":{"97":1}}],["정식으로",{"2":{"59":1}}],["정보를",{"2":{"117":1}}],["정보",{"2":{"97":1}}],["정보들은",{"2":{"0":1}}],["정보에",{"2":{"0":1}}],["정리하므로",{"2":{"96":1}}],["정리된",{"2":{"0":1}}],["정리한",{"2":{"0":1}}],["코드로",{"2":{"126":1}}],["코드도",{"2":{"120":1}}],["코드와",{"2":{"100":2,"106":1,"120":1}}],["코드에",{"2":{"96":2}}],["코드에서는",{"2":{"120":1}}],["코드에서",{"2":{"35":1,"100":1,"111":1,"115":1,"120":1}}],["코드를",{"2":{"96":1,"100":1,"102":2,"104":1,"118":2,"119":2,"120":3,"126":1}}],["코드의",{"2":{"96":1,"119":1}}],["코드가",{"2":{"96":2,"106":2,"119":1}}],["코드는",{"0":{"88":1},"2":{"96":1,"100":1,"115":1,"120":1}}],["코드",{"2":{"0":1,"22":1,"60":1,"66":1,"89":3,"96":2,"102":1,"112":1,"113":1,"119":1,"120":3,"121":1}}],["table",{"2":{"208":2}}],["tasks",{"2":{"208":1}}],["tcpkeepalive",{"2":{"221":1}}],["tcp",{"0":{"221":1},"2":{"164":2,"165":1,"166":1,"173":1,"174":1,"175":1,"176":1,"180":1,"181":1,"182":1,"183":2,"195":5,"196":5,"197":4}}],["terminal",{"2":{"193":1}}],["ternary",{"2":{"121":1}}],["telnetd",{"2":{"177":1}}],["telnetd로",{"2":{"172":1}}],["telnet",{"0":{"169":1},"1":{"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1},"2":{"171":2,"172":3,"177":2,"178":1}}],["temp가",{"2":{"123":1}}],["temp",{"2":{"123":6,"124":3}}],["template",{"0":{"104":1},"1":{"105":1,"106":1}}],["testing",{"2":{"219":1}}],["test",{"2":{"38":1,"68":6,"75":2,"81":2,"91":4,"135":1,"138":1}}],["text나",{"2":{"57":1}}],["text",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"56":1,"57":3,"97":2}}],["textfilepath",{"2":{"22":1}}],["typeof와",{"2":{"125":1}}],["typeof",{"0":{"124":1},"2":{"124":4}}],["types",{"0":{"115":1},"2":{"115":2}}],["typescriptsum",{"2":{"126":1}}],["typescriptfunction",{"2":{"126":1}}],["typescriptdeclare",{"2":{"126":1}}],["typescriptexport",{"2":{"115":2}}],["typescript는",{"2":{"115":1}}],["typescript",{"0":{"115":1,"126":1},"2":{"115":2,"126":1}}],["type=",{"2":{"56":1}}],["type",{"0":{"126":1},"2":{"32":1,"115":1,"126":3,"127":1,"177":1}}],["time",{"2":{"217":1}}],["title",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1}}],["til에서는",{"2":{"0":1}}],["third",{"2":{"73":1}}],["this로",{"2":{"119":1}}],["this",{"2":{"1":2,"35":1,"57":3,"96":3,"102":2,"119":5}}],["that",{"2":{"65":1,"126":1,"219":1}}],["theme=",{"2":{"217":2}}],["themes",{"2":{"217":1}}],["theme",{"2":{"217":4}}],["there",{"2":{"126":1}}],["then",{"2":{"73":3,"127":1}}],["the",{"2":{"22":3,"89":2,"96":2,"126":1,"208":1,"217":1}}],["trivially",{"2":{"115":1}}],["transparent",{"2":{"57":2}}],["troubleshooting",{"0":{"21":1}}],["trbl",{"2":{"15":1}}],["true를",{"2":{"123":1}}],["true에",{"2":{"120":1}}],["true인",{"2":{"120":1}}],["true로",{"2":{"115":1}}],["truefunction",{"2":{"69":1,"70":1}}],["true",{"0":{"95":1},"2":{"1":1,"20":2,"42":1,"65":2,"95":1,"97":2,"115":4,"120":6,"123":3,"124":1,"125":2}}],["total",{"2":{"220":1}}],["tools",{"2":{"215":1,"216":1,"219":1}}],["tool",{"2":{"128":10,"130":1,"131":1}}],["tool이",{"2":{"128":1}}],["together",{"2":{"89":2}}],["todo",{"2":{"89":2,"96":3}}],["today",{"2":{"0":1}}],["to",{"2":{"22":2,"35":2,"86":2,"126":2,"143":2,"208":1,"217":3}}],["top",{"2":{"14":1,"15":1}}],["txtpackage",{"2":{"118":1}}],["txtpascalcase",{"2":{"4":1}}],["txtscreens",{"2":{"44":1}}],["txtsnake",{"2":{"5":1}}],["txtutils",{"2":{"38":1}}],["txttest",{"2":{"37":1}}],["txtdepend",{"2":{"22":1}}],["txt",{"2":{"22":1}}],["txtflutter",{"2":{"21":1}}],["txtintuserid",{"2":{"7":1}}],["txtkebab",{"2":{"6":1}}],["txtcamelcase",{"2":{"3":1}}],["있지않다",{"2":{"202":1}}],["있지만",{"2":{"121":1}}],["있기",{"2":{"119":1}}],["있기도",{"2":{"115":1}}],["있음",{"2":{"96":1}}],["있을",{"0":{"93":1},"2":{"118":1,"121":1}}],["있어야",{"2":{"128":1}}],["있어",{"2":{"89":1,"96":1}}],["있는",{"2":{"64":1,"96":1,"100":1,"102":1,"104":1,"118":1,"120":1,"127":1,"139":1,"218":1}}],["있는데",{"2":{"23":1,"120":1,"222":1}}],["있으며",{"2":{"96":2,"106":1,"214":1}}],["있으니",{"2":{"62":1,"128":1}}],["있으나",{"2":{"57":1}}],["있으므로",{"2":{"3":1,"59":1,"100":1,"115":1,"120":1,"121":1,"214":1,"222":1}}],["있도록",{"0":{"14":1,"85":1},"2":{"116":1,"120":1,"167":1}}],["있고",{"2":{"7":1,"58":1,"61":1,"120":1}}],["있다면",{"2":{"106":1}}],["있다는",{"2":{"100":1,"106":1}}],["있다고",{"2":{"35":1,"106":1,"119":1}}],["있다",{"0":{"82":1},"2":{"1":3,"6":1,"7":1,"15":1,"16":1,"20":1,"22":1,"27":1,"32":2,"57":3,"58":4,"59":2,"60":3,"61":1,"64":2,"96":3,"97":10,"98":2,"100":6,"102":2,"103":5,"104":1,"105":1,"106":3,"113":1,"114":3,"116":1,"117":2,"118":5,"119":5,"120":7,"121":5,"122":1,"123":2,"124":1,"125":1,"126":1,"132":2,"139":2,"167":2,"173":1,"178":2,"179":1,"191":2,"194":1,"195":1,"196":3,"197":1,"199":1,"201":1,"208":2,"212":1,"213":2,"214":1,"217":2,"218":2,"219":2,"221":1,"224":1}}],["있습니다",{"2":{"0":3}}],["있게",{"2":{"0":1,"97":1,"104":1,"199":1}}],["수정한",{"2":{"151":1}}],["수정한다",{"2":{"107":1,"191":1,"221":1}}],["수정된",{"2":{"115":1}}],["수정되지",{"2":{"103":1}}],["수정이",{"0":{"89":1},"2":{"89":1,"96":2}}],["수정해야",{"2":{"32":1}}],["수는",{"2":{"62":1,"121":1}}],["수로",{"2":{"61":1}}],["수와",{"2":{"61":1}}],["수행하여",{"2":{"127":1}}],["수행하려는",{"2":{"57":1}}],["수행",{"0":{"127":1}}],["수행할",{"2":{"57":1}}],["수동으로",{"2":{"212":1}}],["수동",{"0":{"32":1},"1":{"33":1,"34":1}}],["수도",{"2":{"27":1,"97":2,"102":1,"116":1,"121":1,"196":1}}],["수록",{"0":{"11":1},"2":{"105":1}}],["수",{"0":{"14":1,"82":1,"85":1},"2":{"0":2,"1":3,"3":1,"6":1,"7":2,"15":1,"16":1,"20":1,"32":1,"57":4,"58":4,"59":3,"60":2,"61":2,"64":2,"96":4,"97":10,"98":1,"100":7,"102":8,"103":6,"104":2,"105":1,"106":5,"114":2,"115":2,"116":1,"117":2,"118":4,"119":5,"120":8,"121":4,"122":1,"123":2,"125":1,"126":1,"128":1,"132":1,"139":2,"167":4,"173":1,"178":2,"179":1,"191":2,"195":1,"196":2,"197":1,"199":2,"201":1,"208":2,"212":1,"213":2,"214":3,"217":2,"218":3,"219":2,"221":1,"222":1,"224":1}}],["256000",{"2":{"224":1}}],["26",{"2":{"220":1}}],["29",{"2":{"220":1}}],["24",{"2":{"208":1,"220":1}}],["22",{"2":{"195":1,"197":1,"219":2}}],["22번",{"2":{"195":1,"196":1,"197":1}}],["2gb",{"2":{"179":1}}],["23",{"2":{"174":1,"176":1}}],["23번",{"2":{"173":1}}],["21",{"2":{"164":1,"165":1}}],["21224922",{"2":{"126":1}}],["2와",{"2":{"126":1}}],["2인",{"2":{"120":1}}],["2",{"0":{"34":1},"2":{"35":1,"60":1,"80":3,"88":2,"97":2,"105":2,"106":1,"120":1,"125":1,"126":1,"201":2}}],["2016년",{"2":{"179":1}}],["2021",{"2":{"220":1}}],["20220902",{"2":{"219":1}}],["20220901",{"2":{"219":1}}],["20220824",{"2":{"219":1}}],["2022",{"2":{"100":1}}],["2022년",{"2":{"0":1}}],["2020",{"2":{"100":1}}],["20",{"0":{"201":1},"2":{"58":3,"59":2,"201":1,"219":2}}],["20으로",{"2":{"58":2}}],["20px",{"2":{"15":1,"97":1}}],["27일에",{"2":{"0":1}}],["이용하여",{"2":{"213":1}}],["이는",{"2":{"208":1}}],["이하의",{"2":{"202":1}}],["이하",{"0":{"202":1}}],["이하로",{"2":{"129":1}}],["이제",{"2":{"126":1,"219":1,"224":1}}],["이루어지는지",{"2":{"126":1}}],["이루어지며",{"2":{"120":1}}],["이루어졌다",{"2":{"105":1}}],["이전의",{"2":{"179":1}}],["이전",{"2":{"119":1}}],["이어서",{"2":{"119":1}}],["이스케이프",{"2":{"106":1}}],["이외에는",{"2":{"106":1}}],["이외에도",{"2":{"96":1,"97":1,"113":1}}],["이미",{"2":{"103":1}}],["이라는",{"2":{"103":1}}],["이렇게하면",{"2":{"118":1}}],["이렇게",{"2":{"102":2,"105":1,"119":1}}],["이상의",{"2":{"104":1,"179":1}}],["이상에서는",{"2":{"102":1}}],["이상",{"0":{"201":1},"2":{"100":1,"102":3,"129":1,"221":1}}],["이러한",{"2":{"98":1,"100":1,"199":1}}],["이럴",{"2":{"97":1,"123":1}}],["이해가",{"2":{"96":1}}],["이해를",{"2":{"96":1,"120":1}}],["이슈도",{"2":{"61":1}}],["이벤트도",{"2":{"113":1}}],["이벤트를",{"2":{"57":1}}],["이벤트",{"0":{"56":1}}],["이동한다",{"2":{"32":1}}],["이를",{"2":{"16":1}}],["이후부터",{"2":{"59":1}}],["이후",{"0":{"129":1,"217":1},"1":{"130":1,"131":1},"2":{"3":1,"16":1,"20":2,"35":1,"58":1,"117":1,"118":1,"128":1,"179":1,"191":1,"222":1}}],["이름에",{"2":{"107":1}}],["이름에는",{"2":{"18":1}}],["이름이",{"2":{"102":1}}],["이름이나",{"2":{"7":1}}],["이름으로",{"0":{"86":1}}],["이름일",{"0":{"77":1}}],["이름의",{"0":{"44":1},"2":{"219":1}}],["이름은",{"0":{"37":1,"39":1,"42":1,"43":1}}],["이름과",{"0":{"37":1}}],["이름을",{"0":{"44":1,"45":1},"2":{"16":1,"102":1,"222":1}}],["이름",{"0":{"2":1,"16":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"17":1,"18":1},"2":{"16":2}}],["이",{"2":{"0":1,"7":1,"28":1,"31":1,"58":1,"60":1,"62":2,"96":1,"98":1,"102":1,"114":3,"118":1,"120":1,"123":1,"179":1,"222":2}}],["io",{"2":{"199":1}}],["ios",{"0":{"18":1},"2":{"18":1,"20":1,"22":1}}],["iptables",{"0":{"164":1,"174":1,"183":1,"195":1},"2":{"164":1,"174":1,"183":1,"194":1,"195":2}}],["ipsum",{"2":{"106":1}}],["ipsum`",{"2":{"106":1}}],["iprice",{"2":{"7":1}}],["ilength",{"2":{"80":2}}],["i++",{"2":{"80":3}}],["if와",{"0":{"93":1,"95":1}}],["if문과의",{"2":{"121":1}}],["if문을",{"2":{"100":1,"121":2}}],["if문에",{"2":{"100":1}}],["if문이",{"0":{"94":1},"2":{"121":1}}],["if문",{"0":{"79":1}}],["if문으로",{"0":{"70":1}}],["if",{"2":{"70":1,"76":2,"79":1,"90":1,"102":1,"120":7,"127":1,"217":1}}],["id를",{"2":{"118":1}}],["id=1yenswrcybp",{"2":{"118":1}}],["id=",{"2":{"48":3,"49":2,"50":2}}],["id",{"2":{"35":3,"103":9,"119":2,"208":2}}],["identity=unix",{"2":{"191":1}}],["ide마다",{"2":{"96":1}}],["ide는",{"2":{"96":1}}],["idea",{"2":{"32":1}}],["ide에서는",{"2":{"7":1,"96":1}}],["it",{"2":{"22":1,"217":1}}],["items값을",{"2":{"100":1}}],["items",{"2":{"100":4}}],["items와",{"2":{"100":1}}],["item",{"2":{"5":1}}],["importing",{"2":{"22":1}}],["import했을",{"2":{"22":1}}],["import",{"2":{"22":1,"35":1}}],["important",{"2":{"12":4}}],["important를",{"0":{"12":1}}],["images",{"2":{"35":2}}],["image",{"2":{"20":2}}],["icon",{"2":{"20":2}}],["icons",{"0":{"19":1},"1":{"20":1,"21":1},"2":{"19":1,"20":4,"22":3}}],["icon=",{"2":{"17":1}}],["ic",{"2":{"17":1}}],["ini",{"2":{"187":1}}],["initial",{"2":{"61":1}}],["initializescreen",{"2":{"42":2}}],["initstate",{"2":{"42":2}}],["input",{"2":{"164":1,"174":1,"183":1,"195":2}}],["instanceof는",{"2":{"125":1}}],["instanceof",{"0":{"125":1},"2":{"125":2}}],["install",{"2":{"117":1,"146":1,"147":1,"171":3,"172":3,"185":1,"186":1,"202":2,"203":3,"205":2,"208":1,"211":1,"212":1,"215":1,"216":1}}],["inspect",{"2":{"97":4}}],["inspect를",{"2":{"97":1}}],["index",{"2":{"100":2,"208":1}}],["inkwell과는",{"2":{"57":1}}],["inkwell보다",{"2":{"57":1}}],["inkwell",{"0":{"57":1},"2":{"57":8}}],["in",{"2":{"21":1,"118":1,"126":1,"127":1,"177":1,"217":1,"219":1}}],["invalidconfigexception",{"2":{"21":1}}],["integer",{"2":{"7":2,"126":1}}],["inferred",{"2":{"115":1}}],["inferrable",{"0":{"115":1},"2":{"115":2}}],["info",{"2":{"5":1,"6":1,"18":1,"90":2,"97":1,"208":1}}],["infinity",{"2":{"1":2,"29":2}}],["isexists",{"2":{"121":5}}],["isfalse",{"2":{"120":2}}],["isittrue",{"2":{"120":1}}],["isgoogleaccount",{"2":{"115":5}}],["isalsotrue",{"2":{"70":2,"120":3}}],["istrue의",{"2":{"120":1}}],["istrue",{"2":{"69":2,"70":3,"93":3,"94":2,"95":2,"120":3}}],["is",{"2":{"1":2,"65":1,"96":3,"100":1,"102":2,"105":6,"106":4,"126":2,"217":1,"219":2}}],["i",{"2":{"0":1,"7":1,"80":6}}],["습득한",{"2":{"0":1}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/VPLocalSearchBox.zgD-hVAD.js b/assets/chunks/VPLocalSearchBox.zgD-hVAD.js new file mode 100644 index 00000000..230f3f15 --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.zgD-hVAD.js @@ -0,0 +1,13 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +var It=Object.defineProperty;var Dt=(o,e,t)=>e in o?It(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>(Dt(o,typeof e!="symbol"?e+"":e,t),t);import{Y as yt,h as oe,y as $e,aj as kt,ak as Ot,d as _t,H as xe,al as tt,k as Fe,am as Rt,an as Mt,z as Lt,ao as Pt,l as _e,U as de,S as Ee,ap as zt,aq as Vt,Z as Bt,j as $t,ar as Wt,o as ee,b as Kt,m as k,a2 as Jt,p as j,as as Ut,at as jt,au as Gt,c as re,n as rt,e as Se,G as at,F as nt,a as ve,t as pe,av as qt,q as Ht,s as Qt,aw as it,ax as Yt,a8 as Zt,ae as Xt,ay as er,_ as tr}from"./framework.4aTu-Nia.js";import{u as rr,c as ar}from"./theme.D9XVjfBS.js";const nr={root:()=>yt(()=>import("./@localSearchIndexroot.K-NVedZf.js"),__vite__mapDeps([]))};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ue=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!gt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},bt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ue.call(e,Ne)&&n.unshift(e),n=n.filter(r),n},wt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ne);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},xt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!xt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!xt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},Ft=function(e){return e.tagName==="INPUT"},ur=function(e){return Ft(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ce(e);if(u&&!u.shadowRoot&&n(u)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return ot(e);return!1},yr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=bt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=bt(e,t.includeContainer,De.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ne)===!1?!1:We(t,e)},xr=mt.concat("iframe").join(","),Re=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:De(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function st(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function ut(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},Ar=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Tr=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Nr=function(e){return ge(e)&&!e.shiftKey},Cr=function(e){return ge(e)&&e.shiftKey},ct=function(e){return setTimeout(e,0)},ft=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},ye=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?p-1:0),I=1;I=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=br(c,a.tabbableOptions),p=wr(c,a.tabbableOptions),C=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,M=p.find(function(m){return le(m)}),P=p.slice().reverse().find(function(m){return le(m)}),z=!!f.find(function(m){return se(m)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:z,firstTabbableNode:C,lastTabbableNode:I,firstDomTabbableNode:M,lastDomTabbableNode:P,nextTabbableNode:function(x){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,K=f.indexOf(x);return K<0?$?p.slice(p.indexOf(x)+1).find(function(q){return le(q)}):p.slice(0,p.indexOf(x)).reverse().find(function(q){return le(q)}):f[K+($?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function w(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?w(f.shadowRoot):f},b=function w(c){if(c!==!1&&c!==y(document)){if(!c||!c.focus){w(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,Ar(c)&&c.select()}},E=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},g=function(c){var f=c.target,p=c.event,C=c.isBackward,I=C===void 0?!1:C;f=f||Ae(p),v();var M=null;if(i.tabbableGroups.length>0){var P=l(f,p),z=P>=0?i.containerGroups[P]:void 0;if(P<0)I?M=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:M=i.tabbableGroups[0].firstTabbableNode;else if(I){var m=ft(i.tabbableGroups,function(V){var U=V.firstTabbableNode;return f===U});if(m<0&&(z.container===f||Re(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f,!1))&&(m=P),m>=0){var x=m===0?i.tabbableGroups.length-1:m-1,$=i.tabbableGroups[x];M=se(f)>=0?$.lastTabbableNode:$.lastDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f,!1))}else{var K=ft(i.tabbableGroups,function(V){var U=V.lastTabbableNode;return f===U});if(K<0&&(z.container===f||Re(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f))&&(K=P),K>=0){var q=K===i.tabbableGroups.length-1?0:K+1,H=i.tabbableGroups[q];M=se(f)>=0?H.firstTabbableNode:H.firstDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f))}}else M=h("fallbackFocus");return M},S=function(c){var f=Ae(c);if(!(l(f,c)>=0)){if(ye(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ye(a.allowOutsideClick,c)||c.preventDefault()}},T=function(c){var f=Ae(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var C,I=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var M=l(i.mostRecentlyFocusedNode),P=i.containerGroups[M].tabbableNodes;if(P.length>0){var z=P.findIndex(function(m){return m===i.mostRecentlyFocusedNode});z>=0&&(a.isKeyForward(i.recentNavEvent)?z+1=0&&(C=P[z-1],I=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(x){return se(x)>0})})||(I=!1);else I=!1;I&&(C=g({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),b(C||i.mostRecentlyFocusedNode||d())}i.recentNavEvent=void 0},F=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=g({event:c,isBackward:f});p&&(ge(c)&&c.preventDefault(),b(p))},L=function(c){if(Tr(c)&&ye(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&F(c,a.isKeyBackward(c))},R=function(c){var f=Ae(c);l(f,c)>=0||ye(a.clickOutsideDeactivates,c)||ye(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},B=function(){if(i.active)return lt.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?ct(function(){b(d())}):b(d()),r.addEventListener("focusin",T,!0),r.addEventListener("mousedown",S,{capture:!0,passive:!1}),r.addEventListener("touchstart",S,{capture:!0,passive:!1}),r.addEventListener("click",R,{capture:!0,passive:!1}),r.addEventListener("keydown",L,{capture:!0,passive:!1}),s},N=function(){if(i.active)return r.removeEventListener("focusin",T,!0),r.removeEventListener("mousedown",S,!0),r.removeEventListener("touchstart",S,!0),r.removeEventListener("click",R,!0),r.removeEventListener("keydown",L,!0),s},_=function(c){var f=c.some(function(p){var C=Array.from(p.removedNodes);return C.some(function(I){return I===i.mostRecentlyFocusedNode})});f&&b(d())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(_):void 0,O=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){A.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),C=u(c,"checkCanFocusTrap");C||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var I=function(){C&&v(),B(),O(),p==null||p()};return C?(C(i.containers.concat()).then(I,I),this):(I(),this)},deactivate:function(c){if(!i.active)return this;var f=ut({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,N(),i.active=!1,i.paused=!1,O(),lt.deactivateTrap(n,s);var p=u(f,"onDeactivate"),C=u(f,"onPostDeactivate"),I=u(f,"checkCanReturnFocus"),M=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var P=function(){ct(function(){M&&b(E(i.nodeFocusedBeforeActivation)),C==null||C()})};return M&&I?(I(E(i.nodeFocusedBeforeActivation)).then(P,P),this):(P(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),N(),O(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),B(),O(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),O(),this}},s.updateContainerElements(e),s};function kr(o,e={}){let t;const{immediate:r,...n}=e,a=oe(!1),i=oe(!1),s=d=>t&&t.activate(d),u=d=>t&&t.deactivate(d),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return $e(()=>kt(o),d=>{d&&(t=Dr(d,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),Ot(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:h}}class fe{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{fe.matches(l,this.exclude)?u():this.onIframeReady(l,h=>{t(l)&&(s++,r(h)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new fe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,h,d=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,y=>u.push(y),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Or=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new fe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return fe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=d+v,e.nodes.forEach((y,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=h),e.nodes[b].end-=h)}),r-=h,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let h=l.index;if(i!==0)for(let d=1;d{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let d=1;dr(u[i],d),(d,v)=>{e.lastIndex=v,n(d)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:h,valid:d}=this.checkWhitespaceRanges(s,i,a.value);d&&this.wrapRangeInMappedTextNode(a,l,h,v=>t(v,s,a.value.substring(l,h),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let h=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,y)=>this.opt.filter(y,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=fe.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function _r(o){const e=new Or(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var W=function(){return W=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function J(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Lr="ENTRIES",Et="KEYS",St="VALUES",G="",Me=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ce(this._path),t=e.node,r=e.keys;if(ce(r)===G)return{done:!1,value:this.result()};var n=t.get(ce(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ce(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ce(t)}).filter(function(e){return e!==G}).join("")},o.prototype.value=function(){return ce(this._path).node.get(G)},o.prototype.result=function(){switch(this._type){case St:return this.value();case Et:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ce=function(o){return o[o.length-1]},Pr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;st)continue e}At(o.get(y),e,t,r,n,E,i,s+y)}}}catch(f){u={error:f}}finally{try{v&&!v.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}},Le=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=J(ke(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=J(je(i),2),u=s[0],l=s[1];try{for(var h=D(u.keys()),d=h.next();!d.done;d=h.next()){var v=d.value;if(v!==G&&v.startsWith(l)){var y=new Map;return y.set(v.slice(l.length),u.get(v)),new o(y,e)}}}catch(b){t={error:b}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,zr(this._tree,e)},o.prototype.entries=function(){return new Me(this,Lr)},o.prototype.forEach=function(e){var t,r;try{for(var n=D(this),a=n.next();!a.done;a=n.next()){var i=J(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return Pr(this._tree,e,t)},o.prototype.get=function(e){var t=Ke(this._tree,e);return t!==void 0?t.get(G):void 0},o.prototype.has=function(e){var t=Ke(this._tree,e);return t!==void 0&&t.has(G)},o.prototype.keys=function(){return new Me(this,Et)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e);return r.set(G,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e);return r.set(G,t(r.get(G))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e),n=r.get(G);return n===void 0&&r.set(G,n=t()),n},o.prototype.values=function(){return new Me(this,St)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=J(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(h){t={error:h}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),ke=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=D(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==G&&e.startsWith(s))return t.push([o,s]),ke(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),ke(void 0,"",t)},Ke=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=D(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==G&&e.startsWith(i))return Ke(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},Pe=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Le,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=Ue,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return Rr(this,void 0,void 0,function(){var r,n,a,i,s,u,l,h,d,v,y,b,E,g,S,T,F,L,R,B,N,_,A,O,w;return Mr(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||Je.batchSize,a=e.batchWait||Je.batchWait,i=1,c.label=1;case 1:c.trys.push([1,7,8,9]),s=D(this._index),u=s.next(),c.label=2;case 2:if(u.done)return[3,6];l=J(u.value,2),h=l[0],d=l[1];try{for(v=(_=void 0,D(d)),y=v.next();!y.done;y=v.next()){b=J(y.value,2),E=b[0],g=b[1];try{for(S=(O=void 0,D(g)),T=S.next();!T.done;T=S.next())F=J(T.value,1),L=F[0],!this._documentIds.has(L)&&(g.size<=1?d.delete(E):g.delete(L))}catch(f){O={error:f}}finally{try{T&&!T.done&&(w=S.return)&&w.call(S)}finally{if(O)throw O.error}}}}catch(f){_={error:f}}finally{try{y&&!y.done&&(A=v.return)&&A.call(v)}finally{if(_)throw _.error}}return this._index.get(h).size===0&&this._index.delete(h),i%n!==0?[3,4]:[4,new Promise(function(f){return setTimeout(f,a)})];case 3:c.sent(),c.label=4;case 4:i+=1,c.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return R=c.sent(),B={error:R},[3,9];case 8:try{u&&!u.done&&(N=s.return)&&N.call(s)}finally{if(B)throw B.error}return[7];case 9:this._dirtCount-=r,c.label=10;case 10:return[4,null];case 11:return c.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Be.minDirtCount,r=r||Be.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=D(a),u=s.next();!u.done;u=s.next()){var l=J(u.value,2),h=l[0],d=l[1],v=d.score,y=d.terms,b=d.match,E=y.length||1,g={id:this._documentIds.get(h),score:v*E,terms:Object.keys(b),queryTerms:y,match:b};Object.assign(g,this._storedFields.get(h)),(t.filter==null||t.filter(g))&&i.push(g)}}catch(S){r={error:S}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return e===o.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||i.sort(vt),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=W(W({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=D(this.search(e,t)),l=u.next();!l.done;l=u.next()){var h=l.value,d=h.score,v=h.terms,y=v.join(" "),b=s.get(y);b!=null?(b.score+=d,b.count+=1):s.set(y,{score:d,terms:v,count:1})}}catch(R){r={error:R}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var E=[];try{for(var g=D(s),S=g.next();!S.done;S=g.next()){var T=J(S.value,2),b=T[0],F=T[1],d=F.score,v=F.terms,L=F.count;E.push({suggestion:b,terms:v,score:d/L})}}catch(R){a={error:R}}finally{try{S&&!S.done&&(i=g.return)&&i.call(g)}finally{if(a)throw a.error}}return E.sort(vt),E},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(Ve.hasOwnProperty(e))return ze(Ve,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,h=e.documentCount,d=e.nextId,v=e.documentIds,y=e.fieldIds,b=e.fieldLength,E=e.averageFieldLength,g=e.storedFields,S=e.dirtCount,T=e.serializationVersion;if(T!==1&&T!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var F=new o(t);F._documentCount=h,F._nextId=d,F._documentIds=Te(v),F._idToShortId=new Map,F._fieldIds=y,F._fieldLength=Te(b),F._avgFieldLength=E,F._storedFields=Te(g),F._dirtCount=S||0,F._index=new Le;try{for(var L=D(F._documentIds),R=L.next();!R.done;R=L.next()){var B=J(R.value,2),N=B[0],_=B[1];F._idToShortId.set(_,N)}}catch(z){r={error:z}}finally{try{R&&!R.done&&(n=L.return)&&n.call(L)}finally{if(r)throw r.error}}try{for(var A=D(l),O=A.next();!O.done;O=A.next()){var w=J(O.value,2),c=w[0],f=w[1],p=new Map;try{for(var C=(s=void 0,D(Object.keys(f))),I=C.next();!I.done;I=C.next()){var M=I.value,P=f[M];T===1&&(P=P.ds),p.set(parseInt(M,10),Te(P))}}catch(z){s={error:z}}finally{try{I&&!I.done&&(u=C.return)&&u.call(C)}finally{if(s)throw s.error}}F._index.set(c,p)}}catch(z){a={error:z}}finally{try{O&&!O.done&&(i=A.return)&&i.call(A)}finally{if(a)throw a.error}}return F},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),e===o.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){var n=W(W(W({},t),e),{queries:void 0}),a=e.queries.map(function(g){return r.executeQuery(g,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,h=W(W({tokenize:s,processTerm:u},l),t),d=h.tokenize,v=h.processTerm,y=d(e).flatMap(function(g){return v(g)}).filter(function(g){return!!g}),b=y.map(Jr(h)),E=b.map(function(g){return r.executeQuerySpec(g,h)});return this.combineResults(E,h.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=W(W({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(M,P){var z;return W(W({},M),(z={},z[P]=ze(s.boost,P)||1,z))},{}),l=s.boostDocument,h=s.weights,d=s.maxFuzzy,v=s.bm25,y=W(W({},ht.weights),h),b=y.fuzzy,E=y.prefix,g=this._index.get(e.term),S=this.termResults(e.term,e.term,1,g,u,l,v),T,F;if(e.prefix&&(T=this._index.atPrefix(e.term)),e.fuzzy){var L=e.fuzzy===!0?.2:e.fuzzy,R=L<1?Math.min(d,Math.round(e.term.length*L)):L;R&&(F=this._index.fuzzyGet(e.term,R))}if(T)try{for(var B=D(T),N=B.next();!N.done;N=B.next()){var _=J(N.value,2),A=_[0],O=_[1],w=A.length-e.term.length;if(w){F==null||F.delete(A);var c=E*A.length/(A.length+.3*w);this.termResults(e.term,A,c,O,u,l,v,S)}}}catch(M){r={error:M}}finally{try{N&&!N.done&&(n=B.return)&&n.call(B)}finally{if(r)throw r.error}}if(F)try{for(var f=D(F.keys()),p=f.next();!p.done;p=f.next()){var A=p.value,C=J(F.get(A),2),I=C[0],w=C[1];if(w){var c=b*A.length/(A.length+w);this.termResults(e.term,A,c,I,u,l,v,S)}}}catch(M){a={error:M}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}return S},o.prototype.executeWildcardQuery=function(e){var t,r,n=new Map,a=W(W({},this._options.searchOptions),e);try{for(var i=D(this._documentIds),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d=a.boostDocument?a.boostDocument(h,"",this._storedFields.get(l)):1;n.set(l,{score:d,terms:[],match:{}})}}catch(v){t={error:v}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=Ge),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce($r[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=D(this._index),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d={};try{for(var v=(r=void 0,D(h)),y=v.next();!y.done;y=v.next()){var b=J(y.value,2),E=b[0],g=b[1];d[E]=Object.fromEntries(g)}}catch(S){r={error:S}}finally{try{y&&!y.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,d])}}catch(S){e={error:S}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,h,d,v,y;if(u===void 0&&(u=new Map),n==null)return u;try{for(var b=D(Object.keys(a)),E=b.next();!E.done;E=b.next()){var g=E.value,S=a[g],T=this._fieldIds[g],F=n.get(T);if(F!=null){var L=F.size,R=this._avgFieldLength[T];try{for(var B=(d=void 0,D(F.keys())),N=B.next();!N.done;N=B.next()){var _=N.value;if(!this._documentIds.has(_)){this.removeTerm(T,_,t),L-=1;continue}var A=i?i(this._documentIds.get(_),t,this._storedFields.get(_)):1;if(A){var O=F.get(_),w=this._fieldLength.get(_)[T],c=Kr(O,L,this._documentCount,w,R,s),f=r*S*A*c,p=u.get(_);if(p){p.score+=f,jr(p.terms,e);var C=ze(p.match,t);C?C.push(g):p.match[t]=[g]}else u.set(_,{score:f,terms:[e],match:(y={},y[t]=[g],y)})}}}catch(I){d={error:I}}finally{try{N&&!N.done&&(v=B.return)&&v.call(B)}finally{if(d)throw d.error}}}}}catch(I){l={error:I}}finally{try{E&&!E.done&&(h=b.return)&&h.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,pt),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,pt),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=D(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(Ht("data-v-43c4f204"),o=o(),Qt(),o),Hr=["aria-owns"],Qr={class:"shell"},Yr=["title"],Zr=Y(()=>k("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Xr=[Zr],ea={class:"search-actions before"},ta=["title"],ra=Y(()=>k("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),aa=[ra],na=["placeholder"],ia={class:"search-actions"},oa=["title"],sa=Y(()=>k("span",{class:"vpi-layout-list local-search-icon"},null,-1)),ua=[sa],la=["disabled","title"],ca=Y(()=>k("span",{class:"vpi-delete local-search-icon"},null,-1)),fa=[ca],ha=["id","role","aria-labelledby"],da=["aria-selected"],va=["href","aria-label","onMouseenter","onFocusin"],pa={class:"titles"},ya=Y(()=>k("span",{class:"title-icon"},"#",-1)),ma=["innerHTML"],ga=Y(()=>k("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),ba={class:"title main"},wa=["innerHTML"],xa={key:0,class:"excerpt-wrapper"},Fa={key:0,class:"excerpt",inert:""},Ea=["innerHTML"],Sa=Y(()=>k("div",{class:"excerpt-gradient-bottom"},null,-1)),Aa=Y(()=>k("div",{class:"excerpt-gradient-top"},null,-1)),Ta={key:0,class:"no-results"},Na={class:"search-keyboard-shortcuts"},Ca=["aria-label"],Ia=Y(()=>k("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),Da=[Ia],ka=["aria-label"],Oa=Y(()=>k("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),_a=[Oa],Ra=["aria-label"],Ma=Y(()=>k("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),La=[Ma],Pa=["aria-label"],za=_t({__name:"VPLocalSearchBox",emits:["close"],setup(o,{emit:e}){var P,z;const t=e,r=xe(),n=xe(),a=xe(nr),i=rr(),{activate:s}=kr(r,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,h=tt(async()=>{var m,x,$,K,q,H,V,U,Z;return it(Br.loadJSON(($=await((x=(m=a.value)[u.value])==null?void 0:x.call(m)))==null?void 0:$.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((K=l.value.search)==null?void 0:K.provider)==="local"&&((H=(q=l.value.search.options)==null?void 0:q.miniSearch)==null?void 0:H.searchOptions)},...((V=l.value.search)==null?void 0:V.provider)==="local"&&((Z=(U=l.value.search.options)==null?void 0:U.miniSearch)==null?void 0:Z.options)}))}),v=Fe(()=>{var m,x;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((x=l.value.search.options)==null?void 0:x.disableQueryPersistence)===!0}).value?oe(""):Rt("vitepress:local-search-filter",""),y=Mt("vitepress:local-search-detailed-list",((P=l.value.search)==null?void 0:P.provider)==="local"&&((z=l.value.search.options)==null?void 0:z.detailedView)===!0),b=Fe(()=>{var m,x,$;return((m=l.value.search)==null?void 0:m.provider)==="local"&&(((x=l.value.search.options)==null?void 0:x.disableDetailedView)===!0||(($=l.value.search.options)==null?void 0:$.detailedView)===!1)}),E=Fe(()=>{var x,$,K,q,H,V,U;const m=((x=l.value.search)==null?void 0:x.options)??l.value.algolia;return((H=(q=(K=($=m==null?void 0:m.locales)==null?void 0:$[u.value])==null?void 0:K.translations)==null?void 0:q.button)==null?void 0:H.buttonText)||((U=(V=m==null?void 0:m.translations)==null?void 0:V.button)==null?void 0:U.buttonText)||"Search"});Lt(()=>{b.value&&(y.value=!1)});const g=xe([]),S=oe(!1);$e(v,()=>{S.value=!1});const T=tt(async()=>{if(n.value)return it(new _r(n.value))},null),F=new qr(16);Pt(()=>[h.value,v.value,y.value],async([m,x,$],K,q)=>{var be,qe,He,Qe;(K==null?void 0:K[0])!==m&&F.clear();let H=!1;if(q(()=>{H=!0}),!m)return;g.value=m.search(x).slice(0,16),S.value=!0;const V=$?await Promise.all(g.value.map(Q=>L(Q.id))):[];if(H)return;for(const{id:Q,mod:ae}of V){const ne=Q.slice(0,Q.indexOf("#"));let te=F.get(ne);if(te)continue;te=new Map,F.set(ne,te);const X=ae.default??ae;if(X!=null&&X.render||X!=null&&X.setup){const ie=Yt(X);ie.config.warnHandler=()=>{},ie.provide(Zt,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ie.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(he=>{var et;const we=(et=he.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(he=he.nextElementSibling)&&!/^h[1-6]$/i.test(he.tagName);)Xe+=he.outerHTML;te.set(Ze,Xe)}),ie.unmount()}if(H)return}const U=new Set;if(g.value=g.value.map(Q=>{const[ae,ne]=Q.id.split("#"),te=F.get(ae),X=(te==null?void 0:te.get(ne))??"";for(const ie in Q.match)U.add(ie);return{...Q,text:X}}),await de(),H)return;await new Promise(Q=>{var ae;(ae=T.value)==null||ae.unmark({done:()=>{var ne;(ne=T.value)==null||ne.markRegExp(M(U),{done:Q})}})});const Z=((be=r.value)==null?void 0:be.querySelectorAll(".result .excerpt"))??[];for(const Q of Z)(qe=Q.querySelector('mark[data-markjs="true"]'))==null||qe.scrollIntoView({block:"center"});(Qe=(He=n.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function L(m){const x=Xt(m.slice(0,m.indexOf("#")));try{if(!x)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await yt(()=>import(x),__vite__mapDeps([]))}}catch($){return console.error($),{id:m,mod:{}}}}const R=oe(),B=Fe(()=>{var m;return((m=v.value)==null?void 0:m.length)<=0});function N(m=!0){var x,$;(x=R.value)==null||x.focus(),m&&(($=R.value)==null||$.select())}_e(()=>{N()});function _(m){m.pointerType==="mouse"&&N()}const A=oe(-1),O=oe(!1);$e(g,m=>{A.value=m.length?0:-1,w()});function w(){de(()=>{const m=document.querySelector(".result.selected");m&&m.scrollIntoView({block:"nearest"})})}Ee("ArrowUp",m=>{m.preventDefault(),A.value--,A.value<0&&(A.value=g.value.length-1),O.value=!0,w()}),Ee("ArrowDown",m=>{m.preventDefault(),A.value++,A.value>=g.value.length&&(A.value=0),O.value=!0,w()});const c=zt();Ee("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const x=g.value[A.value];if(m.target instanceof HTMLInputElement&&!x){m.preventDefault();return}x&&(c.go(x.id),t("close"))}),Ee("Escape",()=>{t("close")});const p=ar({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});_e(()=>{window.history.pushState(null,"",null)}),Vt("popstate",m=>{m.preventDefault(),t("close")});const C=Bt($t?document.body:null);_e(()=>{de(()=>{C.value=!0,de().then(()=>s())})}),Wt(()=>{C.value=!1});function I(){v.value="",de().then(()=>N(!1))}function M(m){return new RegExp([...m].sort((x,$)=>$.length-x.length).map(x=>`(${er(x)})`).join("|"),"gi")}return(m,x)=>{var $,K,q,H;return ee(),Kt(qt,{to:"body"},[k("div",{ref_key:"el",ref:r,role:"button","aria-owns":($=g.value)!=null&&$.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[k("div",{class:"backdrop",onClick:x[0]||(x[0]=V=>m.$emit("close"))}),k("div",Qr,[k("form",{class:"search-bar",onPointerup:x[4]||(x[4]=V=>_(V)),onSubmit:x[5]||(x[5]=Jt(()=>{},["prevent"]))},[k("label",{title:E.value,id:"localsearch-label",for:"localsearch-input"},Xr,8,Yr),k("div",ea,[k("button",{class:"back-button",title:j(p)("modal.backButtonTitle"),onClick:x[1]||(x[1]=V=>m.$emit("close"))},aa,8,ta)]),Ut(k("input",{ref_key:"searchInput",ref:R,"onUpdate:modelValue":x[2]||(x[2]=V=>Gt(v)?v.value=V:null),placeholder:E.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,na),[[jt,j(v)]]),k("div",ia,[b.value?Se("",!0):(ee(),re("button",{key:0,class:rt(["toggle-layout-button",{"detailed-list":j(y)}]),type:"button",title:j(p)("modal.displayDetails"),onClick:x[3]||(x[3]=V=>A.value>-1&&(y.value=!j(y)))},ua,10,oa)),k("button",{class:"clear-button",type:"reset",disabled:B.value,title:j(p)("modal.resetButtonTitle"),onClick:I},fa,8,la)])],32),k("ul",{ref_key:"resultsEl",ref:n,id:(K=g.value)!=null&&K.length?"localsearch-list":void 0,role:(q=g.value)!=null&&q.length?"listbox":void 0,"aria-labelledby":(H=g.value)!=null&&H.length?"localsearch-label":void 0,class:"results",onMousemove:x[7]||(x[7]=V=>O.value=!1)},[(ee(!0),re(nt,null,at(g.value,(V,U)=>(ee(),re("li",{key:V.id,role:"option","aria-selected":A.value===U?"true":"false"},[k("a",{href:V.id,class:rt(["result",{selected:A.value===U}]),"aria-label":[...V.titles,V.title].join(" > "),onMouseenter:Z=>!O.value&&(A.value=U),onFocusin:Z=>A.value=U,onClick:x[6]||(x[6]=Z=>m.$emit("close"))},[k("div",null,[k("div",pa,[ya,(ee(!0),re(nt,null,at(V.titles,(Z,be)=>(ee(),re("span",{key:be,class:"title"},[k("span",{class:"text",innerHTML:Z},null,8,ma),ga]))),128)),k("span",ba,[k("span",{class:"text",innerHTML:V.title},null,8,wa)])]),j(y)?(ee(),re("div",xa,[V.text?(ee(),re("div",Fa,[k("div",{class:"vp-doc",innerHTML:V.text},null,8,Ea)])):Se("",!0),Sa,Aa])):Se("",!0)])],42,va)],8,da))),128)),j(v)&&!g.value.length&&S.value?(ee(),re("li",Ta,[ve(pe(j(p)("modal.noResultsText"))+' "',1),k("strong",null,pe(j(v)),1),ve('" ')])):Se("",!0)],40,ha),k("div",Na,[k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.navigateUpKeyAriaLabel")},Da,8,Ca),k("kbd",{"aria-label":j(p)("modal.footer.navigateDownKeyAriaLabel")},_a,8,ka),ve(" "+pe(j(p)("modal.footer.navigateText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.selectKeyAriaLabel")},La,8,Ra),ve(" "+pe(j(p)("modal.footer.selectText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.closeKeyAriaLabel")},"esc",8,Pa),ve(" "+pe(j(p)("modal.footer.closeText")),1)])])])],8,Hr)])}}}),Ja=tr(za,[["__scopeId","data-v-43c4f204"]]);export{Ja as default}; diff --git a/assets/chunks/framework.4aTu-Nia.js b/assets/chunks/framework.4aTu-Nia.js new file mode 100644 index 00000000..c04c670e --- /dev/null +++ b/assets/chunks/framework.4aTu-Nia.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Tr(e,t){const n=new Set(e.split(","));return t?r=>n.has(r.toLowerCase()):r=>n.has(r)}const ee={},_t=[],xe=()=>{},Si=()=>!1,Wt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ar=e=>e.startsWith("onUpdate:"),ce=Object.assign,Rr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ti=Object.prototype.hasOwnProperty,Y=(e,t)=>Ti.call(e,t),B=Array.isArray,vt=e=>An(e)==="[object Map]",Zs=e=>An(e)==="[object Set]",q=e=>typeof e=="function",ne=e=>typeof e=="string",At=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",eo=e=>(Z(e)||q(e))&&q(e.then)&&q(e.catch),to=Object.prototype.toString,An=e=>to.call(e),Ai=e=>An(e).slice(8,-1),no=e=>An(e)==="[object Object]",Lr=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=Tr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Rn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ri=/-(\w)/g,Fe=Rn(e=>e.replace(Ri,(t,n)=>n?n.toUpperCase():"")),Li=/\B([A-Z])/g,ft=Rn(e=>e.replace(Li,"-$1").toLowerCase()),Ln=Rn(e=>e.charAt(0).toUpperCase()+e.slice(1)),hn=Rn(e=>e?`on${Ln(e)}`:""),Ze=(e,t)=>!Object.is(e,t),pn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},ur=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Oi=e=>{const t=ne(e)?Number(e):NaN;return isNaN(t)?e:t};let rs;const ro=()=>rs||(rs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Or(e){if(B(e)){const t={};for(let n=0;n{if(n){const r=n.split(Mi);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Ir(e){let t="";if(ne(e))t=e;else if(B(e))for(let n=0;nne(e)?e:e==null?"":B(e)||Z(e)&&(e.toString===to||!q(e.toString))?JSON.stringify(e,oo,2):String(e),oo=(e,t)=>t&&t.__v_isRef?oo(e,t.value):vt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[qn(r,o)+" =>"]=s,n),{})}:Zs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>qn(n))}:At(t)?qn(t):Z(t)&&!B(t)&&!no(t)?String(t):t,qn=(e,t="")=>{var n;return At(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let ve;class Hi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ve,!t&&ve&&(this.index=(ve.scopes||(ve.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=ve;try{return ve=this,t()}finally{ve=n}}}on(){ve=this}off(){ve=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),ht()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ye,n=ct;try{return Ye=!0,ct=this,this._runnings++,ss(this),this.fn()}finally{os(this),this._runnings--,ct=n,Ye=t}}stop(){var t;this.active&&(ss(this),os(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Di(e){return e.value}function ss(e){e._trackId++,e._depsLength=0}function os(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},vn=new WeakMap,at=Symbol(""),hr=Symbol("");function ye(e,t,n){if(Ye&&ct){let r=vn.get(e);r||vn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=fo(()=>r.delete(n))),ao(ct,s)}}function je(e,t,n,r,s,o){const i=vn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&B(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||!At(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":B(e)?Lr(n)&&l.push(i.get("length")):(l.push(i.get(at)),vt(e)&&l.push(i.get(hr)));break;case"delete":B(e)||(l.push(i.get(at)),vt(e)&&l.push(i.get(hr)));break;case"set":vt(e)&&l.push(i.get(at));break}Pr();for(const c of l)c&&uo(c,4);Nr()}function Ui(e,t){var n;return(n=vn.get(e))==null?void 0:n.get(t)}const Bi=Tr("__proto__,__v_isRef,__isVue"),ho=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(At)),is=ki();function ki(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){dt(),Pr();const r=J(this)[t].apply(this,n);return Nr(),ht(),r}}),e}function Ki(e){const t=J(this);return ye(t,"has",e),t.hasOwnProperty(e)}class po{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?rl:_o:o?yo:mo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=B(t);if(!s){if(i&&Y(is,n))return Reflect.get(is,n,r);if(n==="hasOwnProperty")return Ki}const l=Reflect.get(t,n,r);return(At(n)?ho.has(n):Bi(n))||(s||ye(t,"get",n),o)?l:de(l)?i&&Lr(n)?l:l.value:Z(l)?s?Mn(l):In(l):l}}class go extends po{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=St(o);if(!bn(r)&&!St(r)&&(o=J(o),r=J(r)),!B(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=B(t)&&Lr(n)?Number(n)e,On=e=>Reflect.getPrototypeOf(e);function Qt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(Ze(t,o)&&ye(s,"get",t),ye(s,"get",o));const{has:i}=On(s),l=r?Fr:n?jr:Dt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Zt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(Ze(e,s)&&ye(r,"has",e),ye(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function en(e,t=!1){return e=e.__v_raw,!t&&ye(J(e),"iterate",at),Reflect.get(e,"size",e)}function ls(e){e=J(e);const t=J(this);return On(t).has.call(t,e)||(t.add(e),je(t,"add",e,e)),this}function cs(e,t){t=J(t);const n=J(this),{has:r,get:s}=On(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?Ze(t,i)&&je(n,"set",e,t):je(n,"add",e,t),this}function as(e){const t=J(this),{has:n,get:r}=On(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&je(t,"delete",e,void 0),o}function us(){const e=J(this),t=e.size!==0,n=e.clear();return t&&je(e,"clear",void 0,void 0),n}function tn(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Fr:e?jr:Dt;return!e&&ye(l,"iterate",at),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function nn(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=vt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Fr:t?jr:Dt;return!t&&ye(o,"iterate",c?hr:at),{next(){const{value:h,done:p}=a.next();return p?{value:h,done:p}:{value:l?[f(h[0]),f(h[1])]:f(h),done:p}},[Symbol.iterator](){return this}}}}function Be(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Xi(){const e={get(o){return Qt(this,o)},get size(){return en(this)},has:Zt,add:ls,set:cs,delete:as,clear:us,forEach:tn(!1,!1)},t={get(o){return Qt(this,o,!1,!0)},get size(){return en(this)},has:Zt,add:ls,set:cs,delete:as,clear:us,forEach:tn(!1,!0)},n={get(o){return Qt(this,o,!0)},get size(){return en(this,!0)},has(o){return Zt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:tn(!0,!1)},r={get(o){return Qt(this,o,!0,!0)},get size(){return en(this,!0)},has(o){return Zt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:tn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=nn(o,!1,!1),n[o]=nn(o,!0,!1),t[o]=nn(o,!1,!0),r[o]=nn(o,!0,!0)}),[e,n,t,r]}const[Yi,Ji,Qi,Zi]=Xi();function $r(e,t){const n=t?e?Zi:Qi:e?Ji:Yi;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const el={get:$r(!1,!1)},tl={get:$r(!1,!0)},nl={get:$r(!0,!1)},mo=new WeakMap,yo=new WeakMap,_o=new WeakMap,rl=new WeakMap;function sl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ol(e){return e.__v_skip||!Object.isExtensible(e)?0:sl(Ai(e))}function In(e){return St(e)?e:Hr(e,!1,qi,el,mo)}function il(e){return Hr(e,!1,zi,tl,yo)}function Mn(e){return Hr(e,!0,Gi,nl,_o)}function Hr(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=ol(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function wt(e){return St(e)?wt(e.__v_raw):!!(e&&e.__v_isReactive)}function St(e){return!!(e&&e.__v_isReadonly)}function bn(e){return!!(e&&e.__v_isShallow)}function vo(e){return wt(e)||St(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Mt(e){return Object.isExtensible(e)&&_n(e,"__v_skip",!0),e}const Dt=e=>Z(e)?In(e):e,jr=e=>Z(e)?Mn(e):e;class bo{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Mr(()=>t(this._value),()=>Pt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Ze(t._value,t._value=t.effect.run())&&Pt(t,4),Vr(t),t.effect._dirtyLevel>=2&&Pt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function ll(e,t,n=!1){let r,s;const o=q(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new bo(r,s,o||!s,n)}function Vr(e){var t;Ye&&ct&&(e=J(e),ao(ct,(t=e.dep)!=null?t:e.dep=fo(()=>e.dep=void 0,e instanceof bo?e:void 0)))}function Pt(e,t=4,n){e=J(e);const r=e.dep;r&&uo(r,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function se(e){return wo(e,!1)}function Dr(e){return wo(e,!0)}function wo(e,t){return de(e)?e:new cl(e,t)}class cl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Dt(t)}get value(){return Vr(this),this._value}set value(t){const n=this.__v_isShallow||bn(t)||St(t);t=n?t:J(t),Ze(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Dt(t),Pt(this,4))}}function Eo(e){return de(e)?e.value:e}const al={get:(e,t,n)=>Eo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Co(e){return wt(e)?e:new Proxy(e,al)}class ul{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Vr(this),()=>Pt(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function fl(e){return new ul(e)}class dl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Ui(J(this._object),this._key)}}class hl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function pl(e,t,n){return de(e)?e:q(e)?new hl(e):Z(e)&&arguments.length>1?gl(e,t,n):se(e)}function gl(e,t,n){const r=e[t];return de(r)?r:new dl(e,t,n)}/** +* @vue/runtime-core v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Je(e,t,n,r){try{return r?e(...r):e()}catch(s){qt(s,t,n)}}function Se(e,t,n,r){if(q(e)){const o=Je(e,t,n,r);return o&&eo(o)&&o.catch(i=>{qt(i,t,n)}),o}const s=[];for(let o=0;o>>1,s=he[r],o=Bt(s);oPe&&he.splice(t,1)}function vl(e){B(e)?Et.push(...e):(!qe||!qe.includes(e,e.allowRecurse?ot+1:ot))&&Et.push(e),So()}function fs(e,t,n=Ut?Pe+1:0){for(;nBt(n)-Bt(r));if(Et.length=0,qe){qe.push(...t);return}for(qe=t,ot=0;ote.id==null?1/0:e.id,bl=(e,t)=>{const n=Bt(e)-Bt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function To(e){pr=!1,Ut=!0,he.sort(bl);try{for(Pe=0;Pene(y)?y.trim():y)),h&&(s=n.map(ur))}let l,c=r[l=hn(t)]||r[l=hn(Fe(t))];!c&&o&&(c=r[l=hn(ft(t))]),c&&Se(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(a,e,6,s)}}function Ao(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!q(e)){const c=a=>{const f=Ao(a,t,!0);f&&(l=!0,ce(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(B(o)?o.forEach(c=>i[c]=null):ce(i,o),Z(e)&&r.set(e,i),i)}function Fn(e,t){return!e||!Wt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,ft(t))||Y(e,t))}let le=null,$n=null;function En(e){const t=le;return le=e,$n=e&&e.type.__scopeId||null,t}function Qa(e){$n=e}function Za(){$n=null}function El(e,t=le,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&Ss(-1);const o=En(t);let i;try{i=e(...s)}finally{En(o),r._d&&Ss(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Gn(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:f,renderCache:h,data:p,setupState:y,ctx:v,inheritAttrs:I}=e;let N,K;const k=En(e);try{if(n.shapeFlag&4){const _=s||r,M=_;N=Re(f.call(M,_,h,o,y,p,v)),K=c}else{const _=t;N=Re(_.length>1?_(o,{attrs:c,slots:l,emit:a}):_(o,null)),K=t.props?c:Cl(c)}}catch(_){jt.length=0,qt(_,e,1),N=oe(be)}let g=N;if(K&&I!==!1){const _=Object.keys(K),{shapeFlag:M}=g;_.length&&M&7&&(i&&_.some(Ar)&&(K=xl(K,i)),g=et(g,K))}return n.dirs&&(g=et(g),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),N=g,En(k),N}const Cl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Wt(n))&&((t||(t={}))[n]=e[n]);return t},xl=(e,t)=>{const n={};for(const r in e)(!Ar(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Sl(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?ds(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Oo(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):vl(e)}const Rl=Symbol.for("v-scx"),Ll=()=>xt(Rl);function kr(e,t){return Hn(e,null,t)}function nu(e,t){return Hn(e,null,{flush:"post"})}const rn={};function Ve(e,t,n){return Hn(e,t,n)}function Hn(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ee){if(t&&o){const L=t;t=(...F)=>{L(...F),M()}}const c=ue,a=L=>r===!0?L:lt(L,r===!1?1:void 0);let f,h=!1,p=!1;if(de(e)?(f=()=>e.value,h=bn(e)):wt(e)?(f=()=>a(e),h=!0):B(e)?(p=!0,h=e.some(L=>wt(L)||bn(L)),f=()=>e.map(L=>{if(de(L))return L.value;if(wt(L))return a(L);if(q(L))return Je(L,c,2)})):q(e)?t?f=()=>Je(e,c,2):f=()=>(y&&y(),Se(e,c,3,[v])):f=xe,t&&r){const L=f;f=()=>lt(L())}let y,v=L=>{y=g.onStop=()=>{Je(L,c,4),y=g.onStop=void 0}},I;if(Xt)if(v=xe,t?n&&Se(t,c,3,[f(),p?[]:void 0,v]):f(),s==="sync"){const L=Ll();I=L.__watcherHandles||(L.__watcherHandles=[])}else return xe;let N=p?new Array(e.length).fill(rn):rn;const K=()=>{if(!(!g.active||!g.dirty))if(t){const L=g.run();(r||h||(p?L.some((F,T)=>Ze(F,N[T])):Ze(L,N)))&&(y&&y(),Se(t,c,3,[L,N===rn?void 0:p&&N[0]===rn?[]:N,v]),N=L)}else g.run()};K.allowRecurse=!!t;let k;s==="sync"?k=K:s==="post"?k=()=>ge(K,c&&c.suspense):(K.pre=!0,c&&(K.id=c.uid),k=()=>Nn(K));const g=new Mr(f,xe,k),_=io(),M=()=>{g.stop(),_&&Rr(_.effects,g)};return t?n?K():N=g.run():s==="post"?ge(g.run.bind(g),c&&c.suspense):g.run(),I&&I.push(M),M}function Ol(e,t,n){const r=this.proxy,s=ne(e)?e.includes(".")?Io(r,e):()=>r[e]:e.bind(r,r);let o;q(t)?o=t:(o=t.handler,n=t);const i=zt(this),l=Hn(s,o.bind(r),n);return i(),l}function Io(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),de(e))lt(e.value,t,n,r);else if(B(e))for(let s=0;s{lt(s,t,n,r)});else if(no(e))for(const s in e)lt(e[s],t,n,r);return e}function ru(e,t){if(le===null)return e;const n=Bn(le)||le.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),$o(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],Mo={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},Ml={name:"BaseTransition",props:Mo,setup(e,{slots:t}){const n=Un(),r=Il();return()=>{const s=t.default&&No(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const p of s)if(p.type!==be){o=p;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return zn(o);const c=ps(o);if(!c)return zn(o);const a=gr(c,i,r,n);mr(c,a);const f=n.subTree,h=f&&ps(f);if(h&&h.type!==be&&!it(c,h)){const p=gr(h,i,r,n);if(mr(h,p),l==="out-in")return r.isLeaving=!0,p.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},zn(o);l==="in-out"&&c.type!==be&&(p.delayLeave=(y,v,I)=>{const N=Po(r,h);N[String(h.key)]=h,y[Ge]=()=>{v(),y[Ge]=void 0,delete a.delayedLeave},a.delayedLeave=I})}return o}}},Pl=Ml;function Po(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function gr(e,t,n,r){const{appear:s,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:f,onBeforeLeave:h,onLeave:p,onAfterLeave:y,onLeaveCancelled:v,onBeforeAppear:I,onAppear:N,onAfterAppear:K,onAppearCancelled:k}=t,g=String(e.key),_=Po(n,e),M=(T,$)=>{T&&Se(T,r,9,$)},L=(T,$)=>{const E=$[1];M(T,$),B(T)?T.every(j=>j.length<=1)&&E():T.length<=1&&E()},F={mode:o,persisted:i,beforeEnter(T){let $=l;if(!n.isMounted)if(s)$=I||l;else return;T[Ge]&&T[Ge](!0);const E=_[g];E&&it(e,E)&&E.el[Ge]&&E.el[Ge](),M($,[T])},enter(T){let $=c,E=a,j=f;if(!n.isMounted)if(s)$=N||c,E=K||a,j=k||f;else return;let A=!1;const G=T[sn]=ie=>{A||(A=!0,ie?M(j,[T]):M(E,[T]),F.delayedLeave&&F.delayedLeave(),T[sn]=void 0)};$?L($,[T,G]):G()},leave(T,$){const E=String(e.key);if(T[sn]&&T[sn](!0),n.isUnmounting)return $();M(h,[T]);let j=!1;const A=T[Ge]=G=>{j||(j=!0,$(),G?M(v,[T]):M(y,[T]),T[Ge]=void 0,_[E]===e&&delete _[E])};_[E]=e,p?L(p,[T,A]):A()},clone(T){return gr(T,t,n,r)}};return F}function zn(e){if(Gt(e))return e=et(e),e.children=null,e}function ps(e){return Gt(e)?e.children?e.children[0]:void 0:e}function mr(e,t){e.shapeFlag&6&&e.component?mr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function No(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function su(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,p()),p=()=>{let y;return c||(y=c=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),l)return new Promise((I,N)=>{l(v,()=>I(h()),()=>N(v),f+1)});throw v}).then(v=>y!==c&&c?c:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),a=v,v)))};return Kr({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return a},setup(){const y=ue;if(a)return()=>Xn(a,y);const v=k=>{c=null,qt(k,y,13,!r)};if(i&&y.suspense||Xt)return p().then(k=>()=>Xn(k,y)).catch(k=>(v(k),()=>r?oe(r,{error:k}):null));const I=se(!1),N=se(),K=se(!!s);return s&&setTimeout(()=>{K.value=!1},s),o!=null&&setTimeout(()=>{if(!I.value&&!N.value){const k=new Error(`Async component timed out after ${o}ms.`);v(k),N.value=k}},o),p().then(()=>{I.value=!0,y.parent&&Gt(y.parent.vnode)&&(y.parent.effect.dirty=!0,Nn(y.parent.update))}).catch(k=>{v(k),N.value=k}),()=>{if(I.value&&a)return Xn(a,y);if(N.value&&r)return oe(r,{error:N.value});if(n&&!K.value)return oe(n)}}})}function Xn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=oe(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const Gt=e=>e.type.__isKeepAlive;function Nl(e,t){Fo(e,"a",t)}function Fl(e,t){Fo(e,"da",t)}function Fo(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(jn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Gt(s.parent.vnode)&&$l(r,t,n,s),s=s.parent}}function $l(e,t,n,r){const s=jn(t,e,r,!0);Vn(()=>{Rr(r[t],s)},n)}function jn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;dt();const l=zt(n),c=Se(t,n,e,i);return l(),ht(),c});return r?s.unshift(o):s.push(o),o}}const Ue=e=>(t,n=ue)=>(!Xt||e==="sp")&&jn(e,(...r)=>t(...r),n),Hl=Ue("bm"),Rt=Ue("m"),jl=Ue("bu"),Vl=Ue("u"),$o=Ue("bum"),Vn=Ue("um"),Dl=Ue("sp"),Ul=Ue("rtg"),Bl=Ue("rtc");function kl(e,t=ue){jn("ec",e,t)}function ou(e,t,n,r){let s;const o=n&&n[r];if(B(e)||ne(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lSn(t)?!(t.type===be||t.type===me&&!Ho(t.children)):!0)?e:null}function lu(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:hn(r)]=e[r];return n}const yr=e=>e?ti(e)?Bn(e)||e.proxy:yr(e.parent):null,Nt=ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>yr(e.parent),$root:e=>yr(e.root),$emit:e=>e.emit,$options:e=>Wr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Nn(e.update)}),$nextTick:e=>e.n||(e.n=Pn.bind(e.proxy)),$watch:e=>Ol.bind(e)}),Yn=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),Kl={get({_:e},t){const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const y=i[t];if(y!==void 0)switch(y){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(Yn(r,t))return i[t]=1,r[t];if(s!==ee&&Y(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Y(a,t))return i[t]=3,o[t];if(n!==ee&&Y(n,t))return i[t]=4,n[t];_r&&(i[t]=0)}}const f=Nt[t];let h,p;if(f)return t==="$attrs"&&ye(e,"get",t),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(p=c.config.globalProperties,Y(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return Yn(s,t)?(s[t]=n,!0):r!==ee&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ee&&Y(e,i)||Yn(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(Nt,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function cu(){return Wl().slots}function Wl(){const e=Un();return e.setupContext||(e.setupContext=ri(e))}function gs(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let _r=!0;function ql(e){const t=Wr(e),n=e.proxy,r=e.ctx;_r=!1,t.beforeCreate&&ms(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:p,beforeUpdate:y,updated:v,activated:I,deactivated:N,beforeDestroy:K,beforeUnmount:k,destroyed:g,unmounted:_,render:M,renderTracked:L,renderTriggered:F,errorCaptured:T,serverPrefetch:$,expose:E,inheritAttrs:j,components:A,directives:G,filters:ie}=t;if(a&&Gl(a,r,null),i)for(const X in i){const V=i[X];q(V)&&(r[X]=V.bind(n))}if(s){const X=s.call(n,n);Z(X)&&(e.data=In(X))}if(_r=!0,o)for(const X in o){const V=o[X],$e=q(V)?V.bind(n,n):q(V.get)?V.get.bind(n,n):xe,Yt=!q(V)&&q(V.set)?V.set.bind(n):xe,tt=re({get:$e,set:Yt});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Oe=>tt.value=Oe})}if(l)for(const X in l)jo(l[X],r,n,X);if(c){const X=q(c)?c.call(n):c;Reflect.ownKeys(X).forEach(V=>{Zl(V,X[V])})}f&&ms(f,e,"c");function D(X,V){B(V)?V.forEach($e=>X($e.bind(n))):V&&X(V.bind(n))}if(D(Hl,h),D(Rt,p),D(jl,y),D(Vl,v),D(Nl,I),D(Fl,N),D(kl,T),D(Bl,L),D(Ul,F),D($o,k),D(Vn,_),D(Dl,$),B(E))if(E.length){const X=e.exposed||(e.exposed={});E.forEach(V=>{Object.defineProperty(X,V,{get:()=>n[V],set:$e=>n[V]=$e})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),j!=null&&(e.inheritAttrs=j),A&&(e.components=A),G&&(e.directives=G)}function Gl(e,t,n=xe){B(e)&&(e=vr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=xt(s.from||r,s.default,!0):o=xt(s.from||r):o=xt(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ms(e,t,n){Se(B(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function jo(e,t,n,r){const s=r.includes(".")?Io(n,r):()=>n[r];if(ne(e)){const o=t[e];q(o)&&Ve(s,o)}else if(q(e))Ve(s,e.bind(n));else if(Z(e))if(B(e))e.forEach(o=>jo(o,t,n,r));else{const o=q(e.handler)?e.handler.bind(n):t[e.handler];q(o)&&Ve(s,o,e)}}function Wr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>Cn(c,a,i,!0)),Cn(c,t,i)),Z(t)&&o.set(t,c),c}function Cn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Cn(e,o,n,!0),s&&s.forEach(i=>Cn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=zl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const zl={data:ys,props:_s,emits:_s,methods:It,computed:It,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:It,directives:It,watch:Yl,provide:ys,inject:Xl};function ys(e,t){return t?e?function(){return ce(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Xl(e,t){return It(vr(e),vr(t))}function vr(e){if(B(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}function ec(e,t,n,r=!1){const s={},o={};_n(o,Dn,1),e.propsDefaults=Object.create(null),Do(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:il(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function tc(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[p,y]=Uo(h,t,!0);ce(i,p),y&&l.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,_t),_t;if(B(o))for(let f=0;f-1,y[1]=I<0||v-1||Y(y,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function vs(e){return e[0]!=="$"&&!bt(e)}function bs(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function ws(e,t){return bs(e)===bs(t)}function Es(e,t){return B(t)?t.findIndex(n=>ws(n,e)):q(t)&&ws(t,e)?0:-1}const Bo=e=>e[0]==="_"||e==="$stable",qr=e=>B(e)?e.map(Re):[Re(e)],nc=(e,t,n)=>{if(t._n)return t;const r=El((...s)=>qr(t(...s)),n);return r._c=!1,r},ko=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Bo(s))continue;const o=e[s];if(q(o))t[s]=nc(s,o,r);else if(o!=null){const i=qr(o);t[s]=()=>i}}},Ko=(e,t)=>{const n=qr(t);e.slots.default=()=>n},rc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),_n(t,"_",n)):ko(t,e.slots={})}else e.slots={},t&&Ko(e,t);_n(e.slots,Dn,1)},sc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ce(s,t),!n&&l===1&&delete s._):(o=!t.$stable,ko(t,s)),i=t}else t&&(Ko(e,t),i={default:1});if(o)for(const l in s)!Bo(l)&&i[l]==null&&delete s[l]};function xn(e,t,n,r,s=!1){if(B(e)){e.forEach((p,y)=>xn(p,t&&(B(t)?t[y]:t),n,r,s));return}if(Ct(r)&&!s)return;const o=r.shapeFlag&4?Bn(r.component)||r.component.proxy:r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(ne(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),q(c))Je(c,l,12,[i,f]);else{const p=ne(c),y=de(c);if(p||y){const v=()=>{if(e.f){const I=p?Y(h,c)?h[c]:f[c]:c.value;s?B(I)&&Rr(I,o):B(I)?I.includes(o)||I.push(o):p?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else p?(f[c]=i,Y(h,c)&&(h[c]=i)):y&&(c.value=i,e.k&&(f[e.k]=i))};i?(v.id=-1,ge(v,n)):v()}}}let ke=!1;const oc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",ic=e=>e.namespaceURI.includes("MathML"),on=e=>{if(oc(e))return"svg";if(ic(e))return"mathml"},ln=e=>e.nodeType===8;function lc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(g,_)=>{if(!_.hasChildNodes()){n(null,g,_),wn(),_._vnode=g;return}ke=!1,h(_.firstChild,g,null,null,null),wn(),_._vnode=g,ke&&console.error("Hydration completed but contains mismatches.")},h=(g,_,M,L,F,T=!1)=>{const $=ln(g)&&g.data==="[",E=()=>I(g,_,M,L,F,$),{type:j,ref:A,shapeFlag:G,patchFlag:ie}=_;let fe=g.nodeType;_.el=g,ie===-2&&(T=!1,_.dynamicChildren=null);let D=null;switch(j){case Tt:fe!==3?_.children===""?(c(_.el=s(""),i(g),g),D=g):D=E():(g.data!==_.children&&(ke=!0,g.data=_.children),D=o(g));break;case be:k(g)?(D=o(g),K(_.el=g.content.firstChild,g,M)):fe!==8||$?D=E():D=o(g);break;case Ht:if($&&(g=o(g),fe=g.nodeType),fe===1||fe===3){D=g;const X=!_.children.length;for(let V=0;V<_.staticCount;V++)X&&(_.children+=D.nodeType===1?D.outerHTML:D.data),V===_.staticCount-1&&(_.anchor=D),D=o(D);return $?o(D):D}else E();break;case me:$?D=v(g,_,M,L,F,T):D=E();break;default:if(G&1)(fe!==1||_.type.toLowerCase()!==g.tagName.toLowerCase())&&!k(g)?D=E():D=p(g,_,M,L,F,T);else if(G&6){_.slotScopeIds=F;const X=i(g);if($?D=N(g):ln(g)&&g.data==="teleport start"?D=N(g,g.data,"teleport end"):D=o(g),t(_,X,null,M,L,on(X),T),Ct(_)){let V;$?(V=oe(me),V.anchor=D?D.previousSibling:X.lastChild):V=g.nodeType===3?ei(""):oe("div"),V.el=g,_.component.subTree=V}}else G&64?fe!==8?D=E():D=_.type.hydrate(g,_,M,L,F,T,e,y):G&128&&(D=_.type.hydrate(g,_,M,L,on(i(g)),F,T,e,h))}return A!=null&&xn(A,null,L,_),D},p=(g,_,M,L,F,T)=>{T=T||!!_.dynamicChildren;const{type:$,props:E,patchFlag:j,shapeFlag:A,dirs:G,transition:ie}=_,fe=$==="input"||$==="option";if(fe||j!==-1){G&&Me(_,null,M,"created");let D=!1;if(k(g)){D=qo(L,ie)&&M&&M.vnode.props&&M.vnode.props.appear;const V=g.content.firstChild;D&&ie.beforeEnter(V),K(V,g,M),_.el=g=V}if(A&16&&!(E&&(E.innerHTML||E.textContent))){let V=y(g.firstChild,_,g,M,L,F,T);for(;V;){ke=!0;const $e=V;V=V.nextSibling,l($e)}}else A&8&&g.textContent!==_.children&&(ke=!0,g.textContent=_.children);if(E)if(fe||!T||j&48)for(const V in E)(fe&&(V.endsWith("value")||V==="indeterminate")||Wt(V)&&!bt(V)||V[0]===".")&&r(g,V,null,E[V],void 0,void 0,M);else E.onClick&&r(g,"onClick",null,E.onClick,void 0,void 0,M);let X;(X=E&&E.onVnodeBeforeMount)&&Ee(X,M,_),G&&Me(_,null,M,"beforeMount"),((X=E&&E.onVnodeMounted)||G||D)&&Oo(()=>{X&&Ee(X,M,_),D&&ie.enter(g),G&&Me(_,null,M,"mounted")},L)}return g.nextSibling},y=(g,_,M,L,F,T,$)=>{$=$||!!_.dynamicChildren;const E=_.children,j=E.length;for(let A=0;A{const{slotScopeIds:$}=_;$&&(F=F?F.concat($):$);const E=i(g),j=y(o(g),_,E,M,L,F,T);return j&&ln(j)&&j.data==="]"?o(_.anchor=j):(ke=!0,c(_.anchor=a("]"),E,j),j)},I=(g,_,M,L,F,T)=>{if(ke=!0,_.el=null,T){const j=N(g);for(;;){const A=o(g);if(A&&A!==j)l(A);else break}}const $=o(g),E=i(g);return l(g),n(null,_,E,$,M,L,on(E),F),$},N=(g,_="[",M="]")=>{let L=0;for(;g;)if(g=o(g),g&&ln(g)&&(g.data===_&&L++,g.data===M)){if(L===0)return o(g);L--}return g},K=(g,_,M)=>{const L=_.parentNode;L&&L.replaceChild(g,_);let F=M;for(;F;)F.vnode.el===_&&(F.vnode.el=F.subTree.el=g),F=F.parent},k=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[f,h]}const ge=Oo;function cc(e){return Wo(e)}function ac(e){return Wo(e,lc)}function Wo(e,t){const n=ro();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:p,setScopeId:y=xe,insertStaticContent:v}=e,I=(u,d,m,b=null,w=null,S=null,O=void 0,x=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!it(u,d)&&(b=Jt(u),Oe(u,w,S,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:C,ref:P,shapeFlag:U}=d;switch(C){case Tt:N(u,d,m,b);break;case be:K(u,d,m,b);break;case Ht:u==null&&k(d,m,b,O);break;case me:A(u,d,m,b,w,S,O,x,R);break;default:U&1?M(u,d,m,b,w,S,O,x,R):U&6?G(u,d,m,b,w,S,O,x,R):(U&64||U&128)&&C.process(u,d,m,b,w,S,O,x,R,pt)}P!=null&&w&&xn(P,u&&u.ref,S,d||u,!d)},N=(u,d,m,b)=>{if(u==null)r(d.el=l(d.children),m,b);else{const w=d.el=u.el;d.children!==u.children&&a(w,d.children)}},K=(u,d,m,b)=>{u==null?r(d.el=c(d.children||""),m,b):d.el=u.el},k=(u,d,m,b)=>{[u.el,u.anchor]=v(u.children,d,m,b,u.el,u.anchor)},g=({el:u,anchor:d},m,b)=>{let w;for(;u&&u!==d;)w=p(u),r(u,m,b),u=w;r(d,m,b)},_=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=p(u),s(u),u=m;s(d)},M=(u,d,m,b,w,S,O,x,R)=>{d.type==="svg"?O="svg":d.type==="math"&&(O="mathml"),u==null?L(d,m,b,w,S,O,x,R):$(u,d,w,S,O,x,R)},L=(u,d,m,b,w,S,O,x)=>{let R,C;const{props:P,shapeFlag:U,transition:H,dirs:W}=u;if(R=u.el=i(u.type,S,P&&P.is,P),U&8?f(R,u.children):U&16&&T(u.children,R,null,b,w,Jn(u,S),O,x),W&&Me(u,null,b,"created"),F(R,u,u.scopeId,O,b),P){for(const Q in P)Q!=="value"&&!bt(Q)&&o(R,Q,null,P[Q],S,u.children,b,w,He);"value"in P&&o(R,"value",null,P.value,S),(C=P.onVnodeBeforeMount)&&Ee(C,b,u)}W&&Me(u,null,b,"beforeMount");const z=qo(w,H);z&&H.beforeEnter(R),r(R,d,m),((C=P&&P.onVnodeMounted)||z||W)&&ge(()=>{C&&Ee(C,b,u),z&&H.enter(R),W&&Me(u,null,b,"mounted")},w)},F=(u,d,m,b,w)=>{if(m&&y(u,m),b)for(let S=0;S{for(let C=R;C{const x=d.el=u.el;let{patchFlag:R,dynamicChildren:C,dirs:P}=d;R|=u.patchFlag&16;const U=u.props||ee,H=d.props||ee;let W;if(m&&nt(m,!1),(W=H.onVnodeBeforeUpdate)&&Ee(W,m,d,u),P&&Me(d,u,m,"beforeUpdate"),m&&nt(m,!0),C?E(u.dynamicChildren,C,x,m,b,Jn(d,w),S):O||V(u,d,x,null,m,b,Jn(d,w),S,!1),R>0){if(R&16)j(x,d,U,H,m,b,w);else if(R&2&&U.class!==H.class&&o(x,"class",null,H.class,w),R&4&&o(x,"style",U.style,H.style,w),R&8){const z=d.dynamicProps;for(let Q=0;Q{W&&Ee(W,m,d,u),P&&Me(d,u,m,"updated")},b)},E=(u,d,m,b,w,S,O)=>{for(let x=0;x{if(m!==b){if(m!==ee)for(const x in m)!bt(x)&&!(x in b)&&o(u,x,m[x],null,O,d.children,w,S,He);for(const x in b){if(bt(x))continue;const R=b[x],C=m[x];R!==C&&x!=="value"&&o(u,x,C,R,O,d.children,w,S,He)}"value"in b&&o(u,"value",m.value,b.value,O)}},A=(u,d,m,b,w,S,O,x,R)=>{const C=d.el=u?u.el:l(""),P=d.anchor=u?u.anchor:l("");let{patchFlag:U,dynamicChildren:H,slotScopeIds:W}=d;W&&(x=x?x.concat(W):W),u==null?(r(C,m,b),r(P,m,b),T(d.children||[],m,P,w,S,O,x,R)):U>0&&U&64&&H&&u.dynamicChildren?(E(u.dynamicChildren,H,m,w,S,O,x),(d.key!=null||w&&d===w.subTree)&&Gr(u,d,!0)):V(u,d,m,P,w,S,O,x,R)},G=(u,d,m,b,w,S,O,x,R)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?w.ctx.activate(d,m,b,O,R):ie(d,m,b,w,S,O,R):fe(u,d,R)},ie=(u,d,m,b,w,S,O)=>{const x=u.component=bc(u,b,w);if(Gt(u)&&(x.ctx.renderer=pt),wc(x),x.asyncDep){if(w&&w.registerDep(x,D),!u.el){const R=x.subTree=oe(be);K(null,R,d,m)}}else D(x,u,d,m,w,S,O)},fe=(u,d,m)=>{const b=d.component=u.component;if(Sl(u,d,m))if(b.asyncDep&&!b.asyncResolved){X(b,d,m);return}else b.next=d,_l(b.update),b.effect.dirty=!0,b.update();else d.el=u.el,b.vnode=d},D=(u,d,m,b,w,S,O)=>{const x=()=>{if(u.isMounted){let{next:P,bu:U,u:H,parent:W,vnode:z}=u;{const gt=Go(u);if(gt){P&&(P.el=z.el,X(u,P,O)),gt.asyncDep.then(()=>{u.isUnmounted||x()});return}}let Q=P,te;nt(u,!1),P?(P.el=z.el,X(u,P,O)):P=z,U&&pn(U),(te=P.props&&P.props.onVnodeBeforeUpdate)&&Ee(te,W,P,z),nt(u,!0);const ae=Gn(u),Ae=u.subTree;u.subTree=ae,I(Ae,ae,h(Ae.el),Jt(Ae),u,w,S),P.el=ae.el,Q===null&&Tl(u,ae.el),H&&ge(H,w),(te=P.props&&P.props.onVnodeUpdated)&&ge(()=>Ee(te,W,P,z),w)}else{let P;const{el:U,props:H}=d,{bm:W,m:z,parent:Q}=u,te=Ct(d);if(nt(u,!1),W&&pn(W),!te&&(P=H&&H.onVnodeBeforeMount)&&Ee(P,Q,d),nt(u,!0),U&&Wn){const ae=()=>{u.subTree=Gn(u),Wn(U,u.subTree,u,w,null)};te?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=Gn(u);I(null,ae,m,b,u,w,S),d.el=ae.el}if(z&&ge(z,w),!te&&(P=H&&H.onVnodeMounted)){const ae=d;ge(()=>Ee(P,Q,ae),w)}(d.shapeFlag&256||Q&&Ct(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&ge(u.a,w),u.isMounted=!0,d=m=b=null}},R=u.effect=new Mr(x,xe,()=>Nn(C),u.scope),C=u.update=()=>{R.dirty&&R.run()};C.id=u.uid,nt(u,!0),C()},X=(u,d,m)=>{d.component=u;const b=u.vnode.props;u.vnode=d,u.next=null,tc(u,d.props,b,m),sc(u,d.children,m),dt(),fs(u),ht()},V=(u,d,m,b,w,S,O,x,R=!1)=>{const C=u&&u.children,P=u?u.shapeFlag:0,U=d.children,{patchFlag:H,shapeFlag:W}=d;if(H>0){if(H&128){Yt(C,U,m,b,w,S,O,x,R);return}else if(H&256){$e(C,U,m,b,w,S,O,x,R);return}}W&8?(P&16&&He(C,w,S),U!==C&&f(m,U)):P&16?W&16?Yt(C,U,m,b,w,S,O,x,R):He(C,w,S,!0):(P&8&&f(m,""),W&16&&T(U,m,b,w,S,O,x,R))},$e=(u,d,m,b,w,S,O,x,R)=>{u=u||_t,d=d||_t;const C=u.length,P=d.length,U=Math.min(C,P);let H;for(H=0;HP?He(u,w,S,!0,!1,U):T(d,m,b,w,S,O,x,R,U)},Yt=(u,d,m,b,w,S,O,x,R)=>{let C=0;const P=d.length;let U=u.length-1,H=P-1;for(;C<=U&&C<=H;){const W=u[C],z=d[C]=R?ze(d[C]):Re(d[C]);if(it(W,z))I(W,z,m,null,w,S,O,x,R);else break;C++}for(;C<=U&&C<=H;){const W=u[U],z=d[H]=R?ze(d[H]):Re(d[H]);if(it(W,z))I(W,z,m,null,w,S,O,x,R);else break;U--,H--}if(C>U){if(C<=H){const W=H+1,z=WH)for(;C<=U;)Oe(u[C],w,S,!0),C++;else{const W=C,z=C,Q=new Map;for(C=z;C<=H;C++){const _e=d[C]=R?ze(d[C]):Re(d[C]);_e.key!=null&&Q.set(_e.key,C)}let te,ae=0;const Ae=H-z+1;let gt=!1,es=0;const Lt=new Array(Ae);for(C=0;C=Ae){Oe(_e,w,S,!0);continue}let Ie;if(_e.key!=null)Ie=Q.get(_e.key);else for(te=z;te<=H;te++)if(Lt[te-z]===0&&it(_e,d[te])){Ie=te;break}Ie===void 0?Oe(_e,w,S,!0):(Lt[Ie-z]=C+1,Ie>=es?es=Ie:gt=!0,I(_e,d[Ie],m,null,w,S,O,x,R),ae++)}const ts=gt?uc(Lt):_t;for(te=ts.length-1,C=Ae-1;C>=0;C--){const _e=z+C,Ie=d[_e],ns=_e+1{const{el:S,type:O,transition:x,children:R,shapeFlag:C}=u;if(C&6){tt(u.component.subTree,d,m,b);return}if(C&128){u.suspense.move(d,m,b);return}if(C&64){O.move(u,d,m,pt);return}if(O===me){r(S,d,m);for(let U=0;Ux.enter(S),w);else{const{leave:U,delayLeave:H,afterLeave:W}=x,z=()=>r(S,d,m),Q=()=>{U(S,()=>{z(),W&&W()})};H?H(S,z,Q):Q()}else r(S,d,m)},Oe=(u,d,m,b=!1,w=!1)=>{const{type:S,props:O,ref:x,children:R,dynamicChildren:C,shapeFlag:P,patchFlag:U,dirs:H}=u;if(x!=null&&xn(x,null,m,u,!0),P&256){d.ctx.deactivate(u);return}const W=P&1&&H,z=!Ct(u);let Q;if(z&&(Q=O&&O.onVnodeBeforeUnmount)&&Ee(Q,d,u),P&6)xi(u.component,m,b);else{if(P&128){u.suspense.unmount(m,b);return}W&&Me(u,null,d,"beforeUnmount"),P&64?u.type.remove(u,d,m,w,pt,b):C&&(S!==me||U>0&&U&64)?He(C,d,m,!1,!0):(S===me&&U&384||!w&&P&16)&&He(R,d,m),b&&Qr(u)}(z&&(Q=O&&O.onVnodeUnmounted)||W)&&ge(()=>{Q&&Ee(Q,d,u),W&&Me(u,null,d,"unmounted")},m)},Qr=u=>{const{type:d,el:m,anchor:b,transition:w}=u;if(d===me){Ci(m,b);return}if(d===Ht){_(u);return}const S=()=>{s(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:O,delayLeave:x}=w,R=()=>O(m,S);x?x(u.el,S,R):R()}else S()},Ci=(u,d)=>{let m;for(;u!==d;)m=p(u),s(u),u=m;s(d)},xi=(u,d,m)=>{const{bum:b,scope:w,update:S,subTree:O,um:x}=u;b&&pn(b),w.stop(),S&&(S.active=!1,Oe(O,u,d,m)),x&&ge(x,d),ge(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},He=(u,d,m,b=!1,w=!1,S=0)=>{for(let O=S;Ou.shapeFlag&6?Jt(u.component.subTree):u.shapeFlag&128?u.suspense.next():p(u.anchor||u.el);let kn=!1;const Zr=(u,d,m)=>{u==null?d._vnode&&Oe(d._vnode,null,null,!0):I(d._vnode||null,u,d,null,null,null,m),kn||(kn=!0,fs(),wn(),kn=!1),d._vnode=u},pt={p:I,um:Oe,m:tt,r:Qr,mt:ie,mc:T,pc:V,pbc:E,n:Jt,o:e};let Kn,Wn;return t&&([Kn,Wn]=t(pt)),{render:Zr,hydrate:Kn,createApp:Ql(Zr,Kn)}}function Jn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function qo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Gr(e,t,n=!1){const r=e.children,s=t.children;if(B(r)&&B(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Go(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Go(t)}const fc=e=>e.__isTeleport,$t=e=>e&&(e.disabled||e.disabled===""),Cs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,xs=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,wr=(e,t)=>{const n=e&&e.to;return ne(n)?t?t(n):null:n},dc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:p,o:{insert:y,querySelector:v,createText:I,createComment:N}}=a,K=$t(t.props);let{shapeFlag:k,children:g,dynamicChildren:_}=t;if(e==null){const M=t.el=I(""),L=t.anchor=I("");y(M,n,r),y(L,n,r);const F=t.target=wr(t.props,v),T=t.targetAnchor=I("");F&&(y(T,F),i==="svg"||Cs(F)?i="svg":(i==="mathml"||xs(F))&&(i="mathml"));const $=(E,j)=>{k&16&&f(g,E,j,s,o,i,l,c)};K?$(n,L):F&&$(F,T)}else{t.el=e.el;const M=t.anchor=e.anchor,L=t.target=e.target,F=t.targetAnchor=e.targetAnchor,T=$t(e.props),$=T?n:L,E=T?M:F;if(i==="svg"||Cs(L)?i="svg":(i==="mathml"||xs(L))&&(i="mathml"),_?(p(e.dynamicChildren,_,$,s,o,i,l),Gr(e,t,!0)):c||h(e,t,$,E,s,o,i,l,!1),K)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):cn(t,n,M,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const j=t.target=wr(t.props,v);j&&cn(t,j,null,a,0)}else T&&cn(t,L,F,a,1)}zo(t)},remove(e,t,n,r,{um:s,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:f,target:h,props:p}=e;if(h&&o(f),i&&o(a),l&16){const y=i||!$t(p);for(let v=0;v0?Le||_t:null,pc(),kt>0&&Le&&Le.push(e),e}function uu(e,t,n,r,s,o){return Yo(Zo(e,t,n,r,s,o,!0))}function Jo(e,t,n,r,s){return Yo(oe(e,t,n,r,s,!0))}function Sn(e){return e?e.__v_isVNode===!0:!1}function it(e,t){return e.type===t.type&&e.key===t.key}const Dn="__vInternal",Qo=({key:e})=>e??null,gn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ne(e)||de(e)||q(e)?{i:le,r:e,k:t,f:!!n}:e:null);function Zo(e,t=null,n=null,r=0,s=null,o=e===me?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Qo(t),ref:t&&gn(t),scopeId:$n,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:le};return l?(zr(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ne(n)?8:16),kt>0&&!i&&Le&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Le.push(c),c}const oe=gc;function gc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Ro)&&(e=be),Sn(e)){const l=et(e,t,!0);return n&&zr(l,n),kt>0&&!o&&Le&&(l.shapeFlag&6?Le[Le.indexOf(e)]=l:Le.push(l)),l.patchFlag|=-2,l}if(Sc(e)&&(e=e.__vccOpts),t){t=mc(t);let{class:l,style:c}=t;l&&!ne(l)&&(t.class=Ir(l)),Z(c)&&(vo(c)&&!B(c)&&(c=ce({},c)),t.style=Or(c))}const i=ne(e)?1:Al(e)?128:fc(e)?64:Z(e)?4:q(e)?2:0;return Zo(e,t,n,r,s,i,o,!0)}function mc(e){return e?vo(e)||Dn in e?ce({},e):e:null}function et(e,t,n=!1){const{props:r,ref:s,patchFlag:o,children:i}=e,l=t?yc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Qo(l),ref:t&&t.ref?n&&s?B(s)?s.concat(gn(t)):[s,gn(t)]:gn(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==me?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&et(e.ssContent),ssFallback:e.ssFallback&&et(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ei(e=" ",t=0){return oe(Tt,null,e,t)}function fu(e,t){const n=oe(Ht,null,e);return n.staticCount=t,n}function du(e="",t=!1){return t?(Xo(),Jo(be,null,e)):oe(be,null,e)}function Re(e){return e==null||typeof e=="boolean"?oe(be):B(e)?oe(me,null,e.slice()):typeof e=="object"?ze(e):oe(Tt,null,String(e))}function ze(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:et(e)}function zr(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),zr(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Dn in t)?t._ctx=le:s===3&&le&&(le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:le},n=32):(t=String(t),r&64?(n=16,t=[ei(t)]):n=8);e.children=t,e.shapeFlag|=n}function yc(...e){const t={};for(let n=0;nue||le;let Tn,Er;{const e=ro(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Tn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Er=t("__VUE_SSR_SETTERS__",n=>Xt=n)}const zt=e=>{const t=ue;return Tn(e),e.scope.on(),()=>{e.scope.off(),Tn(t)}},Ts=()=>{ue&&ue.scope.off(),Tn(null)};function ti(e){return e.vnode.shapeFlag&4}let Xt=!1;function wc(e,t=!1){t&&Er(t);const{props:n,children:r}=e.vnode,s=ti(e);ec(e,n,s,t),rc(e,r);const o=s?Ec(e,t):void 0;return t&&Er(!1),o}function Ec(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Mt(new Proxy(e.ctx,Kl));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?ri(e):null,o=zt(e);dt();const i=Je(r,e,0,[e.props,s]);if(ht(),o(),eo(i)){if(i.then(Ts,Ts),t)return i.then(l=>{As(e,l,t)}).catch(l=>{qt(l,e,0)});e.asyncDep=i}else As(e,i,t)}else ni(e,t)}function As(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=Co(t)),ni(e,n)}let Rs;function ni(e,t,n){const r=e.type;if(!e.render){if(!t&&Rs&&!r.render){const s=r.template||Wr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=ce(ce({isCustomElement:o,delimiters:l},i),c);r.render=Rs(s,a)}}e.render=r.render||xe}{const s=zt(e);dt();try{ql(e)}finally{ht(),s()}}}function Cc(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ye(e,"get","$attrs"),t[n]}}))}function ri(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Cc(e)},slots:e.slots,emit:e.emit,expose:t}}function Bn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Co(Mt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Nt)return Nt[n](e)},has(t,n){return n in t||n in Nt}}))}function xc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Sc(e){return q(e)&&"__vccOpts"in e}const re=(e,t)=>ll(e,t,Xt);function Cr(e,t,n){const r=arguments.length;return r===2?Z(t)&&!B(t)?Sn(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Sn(n)&&(n=[n]),oe(e,t,n))}const Tc="3.4.21";/** +* @vue/runtime-dom v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Ac="http://www.w3.org/2000/svg",Rc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,Ls=Xe&&Xe.createElement("template"),Lc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Xe.createElementNS(Ac,e):t==="mathml"?Xe.createElementNS(Rc,e):Xe.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Ls.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Ls.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",Ot="animation",Kt=Symbol("_vtc"),si=(e,{slots:t})=>Cr(Pl,Oc(e),t);si.displayName="Transition";const oi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};si.props=ce({},Mo,oi);const rt=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},Os=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function Oc(e){const t={};for(const A in e)A in oi||(t[A]=e[A]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,v=Ic(s),I=v&&v[0],N=v&&v[1],{onBeforeEnter:K,onEnter:k,onEnterCancelled:g,onLeave:_,onLeaveCancelled:M,onBeforeAppear:L=K,onAppear:F=k,onAppearCancelled:T=g}=t,$=(A,G,ie)=>{st(A,G?f:l),st(A,G?a:i),ie&&ie()},E=(A,G)=>{A._isLeaving=!1,st(A,h),st(A,y),st(A,p),G&&G()},j=A=>(G,ie)=>{const fe=A?F:k,D=()=>$(G,A,ie);rt(fe,[G,D]),Is(()=>{st(G,A?c:o),We(G,A?f:l),Os(fe)||Ms(G,r,I,D)})};return ce(t,{onBeforeEnter(A){rt(K,[A]),We(A,o),We(A,i)},onBeforeAppear(A){rt(L,[A]),We(A,c),We(A,a)},onEnter:j(!1),onAppear:j(!0),onLeave(A,G){A._isLeaving=!0;const ie=()=>E(A,G);We(A,h),Nc(),We(A,p),Is(()=>{A._isLeaving&&(st(A,h),We(A,y),Os(_)||Ms(A,r,N,ie))}),rt(_,[A,ie])},onEnterCancelled(A){$(A,!1),rt(g,[A])},onAppearCancelled(A){$(A,!0),rt(T,[A])},onLeaveCancelled(A){E(A),rt(M,[A])}})}function Ic(e){if(e==null)return null;if(Z(e))return[Qn(e.enter),Qn(e.leave)];{const t=Qn(e);return[t,t]}}function Qn(e){return Oi(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Kt]||(e[Kt]=new Set)).add(t)}function st(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Kt];n&&(n.delete(t),n.size||(e[Kt]=void 0))}function Is(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Mc=0;function Ms(e,t,n,r){const s=e._endId=++Mc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Pc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,p),o()},p=y=>{y.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[v]||"").split(", "),s=r(`${Ke}Delay`),o=r(`${Ke}Duration`),i=Ps(s,o),l=r(`${Ot}Delay`),c=r(`${Ot}Duration`),a=Ps(l,c);let f=null,h=0,p=0;t===Ke?i>0&&(f=Ke,h=i,p=o.length):t===Ot?a>0&&(f=Ot,h=a,p=c.length):(h=Math.max(i,a),f=h>0?i>a?Ke:Ot:null,p=f?f===Ke?o.length:c.length:0);const y=f===Ke&&/\b(transform|all)(,|$)/.test(r(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:p,hasTransform:y}}function Ps(e,t){for(;e.lengthNs(n)+Ns(e[r])))}function Ns(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Nc(){return document.body.offsetHeight}function Fc(e,t,n){const r=e[Kt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Fs=Symbol("_vod"),$c=Symbol("_vsh"),Hc=Symbol(""),jc=/(^|;)\s*display\s*:/;function Vc(e,t,n){const r=e.style,s=ne(n);let o=!1;if(n&&!s){if(t)if(ne(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&mn(r,l,"")}else for(const i in t)n[i]==null&&mn(r,i,"");for(const i in n)i==="display"&&(o=!0),mn(r,i,n[i])}else if(s){if(t!==n){const i=r[Hc];i&&(n+=";"+i),r.cssText=n,o=jc.test(n)}}else t&&e.removeAttribute("style");Fs in e&&(e[Fs]=o?r.display:"",e[$c]&&(r.display="none"))}const $s=/\s*!important$/;function mn(e,t,n){if(B(n))n.forEach(r=>mn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Dc(e,t);$s.test(n)?e.setProperty(ft(r),n.replace($s,""),"important"):e[r]=n}}const Hs=["Webkit","Moz","ms"],Zn={};function Dc(e,t){const n=Zn[t];if(n)return n;let r=Fe(t);if(r!=="filter"&&r in e)return Zn[t]=r;r=Ln(r);for(let s=0;ser||(qc.then(()=>er=0),er=Date.now());function zc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Se(Xc(r,n.value),t,5,[r])};return n.value=e,n.attached=Gc(),n}function Xc(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Us=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Yc=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?Fc(e,r,a):t==="style"?Vc(e,n,r):Wt(t)?Ar(t)||Kc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Jc(e,t,r,a))?Bc(e,t,r,o,i,l,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Uc(e,t,r,a))};function Jc(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Us(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Us(t)&&ne(n)?!1:t in e}const Bs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return B(t)?n=>pn(t,n):t};function Qc(e){e.target.composing=!0}function ks(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const tr=Symbol("_assign"),hu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[tr]=Bs(s);const o=r||s.props&&s.props.type==="number";mt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=ur(l)),e[tr](l)}),n&&mt(e,"change",()=>{e.value=e.value.trim()}),t||(mt(e,"compositionstart",Qc),mt(e,"compositionend",ks),mt(e,"change",ks))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:s}},o){if(e[tr]=Bs(o),e.composing)return;const i=s||e.type==="number"?ur(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===l)||(e.value=l))}},Zc=["ctrl","shift","alt","meta"],ea={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Zc.some(n=>e[`${n}Key`]&&!t.includes(n))},pu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=ft(s.key);if(t.some(i=>i===o||ta[i]===o))return e(s)})},ii=ce({patchProp:Yc},Lc);let Vt,Ks=!1;function na(){return Vt||(Vt=cc(ii))}function ra(){return Vt=Ks?Vt:ac(ii),Ks=!0,Vt}const mu=(...e)=>{const t=na().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ci(r);if(!s)return;const o=t._component;!q(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,li(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},yu=(...e)=>{const t=ra().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ci(r);if(s)return n(s,!0,li(s))},t};function li(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ci(e){return ne(e)?document.querySelector(e):e}const _u=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},sa="modulepreload",oa=function(e){return"/"+e},Ws={},vu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link"),i=document.querySelector("meta[property=csp-nonce]"),l=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.all(n.map(c=>{if(c=oa(c),c in Ws)return;Ws[c]=!0;const a=c.endsWith(".css"),f=a?'[rel="stylesheet"]':"";if(!!r)for(let y=o.length-1;y>=0;y--){const v=o[y];if(v.href===c&&(!a||v.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${f}`))return;const p=document.createElement("link");if(p.rel=a?"stylesheet":sa,a||(p.as="script",p.crossOrigin=""),p.href=c,l&&p.setAttribute("nonce",l),document.head.appendChild(p),a)return new Promise((y,v)=>{p.addEventListener("load",y),p.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},ia=window.__VP_SITE_DATA__;function Xr(e){return io()?(Vi(e),!0):!1}function Ne(e){return typeof e=="function"?e():Eo(e)}const ai=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const la=Object.prototype.toString,ca=e=>la.call(e)==="[object Object]",Qe=()=>{},xr=aa();function aa(){var e,t;return ai&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ua(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const ui=e=>e();function fa(e,t={}){let n,r,s=Qe;const o=l=>{clearTimeout(l),s(),s=Qe};return l=>{const c=Ne(e),a=Ne(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function da(e=ui){const t=se(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Mn(t),pause:n,resume:r,eventFilter:s}}function ha(e){return e||Un()}function fi(...e){if(e.length!==1)return pl(...e);const t=e[0];return typeof t=="function"?Mn(fl(()=>({get:t,set:Qe}))):se(t)}function di(e,t,n={}){const{eventFilter:r=ui,...s}=n;return Ve(e,ua(r,t),s)}function pa(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=da(r);return{stop:di(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Yr(e,t=!0,n){ha()?Rt(e,n):t?e():Pn(e)}function bu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return di(e,t,{...o,eventFilter:fa(r,{maxWait:s})})}function wu(e,t,n){let r;de(n)?r={evaluating:n}:r=n||{};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Qe}=r,c=se(!s),a=i?Dr(t):se(t);let f=0;return kr(async h=>{if(!c.value)return;f++;const p=f;let y=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const v=await e(I=>{h(()=>{o&&(o.value=!1),y||I()})});p===f&&(a.value=v)}catch(v){l(v)}finally{o&&p===f&&(o.value=!1),y=!0}}),s?re(()=>(c.value=!0,a.value)):a}function yt(e){var t;const n=Ne(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Te=ai?window:void 0;function De(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Te):[t,n,r,s]=e,!t)return Qe;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,p,y)=>(f.addEventListener(h,p,y),()=>f.removeEventListener(h,p,y)),c=Ve(()=>[yt(t),Ne(s)],([f,h])=>{if(i(),!f)return;const p=ca(h)?{...h}:h;o.push(...n.flatMap(y=>r.map(v=>l(f,y,v,p))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return Xr(a),a}let qs=!1;function Eu(e,t,n={}){const{window:r=Te,ignore:s=[],capture:o=!0,detectIframe:i=!1}=n;if(!r)return Qe;xr&&!qs&&(qs=!0,Array.from(r.document.body.children).forEach(p=>p.addEventListener("click",Qe)),r.document.documentElement.addEventListener("click",Qe));let l=!0;const c=p=>s.some(y=>{if(typeof y=="string")return Array.from(r.document.querySelectorAll(y)).some(v=>v===p.target||p.composedPath().includes(v));{const v=yt(y);return v&&(p.target===v||p.composedPath().includes(v))}}),f=[De(r,"click",p=>{const y=yt(e);if(!(!y||y===p.target||p.composedPath().includes(y))){if(p.detail===0&&(l=!c(p)),!l){l=!0;return}t(p)}},{passive:!0,capture:o}),De(r,"pointerdown",p=>{const y=yt(e);l=!c(p)&&!!(y&&!p.composedPath().includes(y))},{passive:!0}),i&&De(r,"blur",p=>{setTimeout(()=>{var y;const v=yt(e);((y=r.document.activeElement)==null?void 0:y.tagName)==="IFRAME"&&!(v!=null&&v.contains(r.document.activeElement))&&t(p)},0)})].filter(Boolean);return()=>f.forEach(p=>p())}function ga(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Cu(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Te,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=ga(t);return De(s,o,f=>{f.repeat&&Ne(l)||c(f)&&n(f)},i)}function ma(){const e=se(!1),t=Un();return t&&Rt(()=>{e.value=!0},t),e}function ya(e){const t=ma();return re(()=>(t.value,!!e()))}function hi(e,t={}){const{window:n=Te}=t,r=ya(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=se(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=kr(()=>{r.value&&(l(),s=n.matchMedia(Ne(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return Xr(()=>{c(),l(),s=void 0}),o}const an=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},un="__vueuse_ssr_handlers__",_a=va();function va(){return un in an||(an[un]=an[un]||{}),an[un]}function pi(e,t){return _a[e]||t}function ba(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const wa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Gs="vueuse-storage";function Jr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=Te,eventFilter:p,onError:y=E=>{console.error(E)},initOnMounted:v}=r,I=(f?Dr:se)(typeof t=="function"?t():t);if(!n)try{n=pi("getDefaultStorage",()=>{var E;return(E=Te)==null?void 0:E.localStorage})()}catch(E){y(E)}if(!n)return I;const N=Ne(t),K=ba(N),k=(s=r.serializer)!=null?s:wa[K],{pause:g,resume:_}=pa(I,()=>L(I.value),{flush:o,deep:i,eventFilter:p});h&&l&&Yr(()=>{De(h,"storage",T),De(h,Gs,$),v&&T()}),v||T();function M(E,j){h&&h.dispatchEvent(new CustomEvent(Gs,{detail:{key:e,oldValue:E,newValue:j,storageArea:n}}))}function L(E){try{const j=n.getItem(e);if(E==null)M(j,null),n.removeItem(e);else{const A=k.write(E);j!==A&&(n.setItem(e,A),M(j,A))}}catch(j){y(j)}}function F(E){const j=E?E.newValue:n.getItem(e);if(j==null)return c&&N!=null&&n.setItem(e,k.write(N)),N;if(!E&&a){const A=k.read(j);return typeof a=="function"?a(A,N):K==="object"&&!Array.isArray(A)?{...N,...A}:A}else return typeof j!="string"?j:k.read(j)}function T(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){I.value=N;return}if(!(E&&E.key!==e)){g();try{(E==null?void 0:E.newValue)!==k.write(I.value)&&(I.value=F(E))}catch(j){y(j)}finally{E?Pn(_):_()}}}}function $(E){T(E.detail)}return I}function gi(e){return hi("(prefers-color-scheme: dark)",e)}function Ea(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Te,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},p=gi({window:s}),y=re(()=>p.value?"dark":"light"),v=c||(i==null?fi(r):Jr(i,r,o,{window:s,listenToStorageChanges:l})),I=re(()=>v.value==="auto"?y.value:v.value),N=pi("updateHTMLAttrs",(_,M,L)=>{const F=typeof _=="string"?s==null?void 0:s.document.querySelector(_):yt(_);if(!F)return;let T;if(f&&(T=s.document.createElement("style"),T.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(T)),M==="class"){const $=L.split(/\s/g);Object.values(h).flatMap(E=>(E||"").split(/\s/g)).filter(Boolean).forEach(E=>{$.includes(E)?F.classList.add(E):F.classList.remove(E)})}else F.setAttribute(M,L);f&&(s.getComputedStyle(T).opacity,document.head.removeChild(T))});function K(_){var M;N(t,n,(M=h[_])!=null?M:_)}function k(_){e.onChanged?e.onChanged(_,K):K(_)}Ve(I,k,{flush:"post",immediate:!0}),Yr(()=>k(I.value));const g=re({get(){return a?v.value:I.value},set(_){v.value=_}});try{return Object.assign(g,{store:v,system:y,state:I})}catch{return g}}function Ca(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Te}=e,s=Ea({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=re(()=>s.system?s.system.value:gi({window:r}).value?"dark":"light");return re({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function nr(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function xu(e,t,n={}){const{window:r=Te}=n;return Jr(e,t,r==null?void 0:r.localStorage,n)}function mi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const fn=new WeakMap;function Su(e,t=!1){const n=se(t);let r=null;Ve(fi(e),i=>{const l=nr(Ne(i));if(l){const c=l;fn.get(c)||fn.set(c,c.style.overflow),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const s=()=>{const i=nr(Ne(e));!i||n.value||(xr&&(r=De(i,"touchmove",l=>{xa(l)},{passive:!1})),i.style.overflow="hidden",n.value=!0)},o=()=>{var i;const l=nr(Ne(e));!l||!n.value||(xr&&(r==null||r()),l.style.overflow=(i=fn.get(l))!=null?i:"",fn.delete(l),n.value=!1)};return Xr(o),re({get(){return n.value},set(i){i?s():o()}})}function Tu(e,t,n={}){const{window:r=Te}=n;return Jr(e,t,r==null?void 0:r.sessionStorage,n)}function Au(e={}){const{window:t=Te,behavior:n="auto"}=e;if(!t)return{x:se(0),y:se(0)};const r=se(t.scrollX),s=se(t.scrollY),o=re({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=re({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return De(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Ru(e={}){const{window:t=Te,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=se(n),l=se(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Yr(c),De("resize",c,{passive:!0}),s){const a=hi("(orientation: portrait)");Ve(a,()=>c())}return{width:i,height:l}}var rr={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},sr={};const yi=/^(?:[a-z]+:|\/\/)/i,Sa="vitepress-theme-appearance",Ta=/#.*$/,Aa=/[?#].*$/,Ra=/(?:(^|\/)index)?\.(?:md|html)$/,Ce=typeof document<"u",_i={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function La(e,t,n=!1){if(t===void 0)return!1;if(e=zs(`/${e}`),n)return new RegExp(t).test(e);if(zs(t)!==e)return!1;const r=t.match(Ta);return r?(Ce?location.hash:"")===r[0]:!0}function zs(e){return decodeURI(e).replace(Aa,"").replace(Ra,"$1")}function Oa(e){return yi.test(e)}function Ia(e,t){var r,s,o,i,l,c,a;const n=Object.keys(e.locales).find(f=>f!=="root"&&!Oa(f)&&La(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:bi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function vi(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Ma(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Ma(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Pa(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function bi(e,t){return[...e.filter(n=>!Pa(t,n)),...t]}const Na=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Fa=/^[a-z]:/i;function Xs(e){const t=Fa.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Na,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const or=new Set;function $a(e){if(or.size===0){const n=typeof process=="object"&&(sr==null?void 0:sr.VITE_EXTRA_EXTENSIONS)||(rr==null?void 0:rr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>or.add(r))}const t=e.split(".").pop();return t==null||!or.has(t.toLowerCase())}function Lu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Ha=Symbol(),ut=Dr(ia);function Ou(e){const t=re(()=>Ia(ut.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?se(!0):n?Ca({storageKey:Sa,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):se(!1);return{site:t,theme:re(()=>t.value.themeConfig),page:re(()=>e.data),frontmatter:re(()=>e.data.frontmatter),params:re(()=>e.data.params),lang:re(()=>t.value.lang),dir:re(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:re(()=>t.value.localeIndex||"root"),title:re(()=>vi(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:r}}function ja(){const e=xt(Ha);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Va(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ys(e){return yi.test(e)||!e.startsWith("/")?e:Va(ut.value.base,e)}function Da(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/";t=Xs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${Xs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let yn=[];function Iu(e){yn.push(e),Vn(()=>{yn=yn.filter(t=>t!==e)})}function Ua(){let e=ut.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Js(e,n);else if(Array.isArray(e))for(const r of e){const s=Js(r,n);if(s){t=s;break}}return t}function Js(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ba=Symbol(),Sr="http://a.com",ka=()=>({path:"/",component:null,data:_i});function Mu(e,t){const n=In(ka()),r={route:n,go:s};async function s(l=Ce?location.href:"/"){var c,a;if(l=ir(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1){if(Ce){const f=new URL(location.href);l!==ir(f.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",l),new URL(l,Sr).hash!==f.hash&&window.dispatchEvent(new Event("hashchange")))}await i(l),await((a=r.onAfterRouteChanged)==null?void 0:a.call(r,l))}}let o=null;async function i(l,c=0,a=!1){var p;if(await((p=r.onBeforePageLoad)==null?void 0:p.call(r,l))===!1)return;const f=new URL(l,Sr),h=o=f.pathname;try{let y=await e(h);if(!y)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:v,__pageData:I}=y;if(!v)throw new Error(`Invalid route component: ${v}`);n.path=Ce?h:Ys(h),n.component=Mt(v),n.data=Mt(I),Ce&&Pn(()=>{let N=ut.value.base+I.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==f.pathname&&(f.pathname=N,l=N+f.search+f.hash,history.replaceState(null,"",l)),f.hash&&!c){let K=null;try{K=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(k){console.warn(k)}if(K){Qs(K,f.hash);return}}window.scrollTo(0,c)})}}catch(y){if(!/fetch|Page not found/.test(y.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(y),!a)try{const v=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await v.json(),await i(l,c,!0);return}catch{}o===h&&(o=null,n.path=Ce?h:Ys(h),n.component=t?Mt(t):null,n.data=_i)}}return Ce&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:p,pathname:y,hash:v,search:I}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),N=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&p===N.origin&&$a(y)&&(l.preventDefault(),y===N.pathname&&I===N.search?(v!==N.hash&&(history.pushState(null,"",h),window.dispatchEvent(new Event("hashchange"))),v?Qs(a,v,a.classList.contains("header-anchor")):window.scrollTo(0,0)):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;await i(ir(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Ka(){const e=xt(Ba);if(!e)throw new Error("useRouter() is called without provider.");return e}function wi(){return Ka().route}function Qs(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-Ua()+o;requestAnimationFrame(s)}}function ir(e){const t=new URL(e,Sr);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ut.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const lr=()=>yn.forEach(e=>e()),Pu=Kr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=wi(),{site:n}=ja();return()=>Cr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Cr(t.component,{onVnodeMounted:lr,onVnodeUpdated:lr,onVnodeUnmounted:lr}):"404 Page Not Found"])}}),Nu=Kr({setup(e,{slots:t}){const n=se(!1);return Rt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Fu(){Ce&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function $u(){if(Ce){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let a=c.textContent||"";i&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),Wa(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Wa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Hu(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=cr(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(cr);r.forEach((l,c)=>{const a=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));a!==-1?delete i[a]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};kr(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=vi(i,o);a!==document.title&&(document.title=a);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):cr(["meta",{name:"description",content:f}]),s(bi(i.head,Ga(c)))})}function cr([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function qa(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Ga(e){return e.filter(t=>!qa(t))}const ar=new Set,Ei=()=>document.createElement("link"),za=e=>{const t=Ei();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Xa=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let dn;const Ya=Ce&&(dn=Ei())&&dn.relList&&dn.relList.supports&&dn.relList.supports("prefetch")?za:Xa;function ju(){if(!Ce||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!ar.has(c)){ar.add(c);const a=Da(c);a&&Ya(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):ar.add(l))})})};Rt(r);const s=wi();Ve(()=>s.path,r),Vn(()=>{n&&n.disconnect()})}export{Zl as $,Vn as A,nu as B,Vl as C,Ua as D,eu as E,me as F,ou as G,Dr as H,Iu as I,oe as J,tu as K,yi as L,wi as M,yc as N,xt as O,Ru as P,Or as Q,Eu as R,Cu as S,si as T,Pn as U,Au as V,Mn as W,su as X,vu as Y,Su as Z,_u as _,ei as a,gu as a0,lu as a1,pu as a2,cu as a3,fu as a4,Hu as a5,Ba as a6,Ou as a7,Ha as a8,Pu as a9,Nu as aa,ut as ab,yu as ac,Mu as ad,Da as ae,ju as af,$u as ag,Fu as ah,Cr as ai,yt as aj,Xr as ak,wu as al,Tu as am,xu as an,bu as ao,Ka as ap,De as aq,$o as ar,ru as as,hu as at,de as au,au as av,Mt as aw,mu as ax,Lu as ay,Jo as b,uu as c,Kr as d,du as e,$a as f,Ys as g,se as h,Oa as i,Ce as j,re as k,Rt as l,Zo as m,Ir as n,Xo as o,Eo as p,Qa as q,iu as r,Za as s,Ja as t,ja as u,La as v,El as w,hi as x,Ve as y,kr as z}; diff --git a/assets/chunks/theme.D9XVjfBS.js b/assets/chunks/theme.D9XVjfBS.js new file mode 100644 index 00000000..0ffffef5 --- /dev/null +++ b/assets/chunks/theme.D9XVjfBS.js @@ -0,0 +1,7 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/chunks/VPLocalSearchBox.zgD-hVAD.js","assets/chunks/framework.4aTu-Nia.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +import{d as _,o as a,c,r as l,n as N,a as F,t as w,b,w as d,T as ve,e as f,_ as k,u as Ue,i as Ge,f as je,g as pe,h as T,j as J,k as g,l as z,m as v,p as i,q as B,s as H,v as j,x as ie,y as q,z as x,A as he,B as Pe,C as ze,D as qe,E as K,F as M,G as E,H as Ve,I as ee,J as m,K as R,L as Le,M as te,N as Q,O as oe,P as Ke,Q as Se,R as We,S as le,U as Re,V as we,W as Je,X as Ye,Y as Qe,Z as Ie,$ as Te,a0 as Xe,a1 as Ze,a2 as xe,a3 as et}from"./framework.4aTu-Nia.js";const tt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:N(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[F(w(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},st=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),b(ve,{name:"fade"},{default:d(()=>[e.show?(a(),c("div",ot)):f("",!0)]),_:1}))}}),nt=k(st,[["__scopeId","data-v-c79a1216"]]),V=Ue;function at(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ce(o){return/^\//.test(o)?o:`/${o}`}function fe(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Ge(o)||o.startsWith("#")||!n.startsWith("http")||!je(e))return o;const{site:r}=V(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${s}`);return pe(u)}const _e=T(J?location.hash:"");J&&window.addEventListener("hashchange",()=>{_e.value=location.hash});function Y({removeCurrent:o=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:s,page:n,theme:r}=V(),u=g(()=>{var p,$;return{label:(p=t.value.locales[s.value])==null?void 0:p.label,link:(($=t.value.locales[s.value])==null?void 0:$.link)||(s.value==="root"?"/":`/${s.value}/`)}});return{localeLinks:g(()=>Object.entries(t.value.locales).flatMap(([p,$])=>o&&u.value.label===$.label?[]:{text:$.label,link:rt($.link||(p==="root"?"/":`/${p}/`),r.value.i18nRouting!==!1&&e,n.value.relativePath.slice(u.value.link.length-1),!t.value.cleanUrls)+_e.value})),currentLang:u}}function rt(o,e,t,s){return e?o.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const it=o=>(B("data-v-f87ff6e4"),o=o(),H(),o),lt={class:"NotFound"},ct={class:"code"},ut={class:"title"},dt=it(()=>v("div",{class:"divider"},null,-1)),vt={class:"quote"},pt={class:"action"},ht=["href","aria-label"],ft=_({__name:"NotFound",setup(o){const{site:e,theme:t}=V(),{localeLinks:s}=Y({removeCurrent:!1}),n=T("/");return z(()=>{var u;const r=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");s.value.length&&(n.value=((u=s.value.find(({link:h})=>h.startsWith(r)))==null?void 0:u.link)||s.value[0].link)}),(r,u)=>{var h,p,$,P,y;return a(),c("div",lt,[v("p",ct,w(((h=i(t).notFound)==null?void 0:h.code)??"404"),1),v("h1",ut,w(((p=i(t).notFound)==null?void 0:p.title)??"PAGE NOT FOUND"),1),dt,v("blockquote",vt,w((($=i(t).notFound)==null?void 0:$.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",pt,[v("a",{class:"link",href:i(pe)(n.value),"aria-label":((P=i(t).notFound)==null?void 0:P.linkLabel)??"go to home"},w(((y=i(t).notFound)==null?void 0:y.linkText)??"Take me home"),9,ht)])])}}}),_t=k(ft,[["__scopeId","data-v-f87ff6e4"]]);function Ne(o,e){if(Array.isArray(o))return X(o);if(o==null)return[];e=ce(e);const t=Object.keys(o).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(ce(n))),s=t?o[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function mt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function kt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ue(o,e){return Array.isArray(e)?e.some(t=>ue(o,t)):j(o,e.link)?!0:e.items?ue(o,e.items):!1}function X(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function O(){const{frontmatter:o,page:e,theme:t}=V(),s=ie("(min-width: 960px)"),n=T(!1),r=g(()=>{const C=t.value.sidebar,S=e.value.relativePath;return C?Ne(C,S):[]}),u=T(r.value);q(r,(C,S)=>{JSON.stringify(C)!==JSON.stringify(S)&&(u.value=r.value)});const h=g(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),p=g(()=>$?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),$=g(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),P=g(()=>h.value&&s.value),y=g(()=>h.value?mt(u.value):[]);function L(){n.value=!0}function I(){n.value=!1}function A(){n.value?I():L()}return{isOpen:n,sidebar:u,sidebarGroups:y,hasSidebar:h,hasAside:$,leftAside:p,isSidebarEnabled:P,open:L,close:I,toggle:A}}function $t(o,e){let t;x(()=>{t=o.value?document.activeElement:void 0}),z(()=>{window.addEventListener("keyup",s)}),he(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function bt(o){const{page:e}=V(),t=T(!1),s=g(()=>o.value.collapsed!=null),n=g(()=>!!o.value.link),r=T(!1),u=()=>{r.value=j(e.value.relativePath,o.value.link)};q([e,o,_e],u),z(u);const h=g(()=>r.value?!0:o.value.items?ue(e.value.relativePath,o.value.items):!1),p=g(()=>!!(o.value.items&&o.value.items.length));x(()=>{t.value=!!(s.value&&o.value.collapsed)}),Pe(()=>{(r.value||h.value)&&(t.value=!1)});function $(){s.value&&(t.value=!t.value)}return{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:h,hasChildren:p,toggle:$}}function gt(){const{hasSidebar:o}=O(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:g(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const de=[];function Me(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function me(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,o)}function yt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=s&&u.level<=n),de.length=0;for(const{element:u,link:h}of o)de.push({element:u,link:h});const r=[];e:for(let u=0;u=0;p--){const $=o[p];if($.level{requestAnimationFrame(r),window.addEventListener("scroll",s)}),ze(()=>{u(location.hash)}),he(()=>{window.removeEventListener("scroll",s)});function r(){if(!t.value)return;const h=window.scrollY,p=window.innerHeight,$=document.body.offsetHeight,P=Math.abs(h+p-$)<1,y=de.map(({element:I,link:A})=>({link:A,top:Lt(I)})).filter(({top:I})=>!Number.isNaN(I)).sort((I,A)=>I.top-A.top);if(!y.length){u(null);return}if(h<1){u(null);return}if(P){u(y[y.length-1].link);return}let L=null;for(const{link:I,top:A}of y){if(A>h+qe()+4)break;L=I}u(L)}function u(h){n&&n.classList.remove("active"),h==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const p=n;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const St=["href","title"],wt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const s=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(s));n==null||n.focus({preventScroll:!0})}return(t,s)=>{const n=K("VPDocOutlineItem",!0);return a(),c("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:r,link:u,title:h})=>(a(),c("li",null,[v("a",{class:"outline-link",href:u,onClick:e,title:h},w(h),9,St),r!=null&&r.length?(a(),b(n,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Ae=k(wt,[["__scopeId","data-v-b933a997"]]),It=o=>(B("data-v-935f8a84"),o=o(),H(),o),Tt={class:"content"},Nt={class:"outline-title",role:"heading","aria-level":"2"},Mt={"aria-labelledby":"doc-outline-aria-label"},At=It(()=>v("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Ct=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),s=Ve([]);ee(()=>{s.value=me(e.value.outline??t.value.outline)});const n=T(),r=T();return Vt(n,r),(u,h)=>(a(),c("div",{class:N(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n,role:"navigation"},[v("div",Tt,[v("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),v("div",Nt,w(i(Me)(i(t))),1),v("nav",Mt,[At,m(Ae,{headers:s.value,root:!0},null,8,["headers"])])])],2))}}),Bt=k(Ct,[["__scopeId","data-v-935f8a84"]]),Ht={class:"VPDocAsideCarbonAds"},Et=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),c("div",Ht,[m(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ft=o=>(B("data-v-3f215769"),o=o(),H(),o),Dt={class:"VPDocAside"},Ot=Ft(()=>v("div",{class:"spacer"},null,-1)),Ut=_({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,s)=>(a(),c("div",Dt,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(Bt),l(t.$slots,"aside-outline-after",{},void 0,!0),Ot,l(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),b(Et,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Gt=k(Ut,[["__scopeId","data-v-3f215769"]]);function jt(){const{theme:o,page:e}=V();return g(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function zt(){const{page:o,theme:e,frontmatter:t}=V();return g(()=>{var $,P,y,L,I,A,C,S;const s=Ne(e.value.sidebar,o.value.relativePath),n=kt(s),r=qt(n,U=>U.link.replace(/[?#].*$/,"")),u=r.findIndex(U=>j(o.value.relativePath,U.link)),h=(($=e.value.docFooter)==null?void 0:$.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((P=e.value.docFooter)==null?void 0:P.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((y=r[u-1])==null?void 0:y.docFooterText)??((L=r[u-1])==null?void 0:L.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((I=r[u-1])==null?void 0:I.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=r[u+1])==null?void 0:A.docFooterText)??((C=r[u+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=r[u+1])==null?void 0:S.link)}}})}function qt(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=g(()=>e.tag??(e.href?"a":"span")),s=g(()=>e.href&&Le.test(e.href));return(n,r)=>(a(),b(R(t.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?i(fe)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:d(()=>[l(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Kt={class:"VPLastUpdated"},Wt=["datetime"],Rt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:s,lang:n}=V(),r=g(()=>new Date(s.value.lastUpdated??t.value.lastUpdated)),u=g(()=>r.value.toISOString()),h=T("");return z(()=>{x(()=>{var p,$,P;h.value=new Intl.DateTimeFormat(($=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&$.forceLocale?n.value:void 0,((P=e.value.lastUpdated)==null?void 0:P.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(p,$)=>{var P;return a(),c("p",Kt,[F(w(((P=i(e).lastUpdated)==null?void 0:P.text)||i(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:u.value},w(h.value),9,Wt)])}}}),Jt=k(Rt,[["__scopeId","data-v-7e05ebdb"]]),Yt=o=>(B("data-v-09de1c0f"),o=o(),H(),o),Qt={key:0,class:"VPDocFooter"},Xt={key:0,class:"edit-info"},Zt={key:0,class:"edit-link"},xt=Yt(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),eo={key:1,class:"last-updated"},to={key:1,class:"prev-next"},oo={class:"pager"},so=["innerHTML"],no=["innerHTML"],ao={class:"pager"},ro=["innerHTML"],io=["innerHTML"],lo=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=V(),n=jt(),r=zt(),u=g(()=>e.value.editLink&&s.value.editLink!==!1),h=g(()=>t.value.lastUpdated&&s.value.lastUpdated!==!1),p=g(()=>u.value||h.value||r.value.prev||r.value.next);return($,P)=>{var y,L,I,A;return p.value?(a(),c("footer",Qt,[l($.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Xt,[u.value?(a(),c("div",Zt,[m(D,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:d(()=>[xt,F(" "+w(i(n).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",eo,[m(Jt)])):f("",!0)])):f("",!0),(y=i(r).prev)!=null&&y.link||(L=i(r).next)!=null&&L.link?(a(),c("nav",to,[v("div",oo,[(I=i(r).prev)!=null&&I.link?(a(),b(D,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,so),v("span",{class:"title",innerHTML:i(r).prev.text},null,8,no)]}),_:1},8,["href"])):f("",!0)]),v("div",ao,[(A=i(r).next)!=null&&A.link?(a(),b(D,{key:0,class:"pager-link next",href:i(r).next.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,ro),v("span",{class:"title",innerHTML:i(r).next.text},null,8,io)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),co=k(lo,[["__scopeId","data-v-09de1c0f"]]),uo=o=>(B("data-v-39a288b8"),o=o(),H(),o),vo={class:"container"},po=uo(()=>v("div",{class:"aside-curtain"},null,-1)),ho={class:"aside-container"},fo={class:"aside-content"},_o={class:"content"},mo={class:"content-container"},ko={class:"main"},$o=_({__name:"VPDoc",setup(o){const{theme:e}=V(),t=te(),{hasSidebar:s,hasAside:n,leftAside:r}=O(),u=g(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,p)=>{const $=K("Content");return a(),c("div",{class:N(["VPDoc",{"has-sidebar":i(s),"has-aside":i(n)}])},[l(h.$slots,"doc-top",{},void 0,!0),v("div",vo,[i(n)?(a(),c("div",{key:0,class:N(["aside",{"left-aside":i(r)}])},[po,v("div",ho,[v("div",fo,[m(Gt,null,{"aside-top":d(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),v("div",_o,[v("div",mo,[l(h.$slots,"doc-before",{},void 0,!0),v("main",ko,[m($,{class:N(["vp-doc",[u.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(co,null,{"doc-footer-before":d(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),bo=k($o,[["__scopeId","data-v-39a288b8"]]),go=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=g(()=>e.href&&Le.test(e.href)),s=g(()=>e.tag||e.href?"a":"button");return(n,r)=>(a(),b(R(s.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?i(fe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:d(()=>[F(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),yo=k(go,[["__scopeId","data-v-cad61b99"]]),Po=["src","alt"],Vo=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=K("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",Q({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Po)):(a(),c(M,{key:1},[m(s,Q({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(s,Q({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),Z=k(Vo,[["__scopeId","data-v-8426fc1a"]]),Lo=o=>(B("data-v-303bb580"),o=o(),H(),o),So={class:"container"},wo={class:"main"},Io={key:0,class:"name"},To=["innerHTML"],No=["innerHTML"],Mo=["innerHTML"],Ao={key:0,class:"actions"},Co={key:0,class:"image"},Bo={class:"image-container"},Ho=Lo(()=>v("div",{class:"image-bg"},null,-1)),Eo=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=oe("hero-image-slot-exists");return(t,s)=>(a(),c("div",{class:N(["VPHero",{"has-image":t.image||i(e)}])},[v("div",So,[v("div",wo,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",Io,[v("span",{innerHTML:t.name,class:"clip"},null,8,To)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,No)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Mo)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",Ao,[(a(!0),c(M,null,E(t.actions,n=>(a(),c("div",{key:n.link,class:"action"},[m(yo,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),c("div",Co,[v("div",Bo,[Ho,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),b(Z,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Fo=k(Eo,[["__scopeId","data-v-303bb580"]]),Do=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,s)=>i(e).hero?(a(),b(Fo,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Oo=o=>(B("data-v-a3976bdc"),o=o(),H(),o),Uo={class:"box"},Go={key:0,class:"icon"},jo=["innerHTML"],zo=["innerHTML"],qo=["innerHTML"],Ko={key:4,class:"link-text"},Wo={class:"link-text-value"},Ro=Oo(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Jo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),b(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:d(()=>[v("article",Uo,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Go,[m(Z,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),b(Z,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,jo)):f("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,zo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,qo)):f("",!0),e.linkText?(a(),c("div",Ko,[v("p",Wo,[F(w(e.linkText)+" ",1),Ro])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Yo=k(Jo,[["__scopeId","data-v-a3976bdc"]]),Qo={key:0,class:"VPFeatures"},Xo={class:"container"},Zo={class:"items"},xo=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=g(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),c("div",Qo,[v("div",Xo,[v("div",Zo,[(a(!0),c(M,null,E(s.features,r=>(a(),c("div",{key:r.title,class:N(["item",[t.value]])},[m(Yo,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),es=k(xo,[["__scopeId","data-v-a6181336"]]),ts=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,s)=>i(e).features?(a(),b(es,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):f("",!0)}}),os=_({__name:"VPHomeContent",setup(o){const{width:e}=Ke({includeScrollbar:!1});return(t,s)=>(a(),c("div",{class:"vp-doc container",style:Se(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),ss=k(os,[["__scopeId","data-v-82d4af08"]]),ns={class:"VPHome"},as=_({__name:"VPHome",setup(o){const{frontmatter:e}=V();return(t,s)=>{const n=K("Content");return a(),c("div",ns,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Do,null,{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(ts),l(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),b(ss,{key:0},{default:d(()=>[m(n)]),_:1})):(a(),b(n,{key:1}))])}}}),rs=k(as,[["__scopeId","data-v-686f80a6"]]),is={},ls={class:"VPPage"};function cs(o,e){const t=K("Content");return a(),c("div",ls,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const us=k(is,[["render",cs]]),ds=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=O();return(n,r)=>(a(),c("div",{class:N(["VPContent",{"has-sidebar":i(s),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?l(n.$slots,"not-found",{key:0},()=>[m(_t)],!0):i(t).layout==="page"?(a(),b(us,{key:1},{"page-top":d(()=>[l(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),b(rs,{key:2},{"home-hero-before":d(()=>[l(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),b(R(i(t).layout),{key:3})):(a(),b(bo,{key:4},{"doc-top":d(()=>[l(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":d(()=>[l(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":d(()=>[l(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":d(()=>[l(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":d(()=>[l(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),vs=k(ds,[["__scopeId","data-v-1428d186"]]),ps={class:"container"},hs=["innerHTML"],fs=["innerHTML"],_s=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=O();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),c("footer",{key:0,class:N(["VPFooter",{"has-sidebar":i(s)}])},[v("div",ps,[i(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,hs)):f("",!0),i(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,fs)):f("",!0)])],2)):f("",!0)}}),ms=k(_s,[["__scopeId","data-v-e315a0ad"]]);function ks(){const{theme:o,frontmatter:e}=V(),t=Ve([]),s=g(()=>t.value.length>0);return ee(()=>{t.value=me(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const $s=o=>(B("data-v-d2ecc192"),o=o(),H(),o),bs=$s(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),gs={class:"header"},ys={class:"outline"},Ps=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),s=T(!1),n=T(0),r=T(),u=T();We(r,()=>{s.value=!1}),le("Escape",()=>{s.value=!1}),ee(()=>{s.value=!1});function h(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(P){P.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),Re(()=>{s.value=!1}))}function $(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(P,y)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Se({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[P.headers.length>0?(a(),c("button",{key:0,onClick:h,class:N({open:s.value})},[F(w(i(Me)(i(t)))+" ",1),bs],2)):(a(),c("button",{key:1,onClick:$},w(i(t).returnToTopLabel||"Return to top"),1)),m(ve,{name:"flyout"},{default:d(()=>[s.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:p},[v("div",gs,[v("a",{class:"top-link",href:"#",onClick:$},w(i(t).returnToTopLabel||"Return to top"),1)]),v("div",ys,[m(Ae,{headers:P.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Vs=k(Ps,[["__scopeId","data-v-d2ecc192"]]),Ls=o=>(B("data-v-a6f0e41e"),o=o(),H(),o),Ss={class:"container"},ws=["aria-expanded"],Is=Ls(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),Ts={class:"menu-text"},Ns=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=O(),{headers:n}=ks(),{y:r}=we(),u=T(0);z(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ee(()=>{n.value=me(t.value.outline??e.value.outline)});const h=g(()=>n.value.length===0),p=g(()=>h.value&&!s.value),$=g(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:h.value,fixed:p.value}));return(P,y)=>i(t).layout!=="home"&&(!p.value||i(r)>=u.value)?(a(),c("div",{key:0,class:N($.value)},[v("div",Ss,[i(s)?(a(),c("button",{key:0,class:"menu","aria-expanded":P.open,"aria-controls":"VPSidebarNav",onClick:y[0]||(y[0]=L=>P.$emit("open-menu"))},[Is,v("span",Ts,w(i(e).sidebarMenuLabel||"Menu"),1)],8,ws)):f("",!0),m(Vs,{headers:i(n),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Ms=k(Ns,[["__scopeId","data-v-a6f0e41e"]]);function As(){const o=T(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=te();return q(()=>r.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const Cs={},Bs={class:"VPSwitch",type:"button",role:"switch"},Hs={class:"check"},Es={key:0,class:"icon"};function Fs(o,e){return a(),c("button",Bs,[v("span",Hs,[o.$slots.default?(a(),c("span",Es,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Ds=k(Cs,[["render",Fs],["__scopeId","data-v-1d5665e3"]]),Ce=o=>(B("data-v-d1f28634"),o=o(),H(),o),Os=Ce(()=>v("span",{class:"vpi-sun sun"},null,-1)),Us=Ce(()=>v("span",{class:"vpi-moon moon"},null,-1)),Gs=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),s=oe("toggle-appearance",()=>{e.value=!e.value}),n=g(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(r,u)=>(a(),b(Ds,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(s)},{default:d(()=>[Os,Us]),_:1},8,["title","aria-checked","onClick"]))}}),ke=k(Gs,[["__scopeId","data-v-d1f28634"]]),js={key:0,class:"VPNavBarAppearance"},zs=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,s)=>i(e).appearance&&i(e).appearance!=="force-dark"?(a(),c("div",js,[m(ke)])):f("",!0)}}),qs=k(zs,[["__scopeId","data-v-e6aabb21"]]),$e=T();let Be=!1,re=0;function Ks(o){const e=T(!1);if(J){!Be&&Ws(),re++;const t=q($e,s=>{var n,r,u;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(r=o.onFocus)==null||r.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});he(()=>{t(),re--,re||Rs()})}return Je(e)}function Ws(){document.addEventListener("focusin",He),Be=!0,$e.value=document.activeElement}function Rs(){document.removeEventListener("focusin",He)}function He(){$e.value=document.activeElement}const Js={class:"VPMenuLink"},Ys=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),c("div",Js,[m(D,{class:N({active:i(j)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:d(()=>[F(w(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=k(Ys,[["__scopeId","data-v-43f1e123"]]),Qs={class:"VPMenuGroup"},Xs={key:0,class:"title"},Zs=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Qs,[e.text?(a(),c("p",Xs,w(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),c(M,null,["link"in s?(a(),b(se,{key:0,item:s},null,8,["item"])):f("",!0)],64))),256))]))}}),xs=k(Zs,[["__scopeId","data-v-69e747b5"]]),en={class:"VPMenu"},tn={key:0,class:"items"},on=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",en,[e.items?(a(),c("div",tn,[(a(!0),c(M,null,E(e.items,s=>(a(),c(M,{key:s.text},["link"in s?(a(),b(se,{key:0,item:s},null,8,["item"])):(a(),b(xs,{key:1,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),sn=k(on,[["__scopeId","data-v-e7ea1737"]]),nn=o=>(B("data-v-b6c34ac9"),o=o(),H(),o),an=["aria-expanded","aria-label"],rn={key:0,class:"text"},ln=["innerHTML"],cn=nn(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),un={key:1,class:"vpi-more-horizontal icon"},dn={class:"menu"},vn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=T(!1),t=T();Ks({el:t,onBlur:s});function s(){e.value=!1}return(n,r)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=u=>e.value=!0),onMouseleave:r[2]||(r[2]=u=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=u=>e.value=!e.value)},[n.button||n.icon?(a(),c("span",rn,[n.icon?(a(),c("span",{key:0,class:N([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),c("span",{key:1,innerHTML:n.button},null,8,ln)):f("",!0),cn])):(a(),c("span",un))],8,an),v("div",dn,[m(sn,{items:n.items},{default:d(()=>[l(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),be=k(vn,[["__scopeId","data-v-b6c34ac9"]]),pn=["href","aria-label","innerHTML"],hn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=g(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),c("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,pn))}}),fn=k(hn,[["__scopeId","data-v-eee4e7cb"]]),_n={class:"VPSocialLinks"},mn=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",_n,[(a(!0),c(M,null,E(e.links,({link:s,icon:n,ariaLabel:r})=>(a(),b(fn,{key:s,icon:n,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ge=k(mn,[["__scopeId","data-v-7bc22406"]]),kn={key:0,class:"group translations"},$n={class:"trans-title"},bn={key:1,class:"group"},gn={class:"item appearance"},yn={class:"label"},Pn={class:"appearance-action"},Vn={key:2,class:"group"},Ln={class:"item social-links"},Sn=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),r=g(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>r.value?(a(),b(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:d(()=>[i(s).length&&i(n).label?(a(),c("div",kn,[v("p",$n,w(i(n).label),1),(a(!0),c(M,null,E(i(s),p=>(a(),b(se,{key:p.link,item:p},null,8,["item"]))),128))])):f("",!0),i(e).appearance&&i(e).appearance!=="force-dark"?(a(),c("div",bn,[v("div",gn,[v("p",yn,w(i(t).darkModeSwitchLabel||"Appearance"),1),v("div",Pn,[m(ke)])])])):f("",!0),i(t).socialLinks?(a(),c("div",Vn,[v("div",Ln,[m(ge,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),wn=k(Sn,[["__scopeId","data-v-d0bd9dde"]]),In=o=>(B("data-v-e5dd9c1c"),o=o(),H(),o),Tn=["aria-expanded"],Nn=In(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),Mn=[Nn],An=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},Mn,10,Tn))}}),Cn=k(An,[["__scopeId","data-v-e5dd9c1c"]]),Bn=["innerHTML"],Hn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),b(D,{class:N({VPNavBarMenuLink:!0,active:i(j)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:d(()=>[v("span",{innerHTML:t.item.text},null,8,Bn)]),_:1},8,["class","href","noIcon","target","rel"]))}}),En=k(Hn,[["__scopeId","data-v-9c663999"]]),Fn=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),s=r=>"link"in r?j(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(s),n=g(()=>s(e.item));return(r,u)=>(a(),b(be,{class:N({VPNavBarMenuGroup:!0,active:i(j)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),Dn=o=>(B("data-v-7f418b0f"),o=o(),H(),o),On={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Un=Dn(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Gn=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,s)=>i(e).nav?(a(),c("nav",On,[Un,(a(!0),c(M,null,E(i(e).nav,n=>(a(),c(M,{key:n.text},["link"in n?(a(),b(En,{key:0,item:n},null,8,["item"])):(a(),b(Fn,{key:1,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),jn=k(Gn,[["__scopeId","data-v-7f418b0f"]]);function zn(o){const{localeIndex:e,theme:t}=V();function s(n){var A,C,S;const r=n.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",p=h&&((S=(C=u.locales)==null?void 0:C[e.value])==null?void 0:S.translations)||null,$=h&&u.translations||null;let P=p,y=$,L=o;const I=r.pop();for(const U of r){let G=null;const W=L==null?void 0:L[U];W&&(G=L=W);const ne=y==null?void 0:y[U];ne&&(G=y=ne);const ae=P==null?void 0:P[U];ae&&(G=P=ae),W||(L=G),ne||(y=G),ae||(P=G)}return(P==null?void 0:P[I])??(y==null?void 0:y[I])??(L==null?void 0:L[I])??""}return s}const qn=["aria-label"],Kn={class:"DocSearch-Button-Container"},Wn=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Rn={class:"DocSearch-Button-Placeholder"},Jn=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ye=_({__name:"VPNavBarSearchButton",setup(o){const t=zn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[v("span",Kn,[Wn,v("span",Rn,w(i(t)("button.buttonText")),1)]),Jn],8,qn))}}),Yn={class:"VPNavBarSearch"},Qn={id:"local-search"},Xn={key:1,id:"docsearch"},Zn=_({__name:"VPNavBarSearch",setup(o){const e=Ye(()=>Qe(()=>import("./VPLocalSearchBox.zgD-hVAD.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),n=T(!1),r=T(!1);z(()=>{});function u(){n.value||(n.value=!0,setTimeout(h,16))}function h(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function p(y){const L=y.target,I=L.tagName;return L.isContentEditable||I==="INPUT"||I==="SELECT"||I==="TEXTAREA"}const $=T(!1);le("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),$.value=!0)}),le("/",y=>{p(y)||(y.preventDefault(),$.value=!0)});const P="local";return(y,L)=>{var I;return a(),c("div",Yn,[i(P)==="local"?(a(),c(M,{key:0},[$.value?(a(),b(i(e),{key:0,onClose:L[0]||(L[0]=A=>$.value=!1)})):f("",!0),v("div",Qn,[m(ye,{onClick:L[1]||(L[1]=A=>$.value=!0)})])],64)):i(P)==="algolia"?(a(),c(M,{key:1},[n.value?(a(),b(i(t),{key:0,algolia:((I=i(s).search)==null?void 0:I.options)??i(s).algolia,onVnodeBeforeMount:L[2]||(L[2]=A=>r.value=!0)},null,8,["algolia"])):f("",!0),r.value?f("",!0):(a(),c("div",Xn,[m(ye,{onClick:u})]))],64)):f("",!0)])}}}),xn=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(a(),b(ge,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),ea=k(xn,[["__scopeId","data-v-0394ad82"]]),ta=["href","rel","target"],oa={key:1},sa={key:2},na=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:s}=O(),{currentLang:n}=Y(),r=g(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),u=g(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),h=g(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,$)=>(a(),c("div",{class:N(["VPNavBarTitle",{"has-sidebar":i(s)}])},[v("a",{class:"title",href:r.value??i(fe)(i(n).link),rel:u.value,target:h.value},[l(p.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),b(Z,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):f("",!0),i(t).siteTitle?(a(),c("span",oa,w(i(t).siteTitle),1)):i(t).siteTitle===void 0?(a(),c("span",sa,w(i(e).title),1)):f("",!0),l(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,ta)],2))}}),aa=k(na,[["__scopeId","data-v-ab179fa1"]]),ra={class:"items"},ia={class:"title"},la=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,r)=>i(t).length&&i(s).label?(a(),b(be,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:d(()=>[v("div",ra,[v("p",ia,w(i(s).label),1),(a(!0),c(M,null,E(i(t),u=>(a(),b(se,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ca=k(la,[["__scopeId","data-v-88af2de4"]]),ua=o=>(B("data-v-ccf7ddec"),o=o(),H(),o),da={class:"wrapper"},va={class:"container"},pa={class:"title"},ha={class:"content"},fa={class:"content-body"},_a=ua(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),ma=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=we(),{hasSidebar:t}=O(),{frontmatter:s}=V(),n=T({});return Pe(()=>{n.value={"has-sidebar":t.value,home:s.value.layout==="home",top:e.value===0}}),(r,u)=>(a(),c("div",{class:N(["VPNavBar",n.value])},[v("div",da,[v("div",va,[v("div",pa,[m(aa,null,{"nav-bar-title-before":d(()=>[l(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",ha,[v("div",fa,[l(r.$slots,"nav-bar-content-before",{},void 0,!0),m(Zn,{class:"search"}),m(jn,{class:"menu"}),m(ca,{class:"translations"}),m(qs,{class:"appearance"}),m(ea,{class:"social-links"}),m(wn,{class:"extra"}),l(r.$slots,"nav-bar-content-after",{},void 0,!0),m(Cn,{class:"hamburger",active:r.isScreenOpen,onClick:u[0]||(u[0]=h=>r.$emit("toggle-screen"))},null,8,["active"])])])])]),_a],2))}}),ka=k(ma,[["__scopeId","data-v-ccf7ddec"]]),$a={key:0,class:"VPNavScreenAppearance"},ba={class:"text"},ga=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(s,n)=>i(e).appearance&&i(e).appearance!=="force-dark"?(a(),c("div",$a,[v("p",ba,w(i(t).darkModeSwitchLabel||"Appearance"),1),m(ke)])):f("",!0)}}),ya=k(ga,[["__scopeId","data-v-2d7af913"]]),Pa=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=oe("close-screen");return(t,s)=>(a(),b(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:d(()=>[F(w(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Va=k(Pa,[["__scopeId","data-v-05f27b2a"]]),La=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=oe("close-screen");return(t,s)=>(a(),b(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:d(()=>[F(w(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ee=k(La,[["__scopeId","data-v-19976ae1"]]),Sa={class:"VPNavScreenMenuGroupSection"},wa={key:0,class:"title"},Ia=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Sa,[e.text?(a(),c("p",wa,w(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),b(Ee,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ta=k(Ia,[["__scopeId","data-v-8133b170"]]),Na=o=>(B("data-v-ff6087d4"),o=o(),H(),o),Ma=["aria-controls","aria-expanded"],Aa=["innerHTML"],Ca=Na(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),Ba=["id"],Ha={key:1,class:"group"},Ea=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=T(!1),s=g(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,u)=>(a(),c("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[v("span",{class:"button-text",innerHTML:r.text},null,8,Aa),Ca],8,Ma),v("div",{id:s.value,class:"items"},[(a(!0),c(M,null,E(r.items,h=>(a(),c(M,{key:h.text},["link"in h?(a(),c("div",{key:h.text,class:"item"},[m(Ee,{item:h},null,8,["item"])])):(a(),c("div",Ha,[m(Ta,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ba)],2))}}),Fa=k(Ea,[["__scopeId","data-v-ff6087d4"]]),Da={key:0,class:"VPNavScreenMenu"},Oa=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,s)=>i(e).nav?(a(),c("nav",Da,[(a(!0),c(M,null,E(i(e).nav,n=>(a(),c(M,{key:n.text},["link"in n?(a(),b(Va,{key:0,item:n},null,8,["item"])):(a(),b(Fa,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ua=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(a(),b(ge,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),Fe=o=>(B("data-v-858fe1a4"),o=o(),H(),o),Ga=Fe(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),ja=Fe(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),za={class:"list"},qa=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(r,u)=>i(e).length&&i(t).label?(a(),c("div",{key:0,class:N(["VPNavScreenTranslations",{open:s.value}])},[v("button",{class:"title",onClick:n},[Ga,F(" "+w(i(t).label)+" ",1),ja]),v("ul",za,[(a(!0),c(M,null,E(i(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(D,{class:"link",href:h.link},{default:d(()=>[F(w(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Ka=k(qa,[["__scopeId","data-v-858fe1a4"]]),Wa={class:"container"},Ra=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=T(null),t=Ie(J?document.body:null);return(s,n)=>(a(),b(ve,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:d(()=>[s.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",Wa,[l(s.$slots,"nav-screen-content-before",{},void 0,!0),m(Oa,{class:"menu"}),m(Ka,{class:"translations"}),m(ya,{class:"appearance"}),m(Ua,{class:"social-links"}),l(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Ja=k(Ra,[["__scopeId","data-v-cc5739dd"]]),Ya={key:0,class:"VPNav"},Qa=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=As(),{frontmatter:n}=V(),r=g(()=>n.value.navbar!==!1);return Te("close-screen",t),x(()=>{J&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(u,h)=>r.value?(a(),c("header",Ya,[m(ka,{"is-screen-open":i(e),onToggleScreen:i(s)},{"nav-bar-title-before":d(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Ja,{open:i(e)},{"nav-screen-content-before":d(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Xa=k(Qa,[["__scopeId","data-v-ae24b3ad"]]),De=o=>(B("data-v-b8d55f3b"),o=o(),H(),o),Za=["role","tabindex"],xa=De(()=>v("div",{class:"indicator"},null,-1)),er=De(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),tr=[er],or={key:1,class:"items"},sr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:u,hasChildren:h,toggle:p}=bt(g(()=>e.item)),$=g(()=>h.value?"section":"div"),P=g(()=>n.value?"a":"div"),y=g(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),L=g(()=>n.value?void 0:"button"),I=g(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(S,U)=>{const G=K("VPSidebarItem",!0);return a(),b(R($.value),{class:N(["VPSidebarItem",I.value])},{default:d(()=>[S.item.text?(a(),c("div",Q({key:0,class:"item",role:L.value},Ze(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[xa,S.item.link?(a(),b(D,{key:0,tag:P.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:d(()=>[(a(),b(R(y.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),b(R(y.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Xe(C,["enter"]),tabindex:"0"},tr,32)):f("",!0)],16,Za)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",or,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,W=>(a(),b(G,{key:W.text,item:W,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),nr=k(sr,[["__scopeId","data-v-b8d55f3b"]]),Oe=o=>(B("data-v-575e6a36"),o=o(),H(),o),ar=Oe(()=>v("div",{class:"curtain"},null,-1)),rr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},ir=Oe(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),lr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),s=o,n=T(null),r=Ie(J?document.body:null);return q([s,n],()=>{var u;s.open?(r.value=!0,(u=n.value)==null||u.focus()):r.value=!1},{immediate:!0,flush:"post"}),(u,h)=>i(t)?(a(),c("aside",{key:0,class:N(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:n,onClick:h[0]||(h[0]=xe(()=>{},["stop"]))},[ar,v("nav",rr,[ir,l(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(M,null,E(i(e),p=>(a(),c("div",{key:p.text,class:"group"},[m(nr,{item:p,depth:0},null,8,["item"])]))),128)),l(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),cr=k(lr,[["__scopeId","data-v-575e6a36"]]),ur=_({__name:"VPSkipLink",setup(o){const e=te(),t=T();q(()=>e.path,()=>t.value.focus());function s({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const u=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",u)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",u),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),c(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),dr=k(ur,[["__scopeId","data-v-0f60ec36"]]),vr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=O(),n=te();q(()=>n.path,s),$t(e,s);const{frontmatter:r}=V(),u=et(),h=g(()=>!!u["home-hero-image"]);return Te("hero-image-slot-exists",h),(p,$)=>{const P=K("Content");return i(r).layout!==!1?(a(),c("div",{key:0,class:N(["Layout",i(r).pageClass])},[l(p.$slots,"layout-top",{},void 0,!0),m(dr),m(nt,{class:"backdrop",show:i(e),onClick:i(s)},null,8,["show","onClick"]),m(Xa,null,{"nav-bar-title-before":d(()=>[l(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":d(()=>[l(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Ms,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),m(cr,{open:i(e)},{"sidebar-nav-before":d(()=>[l(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":d(()=>[l(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(vs,null,{"page-top":d(()=>[l(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":d(()=>[l(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":d(()=>[l(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":d(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":d(()=>[l(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":d(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(ms),l(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),b(P,{key:1}))}}}),pr=k(vr,[["__scopeId","data-v-5d98c3a5"]]),fr={Layout:pr,enhanceApp:({app:o})=>{o.component("Badge",tt)}};export{zn as c,fr as t,V as u}; diff --git a/assets/index.md.BDhab17L.js b/assets/index.md.BDhab17L.js new file mode 100644 index 00000000..5a903682 --- /dev/null +++ b/assets/index.md.BDhab17L.js @@ -0,0 +1 @@ +import{_ as t,c as o,o as l}from"./chunks/framework.4aTu-Nia.js";const n=JSON.parse('{"title":"TIL","titleTemplate":"Today I Learned. 프로그래밍, 컴퓨팅 등의 분야에 대한 다양한 지식이나 팁들을 정리한 미니 블로그입니다.","description":"","frontmatter":{"layout":"home","title":"TIL","titleTemplate":"Today I Learned. 프로그래밍, 컴퓨팅 등의 분야에 대한 다양한 지식이나 팁들을 정리한 미니 블로그입니다.","hero":{"name":"TIL","text":"Today I Learned.","tagline":"프로그래밍, 컴퓨팅 등의 분야에 대한 다양한 지식이나 팁들을 정리한 미니 블로그입니다.","actions":[{"theme":"brand","text":"문서 둘러보기","link":"/instructions"},{"theme":"alt","text":"GitHub","link":"https://github.com/jooy2/til"}],"image":{"src":"/study.png","alt":"study"}},"features":[{"icon":"","title":"배우고 이해할 때 커밋","details":"IT, 프로그래밍, 기타 컴퓨팅 지식에 대해 배운대로 작성하는 저만의 스터디 공간입니다."},{"icon":"","title":"언제든지 다시 볼 수 있도록","details":"쓰고 기억하고 복습할 수 있도록 가독성을 중시하며 작성하였습니다."},{"icon":"","title":"올바른 정보 제공을 위해","details":"문서 내 잘못된 내용이 있으면 언제든지 GitHub 이슈로 남겨주세요. 궁금한 것이 있다면 메일을 주셔도 좋습니다."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),e={name:"index.md"};function f(s,c,r,a,p,i){return l(),o("div")}const h=t(e,[["render",f]]);export{n as __pageData,h as default}; diff --git a/assets/index.md.BDhab17L.lean.js b/assets/index.md.BDhab17L.lean.js new file mode 100644 index 00000000..5a903682 --- /dev/null +++ b/assets/index.md.BDhab17L.lean.js @@ -0,0 +1 @@ +import{_ as t,c as o,o as l}from"./chunks/framework.4aTu-Nia.js";const n=JSON.parse('{"title":"TIL","titleTemplate":"Today I Learned. 프로그래밍, 컴퓨팅 등의 분야에 대한 다양한 지식이나 팁들을 정리한 미니 블로그입니다.","description":"","frontmatter":{"layout":"home","title":"TIL","titleTemplate":"Today I Learned. 프로그래밍, 컴퓨팅 등의 분야에 대한 다양한 지식이나 팁들을 정리한 미니 블로그입니다.","hero":{"name":"TIL","text":"Today I Learned.","tagline":"프로그래밍, 컴퓨팅 등의 분야에 대한 다양한 지식이나 팁들을 정리한 미니 블로그입니다.","actions":[{"theme":"brand","text":"문서 둘러보기","link":"/instructions"},{"theme":"alt","text":"GitHub","link":"https://github.com/jooy2/til"}],"image":{"src":"/study.png","alt":"study"}},"features":[{"icon":"","title":"배우고 이해할 때 커밋","details":"IT, 프로그래밍, 기타 컴퓨팅 지식에 대해 배운대로 작성하는 저만의 스터디 공간입니다."},{"icon":"","title":"언제든지 다시 볼 수 있도록","details":"쓰고 기억하고 복습할 수 있도록 가독성을 중시하며 작성하였습니다."},{"icon":"","title":"올바른 정보 제공을 위해","details":"문서 내 잘못된 내용이 있으면 언제든지 GitHub 이슈로 남겨주세요. 궁금한 것이 있다면 메일을 주셔도 좋습니다."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),e={name:"index.md"};function f(s,c,r,a,p,i){return l(),o("div")}const h=t(e,[["render",f]]);export{n as __pageData,h as default}; diff --git a/assets/instructions.md.qmaZDzzN.js b/assets/instructions.md.qmaZDzzN.js new file mode 100644 index 00000000..31f07f01 --- /dev/null +++ b/assets/instructions.md.qmaZDzzN.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as r,a4 as o}from"./chunks/framework.4aTu-Nia.js";const m=JSON.parse('{"title":"소개","description":"","frontmatter":{},"headers":[],"relativePath":"instructions.md","filePath":"instructions.md"}'),a={name:"instructions.md"},n=o('

소개

각종 분야에서 습득한 다양한 지식을 정리한 Jooy2Today I Learned 프로젝트에 오신 것을 환영합니다! 이 프로젝트는 2022년 1월 27일에 시작되었습니다.

가독성 있게 정리된 사이트에서 검색과 사이드 메뉴를 활용하여 문서를 찾아볼 수 있습니다.

TIL에서는 토막 지식이나 코드 스니펫과 같이 간략한 정보에 대한 내용만을 취급합니다. 조금 더 다양한 범위와 자세한 고찰이 포함된 정보들은 저의 개인 블로그 에서 포스팅되고 있습니다.

왼쪽의 메뉴에서 문서를 둘러보시거나, 상단의 검색으로 문서를 찾아보실 수 있습니다.

',5),s=[n];function _(c,i,p,d,l,h){return r(),e("div",null,s)}const u=t(a,[["render",_]]);export{m as __pageData,u as default}; diff --git a/assets/instructions.md.qmaZDzzN.lean.js b/assets/instructions.md.qmaZDzzN.lean.js new file mode 100644 index 00000000..19efff3b --- /dev/null +++ b/assets/instructions.md.qmaZDzzN.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as r,a4 as o}from"./chunks/framework.4aTu-Nia.js";const m=JSON.parse('{"title":"소개","description":"","frontmatter":{},"headers":[],"relativePath":"instructions.md","filePath":"instructions.md"}'),a={name:"instructions.md"},n=o("",5),s=[n];function _(c,i,p,d,l,h){return r(),e("div",null,s)}const u=t(a,[["render",_]]);export{m as __pageData,u as default}; diff --git a/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 b/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2a687296748f6b8bc8076cd11bde49cd27e4442b GIT binary patch literal 28332 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 HNCp4^t1hY; literal 0 HcmV?d00001 diff --git a/assets/inter-italic-cyrillic.D6csxwjC.woff2 b/assets/inter-italic-cyrillic.D6csxwjC.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f64035158d7e4c01654e3f23dcd6e8299928a28c GIT binary patch literal 17824 zcmV(|K+(TGZYzoV0yihRy3;{L*Bm;yv3xXa1 z1Rw>42nQe=C3zL>7I?PUshK)MG!ta^L3b^d$O{#w!;WOi#caU z9epdi^~z}FXC1zMc;nw||B-~iJKZ7-`H(Kn3lKjZ5N5RqaHof~Lr#JsXW1jml58&> zQGi~|0cnL4zB|P8}0t5&U@c|JdMvNGlmzMw!d_sgsBSwh~ z<3uKERMdzOA;C{wc9u@*KWk~1ZrQFoOIvrA?XoRxnU;2`Lr2EaDbuDiOouv|*;F%- z#gKPJ>8fl=HUf*mFq&P*op#SRB5uMwrI5O=D|BV|t7*jYszMn6_y=vT5wbG)8zDBN(kmfH1b)al)=7_XtiK52#|ESncdAW0QK2HvRY`_;WiO>pz_-Xk zH!T)&YR`MAJa7J@pNA;Ve=XlUuY2Z4Y1bh`Bcza^p&9I}QLUiMj74g|4NyqjXq$hi zG1}j&v`P|}Bqr@5l@eV;qy>fq`v}SgHrfA#@*v!mV~$a+B6D&Jh-sRueXL+`%jr?vt30*Vq&Bs(79VL�!Z1%E;0yxE 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin-ext.BGcWXLrn.woff2 b/assets/inter-italic-latin-ext.BGcWXLrn.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9c1b9440ed419d4a71ba46b0db3951164f9e10df GIT binary patch literal 63552 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin.DbsTr1gm.woff2 b/assets/inter-italic-latin.DbsTr1gm.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..01fcf20724f915f68a974ef2fb85f86f3039b1d8 GIT binary patch literal 46048 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 b/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e4f788ee02bb687bc1d5045483ff0d381e7654e0 GIT binary patch literal 8784 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 G0002QVTgqQ literal 0 HcmV?d00001 diff --git a/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 b/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..28593ccb8a4d849a746f2b970678fe426cb136e8 GIT binary patch literal 26600 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-cyrillic.CMhn1ESj.woff2 b/assets/inter-roman-cyrillic.CMhn1ESj.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a20adc161f433a7c4e3d92306301b9228bcf9fb4 GIT binary patch literal 16780 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

KZ;k8ywA} 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 O1{o}0SRMEP0000Yp_Hru literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek.JvnBZ4YD.woff2 b/assets/inter-roman-greek.JvnBZ4YD.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f790e047daa346583880da2be470431e35aa6054 GIT binary patch literal 21776 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 De!(H( literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 b/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..715bd903b9b14d22a056f10e6d13b8d7e0acce57 GIT binary patch literal 59608 zcmV)TK(W7fPew8T0RR910O;5N5dZ)H0wurz0O)N10|eaw00000000000000000000 z0000Qgj*YdrFaO39h^WC0k&sd@Fhf6-K!qHMAZ)CNpgk(Wrg@xc zaV%shD|3P_<9RxhfV0wJW90w?*VYvmqTB8b0+%Fql^R>lrEdvCK%mE)6`C~>J`eC{p$;>mMdgjyVJuU5HaB4^Z|oXT@n1U~ zzxc0z)_eG8`S8zZoyXMnkBalK!|FuEnv&ts&F=*s5HMoIfKehwh#EEZqEee$Y*|{n z#^3&bW39hP`2W1!Tf2XI+yBqIt5^Tn9d_H+v({2SwTM_#4VDp-D?PeR@-n6uYXI&@ z&Og1I{kw!?XvsWmhI#8u)DtV`k4TJ*Y3K%Kl}T;e_x;Py!>jZMmJAU zsYXmS)d&#-280fsPy0fsn)A@Ka;TJfEmRJwcUGbyt}AC`n) zBZ2a!W*H;{-Ws;a8Y$gUH6BfzlZzLPL z&6dh;+HBzaxKZ#Rgm3{HU&b&97Q)6qh6{Ljk(NaSb zV)=?A=Dz#xgC{=mMUh~F29+pLVu+$4N`@utkGcJ8?~XC7m%w&^6P*mVD*z0lKp^`6 zxM%k)JPYVIVd63O=Qp7?{{|1 zMl2%uV6tjz64Q!csJaN&6jR>81yf9;22)J%K`dtbD4!sL3L=<9v~DqrvlUyjxIboj z4Q>#{2es8f2T=rT7Sp)J6j2^U6hnP5#RnZss)MmWt%YejZQk)7A>aW*Cxme}$9)N< zhf{^+B|`NP-I7{`5JDO7AVx62 z074965c^B5r&i9tpGv96J^j+$n6ebHwq56mL40p3?KcufGH-d$RU6tN!r!^M69BD& z#Wc4vLFm{qU*?uTs<<#j@eqf2G>#_2T$EPnXcC&zjwVCTB-u;kmYJxw za^nyA)0TSjp>u9mXTKPvRjh(n>61fkiyfA{N+#1r}If!F#Z9d$8u@yER_Udw24k zdREW6vxX>Fjib713jdH!y^~~xY3{PiNlG+z#;rR|I@<+g7g%MW_y6zH>ED@MX@%%% zt=^ek2|-Bbl~%q=pOF@jv4Ay*Vl2x7D_DlLvv!0c%L2vWW zAl#q1$B#`PJ6^&82OKN&kC~)<2vg;1+|sUEHQ_t}2j_+MS_a|Xf1Q;SJI;*szaie^ zroE~(gcd`K@b%T$GhH&<9dHGJ-Bt%2sPC;wa|-WUTVXq)NCWG;-n zNmonv#2BQAqEv;^?ee*{VZUedLZ!3@jPIu?RVakP@_%#vYZv}60J{oTO`ux)l$zYR z$z*4eO?c@6(_{%g0JsA2@pZONsltE%W52JQx6wfdy^EGughp%ki4LNgL_;C|7|r7M zzowP+|L&GX7g9o323#vS2f!n?dwW*9tC@|LGIEM2ziCM`D{13g4D5~>8z3`NV8G4b zj8otT;PHShe_3W8WiwxWhb1UU&^XH$>QHKt2({3!#h;MstSsHx`~OST`t7?wfhxGw zHb}L6pox&@Xa;OfAniG`rbKmgn2^G5a-jf-sCs~iK*}f-sVRb@y8wvp0*X)rD51?F zC^b#WDbdcI?A%cuQlW~lLBi|<5~7Fz7-Z2!~)YH2}%f}f%@$$x4QQ_VvNXO zWDt4y6#~z1Uw!tu&ayRh(=_rZoQe?&zo1F>BX;wC#0fAF7(m=u89WB}Z*1Yn;5 zfY*%xylnu)M?xU}VH(6qQ4mwog9Hguq5{&&OptcwL#UPs;i9r3ENL@@>ti6SsT>)~ z0ofcLxg{cUM=8jg%0})k7imNX{8MFscfb5d++$*o`d zuOp_VB6WmE+6`&_hMxNUSrt_Vjw~ESlKc13+7f@C(BxHyBUJWrW#rB6$0;(QZ2ya+ zvC1uRrW6}7XMMzl804CcVsq;?oD`e^M?_C4nN@SPiA#9o0&| z{F4K#$I|cTRlJ6(B>FX_zvEg?&ZR{TR^PX%=l_;Vf__8KOaJX<3e|f2jbS3lNM<|z z`jo-X8ky5y*?woB-0%}14EnVJa9^0X1Ffd)R`{5>1^-xp!47GkJ9W<>Fe74xrz8bE!oCz`_?^{X*WBvjNR60 z>y_X3>P%K%)2!!I_i#!*m}jbg{;7e5EXU@shf5~)XsL@0l1UA%BK3Inso~vPYJ|^S zY#he9&;i>uE&mA%oMgC`#yh}x*ToM~yb$NV&293u~=xQA$n}3mWM4dOt7?nCn7`MHDbG)f)fV?s zLG(bw#6pZDNiz5K zhX*+JHCl;(Xdcz7VN2Uk+-70V{01{Kv-hknQ#Z^H{WPCv&gUcczgp)Lcx^~YEwb3d z3bTJk;_YpTsex^wDYH(=jeYTu}g zdyy|8%PLL88`t%SVl4AT#R!RCiB#&pQolhKs~PwSrwnZc##&NZ{#r^Kuyl0nW7{mFqHP}*b-r(BIr)2Yl>`$Ab~8oe zzNi4&q|3XsN~-MpcrXuA88V;qVKx#~BUVc$d`6(VlKV`OL^E>sj| zoi5O|jKB+uDrl(u3-1VN@$YC~D5?L`MCV7Ep9G}PD$*|Sf>e>L0RGL~vEoScj2SZR zSAZ|{k9_ZFIr3S9O|R}c-_A+%G;$?mN2v3((Syfd`d0S;2D+34oQlqMga58BF3Fb* zj2;qrpUL7i{s(Xy>pHQ^`b13|)Zg*}HvZm)KUpmb=vG|Ziv5vgj^Poa+lBsH8^{-$ zzeXX}S-NUH?@*E5e^m2f_|g$a9dq0XC*!G28vcCSWm^>w{XL&?^Mk`qMYoba;=<>> zWPssJ>@hnYB}tOaNHlnB!JZ~bZ;NhHNspW=ND6&Yg^=sn0UP;wiN=6kpFx38*u7{&-dj~_dhsm zKSQ7E?Oj!l@8&PZPGcOOf5$4)Ov%zdPSYoe$2anKexA_NInL*i@AA2YE352<

JSON5 파일 확장자

JSON5는 기존 JSON 포맷에서 부족했던 여러가지 단점을 보완한 파일 포맷이다. 파일 확장자가 .json5로 시작하여야 한다.

가장 큰 변동사항은 파일 내에 주석을 달 수 있다. 대부분의 프로그래밍 언어에서 사용하는 것과 동일하게 한줄 주석은 //로, 여러 줄 주석은 /*로 시작하고 */로 끝난다.

json5
{
+	id: 1234,
+	// This is single line comment
+	fruits: [
+		'apple',
+		'orange',
+		'banana' // Fruits
+	],
+	/* This
+     is
+     Multi line
+     comment
+    */
+	isEnable: true
+}

마지막 키값의 끝에 콤마(,)를 넣어도 오류가 발생하지 않는다. 선택적으로 데이터 끝에 콤마를 붙일 수 있다.

json5
{
+	id: 1234,
+	name: 'lee' // <<--- ','
+}

문자열 데이터는 \\ 기호를 끝에 붙여 여러줄로 작성할 수 있다. (주의: \\는 반드시 끝에 붙여야 한다. 마지막 줄엔 붙이지 않는다.)

json5
{
+	multiLineString: 'Hello\\
+  World\\
+  JSON5\\
+  Sample'
+}

16진수, 소수점 표현, + 또는 - 기호, NaN 등의 여러 값 형식을 추가로 지원한다.

json5
{
+	id: 12345678,
+	NaN: NaN, // <--- NaN 데이터
+	infinity: Infinity, // <--- Infinity 데이터
+	plus: +1234, // <--- + 사용
+	minus: -1234, // <--- - 사용
+	hexadecimal: 0xbc614e, // <--- 16진수 데이터
+	leadingDecimalPoint: 0.1234 // <--- 선행 소수점 데이터
+}
`,10),h=[l];function p(k,e,d,E,r,g){return a(),i("div",null,h)}const y=s(t,[["render",p]]);export{o as __pageData,y as default}; diff --git a/assets/language_common_json5.md.DxQ9Ke5l.lean.js b/assets/language_common_json5.md.DxQ9Ke5l.lean.js new file mode 100644 index 00000000..e640d526 --- /dev/null +++ b/assets/language_common_json5.md.DxQ9Ke5l.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"JSON5 파일 확장자","description":"","frontmatter":{},"headers":[],"relativePath":"language/common/json5.md","filePath":"language/common/json5.md"}'),t={name:"language/common/json5.md"},l=n("",10),h=[l];function p(k,e,d,E,r,g){return a(),i("div",null,h)}const y=s(t,[["render",p]]);export{o as __pageData,y as default}; diff --git a/assets/language_common_variable-case-types.md.CPGmPoSY.js b/assets/language_common_variable-case-types.md.CPGmPoSY.js new file mode 100644 index 00000000..97df0d73 --- /dev/null +++ b/assets/language_common_variable-case-types.md.CPGmPoSY.js @@ -0,0 +1,13 @@ +import{_ as a,c as s,o as e,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"변수 이름 명명 시 케이스 타입","description":"","frontmatter":{},"headers":[],"relativePath":"language/common/variable-case-types.md","filePath":"language/common/variable-case-types.md"}'),t={name:"language/common/variable-case-types.md"},p=n(`

변수 이름 명명 시 케이스 타입

변수명을 정의할 때는 프로젝트나 언어의 특성에 맞게 통일성있게 구분 기호나 대/소문자를 활용해야 한다. 아래는 대부분의 언어에서 사용되는 변수명의 케이스 타입이다.

카멜 케이스 (Camel Case)

낙타의 굴곡진 형태에 비롯한 케이스 표기법으로 첫 문자는 소문자로, 이후 단어 부터 첫 문자 마다 대문자로 표현한다. 단어 간 구분 문자가 없어 간결하게 표현할 수 있으므로 대부분의 언어에서 권장하기도 한다.

txt
camelCase
+getCompanyInfo
+findElementById

파스칼 케이스 (Pascal Case)

카멜 케이스와 유사하지만 첫 문자를 대문자로 사용한다. 주로 클래스명을 정의할 때 첫 문자를 대문자로 사용하기 때문에 특별한 경우가 아니면 잘 사용하지 않는다.

txt
PascalCase
+GlobalOptions
+SystemFileInfo

스네이크 케이스 (Snake Case)

각 단어 사이에는 언더 바(_)를 사용하여 구분하며 문자는 모두 소문자 또는 대문자로 변환하여 주로 사용한다. 대문자 표현의 경우 상수(constant)를 표현할 때 사용되기도 한다.

txt
snake_case
+get_item_info
+file_size_humanized
+C_MAX_UPLOAD_FILE_SIZE

케밥 케이스 (Kebab Case)

모든 문자는 소문자로 표현하고 각 단어 사이에는 대시 기호(-)를 사용하여 구분한다. 일부 언어에서는 대시 기호를 사용하지 못할 수 있다. URL을 표현할 때 자주 사용되는 형식이기도 하다.

txt
kebab-case
+my-profile-info
+system-get-platform-name

헝가리안 표기법 (Hungarian Notation)

변수 앞에 데이터 타입을 붙인다. 변수에 잘못된 데이터 타입을 넣지 않도록 명확하게 인지할 수 있고 변수를 추적하지 않는 일반 텍스트 에디터나 기타 환경에서 데이터 타입을 쉽게 확인할 수 있다. 모던 프로그래밍 언어에서는 이 표기법을 권장하지 않기도 하고 최근 IDE에서는 잘못된 데이터 타입에 대한 추적이 우수하기 때문에 가급적 사용하지 않는 것이 좋다. 데이터형을 붙일 때는 전체 이름이나 축약형(b, i, str)을 사용하기도 하고, 카멜 케이스와 동시에 활용하기도 한다.

txt
intUserId (Integer)
+bIsActive (Boolean)
+strPassword (String)
+iPrice (Integer)
`,17),i=[p];function l(c,o,d,r,h,u){return e(),s("div",null,i)}const m=a(t,[["render",l]]);export{g as __pageData,m as default}; diff --git a/assets/language_common_variable-case-types.md.CPGmPoSY.lean.js b/assets/language_common_variable-case-types.md.CPGmPoSY.lean.js new file mode 100644 index 00000000..fcd2c01c --- /dev/null +++ b/assets/language_common_variable-case-types.md.CPGmPoSY.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as e,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"변수 이름 명명 시 케이스 타입","description":"","frontmatter":{},"headers":[],"relativePath":"language/common/variable-case-types.md","filePath":"language/common/variable-case-types.md"}'),t={name:"language/common/variable-case-types.md"},p=n("",17),i=[p];function l(c,o,d,r,h,u){return e(),s("div",null,i)}const m=a(t,[["render",l]]);export{g as __pageData,m as default}; diff --git a/assets/language_css_code-style-guide.md.Cna-gLBK.js b/assets/language_css_code-style-guide.md.Cna-gLBK.js new file mode 100644 index 00000000..8bf90835 --- /dev/null +++ b/assets/language_css_code-style-guide.md.Cna-gLBK.js @@ -0,0 +1,55 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const y=JSON.parse('{"title":"CSS3 Code Style Guide","description":"","frontmatter":{},"headers":[],"relativePath":"language/css/code-style-guide.md","filePath":"language/css/code-style-guide.md"}'),h={name:"language/css/code-style-guide.md"},p=n(`

CSS3 Code Style Guide

CSS

속성과 속성 사이, 속성과 값 사이에 공백을 붙인다.

🚫 Bad

css
.myClass {
+	display: block;
+	background: red;
+}

✅ Good

css
.myClass {
+	display: block;
+	background: red;
+}

여러 단계의 선택자일 수록 아래쪽에 배치한다.

🚫 Bad

css
.myClass > div > p {
+	color: white;
+}
+.myClass > div {
+	background: blue;
+}
+.myClass {
+	display: block;
+	background: red;
+}

✅ Good

css
.myClass {
+	display: block;
+	background: red;
+}
+.myClass > div {
+	background: blue;
+}
+.myClass > div > p {
+	color: white;
+}

필요하지 않은 경우 important를 남용하지 않는다.

🚫 Bad

css
.active {
+	color: blue !important;
+}
+.another-active {
+	color: red !important;
+	background: black !important;
+}

✅ Good

css
.active {
+	color: blue;
+}
+.another-active {
+	color: red !important;
+	background: black;
+}

속성 값이 0인 경우 단위를 사용하지 않는다.

🚫 Bad

css
.myDiv {
+	padding: 0px;
+}

✅ Good

css
.myDiv {
+	padding: 0;
+}

여러 방향의 속성을 정의할 경우 (특히 같은 값일 때) 가능한 한줄로 축약할 수 있도록 한다.

🚫 Not Good

css
.myDiv {
+	padding-left: 10px;
+	padding-right: 10px;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}

✅ Good

css
.myDiv {
+	padding: 10px;
+}

역할이 겹치는 속성을 중복하여 사용하지 않는다.

🚫 Not Good

css
.myDiv {
+	padding: 0 0 0 5px;
+	padding-left: 10px;
+}

✅ Good

css
.myDiv {
+	padding-left: 10px;
+}

각 방향 마다 서로 다른 값을 가지는 경우 padding이나 margin 속성의 경우 TRBL(Top, Right, Bottom, Left)의 순서로 작성할 수 있다.

css
.myDiv {
+	padding: 10px 5px 10px 20px;
+}
`,34),t=[p];function l(k,e,d,E,r,g){return a(),i("div",null,t)}const o=s(h,[["render",l]]);export{y as __pageData,o as default}; diff --git a/assets/language_css_code-style-guide.md.Cna-gLBK.lean.js b/assets/language_css_code-style-guide.md.Cna-gLBK.lean.js new file mode 100644 index 00000000..4293efae --- /dev/null +++ b/assets/language_css_code-style-guide.md.Cna-gLBK.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const y=JSON.parse('{"title":"CSS3 Code Style Guide","description":"","frontmatter":{},"headers":[],"relativePath":"language/css/code-style-guide.md","filePath":"language/css/code-style-guide.md"}'),h={name:"language/css/code-style-guide.md"},p=n("",34),t=[p];function l(k,e,d,E,r,g){return a(),i("div",null,t)}const o=s(h,[["render",l]]);export{y as __pageData,o as default}; diff --git a/assets/language_dart_flutter_change-app-display-name.md.B1SMmu75.js b/assets/language_dart_flutter_change-app-display-name.md.B1SMmu75.js new file mode 100644 index 00000000..cf722a9a --- /dev/null +++ b/assets/language_dart_flutter_change-app-display-name.md.B1SMmu75.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"Flutter 앱 표시 이름 변경하기","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/change-app-display-name.md","filePath":"language/dart/flutter/change-app-display-name.md"}'),t={name:"language/dart/flutter/change-app-display-name.md"},l=n(`

Flutter 앱 표시 이름 변경하기

플랫폼별로 Flutter 앱의 표시 이름(앱 리스트에서 나타나는 이름)을 사용자 지정할 수 있다. 이를 설정하지 않은 경우 기본값은 pubspec.yamlname값을 사용한다.

아래 플랫폼별 앱 표시 이름을 변경한 후 다음 명령을 실행한다.

shell
$ flutter clean

이후 앱을 다시 빌드하면 해당 내용이 적용된다.

Android

android/app/src/main/AndroidManifest.xml 파일을 열고 applicationandroid:label 키를 찾아 해당 값({DisplayName})을 변경한다.

xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.company.app.app_name">
+   <application
+        android:label="{DisplayName}"
+        android:name="\${applicationName}"
+        android:icon="@mipmap/ic_launcher">
+       ...
+   </application>
+    ...
+</manifest>

ios

ios/Runner/info.plist 파일을 열고 CFBundleName 키를 찾아 해당 값({DisplayName})을 변경한다.

  • 앱 이름에는 공백이 포함되지 않는 것을 권장한다.
xml
<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	...
+	<key>CFBundleName</key>
+	<string>{DisplayName}</string>
+    ...
+</dict>
+</plist>
`,12),p=[l];function h(e,k,E,d,r,o){return a(),i("div",null,p)}const y=s(t,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/language_dart_flutter_change-app-display-name.md.B1SMmu75.lean.js b/assets/language_dart_flutter_change-app-display-name.md.B1SMmu75.lean.js new file mode 100644 index 00000000..4ecd756a --- /dev/null +++ b/assets/language_dart_flutter_change-app-display-name.md.B1SMmu75.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"Flutter 앱 표시 이름 변경하기","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/change-app-display-name.md","filePath":"language/dart/flutter/change-app-display-name.md"}'),t={name:"language/dart/flutter/change-app-display-name.md"},l=n("",12),p=[l];function h(e,k,E,d,r,o){return a(),i("div",null,p)}const y=s(t,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/language_dart_flutter_flutter-library-flutter-icons.md.Cu-vffq8.js b/assets/language_dart_flutter_flutter-library-flutter-icons.md.Cu-vffq8.js new file mode 100644 index 00000000..2a0e1f58 --- /dev/null +++ b/assets/language_dart_flutter_flutter-library-flutter-icons.md.Cu-vffq8.js @@ -0,0 +1,6 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Flutter flutter_icons 라이브러리","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/flutter-library-flutter-icons.md","filePath":"language/dart/flutter/flutter-library-flutter-icons.md"}'),e={name:"language/dart/flutter/flutter-library-flutter-icons.md"},l=t(`

Flutter flutter_icons 라이브러리

여러 플랫폼의 앱 아이콘을 한번에 변경해주는 개발 유틸 (https://github.com/fluttercommunity/flutter_launcher_icons)

설치

dev_dependenciesflutter_launcher_icons 패키지를 설치한다.

yaml
dev_dependencies:
+  flutter_launcher_icons: ^0.12.0

이후 하단에 다음 내용을 구성한다. image_path에는 프로젝트 경로 루트 기준 변경할 아이콘의 경로를 입력한다.

yaml
flutter_icons:
+  android: true
+  ios: true
+  image_path: assets/icon/icon.png

이후 터미널에서 다음 명령어를 실행하여 아이콘을 적용할 수 있다. 기존의 아이콘은 사라지니 주의.

shell
flutter pub run flutter_launcher_icons:main

Troubleshooting

아래 에러가 발생한 경우:

shell
 ERROR: InvalidConfigException
+Cannot not find minSdk from android/app/build.gradle or android/local.propertiesSpecify minSdk in either android/app/build.gradle or android/local.properties

android/local.properties에 다음 내용을 추가한다.

txt
flutter.minSdkVersion=30
`,14),n=[l];function h(p,r,d,o,k,c){return a(),i("div",null,n)}const F=s(e,[["render",h]]);export{g as __pageData,F as default}; diff --git a/assets/language_dart_flutter_flutter-library-flutter-icons.md.Cu-vffq8.lean.js b/assets/language_dart_flutter_flutter-library-flutter-icons.md.Cu-vffq8.lean.js new file mode 100644 index 00000000..d29ab98f --- /dev/null +++ b/assets/language_dart_flutter_flutter-library-flutter-icons.md.Cu-vffq8.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Flutter flutter_icons 라이브러리","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/flutter-library-flutter-icons.md","filePath":"language/dart/flutter/flutter-library-flutter-icons.md"}'),e={name:"language/dart/flutter/flutter-library-flutter-icons.md"},l=t("",14),n=[l];function h(p,r,d,o,k,c){return a(),i("div",null,n)}const F=s(e,[["render",h]]);export{g as __pageData,F as default}; diff --git a/assets/language_dart_flutter_flutter-lint-depend-on-referenced-packages.md.DaC5IWKA.js b/assets/language_dart_flutter_flutter-lint-depend-on-referenced-packages.md.DaC5IWKA.js new file mode 100644 index 00000000..5fceec47 --- /dev/null +++ b/assets/language_dart_flutter_flutter-lint-depend-on-referenced-packages.md.DaC5IWKA.js @@ -0,0 +1,22 @@ +import{_ as s,c as a,o as i,a4 as n}from"./chunks/framework.4aTu-Nia.js";const E=JSON.parse('{"title":"Flutter Lint depend_on_referenced_packages","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/flutter-lint-depend-on-referenced-packages.md","filePath":"language/dart/flutter/flutter-lint-depend-on-referenced-packages.md"}'),e={name:"language/dart/flutter/flutter-lint-depend-on-referenced-packages.md"},t=n(`

Flutter Lint depend_on_referenced_packages

Flutter lint에서 depend_on_referenced_packages가 표시되는 경우가 있다.

dart
import 'package:path/path.dart'; // lint: depend_on_referenced_packages
+import 'package:path_provider/path_provider.dart';
+
+class Main {
+  Main()
+
+  get _textFilePath async {
+    final documentDir = await getApplicationDocumentsDirectory();
+
+    return join(documentDir, 'file.txt');
+  }
+}

위 코드 예시에서 join 메소드를 사용하면서 사용된 path 패키지를 import했을 때, 해당 라인에서 다음 에러가 발생한다.

txt
Depend on referenced packages.
+
+When importing a package, add a dependency on it to your pubspec.

사용한 패키지는 dart 기본 제공 패키지여도 가급적 pubspec.yamldependencies 목록에 추가해주는 것이 좋다.

yaml
dependencies:
+  flutter:
+    sdk: flutter
+
+  # The following adds the Cupertino Icons font to your application.
+  # Use with the CupertinoIcons class for iOS style icons.
+  cupertino_icons: ^1.0.5
+
+  path: ^1.8.1

위와 같이 dependenciespath 패키지를 추가한다.

`,8),p=[t];function l(h,k,d,r,c,o){return i(),a("div",null,p)}const y=s(e,[["render",l]]);export{E as __pageData,y as default}; diff --git a/assets/language_dart_flutter_flutter-lint-depend-on-referenced-packages.md.DaC5IWKA.lean.js b/assets/language_dart_flutter_flutter-lint-depend-on-referenced-packages.md.DaC5IWKA.lean.js new file mode 100644 index 00000000..3efbe49d --- /dev/null +++ b/assets/language_dart_flutter_flutter-lint-depend-on-referenced-packages.md.DaC5IWKA.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as n}from"./chunks/framework.4aTu-Nia.js";const E=JSON.parse('{"title":"Flutter Lint depend_on_referenced_packages","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/flutter-lint-depend-on-referenced-packages.md","filePath":"language/dart/flutter/flutter-lint-depend-on-referenced-packages.md"}'),e={name:"language/dart/flutter/flutter-lint-depend-on-referenced-packages.md"},t=n("",8),p=[t];function l(h,k,d,r,c,o){return i(),a("div",null,p)}const y=s(e,[["render",l]]);export{E as __pageData,y as default}; diff --git a/assets/language_dart_flutter_flutter-row-column-main-axis-size.md.DCpTPXxC.js b/assets/language_dart_flutter_flutter-row-column-main-axis-size.md.DCpTPXxC.js new file mode 100644 index 00000000..a6334bae --- /dev/null +++ b/assets/language_dart_flutter_flutter-row-column-main-axis-size.md.DCpTPXxC.js @@ -0,0 +1,55 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"Flutter Row, Column 위젯의 mainAxisSize 파라미터","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/flutter-row-column-main-axis-size.md","filePath":"language/dart/flutter/flutter-row-column-main-axis-size.md"}'),h={name:"language/dart/flutter/flutter-row-column-main-axis-size.md"},t=n(`

Flutter Row, Column 위젯의 mainAxisSize 파라미터

FlutterRow, Column 위젯에서 사용되는 파라미터인 mainAxisSize는 콘텐츠의 최대 너비와 높이를 결정하기 위해 사용한다. 값은 minmax 두가지가 있는데 MainAxisSize.min 값은 자식 위젯의 너비 또는 높이의 합이 부모의 너비 또는 높이이며 MainAxisSize.max는 주축의 전체 너비 또는 높이를 사용한다. 안드로이드에서 사용되는 wrap_contentmatch_parent를 대신하기도 한다.

Row(너비)의 wrap_content (Minimum width) 적용:

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Row(
+        mainAxisSize: MainAxisSize.min,
+        children: [ /* ... */ ],
+      )
+  );
+}

Row(너비)의 match_parent (Maximum width) 적용:

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Row(
+        mainAxisSize: MainAxisSize.max,
+        children: [ /* ... */ ],
+      )
+  );
+}

Column(높이)의 wrap_content (Minimum height) 적용:

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Column(
+        mainAxisSize: MainAxisSize.min,
+        children: [ /* ... */ ],
+      )
+  );
+}

Column(높이)의 match_parent (Maximum height) 적용:

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Column(
+        mainAxisSize: MainAxisSize.max,
+        children: [ /* ... */ ],
+      )
+  );
+}

Row, ColumnMainAxisSize와 비슷한 결과를 얻는 다른 방법은 WrapContainer 위젯을 사용할 수도 있다.

Wrap을 사용하여 너비와 높이를 최소로 적용:

이 위젯을 사용하면 너비와 높이를 동시에 적용한다.

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Wrap(
+        children: [ /* ... */ ],
+      )
+  );
+}

Container height 속성을 사용하여 너비와 높이를 최대로 적용:

너비는 width, 높이는 height로 적용한다.

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Container(
+        width: double.infinity,
+        height: double.infinity,
+        children: [ /* ... */ ],
+      )
+  );
+}
`,17),l=[t];function p(k,e,E,d,r,g){return a(),i("div",null,l)}const y=s(h,[["render",p]]);export{c as __pageData,y as default}; diff --git a/assets/language_dart_flutter_flutter-row-column-main-axis-size.md.DCpTPXxC.lean.js b/assets/language_dart_flutter_flutter-row-column-main-axis-size.md.DCpTPXxC.lean.js new file mode 100644 index 00000000..a288de6a --- /dev/null +++ b/assets/language_dart_flutter_flutter-row-column-main-axis-size.md.DCpTPXxC.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"Flutter Row, Column 위젯의 mainAxisSize 파라미터","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/flutter-row-column-main-axis-size.md","filePath":"language/dart/flutter/flutter-row-column-main-axis-size.md"}'),h={name:"language/dart/flutter/flutter-row-column-main-axis-size.md"},t=n("",17),l=[t];function p(k,e,E,d,r,g){return a(),i("div",null,l)}const y=s(h,[["render",p]]);export{c as __pageData,y as default}; diff --git a/assets/language_dart_flutter_load-external-json-file.md.CdavlPVL.js b/assets/language_dart_flutter_load-external-json-file.md.CdavlPVL.js new file mode 100644 index 00000000..2d79ba13 --- /dev/null +++ b/assets/language_dart_flutter_load-external-json-file.md.CdavlPVL.js @@ -0,0 +1,36 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"Flutter 외부 JSON 파일 가져오기","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/load-external-json-file.md","filePath":"language/dart/flutter/load-external-json-file.md"}'),t={name:"language/dart/flutter/load-external-json-file.md"},l=n(`

Flutter 외부 JSON 파일 가져오기

아래와 같이 assets/json/users.json 파일이 있다고 가정한다면,

json
[
+	{
+		"id": 0,
+		"name": "lee"
+	},
+	{
+		"id": 1,
+		"name": "kim"
+	},
+	{
+		"id": 2,
+		"name": "park"
+	}
+]

pubspec.yaml 파일의 flutter -> assets에 파일이 포함된 경로(전체 또는 폴더)를 추가한다.

yaml
flutter:
+  # To add assets to your application, add an assets section, like this:
+  # assets:
+  #   - images/a_dot_burr.jpeg
+  #   - images/a_dot_ham.jpeg
+  assets:
+    - assets/json/

이후 Flutter 코드에서 사용할 때는 rootBundle.loadString을 사용하여 json 파일을 불러온 후 StirngList로 디코딩한다.

dart
import 'dart:convert';
+
+import 'package:flutter/services.dart';
+
+class Main {
+  Future<List<dynamic>> getListFromJson(path) async {
+    final String str = await rootBundle.loadString(path);
+    return json.decode(str);
+  }
+
+  run() async {
+    List<dynamic> jsonData =
+        await Utils.getListFromJson('assets/json/users.json');
+
+    print(jsonData[0]['name']); // 'lee'
+  }
+}

주의할 점은 rootBundle.loadString은 flutter 범위 내에서만 사용 가능하다.

`,8),p=[l];function h(k,e,E,d,r,g){return a(),i("div",null,p)}const y=s(t,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/language_dart_flutter_load-external-json-file.md.CdavlPVL.lean.js b/assets/language_dart_flutter_load-external-json-file.md.CdavlPVL.lean.js new file mode 100644 index 00000000..4c0b505f --- /dev/null +++ b/assets/language_dart_flutter_load-external-json-file.md.CdavlPVL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"Flutter 외부 JSON 파일 가져오기","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/load-external-json-file.md","filePath":"language/dart/flutter/load-external-json-file.md"}'),t={name:"language/dart/flutter/load-external-json-file.md"},l=n("",8),p=[l];function h(k,e,E,d,r,g){return a(),i("div",null,p)}const y=s(t,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/language_dart_flutter_upgrade-flutter-version.md.Dxwe3XH4.js b/assets/language_dart_flutter_upgrade-flutter-version.md.Dxwe3XH4.js new file mode 100644 index 00000000..89552dde --- /dev/null +++ b/assets/language_dart_flutter_upgrade-flutter-version.md.Dxwe3XH4.js @@ -0,0 +1,8 @@ +import{_ as a,c as s,o as e,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"동일한 프로젝트에서 Flutter 버전 업그레이드","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/upgrade-flutter-version.md","filePath":"language/dart/flutter/upgrade-flutter-version.md"}'),i={name:"language/dart/flutter/upgrade-flutter-version.md"},n=t(`

동일한 프로젝트에서 Flutter 버전 업그레이드

자동 업그레이드

터미널에서 다음 명령을 실행한다. 이 경우 Flutter 설치 경로의 파일이 최신 버전으로 대체된다.

shell
$ flutter clean
+$ flutter upgrade

수동 업그레이드 & 다운그레이드

프로젝트 업그레이드 전 열려있는 프로젝트를 닫는다.

원하는 버전의 Flutter SDK를 다운로드 한 후 환경변수에서 설정된 경로로 파일을 이동한다.

안드로이드 스튜디오를 사용하는 경우 프로젝트 경로의 .idea 디렉토리를 제거한다.

다시 프로젝트를 열어 인덱싱을 완료한 후 터미널에서 다음 명령을 실행한다.

shell
$ flutter clean
+$ flutter pub get

빌드 시 다음 에러가 발생하는 경우가 있다.

Could not get unknown property 'ndkVersion' for extension 'flutter' of type FlutterExtension.

android/app/build.gradle에서 버전별로 다음 내용을 수정해야 할 수 있다.

Flutter 3.x

android {
+    compileSdkVersion flutter.compileSdkVersion
+    ndkVersion flutter.ndkVersion
+}

Flutter 2.x

android {
+    compileSdkVersion {SDK Version}
+}
`,17),l=[n];function p(r,o,d,h,c,u){return e(),s("div",null,l)}const F=a(i,[["render",p]]);export{g as __pageData,F as default}; diff --git a/assets/language_dart_flutter_upgrade-flutter-version.md.Dxwe3XH4.lean.js b/assets/language_dart_flutter_upgrade-flutter-version.md.Dxwe3XH4.lean.js new file mode 100644 index 00000000..64657175 --- /dev/null +++ b/assets/language_dart_flutter_upgrade-flutter-version.md.Dxwe3XH4.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as e,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"동일한 프로젝트에서 Flutter 버전 업그레이드","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/upgrade-flutter-version.md","filePath":"language/dart/flutter/upgrade-flutter-version.md"}'),i={name:"language/dart/flutter/upgrade-flutter-version.md"},n=t("",17),l=[n];function p(r,o,d,h,c,u){return e(),s("div",null,l)}const F=a(i,[["render",p]]);export{g as __pageData,F as default}; diff --git a/assets/language_dart_flutter_widget-inkwell.md.DnXGMLk_.js b/assets/language_dart_flutter_widget-inkwell.md.DnXGMLk_.js new file mode 100644 index 00000000..82fb5a93 --- /dev/null +++ b/assets/language_dart_flutter_widget-inkwell.md.DnXGMLk_.js @@ -0,0 +1,27 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"Inkwell 위젯","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/widget-inkwell.md","filePath":"language/dart/flutter/widget-inkwell.md"}'),t={name:"language/dart/flutter/widget-inkwell.md"},l=n(`

Inkwell 위젯

Inkwell 위젯은 터치나 누르기 동작을 받아 처리할 수 없는 위젯에서 동작을 인식하게 해주거나 포커스 노드를 생성해주는 위젯이다.

TextContainer 위젯과 같이 터치하였을 때 어떠한 동작을 수행하려는 경우 해당 위젯의 상위 위젯으로 감싸여 사용할 수 있다.

dart
  @override
+  Widget build(BuildContext context) {
+		return InkWell(
+				onTap: () {
+          print('Hello');
+        },
+				child: const Text('Click Me'),
+		);
+	}

Inkwell 위젯은 동작 인식뿐만 아니라 머터리얼 디자인의 Ripple(파동) 터치 효과와 클릭 도중 하이라이트를 추가해준다. 파동 효과를 사용하지 않으려면 다음과 같이 splashColor 색상을 투명으로 지정한다.

dart
  @override
+  Widget build(BuildContext context) {
+		return InkWell(
+      	splashColor: Colors.transparent, // Add this
+				onTap: () {
+          print('Hello');
+        },
+				child: const Text('Click Me'),
+		);
+	}

Inkwell 위젯의 각종 효과가 표시되려면 Material 위젯이 부모 위젯으로 위치해야 한다. 만약 파동 효과와 같이 효과가 제대로 표시되지 않는다면 아래와 같이 상위 위젯을 Material 위젯으로 감싸고 색상을 투명으로 설정하여 문제를 해결할 수 있다.

dart
  @override
+  Widget build(BuildContext context) {
+		return Material( // Add this
+			color: Colors.transparent, // Add this
+			child: InkWell(
+				onTap: () {
+          print('Hello');
+        },
+				child: const Text('Click Me')));
+	}

Inkwell 위젯은 동작 인식 위젯인 GestureDetector과 유사하지만, GestureDetector의 경우 Inkwell보다 더 많은 동작에 대한 이벤트를 수행할 수 있으나 Inkwell과는 달리 파동이나 하이라이트와 같은 효과를 지원하지 않는다.

때문에 단순한 동작과 효과를 쉽게 구현하는 용도라면 GestureDetector 대신 Inkwell 위젯을 사용하는 방법도 있다.

`,10),h=[l];function k(p,e,d,E,r,g){return a(),i("div",null,h)}const y=s(t,[["render",k]]);export{o as __pageData,y as default}; diff --git a/assets/language_dart_flutter_widget-inkwell.md.DnXGMLk_.lean.js b/assets/language_dart_flutter_widget-inkwell.md.DnXGMLk_.lean.js new file mode 100644 index 00000000..7e54c95f --- /dev/null +++ b/assets/language_dart_flutter_widget-inkwell.md.DnXGMLk_.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"Inkwell 위젯","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/flutter/widget-inkwell.md","filePath":"language/dart/flutter/widget-inkwell.md"}'),t={name:"language/dart/flutter/widget-inkwell.md"},l=n("",10),h=[l];function k(p,e,d,E,r,g){return a(),i("div",null,h)}const y=s(t,[["render",k]]);export{o as __pageData,y as default}; diff --git a/assets/language_dart_naming-convention.md.SnPQkW0Y.js b/assets/language_dart_naming-convention.md.SnPQkW0Y.js new file mode 100644 index 00000000..5962a805 --- /dev/null +++ b/assets/language_dart_naming-convention.md.SnPQkW0Y.js @@ -0,0 +1,29 @@ +import{_ as s,c as a,o as i,a4 as n}from"./chunks/framework.4aTu-Nia.js";const E=JSON.parse('{"title":"Dart 네이밍 컨벤션 (Dart Naming Convention)","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/naming-convention.md","filePath":"language/dart/naming-convention.md"}'),e={name:"language/dart/naming-convention.md"},t=n(`

Dart 네이밍 컨벤션 (Dart Naming Convention)

폴더 이름과 파일 이름은 스네이크 케이스(snake_case)를 사용한다.

txt
test_utils/
+plugins/
+main_screen.dart
+file_util.dart

폴더명은 복수형을 사용하며, 파일명은 가급적 단수형을 사용한다.

txt
utils/
+widgets/
+screens/
+test_screen.dart

변수 이름은 카멜 케이스(camelCase)를 사용한다.

dart
String userId = 'user';

가급적 변수가 private일 때만 언더스코어(_)를 사용한다.

dart
String _ = 'user';

라이브러리 프리픽스값은 스네이크 케이스(snake_case)를 사용한다.

dart
import 'package:flutter/material.dart' as flutter_material;

함수 이름은 카멜 케이스(camelCase)를 사용한다.

dart
bool initializeScreen() {
+  return true;
+}
+
+@override
+void initState() {
+  initializeScreen();
+  super.initState();
+}

클래스 이름은 카멜 케이스(camelCase)를 사용한다.

dart
class MainApp extends StatefulWidget {
+  const MainApp({Key? key}) : super(key: key);
+
+  @override
+  State<MainApp> createState() => _MainAppState();
+}

가능하다면 파일 이름의 끝에 디렉토리 이름을 포함한다.

txt
screens/
+    ㄴ main_screen.dart
+    ㄴ purchase_screen.dart

파일 내 단일 클래스가 존재하는 경우 파일명과 동일한 이름을 사용한다.

dart
// purchase_screen.dart
+
+class PurchaseScreen extends StatefulWidget {
+  const PurchaseScreen({Key? key}) : super(key: key);
+
+  @override
+  State<PurchaseScreen> createState() => _PurchaseScreenState();
+}
`,19),l=[t];function h(p,k,r,d,c,g){return i(),a("div",null,l)}const y=s(e,[["render",h]]);export{E as __pageData,y as default}; diff --git a/assets/language_dart_naming-convention.md.SnPQkW0Y.lean.js b/assets/language_dart_naming-convention.md.SnPQkW0Y.lean.js new file mode 100644 index 00000000..53b86ea2 --- /dev/null +++ b/assets/language_dart_naming-convention.md.SnPQkW0Y.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as n}from"./chunks/framework.4aTu-Nia.js";const E=JSON.parse('{"title":"Dart 네이밍 컨벤션 (Dart Naming Convention)","description":"","frontmatter":{},"headers":[],"relativePath":"language/dart/naming-convention.md","filePath":"language/dart/naming-convention.md"}'),e={name:"language/dart/naming-convention.md"},t=n("",19),l=[t];function h(p,k,r,d,c,g){return i(),a("div",null,l)}const y=s(e,[["render",h]]);export{E as __pageData,y as default}; diff --git a/assets/language_html5_code-style-guide.md.B9ClEv1d.js b/assets/language_html5_code-style-guide.md.B9ClEv1d.js new file mode 100644 index 00000000..400faf3e --- /dev/null +++ b/assets/language_html5_code-style-guide.md.B9ClEv1d.js @@ -0,0 +1,64 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"HTML5 Code Style Guide","description":"","frontmatter":{},"headers":[],"relativePath":"language/html5/code-style-guide.md","filePath":"language/html5/code-style-guide.md"}'),h={name:"language/html5/code-style-guide.md"},l=t(`

HTML5 Code Style Guide

HTML

태그는 모두 소문자로 작성한다.

🚫 Bad

html
<div id="container"></div>

🚫 Bad

html
<div id="container"></div>

✅ Good

html
<div id="container"></div>

태그의 시작점과 끝점, 속성과 속성 사이에는 공백을 넣지 않는다.

🚫 Bad

html
<div id="root" class="container"></div>

✅ Good

html
<div id="root" class="container"></div>

태그 속성은 큰따옴표()로 구분한다.

🚫 Bad

html
<div id="container"></div>

✅ Good

html
<div id="container"></div>

인라인 스타일을 가능한 사용하지 않는다.

🚫 Bad

html
<div style="color: green"></div>

✅ Good

html
<div class="myDiv"></div>
+...
+<style>
+	.myDiv {
+		color: green;
+	}
+</style>

script 태그는 body 하단에 두는 것을 권장한다.

🚫 Bad

html
<head>
+	<script>
+		...
+	</script>
+</head>
+<body>
+	...
+</body>

🚫 Bad

html
<head>
+	...
+</head>
+<body>
+	...
+	<script>
+		...
+	</script>
+	...
+</body>

✅ Good

html
<body>
+	...
+</body>
+<script>
+	...
+</script>

Heading 태그에서 h1은 한번만 사용한다.

🚫 Bad

html
<h1>코드 스타일 가이드</h1>
+<p>내용</p>
+<h1>참고자료</h1>
+<p>내용</p>

✅ Good

html
<h1>코드 스타일 가이드</h1>
+<p>내용</p>
+<h2>참고자료</h2>
+<p>내용</p>

Heading은 높은 순서대로, 의미있게 사용해야 하며 내용 콘텐츠에는 사용하지 않는다.

  • 핵심적인 제목은 h1 태그로 한번만
  • h2, h3, h4... 순서로 작성
  • h1은 제목, h2~h6은 분류, 부제목에만 사용할 것

🚫 Bad

html
<h1>코드 스타일 가이드</h1>
+<h3>JavaScript</h3>
+<p>내용</p>
+<h3>HTML5</h3>
+<h6>HTML 태그를 올바르게 사용해야 한다.</h6>
+<p>내용</p>
+<h5>참고자료</h5>
+<p>내용</p>

✅ Good

html
<h1>코드 스타일 가이드</h1>
+<h2>JavaScript</h2>
+<p>내용</p>
+<h2>HTML5</h2>
+<p>HTML 태그를 올바르게 사용해야 한다.</p>
+<p>내용</p>
+<h2>참고자료</h2>
+<p>내용</p>

리스트나 목록을 태그로 표현할 때 개행을 활용한다.

🚫 Bad

html
<ul>
+	<li>사과</li
+	><li>바나나</li
+	><li>포도</li>
+</ul>

✅ Good

html
<ul>
+	<li>사과</li>
+	<li>바나나</li>
+	<li>포도</li>
+</ul>

이벤트 처리 명령은 script 태그로 빼는 것이 좋다.

🚫 Bad

html
<button onclick="{ console.log('hello'); }">Test Button</button>

✅ Good

html
<body>
+	<button onclick="onClickTestButton()">Test Button</button>
+</body>
+
+<script type="text/javascript">
+	function onClickTestButton() {
+		console.log('hello');
+	}
+</script>
`,52),n=[l];function p(k,E,e,d,g,r){return a(),i("div",null,n)}const c=s(h,[["render",p]]);export{o as __pageData,c as default}; diff --git a/assets/language_html5_code-style-guide.md.B9ClEv1d.lean.js b/assets/language_html5_code-style-guide.md.B9ClEv1d.lean.js new file mode 100644 index 00000000..c52f5917 --- /dev/null +++ b/assets/language_html5_code-style-guide.md.B9ClEv1d.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"HTML5 Code Style Guide","description":"","frontmatter":{},"headers":[],"relativePath":"language/html5/code-style-guide.md","filePath":"language/html5/code-style-guide.md"}'),h={name:"language/html5/code-style-guide.md"},l=t("",52),n=[l];function p(k,E,e,d,g,r){return a(),i("div",null,n)}const c=s(h,[["render",p]]);export{o as __pageData,c as default}; diff --git a/assets/language_javascript_alert-prompt-confirm.md.DHWH9Al2.js b/assets/language_javascript_alert-prompt-confirm.md.DHWH9Al2.js new file mode 100644 index 00000000..4de702c7 --- /dev/null +++ b/assets/language_javascript_alert-prompt-confirm.md.DHWH9Al2.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const E=JSON.parse('{"title":"alert, prompt, confirm","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/alert-prompt-confirm.md","filePath":"language/javascript/alert-prompt-confirm.md"}'),t={name:"language/javascript/alert-prompt-confirm.md"},n=e('

alert, prompt, confirm

alertprompt, 그리고 confirm은 웹 브라우저에서 안내 팝업을 띄우는 기능을 한다. 브라우저에 내장된 메시지 창을 띄우는 것이기 때문에 스타일을 사용자 지정할 수는 없으며 모던 웹 디자인 개발 추세에서는 가급적이면 이 세가지 메시지 창보다는 디자인 프레임워크의 다이얼로그(모달)을 활용하는 경우가 많다.

alert는 웹개발자가 특정 변수를 띄우기 위한 디버그용으로도 많이 사용되어왔다. 하지만 이 또한 console이라는 대체 함수가 있으니 참고한다.

alert

alert는 단순 텍스트의 경고 메시지를 띄운다.

javascript
alert('Warning!');

prompt

prompt는 사용자에게 텍스트 응답을 받을 수 있는 대화상자를 띄운다. 사용자가 입력한 응답 메시지는 반환값에 돌아온다. 만약 사용자가 취소하였을 경우 null이 반환될 것이다. 단, 사용자가 단순히 빈 값으로 엔터를 입력하면 null이 아닌 빈 string 타입의 데이터가 들어오니 참고한다. 사용자의 취소는 메시지 창에서 취소를 클릭하였거나 ESC를 눌러서 취소하는 상황이 있다.

javascript
const response = prompt('Enter your name...');\n\nconsole.log(response);

또한 prompt에 두번째 인자값을 주어 기본으로 프롬프트 입력란에 표시할 값을 지정할 수 있다.

javascript
const response = prompt('Enter your name...', 'hello');\n\nconsole.log(response);

confirm

confirm은 사용자에게 특정 메시지와 확인/취소 창을 띄운다. 사용자가 확인을 누르면 true, 취소를 누르면 false가 반환된다.

javascript
const response = confirm('Is that true?');\n\nconsole.log(response); // `true` or `false`
',14),p=[n];function l(o,h,r,c,d,k){return i(),a("div",null,p)}const m=s(t,[["render",l]]);export{E as __pageData,m as default}; diff --git a/assets/language_javascript_alert-prompt-confirm.md.DHWH9Al2.lean.js b/assets/language_javascript_alert-prompt-confirm.md.DHWH9Al2.lean.js new file mode 100644 index 00000000..54689b1b --- /dev/null +++ b/assets/language_javascript_alert-prompt-confirm.md.DHWH9Al2.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const E=JSON.parse('{"title":"alert, prompt, confirm","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/alert-prompt-confirm.md","filePath":"language/javascript/alert-prompt-confirm.md"}'),t={name:"language/javascript/alert-prompt-confirm.md"},n=e("",14),p=[n];function l(o,h,r,c,d,k){return i(),a("div",null,p)}const m=s(t,[["render",l]]);export{E as __pageData,m as default}; diff --git a/assets/language_javascript_clone-object-type-data.md.BohrPaUF.js b/assets/language_javascript_clone-object-type-data.md.BohrPaUF.js new file mode 100644 index 00000000..a89c7597 --- /dev/null +++ b/assets/language_javascript_clone-object-type-data.md.BohrPaUF.js @@ -0,0 +1,26 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const E=JSON.parse('{"title":"객체 타입의 데이터 복제","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/clone-object-type-data.md","filePath":"language/javascript/clone-object-type-data.md"}'),e={name:"language/javascript/clone-object-type-data.md"},t=n(`

객체 타입의 데이터 복제

JavaScript에서 객체(object) 형식의 데이터는 다른 변수에 재할당하여도 속성 값이 동시에 변경될 수 있다.

예를 들어 다음과 같이 objA, objB의 두 변수가 있고, objB 변수에는 objA를 대입한다. 이후 objB 변수의 age 속성 값을 20으로 변경하였다.

javascript
const objA = { name: 'Lee', age: 10 };
+const objB = objA;
+
+objB.age = 20;
+
+console.log(objA.age); // 20
+console.log(objB.age); // 20

이 때 직접적으로 조작하지 않은 objAage 속성 값도 20으로 변경되었음을 확인할 수 있다.

자바스크립트 객체를 다른 변수에 할당할 경우 데이터 그대로를 복제하는 것이 아닌 참조값을 저장한다. 또한 복잡한 단계로 구성된 객체를 복제하기 위해 Object.assign을 사용할 때에도 문제가 발생할 수 있다. 따라서 원본 객체를 유지하면서 객체 값 그대로 새로운 변수에 복제하려면 다른 방법을 사용해야 한다.

아래 방법 중 일부는 객체 내 속성값의 모든 데이터 타입을 지원하지 않을 수 있다. 여기서는 중첩된 데이터 속성까지 모두 복제 가능한 방법만 기술하였다.

structuredClone 사용 (권장)

structuredClone은 브라우저 레벨에서 지원되는 객체 복제 메소드이다. 별도의 서드파티 모듈이나 직접적으로 구현할 필요 없이 단 한줄로 사용할 수 있다.

javascript
const objA = { name: 'Lee', age: 10 };
+
+const objB = structuredClone(objA);
+
+objB.age = 20;
+
+console.log(objA.age); // 10
+console.log(objB.age); // 20

structuredClone은 최신 브라우저에서 지원되며 오래된 브라우저에서는 동작하지 않을 수 있으므로 다음 페이지에서 호환 여부를 확인한다: https://caniuse.com/?search=structuredclone

NodeJS는 18.x 버전 이후부터 정식으로 사용할 수 있다.

lodash cloneDeep 사용

lodash 모듈은 자바스크립트 코드 작성에 많은 도움을 주는 유틸리티 함수의 집합체 모듈이다. 유사 모듈로는 jquery, underscore.js 등이 있다.

javascript
const objects = [{ a: 1 }, { b: 2 }];
+
+const deep = _.cloneDeep(objects);
+
+console.log(deep[0] === objects[0]); // false

여러가지 형식에 대해 객체 복제에 대한 많은 검증이 완료된 메소드이므로 안심하고 사용할 수 있다. 하지만 이 메소드를 사용하기 위해 무거운 lodash 모듈을 사용해야 하는 것이 단점이 될 수 있다.

clone 모듈 사용

node-clone 객체 복제 전용 모듈을 사용하여 객체를 복제할 수 있다. 많은 다운로드 수와 GitHub 스타 수로 신뢰할 수 있고 위 방법들 중에서 퍼포먼스가 가장 좋다고 한다. 하지만 유지보수가 오래전에 끊겼으며 몇가지 이슈도 존재하는 것으로 보인다.

javascript
const clone = require('clone');
+
+const a = { foo: { bar: 'baz' } }; // initial value of a
+const b = clone(a); // clone a -> b
+
+a.foo.bar = 'foo'; // change a
+
+console.log(a); // show a
+console.log(b); // show b
`,19),h=[t];function l(p,k,o,r,d,c){return a(),i("div",null,h)}const y=s(e,[["render",l]]);export{E as __pageData,y as default}; diff --git a/assets/language_javascript_clone-object-type-data.md.BohrPaUF.lean.js b/assets/language_javascript_clone-object-type-data.md.BohrPaUF.lean.js new file mode 100644 index 00000000..a8861fd4 --- /dev/null +++ b/assets/language_javascript_clone-object-type-data.md.BohrPaUF.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const E=JSON.parse('{"title":"객체 타입의 데이터 복제","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/clone-object-type-data.md","filePath":"language/javascript/clone-object-type-data.md"}'),e={name:"language/javascript/clone-object-type-data.md"},t=n("",19),h=[t];function l(p,k,o,r,d,c){return a(),i("div",null,h)}const y=s(e,[["render",l]]);export{E as __pageData,y as default}; diff --git a/assets/language_javascript_code-style-guide.md.6PRH9U8E.js b/assets/language_javascript_code-style-guide.md.6PRH9U8E.js new file mode 100644 index 00000000..1b0fd9a4 --- /dev/null +++ b/assets/language_javascript_code-style-guide.md.6PRH9U8E.js @@ -0,0 +1,150 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"JavaScript Code Style Guide","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/code-style-guide.md","filePath":"language/javascript/code-style-guide.md"}'),t={name:"language/javascript/code-style-guide.md"},h=n(`

JavaScript Code Style Guide

개인적이지만 합당한, 간결하면서도 모던한 코드 작성 스타일 가이드

JavaScript (ES6)

var 대신 constlet을 사용한다.

🚫 Bad

javascript
var test = 10;
+var ADD = 10;
+
+test += ADD;
+console.log(test);

✅ Good

javascript
let test = 10;
+const ADD = 10;
+
+test += ADD;
+console.log(test);

삼항연산자에 function을 사용하지 않는다.

🚫 Bad

javascript
return isTrue ? trueFunction() : falseFunction();

✅ Good

javascript
if (isTrue) {
+	trueFunction();
+} else {
+	falseFunction();
+}

중첩된 삼항연산자를 가급적 지양하고 if문으로 대체한다.

🚫 Bad

javascript
return isTrue ? (isAlsoTrue ? trueFunction() : halfTrueFunction()) : falseFunction();

✅ Good

javascript
if (isTrue && isAlsoTrue) {
+	trueFunction();
+} else if (isTrue) {
+	halfTrueFunction();
+} else {
+	falseFunction();
+}

Arrow Function의 인자가 1개일 때 괄호를 넣지 않는다.

🚫 Bad

javascript
arr.map((v) => {});

✅ Good

javascript
arr.map((v) => {});

리턴만 존재하는 Arrow Function은 한줄로 축약한다.

🚫 Not Good

javascript
const sum = (a, b) => {
+	return a + b;
+};

✅ Good

javascript
const sum = (a, b) => a + b;

많은 단계의 callbackasyncawait으로 대체한다.

🚫 Not Good

javascript
function main() {
+	first().then(() => {
+		second().then(() => {
+			third().then(() => {
+				// ...
+			});
+		});
+	});
+}

✅ Good

javascript
async function main() {
+	await first();
+	await second();
+	await third();
+}

JavaScript

String은 작은따옴표로 표시하는 것이 좋다.

✅ Good

javascript
let str = 'TEST';

✅ Very Good

javascript
let srt = 'TEST';

Object의 길이 체크는 Object.keys를 사용한다.

🚫 Bad

javascript
const obj = { a: 1 };
+
+if (obj.length !== 0) {
+	// ...
+}

✅ Good

javascript
const obj = { a: 1 };
+
+if (Object.keys(obj).length) {
+	// ...
+}

Object의 속성과 값이 동일한 이름일 경우 단축문을 사용한다.

🚫 Bad

javascript
const apple = 'mac';
+
+const obj = {
+	apple: apple
+};

✅ Good

javascript
const apple = 'mac';
+
+const obj = {
+	apple
+};

Object의 단축 속성, 단축되지 않은 속성 순서로 균일하게 배치한다.

🚫 Bad

javascript
const apple = 'mac';
+const microsoft = 'windows';
+const obj = {
+	microsoft,
+	redhat: 'rhel',
+	apple
+};

✅ Good

javascript
const apple = 'mac';
+const microsoft = 'windows';
+const obj = {
+	apple,
+	microsoft,
+	redhat: 'rhel'
+};

변수 할당 시 null 값을 대체할 값을 지정할 때 if문 대신 OR 기호나 nullish (??)를 활용한다.

🚫 Bad

javascript
let value = currentValue;
+
+if (!value) {
+	value = 'Unknown';
+}

✅ Good

javascript
let value = currentValue || 'Unknown';

✅ Good

javascript
let value = currentValue ?? 'Unknown';

for문에서 length를 사용할 때 조건식에는 캐시된 값을 사용한다.

🚫 Bad

조건문이 실행될 때 마다 length 값을 계산한다.

javascript
const arr = [1, 2, 3, 4];
+
+for (let i = 0; i < arr.length; i++) {}

✅ Good

javascript
const arr = [1, 2, 3, 4];
+const arrLength = arr.length;
+
+for (let i = 0; i < arrLength; i++) {}

✅ Good

javascript
const arr = [1, 2, 3, 4];
+
+for (let i = 0, iLength = arr.length; i < iLength; i++) {}

리턴할 때 한번만 사용되는 변수는 가급적 사용하지 않는다.

🚫 Bad

javascript
function sum(a, b) {
+	const test = a + b;
+	return test;
+}

✅ Good

javascript
function sum(a, b) {
+	return a + b;
+}

nullundefinedfalse값으로 대체할 수 있다.

🚫 Bad

javascript
if (value === null) {
+	// ...
+}

✅ Good

javascript
if (!value) {
+	// ...
+}

모호한 부울연산은 괄호로 구분한다.

🚫 Bad

javascript
if (a || (b && c)) {
+	// ...
+}

✅ Good

javascript
if (a || (b && c)) {
+	// ...
+}

switch문에서 default는 하단에 배치한다.

🚫 Bad

javascript
switch (company) {
+	default:
+		break;
+	case 'apple':
+		// apple...
+		break;
+	case 'samsung':
+		// samsung...
+		break;
+}

✅ Good

javascript
switch (company) {
+	case 'apple':
+		// apple...
+		break;
+	case 'samsung':
+		// samsung...
+		break;
+	default:
+		break;
+}

비교 연산자는 자료형을 확인할 수 있도록 동등 연산자(==) 대신 일치 연산자(===)를 사용한다.

숫자 1과 문자열 '1'을 엄격하게 비교하기 위해서는 == 를 사용해서는 안된다.

🚫 Bad

javascript
if (a == 0) {
+	// ...
+}

✅ Good

javascript
if (a === 0) {
+	// ...
+}

Accessorget, set을 활용한 이름으로 지정한다.

🚫 Bad

javascript
const box = new Box();
+
+box.color(); // get current color
+box.color('red'); // set color to red

✅ Good

javascript
const box = new Box();
+
+box.getColor(); // get current color
+box.setColor('red'); // set color to red

긴 메소드 체이닝 함수는 여러줄로 표시하고 인덴트를 활용한다.

🚫 Bad

javascript
box().select().delete().updateStatus().refresh();

✅ Good

javascript
box().select().delete().updateStatus().refresh();

중첩되는 여러줄의 코드는 의미있는 묶음일 경우 한줄 주석으로 작성하지 않는다.

🚫 Bad

javascript
function sum() {
+	// let a = 1;
+	// let b = 2;
+	// return a + b;
+}

✅ Good

javascript
function sum() {
+	/*
+    let a = 1;
+    let b = 2;
+    return a + b;
+    */
+}

추가 작성 또는 수정이 필요한 내용은 작업 주석을 사용한다.

  • TODO: 추후 작성해야하는 기능 또는 리팩토링이 필요한 코드
  • FIXME: 해당 부분에 문제가 있어 추후 수정이 필요한 코드
  • XXX: 구현이 완료되지 않았거나 재작성 필요, 또는 완전하지 않은 코드

🚫 Bad

javascript
function sum() {
+	// The given argument values must be added together
+}

✅ Good

작업 주석의 콜론 뒤에는 공백이 들어가야 한다.

javascript
function sum() {
+	// TODO: The given argument values must be added together
+}

alert, confirm은 가능한 배제하고 로깅은 console을 사용한다.

🚫 Bad

javascript
alert('error!');
+if (confirm('continue?')) {
+}

✅ Good

javascript
console.error('error!');
+console.log('log');
+console.info('info');

Console log에 StringObject를 효율적으로 표시하는 방법

🚫 Bad

javascript
const obj = { a: 1 };
+
+console.log('test:' + obj); // return 'test: [object Object]'

✅ Good

javascript
const obj = { a: 1 };
+
+console.log('test:', obj); // return 'test: { a: 1 }'

Prettier

ifelse가 있을 경우 중괄호를 혼용하거나 한줄로 작성하지 않는다.

🚫 Bad

javascript
if (isTrue) doFunction();
+else {
+	doAnotherFunction();
+}

🚫 Bad

javascript
if (isTrue) doFunction();
+else doAnotherFunction();

✅ Good

javascript
if (isTrue) {
+	doFunction();
+} else {
+}

if문이 종료되는 중괄호는 else 앞에 붙인다.

🚫 Bad

javascript
if (isTrue) {
+} else {
+}

✅ Good

javascript
if (isTrue) {
+} else {
+}

ifelse문의 리턴값이 각각 true/false값일 경우 한줄로 축약한다.

🚫 Bad

javascript
if (isTrue) {
+	return true;
+} else {
+	return false;
+}

✅ Good

javascript
return isTrue;
`,145),p=[h];function l(e,k,r,d,E,g){return a(),i("div",null,p)}const y=s(t,[["render",l]]);export{o as __pageData,y as default}; diff --git a/assets/language_javascript_code-style-guide.md.6PRH9U8E.lean.js b/assets/language_javascript_code-style-guide.md.6PRH9U8E.lean.js new file mode 100644 index 00000000..9a1868c4 --- /dev/null +++ b/assets/language_javascript_code-style-guide.md.6PRH9U8E.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"JavaScript Code Style Guide","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/code-style-guide.md","filePath":"language/javascript/code-style-guide.md"}'),t={name:"language/javascript/code-style-guide.md"},h=n("",145),p=[h];function l(e,k,r,d,E,g){return a(),i("div",null,p)}const y=s(t,[["render",l]]);export{o as __pageData,y as default}; diff --git a/assets/language_javascript_comments.md.BjcGSz1M.js b/assets/language_javascript_comments.md.BjcGSz1M.js new file mode 100644 index 00000000..8053fa22 --- /dev/null +++ b/assets/language_javascript_comments.md.BjcGSz1M.js @@ -0,0 +1,15 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const m=JSON.parse('{"title":"주석 (Comments)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/comments.md","filePath":"language/javascript/comments.md"}'),e={name:"language/javascript/comments.md"},l=n(`

주석 (Comments)

자바스크립트에서의 주석은 대부분의 프로그래밍 언어와 유사한 방식으로 사용할 수 있다. 보통 한줄 주석이나 여러 줄 주석이 있으며 한줄 주석은 // 뒤에, 여러줄 주석은 /**/ 사이에 텍스트를 남긴다.

javascript
// This line is a comment.
+console.log('Hello'); // 'Hello'
+
+/* This line is a comment.
+ *
+ * This part of the code is also not executed.
+ * function Main () {
+ *   console.log('Hello');
+ * }
+ *
+ * Main();
+ *
+ * */

주석과 텍스트 사이에는 공백이 들어가는 것이 좋다.

주석은 실행되는 코드가 아니기 때문에 여러가지 목적으로 활용된다.

  • 알기 쉬운 코드 이해를 위한 설명을 위해
  • 테스트용으로 잠시 특정 코드의 실행을 방지하기 위해

일부 IDE에서는 특수한 포맷으로 작성된 주석을 해석하여 정리하므로 여러 용도로 활용할 수 있다. 예를 들어 다음과 같이 사용한다.

javascript
function Main() {
+	// TODO: Write the Main function
+}

TODO: (공백으로 구분)를 붙여 작성하면 IDE는 할일 목록에 해당 라인의 코드를 바로가기 할 수 있는 리스트를 생성한다. 이외에도 여러가지 포맷들이 있다. (IDE마다 처리 방식이 다를 수 있으며 이 것이 공식적인 것은 아니다.)

  • TODO: 추후 동작에 있어 작성이나 수정이 필요한 부분
  • NOTE: 코드가 동작하는데 유의할 점이나 명확하지 않은 동작에 대한 참고사항
  • FIXME: 해당 코드에 대한 검토 및 재작성이 필요함
  • BUG: 해당 코드에 문제가 있음
  • XXX: 확실하지 않거나, 수정이 필요하거나, 완료되지 않은 부분

일반적으로 자바스크립트 주석은 외부에 노출되기 때문에 중요한 코드는 주석에 포함하지 않는 것이 좋다. (컴파일러에 따라 주석을 알아서 제거해주기도 한다.)

매 코드 줄 마다 주석을 달아 설명하는 것 보다는 이해가 필요하거나 복잡한 로직을 처리하는 부분에 명확하게 작성하는 것이 바람직하다.

`,12),t=[l];function p(h,c,o,k,d,r){return a(),i("div",null,t)}const D=s(e,[["render",p]]);export{m as __pageData,D as default}; diff --git a/assets/language_javascript_comments.md.BjcGSz1M.lean.js b/assets/language_javascript_comments.md.BjcGSz1M.lean.js new file mode 100644 index 00000000..23c03796 --- /dev/null +++ b/assets/language_javascript_comments.md.BjcGSz1M.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const m=JSON.parse('{"title":"주석 (Comments)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/comments.md","filePath":"language/javascript/comments.md"}'),e={name:"language/javascript/comments.md"},l=n("",12),t=[l];function p(h,c,o,k,d,r){return a(),i("div",null,t)}const D=s(e,[["render",p]]);export{m as __pageData,D as default}; diff --git a/assets/language_javascript_console.md.UWC0JsKA.js b/assets/language_javascript_console.md.UWC0JsKA.js new file mode 100644 index 00000000..697f85cf --- /dev/null +++ b/assets/language_javascript_console.md.UWC0JsKA.js @@ -0,0 +1,32 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"console로 로깅 메시지 출력하기","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/console.md","filePath":"language/javascript/console.md"}'),l={name:"language/javascript/console.md"},h=n(`

console로 로깅 메시지 출력하기

console은 자바스크립트에서 제공하는 로깅 객체이며 브라우저에 탑재된 콘솔이나 터미널 출력을 통해 매시지를 출력할 수 있게 한다. 주로 개발 환경에서 결과를 확인하는 테스트 용도로 사용된다. 과거에는 alert가 많이 활용되었으나 보안이나 접근성 문제로 인해 최근엔 console로 대체하여 사용한다.

커맨드라인 명령형 프로그램이 아닌 웹사이트에서는 alert의 문제와 같이 보안을 위해 프로덕션 환경에서 콘솔 로그를 출력하지 않는 것이 좋다. 확인이 끝난 콘솔 메시지는 삭제해주는 것이 좋다.

console의 가장 많이 사용되는 메소드는 log이며 아래와 같이 문자열이나 특정 변수를 콘솔에 출력할 수 있다.

javascript
const hello = 'Hello';
+const number = 12345;
+console.log('Hello'); // 'Hello'
+console.log(hello); // 'Hello'
+console.log(number); // 12345

브라우저 콘솔과 같은 개발자 도구에서는 출력되는 데이터의 자료형에 맞게 색상 등으로 구분하여 출력해준다. 문자열이나 데이터를 조합하고자 하는 경우 여러 인자를 콤마(,)로 넘겨 쉽게 표현할 수 있다. 마찬가지로 데이터형에 맞게 표시된다.

javascript
const hello = 'Hello';
+const number = 12345;
+console.log('Hello', number); // 'Hello' 12345

배열이나 객체를 출력할 수도 있다.

javascript
const arr = [1, 2, 3];
+const obj = {
+	hello: 'world',
+	child: {
+		hello: 'world'
+	}
+};
+
+console.log(arr); // [1, 2, 3]
+console.log(obj); // {hello: 'world', child: {…}}
+console.log(obj.hello); // 'world'

유의할점은 객체의 경우 하위 항목이 모두 표시되지 않을 수 있다. 이럴 때는 console.dir을 사용해서 객체의 모든 항목을 모두 표시할 수 있다. 다만 브라우저 콘솔에서는 동작하지 않으며 아래와 같이 { depth: null }을 옵션 인자로 포함해야 한다.

javascript
const obj = {
+	hello: 'world',
+	child: {
+		hello: 'world'
+	}
+};
+console.dir(obj, { depth: null }); // { hello: 'world', child: { hello: 'world' } };

NodeJSutil.inspect를 사용하여 객체를 모두 표시할 수 있다. 다만 특별한 경우가 아니라면 console.dir을 사용하는 것이 더 간편하다.

javascript
import { inspect } from 'util';
+
+console.log(inspect(obj, { showHidden: false, depth: null, colors: true }));
+// inspect(variable, showHidden, depth, colors)
+console.log(inspect(obj, false, null, true));

한편 console은 경고나 오류, 안내와 같이 목적이 서로 다른 메시지를 출력하고자 하는 경우 아래 각각의 메소드를 통해 표시할 수 있다. 브라우저 콘솔에서는 배경색이나 글자색을 변경함으로서 메시지가 안내인지 에러인지 명확하게 구분하게 해준다.

javascript
console.debug('디버깅용 메시지');
+console.log('로그');
+console.info('정보');
+console.warn('경고');
+console.error('문제 발생');

치환 가능한 문자열을 제공하여 문자열과 변수를 구분하여 표시할 수도 있다.

  • %d: 정수
  • %s: 문자열
  • %f: 부동소수점 수
  • %o: 객체
javascript
const count = 1;
+console.log('count: %d and user: %s', count, 'Lee'); // 'count: 1 and user: Lee'

브라우저 콘솔에 한해 콘솔 메시지에 CSS를 적용하여 원하는 스타일을 사용자지정할 수 있다. 위의 치환 문자열과 같이 %c 문자를 사용한다.

javascript
console.log('normal text & %c styled text', 'font-weight: bold; font-size: 20px');

이외에도 콘솔 내 모든 출력을 지우려면 console.clear를 사용할 수 있다.

javascript
console.clear();
`,22),p=[h];function t(k,e,E,d,o,r){return a(),i("div",null,p)}const y=s(l,[["render",t]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_console.md.UWC0JsKA.lean.js b/assets/language_javascript_console.md.UWC0JsKA.lean.js new file mode 100644 index 00000000..9329a9a6 --- /dev/null +++ b/assets/language_javascript_console.md.UWC0JsKA.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"console로 로깅 메시지 출력하기","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/console.md","filePath":"language/javascript/console.md"}'),l={name:"language/javascript/console.md"},h=n("",22),p=[h];function t(k,e,E,d,o,r){return a(),i("div",null,p)}const y=s(l,[["render",t]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_es11-nullish-coalescing-operator.md.D3a4aDBZ.js b/assets/language_javascript_es11-nullish-coalescing-operator.md.D3a4aDBZ.js new file mode 100644 index 00000000..0338251a --- /dev/null +++ b/assets/language_javascript_es11-nullish-coalescing-operator.md.D3a4aDBZ.js @@ -0,0 +1,9 @@ +import{_ as s,c as i,o as a,a4 as l}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"널 병합 연산자 (Nullish coalescing operator)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es11-nullish-coalescing-operator.md","filePath":"language/javascript/es11-nullish-coalescing-operator.md"}'),e={name:"language/javascript/es11-nullish-coalescing-operator.md"},n=l(`

널 병합 연산자 (Nullish coalescing operator)

널 병합 연산자(??)는 ES2020(ES11) 표준으로 지정된 JavaScript의 연산자이다. 기존의 논리 OR 연산자 (||)와 논리 AND 연산자 (&&)에서 좌측의 값(피연산자)이 falsy한 값일 때 우측의 값을 반환하는 형식이었다면, 널 병합 연산자는 좌측의 값이 오직 null이나 undefined일 때만 우측의 값을 반환한다.

여기서 falsy한 값은 주로 다음과 같은 값들이 있다:

  • false
  • 0
  • ''
  • null
  • undefined
  • NaN

위의 값을 일반적으로 사용하는 연산자를 사용하여보면, falsy한 값에 대해 우측의 값 'FALSE'를 반환할 것이다.

javascript
console.log(0 || 'FALSE'); // 'FALSE'
+console.log(false || 'FALSE'); // 'FALSE'
+console.log('' || 'FALSE'); // 'FALSE'
+console.log(null || 'FALSE'); // 'FALSE'
+console.log(undefined || 'FALSE'); // 'FALSE'

그러나 널 병합 연산자를 사용하면 결과가 달라진다.

javascript
console.log(0 ?? 'FALSE'); // 0
+console.log(false ?? 'FALSE'); // false
+console.log('' ?? 'FALSE'); // ''
+console.log(null ?? 'FALSE'); // 'FALSE'
+console.log(undefined ?? 'FALSE'); // 'FALSE'

피연산자가 nullundefined일 경우에만 'FALSE'가 반환된다.

이러한 특성 때문에 조금 더 명확하게 nullish한 데이터를 잡아낼 수 있다. 01로 리턴되는 값에 대해 조건문의 처리에서 실수가 발생할 가능성도 적어진다.

Reference

`,12),h=[n];function t(k,p,d,r,o,E){return a(),i("div",null,h)}const F=s(e,[["render",t]]);export{g as __pageData,F as default}; diff --git a/assets/language_javascript_es11-nullish-coalescing-operator.md.D3a4aDBZ.lean.js b/assets/language_javascript_es11-nullish-coalescing-operator.md.D3a4aDBZ.lean.js new file mode 100644 index 00000000..5575ceb3 --- /dev/null +++ b/assets/language_javascript_es11-nullish-coalescing-operator.md.D3a4aDBZ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as l}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"널 병합 연산자 (Nullish coalescing operator)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es11-nullish-coalescing-operator.md","filePath":"language/javascript/es11-nullish-coalescing-operator.md"}'),e={name:"language/javascript/es11-nullish-coalescing-operator.md"},n=l("",12),h=[n];function t(k,p,d,r,o,E){return a(),i("div",null,h)}const F=s(e,[["render",t]]);export{g as __pageData,F as default}; diff --git a/assets/language_javascript_es11-optional-chaining.md.nvSRIUCq.js b/assets/language_javascript_es11-optional-chaining.md.nvSRIUCq.js new file mode 100644 index 00000000..a396faeb --- /dev/null +++ b/assets/language_javascript_es11-optional-chaining.md.nvSRIUCq.js @@ -0,0 +1,29 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"옵셔널 체이닝 (Optional Chaining)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es11-optional-chaining.md","filePath":"language/javascript/es11-optional-chaining.md"}'),e={name:"language/javascript/es11-optional-chaining.md"},t=n(`

옵셔널 체이닝 (Optional Chaining)

옵셔널 체이닝은 ECMAScript 2020(ES11) 표준을 지원하는 환경에서 사용할 수 있다.

javascript
const layout = {
+	header: {
+		menu: {
+			active: 0,
+			items: ['home', 'login', 'admin']
+		},
+		height: 100,
+		onMenuClick: function (index) {
+			console.log('Click: ', index);
+		}
+	},
+	body: {
+		heading: 'hello',
+		desc: 'world'
+	},
+	footer: {
+		copyright: 'ⓒ 2022'
+	}
+};

위 코드와 같이 단계적으로 구성된 객체가 주어질 때 헤더의 메뉴 리스트에 접근하기 위해서는 layout.header.menu.items와 같이 하위 속성에 순차적으로 접근하여 값을 얻을 수 있다.

javascript
const menus = layout.header.menu.items;
+console.log(menus); // ['home', 'login', 'admin']

그렇다면 layout 또는 하위 객체 중 하나가 null 또는 undefined일 경우에는 어떻게 될까? JavaScript에서는 다음과 같은 에러 메시지를 출력한다.

shell
TypeError: Cannot read properties of null (reading 'header')

header를 참조하기 전 상위 값이 null이거나 undefined이므로 더 이상 참조할 속성이 없어 발생하는 에러이다. 따라서 일반적으로는 layout에 대한 참조 가능한 값이 없을 때에 대한 예외 처리가 필요하다.

javascript
if (layout && layout.header && layout.header.menu) {
+	console.log(layout.header.menu.items); // ['home', 'login', 'admin']
+}

위 조건문에서는 layout, header, menu까지 모두 유효한 값일 때만 찾으려는 items값을 읽도록 한다. 다만 위 코드에서 보다시피 참조해야 하는 단계가 많아질 경우 if문에 작성해야 하는 코드는 점점 길어질 것이다. 매번 하위 속성 마다 예외 처리를 하기에는 번거로울 수 있다.

이러한 문제를 해결하기 위하여 옵셔널 체이닝이 등장하였다. 옵셔널 체이닝은 ?. 연산자를 사용하며 상위 참조값이 null이거나 undefined인 경우 다음 표현식의 리턴값을 undefined로 리턴시켜준다.

javascript
const layout = null;
+console.log(layout?.header); // undefined
+
+const layout2 = {};
+console.log(layout2?.header?.menu?.items); // undefined

if문을 사용한 코드와 달리 훨씬 더 코드를 간결하게 표현할 수 있다는 장점이 있다.

arrayfunction도 마찬가지로 옵셔널 체이닝을 사용할 수 있다.

javascript
const layout = {};
+console.log(layout?.header?.menu?.items?.[0]); // undefined
+
+console.log(layout?.header?.onMenuClick?.()); // undefined

여기서 유의할 점은 onMenuClick이 함수가 아니면서 null이나 undefined가 아닌 값을 가지고 있는 경우 다음과 같은 호출 에러가 발생할 수 있으므로 여전히 관련된 예외 처리를 해주어야 할 수 있다.

shell
TypeError: layout?.header?.onMenuClick is not a function

Reference

`,19),l=[t];function h(p,k,d,r,o,E){return a(),i("div",null,l)}const y=s(e,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_es11-optional-chaining.md.nvSRIUCq.lean.js b/assets/language_javascript_es11-optional-chaining.md.nvSRIUCq.lean.js new file mode 100644 index 00000000..b624cadb --- /dev/null +++ b/assets/language_javascript_es11-optional-chaining.md.nvSRIUCq.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"옵셔널 체이닝 (Optional Chaining)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es11-optional-chaining.md","filePath":"language/javascript/es11-optional-chaining.md"}'),e={name:"language/javascript/es11-optional-chaining.md"},t=n("",19),l=[t];function h(p,k,d,r,o,E){return a(),i("div",null,l)}const y=s(e,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_es5-use-strict.md.DHPHRI2V.js b/assets/language_javascript_es5-use-strict.md.DHPHRI2V.js new file mode 100644 index 00000000..1c49cf81 --- /dev/null +++ b/assets/language_javascript_es5-use-strict.md.DHPHRI2V.js @@ -0,0 +1,16 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Strict Mode (엄격 모드)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es5-use-strict.md","filePath":"language/javascript/es5-use-strict.md"}'),e={name:"language/javascript/es5-use-strict.md"},n=t(`

Strict Mode (엄격 모드)

엄격 모드(Strict Mode)는 ES2009(ES5) 사양 이상 부터 사용할 수 있는 문법이다.

엄격 모드를 사용하면 문법적 오류에 대해 보통 암묵적으로 진행되었던 실행문을 탐지하여 문법 오류를 발생하도록 한다. 이렇게 함으로서 문법적인 실수를 사전에 방지하여 코드 실행 안정성을 보장하고 향상된 보안 코드를 작성할 수 있다.

사용을 위해서는 자바스크립트 파일 최상단에 다음 내용을 추가해야 한다.

javascript
'use strict'; // << Add this line
+
+function Main() {
+	// ...
+}

이렇게 되면 전체 스크립트 파일에 엄격 모드가 적용된다. 특정 함수에만 한정적으로 적용할 수도 있다.

javascript
function Main() {
+	'use strict';
+	// ...
+	function sub() {
+		// This function is also affected by strict mode
+	}
+}

예를 들어 다음과 같이 선언하지 않은 변수에 값을 할당하게 된다면,

javascript
abc = 'Hello';
+
+console.log(abc); // 'Hello'

자바스크립트는 에러 없이 Hello를 콘솔에 출력한다. 하지만 엄격 모드를 사용하면,

javascript
'use strict';
+abc = 'Hello';
+
+console.log(abc); // Uncaught ReferenceError: abc is not defined

콘솔 로그 실행문에서 ReferenceError 에러가 출력될 것이다.

이 뿐만이 아니라 엄격 모드를 사용하면 여러가지 제한 사항이 적용된다.

  • deletewith를 사용할 수 없다.
  • if, while, for과 같은 블록문 내부에 함수를 선언할 수 없다.
  • 함수에 대해 caller, callee, arguments로 액세스할 수 없다.
  • 함수의 인자의 이름이 두 번 이상 반복 될 수 없다.
  • 미래에 사용 될 예약어(private, public, let, static...)를 변수명으로 지정할 수 없다.
  • 객체에는 같은 속성 이름을 사용할 수 없다. (ES6 이상에서는 허용된다.)

엄격 모드는 모듈이나 클래스 형식의 파일에서는 권장하지 않으며 민감한 코드를 작성하는 특수한 경우가 아닌 이상 일반적으로 사용 할 필요는 없다.

`,15),l=[n];function p(h,c,k,d,o,r){return a(),i("div",null,l)}const y=s(e,[["render",p]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_es5-use-strict.md.DHPHRI2V.lean.js b/assets/language_javascript_es5-use-strict.md.DHPHRI2V.lean.js new file mode 100644 index 00000000..16a07f5f --- /dev/null +++ b/assets/language_javascript_es5-use-strict.md.DHPHRI2V.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Strict Mode (엄격 모드)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es5-use-strict.md","filePath":"language/javascript/es5-use-strict.md"}'),e={name:"language/javascript/es5-use-strict.md"},n=t("",15),l=[n];function p(h,c,k,d,o,r){return a(),i("div",null,l)}const y=s(e,[["render",p]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_es6-symbol-data-type.md.DHG3vAp7.js b/assets/language_javascript_es6-symbol-data-type.md.DHG3vAp7.js new file mode 100644 index 00000000..c8ebad65 --- /dev/null +++ b/assets/language_javascript_es6-symbol-data-type.md.DHG3vAp7.js @@ -0,0 +1,27 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"심볼 (Symbol) 타입 자료형","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es6-symbol-data-type.md","filePath":"language/javascript/es6-symbol-data-type.md"}'),l={name:"language/javascript/es6-symbol-data-type.md"},p=n(`

심볼 (Symbol) 타입 자료형

심볼은 ES2015(ES6) 표준으로 지정된 JavaScript의 자료형이다. 함수형 객체이며 메소드와 프로퍼티를 가지고 있다. 설명(description)이라는 값을 사용하여 변수의 의도를 명확하게 표현할 수 있다. 설명 값은 선택사항이다.

javascript
const symbolA = Symbol();
+const symbolB = Symbol('key');

심볼 객체로 할당된 변수는 고유한 식별값을 가지며 유일성을 보장한다. 따라서 같은 심볼 설명값을 사용한 두 변수를 비교하면 서로 같지 않다는 것을 확인할 수 있다. Symbol의 고유한 값은 외부에서 확인할 수 없다.

javascript
const symbolA = Symbol('key');
+const symbolB = Symbol('key');
+
+console.log(symbolA === symbolB); // false
+console.log(symbolA === 'key'); // false

고유한 특성으로 인해 할당된 변수에 다른 값을 대입할 수 없으며 다른 형으로 변환할 경우 Symbol은 무의미해진다.

심볼의 사용 용도는 주로 외부 모듈에서 선언된 객체를 사용할 때 이미 선언된 속성과 겹치면서 의도하지 않은 값으로 덮어씌우는 문제를 방지하기 위해 사용한다.

javascript
const person = {
+	id: 123,
+	name: 'lee'
+};
+
+person.id = 456;
+
+console.log(person.id); // 456

위 예시에서 person.id = 456을 통해 id 속성의 값 123이 의도치 않게 변경되거나, 다시 외부 스크립트에 의해 선언한 값을 바꾸어버릴 수 있다.

아래와 같이 Symbol을 활용하면 누군가에 의해 수정되지 않는 고유한 속성을 만들어 값을 저장해 둘 수 있다.

javascript
const person = {
+	id: 123,
+	name: 'lee'
+};
+
+const symbolId = Symbol('id');
+person[symbolId] = 456;
+
+console.log(person['id']); // 123
+console.log(person[symbolId]); // 456
+
+person.id = 789;
+
+console.log(person['id']); // 789
+console.log(person[symbolId]); // 456

위 예시에서 person.id = 789;로 값이 변동되어도 Symbol로 정의된 속성값은 변동되지 않는다.

`,12),h=[p];function k(t,e,d,E,r,o){return a(),i("div",null,h)}const c=s(l,[["render",k]]);export{g as __pageData,c as default}; diff --git a/assets/language_javascript_es6-symbol-data-type.md.DHG3vAp7.lean.js b/assets/language_javascript_es6-symbol-data-type.md.DHG3vAp7.lean.js new file mode 100644 index 00000000..b78674df --- /dev/null +++ b/assets/language_javascript_es6-symbol-data-type.md.DHG3vAp7.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"심볼 (Symbol) 타입 자료형","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es6-symbol-data-type.md","filePath":"language/javascript/es6-symbol-data-type.md"}'),l={name:"language/javascript/es6-symbol-data-type.md"},p=n("",12),h=[p];function k(t,e,d,E,r,o){return a(),i("div",null,h)}const c=s(l,[["render",k]]);export{g as __pageData,c as default}; diff --git a/assets/language_javascript_es6-template-literals.md.BAD5AcpC.js b/assets/language_javascript_es6-template-literals.md.BAD5AcpC.js new file mode 100644 index 00000000..618b0178 --- /dev/null +++ b/assets/language_javascript_es6-template-literals.md.BAD5AcpC.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"템플릿 리터럴 (Template literals)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es6-template-literals.md","filePath":"language/javascript/es6-template-literals.md"}'),h={name:"language/javascript/es6-template-literals.md"},n=t(`

템플릿 리터럴 (Template literals)

템플릿 리터럴은 문자열과 문자열 또는 변수 사이에서의 연산에 대해 가독성 있는 코드를 작성할 수 있게 해주는 문법이다. 템플릿 스트링이나 템플릿 문자열 모두 같은 말이지만 ECMA Script 표준이 개정되면서 템플릿 리터럴로 불리게 되었다. 템플릿 리터럴은 ES2015(ES6) 이상의 표준을 사용하는 환경에서만 사용할 수 있다.

기존 방식(String literals)의 단점

기존 문자열 리터럴의 표현은 다음과 같이 이루어졌다.

javascript
const str = 'Hello ' + 12345 + ' World!';
+console.log(str); // Hello 12345 World!

병합할 문자열 또는 변수들 사이에 + 기호를 사용했었다. 다만 이렇게 되면 병합해야 할 요소들이 많아지게 될 때 문제가 발생한다.

javascript
const aNum = 1;
+const bNum = 2;
+const cNum = 3;
+const str = '[ A is: ' + aNum + ', B is: ' + bNum + ', C is: ' + cNum + ' ]';
+console.log(str); // [ A is: 1, B is: 2, C is: 3 ]

하나의 변수 안에 들어가야 하는 조합이 많아질 수록 한 줄이 너무 길어지게 될 뿐만 아니라 보기에도 다소 헷갈릴 수 있다.

템플릿 리터럴 사용하기

위와 같은 가독성 문제를 해결하기 위해 템플릿 리터럴이 등장했다. 사용법은 아주 간단하다. 기존의 따옴표(" 또는 ') 대신 백틱(\`) 기호를 사용하여 시작과 끝을 지정한다.

javascript
const aNum = 1;
+const bNum = 2;
+const cNum = 3;
+const str = \`[ A is: \${aNum}, B is: \${bNum}, C is: \${cNum} ]\`;

+ 기호 대신 달러($)와 중괄호({}) 기호를 사용함으로서 변수를 포함할 수 있으며 이외에는 보이는 그대로 사용하기 때문에 조금 더 코드가 간단히 표현되었다.

템플릿 리터럴의 또 다른 특징은 텍스트 개행을 단순히 엔터로 구분할 수 있다는 것이다. 아래와 같은 문자열 리터럴 코드가 있다고 가정한다면:

javascript
const str = 'Hello\\nWorld\\nLorem\\nIpsum';
+// OR...
+const str = 'Hello' + '\\nWorld' + '\\nLorem' + '\\nIpsum';

템플릿 리터럴로는 다음과 같이 표현할 수 있다:

javascript
const str = \`Hello
+World
+Lorem
+Ipsum\`;

주의할 점은 World, Lorem, Ipsum 앞에 공백이나 탭 기호가 있다면 해당 문자가 같이 포함되므로 위와 같이 좌측에 붙여서 표현해야 할 수 있다.

또한 템플릿 리터럴에서는 아래 코드와 같이 따옴표(' 또는 ")를 별도의 이스케이프 처리 없이도 사용할 수 있다.

javascript
const str = \`'Apple' is "Fruit".\`;
`,19),l=[n];function p(k,e,r,d,g,F){return a(),i("div",null,l)}const y=s(h,[["render",p]]);export{o as __pageData,y as default}; diff --git a/assets/language_javascript_es6-template-literals.md.BAD5AcpC.lean.js b/assets/language_javascript_es6-template-literals.md.BAD5AcpC.lean.js new file mode 100644 index 00000000..148714b9 --- /dev/null +++ b/assets/language_javascript_es6-template-literals.md.BAD5AcpC.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"템플릿 리터럴 (Template literals)","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/es6-template-literals.md","filePath":"language/javascript/es6-template-literals.md"}'),h={name:"language/javascript/es6-template-literals.md"},n=t("",19),l=[n];function p(k,e,r,d,g,F){return a(),i("div",null,l)}const y=s(h,[["render",p]]);export{o as __pageData,y as default}; diff --git a/assets/language_javascript_framework_electron_complete-delete-data-file.md.D7sKRu4r.js b/assets/language_javascript_framework_electron_complete-delete-data-file.md.D7sKRu4r.js new file mode 100644 index 00000000..37b16ed7 --- /dev/null +++ b/assets/language_javascript_framework_electron_complete-delete-data-file.md.D7sKRu4r.js @@ -0,0 +1,13 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Electron 앱 파일 완전 삭제","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/framework/electron/complete-delete-data-file.md","filePath":"language/javascript/framework/electron/complete-delete-data-file.md"}'),n={name:"language/javascript/framework/electron/complete-delete-data-file.md"},l=e(`

Electron 앱 파일 완전 삭제

현재 실행 중인 프로세스를 제거하고 Electron 앱의 데이터 파일과 설정 파일, 설치 파일을 모두 삭제한다.

아래 문서에서 {APP_NAME}{com.company.appname} 부분은 각 앱 이름에 맞게 수정한다.

Windows

Microsoft Store로 설치한 경우 앱 삭제 시 데이터가 삭제된다.

.exe로 설치한 경우 아래 경로 파일을 삭제한다.

shell
%APPDATA%\\Electron
+%APPDATA%\\{APP_NAME}

Linux

shell
# Snapcraft에서 설치했다면:
+$ rm -rf ~/snap/{APP_NAME}
+
+# .deb, .rpm 패키지로 설치했다면:
+$ rm -rf ~/.config/{APP_NAME}

macOS

shell
#!/bin/sh
+killall Electron
+killall Electron
+killall {APP_NAME}
+killall {APP_NAME}
+rm -rf /Applications/{APP_NAME}.app
+rm -rf ~/Library/Application\\ Support/{APP_NAME}
+rm -rf /System/Volumes/Data/Users/$USER/Library/Containers/{com.company.appname}
`,11),t=[l];function p(h,k,r,o,c,d){return i(),a("div",null,t)}const y=s(n,[["render",p]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_framework_electron_complete-delete-data-file.md.D7sKRu4r.lean.js b/assets/language_javascript_framework_electron_complete-delete-data-file.md.D7sKRu4r.lean.js new file mode 100644 index 00000000..ba427904 --- /dev/null +++ b/assets/language_javascript_framework_electron_complete-delete-data-file.md.D7sKRu4r.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Electron 앱 파일 완전 삭제","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/framework/electron/complete-delete-data-file.md","filePath":"language/javascript/framework/electron/complete-delete-data-file.md"}'),n={name:"language/javascript/framework/electron/complete-delete-data-file.md"},l=e("",11),t=[l];function p(h,k,r,o,c,d){return i(),a("div",null,t)}const y=s(n,[["render",p]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_framework_electron_electron-handle-crash.md.CitAc_sG.js b/assets/language_javascript_framework_electron_electron-handle-crash.md.CitAc_sG.js new file mode 100644 index 00000000..903d9455 --- /dev/null +++ b/assets/language_javascript_framework_electron_electron-handle-crash.md.CitAc_sG.js @@ -0,0 +1,7 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Electron 에러로 인한 크래시 처리","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/framework/electron/electron-handle-crash.md","filePath":"language/javascript/framework/electron/electron-handle-crash.md"}'),t={name:"language/javascript/framework/electron/electron-handle-crash.md"},n=e(`

Electron 에러로 인한 크래시 처리

Electron을 사용한 코드에서 에러가 발생하면 발생 위치에 따라 애플리케이션 크래시가 발생한다.

메인 프로세스에서 크래시가 발생하면 시스템 다이얼로그가 표시되며, 렌더러 프로세스(BrowserWindow)에서 크래시가 발생하면 DevTool이 죽으면서 앱이 동작하지 않는다.

메인 프로세스 크래시 처리

javascript
process.on('uncaughtException', (err, origin) => {
+	// 메인 프로세스 크래시 발생 시 처리할 코드
+});

렌더러 프로세스 크래시 처리

이외에도 child-process-gone 이벤트도 있다.

javascript
import { app } from 'electron';
+
+app.on('render-process-gone', (event, webContents, details) => {
+	// 렌더러 프로세스 크래시 발생 시 처리할 코드
+});
`,10),l=[n];function h(r,p,k,o,c,d){return i(),a("div",null,l)}const y=s(t,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_framework_electron_electron-handle-crash.md.CitAc_sG.lean.js b/assets/language_javascript_framework_electron_electron-handle-crash.md.CitAc_sG.lean.js new file mode 100644 index 00000000..c01543eb --- /dev/null +++ b/assets/language_javascript_framework_electron_electron-handle-crash.md.CitAc_sG.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Electron 에러로 인한 크래시 처리","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/framework/electron/electron-handle-crash.md","filePath":"language/javascript/framework/electron/electron-handle-crash.md"}'),t={name:"language/javascript/framework/electron/electron-handle-crash.md"},n=e("",10),l=[n];function h(r,p,k,o,c,d){return i(),a("div",null,l)}const y=s(t,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_framework_electron_unpack-asar-file-format.md.SedKHK-z.js b/assets/language_javascript_framework_electron_unpack-asar-file-format.md.SedKHK-z.js new file mode 100644 index 00000000..0648cf8c --- /dev/null +++ b/assets/language_javascript_framework_electron_unpack-asar-file-format.md.SedKHK-z.js @@ -0,0 +1,5 @@ +import{_ as a,c as s,o as e,a4 as i}from"./chunks/framework.4aTu-Nia.js";const u=JSON.parse('{"title":"asar 파일 언팩","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/framework/electron/unpack-asar-file-format.md","filePath":"language/javascript/framework/electron/unpack-asar-file-format.md"}'),t={name:"language/javascript/framework/electron/unpack-asar-file-format.md"},n=i(`

asar 파일 언팩

Electron 패키지를 빌드하면 빌드 설정에 따라 .asar 확장자로 압축되어 패키징되는 경우가 있다.

이 파일은 electron-builder 기준, 패키지가 만들어지는 대상 디렉토리에서 win-unpacked\\resources에 위치해있다. 프로덕션용 패키지 파일(.exe 등)을 설치하면 프로그램이 설치된 디렉토리의 resources 디렉토리에 존재한다.

이 파일은 실제로 암호화 보다는 패키지 압축 파일에 더 가깝다. 이 파일을 열어보면 빌드된 파일을 모두 확인해 볼 수 있다.

.asar 파일을 풀어보려면 asar 모듈의 extract 명령어를 사용하여 간단히 풀어볼 수 있다.

shell
$ npx asar extract app.asar asarResources

npx는 프로젝트 디렉토리가 아닌 환경에서 설치 과정 없이 특정 모듈의 명령어를 실행해주는 명령어이다. extract의 처음 인자값은 asar 파일의 경로, 두번째 인자값은 추출할 디렉토리 경로(없다면 생성)를 입력한다.

위 명령어를 실행하면 현재 경로에 asarResources 디렉토리가 만들어지고 해당 디렉토리 안에 압축 해제된 파일들이 만들어진다.

electron-builder에서 asar 파일 압축 없이 패키징을 하기 위해서는 package.json 파일에서 빌드 옵션을 조정해주면 된다.

json
{
+	"build": {
+		"asar": false
+	}
+}
`,10),r=[n];function o(p,c,l,d,h,k){return e(),s("div",null,r)}const E=a(t,[["render",o]]);export{u as __pageData,E as default}; diff --git a/assets/language_javascript_framework_electron_unpack-asar-file-format.md.SedKHK-z.lean.js b/assets/language_javascript_framework_electron_unpack-asar-file-format.md.SedKHK-z.lean.js new file mode 100644 index 00000000..eddeb608 --- /dev/null +++ b/assets/language_javascript_framework_electron_unpack-asar-file-format.md.SedKHK-z.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as e,a4 as i}from"./chunks/framework.4aTu-Nia.js";const u=JSON.parse('{"title":"asar 파일 언팩","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/framework/electron/unpack-asar-file-format.md","filePath":"language/javascript/framework/electron/unpack-asar-file-format.md"}'),t={name:"language/javascript/framework/electron/unpack-asar-file-format.md"},n=i("",10),r=[n];function o(p,c,l,d,h,k){return e(),s("div",null,r)}const E=a(t,[["render",o]]);export{u as __pageData,E as default}; diff --git a/assets/language_javascript_library_eslint_typescript-eslint-no-inferrable-types.md.YuQEY5GU.js b/assets/language_javascript_library_eslint_typescript-eslint-no-inferrable-types.md.YuQEY5GU.js new file mode 100644 index 00000000..b2e9fd30 --- /dev/null +++ b/assets/language_javascript_library_eslint_typescript-eslint-no-inferrable-types.md.YuQEY5GU.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"@typescript-eslint/no-inferrable-types","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/library/eslint/typescript-eslint-no-inferrable-types.md","filePath":"language/javascript/library/eslint/typescript-eslint-no-inferrable-types.md"}'),e={name:"language/javascript/library/eslint/typescript-eslint-no-inferrable-types.md"},n=t(`

@typescript-eslint/no-inferrable-types

shell
Type number trivially inferred from a number literal, remove type annotation  @typescript-eslint/no-inferrable-types

파라미터 특정 인자값에 기본값을 지정한 경우 TypeScript는 자동 추론에 의해 타입을 알아서 판단하므로 타입을 별도로 선언하지 않아도 된다.

위 에러 메시지는 eslint에서 표시되는 메시지로 간단히 해당 규칙(@typescript-eslint/no-inferrable-types)을 비활성화하여 끌 수 있기도 하다.

typescript
export function getUserAccount(isGoogleAccount: boolean = true): boolean {
+	if (isGoogleAccount) {
+		// code here
+	}
+	return true;
+}

다음 코드에서 isGoogleAccount : boolean은 기본값으로 지정된 true로 인해 boolean 타입임을 추론할 수 있으므로 boolean을 별도로 선언할 필요가 없다.

수정된 코드는 다음과 같다.

typescript
export function getUserAccount(isGoogleAccount = true): boolean {
+	if (isGoogleAccount) {
+		// code here
+	}
+	return true;
+}
`,8),p=[n];function l(h,k,r,o,c,d){return a(),i("div",null,p)}const E=s(e,[["render",l]]);export{g as __pageData,E as default}; diff --git a/assets/language_javascript_library_eslint_typescript-eslint-no-inferrable-types.md.YuQEY5GU.lean.js b/assets/language_javascript_library_eslint_typescript-eslint-no-inferrable-types.md.YuQEY5GU.lean.js new file mode 100644 index 00000000..6d06c041 --- /dev/null +++ b/assets/language_javascript_library_eslint_typescript-eslint-no-inferrable-types.md.YuQEY5GU.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"@typescript-eslint/no-inferrable-types","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/library/eslint/typescript-eslint-no-inferrable-types.md","filePath":"language/javascript/library/eslint/typescript-eslint-no-inferrable-types.md"}'),e={name:"language/javascript/library/eslint/typescript-eslint-no-inferrable-types.md"},n=t("",8),p=[n];function l(h,k,r,o,c,d){return a(),i("div",null,p)}const E=s(e,[["render",l]]);export{g as __pageData,E as default}; diff --git a/assets/language_javascript_library_using-clasp.md.xZBJScD1.js b/assets/language_javascript_library_using-clasp.md.xZBJScD1.js new file mode 100644 index 00000000..c0feb352 --- /dev/null +++ b/assets/language_javascript_library_using-clasp.md.xZBJScD1.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a4 as e}from"./chunks/framework.4aTu-Nia.js";const F=JSON.parse('{"title":"Clasp","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/library/using-clasp.md","filePath":"language/javascript/library/using-clasp.md"}'),p={name:"language/javascript/library/using-clasp.md"},l=e(`

Clasp

claspGoogle Apps Script 기반 프로젝트를 로컬에서 작업하고 서비스 중인 파일로 push하여 업데이트할 수 있도록 도와주는 라이브러리이다. clone 스크립트가 탑재된 새로운 문서를 생성할 수도 있다.

설치

claspNodeJS 런타임에서 구동되는 CLI 명령어 도구이다. 따라서 npm 패키지를 통해 아래와 같이 설치할 수 있다.

shell
$ npm install -g @google/clasp

clasp의 모든 구성을 제대로 사용하려면 다음 페이지에 Google 계정으로 로그인한 후 Google Apps Script API의 사용 설정을 '사용'으로 변경해야 한다: https://script.google.com/home/usersettings

이후 다음 명령어를 실행하여 계정 정보를 로컬 데스크톱에 저장한다. 앞으로 사용하는 명령어는 구글 계정 액세스를 요구할 수 있다.

shell
$ clasp login

사용법

clasp를 활용하여 Apps Script 프로젝트를 새로 생성하려면 다음 명령어를 사용한다.

shell
$ clasp create
+
+? Create which script? sheets
+Created new Google Sheet: https://drive.google.com/open?id=1yEnsWrCybp-KKKMHX-#########################
+Created new Google Sheets Add-on script: https://script.google.com/d/1U3UDIRjB_##############################################/edit
+Warning: files in subfolder are not accounted for unless you set a '/home/user/project/.claspignore' file.
+Cloned 1 file.
+└─ /home/user/project/appsscript.json

문서 형식(문서, 스프레드시트...)에 대한 URL과 스크립트 프로젝트의 URL 두개가 생성된다. 문서 파일은 Google 드라이브의 최상위 경로에 생성되어 있을 것이다.

이렇게하면 프로젝트 루트에 .clasp.json 파일이 생성된다. 해당 파일을 열어보면 현재 가리키고 있는 Google Script ID를 확인할 수 있다.

이후 로컬에서 작업한 내역을 문서 스크립트로 업로드하여 갱신하려는 경우 다음 명령어를 사용한다.

shell
$ clasp push

코드를 push할 때 주의해야 할 것이 있다. 프로젝트 내에 Apps Script와는 무관한 파일들이 존재하면 이 파일들도 같이 업로드될 수 있다. (예: node_modules, package.json...)

업로드한다고 스크립트 자체에 영향을 미치지는 않지만 가능한 프로젝트와 연관있는 파일만 업로드하는 것이 좋기 때문에 업로드하지 않아도 되는 파일은 .claspignore 파일을 생성하여 무시할 수 있다.

.claspignore.gitignore와 유사하다. 아래는 node_modulespackage.json 파일을 업로드하지 않는 규칙의 예시이다.

txt
package.json
+node_modules/**
+node_modules/**/.*/**
+node_modules/**/.*

코드를 push한 후 문서 파일이나 스크립트 에디터가 웹페이지에 열려있다면 새로고침으로 갱신이 필요할 수 있다.

`,21),t=[l];function n(h,o,k,r,d,c){return a(),i("div",null,t)}const C=s(p,[["render",n]]);export{F as __pageData,C as default}; diff --git a/assets/language_javascript_library_using-clasp.md.xZBJScD1.lean.js b/assets/language_javascript_library_using-clasp.md.xZBJScD1.lean.js new file mode 100644 index 00000000..39989ca6 --- /dev/null +++ b/assets/language_javascript_library_using-clasp.md.xZBJScD1.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as e}from"./chunks/framework.4aTu-Nia.js";const F=JSON.parse('{"title":"Clasp","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/library/using-clasp.md","filePath":"language/javascript/library/using-clasp.md"}'),p={name:"language/javascript/library/using-clasp.md"},l=e("",21),t=[l];function n(h,o,k,r,d,c){return a(),i("div",null,t)}const C=s(p,[["render",n]]);export{F as __pageData,C as default}; diff --git a/assets/language_javascript_method-chaining.md.Dn_lKFgS.js b/assets/language_javascript_method-chaining.md.Dn_lKFgS.js new file mode 100644 index 00000000..3278c178 --- /dev/null +++ b/assets/language_javascript_method-chaining.md.Dn_lKFgS.js @@ -0,0 +1,39 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"메소드 체이닝","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/method-chaining.md","filePath":"language/javascript/method-chaining.md"}'),h={name:"language/javascript/method-chaining.md"},t=n(`

메소드 체이닝

메소드 체이닝(Method Chaining) 은 코드를 작성할 때 클래스 내의 메소드를 연속적으로 사용하기 위해 다음 메소드를 이어서 작성하는 프로그래밍 기법이다. 일반적으로 배열의 메소드나 jQuery 라이브러리에서 주로 사용하는 방법이기도 하다.

아래 Company라는 클래스가 있다고 가정한다.

javascript
class Company {
+	constructor() {
+		this.uniqueId = 0;
+		this.name = '';
+		this.country = '';
+	}
+
+	setName(name) {
+		this.name = name;
+
+		return this;
+	}
+
+	setUniqueId(id) {
+		this.uniqueId = id;
+
+		return this;
+	}
+
+	setCountry(country) {
+		this.country = country;
+
+		return this;
+	}
+}

자바스크립트에서는 특정 클래스의 메소드를 사용할 때 다음과 같이 사용한다.

javascript
const company = new Company();
+
+company.setName('Samsung');
+company.setUniqueId(12345678);
+company.setCountry('South Korea');

위와 같이 한번에 사용해야 하는 메소드가 많으면 많을수록 코드가 복잡해 보일 수 있다. 메소드 체이닝을 활용한다면 다음과 같이 간략하게 코드를 작성할 수 있다.

javascript
const company = new Company();
+
+company.setName('Samsung').setUniqueId(12345678).setCountry('South Korea');

또는 다음과 같이 개행으로 구분하여 사용해도 된다.

javascript
const company = new Company();
+
+company.setName('Samsung').setUniqueId(12345678).setCountry('South Korea');

다만 메소드 체이닝을 사용하기 위한 조건이 있다. 메소드 체이닝에 사용되는 메소드는 모두 this로 리턴되어야 한다.

javascript
class Company {
+	setCountry(country) {
+		this.country = country;
+
+		return this; // <---- Add this
+	}
+}

이렇게 해야만 이전 메소드에서 리턴된 객체로 다시 메소드를 호출할 수 있다.

메소드 체이닝은 코드의 복잡성에 따라서 간결해보이면서도 코드 해석에 대해 혼동을 줄 수 있기 때문에 상황에 따라서 사용하는 것이 좋다.

또한 매번 자기 자신의 객체를 리턴하기 때문에 성능면에서는 좋지 않을 수 있다.

`,15),p=[t];function k(l,e,E,r,d,g){return a(),i("div",null,p)}const F=s(h,[["render",k]]);export{c as __pageData,F as default}; diff --git a/assets/language_javascript_method-chaining.md.Dn_lKFgS.lean.js b/assets/language_javascript_method-chaining.md.Dn_lKFgS.lean.js new file mode 100644 index 00000000..e1943bec --- /dev/null +++ b/assets/language_javascript_method-chaining.md.Dn_lKFgS.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"메소드 체이닝","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/method-chaining.md","filePath":"language/javascript/method-chaining.md"}'),h={name:"language/javascript/method-chaining.md"},t=n("",15),p=[t];function k(l,e,E,r,d,g){return a(),i("div",null,p)}const F=s(h,[["render",k]]);export{c as __pageData,F as default}; diff --git a/assets/language_javascript_switch.md.DR7-5tO-.js b/assets/language_javascript_switch.md.DR7-5tO-.js new file mode 100644 index 00000000..147f8a28 --- /dev/null +++ b/assets/language_javascript_switch.md.DR7-5tO-.js @@ -0,0 +1,90 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const y=JSON.parse('{"title":"switch문","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/switch.md","filePath":"language/javascript/switch.md"}'),h={name:"language/javascript/switch.md"},t=n(`

switch

switch문은 특정 문자열이나 표현식에 대해 여러 상황을 분기해야 하는 경우에 사용하는 문법이다. if-else문을 길게 작성하는 대신에 switch문으로 코드를 간략하게 표현할 수 있다.

아래 if-else문을 사용한 예시가 있다:

javascript
function getResponse(str) {
+	let response;
+
+	if (str === 'hello') {
+		response = 'hello!';
+	} else if (str === 'hi') {
+		response = 'hi!';
+	} else if (str === 'bye') {
+		response = 'bye!';
+	} else if (str === 'goodbye') {
+		response = 'goodbye!';
+	} else if (str === 'seeya') {
+		response = 'seeya!';
+	}
+
+	return response;
+}

여러 상황에 대해 처리해야 하는 분기가 많아질 때가 있는데 위 코드에서는 비록 한줄 실행문이지만 더 많은 상황이나 긴 실행문이 될 경우 가독성이 저하될 수 있다. 따라서 아래와 같이 switch문을 통해 코드를 간소화할 수 있다.

javascript
function getResponse(str) {
+	let response;
+
+	switch (str) {
+		case 'hello':
+			response = 'hello!';
+			break;
+		case 'hi':
+			response = 'hi!';
+			break;
+		case 'bye':
+			response = 'bye!';
+			break;
+		case 'goodbye':
+			response = 'goodbye!';
+			break;
+		case 'seeya':
+			response = 'seeya!';
+			break;
+		default:
+			response = 'error!';
+			break;
+	}
+
+	return response;
+}

switch문에는 casedefault, break이 거의 항상 같이 사용된다. 각각의 역할은 다음과 같다:

  • case: 표현식의 결과에 대해 발생할 수 있는 값
  • default: 표현식의 결과에서 예상하지 못한 값이거나 명시된 case에 해당하지 않는 모든 값
  • break: 해당 분기에 대해 switch문을 종료

if-else문과 같이 case문의 조회는 위에서부터 순차적으로 이루어지며 조건에 대한 실행이 완료(break)되었음이 확인되면 switch문을 종료한다.

여기서 주의해야 할 점은 defaultbreak인데, defaultelse와 유사한 기능을 하여 명시하지 않아도 되지만 코드 이해를 위해 또는 예외상황에 대한 실행문을 작성할 수 있도록 명시해주는 것이 좋다. default는 맨 위나 아래에 위치하는 것이 좋으며 코드 분석 툴은 맨 아래에 배치하는 것을 권장하고 있다.

break문 대신에 return을 사용하여 해당 함수에서 원하는 값을 즉시 반환할 수 있다. 이 경우 switch문 아래 코드 및 다른 case문의 코드는 실행되지 않는다.

break문을 case의 실행문 마지막에 기입하지 않으면 다음 case문의 실행문도 같이 실행된다. 즉 5개의 case가 있고 모두 break문이 없고 조건식이 맨 처음 case에 해당하는 경우 맨 처음 실행문을 포함하여 아래 4개의 실행문이 모두 실행된다.

javascript
function getResponse(str) {
+	let response;
+
+	switch (str) {
+		case '1':
+			response += 'a';
+		case '2':
+			response += 'b';
+		case '3':
+			response += 'c';
+		case '4':
+			response += 'd';
+			break;
+		case '5':
+			response += 'e';
+			break;
+		default:
+			response += 'f';
+			break;
+	}
+
+	return response;
+}

위 코드에서 str의 값이 1인 경우 결과는 abcd, 2인 경우 결과는 bcd가 된다. str의 값이 case문의 값과 달라도 break의 여부에 따라 다른 코드도 실행될 수 있으므로 사용 시 유의해야만 한다.

javascript
function isItTrue() {
+	function isTrue() {
+		return true;
+	}
+
+	function isAlsoTrue() {
+		return true;
+	}
+
+	function isFalse() {
+		return false;
+	}
+
+	switch (true) {
+		case isTrue():
+			console.log('true!');
+			break;
+		case isAlsoTrue():
+			console.log('also true!');
+			break;
+		case isFalse():
+			console.log('false!');
+			break;
+		default:
+			break;
+	}
+}

또한 위 코드와 같이 case문에 함수 실행문을 사용할 수 있다. 반환된 값이 switch문의 표현식과 같은 true인 경우 해당 분기에 대한 코드를 실행한다. 위 예시에서는 isTrue의 결과 true에 먼저 해당되었으므로 콘솔 값에는 true!가 출력되고 실행을 종료한다. isAlsoTrue();의 실행문은 isTrue();break문에 의해 실행되지 않는다.

`,16),k=[t];function p(l,e,E,d,r,c){return a(),i("div",null,k)}const F=s(h,[["render",p]]);export{y as __pageData,F as default}; diff --git a/assets/language_javascript_switch.md.DR7-5tO-.lean.js b/assets/language_javascript_switch.md.DR7-5tO-.lean.js new file mode 100644 index 00000000..24f55af3 --- /dev/null +++ b/assets/language_javascript_switch.md.DR7-5tO-.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const y=JSON.parse('{"title":"switch문","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/switch.md","filePath":"language/javascript/switch.md"}'),h={name:"language/javascript/switch.md"},t=n("",16),k=[t];function p(l,e,E,d,r,c){return a(),i("div",null,k)}const F=s(h,[["render",p]]);export{y as __pageData,F as default}; diff --git a/assets/language_javascript_ternary-conditional-operator.md.Br-QFQJa.js b/assets/language_javascript_ternary-conditional-operator.md.Br-QFQJa.js new file mode 100644 index 00000000..658ab0fa --- /dev/null +++ b/assets/language_javascript_ternary-conditional-operator.md.Br-QFQJa.js @@ -0,0 +1,4 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"삼항연산자","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/ternary-conditional-operator.md","filePath":"language/javascript/ternary-conditional-operator.md"}'),n={name:"language/javascript/ternary-conditional-operator.md"},p=t(`

삼항연산자

조건부 삼항연산자(Ternary Conditional Operator)라고도 부른다. if문을 간략히 작성하기 위해 사용되며 if문과의 성능 차이가 있을 수는 있지만 성능폭이 크지는 않다.

아래와 같은 if문이 주어진 경우,

javascript
if (isExists) {
+	return 'Exist';
+}
+return 'Not Exist';

삼항연산자로 바꾼다면 아래와 같이 작성할 수 있다.

javascript
return isExists ? 'Exist' : 'Not Exist';

? 앞에는 조건문을 넣고, : 기호로 참일 때와 거짓일 때를 구분한다. 조건문 또는 참이나 거짓에 복잡한 구문이 들어가는 경우 괄호를 사용할 수 있다.

참이나 거짓에 삼항연산자를 다시 한번 사용하여 중첩 삼항연산자를 만들 수도 있다.

javascript
return isExists ? 'Exist' : showError ? 'ERR' : null;

다만 위와 같은 중첩 삼항연산자는 코드 가독성에 호불호가 있으므로 가급적 사용하지 않는 것이 좋다. 필요한 경우 아래와 같은 방법으로 가독성을 높일 수 있다.

javascript
return isExists ? 'Exist' : showError ? 'ERR' : null;
javascript
return isExists ? 'Exist' : showError ? 'ERR' : null;

삼항 연산자의 참과 거짓에는 리턴값 외에 함수를 사용하지 않는 것이 좋다. 분기가 많아질 경우는 if문을 쓰는 것이 더욱 바람직 할 수 있다.

`,13),h=[p];function e(l,k,r,d,o,c){return a(),i("div",null,h)}const y=s(n,[["render",e]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_ternary-conditional-operator.md.Br-QFQJa.lean.js b/assets/language_javascript_ternary-conditional-operator.md.Br-QFQJa.lean.js new file mode 100644 index 00000000..4f7c9131 --- /dev/null +++ b/assets/language_javascript_ternary-conditional-operator.md.Br-QFQJa.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"삼항연산자","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/ternary-conditional-operator.md","filePath":"language/javascript/ternary-conditional-operator.md"}'),n={name:"language/javascript/ternary-conditional-operator.md"},p=t("",13),h=[p];function e(l,k,r,d,o,c){return a(),i("div",null,h)}const y=s(n,[["render",e]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_variable-type-check.md.CgMSVv0Q.js b/assets/language_javascript_variable-type-check.md.CgMSVv0Q.js new file mode 100644 index 00000000..93732dbc --- /dev/null +++ b/assets/language_javascript_variable-type-check.md.CgMSVv0Q.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"JavaScript 데이터 타입 검증","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/variable-type-check.md","filePath":"language/javascript/variable-type-check.md"}'),e={name:"language/javascript/variable-type-check.md"},n=t(`

JavaScript 데이터 타입 검증

JavaScript에서는 다양한 방법으로 대상 값에 대한 데이터 타입을 확인할 수 있다.

동치 비교 (==, ===)

먼저 아래와 같이 일반적인 동치 비교를 사용하면 특정 값(좌측)이 주어진 조건값(우측)과 일치하는지 확인할 수 있다.

javascript
const temp = 1;
+
+console.log(temp == 1); // return true
+console.log(temp == '1'); // return true

다만 위와 같이 == 기호로 값을 비교하게 되면 값은 일치하더라도 데이터형이 다를 때도 같은 값으로 판단하게 되여 결론적으로 느슨한 비교를 하게 된다.

이럴 때는 삼중 등호(===)를 사용하여 데이터형에 대해서도 엄격한 비교를 할 수 있다.

javascript
const temp = 1;
+
+console.log(temp === 1); // return true
+console.log(temp === '1'); // return false

위 식에서는 tempnumber형 변수이고, 값이 1일 때만 true를 리턴한다.

typeof 연산자

typeof 연산자는 특정 변수의 데이터형을 리턴한다. 다만 연산자이므로 함수 실행식이 아닌 피연산자 앞에 위치해야 한다.

javascript
const temp = 1;
+
+console.log(typeof temp); // return 'number'
+console.log(typeof temp === 'number'); // return true

리턴값은 string으로 표현되며 값은 주로 number, string, function, boolean, object 등이 있다.

instanceof 연산자

instanceof는 위의 typeof와 유사하지만 특정 객체가 어떤 클래스에 속하는지 확인하기 위해 사용하는 연산자이다. 마찬가지로 피연산자(클래스) 앞에 위치한다.

javascript
const company = new Company();
+
+console.log(company instanceof Company); // return true
+console.log([1, 2, 3, 4, 5] instanceof Array); // return true

주의할 점은 피연산자 값은 constructor가 되어야 한다. 전역 객체도 사용할 수 있다.

`,18),p=[n];function h(l,k,r,d,o,c){return a(),i("div",null,p)}const y=s(e,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/language_javascript_variable-type-check.md.CgMSVv0Q.lean.js b/assets/language_javascript_variable-type-check.md.CgMSVv0Q.lean.js new file mode 100644 index 00000000..d71230b7 --- /dev/null +++ b/assets/language_javascript_variable-type-check.md.CgMSVv0Q.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"JavaScript 데이터 타입 검증","description":"","frontmatter":{},"headers":[],"relativePath":"language/javascript/variable-type-check.md","filePath":"language/javascript/variable-type-check.md"}'),e={name:"language/javascript/variable-type-check.md"},n=t("",18),p=[n];function h(l,k,r,d,o,c){return a(),i("div",null,p)}const y=s(e,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/language_typescript_positive-number-type.md.B5PjuLfw.js b/assets/language_typescript_positive-number-type.md.B5PjuLfw.js new file mode 100644 index 00000000..a3b053be --- /dev/null +++ b/assets/language_typescript_positive-number-type.md.B5PjuLfw.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const y=JSON.parse('{"title":"TypeScript Positive Number Type","description":"","frontmatter":{},"headers":[],"relativePath":"language/typescript/positive-number-type.md","filePath":"language/typescript/positive-number-type.md"}'),e={name:"language/typescript/positive-number-type.md"},p=t('

TypeScript Positive Number Type

타입스크립트에서 number 데이터 타입은 모든 숫자를 허용한다. 만약 -1, -2와 같은 값이 아닌 양수만 허용하고 싶은 경우는 별도의 타입을 선언해주어야 한다.

자세한 내용은 아래 Stackoverflow 링크를 참고한다. https://stackoverflow.com/questions/21224922/is-there-a-way-to-represent-a-non-negative-integer-in-typescript-so-that-the-com

typescript
declare type PositiveNumber<N extends number> = number extends N\n	? N\n	: `${N}` extends `-${string}`\n	? never\n	: N;

위 링크에 설명된대로 PositiveNumber라는 데이터 타입을 declare를 사용하여 선언한다. number 데이터형의 속성을 상속받은 후 템플릿 리터럴을 사용하여 제공받은 값이 음수값인지 확인된다면 never형으로 인식되게 한다.

위와 같이 선언하였다면 PositiveNumber<N>과 같이 사용할 수 있다. 주의할 점은 선언된 N 타입 변수는 number형으로 확장되어야 한다.

typescript
function sum<N extends number>(number1: PositiveNumber<N>, number2: PositiveNumber<N>): number {\n	return number1 + number2;\n}

이제 아래 코드로 타입 체크가 정상적으로 이루어지는지 확인해본다.

typescript
sum(-1, -2);

위 코드를 사용했을 경우 아래와 같은 오류가 발생해야 한다.

shell
TS2345: Argument of type 'number' is not assignable to parameter of type 'never'.
',11),n=[p];function h(k,l,r,d,g,o){return a(),i("div",null,n)}const c=s(e,[["render",h]]);export{y as __pageData,c as default}; diff --git a/assets/language_typescript_positive-number-type.md.B5PjuLfw.lean.js b/assets/language_typescript_positive-number-type.md.B5PjuLfw.lean.js new file mode 100644 index 00000000..295f9623 --- /dev/null +++ b/assets/language_typescript_positive-number-type.md.B5PjuLfw.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const y=JSON.parse('{"title":"TypeScript Positive Number Type","description":"","frontmatter":{},"headers":[],"relativePath":"language/typescript/positive-number-type.md","filePath":"language/typescript/positive-number-type.md"}'),e={name:"language/typescript/positive-number-type.md"},p=t("",11),n=[p];function h(k,l,r,d,g,o){return a(),i("div",null,n)}const c=s(e,[["render",h]]);export{y as __pageData,c as default}; diff --git a/assets/misc_scripts_bash-git-pull-all-for-current-directory.md.BIjGWw29.js b/assets/misc_scripts_bash-git-pull-all-for-current-directory.md.BIjGWw29.js new file mode 100644 index 00000000..cc28525b --- /dev/null +++ b/assets/misc_scripts_bash-git-pull-all-for-current-directory.md.BIjGWw29.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const F=JSON.parse('{"title":"현재 디렉토리의 모든 하위 디렉토리에 대해 git pull을 수행","description":"","frontmatter":{},"headers":[],"relativePath":"misc/scripts/bash-git-pull-all-for-current-directory.md","filePath":"misc/scripts/bash-git-pull-all-for-current-directory.md"}'),l={name:"misc/scripts/bash-git-pull-all-for-current-directory.md"},t=n(`

현재 디렉토리의 모든 하위 디렉토리에 대해 git pull을 수행

아래 스크립트는 현재 디렉토리에 있는 모든 하위 디렉토리 중 .git폴더가 존재하는 디렉토리에 대해 각각 git pull명령을 수행하여 리포지토리를 한번에 업데이트하도록 돕는 bash 스크립트이다.

shell
#!/bin/bash
+
+dir=\`pwd\`
+
+for d in $(find $dir -type d)
+do
+    if [ -d "$d/.git" ]; then
+        echo "git pull: $d"
+        cd $d
+        git pull
+        cd $dir
+    fi
+done
`,3),p=[t];function h(e,k,r,d,c,o){return a(),i("div",null,p)}const E=s(l,[["render",h]]);export{F as __pageData,E as default}; diff --git a/assets/misc_scripts_bash-git-pull-all-for-current-directory.md.BIjGWw29.lean.js b/assets/misc_scripts_bash-git-pull-all-for-current-directory.md.BIjGWw29.lean.js new file mode 100644 index 00000000..0f1831e5 --- /dev/null +++ b/assets/misc_scripts_bash-git-pull-all-for-current-directory.md.BIjGWw29.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const F=JSON.parse('{"title":"현재 디렉토리의 모든 하위 디렉토리에 대해 git pull을 수행","description":"","frontmatter":{},"headers":[],"relativePath":"misc/scripts/bash-git-pull-all-for-current-directory.md","filePath":"misc/scripts/bash-git-pull-all-for-current-directory.md"}'),l={name:"misc/scripts/bash-git-pull-all-for-current-directory.md"},t=n("",3),p=[t];function h(e,k,r,d,c,o){return a(),i("div",null,p)}const E=s(l,[["render",h]]);export{F as __pageData,E as default}; diff --git a/assets/misc_yubico-piv-tool-reset-all.md.BB1ICp79.js b/assets/misc_yubico-piv-tool-reset-all.md.BB1ICp79.js new file mode 100644 index 00000000..7c011fe5 --- /dev/null +++ b/assets/misc_yubico-piv-tool-reset-all.md.BB1ICp79.js @@ -0,0 +1,8 @@ +import{_ as s,c as i,o as a,a4 as h}from"./chunks/framework.4aTu-Nia.js";const C=JSON.parse('{"title":"Yubikey 하드웨어 토큰 초기화","description":"","frontmatter":{},"headers":[],"relativePath":"misc/yubico-piv-tool-reset-all.md","filePath":"misc/yubico-piv-tool-reset-all.md"}'),l={name:"misc/yubico-piv-tool-reset-all.md"},t=h(`

Yubikey 하드웨어 토큰 초기화

Yubico 에서 제공하는 Yubikey의 하드웨어 토큰을 기본값으로 초기화해야 하는 경우 아래 방법을 따른다. 초기화 후 기존의 토큰 데이터가 모두 사라질 수 있으니 긴급할 시에만 사용한다.

진행하기 전 CLI 기반의 Yubico PIV Tool이 설치되어 있어야 한다.

먼저 토큰 PIN이나 PUK 중 하나가 Block 상태로 되어있다면 아래 명령어를 사용하여 PIN과 PUK 모두 Block 상태로 만든다. 아래와 같이 동일 명령어를 각각 3번씩 실행해야 한다.

shell
$ yubico-piv-tool -a verify -P 00000000
+$ yubico-piv-tool -a verify -P 00000000
+$ yubico-piv-tool -a verify -P 00000000
+$ yubico-piv-tool -a unblock-pin -P 00000000 -N 00000000
+$ yubico-piv-tool -a unblock-pin -P 00000000 -N 00000000
+$ yubico-piv-tool -a unblock-pin -P 00000000 -N 00000000

이후 아래 명령어로 토큰 초기화 명령을 실행한다.

shell
$ yubico-piv-tool -a reset
+$ yubico-piv-tool -a set-chuid
+$ yubico-piv-tool -a set-ccc

토큰 초기화 이후 PIN, PUK 변경하기

PINPUK은 각각 6자 이상 12자 이하로 설정한다. PIN은 인증용으로 사용되며 PUK은 백업용 키로 사용된다. 가능한 PINPUK을 다르게 설정할 것이 좋다.

PIN 변경

shell
yubico-piv-tool -a change-pin -P 123456 -N {새로운 PIN 암호}

PUK 변경

shell
yubico-piv-tool -a change-puk -P 12345678 -N {새로운 PUK 암호}
`,14),e=[t];function n(p,k,F,o,d,r){return a(),i("div",null,e)}const y=s(l,[["render",n]]);export{C as __pageData,y as default}; diff --git a/assets/misc_yubico-piv-tool-reset-all.md.BB1ICp79.lean.js b/assets/misc_yubico-piv-tool-reset-all.md.BB1ICp79.lean.js new file mode 100644 index 00000000..e4d7d362 --- /dev/null +++ b/assets/misc_yubico-piv-tool-reset-all.md.BB1ICp79.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as h}from"./chunks/framework.4aTu-Nia.js";const C=JSON.parse('{"title":"Yubikey 하드웨어 토큰 초기화","description":"","frontmatter":{},"headers":[],"relativePath":"misc/yubico-piv-tool-reset-all.md","filePath":"misc/yubico-piv-tool-reset-all.md"}'),l={name:"misc/yubico-piv-tool-reset-all.md"},t=h("",14),e=[t];function n(p,k,F,o,d,r){return a(),i("div",null,e)}const y=s(l,[["render",n]]);export{C as __pageData,y as default}; diff --git a/assets/os_common_create-large-size-file.md.wCP1wJm9.js b/assets/os_common_create-large-size-file.md.wCP1wJm9.js new file mode 100644 index 00000000..88961994 --- /dev/null +++ b/assets/os_common_create-large-size-file.md.wCP1wJm9.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const u=JSON.parse('{"title":"더미 데이터로 채워진 대용량 파일 만들기","description":"","frontmatter":{},"headers":[],"relativePath":"os/common/create-large-size-file.md","filePath":"os/common/create-large-size-file.md"}'),t={name:"os/common/create-large-size-file.md"},l=e('

더미 데이터로 채워진 대용량 파일 만들기

단순히 더미 데이터로 채워진 대용량 파일이 필요할 때가 있다. 파일 처리나 전송 테스트를 하거나 시스템이 용량으로 가득 찬 상황을 재현하기 위해 대용량 파일을 만들어야 한다면 다음과 같이 강제로 파일을 만들 수 있다.

Windows

사용 방법

명령 프롬프트에서 다음 명령어를 사용한다.

shell
> fsutil file createnew [pathWithName] [Byte]

사용 예시

약 1GB 파일의 대용량 파일 생성

shell
> fsutil file createnew C:\\Users\\test\\Desktop\\largeFile 1000000000

Linux

사용 방법

shell
$ fallocate [options] <filename>

사용 예시

약 1GB 파일의 대용량 파일 생성

shell
$ fallocate -l 1G /home/test/largeFile
',15),h=[l];function n(p,r,o,d,k,c){return i(),a("div",null,h)}const E=s(t,[["render",n]]);export{u as __pageData,E as default}; diff --git a/assets/os_common_create-large-size-file.md.wCP1wJm9.lean.js b/assets/os_common_create-large-size-file.md.wCP1wJm9.lean.js new file mode 100644 index 00000000..da4a8992 --- /dev/null +++ b/assets/os_common_create-large-size-file.md.wCP1wJm9.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const u=JSON.parse('{"title":"더미 데이터로 채워진 대용량 파일 만들기","description":"","frontmatter":{},"headers":[],"relativePath":"os/common/create-large-size-file.md","filePath":"os/common/create-large-size-file.md"}'),t={name:"os/common/create-large-size-file.md"},l=e("",15),h=[l];function n(p,r,o,d,k,c){return i(),a("div",null,h)}const E=s(t,[["render",n]]);export{u as __pageData,E as default}; diff --git a/assets/os_common_open-in-explorer-from-command-line.md.BLCZDIEx.js b/assets/os_common_open-in-explorer-from-command-line.md.BLCZDIEx.js new file mode 100644 index 00000000..9cd455f4 --- /dev/null +++ b/assets/os_common_open-in-explorer-from-command-line.md.BLCZDIEx.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as e,a4 as i}from"./chunks/framework.4aTu-Nia.js";const u=JSON.parse('{"title":"커맨드 라인 명령어로 파일 탐색기에서 경로 열기","description":"","frontmatter":{},"headers":[],"relativePath":"os/common/open-in-explorer-from-command-line.md","filePath":"os/common/open-in-explorer-from-command-line.md"}'),t={name:"os/common/open-in-explorer-from-command-line.md"},n=i('

커맨드 라인 명령어로 파일 탐색기에서 경로 열기

커맨드 라인을 통한 명령을 통해 파일 탐색기에서 원하는 경로를 열 수 있다. 다만 운영체제별로 사용하는 명령어는 각각 다르다.

  • 아래 명령어에서 {PATH}에는 열어야 할 경로를 입력한다. 경로에 공백이 포함되어있다면 큰따옴표(")로 감싸주어야 할 수 있다.
  • 현재 프롬프트에서 참조하고 있는 경로를 열려면 . 기호를 경로 대신 사용한다.

Windows

shell
C:\\> explorer {PATH}

macOS

shell
$ open {PATH}

Linux

shell
$ nautilus {PATH}
',9),l=[n];function o(h,p,d,r,c,k){return e(),s("div",null,l)}const g=a(t,[["render",o]]);export{u as __pageData,g as default}; diff --git a/assets/os_common_open-in-explorer-from-command-line.md.BLCZDIEx.lean.js b/assets/os_common_open-in-explorer-from-command-line.md.BLCZDIEx.lean.js new file mode 100644 index 00000000..3d4ce52e --- /dev/null +++ b/assets/os_common_open-in-explorer-from-command-line.md.BLCZDIEx.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as e,a4 as i}from"./chunks/framework.4aTu-Nia.js";const u=JSON.parse('{"title":"커맨드 라인 명령어로 파일 탐색기에서 경로 열기","description":"","frontmatter":{},"headers":[],"relativePath":"os/common/open-in-explorer-from-command-line.md","filePath":"os/common/open-in-explorer-from-command-line.md"}'),t={name:"os/common/open-in-explorer-from-command-line.md"},n=i("",9),l=[n];function o(h,p,d,r,c,k){return e(),s("div",null,l)}const g=a(t,[["render",o]]);export{u as __pageData,g as default}; diff --git a/assets/os_linux_cd-argument-examples.md.jRsOjHzO.js b/assets/os_linux_cd-argument-examples.md.jRsOjHzO.js new file mode 100644 index 00000000..ab20887d --- /dev/null +++ b/assets/os_linux_cd-argument-examples.md.jRsOjHzO.js @@ -0,0 +1 @@ +import{_ as d,c as t,o as e,a4 as c}from"./chunks/framework.4aTu-Nia.js";const p=JSON.parse('{"title":"리눅스 cd 명령어 인자값 예시","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/cd-argument-examples.md","filePath":"os/linux/cd-argument-examples.md"}'),o={name:"os/linux/cd-argument-examples.md"},r=c('

리눅스 cd 명령어 인자값 예시

인자값설명사용 예
(없음)아무런 처리도 하지 않음cd
.현재 디렉토리 (아무런 처리도 하지 않음)cd .
..상위 디렉토리
  • cd ..
  • cd ../Pictures
  • cd ../../Downloads
~현재 게정의 홈 디렉토리cd ~
/최상위 디렉토리cd /
/path/to/directory/특정 디렉토리 (절대 경로)cd /home/user/Desktop
/path/to/dir*특정 디렉토리 (와일드카드 사용), 와일드카드와 일치하는 첫번째 결과로 경로를 변경한다.cd /home/user/Desk*
',2),a=[r];function s(l,i,n,_,h,m){return e(),t("div",null,a)}const x=d(o,[["render",s]]);export{p as __pageData,x as default}; diff --git a/assets/os_linux_cd-argument-examples.md.jRsOjHzO.lean.js b/assets/os_linux_cd-argument-examples.md.jRsOjHzO.lean.js new file mode 100644 index 00000000..3e3765f3 --- /dev/null +++ b/assets/os_linux_cd-argument-examples.md.jRsOjHzO.lean.js @@ -0,0 +1 @@ +import{_ as d,c as t,o as e,a4 as c}from"./chunks/framework.4aTu-Nia.js";const p=JSON.parse('{"title":"리눅스 cd 명령어 인자값 예시","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/cd-argument-examples.md","filePath":"os/linux/cd-argument-examples.md"}'),o={name:"os/linux/cd-argument-examples.md"},r=c("",2),a=[r];function s(l,i,n,_,h,m){return e(),t("div",null,a)}const x=d(o,[["render",s]]);export{p as __pageData,x as default}; diff --git a/assets/os_linux_connection-configuration-ftp.md.B6osrkoJ.js b/assets/os_linux_connection-configuration-ftp.md.B6osrkoJ.js new file mode 100644 index 00000000..d8ea661d --- /dev/null +++ b/assets/os_linux_connection-configuration-ftp.md.B6osrkoJ.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const u=JSON.parse('{"title":"FTP 연결 설정 (vsftpd)","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/connection-configuration-ftp.md","filePath":"os/linux/connection-configuration-ftp.md"}'),t={name:"os/linux/connection-configuration-ftp.md"},l=e('

FTP 연결 설정 (vsftpd)

vsftpd 설치

yum, dnf 계열

shell
$ sudo dnf install vsftpd

apt 계열

shell
$ sudo apt install vsftpd

vsftpd 설정

아래 파일이 없다면 새로 생성해서 사용한다.

CentOS / RedHat 계열

shell
$ sudo vim /etc/vsftpd/vsftpd.conf

Ubuntu / Debian 계열

shell
$ sudo vim /etc/vsftpd.conf

vsftpd.conf

아래 내용을 참고하여 필요한 내용을 수정한 후 저장한다.

익명 사용자의 사용자 접근 여부 (yes/no)

shell
anonymous_enable=no

익명 사용자의 홈 디렉토리 설정

shell
anon_root=/home/ftppub

익명 사용자의 업로드 가능 여부

shell
anon_upload_enable=YES

익명 사용자의 파일 생성 시 기본 권한

shell
anon_umask=002

익명 사용자의 폴더 생성 가능 여부

shell
anon_mkdir_write_enable=YES

로컬 사용자의 접근 여부 (yes/no)

shell
local_enable=yes

파일 쓰기 허용 여부 (yes/no)

shell
write_enable=yes

패시브 모드를 활성화 할지 여부 (yes/no)

shell
pasv_enable=yes

패시브 모드의 최소 포트

shell
pasv_min_port=10090

패시브 모드의 최대 포트

shell
pasv_max_port=10100

배너 메시지

shell
ftpd_banner=hello

방화벽 허용

iptables

shell
$ sudo iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

ufw

shell
$ sudo ufw allow 21/tcp

firewalld

shell
$ sudo firewall-cmd --zone=public --add-port=21/tcp --permanent

권한 설정

필요에 따라 FTP가 디렉토리에 접근할 수 있도록 홈 디렉토리 폴더 권한을 711로 조정해야 할 수 있다.

shell
$ sudo chmod 711 /home/$USER

만약 알 수 없는 문제가 발생하고 CentOS 및 RedHat 계열에서 SELinux를 사용하는 경우 SELinux를 일시적으로 비활성화하여 해결할 수 있다.

shell
$ sudo setenforce 0

vsftpd 서비스 시작

shell
$ sudo service vsftpd restart

또는

shell
$ sudo systemctl restart vsftpd
',52),h=[l];function n(p,d,o,k,r,c){return i(),a("div",null,h)}const F=s(t,[["render",n]]);export{u as __pageData,F as default}; diff --git a/assets/os_linux_connection-configuration-ftp.md.B6osrkoJ.lean.js b/assets/os_linux_connection-configuration-ftp.md.B6osrkoJ.lean.js new file mode 100644 index 00000000..026896f8 --- /dev/null +++ b/assets/os_linux_connection-configuration-ftp.md.B6osrkoJ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.4aTu-Nia.js";const u=JSON.parse('{"title":"FTP 연결 설정 (vsftpd)","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/connection-configuration-ftp.md","filePath":"os/linux/connection-configuration-ftp.md"}'),t={name:"os/linux/connection-configuration-ftp.md"},l=e("",52),h=[l];function n(p,d,o,k,r,c){return i(),a("div",null,h)}const F=s(t,[["render",n]]);export{u as __pageData,F as default}; diff --git a/assets/os_linux_connection-configuration-telnet.md.DJ1EmQW3.js b/assets/os_linux_connection-configuration-telnet.md.DJ1EmQW3.js new file mode 100644 index 00000000..fada1f0a --- /dev/null +++ b/assets/os_linux_connection-configuration-telnet.md.DJ1EmQW3.js @@ -0,0 +1,24 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Telnet 연결 설정 (Xinetd)","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/connection-configuration-telnet.md","filePath":"os/linux/connection-configuration-telnet.md"}'),t={name:"os/linux/connection-configuration-telnet.md"},e=n(`

Telnet 연결 설정 (Xinetd)

xinetd 설치

RedHat 계열 (dnf)

shell
$ sudo dnf install telnet
+$ sudo dnf install telnet-server
+$ sudo dnf install xinetd

Debian 계열 (apt)

shell
$ sudo apt install xinetd
+$ sudo apt install telnet
+
+# telnet-server 패키지가 검색되지 않는 경우 telnetd로 시도
+$ sudo apt install telnet-server

방화벽 설정

방화벽 소프트웨어에 따라 tcp 23번 포트를 개방해야 한다. 방화벽 소프트웨어는 리눅스 배포판별로 다를 수 있다.

iptables

shell
$ sudo iptables -A INPUT -p tcp --dport 23 -j ACCEPT

firewalld

shell
$ sudo firewall-cmd --zone=public --add-port=23/tcp --permanent

ufw

shell
$ sudo ufw allow 23/tcp

Xinetd 설정

텍스트 에디터로 /etc/xinetd.d/telnet 파일을 편집한다. 없다면 새로 만든다.

shell
service telnet
+{
+        flags           = REUSE
+        socket_type     = stream
+        wait            = no
+        user            = root
+        server          = /usr/sbin/in.telnetd
+        log_on_failure  += USERID
+        disable         = no
+}

disable 값이 no인 경우 사용, yes인 경우 사용하지 않음이다.

Xinetd 서비스 시작

아래 명령어를 통해 Telnet 서버를 시작할 수 있다.

shell
# service로 서비스 시작
+$ sudo service xinetd restart
+
+# systemctl로 서비스 시작
+$ sudo systemctl restart xinetd

필요에 따라 network 서비스를 재시작해야 할 수 있다.

shell
# service로 서비스 시작
+$ sudo service network restart
+
+# systemctl로 서비스 시작
+$ sudo systemctl restart network
`,23),l=[e];function h(p,k,d,F,r,o){return a(),i("div",null,l)}const C=s(t,[["render",h]]);export{g as __pageData,C as default}; diff --git a/assets/os_linux_connection-configuration-telnet.md.DJ1EmQW3.lean.js b/assets/os_linux_connection-configuration-telnet.md.DJ1EmQW3.lean.js new file mode 100644 index 00000000..54dd5478 --- /dev/null +++ b/assets/os_linux_connection-configuration-telnet.md.DJ1EmQW3.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Telnet 연결 설정 (Xinetd)","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/connection-configuration-telnet.md","filePath":"os/linux/connection-configuration-telnet.md"}'),t={name:"os/linux/connection-configuration-telnet.md"},e=n("",23),l=[e];function h(p,k,d,F,r,o){return a(),i("div",null,l)}const C=s(t,[["render",h]]);export{g as __pageData,C as default}; diff --git a/assets/os_linux_connection-configuration-xrdp.md.oGX5mEvA.js b/assets/os_linux_connection-configuration-xrdp.md.oGX5mEvA.js new file mode 100644 index 00000000..18d39bcc --- /dev/null +++ b/assets/os_linux_connection-configuration-xrdp.md.oGX5mEvA.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a4 as e}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Xrdp 연결 설정","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/connection-configuration-xrdp.md","filePath":"os/linux/connection-configuration-xrdp.md"}'),t={name:"os/linux/connection-configuration-xrdp.md"},l=e(`

Xrdp 연결 설정

RDP 프로토콜을 활용하여 리눅스에서 원격 데스크톱 서비스를 구성할 수 있다. 로그아웃 후 다시 로그인해도 이전의 세션(작업 환경)이 유지되며 드라이브 리다이렉션, 클립보드 등의 다양한 기능을 지원한다. Xrdp는 2GB 이상의 RAM, 2016년 이후 리눅스 배포판에서 구성하는 것을 권장한다.

먼저 리눅스 시스템에 Xfce4나 Gnome Desktop같은 데스크톱 환경이 설치되어있어야 한다.

방화벽 설정

RDP 포트인 3389/tcp 포트를 연다.

ufw (Debian/Ubuntu 계열)

shell
$ sudo ufw allow 3389/tcp

Firewalld (RedHat/CentOS 계열)

shell
$ sudo firewall-cmd --zone=public --add-port=3389/tcp --permanent

Iptables

shell
$ sudo iptables -A INPUT -p tcp -m tcp --dport 3389 -j ACCEPT

Xrdp 패키지 설치

Debian / Ubuntu 계열

shell
$ sudo apt install xrdp

RedHat / CentOS 계열

shell
$ sudo dnf install xrdp

Xrdp 환경설정

shell
/etc/xrdp/xrdp.ini

그래픽 데스크톱 환경 구성

특정 그래픽 데스크톱 환경으로 시작하려면 아래 파일을 편집하여 하단에 내용을 추가한다.

  • /etc/xrdp/startwm.sh

Gnome Desktop, Xubuntu Desktop (기본값)

shell
exec /bin/sh /etc/X11/Xsession

Xfce4

기본값을 제거한 후 다음 내용을 추가한다.

shell
xfce4-session

색상 프로파일 편집

Xrdp 접속 시 색상 프로파일 관련 권한을 묻는다면 아래 파일을 편집하여 해결할 수 있다.

shell
$ sudo vim /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla

파일 편집기로 파일을 열고 아래 내용으로 수정한다.

shell
[Allow Colord all Users]
+Identity=unix-user:*
+Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
+ResultAny=no
+ResultInactive=no
+ResultActive=yes

이후 서비스를 재시작해야 할 수 있다. (하단 참고)

서비스 시작 구성

시스템 재시작 시 마다 Xrdp 서비스를 시작하려면 다음 명령을 사용한다.

shell
$ sudo systemctl enable xrdp
+# OR
+$ sudo service xrdp enable

아래 명령어로 서비스를 시작한다.

shell
$ sudo systemctl start xrdp
+# OR
+$ sudo service xrdp start

접속 방법

WindowsmacOS에서 제공하는 RDP 클라이언트를 활용한다.

  • Microsoft Terminal Services Client (mstsc.exe)
  • Microsoft Remote Desktop

주소창에 호스트:포트번호를 입력하여 접속한다.

`,41),n=[l];function h(p,k,d,r,o,c){return a(),i("div",null,n)}const u=s(t,[["render",h]]);export{g as __pageData,u as default}; diff --git a/assets/os_linux_connection-configuration-xrdp.md.oGX5mEvA.lean.js b/assets/os_linux_connection-configuration-xrdp.md.oGX5mEvA.lean.js new file mode 100644 index 00000000..a8c55851 --- /dev/null +++ b/assets/os_linux_connection-configuration-xrdp.md.oGX5mEvA.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as e}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"Xrdp 연결 설정","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/connection-configuration-xrdp.md","filePath":"os/linux/connection-configuration-xrdp.md"}'),t={name:"os/linux/connection-configuration-xrdp.md"},l=e("",41),n=[l];function h(p,k,d,r,o,c){return a(),i("div",null,n)}const u=s(t,[["render",h]]);export{g as __pageData,u as default}; diff --git a/assets/os_linux_firewall.md.CjNw_F_H.js b/assets/os_linux_firewall.md.CjNw_F_H.js new file mode 100644 index 00000000..7e719f6c --- /dev/null +++ b/assets/os_linux_firewall.md.CjNw_F_H.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as a,a4 as l}from"./chunks/framework.4aTu-Nia.js";const C=JSON.parse('{"title":"리눅스 방화벽 간단 사용","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/firewall.md","filePath":"os/linux/firewall.md"}'),n={name:"os/linux/firewall.md"},p=l(`

리눅스 방화벽 간단 사용

리눅스 방화벽 소프트웨어로는 iptables, firewalld, ufw 등이 있다.

iptables

기본적으로 설치되어있거나 오래된 리눅스 배포판에서 주로 사용되었던 방화벽 소프트웨어이다.

아래와 같이 방화벽 규칙을 추가할 수 있다.

shell
# TCP (-p tcp) 22번 포트(--dport)를 영구적(--permanent)으로 개방하려는 경우
+$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
+
+# TCP 6000 - 6010 포트를 모두 개방하려는 경우
+$ sudo iptables -A INPUT -p tcp --dport 6000:6010 -j ACCEPT

firewalld

RedHat 계열 리눅스 배포판에서 주로 사용되며 설치되지 않았을 경우 패키지관리 소프트웨어를 통해 설치할 수도 있다.

아래와 같이 방화벽 규칙을 추가할 수 있다.

shell
# TCP 22번 포트(--add-port)를 영구적(--permanent)으로 개방하려는 경우
+$ sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
+
+# TCP 6000 - 6010 포트를 모두 개방하려는 경우
+$ sudo firewall-cmd --zone=public --add-port=6000-6010/tcp --permanent

또는 아래와 같이 특정 서비스에 대해 필요한 포트를 개방할 수 있다.

shell
# XDMCP 접속에 사용되는 177/udp, 6000-6010/tcp 포트 개방
+$ sudo firewall-cmd --permanent --add-service=xdmcp

ufw

Debian 계열 리눅스 배포판에서 주로 사용된다.

아래와 같이 방화벽 규칙을 추가할 수 있다.

shell
# TCP 22번 포트(allow)를 개방하려는 경우
+$ sudo ufw allow 22/tcp
+
+# TCP 6000 - 6010 포트를 모두 개방하려는 경우
+$ sudo ufw allow 6000:6010/tcp
`,16),t=[p];function h(e,k,d,r,F,c){return a(),i("div",null,t)}const g=s(n,[["render",h]]);export{C as __pageData,g as default}; diff --git a/assets/os_linux_firewall.md.CjNw_F_H.lean.js b/assets/os_linux_firewall.md.CjNw_F_H.lean.js new file mode 100644 index 00000000..9a3c22bc --- /dev/null +++ b/assets/os_linux_firewall.md.CjNw_F_H.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as l}from"./chunks/framework.4aTu-Nia.js";const C=JSON.parse('{"title":"리눅스 방화벽 간단 사용","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/firewall.md","filePath":"os/linux/firewall.md"}'),n={name:"os/linux/firewall.md"},p=l("",16),t=[p];function h(e,k,d,r,F,c){return a(),i("div",null,t)}const g=s(n,[["render",h]]);export{C as __pageData,g as default}; diff --git a/assets/os_linux_install-snap-package.md.BDJzu7Wh.js b/assets/os_linux_install-snap-package.md.BDJzu7Wh.js new file mode 100644 index 00000000..90c2941a --- /dev/null +++ b/assets/os_linux_install-snap-package.md.BDJzu7Wh.js @@ -0,0 +1,18 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"리눅스 Snap 설치","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/install-snap-package.md","filePath":"os/linux/install-snap-package.md"}'),h={name:"os/linux/install-snap-package.md"},t=n(`

리눅스 Snap 설치

개요

Snap은 제 3자 소프트웨어 패키지(.snap)를 제공하는 리눅스 패키지 관리자이다. Ubuntu와 같은 유명 배포판에서는 스토어 앱과 연동 되어있기도 하며 간단한 커맨드라인으로 사용자 디렉토리에 샌드박스 앱을 설치하여 손쉽게 관리할 수 있다.

snapd는 이러한 Snap 패키지를 관리할 수 있게 해주는 서비스 명칭이며 snapcraft.snap 패키지를 스토어에 업로드하거나 관리하는 CLI 도구이다. Ubuntu에는 기본으로 snapd가 설치되어있다.

설치

Ubuntu 20.04 이상

Ubuntusnapd패키지가 기본적으로 설치되어있으며 아래 명령어로 설치 여부를 확인할 수 있다.

shell
$ snap --version
+snap    2.50.1
+snapd   2.50.1
+series  16
+ubuntu  20.04
+kernel  5.8.0-50-generic

Ubuntu 18.04 이하 / Debian 계열

Ubuntu 18.04 이하의 오래된 Debian 계열에서는 snapd가 기본 설치되어 있지않다. 아래 명령어로 snapd를 설치하여 활성화한다.

shell
$ sudo apt install snapd
+$ sudo systemctl enable snapd (OR... service snapd enable)
+$ sudo systemctl start snapd (OR... service snapd start)
+$ sudo snap install core

CentOS 6 - 8 / RedHat 계열

CentOSRedHat Enterprise Linuxsnapd가 기본 설치되어있지 않다. snapd 패키지가 존재하는 epel-release 저장소를 추가 구성해주어야 한다.

shell
$ sudo dnf install epel-release
+$ sudo dnf update
+$ sudo dnf install snapd
+$ sudo systemctl enable snapd (OR... service snapd enable)
+$ sudo systemctl start snapd (OR... service snapd start)
+$ sudo snap install core

사용 방법

패키지 설치

패키지를 설치/관리하려는 사용자 계정에서 다음 커맨드라인 명령을 실행한다.

shell
$ snap install {PACKAGE_NAME} {...OPTIONS}

{PACKAGE_NAME}은 실제 배포중인 패키지의 설치명으로 필수로 입력해야 하는 값이며 공백 없는 소문자로 구성된 키워드여야 한다.

특정 채널(beta, candidate, edge)로 패키지를 설치하려면 아래와 같이 사용한다.

shell
$ snap install {PACKAGE_NAME} --{CHANNEL_NAME}

{CHANNEL_NAME}에는 소문자 키워드의 채널명이 들어간다.

패키지 삭제

shell
$ snap remove {PACKAGE_NAME}

패키지 업데이트

shell
$ snap refresh

문제 해결

패키지 설치 도중, cannot find required base “core18” 문제가 발생할 수 있다.

shell
2021-06-04T08:49:14+09:00 INFO Waiting for restart...
+error: cannot perform the following tasks:
+- Mount snap "code" (24) (cannot find required base "core18")

다음 명령어로 snapd core를 설치한 후 패키지를 다시 설치하면 문제가 해결된다.

shell
$ sudo snap install core

특정 snap 패키지 설치 도중 다음과 같은 에러가 발생할 수 있다.

shell
error: cannot read snap file: cannot run unsquashfs: ----- Read on filesystem
+       failed because EOF read_id_table: failed to read id index table FATAL
+       ERROR: File system corruption detected -----

이는 일반적으로 설치하려고 시도한 snap 파일이 잘못되었거나 깨져있을 때 발생한다. 파일을 다시 다운로드하여 시도해야 한다.

`,35),l=[t];function e(p,k,F,d,r,o){return a(),i("div",null,l)}const C=s(h,[["render",e]]);export{c as __pageData,C as default}; diff --git a/assets/os_linux_install-snap-package.md.BDJzu7Wh.lean.js b/assets/os_linux_install-snap-package.md.BDJzu7Wh.lean.js new file mode 100644 index 00000000..ec852f8e --- /dev/null +++ b/assets/os_linux_install-snap-package.md.BDJzu7Wh.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const c=JSON.parse('{"title":"리눅스 Snap 설치","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/install-snap-package.md","filePath":"os/linux/install-snap-package.md"}'),h={name:"os/linux/install-snap-package.md"},t=n("",35),l=[t];function e(p,k,F,d,r,o){return a(),i("div",null,l)}const C=s(h,[["render",e]]);export{c as __pageData,C as default}; diff --git a/assets/os_linux_install-zsh-and-oh-my-zsh.md.BzEl7cj0.js b/assets/os_linux_install-zsh-and-oh-my-zsh.md.BzEl7cj0.js new file mode 100644 index 00000000..7b266e2a --- /dev/null +++ b/assets/os_linux_install-zsh-and-oh-my-zsh.md.BzEl7cj0.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as h}from"./chunks/framework.4aTu-Nia.js";const F=JSON.parse('{"title":"리눅스 Zsh와 Oh My Zsh 설치하기","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/install-zsh-and-oh-my-zsh.md","filePath":"os/linux/install-zsh-and-oh-my-zsh.md"}'),e={name:"os/linux/install-zsh-and-oh-my-zsh.md"},t=h('

리눅스 ZshOh My Zsh 설치하기

Zsh(Z Shell)은 기존의 Bash Shell에서 많은 개선사항과 여러가지 확장 기능을 지원하는 셸이다. Oh My Zsh는 Zsh에 확장 및 구성을 관리해주는 프레임워크이며 Zsh를 설치할 때 함께 설치하는 경우가 많다.

Zsh 설치

Ubuntu 계열

apt 패키지 관리자 명령어로 Zsh를 설치한다.

shell
$ sudo apt install zsh

macOS

macOS의 최신 버전 부터는 Zsh이 기본 로그인 셸로 동작한다. 따라서 최신 버전을 사용하고 별다른 설정을 하지 않았다면 별도로 설치할 필요가 없다. 만약 설치되어있지 않다면 수동으로 설치해줄 수 있다. 설치를 위해서는 brew가 사전에 설치되어있어야 한다.

shell
$ brew install zsh

설치 후 기본 셸을 Zsh로 전환하기

chsh 명령어를 이용하여 기본 로그인 셸을 변경할 수 있다. 명령을 실행한 현재 사용자에게만 적용된다.

shell
$ chsh -s $(which zsh)

제대로 설정이 반영되려면 터미널 앱을 껐다가 켜야 할 수 있다.

Oh My Zsh 설치

curl 또는 wget 명령어로 설치할 수 있으며 curl, wget은 기본 명령어가 아닐 수 있으므로 사전에 설치해야할 수 있다.

Zsh를 활성화할 때와 마찬가지로 Oh My Zsh를 활성화할 사용자의 터미널에서 아래 명령을 실행한다. 다른 사용자에도 적용하려면 각자 명령을 실행해야 한다.

curl 명령어로 설치

shell
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

wget 명령어로 설치

shell
$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

설치 이후

설치 후 ~/.zshrc 파일을 편집하여 Zsh를 사용자 지정할 수 있다.

상단의 ZSH_THEME 값을 변경하여 원하는 Zsh 테마를 지정할 수 있다.

shell
# Set name of the theme to load --- if set to "random", it will\n# load a random theme each time oh-my-zsh is loaded, in which case,\n# to know which specific one was loaded, run: echo $RANDOM_THEME\n# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes\n#ZSH_THEME="agnoster"\nZSH_THEME="simple"

Zsh에서 Home/End 키가 정상 동작하지 않는 경우 .zshrc 하단에 다음 내용을 추가한다.

shell
bindkey "\\033[1~" beginning-of-line\nbindkey "\\033[4~" end-of-line

설정을 편집한 후에는 다음 명령을 실행하여 적용한다.

shell
$ source ~/.zshrc
',28),l=[t];function n(p,o,d,c,k,r){return i(),a("div",null,l)}const u=s(e,[["render",n]]);export{F as __pageData,u as default}; diff --git a/assets/os_linux_install-zsh-and-oh-my-zsh.md.BzEl7cj0.lean.js b/assets/os_linux_install-zsh-and-oh-my-zsh.md.BzEl7cj0.lean.js new file mode 100644 index 00000000..a1c4944b --- /dev/null +++ b/assets/os_linux_install-zsh-and-oh-my-zsh.md.BzEl7cj0.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as h}from"./chunks/framework.4aTu-Nia.js";const F=JSON.parse('{"title":"리눅스 Zsh와 Oh My Zsh 설치하기","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/install-zsh-and-oh-my-zsh.md","filePath":"os/linux/install-zsh-and-oh-my-zsh.md"}'),e={name:"os/linux/install-zsh-and-oh-my-zsh.md"},t=h("",28),l=[t];function n(p,o,d,c,k,r){return i(),a("div",null,l)}const u=s(e,[["render",n]]);export{F as __pageData,u as default}; diff --git a/assets/os_linux_linux-multipass.md.C5Ou1_9I.js b/assets/os_linux_linux-multipass.md.C5Ou1_9I.js new file mode 100644 index 00000000..15cdbc1c --- /dev/null +++ b/assets/os_linux_linux-multipass.md.C5Ou1_9I.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const C=JSON.parse('{"title":"리눅스 Multipass 사용하기","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/linux-multipass.md","filePath":"os/linux/linux-multipass.md"}'),n={name:"os/linux/linux-multipass.md"},h=t(`

리눅스 Multipass 사용하기

**Multipass**는 우분투를 배포하는 캐노니컬 그룹에서 개발한 가상환경을 쉽게 구성할 수 있는 도구이다. 여러 리눅스 배포판 환경에서 개발이나 배포가 필요하거나, 테스트를 위해 사용되며 설치 파일을 통해 별도로 설치 과정을 할 필요 없이 커맨드라인 명령어를 통해 간단히 가상머신을 구성하거나, 켜고 끌 수 있다.

Multipass는 아래 링크에서 설치할 수 있다. 윈도우와 리눅스, macOS를 모두 지원한다. https://multipass.run

Multipass 기본 사용

shell
$ multipass find
+18.04                       bionic            20220901         Ubuntu 18.04 LTS
+20.04                       focal,lts         20220824         Ubuntu 20.04 LTS
+22.04                       jammy             20220902         Ubuntu 22.04 LTS
+anbox-cloud-appliance                         latest           Anbox Cloud Appliance
+charm-dev                                     latest           A development and testing environment for charmers
+docker                                        latest           A Docker environment with Portainer and related tools
+jellyfin                                      latest           Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.
+minikube                                      latest           minikube is local Kubernetes

myUbuntu라는 이름의 가상머신을 생성하려면 다음 명령어를 사용한다.

shell
$ multipass launch --name myUbuntu "bionic"
+Launched: bionic

이제 myUbuntu가 생성되었다면, multipass shell 명령으로 터미널에 접근할 수 있다.

shell
$ multipass shell myUbuntu

그래픽 환경을 구성하려면 xrdpxdmcp 등의 추가 구성이 필요할 수 있다.

`,10),l=[h];function p(k,e,F,r,d,g){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/assets/os_linux_linux-multipass.md.C5Ou1_9I.lean.js b/assets/os_linux_linux-multipass.md.C5Ou1_9I.lean.js new file mode 100644 index 00000000..eadcdad9 --- /dev/null +++ b/assets/os_linux_linux-multipass.md.C5Ou1_9I.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.4aTu-Nia.js";const C=JSON.parse('{"title":"리눅스 Multipass 사용하기","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/linux-multipass.md","filePath":"os/linux/linux-multipass.md"}'),n={name:"os/linux/linux-multipass.md"},h=t("",10),l=[h];function p(k,e,F,r,d,g){return a(),i("div",null,l)}const o=s(n,[["render",p]]);export{C as __pageData,o as default}; diff --git a/assets/os_linux_ls-file-type-string.md.ClBI3LoU.js b/assets/os_linux_ls-file-type-string.md.ClBI3LoU.js new file mode 100644 index 00000000..ed5f968c --- /dev/null +++ b/assets/os_linux_ls-file-type-string.md.ClBI3LoU.js @@ -0,0 +1,8 @@ +import{_ as s,c as i,o as t,a4 as a}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"리눅스 ls 명령어 내 파일 형식에 대한 문자열 표현","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/ls-file-type-string.md","filePath":"os/linux/ls-file-type-string.md"}'),h={name:"os/linux/ls-file-type-string.md"},n=a(`

리눅스 ls 명령어 내 파일 형식에 대한 문자열 표현

shell
$ ls -l home
+total 64
+lrwxrwxrwx   1 root root     7 Apr 29  2021 bin -> usr/bin
+drwxr-xr-x   4 root root  4096 Feb  1 06:39 boot
+drwxr-xr-x  15 root root  3760 Jan 24 15:59 dev
+drwxr-xr-x 100 root root  4096 Jan 26 06:54 etc
+drwxr-xr-x   4 root root  4096 Sep  5 02:06 home
+...

ls -l에서 첫글자 l, d, d...는 파일의 형식이며 문자별로 다음 의미를 가진다:

문자파일 타입설명
-일반 파일일반적인 파일을 나타내는 문자
d디렉토리디렉토리를 나타내는 문자
l심볼릭 링크심볼릭 링크 (Soft Link) 파일
c문자 장치 드라이버문자 장치 드라이버 (Character Device Driver). 물리적 장치를 위한 실행 파일
b블록 장치 드라이버블록 장치 드라이버 (Block Device Driver). 물리적 장치를 위한 실행 파일
s로컬 소켓프로세스 통신을 위해 사용되는 파일
p네임드 파이프 (Named Pipe)프로세스 통신을 위해 사용되는 파일 (선입선출 (FIFO) 파일)
`,4),l=[n];function k(e,p,d,F,r,o){return t(),i("div",null,l)}const c=s(h,[["render",k]]);export{g as __pageData,c as default}; diff --git a/assets/os_linux_ls-file-type-string.md.ClBI3LoU.lean.js b/assets/os_linux_ls-file-type-string.md.ClBI3LoU.lean.js new file mode 100644 index 00000000..9a456eb6 --- /dev/null +++ b/assets/os_linux_ls-file-type-string.md.ClBI3LoU.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as t,a4 as a}from"./chunks/framework.4aTu-Nia.js";const g=JSON.parse('{"title":"리눅스 ls 명령어 내 파일 형식에 대한 문자열 표현","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/ls-file-type-string.md","filePath":"os/linux/ls-file-type-string.md"}'),h={name:"os/linux/ls-file-type-string.md"},n=a("",4),l=[n];function k(e,p,d,F,r,o){return t(),i("div",null,l)}const c=s(h,[["render",k]]);export{g as __pageData,c as default}; diff --git a/assets/os_linux_sshd-tcp-keepalive.md.ljkSrJVv.js b/assets/os_linux_sshd-tcp-keepalive.md.ljkSrJVv.js new file mode 100644 index 00000000..ebb0f5d1 --- /dev/null +++ b/assets/os_linux_sshd-tcp-keepalive.md.ljkSrJVv.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as i,a4 as a}from"./chunks/framework.4aTu-Nia.js";const v=JSON.parse('{"title":"Linux sshd TCP KeepAlive","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/sshd-tcp-keepalive.md","filePath":"os/linux/sshd-tcp-keepalive.md"}'),l={name:"os/linux/sshd-tcp-keepalive.md"},t=a('

Linux sshd TCP KeepAlive

리눅스 환경의 SSH 서버에서 Keep Alive 패킷을 보내려면 sshd_config를 수정한다.

shell
$ sudo vim /etc/ssh/sshd_config
shell
TCPKeepAlive no\nClientAliveInterval 10\nClientAliveCountMax 0
  • TCPKeepAlive: SSH 서버에서 연결 유지 패킷을 보낸다.
  • ClientAliveInterval: 클라이언트 확인 간격 (n Seconds)
  • ClientAliveCountMax: Keep Alive 메시지를 받지 못했을 때 클라이언트를 종료하기 전 접속을 유지해야 하는 최대 횟수

예를 들어 ClientAliveInterval10이고 ClientAliveCountMax3이면 10 X 3 = 30초 이상 응답이 없을 경우 세션을 종료한다.

서버측에서 Keep Alive 응답을 보내지 않으려면 ClientAliveCountMax의 값을 0으로 설정한다. ClientAliveInterval에 설정된 초가 지나면 연결을 종료한다.

변경사항 적용 후 sshd 서비스를 재시작 해야 할 수 있다.

shell
$ sudo service sshd restart

또는

shell
$ sudo systemctl restart sshd
',11),n=[t];function p(h,d,o,c,k,r){return i(),e("div",null,n)}const g=s(l,[["render",p]]);export{v as __pageData,g as default}; diff --git a/assets/os_linux_sshd-tcp-keepalive.md.ljkSrJVv.lean.js b/assets/os_linux_sshd-tcp-keepalive.md.ljkSrJVv.lean.js new file mode 100644 index 00000000..e6c5a567 --- /dev/null +++ b/assets/os_linux_sshd-tcp-keepalive.md.ljkSrJVv.lean.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as i,a4 as a}from"./chunks/framework.4aTu-Nia.js";const v=JSON.parse('{"title":"Linux sshd TCP KeepAlive","description":"","frontmatter":{},"headers":[],"relativePath":"os/linux/sshd-tcp-keepalive.md","filePath":"os/linux/sshd-tcp-keepalive.md"}'),l={name:"os/linux/sshd-tcp-keepalive.md"},t=a("",11),n=[t];function p(h,d,o,c,k,r){return i(),e("div",null,n)}const g=s(l,[["render",p]]);export{v as __pageData,g as default}; diff --git a/assets/software_db-browser-for-sqlite-save-password.md.C-z3uKbH.js b/assets/software_db-browser-for-sqlite-save-password.md.C-z3uKbH.js new file mode 100644 index 00000000..db6c1567 --- /dev/null +++ b/assets/software_db-browser-for-sqlite-save-password.md.C-z3uKbH.js @@ -0,0 +1,7 @@ +import{_ as e,c as a,o as s,a4 as r}from"./chunks/framework.4aTu-Nia.js";const m=JSON.parse('{"title":"DB Browser for SQLite 암호 기억하기","description":"","frontmatter":{},"headers":[],"relativePath":"software/db-browser-for-sqlite-save-password.md","filePath":"software/db-browser-for-sqlite-save-password.md"}'),t={name:"software/db-browser-for-sqlite-save-password.md"},o=r(`

DB Browser for SQLite 암호 기억하기

DB Browser for SQLite 앱에서 SQLCipher 암호를 매번 입력하지 않고 저장된 내용으로 열고 싶은 경우 다음 절차를 따른다.

먼저 데이터베이스 파일 경로와 동일한 위치에 .env 파일을 생성한다. 이 파일은 암호가 포함되어 있으므로 외부에 공개되지 않아야 한다.

데이터베이스 파일명이 mydata.db라고 가정한다. 생성한 파일을 열고 다음 내용을 붙여넣는다.

dotenv
mydata.db = {데이터베이스 파일 암호}
+mydata.db_keyFormat =
+mydata.db_pageSize =
+mydata.db_kdfIter =
+mydata.db_hmacAlgorithm =
+mydata.db_kdfAlgorithm =
+mydata.db_plaintextHeaderSize =

환경변수 키값에는 데이터베이스 파일명(확장자 포함)이 프리픽스로 포함되고, 부가 설정은 언더스코어(_)로 구분하여 뒤에 옵션 이름을 붙인다. = 오른쪽 값은 해당 설정에 대한 값이다.

SQLCipher 암호는 아무 설정이름이 없는 처음 값에 붙여넣으면 된다. 이후 아래 옵션은 SQLCipher의 버전과 각종 암호화 설정에 따라 달라질 수 있는데, 일반적으로 암호화 버전 3과 4를 사용하며 각 버전 별 기본 권장 설정은 다음과 같다:

SQLCipher 3

  • keyFormat = 0
  • pageSize = 1024
  • kdfIter = 64000
  • hmacAlgorithm = SHA1
  • kdfAlgorithm = SHA1
  • plaintextHeaderSize = 0

SQLCipher 4

  • keyFormat = 0
  • pageSize = 4096
  • kdfIter = 256000
  • hmacAlgorithm = SHA512
  • kdfAlgorithm = SHA512
  • plaintextHeaderSize = 0

keyFormat0인 경우 Passphrase, 1인 경우 RAW Key 암호일 경우에 해당된다. 특별한 경우가 아니라면 0을 사용한다.

이제 프로그램을 열고 데이터베이스 파일을 열면 암호를 묻지 않고 바로 데이터베이스 파일을 읽을 수 있다.

References

`,15),i=[o];function l(n,d,p,c,h,b){return s(),a("div",null,i)}const _=e(t,[["render",l]]);export{m as __pageData,_ as default}; diff --git a/assets/software_db-browser-for-sqlite-save-password.md.C-z3uKbH.lean.js b/assets/software_db-browser-for-sqlite-save-password.md.C-z3uKbH.lean.js new file mode 100644 index 00000000..0267031d --- /dev/null +++ b/assets/software_db-browser-for-sqlite-save-password.md.C-z3uKbH.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as s,a4 as r}from"./chunks/framework.4aTu-Nia.js";const m=JSON.parse('{"title":"DB Browser for SQLite 암호 기억하기","description":"","frontmatter":{},"headers":[],"relativePath":"software/db-browser-for-sqlite-save-password.md","filePath":"software/db-browser-for-sqlite-save-password.md"}'),t={name:"software/db-browser-for-sqlite-save-password.md"},o=r("",15),i=[o];function l(n,d,p,c,h,b){return s(),a("div",null,i)}const _=e(t,[["render",l]]);export{m as __pageData,_ as default}; diff --git a/assets/style.Dmrovd0U.css b/assets/style.Dmrovd0U.css new file mode 100644 index 00000000..fe78840d --- /dev/null +++ b/assets/style.Dmrovd0U.css @@ -0,0 +1 @@ +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic.CMhn1ESj.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek.JvnBZ4YD.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek-ext.D0mI3NpI.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin.Bu8hRsVA.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin-ext.ZlYT4o7i.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-vietnamese.ClpjcLMQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic.D6csxwjC.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek.9J96vYpw.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek-ext.CHOfFY1k.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin.DbsTr1gm.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin-ext.BGcWXLrn.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-vietnamese.DHNAd7Wr.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-f87ff6e4]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-f87ff6e4]{padding:96px 32px 168px}}.code[data-v-f87ff6e4]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-f87ff6e4]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-f87ff6e4]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-f87ff6e4]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-f87ff6e4]{padding-top:20px}.link[data-v-f87ff6e4]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-f87ff6e4]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-935f8a84]{display:none}.VPDocAsideOutline.has-outline[data-v-935f8a84]{display:block}.content[data-v-935f8a84]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-935f8a84]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-935f8a84]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-09de1c0f]{margin-top:64px}.edit-info[data-v-09de1c0f]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-09de1c0f]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-09de1c0f]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-09de1c0f]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-09de1c0f]{margin-right:8px}.prev-next[data-v-09de1c0f]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-09de1c0f]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-09de1c0f]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-09de1c0f]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-09de1c0f]{margin-left:auto;text-align:right}.desc[data-v-09de1c0f]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-09de1c0f]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cad61b99]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cad61b99]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}}@media (min-width: 960px){.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-82d4af08]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-82d4af08]{padding:0 48px}}@media (min-width: 960px){.container[data-v-82d4af08]{width:100%;padding:0 64px}}.vp-doc[data-v-82d4af08] .VPHomeSponsors,.vp-doc[data-v-82d4af08] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-82d4af08] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-82d4af08] .VPHomeSponsors a,.vp-doc[data-v-82d4af08] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-d2ecc192]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-d2ecc192]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-d2ecc192]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-d2ecc192]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-d2ecc192]{color:var(--vp-c-text-1)}.icon[data-v-d2ecc192]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-d2ecc192]{font-size:14px}.icon[data-v-d2ecc192]{font-size:16px}}.open>.icon[data-v-d2ecc192]{transform:rotate(90deg)}.items[data-v-d2ecc192]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-d2ecc192]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-d2ecc192]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-d2ecc192]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-d2ecc192]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-d2ecc192]{transition:all .2s ease-out}.flyout-leave-active[data-v-d2ecc192]{transition:all .15s ease-in}.flyout-enter-from[data-v-d2ecc192],.flyout-leave-to[data-v-d2ecc192]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-d1f28634]{opacity:1}.moon[data-v-d1f28634],.dark .sun[data-v-d1f28634]{opacity:0}.dark .moon[data-v-d1f28634]{opacity:1}.dark .VPSwitchAppearance[data-v-d1f28634] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-b6c34ac9]{position:relative}.VPFlyout[data-v-b6c34ac9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-b6c34ac9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b6c34ac9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b6c34ac9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-b6c34ac9]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-b6c34ac9],.button[aria-expanded=true]+.menu[data-v-b6c34ac9]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-b6c34ac9]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-b6c34ac9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-b6c34ac9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-b6c34ac9]{margin-right:0;font-size:16px}.text-icon[data-v-b6c34ac9]{margin-left:4px;font-size:14px}.icon[data-v-b6c34ac9]{font-size:20px;transition:fill .25s}.menu[data-v-b6c34ac9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-eee4e7cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eee4e7cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eee4e7cb]>svg,.VPSocialLink[data-v-eee4e7cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-9c663999]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-9c663999],.VPNavBarMenuLink[data-v-9c663999]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-ccf7ddec]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-ccf7ddec]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-ccf7ddec]:not(.home){background-color:transparent}.VPNavBar[data-v-ccf7ddec]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-ccf7ddec]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-ccf7ddec]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-ccf7ddec]{padding:0}}.container[data-v-ccf7ddec]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-ccf7ddec],.container>.content[data-v-ccf7ddec]{pointer-events:none}.container[data-v-ccf7ddec] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-ccf7ddec]{max-width:100%}}.title[data-v-ccf7ddec]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-ccf7ddec]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-ccf7ddec]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-ccf7ddec]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-ccf7ddec]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-ccf7ddec]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-ccf7ddec]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-ccf7ddec]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-ccf7ddec]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-ccf7ddec]{column-gap:.5rem}}.menu+.translations[data-v-ccf7ddec]:before,.menu+.appearance[data-v-ccf7ddec]:before,.menu+.social-links[data-v-ccf7ddec]:before,.translations+.appearance[data-v-ccf7ddec]:before,.appearance+.social-links[data-v-ccf7ddec]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-ccf7ddec]:before,.translations+.appearance[data-v-ccf7ddec]:before{margin-right:16px}.appearance+.social-links[data-v-ccf7ddec]:before{margin-left:16px}.social-links[data-v-ccf7ddec]{margin-right:-8px}.divider[data-v-ccf7ddec]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-ccf7ddec]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-ccf7ddec]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-ccf7ddec]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-2d7af913]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-05f27b2a]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-05f27b2a]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-ff6087d4]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-ff6087d4]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-ff6087d4]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-ff6087d4]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-ff6087d4]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-ff6087d4]{transform:rotate(45deg)}.button[data-v-ff6087d4]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-ff6087d4]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-ff6087d4]{transition:transform .25s}.group[data-v-ff6087d4]:first-child{padding-top:0}.group+.group[data-v-ff6087d4],.group+.item[data-v-ff6087d4]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b8d55f3b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b8d55f3b]{padding-bottom:10px}.item[data-v-b8d55f3b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b8d55f3b]{cursor:pointer}.indicator[data-v-b8d55f3b]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b8d55f3b]{background-color:var(--vp-c-brand-1)}.link[data-v-b8d55f3b]{display:flex;align-items:center;flex-grow:1}.text[data-v-b8d55f3b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b8d55f3b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b8d55f3b],.VPSidebarItem.level-2 .text[data-v-b8d55f3b],.VPSidebarItem.level-3 .text[data-v-b8d55f3b],.VPSidebarItem.level-4 .text[data-v-b8d55f3b],.VPSidebarItem.level-5 .text[data-v-b8d55f3b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b8d55f3b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b8d55f3b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b8d55f3b]{color:var(--vp-c-brand-1)}.caret[data-v-b8d55f3b]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-b8d55f3b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b8d55f3b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b8d55f3b]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b8d55f3b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b8d55f3b],.VPSidebarItem.level-2 .items[data-v-b8d55f3b],.VPSidebarItem.level-3 .items[data-v-b8d55f3b],.VPSidebarItem.level-4 .items[data-v-b8d55f3b],.VPSidebarItem.level-5 .items[data-v-b8d55f3b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b8d55f3b]{display:none}.VPSidebar[data-v-575e6a36]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-575e6a36]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-575e6a36]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-575e6a36]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-575e6a36]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-575e6a36]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-575e6a36]{outline:0}.group+.group[data-v-575e6a36]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-575e6a36]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3d121b4a]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{-webkit-user-select:none;user-select:none}.shiki{-webkit-user-select:text!important;user-select:text!important}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #427315 30%, #4cb94b);--vp-home-hero-image-background-image: linear-gradient(-45deg, rgba(6,162,143,.5) 60%, rgba(122,206,104,.5) 50%);--vp-home-hero-image-filter: blur(50px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(25px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(30px)}}.VPLocalSearchBox[data-v-43c4f204]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-43c4f204]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-43c4f204]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-43c4f204]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-43c4f204]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-43c4f204]{padding:0 8px}}.search-bar[data-v-43c4f204]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-43c4f204]{display:block;font-size:18px}.navigate-icon[data-v-43c4f204]{display:block;font-size:14px}.search-icon[data-v-43c4f204]{margin:8px}@media (max-width: 767px){.search-icon[data-v-43c4f204]{display:none}}.search-input[data-v-43c4f204]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-43c4f204]{padding:6px 4px}}.search-actions[data-v-43c4f204]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-43c4f204]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-43c4f204]{display:none}}.search-actions button[data-v-43c4f204]{padding:8px}.search-actions button[data-v-43c4f204]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-43c4f204]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-43c4f204]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-43c4f204]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-43c4f204]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-43c4f204]{display:none}}.search-keyboard-shortcuts kbd[data-v-43c4f204]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-43c4f204]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-43c4f204]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-43c4f204]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-43c4f204]{margin:8px}}.titles[data-v-43c4f204]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-43c4f204]{display:flex;align-items:center;gap:4px}.title.main[data-v-43c4f204]{font-weight:500}.title-icon[data-v-43c4f204]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-43c4f204]{opacity:.5}.result.selected[data-v-43c4f204]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-43c4f204]{position:relative}.excerpt[data-v-43c4f204]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-43c4f204]{opacity:1}.excerpt[data-v-43c4f204] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-43c4f204] mark,.excerpt[data-v-43c4f204] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-43c4f204] .vp-code-group .tabs{display:none}.excerpt[data-v-43c4f204] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-43c4f204]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-43c4f204]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-43c4f204],.result.selected .title-icon[data-v-43c4f204]{color:var(--vp-c-brand-1)!important}.no-results[data-v-43c4f204]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-43c4f204]{flex:none} diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7dc6644161401589a9f87b023e8832bc2670cba2 GIT binary patch literal 103112 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 literal 0 HcmV?d00001 diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 00000000..32b10406 --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"instructions.md":"qmaZDzzN","language_javascript_ternary-conditional-operator.md":"Br-QFQJa","software_db-browser-for-sqlite-save-password.md":"C-z3uKbH","language_javascript_alert-prompt-confirm.md":"DHWH9Al2","index.md":"BDhab17L","os_common_open-in-explorer-from-command-line.md":"BLCZDIEx","os_linux_install-zsh-and-oh-my-zsh.md":"BzEl7cj0","language_dart_flutter_widget-inkwell.md":"DnXGMLk_","language_dart_naming-convention.md":"SnPQkW0Y","language_css_code-style-guide.md":"Cna-gLBK","language_dart_flutter_load-external-json-file.md":"CdavlPVL","language_typescript_positive-number-type.md":"B5PjuLfw","os_linux_ls-file-type-string.md":"ClBI3LoU","language_common_json5.md":"DxQ9Ke5l","language_dart_flutter_flutter-library-flutter-icons.md":"Cu-vffq8","os_linux_firewall.md":"CjNw_F_H","language_javascript_clone-object-type-data.md":"BohrPaUF","language_common_variable-case-types.md":"CPGmPoSY","os_linux_connection-configuration-ftp.md":"B6osrkoJ","language_javascript_console.md":"UWC0JsKA","os_linux_sshd-tcp-keepalive.md":"ljkSrJVv","language_javascript_comments.md":"BjcGSz1M","language_dart_flutter_flutter-lint-depend-on-referenced-packages.md":"DaC5IWKA","os_linux_connection-configuration-telnet.md":"DJ1EmQW3","language_javascript_es11-nullish-coalescing-operator.md":"D3a4aDBZ","os_linux_linux-multipass.md":"C5Ou1_9I","os_linux_cd-argument-examples.md":"jRsOjHzO","os_common_create-large-size-file.md":"wCP1wJm9","language_javascript_es6-template-literals.md":"BAD5AcpC","misc_scripts_bash-git-pull-all-for-current-directory.md":"BIjGWw29","language_javascript_es6-symbol-data-type.md":"DHG3vAp7","language_javascript_framework_electron_complete-delete-data-file.md":"D7sKRu4r","language_javascript_library_using-clasp.md":"xZBJScD1","language_javascript_method-chaining.md":"Dn_lKFgS","os_linux_connection-configuration-xrdp.md":"oGX5mEvA","language_javascript_variable-type-check.md":"CgMSVv0Q","os_linux_install-snap-package.md":"BDJzu7Wh","misc_yubico-piv-tool-reset-all.md":"BB1ICp79","language_javascript_es11-optional-chaining.md":"nvSRIUCq","language_dart_flutter_upgrade-flutter-version.md":"Dxwe3XH4","language_dart_flutter_change-app-display-name.md":"B1SMmu75","language_dart_flutter_flutter-row-column-main-axis-size.md":"DCpTPXxC","language_javascript_es5-use-strict.md":"DHPHRI2V","language_javascript_framework_electron_electron-handle-crash.md":"CitAc_sG","language_javascript_code-style-guide.md":"6PRH9U8E","language_html5_code-style-guide.md":"B9ClEv1d","language_javascript_framework_electron_unpack-asar-file-format.md":"SedKHK-z","language_javascript_library_eslint_typescript-eslint-no-inferrable-types.md":"YuQEY5GU","language_javascript_switch.md":"DR7-5tO-"} diff --git a/index.html b/index.html new file mode 100644 index 00000000..30eb5acc --- /dev/null +++ b/index.html @@ -0,0 +1,27 @@ + + + + + + TIL | Today I Learned. 프로그래밍, 컴퓨팅 등의 분야에 대한 다양한 지식이나 팁들을 정리한 미니 블로그입니다. + + + + + + + + + + + + + + + + +
Skip to content

TIL

Today I Learned.

프로그래밍, 컴퓨팅 등의 분야에 대한 다양한 지식이나 팁들을 정리한 미니 블로그입니다.

study
+ + + + \ No newline at end of file diff --git a/instructions.html b/instructions.html new file mode 100644 index 00000000..ca8768a3 --- /dev/null +++ b/instructions.html @@ -0,0 +1,27 @@ + + + + + + 소개 | TIL + + + + + + + + + + + + + + + + +
Skip to content

소개

각종 분야에서 습득한 다양한 지식을 정리한 Jooy2Today I Learned 프로젝트에 오신 것을 환영합니다! 이 프로젝트는 2022년 1월 27일에 시작되었습니다.

가독성 있게 정리된 사이트에서 검색과 사이드 메뉴를 활용하여 문서를 찾아볼 수 있습니다.

TIL에서는 토막 지식이나 코드 스니펫과 같이 간략한 정보에 대한 내용만을 취급합니다. 조금 더 다양한 범위와 자세한 고찰이 포함된 정보들은 저의 개인 블로그 에서 포스팅되고 있습니다.

왼쪽의 메뉴에서 문서를 둘러보시거나, 상단의 검색으로 문서를 찾아보실 수 있습니다.

+ + + + \ No newline at end of file diff --git a/language/common/json5.html b/language/common/json5.html new file mode 100644 index 00000000..236f546c --- /dev/null +++ b/language/common/json5.html @@ -0,0 +1,57 @@ + + + + + + JSON5 파일 확장자 | TIL + + + + + + + + + + + + + + + + +
Skip to content

JSON5 파일 확장자

JSON5는 기존 JSON 포맷에서 부족했던 여러가지 단점을 보완한 파일 포맷이다. 파일 확장자가 .json5로 시작하여야 한다.

가장 큰 변동사항은 파일 내에 주석을 달 수 있다. 대부분의 프로그래밍 언어에서 사용하는 것과 동일하게 한줄 주석은 //로, 여러 줄 주석은 /*로 시작하고 */로 끝난다.

json5
{
+	id: 1234,
+	// This is single line comment
+	fruits: [
+		'apple',
+		'orange',
+		'banana' // Fruits
+	],
+	/* This
+     is
+     Multi line
+     comment
+    */
+	isEnable: true
+}

마지막 키값의 끝에 콤마(,)를 넣어도 오류가 발생하지 않는다. 선택적으로 데이터 끝에 콤마를 붙일 수 있다.

json5
{
+	id: 1234,
+	name: 'lee' // <<--- ','
+}

문자열 데이터는 \ 기호를 끝에 붙여 여러줄로 작성할 수 있다. (주의: \는 반드시 끝에 붙여야 한다. 마지막 줄엔 붙이지 않는다.)

json5
{
+	multiLineString: 'Hello\
+  World\
+  JSON5\
+  Sample'
+}

16진수, 소수점 표현, + 또는 - 기호, NaN 등의 여러 값 형식을 추가로 지원한다.

json5
{
+	id: 12345678,
+	NaN: NaN, // <--- NaN 데이터
+	infinity: Infinity, // <--- Infinity 데이터
+	plus: +1234, // <--- + 사용
+	minus: -1234, // <--- - 사용
+	hexadecimal: 0xbc614e, // <--- 16진수 데이터
+	leadingDecimalPoint: 0.1234 // <--- 선행 소수점 데이터
+}
+ + + + \ No newline at end of file diff --git a/language/common/variable-case-types.html b/language/common/variable-case-types.html new file mode 100644 index 00000000..e27ed96a --- /dev/null +++ b/language/common/variable-case-types.html @@ -0,0 +1,39 @@ + + + + + + 변수 이름 명명 시 케이스 타입 | TIL + + + + + + + + + + + + + + + + +
Skip to content

변수 이름 명명 시 케이스 타입

변수명을 정의할 때는 프로젝트나 언어의 특성에 맞게 통일성있게 구분 기호나 대/소문자를 활용해야 한다. 아래는 대부분의 언어에서 사용되는 변수명의 케이스 타입이다.

카멜 케이스 (Camel Case)

낙타의 굴곡진 형태에 비롯한 케이스 표기법으로 첫 문자는 소문자로, 이후 단어 부터 첫 문자 마다 대문자로 표현한다. 단어 간 구분 문자가 없어 간결하게 표현할 수 있으므로 대부분의 언어에서 권장하기도 한다.

txt
camelCase
+getCompanyInfo
+findElementById

파스칼 케이스 (Pascal Case)

카멜 케이스와 유사하지만 첫 문자를 대문자로 사용한다. 주로 클래스명을 정의할 때 첫 문자를 대문자로 사용하기 때문에 특별한 경우가 아니면 잘 사용하지 않는다.

txt
PascalCase
+GlobalOptions
+SystemFileInfo

스네이크 케이스 (Snake Case)

각 단어 사이에는 언더 바(_)를 사용하여 구분하며 문자는 모두 소문자 또는 대문자로 변환하여 주로 사용한다. 대문자 표현의 경우 상수(constant)를 표현할 때 사용되기도 한다.

txt
snake_case
+get_item_info
+file_size_humanized
+C_MAX_UPLOAD_FILE_SIZE

케밥 케이스 (Kebab Case)

모든 문자는 소문자로 표현하고 각 단어 사이에는 대시 기호(-)를 사용하여 구분한다. 일부 언어에서는 대시 기호를 사용하지 못할 수 있다. URL을 표현할 때 자주 사용되는 형식이기도 하다.

txt
kebab-case
+my-profile-info
+system-get-platform-name

헝가리안 표기법 (Hungarian Notation)

변수 앞에 데이터 타입을 붙인다. 변수에 잘못된 데이터 타입을 넣지 않도록 명확하게 인지할 수 있고 변수를 추적하지 않는 일반 텍스트 에디터나 기타 환경에서 데이터 타입을 쉽게 확인할 수 있다. 모던 프로그래밍 언어에서는 이 표기법을 권장하지 않기도 하고 최근 IDE에서는 잘못된 데이터 타입에 대한 추적이 우수하기 때문에 가급적 사용하지 않는 것이 좋다. 데이터형을 붙일 때는 전체 이름이나 축약형(b, i, str)을 사용하기도 하고, 카멜 케이스와 동시에 활용하기도 한다.

txt
intUserId (Integer)
+bIsActive (Boolean)
+strPassword (String)
+iPrice (Integer)
+ + + + \ No newline at end of file diff --git a/language/css/code-style-guide.html b/language/css/code-style-guide.html new file mode 100644 index 00000000..5d206455 --- /dev/null +++ b/language/css/code-style-guide.html @@ -0,0 +1,81 @@ + + + + + + CSS3 Code Style Guide | TIL + + + + + + + + + + + + + + + + +
Skip to content

CSS3 Code Style Guide

CSS

속성과 속성 사이, 속성과 값 사이에 공백을 붙인다.

🚫 Bad

css
.myClass {
+	display: block;
+	background: red;
+}

✅ Good

css
.myClass {
+	display: block;
+	background: red;
+}

여러 단계의 선택자일 수록 아래쪽에 배치한다.

🚫 Bad

css
.myClass > div > p {
+	color: white;
+}
+.myClass > div {
+	background: blue;
+}
+.myClass {
+	display: block;
+	background: red;
+}

✅ Good

css
.myClass {
+	display: block;
+	background: red;
+}
+.myClass > div {
+	background: blue;
+}
+.myClass > div > p {
+	color: white;
+}

필요하지 않은 경우 important를 남용하지 않는다.

🚫 Bad

css
.active {
+	color: blue !important;
+}
+.another-active {
+	color: red !important;
+	background: black !important;
+}

✅ Good

css
.active {
+	color: blue;
+}
+.another-active {
+	color: red !important;
+	background: black;
+}

속성 값이 0인 경우 단위를 사용하지 않는다.

🚫 Bad

css
.myDiv {
+	padding: 0px;
+}

✅ Good

css
.myDiv {
+	padding: 0;
+}

여러 방향의 속성을 정의할 경우 (특히 같은 값일 때) 가능한 한줄로 축약할 수 있도록 한다.

🚫 Not Good

css
.myDiv {
+	padding-left: 10px;
+	padding-right: 10px;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}

✅ Good

css
.myDiv {
+	padding: 10px;
+}

역할이 겹치는 속성을 중복하여 사용하지 않는다.

🚫 Not Good

css
.myDiv {
+	padding: 0 0 0 5px;
+	padding-left: 10px;
+}

✅ Good

css
.myDiv {
+	padding-left: 10px;
+}

각 방향 마다 서로 다른 값을 가지는 경우 padding이나 margin 속성의 경우 TRBL(Top, Right, Bottom, Left)의 순서로 작성할 수 있다.

css
.myDiv {
+	padding: 10px 5px 10px 20px;
+}
+ + + + \ No newline at end of file diff --git a/language/dart/flutter/change-app-display-name.html b/language/dart/flutter/change-app-display-name.html new file mode 100644 index 00000000..338a43d6 --- /dev/null +++ b/language/dart/flutter/change-app-display-name.html @@ -0,0 +1,45 @@ + + + + + + Flutter 앱 표시 이름 변경하기 | TIL + + + + + + + + + + + + + + + + +
Skip to content

Flutter 앱 표시 이름 변경하기

플랫폼별로 Flutter 앱의 표시 이름(앱 리스트에서 나타나는 이름)을 사용자 지정할 수 있다. 이를 설정하지 않은 경우 기본값은 pubspec.yamlname값을 사용한다.

아래 플랫폼별 앱 표시 이름을 변경한 후 다음 명령을 실행한다.

shell
$ flutter clean

이후 앱을 다시 빌드하면 해당 내용이 적용된다.

Android

android/app/src/main/AndroidManifest.xml 파일을 열고 applicationandroid:label 키를 찾아 해당 값({DisplayName})을 변경한다.

xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.company.app.app_name">
+   <application
+        android:label="{DisplayName}"
+        android:name="${applicationName}"
+        android:icon="@mipmap/ic_launcher">
+       ...
+   </application>
+    ...
+</manifest>

ios

ios/Runner/info.plist 파일을 열고 CFBundleName 키를 찾아 해당 값({DisplayName})을 변경한다.

  • 앱 이름에는 공백이 포함되지 않는 것을 권장한다.
xml
<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	...
+	<key>CFBundleName</key>
+	<string>{DisplayName}</string>
+    ...
+</dict>
+</plist>
+ + + + \ No newline at end of file diff --git a/language/dart/flutter/flutter-library-flutter-icons.html b/language/dart/flutter/flutter-library-flutter-icons.html new file mode 100644 index 00000000..1307a826 --- /dev/null +++ b/language/dart/flutter/flutter-library-flutter-icons.html @@ -0,0 +1,32 @@ + + + + + + Flutter flutter_icons 라이브러리 | TIL + + + + + + + + + + + + + + + + +
Skip to content

Flutter flutter_icons 라이브러리

여러 플랫폼의 앱 아이콘을 한번에 변경해주는 개발 유틸 (https://github.com/fluttercommunity/flutter_launcher_icons)

설치

dev_dependenciesflutter_launcher_icons 패키지를 설치한다.

yaml
dev_dependencies:
+  flutter_launcher_icons: ^0.12.0

이후 하단에 다음 내용을 구성한다. image_path에는 프로젝트 경로 루트 기준 변경할 아이콘의 경로를 입력한다.

yaml
flutter_icons:
+  android: true
+  ios: true
+  image_path: assets/icon/icon.png

이후 터미널에서 다음 명령어를 실행하여 아이콘을 적용할 수 있다. 기존의 아이콘은 사라지니 주의.

shell
flutter pub run flutter_launcher_icons:main

Troubleshooting

아래 에러가 발생한 경우:

shell
 ERROR: InvalidConfigException
+Cannot not find minSdk from android/app/build.gradle or android/local.propertiesSpecify minSdk in either android/app/build.gradle or android/local.properties

android/local.properties에 다음 내용을 추가한다.

txt
flutter.minSdkVersion=30
+ + + + \ No newline at end of file diff --git a/language/dart/flutter/flutter-lint-depend-on-referenced-packages.html b/language/dart/flutter/flutter-lint-depend-on-referenced-packages.html new file mode 100644 index 00000000..a1f23757 --- /dev/null +++ b/language/dart/flutter/flutter-lint-depend-on-referenced-packages.html @@ -0,0 +1,48 @@ + + + + + + Flutter Lint depend_on_referenced_packages | TIL + + + + + + + + + + + + + + + + +
Skip to content

Flutter Lint depend_on_referenced_packages

Flutter lint에서 depend_on_referenced_packages가 표시되는 경우가 있다.

dart
import 'package:path/path.dart'; // lint: depend_on_referenced_packages
+import 'package:path_provider/path_provider.dart';
+
+class Main {
+  Main()
+
+  get _textFilePath async {
+    final documentDir = await getApplicationDocumentsDirectory();
+
+    return join(documentDir, 'file.txt');
+  }
+}

위 코드 예시에서 join 메소드를 사용하면서 사용된 path 패키지를 import했을 때, 해당 라인에서 다음 에러가 발생한다.

txt
Depend on referenced packages.
+
+When importing a package, add a dependency on it to your pubspec.

사용한 패키지는 dart 기본 제공 패키지여도 가급적 pubspec.yamldependencies 목록에 추가해주는 것이 좋다.

yaml
dependencies:
+  flutter:
+    sdk: flutter
+
+  # The following adds the Cupertino Icons font to your application.
+  # Use with the CupertinoIcons class for iOS style icons.
+  cupertino_icons: ^1.0.5
+
+  path: ^1.8.1

위와 같이 dependenciespath 패키지를 추가한다.

+ + + + \ No newline at end of file diff --git a/language/dart/flutter/flutter-row-column-main-axis-size.html b/language/dart/flutter/flutter-row-column-main-axis-size.html new file mode 100644 index 00000000..bfafe907 --- /dev/null +++ b/language/dart/flutter/flutter-row-column-main-axis-size.html @@ -0,0 +1,81 @@ + + + + + + Flutter Row, Column 위젯의 mainAxisSize 파라미터 | TIL + + + + + + + + + + + + + + + + +
Skip to content

Flutter Row, Column 위젯의 mainAxisSize 파라미터

FlutterRow, Column 위젯에서 사용되는 파라미터인 mainAxisSize는 콘텐츠의 최대 너비와 높이를 결정하기 위해 사용한다. 값은 minmax 두가지가 있는데 MainAxisSize.min 값은 자식 위젯의 너비 또는 높이의 합이 부모의 너비 또는 높이이며 MainAxisSize.max는 주축의 전체 너비 또는 높이를 사용한다. 안드로이드에서 사용되는 wrap_contentmatch_parent를 대신하기도 한다.

Row(너비)의 wrap_content (Minimum width) 적용:

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Row(
+        mainAxisSize: MainAxisSize.min,
+        children: [ /* ... */ ],
+      )
+  );
+}

Row(너비)의 match_parent (Maximum width) 적용:

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Row(
+        mainAxisSize: MainAxisSize.max,
+        children: [ /* ... */ ],
+      )
+  );
+}

Column(높이)의 wrap_content (Minimum height) 적용:

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Column(
+        mainAxisSize: MainAxisSize.min,
+        children: [ /* ... */ ],
+      )
+  );
+}

Column(높이)의 match_parent (Maximum height) 적용:

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Column(
+        mainAxisSize: MainAxisSize.max,
+        children: [ /* ... */ ],
+      )
+  );
+}

Row, ColumnMainAxisSize와 비슷한 결과를 얻는 다른 방법은 WrapContainer 위젯을 사용할 수도 있다.

Wrap을 사용하여 너비와 높이를 최소로 적용:

이 위젯을 사용하면 너비와 높이를 동시에 적용한다.

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Wrap(
+        children: [ /* ... */ ],
+      )
+  );
+}

Container height 속성을 사용하여 너비와 높이를 최대로 적용:

너비는 width, 높이는 height로 적용한다.

dart
@override
+Widget build(BuildContext context) {
+  return Scaffold(
+      appBar: AppBar(title: const Text('App')),
+      body: Container(
+        width: double.infinity,
+        height: double.infinity,
+        children: [ /* ... */ ],
+      )
+  );
+}
+ + + + \ No newline at end of file diff --git a/language/dart/flutter/load-external-json-file.html b/language/dart/flutter/load-external-json-file.html new file mode 100644 index 00000000..9fb60264 --- /dev/null +++ b/language/dart/flutter/load-external-json-file.html @@ -0,0 +1,62 @@ + + + + + + Flutter 외부 JSON 파일 가져오기 | TIL + + + + + + + + + + + + + + + + +
Skip to content

Flutter 외부 JSON 파일 가져오기

아래와 같이 assets/json/users.json 파일이 있다고 가정한다면,

json
[
+	{
+		"id": 0,
+		"name": "lee"
+	},
+	{
+		"id": 1,
+		"name": "kim"
+	},
+	{
+		"id": 2,
+		"name": "park"
+	}
+]

pubspec.yaml 파일의 flutter -> assets에 파일이 포함된 경로(전체 또는 폴더)를 추가한다.

yaml
flutter:
+  # To add assets to your application, add an assets section, like this:
+  # assets:
+  #   - images/a_dot_burr.jpeg
+  #   - images/a_dot_ham.jpeg
+  assets:
+    - assets/json/

이후 Flutter 코드에서 사용할 때는 rootBundle.loadString을 사용하여 json 파일을 불러온 후 StirngList로 디코딩한다.

dart
import 'dart:convert';
+
+import 'package:flutter/services.dart';
+
+class Main {
+  Future<List<dynamic>> getListFromJson(path) async {
+    final String str = await rootBundle.loadString(path);
+    return json.decode(str);
+  }
+
+  run() async {
+    List<dynamic> jsonData =
+        await Utils.getListFromJson('assets/json/users.json');
+
+    print(jsonData[0]['name']); // 'lee'
+  }
+}

주의할 점은 rootBundle.loadString은 flutter 범위 내에서만 사용 가능하다.

+ + + + \ No newline at end of file diff --git a/language/dart/flutter/upgrade-flutter-version.html b/language/dart/flutter/upgrade-flutter-version.html new file mode 100644 index 00000000..b4c301be --- /dev/null +++ b/language/dart/flutter/upgrade-flutter-version.html @@ -0,0 +1,34 @@ + + + + + + 동일한 프로젝트에서 Flutter 버전 업그레이드 | TIL + + + + + + + + + + + + + + + + +
Skip to content

동일한 프로젝트에서 Flutter 버전 업그레이드

자동 업그레이드

터미널에서 다음 명령을 실행한다. 이 경우 Flutter 설치 경로의 파일이 최신 버전으로 대체된다.

shell
$ flutter clean
+$ flutter upgrade

수동 업그레이드 & 다운그레이드

프로젝트 업그레이드 전 열려있는 프로젝트를 닫는다.

원하는 버전의 Flutter SDK를 다운로드 한 후 환경변수에서 설정된 경로로 파일을 이동한다.

안드로이드 스튜디오를 사용하는 경우 프로젝트 경로의 .idea 디렉토리를 제거한다.

다시 프로젝트를 열어 인덱싱을 완료한 후 터미널에서 다음 명령을 실행한다.

shell
$ flutter clean
+$ flutter pub get

빌드 시 다음 에러가 발생하는 경우가 있다.

Could not get unknown property 'ndkVersion' for extension 'flutter' of type FlutterExtension.

android/app/build.gradle에서 버전별로 다음 내용을 수정해야 할 수 있다.

Flutter 3.x

android {
+    compileSdkVersion flutter.compileSdkVersion
+    ndkVersion flutter.ndkVersion
+}

Flutter 2.x

android {
+    compileSdkVersion {SDK Version}
+}
+ + + + \ No newline at end of file diff --git a/language/dart/flutter/widget-inkwell.html b/language/dart/flutter/widget-inkwell.html new file mode 100644 index 00000000..2aff781b --- /dev/null +++ b/language/dart/flutter/widget-inkwell.html @@ -0,0 +1,53 @@ + + + + + + Inkwell 위젯 | TIL + + + + + + + + + + + + + + + + +
Skip to content

Inkwell 위젯

Inkwell 위젯은 터치나 누르기 동작을 받아 처리할 수 없는 위젯에서 동작을 인식하게 해주거나 포커스 노드를 생성해주는 위젯이다.

TextContainer 위젯과 같이 터치하였을 때 어떠한 동작을 수행하려는 경우 해당 위젯의 상위 위젯으로 감싸여 사용할 수 있다.

dart
  @override
+  Widget build(BuildContext context) {
+		return InkWell(
+				onTap: () {
+          print('Hello');
+        },
+				child: const Text('Click Me'),
+		);
+	}

Inkwell 위젯은 동작 인식뿐만 아니라 머터리얼 디자인의 Ripple(파동) 터치 효과와 클릭 도중 하이라이트를 추가해준다. 파동 효과를 사용하지 않으려면 다음과 같이 splashColor 색상을 투명으로 지정한다.

dart
  @override
+  Widget build(BuildContext context) {
+		return InkWell(
+      	splashColor: Colors.transparent, // Add this
+				onTap: () {
+          print('Hello');
+        },
+				child: const Text('Click Me'),
+		);
+	}

Inkwell 위젯의 각종 효과가 표시되려면 Material 위젯이 부모 위젯으로 위치해야 한다. 만약 파동 효과와 같이 효과가 제대로 표시되지 않는다면 아래와 같이 상위 위젯을 Material 위젯으로 감싸고 색상을 투명으로 설정하여 문제를 해결할 수 있다.

dart
  @override
+  Widget build(BuildContext context) {
+		return Material( // Add this
+			color: Colors.transparent, // Add this
+			child: InkWell(
+				onTap: () {
+          print('Hello');
+        },
+				child: const Text('Click Me')));
+	}

Inkwell 위젯은 동작 인식 위젯인 GestureDetector과 유사하지만, GestureDetector의 경우 Inkwell보다 더 많은 동작에 대한 이벤트를 수행할 수 있으나 Inkwell과는 달리 파동이나 하이라이트와 같은 효과를 지원하지 않는다.

때문에 단순한 동작과 효과를 쉽게 구현하는 용도라면 GestureDetector 대신 Inkwell 위젯을 사용하는 방법도 있다.

+ + + + \ No newline at end of file diff --git a/language/dart/naming-convention.html b/language/dart/naming-convention.html new file mode 100644 index 00000000..c97e67f5 --- /dev/null +++ b/language/dart/naming-convention.html @@ -0,0 +1,55 @@ + + + + + + Dart 네이밍 컨벤션 (Dart Naming Convention) | TIL + + + + + + + + + + + + + + + + +
Skip to content

Dart 네이밍 컨벤션 (Dart Naming Convention)

폴더 이름과 파일 이름은 스네이크 케이스(snake_case)를 사용한다.

txt
test_utils/
+plugins/
+main_screen.dart
+file_util.dart

폴더명은 복수형을 사용하며, 파일명은 가급적 단수형을 사용한다.

txt
utils/
+widgets/
+screens/
+test_screen.dart

변수 이름은 카멜 케이스(camelCase)를 사용한다.

dart
String userId = 'user';

가급적 변수가 private일 때만 언더스코어(_)를 사용한다.

dart
String _ = 'user';

라이브러리 프리픽스값은 스네이크 케이스(snake_case)를 사용한다.

dart
import 'package:flutter/material.dart' as flutter_material;

함수 이름은 카멜 케이스(camelCase)를 사용한다.

dart
bool initializeScreen() {
+  return true;
+}
+
+@override
+void initState() {
+  initializeScreen();
+  super.initState();
+}

클래스 이름은 카멜 케이스(camelCase)를 사용한다.

dart
class MainApp extends StatefulWidget {
+  const MainApp({Key? key}) : super(key: key);
+
+  @override
+  State<MainApp> createState() => _MainAppState();
+}

가능하다면 파일 이름의 끝에 디렉토리 이름을 포함한다.

txt
screens/
+    ㄴ main_screen.dart
+    ㄴ purchase_screen.dart

파일 내 단일 클래스가 존재하는 경우 파일명과 동일한 이름을 사용한다.

dart
// purchase_screen.dart
+
+class PurchaseScreen extends StatefulWidget {
+  const PurchaseScreen({Key? key}) : super(key: key);
+
+  @override
+  State<PurchaseScreen> createState() => _PurchaseScreenState();
+}
+ + + + \ No newline at end of file diff --git a/language/html5/code-style-guide.html b/language/html5/code-style-guide.html new file mode 100644 index 00000000..9e4742f9 --- /dev/null +++ b/language/html5/code-style-guide.html @@ -0,0 +1,90 @@ + + + + + + HTML5 Code Style Guide | TIL + + + + + + + + + + + + + + + + +
Skip to content

HTML5 Code Style Guide

HTML

태그는 모두 소문자로 작성한다.

🚫 Bad

html
<div id="container"></div>

🚫 Bad

html
<div id="container"></div>

✅ Good

html
<div id="container"></div>

태그의 시작점과 끝점, 속성과 속성 사이에는 공백을 넣지 않는다.

🚫 Bad

html
<div id="root" class="container"></div>

✅ Good

html
<div id="root" class="container"></div>

태그 속성은 큰따옴표()로 구분한다.

🚫 Bad

html
<div id="container"></div>

✅ Good

html
<div id="container"></div>

인라인 스타일을 가능한 사용하지 않는다.

🚫 Bad

html
<div style="color: green"></div>

✅ Good

html
<div class="myDiv"></div>
+...
+<style>
+	.myDiv {
+		color: green;
+	}
+</style>

script 태그는 body 하단에 두는 것을 권장한다.

🚫 Bad

html
<head>
+	<script>
+		...
+	</script>
+</head>
+<body>
+	...
+</body>

🚫 Bad

html
<head>
+	...
+</head>
+<body>
+	...
+	<script>
+		...
+	</script>
+	...
+</body>

✅ Good

html
<body>
+	...
+</body>
+<script>
+	...
+</script>

Heading 태그에서 h1은 한번만 사용한다.

🚫 Bad

html
<h1>코드 스타일 가이드</h1>
+<p>내용</p>
+<h1>참고자료</h1>
+<p>내용</p>

✅ Good

html
<h1>코드 스타일 가이드</h1>
+<p>내용</p>
+<h2>참고자료</h2>
+<p>내용</p>

Heading은 높은 순서대로, 의미있게 사용해야 하며 내용 콘텐츠에는 사용하지 않는다.

  • 핵심적인 제목은 h1 태그로 한번만
  • h2, h3, h4... 순서로 작성
  • h1은 제목, h2~h6은 분류, 부제목에만 사용할 것

🚫 Bad

html
<h1>코드 스타일 가이드</h1>
+<h3>JavaScript</h3>
+<p>내용</p>
+<h3>HTML5</h3>
+<h6>HTML 태그를 올바르게 사용해야 한다.</h6>
+<p>내용</p>
+<h5>참고자료</h5>
+<p>내용</p>

✅ Good

html
<h1>코드 스타일 가이드</h1>
+<h2>JavaScript</h2>
+<p>내용</p>
+<h2>HTML5</h2>
+<p>HTML 태그를 올바르게 사용해야 한다.</p>
+<p>내용</p>
+<h2>참고자료</h2>
+<p>내용</p>

리스트나 목록을 태그로 표현할 때 개행을 활용한다.

🚫 Bad

html
<ul>
+	<li>사과</li
+	><li>바나나</li
+	><li>포도</li>
+</ul>

✅ Good

html
<ul>
+	<li>사과</li>
+	<li>바나나</li>
+	<li>포도</li>
+</ul>

이벤트 처리 명령은 script 태그로 빼는 것이 좋다.

🚫 Bad

html
<button onclick="{ console.log('hello'); }">Test Button</button>

✅ Good

html
<body>
+	<button onclick="onClickTestButton()">Test Button</button>
+</body>
+
+<script type="text/javascript">
+	function onClickTestButton() {
+		console.log('hello');
+	}
+</script>
+ + + + \ No newline at end of file diff --git a/language/javascript/alert-prompt-confirm.html b/language/javascript/alert-prompt-confirm.html new file mode 100644 index 00000000..c8e2460b --- /dev/null +++ b/language/javascript/alert-prompt-confirm.html @@ -0,0 +1,33 @@ + + + + + + alert, prompt, confirm | TIL + + + + + + + + + + + + + + + + +
Skip to content

alert, prompt, confirm

alertprompt, 그리고 confirm은 웹 브라우저에서 안내 팝업을 띄우는 기능을 한다. 브라우저에 내장된 메시지 창을 띄우는 것이기 때문에 스타일을 사용자 지정할 수는 없으며 모던 웹 디자인 개발 추세에서는 가급적이면 이 세가지 메시지 창보다는 디자인 프레임워크의 다이얼로그(모달)을 활용하는 경우가 많다.

alert는 웹개발자가 특정 변수를 띄우기 위한 디버그용으로도 많이 사용되어왔다. 하지만 이 또한 console이라는 대체 함수가 있으니 참고한다.

alert

alert는 단순 텍스트의 경고 메시지를 띄운다.

javascript
alert('Warning!');

prompt

prompt는 사용자에게 텍스트 응답을 받을 수 있는 대화상자를 띄운다. 사용자가 입력한 응답 메시지는 반환값에 돌아온다. 만약 사용자가 취소하였을 경우 null이 반환될 것이다. 단, 사용자가 단순히 빈 값으로 엔터를 입력하면 null이 아닌 빈 string 타입의 데이터가 들어오니 참고한다. 사용자의 취소는 메시지 창에서 취소를 클릭하였거나 ESC를 눌러서 취소하는 상황이 있다.

javascript
const response = prompt('Enter your name...');
+
+console.log(response);

또한 prompt에 두번째 인자값을 주어 기본으로 프롬프트 입력란에 표시할 값을 지정할 수 있다.

javascript
const response = prompt('Enter your name...', 'hello');
+
+console.log(response);

confirm

confirm은 사용자에게 특정 메시지와 확인/취소 창을 띄운다. 사용자가 확인을 누르면 true, 취소를 누르면 false가 반환된다.

javascript
const response = confirm('Is that true?');
+
+console.log(response); // `true` or `false`
+ + + + \ No newline at end of file diff --git a/language/javascript/clone-object-type-data.html b/language/javascript/clone-object-type-data.html new file mode 100644 index 00000000..e405aa30 --- /dev/null +++ b/language/javascript/clone-object-type-data.html @@ -0,0 +1,52 @@ + + + + + + 객체 타입의 데이터 복제 | TIL + + + + + + + + + + + + + + + + +
Skip to content

객체 타입의 데이터 복제

JavaScript에서 객체(object) 형식의 데이터는 다른 변수에 재할당하여도 속성 값이 동시에 변경될 수 있다.

예를 들어 다음과 같이 objA, objB의 두 변수가 있고, objB 변수에는 objA를 대입한다. 이후 objB 변수의 age 속성 값을 20으로 변경하였다.

javascript
const objA = { name: 'Lee', age: 10 };
+const objB = objA;
+
+objB.age = 20;
+
+console.log(objA.age); // 20
+console.log(objB.age); // 20

이 때 직접적으로 조작하지 않은 objAage 속성 값도 20으로 변경되었음을 확인할 수 있다.

자바스크립트 객체를 다른 변수에 할당할 경우 데이터 그대로를 복제하는 것이 아닌 참조값을 저장한다. 또한 복잡한 단계로 구성된 객체를 복제하기 위해 Object.assign을 사용할 때에도 문제가 발생할 수 있다. 따라서 원본 객체를 유지하면서 객체 값 그대로 새로운 변수에 복제하려면 다른 방법을 사용해야 한다.

아래 방법 중 일부는 객체 내 속성값의 모든 데이터 타입을 지원하지 않을 수 있다. 여기서는 중첩된 데이터 속성까지 모두 복제 가능한 방법만 기술하였다.

structuredClone 사용 (권장)

structuredClone은 브라우저 레벨에서 지원되는 객체 복제 메소드이다. 별도의 서드파티 모듈이나 직접적으로 구현할 필요 없이 단 한줄로 사용할 수 있다.

javascript
const objA = { name: 'Lee', age: 10 };
+
+const objB = structuredClone(objA);
+
+objB.age = 20;
+
+console.log(objA.age); // 10
+console.log(objB.age); // 20

structuredClone은 최신 브라우저에서 지원되며 오래된 브라우저에서는 동작하지 않을 수 있으므로 다음 페이지에서 호환 여부를 확인한다: https://caniuse.com/?search=structuredclone

NodeJS는 18.x 버전 이후부터 정식으로 사용할 수 있다.

lodash cloneDeep 사용

lodash 모듈은 자바스크립트 코드 작성에 많은 도움을 주는 유틸리티 함수의 집합체 모듈이다. 유사 모듈로는 jquery, underscore.js 등이 있다.

javascript
const objects = [{ a: 1 }, { b: 2 }];
+
+const deep = _.cloneDeep(objects);
+
+console.log(deep[0] === objects[0]); // false

여러가지 형식에 대해 객체 복제에 대한 많은 검증이 완료된 메소드이므로 안심하고 사용할 수 있다. 하지만 이 메소드를 사용하기 위해 무거운 lodash 모듈을 사용해야 하는 것이 단점이 될 수 있다.

clone 모듈 사용

node-clone 객체 복제 전용 모듈을 사용하여 객체를 복제할 수 있다. 많은 다운로드 수와 GitHub 스타 수로 신뢰할 수 있고 위 방법들 중에서 퍼포먼스가 가장 좋다고 한다. 하지만 유지보수가 오래전에 끊겼으며 몇가지 이슈도 존재하는 것으로 보인다.

javascript
const clone = require('clone');
+
+const a = { foo: { bar: 'baz' } }; // initial value of a
+const b = clone(a); // clone a -> b
+
+a.foo.bar = 'foo'; // change a
+
+console.log(a); // show a
+console.log(b); // show b
+ + + + \ No newline at end of file diff --git a/language/javascript/code-style-guide.html b/language/javascript/code-style-guide.html new file mode 100644 index 00000000..5a3f6f7a --- /dev/null +++ b/language/javascript/code-style-guide.html @@ -0,0 +1,176 @@ + + + + + + JavaScript Code Style Guide | TIL + + + + + + + + + + + + + + + + +
Skip to content

JavaScript Code Style Guide

개인적이지만 합당한, 간결하면서도 모던한 코드 작성 스타일 가이드

JavaScript (ES6)

var 대신 constlet을 사용한다.

🚫 Bad

javascript
var test = 10;
+var ADD = 10;
+
+test += ADD;
+console.log(test);

✅ Good

javascript
let test = 10;
+const ADD = 10;
+
+test += ADD;
+console.log(test);

삼항연산자에 function을 사용하지 않는다.

🚫 Bad

javascript
return isTrue ? trueFunction() : falseFunction();

✅ Good

javascript
if (isTrue) {
+	trueFunction();
+} else {
+	falseFunction();
+}

중첩된 삼항연산자를 가급적 지양하고 if문으로 대체한다.

🚫 Bad

javascript
return isTrue ? (isAlsoTrue ? trueFunction() : halfTrueFunction()) : falseFunction();

✅ Good

javascript
if (isTrue && isAlsoTrue) {
+	trueFunction();
+} else if (isTrue) {
+	halfTrueFunction();
+} else {
+	falseFunction();
+}

Arrow Function의 인자가 1개일 때 괄호를 넣지 않는다.

🚫 Bad

javascript
arr.map((v) => {});

✅ Good

javascript
arr.map((v) => {});

리턴만 존재하는 Arrow Function은 한줄로 축약한다.

🚫 Not Good

javascript
const sum = (a, b) => {
+	return a + b;
+};

✅ Good

javascript
const sum = (a, b) => a + b;

많은 단계의 callbackasyncawait으로 대체한다.

🚫 Not Good

javascript
function main() {
+	first().then(() => {
+		second().then(() => {
+			third().then(() => {
+				// ...
+			});
+		});
+	});
+}

✅ Good

javascript
async function main() {
+	await first();
+	await second();
+	await third();
+}

JavaScript

String은 작은따옴표로 표시하는 것이 좋다.

✅ Good

javascript
let str = 'TEST';

✅ Very Good

javascript
let srt = 'TEST';

Object의 길이 체크는 Object.keys를 사용한다.

🚫 Bad

javascript
const obj = { a: 1 };
+
+if (obj.length !== 0) {
+	// ...
+}

✅ Good

javascript
const obj = { a: 1 };
+
+if (Object.keys(obj).length) {
+	// ...
+}

Object의 속성과 값이 동일한 이름일 경우 단축문을 사용한다.

🚫 Bad

javascript
const apple = 'mac';
+
+const obj = {
+	apple: apple
+};

✅ Good

javascript
const apple = 'mac';
+
+const obj = {
+	apple
+};

Object의 단축 속성, 단축되지 않은 속성 순서로 균일하게 배치한다.

🚫 Bad

javascript
const apple = 'mac';
+const microsoft = 'windows';
+const obj = {
+	microsoft,
+	redhat: 'rhel',
+	apple
+};

✅ Good

javascript
const apple = 'mac';
+const microsoft = 'windows';
+const obj = {
+	apple,
+	microsoft,
+	redhat: 'rhel'
+};

변수 할당 시 null 값을 대체할 값을 지정할 때 if문 대신 OR 기호나 nullish (??)를 활용한다.

🚫 Bad

javascript
let value = currentValue;
+
+if (!value) {
+	value = 'Unknown';
+}

✅ Good

javascript
let value = currentValue || 'Unknown';

✅ Good

javascript
let value = currentValue ?? 'Unknown';

for문에서 length를 사용할 때 조건식에는 캐시된 값을 사용한다.

🚫 Bad

조건문이 실행될 때 마다 length 값을 계산한다.

javascript
const arr = [1, 2, 3, 4];
+
+for (let i = 0; i < arr.length; i++) {}

✅ Good

javascript
const arr = [1, 2, 3, 4];
+const arrLength = arr.length;
+
+for (let i = 0; i < arrLength; i++) {}

✅ Good

javascript
const arr = [1, 2, 3, 4];
+
+for (let i = 0, iLength = arr.length; i < iLength; i++) {}

리턴할 때 한번만 사용되는 변수는 가급적 사용하지 않는다.

🚫 Bad

javascript
function sum(a, b) {
+	const test = a + b;
+	return test;
+}

✅ Good

javascript
function sum(a, b) {
+	return a + b;
+}

nullundefinedfalse값으로 대체할 수 있다.

🚫 Bad

javascript
if (value === null) {
+	// ...
+}

✅ Good

javascript
if (!value) {
+	// ...
+}

모호한 부울연산은 괄호로 구분한다.

🚫 Bad

javascript
if (a || (b && c)) {
+	// ...
+}

✅ Good

javascript
if (a || (b && c)) {
+	// ...
+}

switch문에서 default는 하단에 배치한다.

🚫 Bad

javascript
switch (company) {
+	default:
+		break;
+	case 'apple':
+		// apple...
+		break;
+	case 'samsung':
+		// samsung...
+		break;
+}

✅ Good

javascript
switch (company) {
+	case 'apple':
+		// apple...
+		break;
+	case 'samsung':
+		// samsung...
+		break;
+	default:
+		break;
+}

비교 연산자는 자료형을 확인할 수 있도록 동등 연산자(==) 대신 일치 연산자(===)를 사용한다.

숫자 1과 문자열 '1'을 엄격하게 비교하기 위해서는 == 를 사용해서는 안된다.

🚫 Bad

javascript
if (a == 0) {
+	// ...
+}

✅ Good

javascript
if (a === 0) {
+	// ...
+}

Accessorget, set을 활용한 이름으로 지정한다.

🚫 Bad

javascript
const box = new Box();
+
+box.color(); // get current color
+box.color('red'); // set color to red

✅ Good

javascript
const box = new Box();
+
+box.getColor(); // get current color
+box.setColor('red'); // set color to red

긴 메소드 체이닝 함수는 여러줄로 표시하고 인덴트를 활용한다.

🚫 Bad

javascript
box().select().delete().updateStatus().refresh();

✅ Good

javascript
box().select().delete().updateStatus().refresh();

중첩되는 여러줄의 코드는 의미있는 묶음일 경우 한줄 주석으로 작성하지 않는다.

🚫 Bad

javascript
function sum() {
+	// let a = 1;
+	// let b = 2;
+	// return a + b;
+}

✅ Good

javascript
function sum() {
+	/*
+    let a = 1;
+    let b = 2;
+    return a + b;
+    */
+}

추가 작성 또는 수정이 필요한 내용은 작업 주석을 사용한다.

  • TODO: 추후 작성해야하는 기능 또는 리팩토링이 필요한 코드
  • FIXME: 해당 부분에 문제가 있어 추후 수정이 필요한 코드
  • XXX: 구현이 완료되지 않았거나 재작성 필요, 또는 완전하지 않은 코드

🚫 Bad

javascript
function sum() {
+	// The given argument values must be added together
+}

✅ Good

작업 주석의 콜론 뒤에는 공백이 들어가야 한다.

javascript
function sum() {
+	// TODO: The given argument values must be added together
+}

alert, confirm은 가능한 배제하고 로깅은 console을 사용한다.

🚫 Bad

javascript
alert('error!');
+if (confirm('continue?')) {
+}

✅ Good

javascript
console.error('error!');
+console.log('log');
+console.info('info');

Console log에 StringObject를 효율적으로 표시하는 방법

🚫 Bad

javascript
const obj = { a: 1 };
+
+console.log('test:' + obj); // return 'test: [object Object]'

✅ Good

javascript
const obj = { a: 1 };
+
+console.log('test:', obj); // return 'test: { a: 1 }'

Prettier

ifelse가 있을 경우 중괄호를 혼용하거나 한줄로 작성하지 않는다.

🚫 Bad

javascript
if (isTrue) doFunction();
+else {
+	doAnotherFunction();
+}

🚫 Bad

javascript
if (isTrue) doFunction();
+else doAnotherFunction();

✅ Good

javascript
if (isTrue) {
+	doFunction();
+} else {
+}

if문이 종료되는 중괄호는 else 앞에 붙인다.

🚫 Bad

javascript
if (isTrue) {
+} else {
+}

✅ Good

javascript
if (isTrue) {
+} else {
+}

ifelse문의 리턴값이 각각 true/false값일 경우 한줄로 축약한다.

🚫 Bad

javascript
if (isTrue) {
+	return true;
+} else {
+	return false;
+}

✅ Good

javascript
return isTrue;
+ + + + \ No newline at end of file diff --git a/language/javascript/comments.html b/language/javascript/comments.html new file mode 100644 index 00000000..5cb1dffd --- /dev/null +++ b/language/javascript/comments.html @@ -0,0 +1,41 @@ + + + + + + 주석 (Comments) | TIL + + + + + + + + + + + + + + + + +
Skip to content

주석 (Comments)

자바스크립트에서의 주석은 대부분의 프로그래밍 언어와 유사한 방식으로 사용할 수 있다. 보통 한줄 주석이나 여러 줄 주석이 있으며 한줄 주석은 // 뒤에, 여러줄 주석은 /**/ 사이에 텍스트를 남긴다.

javascript
// This line is a comment.
+console.log('Hello'); // 'Hello'
+
+/* This line is a comment.
+ *
+ * This part of the code is also not executed.
+ * function Main () {
+ *   console.log('Hello');
+ * }
+ *
+ * Main();
+ *
+ * */

주석과 텍스트 사이에는 공백이 들어가는 것이 좋다.

주석은 실행되는 코드가 아니기 때문에 여러가지 목적으로 활용된다.

  • 알기 쉬운 코드 이해를 위한 설명을 위해
  • 테스트용으로 잠시 특정 코드의 실행을 방지하기 위해

일부 IDE에서는 특수한 포맷으로 작성된 주석을 해석하여 정리하므로 여러 용도로 활용할 수 있다. 예를 들어 다음과 같이 사용한다.

javascript
function Main() {
+	// TODO: Write the Main function
+}

TODO: (공백으로 구분)를 붙여 작성하면 IDE는 할일 목록에 해당 라인의 코드를 바로가기 할 수 있는 리스트를 생성한다. 이외에도 여러가지 포맷들이 있다. (IDE마다 처리 방식이 다를 수 있으며 이 것이 공식적인 것은 아니다.)

  • TODO: 추후 동작에 있어 작성이나 수정이 필요한 부분
  • NOTE: 코드가 동작하는데 유의할 점이나 명확하지 않은 동작에 대한 참고사항
  • FIXME: 해당 코드에 대한 검토 및 재작성이 필요함
  • BUG: 해당 코드에 문제가 있음
  • XXX: 확실하지 않거나, 수정이 필요하거나, 완료되지 않은 부분

일반적으로 자바스크립트 주석은 외부에 노출되기 때문에 중요한 코드는 주석에 포함하지 않는 것이 좋다. (컴파일러에 따라 주석을 알아서 제거해주기도 한다.)

매 코드 줄 마다 주석을 달아 설명하는 것 보다는 이해가 필요하거나 복잡한 로직을 처리하는 부분에 명확하게 작성하는 것이 바람직하다.

+ + + + \ No newline at end of file diff --git a/language/javascript/console.html b/language/javascript/console.html new file mode 100644 index 00000000..df38ea1f --- /dev/null +++ b/language/javascript/console.html @@ -0,0 +1,58 @@ + + + + + + console로 로깅 메시지 출력하기 | TIL + + + + + + + + + + + + + + + + +
Skip to content

console로 로깅 메시지 출력하기

console은 자바스크립트에서 제공하는 로깅 객체이며 브라우저에 탑재된 콘솔이나 터미널 출력을 통해 매시지를 출력할 수 있게 한다. 주로 개발 환경에서 결과를 확인하는 테스트 용도로 사용된다. 과거에는 alert가 많이 활용되었으나 보안이나 접근성 문제로 인해 최근엔 console로 대체하여 사용한다.

커맨드라인 명령형 프로그램이 아닌 웹사이트에서는 alert의 문제와 같이 보안을 위해 프로덕션 환경에서 콘솔 로그를 출력하지 않는 것이 좋다. 확인이 끝난 콘솔 메시지는 삭제해주는 것이 좋다.

console의 가장 많이 사용되는 메소드는 log이며 아래와 같이 문자열이나 특정 변수를 콘솔에 출력할 수 있다.

javascript
const hello = 'Hello';
+const number = 12345;
+console.log('Hello'); // 'Hello'
+console.log(hello); // 'Hello'
+console.log(number); // 12345

브라우저 콘솔과 같은 개발자 도구에서는 출력되는 데이터의 자료형에 맞게 색상 등으로 구분하여 출력해준다. 문자열이나 데이터를 조합하고자 하는 경우 여러 인자를 콤마(,)로 넘겨 쉽게 표현할 수 있다. 마찬가지로 데이터형에 맞게 표시된다.

javascript
const hello = 'Hello';
+const number = 12345;
+console.log('Hello', number); // 'Hello' 12345

배열이나 객체를 출력할 수도 있다.

javascript
const arr = [1, 2, 3];
+const obj = {
+	hello: 'world',
+	child: {
+		hello: 'world'
+	}
+};
+
+console.log(arr); // [1, 2, 3]
+console.log(obj); // {hello: 'world', child: {…}}
+console.log(obj.hello); // 'world'

유의할점은 객체의 경우 하위 항목이 모두 표시되지 않을 수 있다. 이럴 때는 console.dir을 사용해서 객체의 모든 항목을 모두 표시할 수 있다. 다만 브라우저 콘솔에서는 동작하지 않으며 아래와 같이 { depth: null }을 옵션 인자로 포함해야 한다.

javascript
const obj = {
+	hello: 'world',
+	child: {
+		hello: 'world'
+	}
+};
+console.dir(obj, { depth: null }); // { hello: 'world', child: { hello: 'world' } };

NodeJSutil.inspect를 사용하여 객체를 모두 표시할 수 있다. 다만 특별한 경우가 아니라면 console.dir을 사용하는 것이 더 간편하다.

javascript
import { inspect } from 'util';
+
+console.log(inspect(obj, { showHidden: false, depth: null, colors: true }));
+// inspect(variable, showHidden, depth, colors)
+console.log(inspect(obj, false, null, true));

한편 console은 경고나 오류, 안내와 같이 목적이 서로 다른 메시지를 출력하고자 하는 경우 아래 각각의 메소드를 통해 표시할 수 있다. 브라우저 콘솔에서는 배경색이나 글자색을 변경함으로서 메시지가 안내인지 에러인지 명확하게 구분하게 해준다.

javascript
console.debug('디버깅용 메시지');
+console.log('로그');
+console.info('정보');
+console.warn('경고');
+console.error('문제 발생');

치환 가능한 문자열을 제공하여 문자열과 변수를 구분하여 표시할 수도 있다.

  • %d: 정수
  • %s: 문자열
  • %f: 부동소수점 수
  • %o: 객체
javascript
const count = 1;
+console.log('count: %d and user: %s', count, 'Lee'); // 'count: 1 and user: Lee'

브라우저 콘솔에 한해 콘솔 메시지에 CSS를 적용하여 원하는 스타일을 사용자지정할 수 있다. 위의 치환 문자열과 같이 %c 문자를 사용한다.

javascript
console.log('normal text & %c styled text', 'font-weight: bold; font-size: 20px');

이외에도 콘솔 내 모든 출력을 지우려면 console.clear를 사용할 수 있다.

javascript
console.clear();
+ + + + \ No newline at end of file diff --git a/language/javascript/es11-nullish-coalescing-operator.html b/language/javascript/es11-nullish-coalescing-operator.html new file mode 100644 index 00000000..b1ac8c1b --- /dev/null +++ b/language/javascript/es11-nullish-coalescing-operator.html @@ -0,0 +1,35 @@ + + + + + + 널 병합 연산자 (Nullish coalescing operator) | TIL + + + + + + + + + + + + + + + + +
Skip to content

널 병합 연산자 (Nullish coalescing operator)

널 병합 연산자(??)는 ES2020(ES11) 표준으로 지정된 JavaScript의 연산자이다. 기존의 논리 OR 연산자 (||)와 논리 AND 연산자 (&&)에서 좌측의 값(피연산자)이 falsy한 값일 때 우측의 값을 반환하는 형식이었다면, 널 병합 연산자는 좌측의 값이 오직 null이나 undefined일 때만 우측의 값을 반환한다.

여기서 falsy한 값은 주로 다음과 같은 값들이 있다:

  • false
  • 0
  • ''
  • null
  • undefined
  • NaN

위의 값을 일반적으로 사용하는 연산자를 사용하여보면, falsy한 값에 대해 우측의 값 'FALSE'를 반환할 것이다.

javascript
console.log(0 || 'FALSE'); // 'FALSE'
+console.log(false || 'FALSE'); // 'FALSE'
+console.log('' || 'FALSE'); // 'FALSE'
+console.log(null || 'FALSE'); // 'FALSE'
+console.log(undefined || 'FALSE'); // 'FALSE'

그러나 널 병합 연산자를 사용하면 결과가 달라진다.

javascript
console.log(0 ?? 'FALSE'); // 0
+console.log(false ?? 'FALSE'); // false
+console.log('' ?? 'FALSE'); // ''
+console.log(null ?? 'FALSE'); // 'FALSE'
+console.log(undefined ?? 'FALSE'); // 'FALSE'

피연산자가 nullundefined일 경우에만 'FALSE'가 반환된다.

이러한 특성 때문에 조금 더 명확하게 nullish한 데이터를 잡아낼 수 있다. 01로 리턴되는 값에 대해 조건문의 처리에서 실수가 발생할 가능성도 적어진다.

Reference

+ + + + \ No newline at end of file diff --git a/language/javascript/es11-optional-chaining.html b/language/javascript/es11-optional-chaining.html new file mode 100644 index 00000000..e80eb068 --- /dev/null +++ b/language/javascript/es11-optional-chaining.html @@ -0,0 +1,55 @@ + + + + + + 옵셔널 체이닝 (Optional Chaining) | TIL + + + + + + + + + + + + + + + + +
Skip to content

옵셔널 체이닝 (Optional Chaining)

옵셔널 체이닝은 ECMAScript 2020(ES11) 표준을 지원하는 환경에서 사용할 수 있다.

javascript
const layout = {
+	header: {
+		menu: {
+			active: 0,
+			items: ['home', 'login', 'admin']
+		},
+		height: 100,
+		onMenuClick: function (index) {
+			console.log('Click: ', index);
+		}
+	},
+	body: {
+		heading: 'hello',
+		desc: 'world'
+	},
+	footer: {
+		copyright: 'ⓒ 2022'
+	}
+};

위 코드와 같이 단계적으로 구성된 객체가 주어질 때 헤더의 메뉴 리스트에 접근하기 위해서는 layout.header.menu.items와 같이 하위 속성에 순차적으로 접근하여 값을 얻을 수 있다.

javascript
const menus = layout.header.menu.items;
+console.log(menus); // ['home', 'login', 'admin']

그렇다면 layout 또는 하위 객체 중 하나가 null 또는 undefined일 경우에는 어떻게 될까? JavaScript에서는 다음과 같은 에러 메시지를 출력한다.

shell
TypeError: Cannot read properties of null (reading 'header')

header를 참조하기 전 상위 값이 null이거나 undefined이므로 더 이상 참조할 속성이 없어 발생하는 에러이다. 따라서 일반적으로는 layout에 대한 참조 가능한 값이 없을 때에 대한 예외 처리가 필요하다.

javascript
if (layout && layout.header && layout.header.menu) {
+	console.log(layout.header.menu.items); // ['home', 'login', 'admin']
+}

위 조건문에서는 layout, header, menu까지 모두 유효한 값일 때만 찾으려는 items값을 읽도록 한다. 다만 위 코드에서 보다시피 참조해야 하는 단계가 많아질 경우 if문에 작성해야 하는 코드는 점점 길어질 것이다. 매번 하위 속성 마다 예외 처리를 하기에는 번거로울 수 있다.

이러한 문제를 해결하기 위하여 옵셔널 체이닝이 등장하였다. 옵셔널 체이닝은 ?. 연산자를 사용하며 상위 참조값이 null이거나 undefined인 경우 다음 표현식의 리턴값을 undefined로 리턴시켜준다.

javascript
const layout = null;
+console.log(layout?.header); // undefined
+
+const layout2 = {};
+console.log(layout2?.header?.menu?.items); // undefined

if문을 사용한 코드와 달리 훨씬 더 코드를 간결하게 표현할 수 있다는 장점이 있다.

arrayfunction도 마찬가지로 옵셔널 체이닝을 사용할 수 있다.

javascript
const layout = {};
+console.log(layout?.header?.menu?.items?.[0]); // undefined
+
+console.log(layout?.header?.onMenuClick?.()); // undefined

여기서 유의할 점은 onMenuClick이 함수가 아니면서 null이나 undefined가 아닌 값을 가지고 있는 경우 다음과 같은 호출 에러가 발생할 수 있으므로 여전히 관련된 예외 처리를 해주어야 할 수 있다.

shell
TypeError: layout?.header?.onMenuClick is not a function

Reference

+ + + + \ No newline at end of file diff --git a/language/javascript/es5-use-strict.html b/language/javascript/es5-use-strict.html new file mode 100644 index 00000000..5d827034 --- /dev/null +++ b/language/javascript/es5-use-strict.html @@ -0,0 +1,42 @@ + + + + + + Strict Mode (엄격 모드) | TIL + + + + + + + + + + + + + + + + +
Skip to content

Strict Mode (엄격 모드)

엄격 모드(Strict Mode)는 ES2009(ES5) 사양 이상 부터 사용할 수 있는 문법이다.

엄격 모드를 사용하면 문법적 오류에 대해 보통 암묵적으로 진행되었던 실행문을 탐지하여 문법 오류를 발생하도록 한다. 이렇게 함으로서 문법적인 실수를 사전에 방지하여 코드 실행 안정성을 보장하고 향상된 보안 코드를 작성할 수 있다.

사용을 위해서는 자바스크립트 파일 최상단에 다음 내용을 추가해야 한다.

javascript
'use strict'; // << Add this line
+
+function Main() {
+	// ...
+}

이렇게 되면 전체 스크립트 파일에 엄격 모드가 적용된다. 특정 함수에만 한정적으로 적용할 수도 있다.

javascript
function Main() {
+	'use strict';
+	// ...
+	function sub() {
+		// This function is also affected by strict mode
+	}
+}

예를 들어 다음과 같이 선언하지 않은 변수에 값을 할당하게 된다면,

javascript
abc = 'Hello';
+
+console.log(abc); // 'Hello'

자바스크립트는 에러 없이 Hello를 콘솔에 출력한다. 하지만 엄격 모드를 사용하면,

javascript
'use strict';
+abc = 'Hello';
+
+console.log(abc); // Uncaught ReferenceError: abc is not defined

콘솔 로그 실행문에서 ReferenceError 에러가 출력될 것이다.

이 뿐만이 아니라 엄격 모드를 사용하면 여러가지 제한 사항이 적용된다.

  • deletewith를 사용할 수 없다.
  • if, while, for과 같은 블록문 내부에 함수를 선언할 수 없다.
  • 함수에 대해 caller, callee, arguments로 액세스할 수 없다.
  • 함수의 인자의 이름이 두 번 이상 반복 될 수 없다.
  • 미래에 사용 될 예약어(private, public, let, static...)를 변수명으로 지정할 수 없다.
  • 객체에는 같은 속성 이름을 사용할 수 없다. (ES6 이상에서는 허용된다.)

엄격 모드는 모듈이나 클래스 형식의 파일에서는 권장하지 않으며 민감한 코드를 작성하는 특수한 경우가 아닌 이상 일반적으로 사용 할 필요는 없다.

+ + + + \ No newline at end of file diff --git a/language/javascript/es6-symbol-data-type.html b/language/javascript/es6-symbol-data-type.html new file mode 100644 index 00000000..eb7488d1 --- /dev/null +++ b/language/javascript/es6-symbol-data-type.html @@ -0,0 +1,53 @@ + + + + + + 심볼 (Symbol) 타입 자료형 | TIL + + + + + + + + + + + + + + + + +
Skip to content

심볼 (Symbol) 타입 자료형

심볼은 ES2015(ES6) 표준으로 지정된 JavaScript의 자료형이다. 함수형 객체이며 메소드와 프로퍼티를 가지고 있다. 설명(description)이라는 값을 사용하여 변수의 의도를 명확하게 표현할 수 있다. 설명 값은 선택사항이다.

javascript
const symbolA = Symbol();
+const symbolB = Symbol('key');

심볼 객체로 할당된 변수는 고유한 식별값을 가지며 유일성을 보장한다. 따라서 같은 심볼 설명값을 사용한 두 변수를 비교하면 서로 같지 않다는 것을 확인할 수 있다. Symbol의 고유한 값은 외부에서 확인할 수 없다.

javascript
const symbolA = Symbol('key');
+const symbolB = Symbol('key');
+
+console.log(symbolA === symbolB); // false
+console.log(symbolA === 'key'); // false

고유한 특성으로 인해 할당된 변수에 다른 값을 대입할 수 없으며 다른 형으로 변환할 경우 Symbol은 무의미해진다.

심볼의 사용 용도는 주로 외부 모듈에서 선언된 객체를 사용할 때 이미 선언된 속성과 겹치면서 의도하지 않은 값으로 덮어씌우는 문제를 방지하기 위해 사용한다.

javascript
const person = {
+	id: 123,
+	name: 'lee'
+};
+
+person.id = 456;
+
+console.log(person.id); // 456

위 예시에서 person.id = 456을 통해 id 속성의 값 123이 의도치 않게 변경되거나, 다시 외부 스크립트에 의해 선언한 값을 바꾸어버릴 수 있다.

아래와 같이 Symbol을 활용하면 누군가에 의해 수정되지 않는 고유한 속성을 만들어 값을 저장해 둘 수 있다.

javascript
const person = {
+	id: 123,
+	name: 'lee'
+};
+
+const symbolId = Symbol('id');
+person[symbolId] = 456;
+
+console.log(person['id']); // 123
+console.log(person[symbolId]); // 456
+
+person.id = 789;
+
+console.log(person['id']); // 789
+console.log(person[symbolId]); // 456

위 예시에서 person.id = 789;로 값이 변동되어도 Symbol로 정의된 속성값은 변동되지 않는다.

+ + + + \ No newline at end of file diff --git a/language/javascript/es6-template-literals.html b/language/javascript/es6-template-literals.html new file mode 100644 index 00000000..29f63356 --- /dev/null +++ b/language/javascript/es6-template-literals.html @@ -0,0 +1,40 @@ + + + + + + 템플릿 리터럴 (Template literals) | TIL + + + + + + + + + + + + + + + + +
Skip to content

템플릿 리터럴 (Template literals)

템플릿 리터럴은 문자열과 문자열 또는 변수 사이에서의 연산에 대해 가독성 있는 코드를 작성할 수 있게 해주는 문법이다. 템플릿 스트링이나 템플릿 문자열 모두 같은 말이지만 ECMA Script 표준이 개정되면서 템플릿 리터럴로 불리게 되었다. 템플릿 리터럴은 ES2015(ES6) 이상의 표준을 사용하는 환경에서만 사용할 수 있다.

기존 방식(String literals)의 단점

기존 문자열 리터럴의 표현은 다음과 같이 이루어졌다.

javascript
const str = 'Hello ' + 12345 + ' World!';
+console.log(str); // Hello 12345 World!

병합할 문자열 또는 변수들 사이에 + 기호를 사용했었다. 다만 이렇게 되면 병합해야 할 요소들이 많아지게 될 때 문제가 발생한다.

javascript
const aNum = 1;
+const bNum = 2;
+const cNum = 3;
+const str = '[ A is: ' + aNum + ', B is: ' + bNum + ', C is: ' + cNum + ' ]';
+console.log(str); // [ A is: 1, B is: 2, C is: 3 ]

하나의 변수 안에 들어가야 하는 조합이 많아질 수록 한 줄이 너무 길어지게 될 뿐만 아니라 보기에도 다소 헷갈릴 수 있다.

템플릿 리터럴 사용하기

위와 같은 가독성 문제를 해결하기 위해 템플릿 리터럴이 등장했다. 사용법은 아주 간단하다. 기존의 따옴표(" 또는 ') 대신 백틱(`) 기호를 사용하여 시작과 끝을 지정한다.

javascript
const aNum = 1;
+const bNum = 2;
+const cNum = 3;
+const str = `[ A is: ${aNum}, B is: ${bNum}, C is: ${cNum} ]`;

+ 기호 대신 달러($)와 중괄호({}) 기호를 사용함으로서 변수를 포함할 수 있으며 이외에는 보이는 그대로 사용하기 때문에 조금 더 코드가 간단히 표현되었다.

템플릿 리터럴의 또 다른 특징은 텍스트 개행을 단순히 엔터로 구분할 수 있다는 것이다. 아래와 같은 문자열 리터럴 코드가 있다고 가정한다면:

javascript
const str = 'Hello\nWorld\nLorem\nIpsum';
+// OR...
+const str = 'Hello' + '\nWorld' + '\nLorem' + '\nIpsum';

템플릿 리터럴로는 다음과 같이 표현할 수 있다:

javascript
const str = `Hello
+World
+Lorem
+Ipsum`;

주의할 점은 World, Lorem, Ipsum 앞에 공백이나 탭 기호가 있다면 해당 문자가 같이 포함되므로 위와 같이 좌측에 붙여서 표현해야 할 수 있다.

또한 템플릿 리터럴에서는 아래 코드와 같이 따옴표(' 또는 ")를 별도의 이스케이프 처리 없이도 사용할 수 있다.

javascript
const str = `'Apple' is "Fruit".`;
+ + + + \ No newline at end of file diff --git a/language/javascript/framework/electron/complete-delete-data-file.html b/language/javascript/framework/electron/complete-delete-data-file.html new file mode 100644 index 00000000..882f5ac7 --- /dev/null +++ b/language/javascript/framework/electron/complete-delete-data-file.html @@ -0,0 +1,39 @@ + + + + + + Electron 앱 파일 완전 삭제 | TIL + + + + + + + + + + + + + + + + +
Skip to content

Electron 앱 파일 완전 삭제

현재 실행 중인 프로세스를 제거하고 Electron 앱의 데이터 파일과 설정 파일, 설치 파일을 모두 삭제한다.

아래 문서에서 {APP_NAME}{com.company.appname} 부분은 각 앱 이름에 맞게 수정한다.

Windows

Microsoft Store로 설치한 경우 앱 삭제 시 데이터가 삭제된다.

.exe로 설치한 경우 아래 경로 파일을 삭제한다.

shell
%APPDATA%\Electron
+%APPDATA%\{APP_NAME}

Linux

shell
# Snapcraft에서 설치했다면:
+$ rm -rf ~/snap/{APP_NAME}
+
+# .deb, .rpm 패키지로 설치했다면:
+$ rm -rf ~/.config/{APP_NAME}

macOS

shell
#!/bin/sh
+killall Electron
+killall Electron
+killall {APP_NAME}
+killall {APP_NAME}
+rm -rf /Applications/{APP_NAME}.app
+rm -rf ~/Library/Application\ Support/{APP_NAME}
+rm -rf /System/Volumes/Data/Users/$USER/Library/Containers/{com.company.appname}
+ + + + \ No newline at end of file diff --git a/language/javascript/framework/electron/electron-handle-crash.html b/language/javascript/framework/electron/electron-handle-crash.html new file mode 100644 index 00000000..b2c3e936 --- /dev/null +++ b/language/javascript/framework/electron/electron-handle-crash.html @@ -0,0 +1,33 @@ + + + + + + Electron 에러로 인한 크래시 처리 | TIL + + + + + + + + + + + + + + + + +
Skip to content

Electron 에러로 인한 크래시 처리

Electron을 사용한 코드에서 에러가 발생하면 발생 위치에 따라 애플리케이션 크래시가 발생한다.

메인 프로세스에서 크래시가 발생하면 시스템 다이얼로그가 표시되며, 렌더러 프로세스(BrowserWindow)에서 크래시가 발생하면 DevTool이 죽으면서 앱이 동작하지 않는다.

메인 프로세스 크래시 처리

javascript
process.on('uncaughtException', (err, origin) => {
+	// 메인 프로세스 크래시 발생 시 처리할 코드
+});

렌더러 프로세스 크래시 처리

이외에도 child-process-gone 이벤트도 있다.

javascript
import { app } from 'electron';
+
+app.on('render-process-gone', (event, webContents, details) => {
+	// 렌더러 프로세스 크래시 발생 시 처리할 코드
+});
+ + + + \ No newline at end of file diff --git a/language/javascript/framework/electron/unpack-asar-file-format.html b/language/javascript/framework/electron/unpack-asar-file-format.html new file mode 100644 index 00000000..44284d7e --- /dev/null +++ b/language/javascript/framework/electron/unpack-asar-file-format.html @@ -0,0 +1,31 @@ + + + + + + asar 파일 언팩 | TIL + + + + + + + + + + + + + + + + +
Skip to content

asar 파일 언팩

Electron 패키지를 빌드하면 빌드 설정에 따라 .asar 확장자로 압축되어 패키징되는 경우가 있다.

이 파일은 electron-builder 기준, 패키지가 만들어지는 대상 디렉토리에서 win-unpacked\resources에 위치해있다. 프로덕션용 패키지 파일(.exe 등)을 설치하면 프로그램이 설치된 디렉토리의 resources 디렉토리에 존재한다.

이 파일은 실제로 암호화 보다는 패키지 압축 파일에 더 가깝다. 이 파일을 열어보면 빌드된 파일을 모두 확인해 볼 수 있다.

.asar 파일을 풀어보려면 asar 모듈의 extract 명령어를 사용하여 간단히 풀어볼 수 있다.

shell
$ npx asar extract app.asar asarResources

npx는 프로젝트 디렉토리가 아닌 환경에서 설치 과정 없이 특정 모듈의 명령어를 실행해주는 명령어이다. extract의 처음 인자값은 asar 파일의 경로, 두번째 인자값은 추출할 디렉토리 경로(없다면 생성)를 입력한다.

위 명령어를 실행하면 현재 경로에 asarResources 디렉토리가 만들어지고 해당 디렉토리 안에 압축 해제된 파일들이 만들어진다.

electron-builder에서 asar 파일 압축 없이 패키징을 하기 위해서는 package.json 파일에서 빌드 옵션을 조정해주면 된다.

json
{
+	"build": {
+		"asar": false
+	}
+}
+ + + + \ No newline at end of file diff --git a/language/javascript/library/eslint/typescript-eslint-no-inferrable-types.html b/language/javascript/library/eslint/typescript-eslint-no-inferrable-types.html new file mode 100644 index 00000000..9023e91a --- /dev/null +++ b/language/javascript/library/eslint/typescript-eslint-no-inferrable-types.html @@ -0,0 +1,37 @@ + + + + + + @typescript-eslint/no-inferrable-types | TIL + + + + + + + + + + + + + + + + +
Skip to content

@typescript-eslint/no-inferrable-types

shell
Type number trivially inferred from a number literal, remove type annotation  @typescript-eslint/no-inferrable-types

파라미터 특정 인자값에 기본값을 지정한 경우 TypeScript는 자동 추론에 의해 타입을 알아서 판단하므로 타입을 별도로 선언하지 않아도 된다.

위 에러 메시지는 eslint에서 표시되는 메시지로 간단히 해당 규칙(@typescript-eslint/no-inferrable-types)을 비활성화하여 끌 수 있기도 하다.

typescript
export function getUserAccount(isGoogleAccount: boolean = true): boolean {
+	if (isGoogleAccount) {
+		// code here
+	}
+	return true;
+}

다음 코드에서 isGoogleAccount : boolean은 기본값으로 지정된 true로 인해 boolean 타입임을 추론할 수 있으므로 boolean을 별도로 선언할 필요가 없다.

수정된 코드는 다음과 같다.

typescript
export function getUserAccount(isGoogleAccount = true): boolean {
+	if (isGoogleAccount) {
+		// code here
+	}
+	return true;
+}
+ + + + \ No newline at end of file diff --git a/language/javascript/library/using-clasp.html b/language/javascript/library/using-clasp.html new file mode 100644 index 00000000..6612079c --- /dev/null +++ b/language/javascript/library/using-clasp.html @@ -0,0 +1,37 @@ + + + + + + Clasp | TIL + + + + + + + + + + + + + + + + +
Skip to content

Clasp

claspGoogle Apps Script 기반 프로젝트를 로컬에서 작업하고 서비스 중인 파일로 push하여 업데이트할 수 있도록 도와주는 라이브러리이다. clone 스크립트가 탑재된 새로운 문서를 생성할 수도 있다.

설치

claspNodeJS 런타임에서 구동되는 CLI 명령어 도구이다. 따라서 npm 패키지를 통해 아래와 같이 설치할 수 있다.

shell
$ npm install -g @google/clasp

clasp의 모든 구성을 제대로 사용하려면 다음 페이지에 Google 계정으로 로그인한 후 Google Apps Script API의 사용 설정을 '사용'으로 변경해야 한다: https://script.google.com/home/usersettings

이후 다음 명령어를 실행하여 계정 정보를 로컬 데스크톱에 저장한다. 앞으로 사용하는 명령어는 구글 계정 액세스를 요구할 수 있다.

shell
$ clasp login

사용법

clasp를 활용하여 Apps Script 프로젝트를 새로 생성하려면 다음 명령어를 사용한다.

shell
$ clasp create
+
+? Create which script? sheets
+Created new Google Sheet: https://drive.google.com/open?id=1yEnsWrCybp-KKKMHX-#########################
+Created new Google Sheets Add-on script: https://script.google.com/d/1U3UDIRjB_##############################################/edit
+Warning: files in subfolder are not accounted for unless you set a '/home/user/project/.claspignore' file.
+Cloned 1 file.
+└─ /home/user/project/appsscript.json

문서 형식(문서, 스프레드시트...)에 대한 URL과 스크립트 프로젝트의 URL 두개가 생성된다. 문서 파일은 Google 드라이브의 최상위 경로에 생성되어 있을 것이다.

이렇게하면 프로젝트 루트에 .clasp.json 파일이 생성된다. 해당 파일을 열어보면 현재 가리키고 있는 Google Script ID를 확인할 수 있다.

이후 로컬에서 작업한 내역을 문서 스크립트로 업로드하여 갱신하려는 경우 다음 명령어를 사용한다.

shell
$ clasp push

코드를 push할 때 주의해야 할 것이 있다. 프로젝트 내에 Apps Script와는 무관한 파일들이 존재하면 이 파일들도 같이 업로드될 수 있다. (예: node_modules, package.json...)

업로드한다고 스크립트 자체에 영향을 미치지는 않지만 가능한 프로젝트와 연관있는 파일만 업로드하는 것이 좋기 때문에 업로드하지 않아도 되는 파일은 .claspignore 파일을 생성하여 무시할 수 있다.

.claspignore.gitignore와 유사하다. 아래는 node_modulespackage.json 파일을 업로드하지 않는 규칙의 예시이다.

txt
package.json
+node_modules/**
+node_modules/**/.*/**
+node_modules/**/.*

코드를 push한 후 문서 파일이나 스크립트 에디터가 웹페이지에 열려있다면 새로고침으로 갱신이 필요할 수 있다.

+ + + + \ No newline at end of file diff --git a/language/javascript/method-chaining.html b/language/javascript/method-chaining.html new file mode 100644 index 00000000..ff9ca458 --- /dev/null +++ b/language/javascript/method-chaining.html @@ -0,0 +1,65 @@ + + + + + + 메소드 체이닝 | TIL + + + + + + + + + + + + + + + + +
Skip to content

메소드 체이닝

메소드 체이닝(Method Chaining) 은 코드를 작성할 때 클래스 내의 메소드를 연속적으로 사용하기 위해 다음 메소드를 이어서 작성하는 프로그래밍 기법이다. 일반적으로 배열의 메소드나 jQuery 라이브러리에서 주로 사용하는 방법이기도 하다.

아래 Company라는 클래스가 있다고 가정한다.

javascript
class Company {
+	constructor() {
+		this.uniqueId = 0;
+		this.name = '';
+		this.country = '';
+	}
+
+	setName(name) {
+		this.name = name;
+
+		return this;
+	}
+
+	setUniqueId(id) {
+		this.uniqueId = id;
+
+		return this;
+	}
+
+	setCountry(country) {
+		this.country = country;
+
+		return this;
+	}
+}

자바스크립트에서는 특정 클래스의 메소드를 사용할 때 다음과 같이 사용한다.

javascript
const company = new Company();
+
+company.setName('Samsung');
+company.setUniqueId(12345678);
+company.setCountry('South Korea');

위와 같이 한번에 사용해야 하는 메소드가 많으면 많을수록 코드가 복잡해 보일 수 있다. 메소드 체이닝을 활용한다면 다음과 같이 간략하게 코드를 작성할 수 있다.

javascript
const company = new Company();
+
+company.setName('Samsung').setUniqueId(12345678).setCountry('South Korea');

또는 다음과 같이 개행으로 구분하여 사용해도 된다.

javascript
const company = new Company();
+
+company.setName('Samsung').setUniqueId(12345678).setCountry('South Korea');

다만 메소드 체이닝을 사용하기 위한 조건이 있다. 메소드 체이닝에 사용되는 메소드는 모두 this로 리턴되어야 한다.

javascript
class Company {
+	setCountry(country) {
+		this.country = country;
+
+		return this; // <---- Add this
+	}
+}

이렇게 해야만 이전 메소드에서 리턴된 객체로 다시 메소드를 호출할 수 있다.

메소드 체이닝은 코드의 복잡성에 따라서 간결해보이면서도 코드 해석에 대해 혼동을 줄 수 있기 때문에 상황에 따라서 사용하는 것이 좋다.

또한 매번 자기 자신의 객체를 리턴하기 때문에 성능면에서는 좋지 않을 수 있다.

+ + + + \ No newline at end of file diff --git a/language/javascript/switch.html b/language/javascript/switch.html new file mode 100644 index 00000000..a47aa5a7 --- /dev/null +++ b/language/javascript/switch.html @@ -0,0 +1,116 @@ + + + + + + switch문 | TIL + + + + + + + + + + + + + + + + +
Skip to content

switch

switch문은 특정 문자열이나 표현식에 대해 여러 상황을 분기해야 하는 경우에 사용하는 문법이다. if-else문을 길게 작성하는 대신에 switch문으로 코드를 간략하게 표현할 수 있다.

아래 if-else문을 사용한 예시가 있다:

javascript
function getResponse(str) {
+	let response;
+
+	if (str === 'hello') {
+		response = 'hello!';
+	} else if (str === 'hi') {
+		response = 'hi!';
+	} else if (str === 'bye') {
+		response = 'bye!';
+	} else if (str === 'goodbye') {
+		response = 'goodbye!';
+	} else if (str === 'seeya') {
+		response = 'seeya!';
+	}
+
+	return response;
+}

여러 상황에 대해 처리해야 하는 분기가 많아질 때가 있는데 위 코드에서는 비록 한줄 실행문이지만 더 많은 상황이나 긴 실행문이 될 경우 가독성이 저하될 수 있다. 따라서 아래와 같이 switch문을 통해 코드를 간소화할 수 있다.

javascript
function getResponse(str) {
+	let response;
+
+	switch (str) {
+		case 'hello':
+			response = 'hello!';
+			break;
+		case 'hi':
+			response = 'hi!';
+			break;
+		case 'bye':
+			response = 'bye!';
+			break;
+		case 'goodbye':
+			response = 'goodbye!';
+			break;
+		case 'seeya':
+			response = 'seeya!';
+			break;
+		default:
+			response = 'error!';
+			break;
+	}
+
+	return response;
+}

switch문에는 casedefault, break이 거의 항상 같이 사용된다. 각각의 역할은 다음과 같다:

  • case: 표현식의 결과에 대해 발생할 수 있는 값
  • default: 표현식의 결과에서 예상하지 못한 값이거나 명시된 case에 해당하지 않는 모든 값
  • break: 해당 분기에 대해 switch문을 종료

if-else문과 같이 case문의 조회는 위에서부터 순차적으로 이루어지며 조건에 대한 실행이 완료(break)되었음이 확인되면 switch문을 종료한다.

여기서 주의해야 할 점은 defaultbreak인데, defaultelse와 유사한 기능을 하여 명시하지 않아도 되지만 코드 이해를 위해 또는 예외상황에 대한 실행문을 작성할 수 있도록 명시해주는 것이 좋다. default는 맨 위나 아래에 위치하는 것이 좋으며 코드 분석 툴은 맨 아래에 배치하는 것을 권장하고 있다.

break문 대신에 return을 사용하여 해당 함수에서 원하는 값을 즉시 반환할 수 있다. 이 경우 switch문 아래 코드 및 다른 case문의 코드는 실행되지 않는다.

break문을 case의 실행문 마지막에 기입하지 않으면 다음 case문의 실행문도 같이 실행된다. 즉 5개의 case가 있고 모두 break문이 없고 조건식이 맨 처음 case에 해당하는 경우 맨 처음 실행문을 포함하여 아래 4개의 실행문이 모두 실행된다.

javascript
function getResponse(str) {
+	let response;
+
+	switch (str) {
+		case '1':
+			response += 'a';
+		case '2':
+			response += 'b';
+		case '3':
+			response += 'c';
+		case '4':
+			response += 'd';
+			break;
+		case '5':
+			response += 'e';
+			break;
+		default:
+			response += 'f';
+			break;
+	}
+
+	return response;
+}

위 코드에서 str의 값이 1인 경우 결과는 abcd, 2인 경우 결과는 bcd가 된다. str의 값이 case문의 값과 달라도 break의 여부에 따라 다른 코드도 실행될 수 있으므로 사용 시 유의해야만 한다.

javascript
function isItTrue() {
+	function isTrue() {
+		return true;
+	}
+
+	function isAlsoTrue() {
+		return true;
+	}
+
+	function isFalse() {
+		return false;
+	}
+
+	switch (true) {
+		case isTrue():
+			console.log('true!');
+			break;
+		case isAlsoTrue():
+			console.log('also true!');
+			break;
+		case isFalse():
+			console.log('false!');
+			break;
+		default:
+			break;
+	}
+}

또한 위 코드와 같이 case문에 함수 실행문을 사용할 수 있다. 반환된 값이 switch문의 표현식과 같은 true인 경우 해당 분기에 대한 코드를 실행한다. 위 예시에서는 isTrue의 결과 true에 먼저 해당되었으므로 콘솔 값에는 true!가 출력되고 실행을 종료한다. isAlsoTrue();의 실행문은 isTrue();break문에 의해 실행되지 않는다.

+ + + + \ No newline at end of file diff --git a/language/javascript/ternary-conditional-operator.html b/language/javascript/ternary-conditional-operator.html new file mode 100644 index 00000000..d137f6ce --- /dev/null +++ b/language/javascript/ternary-conditional-operator.html @@ -0,0 +1,30 @@ + + + + + + 삼항연산자 | TIL + + + + + + + + + + + + + + + + +
Skip to content

삼항연산자

조건부 삼항연산자(Ternary Conditional Operator)라고도 부른다. if문을 간략히 작성하기 위해 사용되며 if문과의 성능 차이가 있을 수는 있지만 성능폭이 크지는 않다.

아래와 같은 if문이 주어진 경우,

javascript
if (isExists) {
+	return 'Exist';
+}
+return 'Not Exist';

삼항연산자로 바꾼다면 아래와 같이 작성할 수 있다.

javascript
return isExists ? 'Exist' : 'Not Exist';

? 앞에는 조건문을 넣고, : 기호로 참일 때와 거짓일 때를 구분한다. 조건문 또는 참이나 거짓에 복잡한 구문이 들어가는 경우 괄호를 사용할 수 있다.

참이나 거짓에 삼항연산자를 다시 한번 사용하여 중첩 삼항연산자를 만들 수도 있다.

javascript
return isExists ? 'Exist' : showError ? 'ERR' : null;

다만 위와 같은 중첩 삼항연산자는 코드 가독성에 호불호가 있으므로 가급적 사용하지 않는 것이 좋다. 필요한 경우 아래와 같은 방법으로 가독성을 높일 수 있다.

javascript
return isExists ? 'Exist' : showError ? 'ERR' : null;
javascript
return isExists ? 'Exist' : showError ? 'ERR' : null;

삼항 연산자의 참과 거짓에는 리턴값 외에 함수를 사용하지 않는 것이 좋다. 분기가 많아질 경우는 if문을 쓰는 것이 더욱 바람직 할 수 있다.

+ + + + \ No newline at end of file diff --git a/language/javascript/variable-type-check.html b/language/javascript/variable-type-check.html new file mode 100644 index 00000000..c4ad98f9 --- /dev/null +++ b/language/javascript/variable-type-check.html @@ -0,0 +1,39 @@ + + + + + + JavaScript 데이터 타입 검증 | TIL + + + + + + + + + + + + + + + + +
Skip to content

JavaScript 데이터 타입 검증

JavaScript에서는 다양한 방법으로 대상 값에 대한 데이터 타입을 확인할 수 있다.

동치 비교 (==, ===)

먼저 아래와 같이 일반적인 동치 비교를 사용하면 특정 값(좌측)이 주어진 조건값(우측)과 일치하는지 확인할 수 있다.

javascript
const temp = 1;
+
+console.log(temp == 1); // return true
+console.log(temp == '1'); // return true

다만 위와 같이 == 기호로 값을 비교하게 되면 값은 일치하더라도 데이터형이 다를 때도 같은 값으로 판단하게 되여 결론적으로 느슨한 비교를 하게 된다.

이럴 때는 삼중 등호(===)를 사용하여 데이터형에 대해서도 엄격한 비교를 할 수 있다.

javascript
const temp = 1;
+
+console.log(temp === 1); // return true
+console.log(temp === '1'); // return false

위 식에서는 tempnumber형 변수이고, 값이 1일 때만 true를 리턴한다.

typeof 연산자

typeof 연산자는 특정 변수의 데이터형을 리턴한다. 다만 연산자이므로 함수 실행식이 아닌 피연산자 앞에 위치해야 한다.

javascript
const temp = 1;
+
+console.log(typeof temp); // return 'number'
+console.log(typeof temp === 'number'); // return true

리턴값은 string으로 표현되며 값은 주로 number, string, function, boolean, object 등이 있다.

instanceof 연산자

instanceof는 위의 typeof와 유사하지만 특정 객체가 어떤 클래스에 속하는지 확인하기 위해 사용하는 연산자이다. 마찬가지로 피연산자(클래스) 앞에 위치한다.

javascript
const company = new Company();
+
+console.log(company instanceof Company); // return true
+console.log([1, 2, 3, 4, 5] instanceof Array); // return true

주의할 점은 피연산자 값은 constructor가 되어야 한다. 전역 객체도 사용할 수 있다.

+ + + + \ No newline at end of file diff --git a/language/typescript/positive-number-type.html b/language/typescript/positive-number-type.html new file mode 100644 index 00000000..29cc0b5e --- /dev/null +++ b/language/typescript/positive-number-type.html @@ -0,0 +1,33 @@ + + + + + + TypeScript Positive Number Type | TIL + + + + + + + + + + + + + + + + +
Skip to content

TypeScript Positive Number Type

타입스크립트에서 number 데이터 타입은 모든 숫자를 허용한다. 만약 -1, -2와 같은 값이 아닌 양수만 허용하고 싶은 경우는 별도의 타입을 선언해주어야 한다.

자세한 내용은 아래 Stackoverflow 링크를 참고한다. https://stackoverflow.com/questions/21224922/is-there-a-way-to-represent-a-non-negative-integer-in-typescript-so-that-the-com

typescript
declare type PositiveNumber<N extends number> = number extends N
+	? N
+	: `${N}` extends `-${string}`
+	? never
+	: N;

위 링크에 설명된대로 PositiveNumber라는 데이터 타입을 declare를 사용하여 선언한다. number 데이터형의 속성을 상속받은 후 템플릿 리터럴을 사용하여 제공받은 값이 음수값인지 확인된다면 never형으로 인식되게 한다.

위와 같이 선언하였다면 PositiveNumber<N>과 같이 사용할 수 있다. 주의할 점은 선언된 N 타입 변수는 number형으로 확장되어야 한다.

typescript
function sum<N extends number>(number1: PositiveNumber<N>, number2: PositiveNumber<N>): number {
+	return number1 + number2;
+}

이제 아래 코드로 타입 체크가 정상적으로 이루어지는지 확인해본다.

typescript
sum(-1, -2);

위 코드를 사용했을 경우 아래와 같은 오류가 발생해야 한다.

shell
TS2345: Argument of type 'number' is not assignable to parameter of type 'never'.
+ + + + \ No newline at end of file diff --git a/logo-16.png b/logo-16.png new file mode 100644 index 0000000000000000000000000000000000000000..e98c1623c38c89e3781725b1ef2b534b329f03ce GIT binary patch literal 616 zcmV-u0+;=XP)fPTuc>b-CbopNA=tCz5g|hYwHCG2K(sgz4#^d&}FTOSu)q%Hv>KcNte%Hre|4O)V zqeB>LU(#$U0`(O5ke^1c&Yr=#S8${&atw8o2DkNGXqs{7jk^DEy zm2R8<|WPA`s~J{xxJ?!%Zj-+oJ9 z{(0cLn7e#6b}FFybC#{K87;`bdqqz;~=cKQ+Pd#_4EX)Ar*cj$2N#p^etKK%SE zKQIQ*>w-?#AS1P>#q@_B+X^NOh6!b7e^6ZGQv(1@{gnLU?BJRJ0000wLD|6p>Z~o?d z(XXplug-_vFaS8M!M?QCICuuZz+O|J^T%j_1sU^H552N>U0N)Nnp*wHW=(;L#(~%P zdn9PWHjsSZ4g3XaEXc-vNl8%R1Zv1Hc5;oa`{EM5*|r=R`IA|Azd7uJuiMhVG%(?+ z9DZr(ysVf7HJ6iMewl&AmRwnd6Ra5zxDN}US92Qp5p-2F54^@yrEI~r@Cutz_0(Zy zk%sQxH@9wINEd!O;-V%tkmnwI!3tRM`@%L48%VhGZiRmT4gMKS8ch6N*n2H1Rny+b zg6&{x!+l^V=qvD!zIf)i;=N5Am@u){%5_;WPxbICtZxXjMeT$=;BVLokM2Drh=j|lv^l9rrzsm z&J8W%%nl*W%19c1DVoHU^XVI%vYLqsQKf6{Kg&6DT`Gg^49R5=la>h$Qui#5KxEOu3N6 zREp}2Q;02FE@hj0_?9v|F}Zb-X4flcJ@O;m0omUH`UGsnA zrc|(^=D@TpxXJ(h%uTOcBIS^G>fddD4@QdG2|Ee*&~b1UtdHN6&s>J$zZB!k*+nEWnNWc9Y;6_gIaSKj)p^E0m<|4Sm*STE2|yEEu*o@n7m;ynjEfFLLFpl zXoyl7?Nzof5Zj2tsoc-{N1g|)5nXvL!&7oA(bMNQpwXlxbl&ub%CmeCc7BLf-bBAG3X{LSR8KLy>~Ce z;>oi--_WRPpRj0h4+th7fhPrcIgquJGu?k4LR_mr@^QDT3-%0&LU0O2Avh#9v5~;2 zxLOA{&r%(};ahfPZ0bBP3Y2AJ<+2`I*%SuHB-9m##U)W>Vk#C+qwx4-@{f!opWtv3 z_;`?qmq-1?EI2fdg*E0K7+PguVwS^BZm + + + + + 현재 디렉토리의 모든 하위 디렉토리에 대해 git pull을 수행 | TIL + + + + + + + + + + + + + + + + +
Skip to content

현재 디렉토리의 모든 하위 디렉토리에 대해 git pull을 수행

아래 스크립트는 현재 디렉토리에 있는 모든 하위 디렉토리 중 .git폴더가 존재하는 디렉토리에 대해 각각 git pull명령을 수행하여 리포지토리를 한번에 업데이트하도록 돕는 bash 스크립트이다.

shell
#!/bin/bash
+
+dir=`pwd`
+
+for d in $(find $dir -type d)
+do
+    if [ -d "$d/.git" ]; then
+        echo "git pull: $d"
+        cd $d
+        git pull
+        cd $dir
+    fi
+done
+ + + + \ No newline at end of file diff --git a/misc/yubico-piv-tool-reset-all.html b/misc/yubico-piv-tool-reset-all.html new file mode 100644 index 00000000..05c4edfd --- /dev/null +++ b/misc/yubico-piv-tool-reset-all.html @@ -0,0 +1,34 @@ + + + + + + Yubikey 하드웨어 토큰 초기화 | TIL + + + + + + + + + + + + + + + + +
Skip to content

Yubikey 하드웨어 토큰 초기화

Yubico 에서 제공하는 Yubikey의 하드웨어 토큰을 기본값으로 초기화해야 하는 경우 아래 방법을 따른다. 초기화 후 기존의 토큰 데이터가 모두 사라질 수 있으니 긴급할 시에만 사용한다.

진행하기 전 CLI 기반의 Yubico PIV Tool이 설치되어 있어야 한다.

먼저 토큰 PIN이나 PUK 중 하나가 Block 상태로 되어있다면 아래 명령어를 사용하여 PIN과 PUK 모두 Block 상태로 만든다. 아래와 같이 동일 명령어를 각각 3번씩 실행해야 한다.

shell
$ yubico-piv-tool -a verify -P 00000000
+$ yubico-piv-tool -a verify -P 00000000
+$ yubico-piv-tool -a verify -P 00000000
+$ yubico-piv-tool -a unblock-pin -P 00000000 -N 00000000
+$ yubico-piv-tool -a unblock-pin -P 00000000 -N 00000000
+$ yubico-piv-tool -a unblock-pin -P 00000000 -N 00000000

이후 아래 명령어로 토큰 초기화 명령을 실행한다.

shell
$ yubico-piv-tool -a reset
+$ yubico-piv-tool -a set-chuid
+$ yubico-piv-tool -a set-ccc

토큰 초기화 이후 PIN, PUK 변경하기

PINPUK은 각각 6자 이상 12자 이하로 설정한다. PIN은 인증용으로 사용되며 PUK은 백업용 키로 사용된다. 가능한 PINPUK을 다르게 설정할 것이 좋다.

PIN 변경

shell
yubico-piv-tool -a change-pin -P 123456 -N {새로운 PIN 암호}

PUK 변경

shell
yubico-piv-tool -a change-puk -P 12345678 -N {새로운 PUK 암호}
+ + + + \ No newline at end of file diff --git a/os/common/create-large-size-file.html b/os/common/create-large-size-file.html new file mode 100644 index 00000000..470d2691 --- /dev/null +++ b/os/common/create-large-size-file.html @@ -0,0 +1,27 @@ + + + + + + 더미 데이터로 채워진 대용량 파일 만들기 | TIL + + + + + + + + + + + + + + + + +
Skip to content

더미 데이터로 채워진 대용량 파일 만들기

단순히 더미 데이터로 채워진 대용량 파일이 필요할 때가 있다. 파일 처리나 전송 테스트를 하거나 시스템이 용량으로 가득 찬 상황을 재현하기 위해 대용량 파일을 만들어야 한다면 다음과 같이 강제로 파일을 만들 수 있다.

Windows

사용 방법

명령 프롬프트에서 다음 명령어를 사용한다.

shell
> fsutil file createnew [pathWithName] [Byte]

사용 예시

약 1GB 파일의 대용량 파일 생성

shell
> fsutil file createnew C:\Users\test\Desktop\largeFile 1000000000

Linux

사용 방법

shell
$ fallocate [options] <filename>

사용 예시

약 1GB 파일의 대용량 파일 생성

shell
$ fallocate -l 1G /home/test/largeFile
+ + + + \ No newline at end of file diff --git a/os/common/open-in-explorer-from-command-line.html b/os/common/open-in-explorer-from-command-line.html new file mode 100644 index 00000000..d72e606e --- /dev/null +++ b/os/common/open-in-explorer-from-command-line.html @@ -0,0 +1,27 @@ + + + + + + 커맨드 라인 명령어로 파일 탐색기에서 경로 열기 | TIL + + + + + + + + + + + + + + + + +
Skip to content

커맨드 라인 명령어로 파일 탐색기에서 경로 열기

커맨드 라인을 통한 명령을 통해 파일 탐색기에서 원하는 경로를 열 수 있다. 다만 운영체제별로 사용하는 명령어는 각각 다르다.

  • 아래 명령어에서 {PATH}에는 열어야 할 경로를 입력한다. 경로에 공백이 포함되어있다면 큰따옴표(")로 감싸주어야 할 수 있다.
  • 현재 프롬프트에서 참조하고 있는 경로를 열려면 . 기호를 경로 대신 사용한다.

Windows

shell
C:\> explorer {PATH}

macOS

shell
$ open {PATH}

Linux

shell
$ nautilus {PATH}
+ + + + \ No newline at end of file diff --git a/os/linux/cd-argument-examples.html b/os/linux/cd-argument-examples.html new file mode 100644 index 00000000..b794a52d --- /dev/null +++ b/os/linux/cd-argument-examples.html @@ -0,0 +1,27 @@ + + + + + + 리눅스 cd 명령어 인자값 예시 | TIL + + + + + + + + + + + + + + + + +
Skip to content

리눅스 cd 명령어 인자값 예시

인자값설명사용 예
(없음)아무런 처리도 하지 않음cd
.현재 디렉토리 (아무런 처리도 하지 않음)cd .
..상위 디렉토리
  • cd ..
  • cd ../Pictures
  • cd ../../Downloads
~현재 게정의 홈 디렉토리cd ~
/최상위 디렉토리cd /
/path/to/directory/특정 디렉토리 (절대 경로)cd /home/user/Desktop
/path/to/dir*특정 디렉토리 (와일드카드 사용), 와일드카드와 일치하는 첫번째 결과로 경로를 변경한다.cd /home/user/Desk*
+ + + + \ No newline at end of file diff --git a/os/linux/connection-configuration-ftp.html b/os/linux/connection-configuration-ftp.html new file mode 100644 index 00000000..43fb3daf --- /dev/null +++ b/os/linux/connection-configuration-ftp.html @@ -0,0 +1,27 @@ + + + + + + FTP 연결 설정 (vsftpd) | TIL + + + + + + + + + + + + + + + + +
Skip to content

FTP 연결 설정 (vsftpd)

vsftpd 설치

yum, dnf 계열

shell
$ sudo dnf install vsftpd

apt 계열

shell
$ sudo apt install vsftpd

vsftpd 설정

아래 파일이 없다면 새로 생성해서 사용한다.

CentOS / RedHat 계열

shell
$ sudo vim /etc/vsftpd/vsftpd.conf

Ubuntu / Debian 계열

shell
$ sudo vim /etc/vsftpd.conf

vsftpd.conf

아래 내용을 참고하여 필요한 내용을 수정한 후 저장한다.

익명 사용자의 사용자 접근 여부 (yes/no)

shell
anonymous_enable=no

익명 사용자의 홈 디렉토리 설정

shell
anon_root=/home/ftppub

익명 사용자의 업로드 가능 여부

shell
anon_upload_enable=YES

익명 사용자의 파일 생성 시 기본 권한

shell
anon_umask=002

익명 사용자의 폴더 생성 가능 여부

shell
anon_mkdir_write_enable=YES

로컬 사용자의 접근 여부 (yes/no)

shell
local_enable=yes

파일 쓰기 허용 여부 (yes/no)

shell
write_enable=yes

패시브 모드를 활성화 할지 여부 (yes/no)

shell
pasv_enable=yes

패시브 모드의 최소 포트

shell
pasv_min_port=10090

패시브 모드의 최대 포트

shell
pasv_max_port=10100

배너 메시지

shell
ftpd_banner=hello

방화벽 허용

iptables

shell
$ sudo iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

ufw

shell
$ sudo ufw allow 21/tcp

firewalld

shell
$ sudo firewall-cmd --zone=public --add-port=21/tcp --permanent

권한 설정

필요에 따라 FTP가 디렉토리에 접근할 수 있도록 홈 디렉토리 폴더 권한을 711로 조정해야 할 수 있다.

shell
$ sudo chmod 711 /home/$USER

만약 알 수 없는 문제가 발생하고 CentOS 및 RedHat 계열에서 SELinux를 사용하는 경우 SELinux를 일시적으로 비활성화하여 해결할 수 있다.

shell
$ sudo setenforce 0

vsftpd 서비스 시작

shell
$ sudo service vsftpd restart

또는

shell
$ sudo systemctl restart vsftpd
+ + + + \ No newline at end of file diff --git a/os/linux/connection-configuration-telnet.html b/os/linux/connection-configuration-telnet.html new file mode 100644 index 00000000..83bc9ad8 --- /dev/null +++ b/os/linux/connection-configuration-telnet.html @@ -0,0 +1,50 @@ + + + + + + Telnet 연결 설정 (Xinetd) | TIL + + + + + + + + + + + + + + + + +
Skip to content

Telnet 연결 설정 (Xinetd)

xinetd 설치

RedHat 계열 (dnf)

shell
$ sudo dnf install telnet
+$ sudo dnf install telnet-server
+$ sudo dnf install xinetd

Debian 계열 (apt)

shell
$ sudo apt install xinetd
+$ sudo apt install telnet
+
+# telnet-server 패키지가 검색되지 않는 경우 telnetd로 시도
+$ sudo apt install telnet-server

방화벽 설정

방화벽 소프트웨어에 따라 tcp 23번 포트를 개방해야 한다. 방화벽 소프트웨어는 리눅스 배포판별로 다를 수 있다.

iptables

shell
$ sudo iptables -A INPUT -p tcp --dport 23 -j ACCEPT

firewalld

shell
$ sudo firewall-cmd --zone=public --add-port=23/tcp --permanent

ufw

shell
$ sudo ufw allow 23/tcp

Xinetd 설정

텍스트 에디터로 /etc/xinetd.d/telnet 파일을 편집한다. 없다면 새로 만든다.

shell
service telnet
+{
+        flags           = REUSE
+        socket_type     = stream
+        wait            = no
+        user            = root
+        server          = /usr/sbin/in.telnetd
+        log_on_failure  += USERID
+        disable         = no
+}

disable 값이 no인 경우 사용, yes인 경우 사용하지 않음이다.

Xinetd 서비스 시작

아래 명령어를 통해 Telnet 서버를 시작할 수 있다.

shell
# service로 서비스 시작
+$ sudo service xinetd restart
+
+# systemctl로 서비스 시작
+$ sudo systemctl restart xinetd

필요에 따라 network 서비스를 재시작해야 할 수 있다.

shell
# service로 서비스 시작
+$ sudo service network restart
+
+# systemctl로 서비스 시작
+$ sudo systemctl restart network
+ + + + \ No newline at end of file diff --git a/os/linux/connection-configuration-xrdp.html b/os/linux/connection-configuration-xrdp.html new file mode 100644 index 00000000..d932ce63 --- /dev/null +++ b/os/linux/connection-configuration-xrdp.html @@ -0,0 +1,36 @@ + + + + + + Xrdp 연결 설정 | TIL + + + + + + + + + + + + + + + + +
Skip to content

Xrdp 연결 설정

RDP 프로토콜을 활용하여 리눅스에서 원격 데스크톱 서비스를 구성할 수 있다. 로그아웃 후 다시 로그인해도 이전의 세션(작업 환경)이 유지되며 드라이브 리다이렉션, 클립보드 등의 다양한 기능을 지원한다. Xrdp는 2GB 이상의 RAM, 2016년 이후 리눅스 배포판에서 구성하는 것을 권장한다.

먼저 리눅스 시스템에 Xfce4나 Gnome Desktop같은 데스크톱 환경이 설치되어있어야 한다.

방화벽 설정

RDP 포트인 3389/tcp 포트를 연다.

ufw (Debian/Ubuntu 계열)

shell
$ sudo ufw allow 3389/tcp

Firewalld (RedHat/CentOS 계열)

shell
$ sudo firewall-cmd --zone=public --add-port=3389/tcp --permanent

Iptables

shell
$ sudo iptables -A INPUT -p tcp -m tcp --dport 3389 -j ACCEPT

Xrdp 패키지 설치

Debian / Ubuntu 계열

shell
$ sudo apt install xrdp

RedHat / CentOS 계열

shell
$ sudo dnf install xrdp

Xrdp 환경설정

shell
/etc/xrdp/xrdp.ini

그래픽 데스크톱 환경 구성

특정 그래픽 데스크톱 환경으로 시작하려면 아래 파일을 편집하여 하단에 내용을 추가한다.

  • /etc/xrdp/startwm.sh

Gnome Desktop, Xubuntu Desktop (기본값)

shell
exec /bin/sh /etc/X11/Xsession

Xfce4

기본값을 제거한 후 다음 내용을 추가한다.

shell
xfce4-session

색상 프로파일 편집

Xrdp 접속 시 색상 프로파일 관련 권한을 묻는다면 아래 파일을 편집하여 해결할 수 있다.

shell
$ sudo vim /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla

파일 편집기로 파일을 열고 아래 내용으로 수정한다.

shell
[Allow Colord all Users]
+Identity=unix-user:*
+Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
+ResultAny=no
+ResultInactive=no
+ResultActive=yes

이후 서비스를 재시작해야 할 수 있다. (하단 참고)

서비스 시작 구성

시스템 재시작 시 마다 Xrdp 서비스를 시작하려면 다음 명령을 사용한다.

shell
$ sudo systemctl enable xrdp
+# OR
+$ sudo service xrdp enable

아래 명령어로 서비스를 시작한다.

shell
$ sudo systemctl start xrdp
+# OR
+$ sudo service xrdp start

접속 방법

WindowsmacOS에서 제공하는 RDP 클라이언트를 활용한다.

  • Microsoft Terminal Services Client (mstsc.exe)
  • Microsoft Remote Desktop

주소창에 호스트:포트번호를 입력하여 접속한다.

+ + + + \ No newline at end of file diff --git a/os/linux/firewall.html b/os/linux/firewall.html new file mode 100644 index 00000000..6e01942f --- /dev/null +++ b/os/linux/firewall.html @@ -0,0 +1,40 @@ + + + + + + 리눅스 방화벽 간단 사용 | TIL + + + + + + + + + + + + + + + + +
Skip to content

리눅스 방화벽 간단 사용

리눅스 방화벽 소프트웨어로는 iptables, firewalld, ufw 등이 있다.

iptables

기본적으로 설치되어있거나 오래된 리눅스 배포판에서 주로 사용되었던 방화벽 소프트웨어이다.

아래와 같이 방화벽 규칙을 추가할 수 있다.

shell
# TCP (-p tcp) 22번 포트(--dport)를 영구적(--permanent)으로 개방하려는 경우
+$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
+
+# TCP 6000 - 6010 포트를 모두 개방하려는 경우
+$ sudo iptables -A INPUT -p tcp --dport 6000:6010 -j ACCEPT

firewalld

RedHat 계열 리눅스 배포판에서 주로 사용되며 설치되지 않았을 경우 패키지관리 소프트웨어를 통해 설치할 수도 있다.

아래와 같이 방화벽 규칙을 추가할 수 있다.

shell
# TCP 22번 포트(--add-port)를 영구적(--permanent)으로 개방하려는 경우
+$ sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
+
+# TCP 6000 - 6010 포트를 모두 개방하려는 경우
+$ sudo firewall-cmd --zone=public --add-port=6000-6010/tcp --permanent

또는 아래와 같이 특정 서비스에 대해 필요한 포트를 개방할 수 있다.

shell
# XDMCP 접속에 사용되는 177/udp, 6000-6010/tcp 포트 개방
+$ sudo firewall-cmd --permanent --add-service=xdmcp

ufw

Debian 계열 리눅스 배포판에서 주로 사용된다.

아래와 같이 방화벽 규칙을 추가할 수 있다.

shell
# TCP 22번 포트(allow)를 개방하려는 경우
+$ sudo ufw allow 22/tcp
+
+# TCP 6000 - 6010 포트를 모두 개방하려는 경우
+$ sudo ufw allow 6000:6010/tcp
+ + + + \ No newline at end of file diff --git a/os/linux/install-snap-package.html b/os/linux/install-snap-package.html new file mode 100644 index 00000000..f0d672b7 --- /dev/null +++ b/os/linux/install-snap-package.html @@ -0,0 +1,44 @@ + + + + + + 리눅스 Snap 설치 | TIL + + + + + + + + + + + + + + + + +
Skip to content

리눅스 Snap 설치

개요

Snap은 제 3자 소프트웨어 패키지(.snap)를 제공하는 리눅스 패키지 관리자이다. Ubuntu와 같은 유명 배포판에서는 스토어 앱과 연동 되어있기도 하며 간단한 커맨드라인으로 사용자 디렉토리에 샌드박스 앱을 설치하여 손쉽게 관리할 수 있다.

snapd는 이러한 Snap 패키지를 관리할 수 있게 해주는 서비스 명칭이며 snapcraft.snap 패키지를 스토어에 업로드하거나 관리하는 CLI 도구이다. Ubuntu에는 기본으로 snapd가 설치되어있다.

설치

Ubuntu 20.04 이상

Ubuntusnapd패키지가 기본적으로 설치되어있으며 아래 명령어로 설치 여부를 확인할 수 있다.

shell
$ snap --version
+snap    2.50.1
+snapd   2.50.1
+series  16
+ubuntu  20.04
+kernel  5.8.0-50-generic

Ubuntu 18.04 이하 / Debian 계열

Ubuntu 18.04 이하의 오래된 Debian 계열에서는 snapd가 기본 설치되어 있지않다. 아래 명령어로 snapd를 설치하여 활성화한다.

shell
$ sudo apt install snapd
+$ sudo systemctl enable snapd (OR... service snapd enable)
+$ sudo systemctl start snapd (OR... service snapd start)
+$ sudo snap install core

CentOS 6 - 8 / RedHat 계열

CentOSRedHat Enterprise Linuxsnapd가 기본 설치되어있지 않다. snapd 패키지가 존재하는 epel-release 저장소를 추가 구성해주어야 한다.

shell
$ sudo dnf install epel-release
+$ sudo dnf update
+$ sudo dnf install snapd
+$ sudo systemctl enable snapd (OR... service snapd enable)
+$ sudo systemctl start snapd (OR... service snapd start)
+$ sudo snap install core

사용 방법

패키지 설치

패키지를 설치/관리하려는 사용자 계정에서 다음 커맨드라인 명령을 실행한다.

shell
$ snap install {PACKAGE_NAME} {...OPTIONS}

{PACKAGE_NAME}은 실제 배포중인 패키지의 설치명으로 필수로 입력해야 하는 값이며 공백 없는 소문자로 구성된 키워드여야 한다.

특정 채널(beta, candidate, edge)로 패키지를 설치하려면 아래와 같이 사용한다.

shell
$ snap install {PACKAGE_NAME} --{CHANNEL_NAME}

{CHANNEL_NAME}에는 소문자 키워드의 채널명이 들어간다.

패키지 삭제

shell
$ snap remove {PACKAGE_NAME}

패키지 업데이트

shell
$ snap refresh

문제 해결

패키지 설치 도중, cannot find required base “core18” 문제가 발생할 수 있다.

shell
2021-06-04T08:49:14+09:00 INFO Waiting for restart...
+error: cannot perform the following tasks:
+- Mount snap "code" (24) (cannot find required base "core18")

다음 명령어로 snapd core를 설치한 후 패키지를 다시 설치하면 문제가 해결된다.

shell
$ sudo snap install core

특정 snap 패키지 설치 도중 다음과 같은 에러가 발생할 수 있다.

shell
error: cannot read snap file: cannot run unsquashfs: ----- Read on filesystem
+       failed because EOF read_id_table: failed to read id index table FATAL
+       ERROR: File system corruption detected -----

이는 일반적으로 설치하려고 시도한 snap 파일이 잘못되었거나 깨져있을 때 발생한다. 파일을 다시 다운로드하여 시도해야 한다.

+ + + + \ No newline at end of file diff --git a/os/linux/install-zsh-and-oh-my-zsh.html b/os/linux/install-zsh-and-oh-my-zsh.html new file mode 100644 index 00000000..82290f49 --- /dev/null +++ b/os/linux/install-zsh-and-oh-my-zsh.html @@ -0,0 +1,33 @@ + + + + + + 리눅스 Zsh와 Oh My Zsh 설치하기 | TIL + + + + + + + + + + + + + + + + +
Skip to content

리눅스 ZshOh My Zsh 설치하기

Zsh(Z Shell)은 기존의 Bash Shell에서 많은 개선사항과 여러가지 확장 기능을 지원하는 셸이다. Oh My Zsh는 Zsh에 확장 및 구성을 관리해주는 프레임워크이며 Zsh를 설치할 때 함께 설치하는 경우가 많다.

Zsh 설치

Ubuntu 계열

apt 패키지 관리자 명령어로 Zsh를 설치한다.

shell
$ sudo apt install zsh

macOS

macOS의 최신 버전 부터는 Zsh이 기본 로그인 셸로 동작한다. 따라서 최신 버전을 사용하고 별다른 설정을 하지 않았다면 별도로 설치할 필요가 없다. 만약 설치되어있지 않다면 수동으로 설치해줄 수 있다. 설치를 위해서는 brew가 사전에 설치되어있어야 한다.

shell
$ brew install zsh

설치 후 기본 셸을 Zsh로 전환하기

chsh 명령어를 이용하여 기본 로그인 셸을 변경할 수 있다. 명령을 실행한 현재 사용자에게만 적용된다.

shell
$ chsh -s $(which zsh)

제대로 설정이 반영되려면 터미널 앱을 껐다가 켜야 할 수 있다.

Oh My Zsh 설치

curl 또는 wget 명령어로 설치할 수 있으며 curl, wget은 기본 명령어가 아닐 수 있으므로 사전에 설치해야할 수 있다.

Zsh를 활성화할 때와 마찬가지로 Oh My Zsh를 활성화할 사용자의 터미널에서 아래 명령을 실행한다. 다른 사용자에도 적용하려면 각자 명령을 실행해야 한다.

curl 명령어로 설치

shell
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

wget 명령어로 설치

shell
$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

설치 이후

설치 후 ~/.zshrc 파일을 편집하여 Zsh를 사용자 지정할 수 있다.

상단의 ZSH_THEME 값을 변경하여 원하는 Zsh 테마를 지정할 수 있다.

shell
# Set name of the theme to load --- if set to "random", it will
+# load a random theme each time oh-my-zsh is loaded, in which case,
+# to know which specific one was loaded, run: echo $RANDOM_THEME
+# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
+#ZSH_THEME="agnoster"
+ZSH_THEME="simple"

Zsh에서 Home/End 키가 정상 동작하지 않는 경우 .zshrc 하단에 다음 내용을 추가한다.

shell
bindkey "\033[1~" beginning-of-line
+bindkey "\033[4~" end-of-line

설정을 편집한 후에는 다음 명령을 실행하여 적용한다.

shell
$ source ~/.zshrc
+ + + + \ No newline at end of file diff --git a/os/linux/linux-multipass.html b/os/linux/linux-multipass.html new file mode 100644 index 00000000..f0ad56f9 --- /dev/null +++ b/os/linux/linux-multipass.html @@ -0,0 +1,36 @@ + + + + + + 리눅스 Multipass 사용하기 | TIL + + + + + + + + + + + + + + + + +
Skip to content

리눅스 Multipass 사용하기

**Multipass**는 우분투를 배포하는 캐노니컬 그룹에서 개발한 가상환경을 쉽게 구성할 수 있는 도구이다. 여러 리눅스 배포판 환경에서 개발이나 배포가 필요하거나, 테스트를 위해 사용되며 설치 파일을 통해 별도로 설치 과정을 할 필요 없이 커맨드라인 명령어를 통해 간단히 가상머신을 구성하거나, 켜고 끌 수 있다.

Multipass는 아래 링크에서 설치할 수 있다. 윈도우와 리눅스, macOS를 모두 지원한다. https://multipass.run

Multipass 기본 사용

shell
$ multipass find
+18.04                       bionic            20220901         Ubuntu 18.04 LTS
+20.04                       focal,lts         20220824         Ubuntu 20.04 LTS
+22.04                       jammy             20220902         Ubuntu 22.04 LTS
+anbox-cloud-appliance                         latest           Anbox Cloud Appliance
+charm-dev                                     latest           A development and testing environment for charmers
+docker                                        latest           A Docker environment with Portainer and related tools
+jellyfin                                      latest           Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.
+minikube                                      latest           minikube is local Kubernetes

myUbuntu라는 이름의 가상머신을 생성하려면 다음 명령어를 사용한다.

shell
$ multipass launch --name myUbuntu "bionic"
+Launched: bionic

이제 myUbuntu가 생성되었다면, multipass shell 명령으로 터미널에 접근할 수 있다.

shell
$ multipass shell myUbuntu

그래픽 환경을 구성하려면 xrdpxdmcp 등의 추가 구성이 필요할 수 있다.

+ + + + \ No newline at end of file diff --git a/os/linux/ls-file-type-string.html b/os/linux/ls-file-type-string.html new file mode 100644 index 00000000..36edf55f --- /dev/null +++ b/os/linux/ls-file-type-string.html @@ -0,0 +1,34 @@ + + + + + + 리눅스 ls 명령어 내 파일 형식에 대한 문자열 표현 | TIL + + + + + + + + + + + + + + + + +
Skip to content

리눅스 ls 명령어 내 파일 형식에 대한 문자열 표현

shell
$ ls -l home
+total 64
+lrwxrwxrwx   1 root root     7 Apr 29  2021 bin -> usr/bin
+drwxr-xr-x   4 root root  4096 Feb  1 06:39 boot
+drwxr-xr-x  15 root root  3760 Jan 24 15:59 dev
+drwxr-xr-x 100 root root  4096 Jan 26 06:54 etc
+drwxr-xr-x   4 root root  4096 Sep  5 02:06 home
+...

ls -l에서 첫글자 l, d, d...는 파일의 형식이며 문자별로 다음 의미를 가진다:

문자파일 타입설명
-일반 파일일반적인 파일을 나타내는 문자
d디렉토리디렉토리를 나타내는 문자
l심볼릭 링크심볼릭 링크 (Soft Link) 파일
c문자 장치 드라이버문자 장치 드라이버 (Character Device Driver). 물리적 장치를 위한 실행 파일
b블록 장치 드라이버블록 장치 드라이버 (Block Device Driver). 물리적 장치를 위한 실행 파일
s로컬 소켓프로세스 통신을 위해 사용되는 파일
p네임드 파이프 (Named Pipe)프로세스 통신을 위해 사용되는 파일 (선입선출 (FIFO) 파일)
+ + + + \ No newline at end of file diff --git a/os/linux/sshd-tcp-keepalive.html b/os/linux/sshd-tcp-keepalive.html new file mode 100644 index 00000000..86003a45 --- /dev/null +++ b/os/linux/sshd-tcp-keepalive.html @@ -0,0 +1,29 @@ + + + + + + Linux sshd TCP KeepAlive | TIL + + + + + + + + + + + + + + + + +
Skip to content

Linux sshd TCP KeepAlive

리눅스 환경의 SSH 서버에서 Keep Alive 패킷을 보내려면 sshd_config를 수정한다.

shell
$ sudo vim /etc/ssh/sshd_config
shell
TCPKeepAlive no
+ClientAliveInterval 10
+ClientAliveCountMax 0
  • TCPKeepAlive: SSH 서버에서 연결 유지 패킷을 보낸다.
  • ClientAliveInterval: 클라이언트 확인 간격 (n Seconds)
  • ClientAliveCountMax: Keep Alive 메시지를 받지 못했을 때 클라이언트를 종료하기 전 접속을 유지해야 하는 최대 횟수

예를 들어 ClientAliveInterval10이고 ClientAliveCountMax3이면 10 X 3 = 30초 이상 응답이 없을 경우 세션을 종료한다.

서버측에서 Keep Alive 응답을 보내지 않으려면 ClientAliveCountMax의 값을 0으로 설정한다. ClientAliveInterval에 설정된 초가 지나면 연결을 종료한다.

변경사항 적용 후 sshd 서비스를 재시작 해야 할 수 있다.

shell
$ sudo service sshd restart

또는

shell
$ sudo systemctl restart sshd
+ + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..99313645 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://til.jooy2.com/https://til.jooy2.com/instructionshttps://til.jooy2.com/language/common/json5https://til.jooy2.com/language/common/variable-case-typeshttps://til.jooy2.com/language/css/code-style-guidehttps://til.jooy2.com/language/dart/flutter/change-app-display-namehttps://til.jooy2.com/language/dart/flutter/flutter-library-flutter-iconshttps://til.jooy2.com/language/dart/flutter/flutter-lint-depend-on-referenced-packageshttps://til.jooy2.com/language/dart/flutter/flutter-row-column-main-axis-sizehttps://til.jooy2.com/language/dart/flutter/load-external-json-filehttps://til.jooy2.com/language/dart/flutter/upgrade-flutter-versionhttps://til.jooy2.com/language/dart/flutter/widget-inkwellhttps://til.jooy2.com/language/dart/naming-conventionhttps://til.jooy2.com/language/html5/code-style-guidehttps://til.jooy2.com/language/javascript/alert-prompt-confirmhttps://til.jooy2.com/language/javascript/clone-object-type-datahttps://til.jooy2.com/language/javascript/code-style-guidehttps://til.jooy2.com/language/javascript/commentshttps://til.jooy2.com/language/javascript/consolehttps://til.jooy2.com/language/javascript/es11-nullish-coalescing-operatorhttps://til.jooy2.com/language/javascript/es11-optional-chaininghttps://til.jooy2.com/language/javascript/es5-use-stricthttps://til.jooy2.com/language/javascript/es6-symbol-data-typehttps://til.jooy2.com/language/javascript/es6-template-literalshttps://til.jooy2.com/language/javascript/framework/electron/complete-delete-data-filehttps://til.jooy2.com/language/javascript/framework/electron/electron-handle-crashhttps://til.jooy2.com/language/javascript/framework/electron/unpack-asar-file-formathttps://til.jooy2.com/language/javascript/library/eslint/typescript-eslint-no-inferrable-typeshttps://til.jooy2.com/language/javascript/library/using-clasphttps://til.jooy2.com/language/javascript/method-chaininghttps://til.jooy2.com/language/javascript/switchhttps://til.jooy2.com/language/javascript/ternary-conditional-operatorhttps://til.jooy2.com/language/javascript/variable-type-checkhttps://til.jooy2.com/language/typescript/positive-number-typehttps://til.jooy2.com/misc/scripts/bash-git-pull-all-for-current-directoryhttps://til.jooy2.com/misc/yubico-piv-tool-reset-allhttps://til.jooy2.com/os/common/create-large-size-filehttps://til.jooy2.com/os/common/open-in-explorer-from-command-linehttps://til.jooy2.com/os/linux/cd-argument-exampleshttps://til.jooy2.com/os/linux/connection-configuration-ftphttps://til.jooy2.com/os/linux/connection-configuration-telnethttps://til.jooy2.com/os/linux/connection-configuration-xrdphttps://til.jooy2.com/os/linux/firewallhttps://til.jooy2.com/os/linux/install-snap-packagehttps://til.jooy2.com/os/linux/install-zsh-and-oh-my-zshhttps://til.jooy2.com/os/linux/linux-multipasshttps://til.jooy2.com/os/linux/ls-file-type-stringhttps://til.jooy2.com/os/linux/sshd-tcp-keepalivehttps://til.jooy2.com/software/db-browser-for-sqlite-save-password \ No newline at end of file diff --git a/software/db-browser-for-sqlite-save-password.html b/software/db-browser-for-sqlite-save-password.html new file mode 100644 index 00000000..f31d63c0 --- /dev/null +++ b/software/db-browser-for-sqlite-save-password.html @@ -0,0 +1,33 @@ + + + + + + DB Browser for SQLite 암호 기억하기 | TIL + + + + + + + + + + + + + + + + +
Skip to content

DB Browser for SQLite 암호 기억하기

DB Browser for SQLite 앱에서 SQLCipher 암호를 매번 입력하지 않고 저장된 내용으로 열고 싶은 경우 다음 절차를 따른다.

먼저 데이터베이스 파일 경로와 동일한 위치에 .env 파일을 생성한다. 이 파일은 암호가 포함되어 있으므로 외부에 공개되지 않아야 한다.

데이터베이스 파일명이 mydata.db라고 가정한다. 생성한 파일을 열고 다음 내용을 붙여넣는다.

dotenv
mydata.db = {데이터베이스 파일 암호}
+mydata.db_keyFormat =
+mydata.db_pageSize =
+mydata.db_kdfIter =
+mydata.db_hmacAlgorithm =
+mydata.db_kdfAlgorithm =
+mydata.db_plaintextHeaderSize =

환경변수 키값에는 데이터베이스 파일명(확장자 포함)이 프리픽스로 포함되고, 부가 설정은 언더스코어(_)로 구분하여 뒤에 옵션 이름을 붙인다. = 오른쪽 값은 해당 설정에 대한 값이다.

SQLCipher 암호는 아무 설정이름이 없는 처음 값에 붙여넣으면 된다. 이후 아래 옵션은 SQLCipher의 버전과 각종 암호화 설정에 따라 달라질 수 있는데, 일반적으로 암호화 버전 3과 4를 사용하며 각 버전 별 기본 권장 설정은 다음과 같다:

SQLCipher 3

  • keyFormat = 0
  • pageSize = 1024
  • kdfIter = 64000
  • hmacAlgorithm = SHA1
  • kdfAlgorithm = SHA1
  • plaintextHeaderSize = 0

SQLCipher 4

  • keyFormat = 0
  • pageSize = 4096
  • kdfIter = 256000
  • hmacAlgorithm = SHA512
  • kdfAlgorithm = SHA512
  • plaintextHeaderSize = 0

keyFormat0인 경우 Passphrase, 1인 경우 RAW Key 암호일 경우에 해당된다. 특별한 경우가 아니라면 0을 사용한다.

이제 프로그램을 열고 데이터베이스 파일을 열면 암호를 묻지 않고 바로 데이터베이스 파일을 읽을 수 있다.

References

+ + + + \ No newline at end of file diff --git a/study.png b/study.png new file mode 100644 index 0000000000000000000000000000000000000000..72dfbcee8d8292816d27c371f5ac76a084f6f183 GIT binary patch literal 14697 zcmb7rWmsEH^yf{mV8vaF71vUVLvg2gDNeCMi@ODiyL-_BrMNo;_X0(WyK8a(hj(|s z?S9yKl1XyrcWlm?GxOZs8>*@-gNa6p1^@u2oUEi80DxAW-wG<5_(9A_|exFw}Inr6-CpYBb~z1E)pO$;%#R2Ix> z8cgoc|M&H7nRNHJ4T{to^hoCqp9;c3vmtZ zD;soZb2g~qt^?;(vxv=9<~5unJHg>`mw(B*h%FBtc?SxT?8f=0UbJEem$txd^qN$k zlV^GO$872F0zI-F(d#i4l6jG((O-JP&JL4x29_>=Z5JP*_x17cqB1evTj^ z8v~!N(&(iY>kmWoE%etfuKrqNRfmAWqv%+L6_a>q*Ob(f!9E-uiP=015dV}39ew>) zF-b3-J+)4i&C~pZp>WVW0`eBrMZl1Trj3C>!B%N$=LjWa1Ojsm5R=rCZ)2-9Tsfjj zr2UY2^cJoWKFww{Yt3q&n1)G}#4vuNY%`?^J+1Yte6Tu|!unYhsAcE_goqsjo-?;fb*vR$x|P_%LI^_YjsF01m`*Yf2MtV2YITnNP>JoXzP$>3{}~19%zn5d{0KtG8{hFK^<}7)fTcB4 z(N8O^P;p}8lqU)xz}nM=jbX|(s41RDJ_`}(oF_7_?P)q$@T6_AJ7+24LG~(6aPZ+W zdKH5>TpQw+r(s0-X=|QAX0=v(x^{lxa=J=qdGJi3njfATTg4H7h^Fw4+r6BO5N??y8G%NeBGI zmaq2#13nRi?8F zDbr7$yrwFG;okgp6B3D^)dTYxgHmsF!g!P3n;+q(3&K50X}h{3gF`$@XBR*UW6BL(Dw3uio&%a9?vSdet%z=$K^TroVd5fh-N9zq_Vq z%qB1wS+D>R&T!fIR-og zIEKk+=Yh>sOvpCUxMQhmgHufXD}i+IOm#Z$Q1i>YfhRp;#E07yjci-)vtK4abM|;6 z+%(#?b~QiBrhH;Cl!y<+3P`v8i&=1ysOZ%vCTLt92aYBH1*gFFk!TJiukW$Cs>%TTW4Cl-pvja0A+Pb808h~I{Bk)Y zflg^wcn$n7C0*6M{I0`Ozl+1ypVdX@Q3z`_390ha(=%=-W^zh%QIz`fU&4?9T*;Y+^B7-ESe+ z^hiXr{fp5Aa3D*?sK{LgJ=r0+`wD@*qy+PMZpLgnmSU0uI)Y-->fZnb=5(J@x2X}?vWLnlUe zv-$^s`mE7HZcS$Q#^OGK49l3P_rfcoSa0iMFixELz#s;0Sa3WFq(NO>Y?7#JeB%^E z*?=X9OsvdbBX=_C9YP1QTgp-LPd<{M0|l|X_=4NwNJWFnxnO4*zfygNEeBmql9*?V zxUAJ6{B2WwpgZ}#v9+zx!P4Hs>}MhW_LH8X8-x=av7&W(@whpVlsV|1`UOl5fTW=~ z3%w>~1Ac*8UIOolVK?eYr682q2X zbJ9${R!t}loT+2P9TOd{2B2*KS-Tz8Xn`JIz&Q#d>NS!^z7mOaeA)P4!VP%K^L&V< zbnM8s-rtk5_h-V@%uIV>K_Td0*Jtc}wRaJoHScb3ANQ#SAYHYWuI_#@!+I87n3VY6<|3?FZ*xlanheOcWvG|;|w-l{eT%YZ5`!_qfZGl6$5LdeDZ-dGSZgKePc?*P9 zte95?S*UzrlX*tHeYj`s^iRJd{R;Oth1t`UWV!Bw*Y5t&eR%j&<3dzU#LJ<4E*^M0 zLo*F|__WX+*EbAr5q@Xn`9p7&ScjtMo(#PD%74FVY+qzSi@fp|^m*YMfXd#y`mLU9 zUK&ap4SWL(m+Y?`{n+_y1mZdt-PSDmt*-1HCW?6ftv=x_Fn%7$_wYf%0AoZ@3jcdp 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%0D?=8TxgK+vFh;RG@5ji4 zL+i$pj}q=&UCJIrBx= z5!#?)WgntaWTRewN*BV)1LnbcmbYJPqnl|0=v|j*cea!6XX{`l)}ijTkb>y)@?&OX zSZv~k(t&f&G+G~K01vMELH@CO4sn8(0(Og@-v<`L;F^t8YGPJo*m&YWpALOe2QBRJ%-_yxu=OMY#4tSo)HHJ z4N|*XYrfI@6))}wD9)G|d@O$zlg;5HRu2ldMH8NiOCK84DMXyLs9Jvea5I#1WL@nvbhG$y{@B50_(uKY0SI zTU&b`&#|={*t{!^^;Ik>J!I(R0O-AVfUkJ!jv`MNy_{a$;`R88^W=zG(|JUKAs|&! zu2wE+5+`{X_LDeHhTh)Jo6WP)omSu6yOTTka1x3=Fji2?9(i-`xlpT}y85zdV!^tZ zV(#ds*JKTe+K&ni_T%=Jluff;clCaw?884zCGnH&^v0%?L5IJrWEZ2!N4FL#1Kwyi zX15mY(}up?!f*Za&EVz=%^OglKR?fi@vok;H#3SD41f@zP>>i5_5OMa<`=8~>NhwQ~y)*LvA3`*Y5dZ)H literal 0 HcmV?d00001

ZW z>LvWci|0Ys_~}zA<#r!FpYB||^on+Us`%f%qy+jTHN#5H_iqB-3Ph=a%NV&Ad-gHw zl4kvsk9?lBv!OO#qTiYn;vKECa%fn4tT|~nfbKPSY6FQp8|vk7r?}G(%x$_VOxJ)1tWAXy zcO*??y!+8dxoc9|2dW^~GN;B|U287!Nm=LIaJ|ooF+aLwJ~NGa1&q?uVsgUYS0mKc z^NMXa(-R0U<;Xo`mUgC|{_3V_zm68nk4b20hpwkRQkMb*pZZl2rg(>RoxTxgS~q>5 zb7#x}f7-3WFBmEwNSeWAM6RG)CF_BlV(;Q7?x!tD9MS)>b17=hXlnJg>danU(&=^r z-)3(3ih3{goV}bHi+zaagq6RWx_bm``PwSmsO_Yvdpio+qC;yl?_p;yv+s7FpwBj+ zQai?Me5wWN2(b*{1y)CJlZqTYJZ35$0sP!^-i64 z`d(46qTZAIEg zkrG#q7P)*}dk)#g;1erffjC^O)0hAQnxgE(`z}fm7Ix$@FIwC;_oNa zQb&n&LZp+=b$_xc{dgqZKj`Ci-p9j(Ryc}Wu~;G%Dtxnv98OyN+DAJgu2V;>(~qs& zkMFpj*r+4-hRg21{p371)eP8HBbcxVziL&b4fi2d@`LnFB1U$xu*{2mR8p>ft_poh zSMe{nu_Rcv;3^rP@5-rh|9xug(~ls?I)#9qyBhPnOY%II$Co)f@D+Kv_-R{h zXnyH(AMtPjD&-$N=K_KvHgl>^4Qkuj!*!WJ;SH=1X9TjeBd-x-1AbEA=ZaACwu*`O z0>$QkuFPMm%7?1@#NE3ripz13?~-Ww-aowBr@cqTsggA3 z3*J}p+tOY*WsqHRX2`&Z9p9#Ro4ul0WWTiGS|uwMo;BEVjY$vB+Ym)-U6|ZqF;3$! zrN(UN4VB^Vp_&@OB&0&+WJq@9)n3uzf+f zznj$JjkJc79b(a6waK(YWIRJ!Az;Yhj+_A5DxQ;Kv6B~B21}U1912nRRMCh4kTHon zgbPU{0EAg->BR!bLNdrCvr;(nAvdf6$s-c7u*ozhQK>)$bE0}2sB+FpRM6te|9d$z zsI5ztZ;OpjIolBaY**(tM0%96Ey=yE_lNV?pF1vK9eCUcm|=EY0VN(v_@u(f(o4}T zDPatNGza`q^$)!d@XiKafG`2@@smOcv1e`|<84JnJ<$xy@d428$9~ES%Y{8c)7c^n zCH|?WB}1}yOj(oly=x^m+d|brlb`{e)F_{pX_W>XA3CIEa{FgYkrY``lAH5~dex~$_1`jOy7Z>Rpw0O{g&wfc8 zQ=iC8D4!jalOX>Fj04tz^xgg$v?*Z*31uAo@4$U-n?rDBUjS!7h(YY2#tQ$g;|q`r z6c%wSK>q>Ig@9dl3le8G5Au%?{(s&QOGwMY?0V1x?*aY^;4c7v0ez8T2t?=ziU<*Q zMO}m4;J1V=b6XHD85m<@a-6rmf|5WzKtBLaw>$69b&G*`@%w?2Zjkc6QO@>=?2gJu zMR{rB{F(XX^z=(DJg1{C4X|8La0Q*-*h>dA!_qQDU=a$>G17i^XM`|v+iBl(Iv zYKMTn2yGB%@URuq#LNm(UQD`(h0j;Ag2v$b`0g3dRV!}5!n zTEcQZP5dOYHo4Ry7aVg&nCFwJ2=gMA7n7(ac8`;5MfKxIOA+d#TpcGn)LMvumjl_h zo=TuG8$p7Bf?;A&ZWQJu%%NpI#B&ojr;fSBGH2qv7l(3@jmyn)W{liT=O16Sw9;6L z{+-oC>l{M`sr;;@i}Pi}QD426)og?M6l$x zS285gwp@ILu`&NdHn$V;c6%=3-X!G9AXa1=cvs@ZL_|Vzr9F`=Ah$kY%Ji~+lH_D= zL7O9Z_ZSs!;N;Rya`B7GUm$`~Ji@B)bdN(}y-bR7g;nIr$RbUF^}8O`al0rNtw&g9LmFGLLJ}WJawYEuP%qpMa8&>OX((BGB7iL zav?s(?X2X)K#H-Ts&MCC_gC4>xZM`an()wF`FE zPdn)sjI?+bN3B7c4y#bF(PghHNxk}6vvN;Hv9F)~fUp=P%q3OF#j%NXp`xxh9l&44 z=jAvS{$#zW>(Kg?qqK&v&9m7?f77mxS$qJamj}TvR_Dm;DMFOQlcdEP`#VYx52Zox z-mW5ry3tedKXOK9e4(}cBy7K?kQR(iqc`g3o>c4aj!5&8Dy-LeO~M~!p(oxiu2*ho zLn9%w#gIoN#i!|qhQWk6#pSD%kD|;?in_(rx~ssH%rag?Sjw^?0W77Lz6RlQyIDF6 zJtPH865f#Vfh;!wD{fUcKiApATY)Fe&3}eFxo$iE0yUeVWI=<02d`rfxL5(W8Fs#& zD|%!AIC-?{7S>{`YwSP(puevN~8bE$j8Jz9Ekdec7tG3laqtU^S2(R!)|IFZidr8 zM?Ea*~cX?!2l%ch2t}LH@d0Z>zRw?(&cvQi&qA_X^7*j~MH%?!Vm{?-F zxBBi%s!LWQvKy7tFNzyd(X@tmZZzX@Tb{P0yIXo%MwByDUZ8^EiY8{k;i2N8iQ%i^ z=I3y8RZ=4?%qcxrOT?;@#QKt{uBuaGJH6_0+swNcL+{P~?o~_`Dy-W}Ij@h=n5$$m zPtoC`@Ym^ek#5v99bXR=wJd zjkC{>G-$8y&Q^AI=k_wycCAiIO>0onge-b}zDm_Sv$$%Rk(O5D)@m)!-4Pb9g0h^u zVh2jIrA)hORnx4S@%M{8>DJ1qwA0qIT)o#W^aRELD#loE<*;gecZ7;xU5Y3uCuLxMY*o3kV_?;x+$zS;kApXLtMS$yDy3%qX zFNWaAY&g0y92u@ zQbSQ1ixw`%hGI1p=aS+zmtaRV{HoQ_OU}%)X#LBKwRe`NWyfuHEq*Pzj zXVW&bQTtMDwPtyPfwI0&(ghi4>tTYLV%}?Vd**`tkiz(DqP3o}&%U>P4c{lrKJboL z^hH{#Y32c&bC0Gi$z4)^L8>~3O-(n!s*Z?i)z}2Aa4%$Q34HV3-t;6~PAHrQ%^J{8?pu7zZ2WqILvIix5cu~< z2cS5?>}{Zqt>^b`6&34|EjYvDU1h5H-N!Qkr3KbR9i=&rdqxMYwJ0m9{g`QoK3J z?cQ5Vzb2bf7Il>LYlch)(|rSKi><>nC)z9uhdB=+A^FS0mScljN_~eq8=8idCM4_H zG{T8czae68BX6#A(^U_S-_%L17*8(OS4WSrha#&&T223QEl{~|7BfyaSz7=N42Lb> z%3JS(T`RT{dIlXGQ#j5jtzZBMTV?EOFgu|(rT=2*D1Wo5Xr!23jnWfO-Q)V}K` zQPAF~LWXiwq>i{&PH;LI(%};6myPrntCEkHhjpXzR-2Fb z;?5o{%&u2lp~a6=#+Yf+)B7V7QmmGvdM^_3J5kir`MNpE_bk-w@7%;%IkaWfWMdFa zI&~ZNV_lD@LhHQvD53w8J6|v>kiSdK*9hq4jh++qR_j;RT6dcOGoE5f( zq~yp`FeKufrjhV&sgVleT4Dqgp<$^YHUE{7hT^?!R9Z^$cSd|P<=|SYlvDI4_bb6x zBUNqy&2h9%Ys>FZe6p0@H=ko(*>F2F^hG3N#pa^oJW<}YvTQ#jp02r9yuaQ%V@$qf zF-TS58swLOSYUkM2Unw`XgE>f{4gPqssfm?bWjQ#u0=$U> z=Jc?I?J=zxqkVC^1)C?mTmKS4M9MvcSCCjBiVE>B8vdy<0&FPPkf)XE9zKE%O21G4yIA*H6;_4fUyD;Cwk#)oXq2pLv#nW zKCi?Bq0JBx(&sR;M_GIYVsuT}5`X3L?0#HUCIEfRY694F#>%4_U8i-?QcgI!EMm$b ze|F3!dvVx8aJI>fg4hLsYsLg=nX{3~4agk1r$@=A*_%tD?E}=XSD^TwKD=v zTbsGdLP#Hz5Kv-eM<|n~H}YOAR|fksLfmO+e(Bf_L$hkx8C9rVgb**Z#yVBTq_F`h zx7_~0Uy&l_(gGi`Do$>YtHgVtc=yFcWi^(RF7XDqC351j{-nWUU_hq-f-DWJURP`d zQl27WA&6oeim2D7*Rqs{fN&5ZS#{fIh`yD~MTVpH8+`BfQ;Mm&&BImP6~-L0j5^aG zpfQVy)3ozqs_zbK`E~|qW&^Mm;_uY#9MEC?0HP6vnN>K~GOq}+0D`(!D z_KhCJC4n&(Rv9mn#X)1YPbe6V0(KZ%QUk}{4@mO@D8+9?aNrDFW?~@uk-fB$7sXt2 zp!w|&*KrhF*4GZU2Ra}M3VYj}QWz|MKHtfai+Y0e3ltW3vB4Aw3>D!D%mkICL6Vqb zIFe5pBKQ*TWo!)tndBT=V_XknuGkqF8nHO-5G{60g) zG&u(uh-CmrXe@}S1_q@3x5jZolcBo?Q$_;a;)i2~87(XzdbV+Jgc^Q?^|&fDm~?<_ zgKV@dltBUpwhkDu+6Yx*ihJ3}f>ZtxMYD%v~@)Z4coYVX8t;{Z2RMDD zTg)1GWmmEBB z6)Unp=FYv;i`MeJ4N6T#?$DUoW_X7Vxx;g|155RgZrH-b6_n_zbndns7gfXw@I-_S z=99|J0_L&B2^6Xa5?Zwyn{A@`IVZcMG)JRy$?W0-Nt_t z3)w@ClC|O?A2jfk6wojb9xGDU@ob}0k-J~OXkyi4%n?*t6(Aeq=T4q}O~4&C)9pIp zSEf#5eBe&@86Y)2iI~s8zYsIvw$^eqxWjnmhv}Q}f2tUSb*-3WW-;wkMuR?5)9r0v z9Ou#4&U9%!-d)ea4s}6STGnrj282tVgI3cC&_yYIkm$fQf)739>1{wwLd=XRA%_Qr zgH%P%(qwyK$_2my@7VH^p|k!hPyE6Td1Quf${;A+o^S$0-F(RJ_M`r4S6_TD?O&YV z%6-pqEsgmp%T(~M<%hrK?={3V{GE>D!< z6Qdlgz)g~tye8quf|t1kRD+MdJ(zzer_XqFmGk1A>kSN8E3+A1l9xx{J=D$mTzj@p zAHI~COYX-r8k8uhroB2}RT4rsWerlyZgzAys8eaoj5})qIxjE!>Nez%0X7^uCbi^& z=z2u*@yu7B6PmT|~?rr(PMa8;)g!;T~!S^(GSvD7! zD4Z>Lz!lQ%JQ4g)Z^ z2G7<_%0*Fu1J+ER>Ss1H7})UdwHPg)5uxe+sN=y01JWxWOf|f&n$Jx%je+k3W>#W7 z=`b>@9*K8d1K1R%_F!BYQSUV-a=1bF2v^p#J ztp}B6;=xa<_LK;f4#(;8m1}416L3f)yyQt}q+Z3vnxnz6LzA>b@Nr}rfiV`{npCr_ z`fc}cAB$~fkc)&xgR6S|-?8fzxBtqZVq^q``rc(}hND0B__^CRI-QyU>w@Pa)?JO0 zbpid?-)3wku=Pz7EtEJLA*MEo0eoH-a9c9UFr~jCiTg@|U>ngiJ7zM!zZhkDwx3P} zY|>n?wnU8)5b-njb<9JlRPH&`cQXOg(&nNH;yP4^rfb{hAI=UHWeBO_M`36~qkhEV zT{xVFR9dT8N6(-4+f^tfq%eha8OW#0K01%+w8AoVg3kqCA+O`<>aE#<(xVl7Giu)Hr2v53$$PF_!5& zZ7c3aH_Be+GJ=ZDwvN3VD8xls0B8D|b`r;)enF_(- zh?E-F7uPBqy|2Km`ntwK_%w$Z=*eKKYrb*u8<&vwkG!J0hws8xOi zBr%OCi6aE@)zx|IQEI7Nx0Df^}3U)$Ma{Vq(ZUEejB!Hlk ztBXR&vMCKZ0B{FEHhFbP}_@MbbxQ!45l|k(`VSj14nL3`&|Vsv&j&- z8tluCu*-ER(Y*#K(m(O|n<=uvnRs$b{@*wk38N?yVp=K_A73UuQX9D+FDdzAy!ObG zKIz(8i>@#TrmL&&`%Ad&K3RFIb@@)a&bk^y+J3z{Gqbq5P2MMOc4?^9fOGKi;sA!utAc%nTXqcgS${X|TFu*Ad-$sq zhFwT(jgL!jE@zy^r~{0=zY(ZSsV zQ`j_Y@9&!riaF^!K=j%AFmxR;y2`+Fz<1Ecbqc4qR8~d+uCqUFQCIj!! zqyY|7ahrSJ`_YOsRb1*0bHIHMMx+ni?0LhAQ+H|}Pt)Pmf}_%nQY&WJQ&H->yMx}@ zhfxjolgyTaJO{g~<{Q+@u^v7aB~`v!{bpJ=a*i_hMPn`ioukjeCjXMY-L&?{QEx?2 z#RUTaf!#NyKHVApc^AC;%+z>4D(p{}SXDnid|0WX+xu}B+Ub~1^c~O4^nE&$(8UJg zJ|G9%>4WnbR|<0kG~uTRrWrKChU&N*b?oZ3Rw-y#$>}zI(AiLJ=LPxpb*K0Z&Ja3( zyHInY?i{sF@tnvEoSIO~+Q@=)LGW|Ws{kBh9L^8ZpW#XMp$P>ALk^B7=8bSju01;^ zb+WvZCFO8S0AWfV{V&x8B&O)Ki`Z+WZ~Up9q=>}a$GF%t-|aqH%N@?Y3i>MT#4WamuUyCCO{98U~66ci+clIow~>BEQfU?0HT55-qbHZRnE_4xIs zpT{(QR_aV;4d~;jTD&f`&85&^|%k%7#goXx-k|T<|RfdLzW{-Og^G>nF zCI!G;0KcpZ1p@%lfVgiTi2DGM{_YP){w9>^05Gw9wObXYv#cynnKyES9RSA!)-#2M42Vf_?cV^Yyhs`v!kM zd}o4GG5_`y3TQ{SwKWTyZ6ikVhrBW1?HnMytb8!v@-MH}+2jo;)ANxy3)_R^_a9sx z_l~-EwW*LV1#*_;EzT@N3)TjQK|Cpgqw@Cw8-{* z0gD%7j@&%fd)!sa1U_wPYr8X6b-`mDcljod`N2HJf%6kPHvPB3J;8!>A~EqXE@Y{g z6CZjnc=Zhdm5;o3)YDI@Nk2HsH}g>zNCJw7ZiNdxjqeWkP?LP}pSZF9#GhXhTKIkW z5woMIloEbX{OcTgZ^rJ+tkQs5{rH$OxVLDf>m=j65&8wXe0lfM+GsIuhmHz&}r-;QS2H`2B zZ>WD31Gy&v5L*INeNfJW(B!4kiRy58FDp!VqP)CzsxDNtwVfb2#RRfEFa@!(;>zWw zuMTEDdL4k_YIuJ^2;hWV1$z;sXh$sG*9MLC*s+sJGUTUcG8&E0L7@TyvE$WLM_gzd z+b^r(alXe?#1gTqQUi|SYYdlle;Ei^QHIYJXqWsw7s%Tx8#`iGnH(L)W$8=-KGlVl zNa^eh;_j0_;_3J^{-_WG#Qs3byg!Lgz{e}}Sk215(Myd;O#))?1je?2XU3B$0Qv8R zq8E^Yw!@-?mE*rluWuPFq&{p%9-)2@&ss4S<6lsy2FE$kqJH!5;C@Zg>VuT)kw1u!YRRmC0Or`)p2zHSM zX{*H#Z@tgT2U80I&fqAoE9Fs0)CgG3TR{O6M?sbD(CDXrZxOVxg9hp7%h@Yy)UVyw zm+QjDn3tU_{IEuz>yuao0tD7hJPK?=11v2AHoNZh?uRQff;YOtM=n+QtyrNncz!&w zT3TK@kw!{ihvlTEa!9N4pI~BnGm6`hI#hc=TjU*`<{stQCFI!&O#p|^*9`x)t4(Wy z3F;Ik2B!}MKp+HrNaBE|Uzyqj2@MMbyfCx6_~>%8yIVL60~8hj-v>~Kp|9;wK+#U* zFL45t4Jnih^{@drmtb17xrLn4kJ-@{HQtSy4hi>s!rBrz@!pbeI}&oV>YR@9%4&-3Rt?=aBr4)ISSS5C@&qbP z4g0X$8y?t&eKdUcLrS5_{8H2G?GW*Xh7gI_wx-V4#xD58$2lO=gAr*ZrvJQQFW7>b z$5+3C6liNo>RU4**zIhUir53-gWlciBcUWcD_%=4(Eu*C_E0MIP9Zgc4Mv^*4wk|c z2;5&79n{8(?aeABAB#zKJBlrB?DwQ7VT@Fk2{TUpuf zG}6PibvZuRozRiVt?sx|c4W#Z}yFEE%SRdFO@~o_}lfTz7_ln^rr2Bz@q$-mL1x zy3x7J{>+Mw@#3(yxB7>d7j?Od&H0tnKN4HFM5n=t*!=C=O5sebsj4Bt;)q`}zuwo) zyT~E6%#@(?-DZLXJy&?4+o(-sdaE_1#*+NziNz(|GSw1n3v2yZ*HJN$c{X$1NOj`U ztf2pBdhI;z_A@?T_pK5Ad``G`*f6D}q4MTg95Av4JQQ!6C;)L^A()2xE9$GrZ)z`* zy^dQFo_J;5F91D*@3o70zuTX4eWVN8YrVZsi5mhS@Y=+Nx>^x%u2&p=qx4I?SDxMO zVKnv(e%g8wLm8i(sr4|v5gW!Z3=(r6AxhRH9*PIzD%c^^&=CB%gK$c*ps)!<5pCbL z_Li^b>?dvv3G|X<06G12uFT z;p$oSfY@f!F6B-gi~ct(;LF7hc>*wmu%);2vy{a)qy;0KpsY~?(H56dHg6afP zD@84{fMkWI^hehu1;K(=<*7!$zq^j%tlaU@m>nPAQ4X$f*3>yQ`uk$#S0NT+GW(Ca zO3K?D#t-kjk=wf>6e;M{y_QrtI;+(EFD)Gdg6foC-`K;m9i+aHh!Ma(kc=dkKEl&gFhgMbe-*`lnr-2iwxiW*{))&xbQE3S0fHM%uxaBX3WVzq9zXWUYI zvah*FQs?%6V(M0Ah~xCi@@Nj+Y8}XJDM0M}K0C6YU;rXQl&fWd^&*NfWZcj}LiZC0 z=tmtX4WRYE+py2cwd9`c>(7;yYtDX3p1=G+&Ck!~Dv^@ttAEZHXKN=rV&o;C;o%ae zoN4K6+Lo3(V1KQ4Ix+phnV@-`oQ+LjeTm1cIZVd^G91_k}-f%WPbi87eC|98%^s*fGOUIFO zWqs_!P~mRNUPAo!w#)8U+q|MXWEgBd+w5u7J_m?>f0q|c0gB}Dch~gGSKfjJ_=aEhp#|nt%&>QFTC@8 zXXC?ju6C9MZmEw8dRu=jsF&`$y>%`DP_H9-xfGyCUSDvXl4wl-cDmgS03>Ort59v? zVoJFfd!SncXu1wygF{piccW=oWnB;(+p(+A#Ol)DANVEEf^lo|@APu|=z()Wkpuw< z!4b0dDb!XsU$fYs+9V+x;bF_mSA=Z-6@c2!aEzAa^ZX|SFA55(Tj7y>A<|A|@WrXW zuF0J=G3zmc-r0>I8Wc{vCG^X(tx?dv0Q67!1S``JegBmuCete&&^ zzpcCFM_aYc=L1Q3ZEhg$Pr+WypS*#K>XV{CjD2elJSM84IOsH&Dv2f>5CQ06)CHK& z#1GHwfbcJ`#m;^B9RG5*;^h8D`Gp_l?aad=hSDp3#g$VJ`DW?L13!t+qS~V%?D`4& z?<&)Ox*h%V*~4yoo0eD4akv{87jf%>7cs3jIPhMofZZW;mNCGVW!w^KN_1VB61zV- z`yMd_ft7RsjY8UVRNtwacfN=>?j9-HVBgB&rjq8U1u2WO8TlXpOq%|`tswq#R~7QM z^OJt_i$&zRW&-9B(04k3%PL*F!Kc8FsWw=Ag|+< zKv%%B6LX}BDS?z(<^wU?&fZdtwya}kt!KNPjvf~2tN>!oQvg{sK-eN%y~xVI%& zp@0?9?h{-eO#RL6K@kzHL4nP|!GZOyKH&_{*kr6@EZMV1$&T2cR|*v9#pFA8$iJM^ z%go(8uUrY3hcf^LxGnelB02Gu49;09FD5l_xpiK=G2oi1jZL_2A{;cX>r}7lBEmkm zz`*5q3-$zVz>&wl6FKM)I2GAEe56RTd$5Tq>UvF!RgQ@Ut z^#89d6gYITj0x-SXUbfxhs0mPi^oZXenQoou-Zcly#EmWcSvqFv;oF{gvGvA-dWgDzmnS=r*xjbjlqUZ@+H!u?5xg zCN1pkzD?eInXvtA!7(UH8qPI9;&Ph2 zqWrm=%q^3m+tS>k_&4*-6)KJj!CRxn!@>UT5hTyfA^+MeAih!2M`%}elA@^%GZ4V2 zpnEJQhIa9Gb8+?qW@4@s!zq*TwlTA+o2QGTt0&N#Uf#&rxIHn^ zsOJwc8t)$$?dyLcuu5iQT_)T1C2$?8+S@I!=B(WQW%xJAD%#6GBEk;+@diw2V zUI8K~z1uGxapJw1v!9EL8;r7HZx@^;B9T!>EcA#fzFp!RPQ|L& z_g}_h`3kW>7ps~XyD#&d>ich4`Cw1?kOvH>sHGF5;wDaI4`xL8Cb(L|fdO5*4Yx0~ zM819e_fPmB;yE{JL9m_;Dx9UJZjV-uRdCBK3RbsLSi&f%sM}u#$HYDm`>Y8A(h;*h zPfSf_;w(@JU&Dk0?wAA3(LX(1O|{I2dZ*6|D#AVQCmzu)rrML^@%3G zEmV8uN#xLkoMoTPqij+ZDLD}ii+ZA(T)(l(is-B|_is(8R>tQb^X>xW^1%W;1XfEL zO4`Us?ZSEeaDA)_`1!pH^Lpwn;tEYHTzwo}+;Kyme8c3gu~x`^ERaTs~5 z{g-#Ckxz)Z>38{Fx#=7%xl}R|NM8c1Zk_SIa@LXgv(mqM6>=+q?sZEiDh(Ei$SU4I zluq@D5=*CP?9;0VJzcKs9Cp){$Mod>L*7F*l- zCEDjYB}UpY5&?4G%Pua_G1n#$Z%2!ymCuMK_VSLG7H{StMSdDduD|3`#Y_zWfhf z>x9XC=bKG^s7%hRq5)G5Z%a|m?X>9E2gf)hR%GbY0<-%i>Bli8(?VcTt7+`J->FQq z=*yuxHkRd8qFMUAIsQP+!Bs;W<)Iy0$m`~THQ1J~&GLH9)InZ152V^*7P=Rt6wF-w zaL%sm>!4n?aPwlEv#6`5BiXzwk6wsZ&m#&oh0UjOx2o8mMPMLz=}$oVTp)Y_=4tH0})g^L{2~5(D4@0mS~Hao;~| z5S+E40jdX_;1Q<39>A{_Y2-UCNlABZlLOq&X-O|McXKs0<$!tcJC;D~hx=J3?jB~A z?p`L8)J|q5xwGn$?4L8MOdcSgg;_CDBJ1_N&N@o24#{@NVEk1t1-i=ov#7(D@<7rv zgFMa7TT35@R>O~DOXi;a4c6OQ)RE~`3EC}{uW0UIjk>^3;(q$Mh`gEz2OmA0o|%?8 zRxd3G%VtKH`|J8D$9}7A1s2%lWyw6q%)=zENfPIL4se-~rX0H3OW@|>hcmTbAu+W20u({;IEV(9E=HXt5>V-|XQqE`wTtE0}z6lU0a3Cw)y0&4+eW0ji= zcQsZ0t4N8L-=7e>^0x~{Rji)3Uvd`i5P6@T{by%o+I!&}i@`jDI|)&pByl++i&ofC z+nGmeXsb`9UKP@lIkpG@O2=SYFza%pT!oa4rJJT)u|!@>n#{V$wAU8aE{MBClm{|+ z0FV@l_Af2q^!=?PYB&BoT)v$)=+t2)pw>LK%V`}=2;|8YqOMxJwr75h8RlgvV~@_P z#iYLZ0M^ehytj>I{x?E-SMg|may)m$EutbAb(j6ktdKutQ1}2gI`YKI3&wwXgmkkp zQLUxHQ_#7`@$>(%+AMFp^+7u|U-(HO@@a1fAFMsc7Z}^I?yl3aZ_)|^=orUTH$-*W zDm-mqU+LS*@HeZ;_j0m~o7L!A*m#&&JKSm&aT#}~;mh4Z|1l6QY=#8lUtlIoE(g?A z9XJPBK>p@Zz2+y5HP1CR?Z@c=4g$adhO|+|75t4EnPMr2&%y>ZT>dJesqmS0LyTxE#=>tDXfT3Fce44g8a@(f(q zSzuLe{+m)GzDiNdFQpYz=!@#WkT#^a;#D|(Up1dU*@vkH!vd2DGNLyE;TrQ>#n-lKlbrV zm$5=($WU_}xu~PU{;Rpr10ePvB!F}9cD?{5C<~P4j0}A1D|I>X-uq}DUbbS4PoRy; zOjiV)_#f3^|Fxr{h};|(GNh1be5UKk$AO#ORgT|)?YJ2b-zKN9C8q$yx8ZD5q1-50 zprId+0ALW!n0G2I-sSKEl>4t%FuYP~`|iWbq+x%mJCLmG-_nrJLH^W}di|K&GJE-v zq(}nN%inrZB`)^e9wF5WXBuKZe!0QNu*{k%V-2_Smm4dXyq+FEWE2vFVt}$O*X}ZO zkq!*RR!UP`txnC>|p1~)DoJW$AZoRP){pD?i2uhU;hUP0m%MUaG))!+pXVG6WWxiKjIcE zo@`p^_)Nd`#`$=W)2bb1&;++CuC4L5`~2UP)xTLO+++90eCp2hPipda@24;$U);$} z{w>0vGVZK{T#OBxu5#R7Zb7!)& z{H5&drF=^E@={KI>96$Um6ZIPrRD70uXr*sjz}iqeKSbJxC|mtvjs?zENtTa3B~Yk zgi3Ho^!iF!&R$X-{vJ-seY+Fu3b4NZ&xPQ8WJbdSPe3>$a_u-cLJS?JA)Tkr*H{sW zWKTSa>|a^#-xR}TtqxSuFZLk|j7y+L69IWB>(i^wilxW(99`XQT+S5B%W>mmt+X4? zv*XAC&nL5)?c=$g&(l&pPWDqy|2#=^oL?UR-mnF}8vy)|VF&pbh{b^s6|d#oqc#-&QX4R}Rm|%2pZ?$jK@X4VjE9q(jDIg5`i<_7 zIkc098QR^`MgU27za3#W|H&V29nE%~Ji}#{iG2NN8ju@UdykWH#hs4SNgA!#hF-`7 zGHOk`9InTY^^tid{v!h)2S%oWj=~+8xMGL+NdWlTNyTG01oHy&g3B~wYz*Roz17bu zuu^mn;jUA~JT}YtwqAM(^}mS?hnc(6&+B;Ns7(t;^j% zu`1}~+i^jCU#8*KS7A_|U0I9Mm8B9fs+w-!!Wh*MU5E2Jd-#{13=HaSqM~4`za~n_ z80O#_yRuzm5BSZ#>g}8#5XR=!l=+8$B=4|Z$FSjyn^I)ik~-B)H|B`o%>$}0Tn@8t z;~NT=NC`k@wwTTQ{m0`?Q!{Db$+4-a8x`^tynBHDTHk-E_I4>1^~1h_o<&P8w`Lmfi+VXKwFuWCwa$Uw*HZ#MI zs5?cOFdITRMk!(SNJ7pZ7Msf-7R2cx2KmFi>@bP9GatKVh{Rm1LostbP$v zI3$Bl$rd;0X$v}Zv!pnfo%Z0<2PSOe9)|Iz2R+rhzKtCc?Klzvj3~wE!GR}vkyH?K>Wcf{jmEROvCVH5HUW|pdy^D8{J|HB!sFI@Kp4xOtIRL|O*PcpLKyJZ^G5S>$Nvnbs z7gWvZu>?!tJT)OG>-f#|Tc$n@qcJyZvP5DF4|#}D%P!~1d2g19&))Wv&i8RGEMss? zyi^!_TObTFubQ;(i!$fC(Y<};g3_`hx+&Ki;GHS_zA632>)*g^eZk&}wruuxqj99I&$jpncu$r0JQ(fhZ=4J#3_GLH zyzn%`8|Nrn{w>fml0oNn;}t@<0yO_edzxX*GnV1K6~mz{@E-N2U|KW(5jzYsm%~y2 z5Ch6wS7_FUbSPOz+U$65gZ(+`DcFU46!xdZr-F%Z4rjyoc5Yz$o3X}_;0|(sYpVKu zN(01N1=hbeo3hs*v$=zt;OB$nQD}-zV{O!q9c)Fg4v<+ z*^Z6v+N_r8wupC2C&n9BOD9*W?#=Ebb!d&2qiHo%C{tTCWl9v9tW?3_jH3qz!(`Md zw$smHydrQw6*C1zM>Fcx>3i(gR`ktghgd5>a^vg{tUeiI>u`L7)k{ZPSZy~G-#C8F zOz=k(U9YwM&28syA{qcIC&C_RvO62#x`|978Gr|ZSU*2>p zs0z6MbErJAtJp34DG9jq{=)P&Pyd#TBd6=cje14nk~k=z5`XiUMV~^73pzGmN~e&A zQ#Ne_{LswUG*R%+>Z_ap7pE7mz1x%2b-D4+6}{M(Q*3?p{NmjEPnE}}{lBgp-#WXs zWpOe5cVWBC!oufozxAJ||Mlwjw;x;9;>PX&wqMVyTAVzn|F;AdERz9%cXI&14B#z5 z1wa_fd1Wl}J=-D0Jx3(2qYU#PEJKqK=~t(;2Pn4?wluGVst|4LxJGPPI#v-}c_$`7 z-&SW4BU@!2mq?9VAhh{jz*4(0eDk8DARR$m>4S1KECe!?D~2G#lA#*`%G&`wo+&A+ zB)T{}ksC+E4w*GW14-}NR*j$?4RlPsZi*LjF!d+^^ZrUER+6*icEmNrRij_k&WB_X zj7WQ~NFiiemR+jH8m`x-Rf0^}4OXdtq_K6GGGMImNbbsG@rPi)s!WY`;r!)t0cmcP zU=zC;q!QIH*Gk`Sfx$1+z=*AT0Kl-k0&;jMVCt65>)v0v`BF<=vv)FkYLOa|v20{; zpN1MH*E%+?C09nzYqVt88Z9akRM(Wsjp733;scMS>w@j0zyBrG?pYCNqGi(MdnKAC4S{8V+)a?+t zMqqKDo3Uk|QDbAe8SVjfb@sD>v28uF#aM*Mu_hsXmBt*YmZEtNF(t7jgJefGN8KG})I$;WIKE{Nf8n3Vg zl9(HmCyJ7|G94+}u+E_!xKDA`Bi7F1HXO#}kZR;He{OEO3O6-P!y$5aVC$9d#>dh5 zazz%tZfJSYRkb%h9>v@2Acm&gs|MsG3vzI*|s9d@8-D?nb8{*@jPdJ%y?Q3cCoMHsQiZdx)tRwOy?A z&MD=oo1+>gj7n$bl-;Nq88USDh~+*V`dZJ4&7VQ<7Gs^2m%BMlXXy-F8l`AgxpC}T zkqT!$CsB)_u==89G(F>LBS5=_01J1&WQVU?m|)G(IyV`hA+o9Ud5ByiuvlU;w(Mi7 z9A26hI$(;-^jNI{2HlDzNQ*H;Vi%O0RjXq)OxCC@`|BP?p@b02a75;-Z%qQ`??sZE7=~w%8!sKZ7Rp(4KK#1Z;sLe)yBYeAI=7NX zgBrl}PD+mC|i$mw86{pc0yLY)sybs z4Q_H5mOT8_m^w~AsJ^EDfAwwk_v(erubWC)8_XYO{Wa@mmOtx3RxBH{{KoRS1!RwB zJ8qlRuF9xMwWu~p(?BBm)R6~;Q6f<&PLs4mGF_)ht=3mv>7QOOUp0Sw$%a^>&9=oB z*#)~}-?wvioxzD|wz%Xo5A$`NV4h{CT<-+uxyHGT(P6weV1@)|I(L!_kKRs zXZlIcc;2rEgcz7$hAbRHQlNzGa1_QuOmcx95P$&az#T$>2-yH(6}lsv&Ou+gOG7k8 zA^ry!a1FO{KR@MRj_@L<5JGxHKmw!}4V1f!70*rzS1VS8SK`|tOgDtoQ6vSYa3m&=R+q{O)@(un(2$2Me zC`JWNdJNDod zdSMtQV?L5Ng-a;oG1ADRtj)U9O*-mPjYGTGE>{=A0xgT{@79c!zSgea#h=@E$w;Fl zOQAIFoPGHCx+*D-Qmc#lYm8^rW=8Q14(Zq`YKD5Q`@Sqv3RMQy>BuJX7nD(P~*+$^t^R2lO* ze)b){&(C=uALSqUYkt&6{YqevFdOipK5*gxqAgCbBW}g#aViQ?Nw&00MOsP$>DM%u z?7Z&7Pd?*&etWu|C6{QB12%Ai+x5||+Z`LSX&bYctws+ciKxho-c2a})ymqf*3(8h zzDM@7PU}^@wfA*S5A>6+d$9k}o(t$)vJ!o>cRu4fkv~+w1yfH(axu_7AxK77lpq zM=`HcuR~*YbujmpU3h=|b{+7(>b=njpJtz7pUZZxeboGIy07!S>UaBW&kt$8WxsnP zIl28S{>`&xjxK015U?IlwOZEf76Kpkm3?cc&f@d-^xo4VZX=l}Ceat?Y9h*Ix&ChNk~*=Yg5hPw)j3$GMlB|B{A3WZ01Kbd%sdTgNU2TB$cLZ+3zNr)%hO8|hFlK2iyb&$MJgFMPoExr;F5S0#m z#uhiyk$ssgAVF`+Xxe!kWZ}A6{8E#xSkzB0;%iv7czIh6=s4yUtjdj5#E2_bZ(EwS zFpVoLmR?qyPLq9JbV~!ZiE?%@Ej3J?2XR{~fU1Weq1x5}&|3=fA)%&<2&sC8NjQdB zPsZ^0>Al+`sN?Y4f|hi_QBkx_u_Gi3$SyiUOd+Z}QcGv_^=x7ZZ90KkGwHH>j@U;2 zIp4oQISN$aB?pcMBB7lz!Y(QHby=Vr>S7@@0dy)KP>BJd>RZq)f*gwTNU;_6s>Bq~rGk#d( zZ3J-d5Og9kG;8%@!LqQu7~EoiITr>|bfnki{Km=B*WQ+PZ+m$Qb;t_bJeqn4)vDFx zD^!{0AsO>sR#=#r5ct(ttMD$lvO<2#PS6)J_vK>OOArRDYPCG3oHijZ`$YPYh&$ud zAY12_d<13lItq`o+Gi*o%4yAkXTL) z&H8(w!T;ThbdrG(gmXzVc?3#;J)w|OmTzpm z#u|jnraxp3*b<#wc5h&DdKza@*m0VK+^_rSla#A=EIAFk7c zCd=1JY(5J+=-v2R5}JqkGJi=K7)z(`tKgtTik_LTME4ebHNqDR3>12dCLZpq{&AlA{nBpXa zXn|S|Rk;68`-G}ulsU51<1R0;WPGh=wU*i=fu=AMdRo%2_gm$vWKax*F$rE6XHWHV zq>KD4i>`fcBq*wnM3A37s0s&{RtV?K*L)`=hL>(UYJ;JEHRreJg>HKi`?>Udd*4P8 z^9Qk7Rf+g<%;mC%f;d(I7545KB^M75gA zl)cKgYK1)V)jjeeB+`J6%h4@vAZ>tPQcFsVXAh(NyiozIZw%N=X#H%ulaK&-@dl8{ zF1_b^P@q=hEoXVrCvc?*TtQ&#~Mu0tDD! zN00zQ>t0o|?FKsKh$caIaNpEiBZsa52hbW}om%N%5#H2Td(MsCFV|^{?nL(Hft^M*DF=x^i5^n+ zer%x_DvptT`tTfn|KrQ#aB#}{#dEt10>G}Xtqwl~<;uDECi(mpklOoXcvxMuOIYW4 zsl5?3ZT&$iwXs2zkZ%}nX^p{c&dKA76I@2Kx}c~Us6z15U2Q}v+~%ZoiWaa%dN#MHTj{44VExvK(=#pl9_8s}2(@T;MTci*jGOmoLk zJT-#R(ifu~GgnZNFy9;>u>+!LUW#N;UK4~?h(nKIH<sO>^#Rb%`miLdhqO2frc`zz#Kn2 z;>?MX1drUPlktwmeeuibyM|P1D$g`%-^IUTDYpTp)2)^QssnW_U=|Br01!13g*X@mNJd zNj@-TD(J~tf&o45wQNueTNx(A^Ev$_VjpLv!N8<6Av{@x5G>?4>(Ks9o}r;1z_O61 zg;cH*Xnr%e01_GXae<3p4+j(p-dZrgWKmsUIx2I>33ZtsLetWrdB)JZ_z|&hn4zV67QNKkwV3krxCSky-{Qb!jb` z!+ZSeqXjoS&KFgdClx9Z8>nTeyhHO&Yk*wRGcz=wf*x&xLZ6YbGUT(~;Nn)VJKT*6 zEss2>Mg-Y$ z&8t!+GxCk!=eEQY4D^m(I*Y;Fhj^g15>oXwfy0TXR-y+-LMER4YZ>1RO_-Sltc(rq zwI>ztn^XB@Z>=!CRjI8{OuSYO0!mN2!a--oAhp%b>@A2{`kQ`wx`e`x_7jwj(mIn2_O7a_&q z=9t)r?#O3v(0V66Jb!``{G(cex5iO_^t-trqI-d;AZ!?_-AF8b(VILU2bgsDtf+1J{VBnz^I{G-}p$gA!!=@yTNlp?$2f zpg_hc+fm32Wyh;dtb`0|ENlS1*;${aUQe?jsfL(w5(mPvxDS21)DdvAwgMmxY(={z zC~|Q7ve4Ek)u`@Ui2YEWSwLTTgttmStT3i5+@y~!s1S!+67Mx`1(WhJL6`ccPB=xf zfmWXr?1VHW9;?M4x(``0eBvgXBDr#~dTDrI3n(+Bno%8nWh6w5-SgmSVC92X<`|06 zyivBqS%ZW%)`Xf4X0_!~)^Eh!VI4cS%Q+jPmXECS; zEaf{=f_aoMZ9oG&$;VYF5%{#XvWa7$D&@x@=&rq;Ca3edMIKzt4@+NCHZ_;n z`shX2eV)o!@ebnZleXm)F8rK6-3-(dL?Yd*Ame^o7h*?kkXMqN$fD3E@_1;)R$c6Q+nL}dY&nGu41loLK zzodXF$Wp0?7&CGanLG@wmIf3kY#YT)KPYS#>pdBqh)`)qCck?1hE4_g0Bvt{0~=zm zMF==;k(BLn$&9KAn+PoqfPgd$YN+dM=HLWd?W_j|)kGj;t&70@LH`%Y6|snTOHz1+^a&2zBUKJ&ayZ@3pLPQ zf~^Y83A_zF;URRd6o^STk90r!6EpSB(bg6L__?R+P219%1yYA5p_3j~Lay7K&j}S1 z<&Z+@Z~FDHSIT(4=-D8fE8z#m_Bq|p7I`BcpGg?e30;@%>@;6Z3)V@u?VKRgP@_j4 znhVt~DHxX^*me{YfV2?dqD|$gnmJsHY<89T!Cj+?L;$IzmrcIYg_ET5XNi9V;ymnR zs>2#sk+4j8vVWe=2!L@`(A#dW8U-FqOF3D@5n8GnUkn55BYY0ihpmCfIRaLTfq}&_F$a#ImQ2z#Ie)8{1X8kx{9hoeM)j2S$F*!v zb;0}b5WJ;i`1aeqC6+ZT& ziV+jkQyl-n22(RDU-`0TBIgOX+rz(}IPYa+cp8Fz9wsNh0=lN}mCw_pCt>0(q^uh@jB@C5h# z{N}DrncX&r>UYT!emwnxdla(-Nz90=g*N>3cQJUf4vMaKnJgb3@)6GD_DN3-deE~< zQMl%j1oIMN!}?iC(A=)jouNUkA6Vz;RRXyn4_3tB@y0??MzRyl*WPk!9KGWTxI|oa zg|ojl-1dgfyQT0@OVuO}hl!g!kt+d@dqAOQ+~wXJX6|6&`jn+d7-Hx+KJ@kg!1RTp zl5*8$y!)6PZxTfzWlJq@p#~CgU?^Uj1yrm{N_=I-4VG@+ne_k^G(ravOh!^9=%{b0 z_I@=j$aADPET|pO+~0pH~T z;u^hECfLvTsoBtE$MSrATWRN##Vd=QyZNK0!5fY~?thT>{L9~cMVBUraVT8<)J$oM zYW}Xc-~Ra#12R=BU>;}3O93*F_D%_H2;{F?#|_niErEfN5moKqN>I{ZIuT=FW4MA6 zOj&6s1D$PW2g1V5?EvJw86-Fm4V{Pp9lD&Fu(?HrQ^+_rsW#Nn!Yrq2&4B}pDiS*F z1SFTlS&H3H2_3Cv6*U%bHwTI6*Ct^amx-YRKC~!7W9k$F5T}q!L4E~|=|yyHcy*qUL9m$|`(eFPaFLetUgRoglsjdz z!d~LR9(XQKJz`v7C!d~8nDaeMwI+m!p&SSu*Qt!h7(;!6Q{jvATj63Rt}wYAF9Xy& z&2i}fuos-67)oRT)pkCHSI_{DR60^`FYOJd!8Y$V#(by6Xf~vJJE%0RbfddXciA+^ zZ+Ip<6OR?!!#lh+3MFWJ{gA@p2k)SB0lh%k6CchN(NwkGmkvzy?FO<` zKYq4r)S>nC!FRF-a+kixec&@k)JG&}i(So$OP!oOi9>jVLdqo99jWMX2K z2oW;lz)-c8N{=?TO8}eJ0~e$NHgC3<==k9OF-n`rqeGej@dE(KIVNe(Y^ceNI=hI zYH$(A*Tvi^La1!3qun+8Km?C%a<1l$E zoyoIk@SUplO&s1O)5ZB<-jO#$1K&`H=Al#4eVfTQ+nR*hC2_JVXDsyZ>T#S# zi=TcNl%VvNKP-@Bbfd6vGJ3B`h?rBD(B^x#nE)C5NpvBB7{k$&|F}fu5Hp803+jXt zcVL5T!-G-nGJSU0;xHD4_rTXg#r8Xoa;YWNcTst&s;Iwl*E8io?sZx(VfGB z&DgEmjdsbioK-Eaaecj>5*t5OL$+@8ynt$mQq}d&OP0ZA6dBCdCQ<5ZMwm6yl6!k4BQ~ zl7HHwR#%GzRimgnX-{%yJXico6}nH0LsOsW$y43=wXv-GK;Bcro@EboY;jr#Yrfz1yx9(gWuz( zJ(bXkLs8p)Z3C-6(|X$saQFnf5p?rq#WgCf3SlO`HL9ULOfaDjo~X8yx4@lqM0gz~ zsngmdQ{&w0Am{{INsrit!qQb-z8GP5E8YtjxI%AVST{oxXv3J>7Vj!igPKjFK)O3F}n{XJ|$-= zytV+qw^&iZWG9pALi00V=8N5dIl*swJbgt%Y<84zj~#%WvF9>{!!lz)#cGb+N71%FD@Q(BA>H@1gy|ehtU7E-AvoqH`!33=<_>6Y!Msq_ z6*iL(Ap`JQy1GP%x-~6h4uXCgFD#g9S={FX@k{X7E!b+ZD!UAj@Ez&(i>U^_>Dk#~ z1$W@z#Dq;qCV;BTy0$c5ja+MD>s1_d6_s2GN(KrxoPB&@_eaRGXw_W(gh;*HT)e?@S6a5%(NOSa5e!(FOGM;)hO^K z_{gCF-1RBKM;fBuwgd57g6q!i218_ULRZ-l;hr_$OqNL!UDuWS5MoL>$dr=8<|j~b z2x7CEK2T0?Ziruk)7e5zQ$=t3zXv+eNY?2hka%e{hb%k{>-ROfJzNuWB)XdtDYDcCdZqk7Cuf?xWcrIFCg>U|rkR&N05AWb`MqDuzn^V9tt3yhwthQdcD1zj)F{W0D8~&r@89O!wr$> zT~PSEkqk8QyR0Tg9FC~etzdy0q}$TBa1_XYjhM1p0z*v}a4X|L&_rOg$qt6;^!TG| zl1%6#AcTCN$T;`JKDibCDCOPdQ1HwP5O1seS9=Ha+HjukgqeC590x(J##P zGP11@A+ErwF7o=D+R6z1c*m6FQU@lvrB_GO`;}^iZ?;aIO!k)^g71IZL2brOGPkP< z(*&83@%akon#i@0!6ZhD4*{{ot`0Wm7~S6c66LlU_Es}Z1Z)^81OTtAkcMklNo=Gq zzBZLd-&*y!q`K!QUx!Ay8|+KdU?`Eg88cD~={N(|h=@2Z2pt%D7?qvHfkhK-7u&8F06>mr=K(M^2f~O%{1H(IC(Onu=FlGYG6HIo?H8S*E+-sRD-l$GEN`< ze*&YqC2{{e(Wt0P62;b1cX_iUAtf;(CX(Q-0rq<_heVQOHg>a>Y%Qf%-@x?wF)Z8g zz&{UdTP;_yab7@?7K=_OWP39MeYVh(3Vp36SJUyBE&*LHCl~%bFkmuD-z>9r!`oKF zw)qw1);~Ox#A_P}{K$mCxX-wm19V;!Zj^sKI#4>VLduk&-CFqH63&|JW!uV?tMd7Y zjfvvJ0%{%SLl=KZoT?h#sEEx z-1)HpaN0}Xs`1_e#5?}F90gi9j+Cv9?hcr$!-~s62T+}I}Ko0i{Rm3IuwLQj#O zYVuo#TEqy&Gj1!AYAwOY5h>)RNI}DHnj#4u$rZ$>^bhwe{nMi?m@3Fl739FsQd%*n z^Vf*Dop}d2FKVn-Vw+8&cXn4%S+{#2y|8>&vdw$06&thu>l+jDy81S4WU6z)7eM^U z6CjtXNn_u-tG52h!FZYL{s2ooP(#Chdxg0YV_jijZ=yRSgVUx=8)j+5a9z+`PM_a4;4)nGO;c)EfFA3n%WJmFreoR+wY87@xAiQg_$$eS8S(OE-kT= z$wVS|Ot!2GN3RY>=k_N+sUQWrC*-DnWiH z8ZRfj@WDD3!&#xSItJef!OAi5YAXc!prv<9ZFaaCAx|KHw&6r|5CHUW{@Rz1Yl66} zz?{dh(7X2uiDUb3&WN^so6+u&>4}R3i)yCmzbaxa%$AC@0eoCfAA!k3H5k4)J(f_;r? z1qNPjP)=*|F+C2yF#A=p!A3AJNe2}Tj4(E~Ug%BQnPt$uYU(~5&YWvKKmFRte8DtU zbJ&ysOF*>0x||!_a%?-P8-=XU7JA^f(Iq24=e@(8^htNKZ4dVJMzY!RML({Z4EkNO zGTGN1oo8Q3jr=(jBcz=}`TIYcK4#K~(bQl&(>;sPIQaD&q07c4F0k>i0)Ok(fm;SY zf-8Li0#eI=Yz~M696-CkH)0U&X|Zb6`>k&>^K>Z_;MVFaB=9{z7&g#8y8I&`2Bf2U ze}E2jG70aC2zZ_iLo_MXt6vfl&oA^`~!HDq|?(40)SPVa!Ym+QX%7HlQ z9uZ?o9Um$y)ygDb>&Gp0SfTali*dP1PQeP%bIH4fAU4_=z1|FU9oCNO&}WN2thVDu zW(U8wnODpdEmPSB63%cNgVkjiW=Gngi>8xjxr9bz4_GX= zFF@0weY75vBuC9($0k&`M)ZID@pgT+YBAUb=M0^9Gn^c67pf~$0&iBZe>PIlGmIyy zstb!_tdvm0H^$VXbW=+hQj_$jz&7H@c=^6S?`Bq5b)-e`8%J=d)IvxC6=oppPSZ+L zI;YUiqN5Z=P5Nz2$~XwCX~xT_(yzDLm?K#C*|#hy8mr(MNctq`R##F#p;~3IEma&4 zQw{zYCZ0r5yva3d8Y#c80@9yzqD`pL0TQexNVJ`e?-uzaE>#hb^tD}!#M{%}*-d=Z zWjXOJQK~-L`gZmtc2%wI2?#td*IK}!Mov$n@(QEY3o8@yt5BxX+R8JCwQR@;g_B}I zGN;aiv&RxjWv`v1J~RJyq~p5cq*IS~w@}>+(JeLBClenWE+!0xQ)-url!d^l!N*CP zgNRKlh$b1%LFPio&>K%v4T_)$2(h^E24Xyk$)(asi-jZ!$d97j>|jBYmQ&r+jVN+t3yVD5Q&$=jo8POzQjptXg^HL}PvOKH`H^QT0~<6dD~pG=4EkN_|kMy}WE$|8B2GhrL#pL}aX z_F!N^MV3HAjx*{qD8@zdOOU~(Gg$YXW-2Y*%?;P!5fbk5TUrN^WwQPYBXFd$tb%=9b7sPYn35! z^M`6Es5lO`6cQWrW=|HGqM!V#3%Kqgte?*tdTnTQC zGVC{V=aq_cOo67kWKkcl>>_x6BBSjNB4mouGUfdBq;QqC+FGUVqzC&MM#-Q6N`lTP z^)?ak^Xu{LeIX&?Obr8HLZcj-LN;a(VG1++6iw|H+%r0oV#;6HPKtls-jedh#<2#@*tLp!$yU_r?Bp;J9w2$syIzS;mEfmv&(694*?tjWC1+ z5uN@ObB3Mddn`NV1z81wZLr;az>IjPN=W#<*`3ED;-=f-+$BzLYcd}Nd?7}}K;Wt+ zM#7>ucIm!2g=>0aM0`jlU=8Dv$m)!~mcGGFXwVF!IX)w8f*ov4GpQ9!`gcsnl z=AuKkP3-XKltAT@r1ReQR6em|cy@c3J2P7pps0bFI32)a#Xc9_#vk_>`*x}Wr2XmF zpzd0Th z&eU3_h=&yRCLhS&Y)vcEph(uZf$qW(T5S^jur%L^opCIA%>rS4h;h!VHg4~&6F~w- zxdOs8C4;)7oVN7(gQ9rMhGkhB9U-<|lP3xiA_|=mN(Oh=W)3PN4f{|Mr9}5ec>quZ z+eLM6c8Ku2=+=g03NrDJ9W+q7@9nZnLw70YltZs#Y2GG?2}w zg)HO5J-f0K4e8i<=AFUb8qd+Vh1HeL5xkN9drmz7m}{$e)oUrPGX`#$CF1~lbqZx; zV1!@cMa6tNGC^TKz~s-&H!^pPp9~8|w^1rQ4VwLfT}y|HyqJ>*~?3=j3SLb$1TjAmcZbqYwf! z+vf$of>p3kpT~?8%a;u{{HHN)e+{Fw4p>X&n|8;)gEH82DDE12p0C26P1f3BwisIf z!+xjce7Tj?T~q*RYVbQBI`6y;8y;{=#9%wB^@w#$4n|qC4`g;Da{vKB&cZfPiQo|{ z{f|J#fvBHi9_5P##G?xIFtKRwDveC&hh!m}^`Q&7Z;B}c!A6vLO^UGdb4h{{1*Xm^ z^~P!65sAbPTki3f)u}((+vMOnp(H5+2VptW6JQ*Nn?rJ`z|u_pp6N4AGxMPtO=Ab7 z8?`X{_;ilCCeSCF{Q&GJ)5}bE{44ax20I*T=ARVhRuL$GO*W_g#>Trd)2pfqwWPcj zEEpxJt@XH(@MMRi7oNE=a)oP54d-dG{Am0bMvT$Jp7cSf2W$+4(R?`sMQ0B>V@`#g zl76NjTX{hW@@?nSQAj6Nm=}{|@nq_{0&R6Bekg_z>yYLfL*tgO>+QWxZEW-a=f{8z z3v^P|0|mL;u}|(xa;n@n{2Ht~_+9gqp4dL_5_!>1wiI})d!kJjWElBuLIJdpLj!Lf zok`xCct`Q7eTzHP(2~)kNq7sh*lI~6+-6&icLJ}e2#Tg=5R+2O$GuiVYSwfR4ZHOP z97q=lPKP)KDf9k-B_Z8$qCR5wqapFzOn_{M+5QyUuOY)BPcXDFS1c#4h{J87$h?ox zL>^%v!|_0mlaI9~EMxcgH4|zUq~X4x5V`>#ZR$Z-psxhHQ2?bFy51O- zegxe)SC2h}7Pb`i0gQc85T$Jt(on`INPA9uh2A`)MmMmQGPN(~NUQ6TPk`&@15GWw zM2b2o9=z8T@&pmEFcwrAVFfKZ6-JgC5Vk0snL2{-M>}e~c75aR`E3*z9>mBPh$>8l z-4kSC0rR4J_i?jNg3kmGXP#GQgXzxP_Prx(w?)a(o#|E}u5d_(`h&S?6Xo7p>bt*s z-p68+sb$<=I5Zbr%BDSv>GKA36YlKEvk~@XOK4ULV9{d`b*ln+6B5KjN9ejTS__*i zl=lyFB^EjuJrUf2$GTEXuNj1>acWo8BfKaYlk&Efcv74|!#59M8s6Q7OU zu47Y!RG&+mYA3nKGJ&Zeg>8&y{1eA#jKrrNfMBVEtKO|XDa`5$ z1VZg@pHhW0#*C&U)3lKY%%O;XtPj^!Gu}6y1obK`>^KPg=@^>6Z>BdVG*7T&WogVT zLTEu)e=|Yilm=8KiR`*F9H;620Hg3{lU>*W%KNA@gf6fAAyiXIW4xwjF@vb)m$`nqAn>4m#$g9vkkx*$~KWX5#? z;YW}2<6DT9aP~t)e|z`E8UlqHKGhmA9GB}Z6gYHFtZH&dvrh188W9r-GBdBvA%Yfl z34_Z#!2pa$Kw{DlL32QYIRsxuOdfi)FlO`kYWd_5pkwm~H9y%698ciG!A|lJV&U{> za1TzDF*x+Vc1myKmr7FS?p!Kx_uL8!D-#{^lex_!b4iG2dQm?y5>Ris`IOUD z@WvU@OU;iS%gAV&Z8$^wknCqR2PQ*-unfgLH_9Ra50DiZ_vk11{9Qg%Gs0qg$|4BN zCOO!%k2d#w<^CD|Wsfl;^P2oxAWd0-@op&|y$T&IiFlznl`GjxvR%rvEtI{f6iQ?x zinB5v)RgXCA|Yext3hv`M-|^ARg&q(+$ph2{I2{!B~KvsA62z4RuG#C}>Im>C{>_y<0PVHBK zyY_^IaNj8(=Mbie6)YT^?I1!I@lKyqRGo;;uepCe<{sBIDLm2UCAsG3)(K5D^H4l zJv|t=wFN$NGdKq|+6fb?Jnbi>+I4UZ1p3Jk~Htj^nOik#BX0?P%CulOWIHxbDboxRmE!D)N*;V4800DziDg3zomI+8) zwi+21Z7FSMPyfE-E#&4t{kh{U)aE{&vEv_&4TFyP0(+Pm&(>{#ni+Kt5hKKk88K;gm6AC05dx7i9;v!RN>u=#`9uYJ1}M;qhQjb_V>!awG*6%(MUW=) z#i;+hSTZbYbc#=27tZ6(^4DD!2xw-2j_+4Me)gH=*9=T~z7^}jn7568XwAkkU_4Ev zlY`(poYBefIPH_(=9vMy`unCxcS>>wdkPb}@XYW_(oWB`w_Ni7xw+`X9X8EVx;IGs z&krg=vRAS^VG;)u`QkDcY{ZS2#oMb0f z{IsSjx<=lO_oV``z2_q2*AhinpeRc&Pd+c>k29&G!fDkZdZvEwg(;$z{6Zee1Q3i7 zlfH=kOfe`;FtC#ze2tRI!(_WD1sj#!^9(rW2($t(XY#lo*wAO)4K0-Sod9kQUPZ4* zAqL=l)+pvNE?CabSnp8!#Ga7bZT2^r;etiXku^{R-rBjD<8VFoS$B7>2|oED@5N&= zGG#A0KM^lYvfn-&~4_^St#KF*-)+O-u%{?sE~-Z2B+ak5m!Q_CX{xro47^MMI`;6` zwM9+b0pZ@j@TqHs__s7CCaHXJb+NPes(|y`kre2u9SoI1ow+S3CV6zMa!4?yC69S- zK&owSUy?~SV56}cZyms9sXwzDdbu$?*y~gdfSU>xD09{K!|P7;hz`S!Kw?Mp^Qym7 z72=bX%`xLl9=e?6gEyg9%zGw|Md`vdp&8AWl1#W`xCBP=Iu@{AgFE< zLc%hRcWL@xzGMr%^z@48$HZexTgXrI>pb^G$BDFXJ{*E_Q35ITV>6r41w`D(nr735 zB4U$b(})Y*`18$#QxVg2W?uAa;mHhl?oMjSn)9;fOeZsjNQFX2*TSH((6--!j+?u> z;(c6oWQt_pivbiNY$mnt{Yce%`zP^8s6FLk$f5c9O(bxYOfLpN-rdr(q6z z9o_sd8u$dW3aC_)hdm7RmVT^v+do@PoccaME<_l~t$LK`uzLPu09f?V?tz@eghNa) zh;9uo_ayJkh|WkUDsLXM2%+J9UYZcrFDlHA{DVT(iZ0CweBwV$7;s)3j{wM(+!`$f zIWBI6_PS1hE%8kr98-BJ9CAh6k2y7331g8e_Jx2rvQ8w*lSMS3*Nqkfu01q-+$!Tk z+|O4|rl#4v-B$$z?M@+;wD!9fr&5j7P}{1KL`mczWCa&LV566^MS!m=v?1RGMwblo<`%w;+1^RZD-C?#ugr)U>n2m&9^g7XV>V2Ji*c8hC-ga;JvFZ+gA zFZ-khT>26AQeMrGWd59q!B^Ynq1+7=-^4!kaBmPr;HCD4$kPutI@mwumPmJ5tl4G8 z`?~ichjBqdnu8Sv2I!AE+P}cNZ#7-DCza|yI(BkAlPMx5CRvDP$&A{Z)f#FFgtnUJ zYp^*F#ZN)oC<2I)6ZvxI`Qc)&@lopr>~i5=GTOMlGu8Ct&v4X3!(EEDQ$3tChAp(i zsU+quRWtGNQ2IDg$49LOjSn%Rv?#$@%4X1U?et)I^4 zV}e9*rk}@5%yQTfZAHidzDOX^pwR~dgxembDc*ZT-J;-}dM18l$8>r2jGc;X7wMhR zLIG$1USk1RayNHga=U-s-vsZPdPBCW@)O-dw5^E&?UYJ-3?2ur zOi?|;f%hX$xHVxkBREpWX&PwjNoPWJtqL;L#L)6!1 zZ9?{0HB)MM=_?}4QL6hftze%RkLn9~U~EVjd1M0G?LgF`orceugZ2--Gs$MIQ`(2E zM_kBS$SStSK((T4%ku@I&)CnwTv=HkroE6d=K0gynXt&*mQqTwP&CLeRV@z7nteZ| zw-fD)KdlQFP#fZ9I38)t!iFMw(qujK3Y&O;i!96y+z+EW?p@r<3>eB_VTK zdgJ^wSN&M*E^na@l!$Z9q9*%Ys5j$SO;+$s z$MmBJS;&up!46xXRL}bLCNkeWoKW+<%?U&sfQcZ1ZDU(p628r2uK;uu)K43l+0qwv zP0R6O!-f}#!ui;FPt-w5EvUb-`4!NVas|4l_#MuOAk;Oe$*@opv%3CZgktHGov`gpOqiqXn zVTXH>i#55l1TKBNa%tiK-FardB$5Z5 zUEqZ55XN$dfLT#ebviP}<3^BRPA>{j5oQf5cuK0at>i!ia;c74vHvJZ^7#gxfoU?= zBMuRx46(5Z{%f}Z93(9En--cJnlb_)|NfmWAxthd1wNBxS|(7qi3BNZ4ca0USo?y0 z_9Mk&d^d6Zh(eY%D{!UA&;6T7v0e@__H0?x@p|+emo=Hs$h>3oT4a>_&G~_-r zK=mwOpfO1W7mV;yUyJob3(zI%o^~YZ%%BTQN3}%>P9X&c)QR|@eN-u;o}#Ad`;&Hz z47U3u>>&b`296aq3;23Y$Tl`{nPjLmBn$J!pFFYsarwrag5ujg2U0B;&-!-!M;KjY z#&!P`z`1TYExG|+3AIaD< zq#jhe81yUWY{iFqvgwBXOul;t(~e_G2mLs&7_LQW80GJbp(I;uu)X}5KwQGsnaQp( zJRwpLBnnrAY)!JPd7lw)BXL&jYf@TG6>g1soUm1|aZOndDfhcEBb;g!1GNLszgG|lMZnF8qF6Mru} z;x$i2@u)R`M9@MJ;DHwv?o`EA&r47zL*MkhRpWr#TO9yL1&iW53xs#sAf{JmP~J(y z6X8xnDn!9XJ6`xxq(HUP9Swk&ZfjI@m5e0D8T-SS3(2kH7 z1FQyW1f`H`@u8M-I2rci3)g+%YsuV2-Rtnp{EH`#s_&4jR)p9Ju(?0rwWg5eN_S30 zOF8{j715gu1hXc3KQG>rT^NG1`51n2MkTej6;JXUMem|r({XA~_T1?VA3b7HB`;W` zfEm>Q@N>{QuV+p?;I+?AC-sc5tX!>vZRd>ShS_HqiA0u|;5A3?-EMFMfiVOyrXL$3 zP~TKcrfZ%j2Wg(*0ra!XcVHFkab={hp?Y>tH}lFWXonanmQl&tevL35BaU{+Qh@&R z%5F$rHSv!i-*@V*l&Efq#M&n$MlPrd45HjEpxT+=j#$8A>FECDR!EpP1)|l^`-+Js zF138ceDLK(pSyEcWgvX9G~n~asZ%8-AoLf+D<<7|Jry80;OZRQ-|#Kx04fk1W#l1c zk%*sh^U59#EK6tkq^&qRxG^k+sSTq1uSNb0vY3{*R0UdZB^+CteYmccvjZ!- z>(w4t)-*Kjp7J9E;Yty-Wo;{x=Mu>%BqcL>>Mmtd$-SR~@#8S|O?sg$`LaFVQZeH) zvMP^!;hJP-RPQ*9^{+S_{X^BJFo&e${1=HMjw(HenLIw-Z>$`Q>na$RZWcs+* zHd)0~&;^a-VCcn1YeCyEAjWPB;gZ4?+NY9X-pJU!XinuE=n| zk$@tshhPZ&nAh%XAR+~!e1C!n?G0G4gl8ScP|9nU=rVb$;*U^n180V=lLxbNVS)z} zZOJ`5nFz`p#!;n=1TM3TaDGlm&|8V~R37a8Z z7=C{9M6*be)k!MLV0aU;r{PrtM|7x3dIdVzFVW@NOGnDd*CYsMXnjP9Fg0jL>*`NQ zp5vTlu7Fc--|D4DVlJr5sh*V+j7Iv009NI#d#O_a;$7Mz@T|a@xxtax_nGL*tdw=s zOF&3nbwt_*FzzfHDB%Xo`~Tp?h1drWa>eFTv~H~qU{1Rc+aSdX_B0a6`y6^Q1%8yA zE(VCwKr?+Kp%p&P$bb2Ywr$KHDV{b3U&&f0;7i)W=Ix2wky_mb?-UCYPg@h=;RSJt zN8f_4{glkjb?k(MVL3ORjGBS{_m=cCY0;2|!`zmcyM0{J-HKl)xpx5ES=BsW0Qc>i zDo$BUC4rr6N0G2ty6+SL0#mBj5-9;hdZ%$;yY(sk3vNA0%5;z=&j@t@+U@4*OFkP! zy3qfI?WW{^D0Dz@=%MtZZ{x_D>)Ba9bu&30L7I&uFSN2D$MI?^mC4Lj;#)k?NuP7R z#Ej@GWZ!??0MU6_c~UaT2+h3Dw?OjeyhsCM`Mas-11>P;y||i7cv(Q#e$Wcqr}8&x zmCyo%KL-9ZD8s#F&UPX9N`uF0QQk+cK1($yU}R| z=Wd(Y{xrt+Q^p)BRp$b|}jssR1 z23JL}JdECJ@H%x5HPXzzI?vrg&-}v(66#z$8f&mDQCx94pPQD(gLLqqD#-jEQfzL} zVVf#C6K2)u;b=J~IMHsW;!K}VQgnMTT!3Uoc_&P-g-C-6z3^bFNOK!z@Irm+a1VS^ zy`7*Ry^r16SgJ9d;CpV?a(XT!0-kiRQ4>f^Bl{$m4IO|hXnNv{ppRlTZ=LuG*+PCW zOkgQX1GmV__uN~+QfqkZVybx}N`^z{%y@q(Tgo~=pBPQsv`5pvp zR3nt!@X-KC!FlY5=PWpl3qAvjj_`Xf6cx@ayiYQ5DRJO=<}u_PJF6_P#6lW$Qou(~ zcSLwHRT!uk*p--MCoV|h6(1b)_qxG3cX|CICKc`0IYGWPHI7afi!+HDqPTF=_vb!g zgLfSC=lc&~Sb6Z7_Oi0ib<2h3Olw(FPLIuKLnCFha%L^Yrt(tRw7=`~lFPV|HR}yN z`}-}=lI_iJOb8y-6$OuqKjqJH|3n{FL7HZmYHyUHWnKlkINYBc+oDKD!06ub5L)O3 zHMi;Hm-9MT4Mu9B^yxw4r(b95w0==b^3Su#w!Xxf_lT z+7(P;^?l=c7MU^7xN-dWHKXaLe(~L{*D{!*6)EAl3V-@nZCOEHr;e08+D$KAe@}*y z2^qYN-kTG3YAj`taew4OvaK#j3NR4lWS(28!MXyh-i1T^qjBN|xX9rLo&DPDjLra8 zb%Y~RHcmrNwpJPA?|Owz6SJ9ia&?Qr%Wm|F-Z)L)V&T8xy|D7Q01Zpuf7rb0D@odJGXnJ`|mHLK@7hwSU0A@VNTt%GKgzz_T9A1XI*$xV7Jv}r1 zyb~+n@v*+7Qy9>Uw{o8batL09*P*jxdS@Hpokqq1-+-6l=@?dS!_a8p&}%$jQY(7H ztC*6){8?VY{9THNs&2lKzmAA`ved3nVDhQFNR49+Mwz-IM z4&S5QMc2B812FV!*!HNy1FhK2Lm2yy^jJOr0bYdvEG!!Nkh{SI-Mu&XRD0)G@fDNQ zpm*}*k-0%%1=vdl=gJ=+5X&r^3KC}nV#<5+aDl1@eS)XDm?)qW6&~_&q3&o7MsCUE z2fajYbC8fdKQ`geU+Ct&%%KY~zRtZ;=WNs*<1DCdP=m_r#kv9?yqBwS8Fg`IgB#-` z`paunn@Iw-V{rhK8=873YSH@i_X?nMSl;#uYrDR%40{*tot&}`1whe89Vq?^maLOU zIPK9eN1j~%k{5%BsG?|GwZtSO2iB7-wZ6WlK16l=4zT< zV}nu(_=Fv*#G@$JN?2gmEM?9t==3|Lfn^NYVjM=|`ar8sACokQ`x3u@IQ;i5FkZ06 zx;7G@O>K=mSXD1a*^IWDELXY7AO+ncM+r+TaH7ryn_IZ#kOeB?tFb|JFB%>b!~Z}0 z`xhcM=@l9_f(dKFzv&xaAkYgN9!}sB(&09JNKZY~#0z3=fg)S8+O#Bvp2oJG^ ziTDWE9NBh~Sxq^t2Ib%20DD1S`pgdrJPjzX2+u2UxXirzZ z5FYjj{kVaGd!6Zm1|tNXmf%$pSYU_AVV0{9T1&O4&eOMKi>P{-q6R4H`K0{k@Nb6g zWrz&fjH(EZISQ7F<0iZ!49DSq)dFdhq(~5~n|IqK0A41Zrb#J)r*L{drya_OL1Oj^ zE+Yh`GU}Dns!WN@WfMNPdeXC2RJXOJlDk9-oy8oPHr_z&_u8r=fEIEeg{TPW2Q$kt z2zvd{nj!nRLP*LzX@1ELxFQfOC!|n+m9{oBi;d4o`=34%%TKfmJoOj8|3Nq9ulv#|XOqMi+Uf zB2$+$?n$>Gf{x-*JH+bkeS zYBLN#P)icO!?1zEG#bvb29Gy9!|N7j!u0#tAec2BfT76=XJ9~2+VgVGlW5!P%%37w z#Y7f2HKL%2CqpM5E^@!<0{dmY+t>_U7XzI`^$|i9lImn&6Cy?Y?4xHLJsRT@&neN< z{S+q&j!X<{DA9wZQ`XgIPy8-8CeU<4#-VTlVXsjdw)B09L?n4#vm<@(+#`M=yR74! zM06WH+#{K_9aDdgIgx#p!dS*dw-Dy>w@xMk-Z!LlX*E<>q-@&ttD)8R#-@% zlH@`(?_xA`5hK9vc=?BC-KkIZZrA}j=|VqGZQ18o8g{DO-b7+a?zKe1JK`Gg6FYS= z0NzMN24#lO`W+=L;SIZc798dlA-0o#6GVUn1_l{&2@md_CcSM$_ozav=`#qin8p~p)T(6iZ- zn)()H`55dz`T;!mx6tbwtUAg-?H6)<=IZ^NY1Qy5wH@9mt;oyg?G|^;1mYEGx6!7w z5y@1dQv?MzRu!4mz;Hk!b$Ip-SxCpsc0C(!#E`@^pDdh+huB!2cs%JG-$@5{SzIf{ zefaxbhtw_03{Z$}uE9L7!9{ri)3{fWqzTyOE#k9Z4i_o#fvDi;G*iP@`6B<0UTgd> zusji|1d~H-m5hyrf?|mF(9pHs;8mO3ox_+>M>f1ZOFS{{Jyw*xjlAD$6BVRKiZnco zi;z?(n`3oParb`X4~_0v{cNg)2GsWveGRoJfN!y5?UMhSsB} zxy-0K2k)z)1QiP?^8TD^>*Smnb7X@1Qmv)ih_cv+Vs?}-~I!& zMM?*6w}C8B*;SO7lqNSM*8u|nt|>%vJ!DdlSrI?lJ@%jP7zneEgaTP8I}ZLm*XgP# zm>1aGq%%8dDrKYpi?3GMCiq41nGg`jXn=)efChsg4xB%6w9mlupwN+}znIbah(+n!@z8e(MST>ej`5W@eWNK z7wVW6?kLv*B}~0=8w!|I!s5TD&>mwRZtq}`Z6E#_bdU=v8Be^$XGpl2G1zDS&6`0M z3NEe?dd?bql3lzTi=Fu_Wo1U zhbpJc=fB;BokmG!f0K~Dt^z{*^zaY-m@-uk4m8fy)z(l`Q|p2b2L5jA?T7#2aFkFf zPpneeL%}DTw`w{MPiQFS(G0QCAX*%(hc&%;27@zn()ALbbml%RE?#Q0(V~6OLjNJr zVyKHWOVx+CRC8j)2gh~xYyQf9H0~atU5k~J*AkK=oAPdm20{e^Q6x)K1dOb)FAFcO z3atlF(e{7V%!hoj$@Q=aCvQ6|QD{9|*hw}cD))8G7E`2l&G9>Ab;R8#{n_pG2lqKF z;Pp$=(N6&;zg(#6PVWkHK#9|!UHdqm-0+N;$)}QW(=`?*m*hh)!x5D44-jjM7o`NME9dCqn~E^6@^}zWlw$B-&bVU>q`$}#O~c? zCq?F$w(=K3p%&eRp;fSGDOY@+*+pZ)dml(^ZH+bXpj10#+g)M!q67H?m-xkVD-pqj zNb`n6o-@^HGpPZu>3z#u4aaOUR(hY&B%F&~r$!Sgizp$}pMzf34ZZBG{U}bi0yXjZ zy}lC7YM>Le$se_d5}I}aRDx}|8+TAXgf z)oL!(@gs@?cAYIwc{&FMC^BCYlA%XGnh&+Qo+`YN5O)Gx2AE@z0U0p{BXRijzGe^j zJP)7M6g&OAlp$aGN$R4lh`I*ot9GTQnOBZL(oX`=lMb~L+Hqq(bE=S56IEjw(S@4> z??sgg!c8aEc&p)+kvFX1IvL(`bmZ>YXn0~Q1WFAuJz?~G<;@O9eYK_8kU}sOMykSd zzUayRN1ZT;(n=hC>jS+znx$$VC~>tL;JfYGX>f(Xu z^r4IT{OU;D$JpArnrkM~T#;xx>6q05c&{e-}|*5 ze;W3DI>P$-6>U^FmeE)>Sok zmj!{**E5>wsFg14J!?LVZSj84F&qj#Kae_h$|T5I_pRU3=3X5)N{I$^#vD@{q(IR; z^OsP#O)S?sa<;K6Z)um#q(8}k^11jUb|%b8A|dY6Z^C zWQitTw7+^cl&4HahuYqiKXf0b!Tkuzf!xmVC4(*kNw?8t7AcveSS{aPGjtLUBh8di z4a1e%dX#NMElVJ-x05%bOt2b8-&lC0T+Cp!cSW0tm`-*Ryf=Oa>k=sEo93MeA5*f3 zW}+y&F0RHWclRVYcXs5?rk#`7-|@$7H#~LcU-s4Qz0Rj)$yNnZ91K=a`(d2y=oQAy zJ1Q0Xg4%8_WtiRd+}8D9c3dbzctk5A;mwvUY9UE9xq{V_Ahj9Z7eG>W_;Tm5Np-nM zT6F{xi`|UXI_1amN@7AXLxWGU5qLF>`vUX@^|G&Z{F_H3Js~X>WXyEuUt18mzO~?S zy(|4X^1^1Ue&%UM8!ohCTcS62*tgQ>QM?k~j8jsBasptINo$&p3j(dh=aAGG(AqY+ z(_T0WN4Oz5L5DNZcJ@!J0qF1N9oR< zec1!d`ULbRUC|EQVlach3^}&S4AABDl~q@SWlVmT>G1PF2kRsQ#pH?kOn zqt7@8SI8tsMzP74QnJmvCzX@1@M@EJ8heM2w1g-W70k!L;hAenh$J{uCPC~z-rdjv zJz;oU-}^cVhSYgo1b?Zng*P1A!VOcMa!;A79u%$sTqF8d+cI2F{1ICku z4=#SXH6#-E{PKp4Gl$VNo8Ok*bJiUu!uSm=cjJ#t>r~$C+SC-D~-{r!_PDE{$Dr@#zdw0#Cw`TFgr8}vnYKk%1p&i^6v8`(2 zLTkc9LGF=-V~DXgtyoKzL8rW<7b=)hhGctFDtg#^>>|9d@hV-DHz2j5%O`m9qN)Z> zEqdI(DxEu@&27HkYOx_E^6mSa)j3OHxfj&4Qf82{Qz(q((`$NPH>U+|lGeeq;JE5V zS~(@VP5hD{7Wo!W3sTg3bVwo#`9(z-MU~q{PVsQPk25HJ)%Q{|d*Qv^A!Vu2Y^u|k zow_0Av%TIj|NNQZVRU6;rei*N?2#-M3NlS|r!!wnPQ6I=D}MVX=^x`i9R=dp5gwY) zMGB!~BjbXRAj?F=Nb5&t3uM6+m-oi126a?x$Cb9wG4@n5vkI!q^^Gp{XEQBh^F)Z* zS7}C8?A~8n%-G3nxmBYCw&}FR8tFCWY!rbVqPX@vZN?|fyq+$`8eixhe>9?Ko?}K< zJ24k;sbIDyV@)pp zj17Soa##2(cRQq^p(3a)S%%jPd?VkqV)pib=$cRz<;}b=kfZhe%c^FL!rP-QqnP=K zOsbwpasOETDr5k9sA}`K%$8A??lHN`GQ6DJBDdDPw&06z{)`)iAX7Qts6V3fUP)7y zvVp_ONvD02f-RM-*wvRm)Aa2@x4OIc%chp3#W|8IVMTOd{P>*F6B4xn2##6x_UTha zdmel0F_iQK8S-gLVs6DwOJM6-E4cqI|7ZvlSNPW>p#^%0cCYQMXZFwAHoJ9Iy6%!t zLNqwWumSC__DYRmLY{Wf;+X4PLg;vLd3a*9t;gq*Q}3v^9mlW*4IB_n@AM0~1nMSF zBrLDq_(D4z#i3+6z9~?10S&Jl?X_((k}!`CLnR+1D8MCZY?09rC}{XI7F z20321fn-8$9Bk`+{hq3t`hhOeh=lX$kQaQ~vCxsJ_kexVd$98I~!XnV4=@3xcX1 z$9f1Rl~pN>OkgDN*BD0Co^T5;7$rM<_KwZ1j`|cmDL*FN9pAp_LK)q-)CT{IoH zi;Y`t`*t()X+^N7qWveHJuMiWtIB<&06x&4@AwwOu!WFSHuwJ-!xna%YopfLU1gP{ zryadg_tUNpomeO2ywvc|r3^G$ z16@HbV?j93rFG+cvb-mb^7-Wa7jb@3Zuihj?RT49UyDc*{8Tw z?`p+c{d=?Ls(!gWn;VITg-D09xLH(HoZ_f59JwIXd$=4?LzO^v7%7{`M#?EitccJ^ zE6t9nZ%}ws>_gQ$er6p2EPAR+>pp-zQnNr*+10b(GxpvvBu?WZNp}=`6W>hPn^98PGb0pSR}he} zN*CBp%$&pm3@CT%WFmG)f)3;duJ%H+ATDCs!9M2trxyI&qTh?n#r0BZ1yrhGgXOLm zsq?{{Qly0RO%u_%#Lz}e)MnkZ_82RR?MGPf?|^bo{g?w04(-Jhfj~_I1uK8BcrM(< zlS$~R$5>WQ@4QNDj9KS2P*ow=AzKY#O=ut>wvdK!>=lqeLSe}W7_`grQ1%6?h_^UYB4H ztlq7qsz7Jg9As!T=kxjao;r`@Mtuo)IXEByN0gGND2nP~_b33vZ?sQ0y)HF2*DP#R%iszz+i zPaH-I!q)>aADE}zHMFoLwG}E~=cjOB=v3+SF%byTjwT;Z-J29$T|bb`pnXChExP9L zSEf2(iFWWtgb|Y7L#a2mw6`UPPaEK1J9;5N(CZq1O~tDd85g&uk_pFXDxYy|>1_UD zn@ovq08W=*{_%rgU&8ff!*%#tQV@Tf0ST*vrrE?M4jjDk@~;|?OPJ{1^y;S9E?<;) zUhK+r4lh?DGhgi$#JavSGhvqw@GT^jxDkyy`|58NCz+#cO-mKFAv<-x0Z2}D4ttJ7 zNCdxw4+?d)d=UN78DkUa(s(NEK|~}NO9)b z{wwY|qRw?NGmNZrn%n5@%*Q2eba(vKwQXy&$RbfZH1>$DnQg6xpq#&q6$nKkmN&FE z0P5r6$EXJtBqq}sJl1%7`f6U=v`I~xdEjZ$7tpqrPC)V#k-}${c0CS4nl0?!bo^%~ zpc{Sz=ZZguSD+n^!x2g3R+Sq^3TYyfG5xXdpXgx|Qe1Mnr)o4L$@m(f!xC~swb%gU zi}qZ>|X03agC83mj_-S=}8f29*aArnHrRl4R)pB2fuEJ z(K7Mess19=_KSwMX~G{n{j^xgQu9NX988C#L%X3|;sSP?K7!5`|H%|=#n~sd-q^6e zt+r!dv5VhrPkq>PBeFg={;6qdp}sZiPvkZ#b0fOh&dNOdn^%RwKG;3dh~xu&Au~nM zSX1LHh@C`VRNFV_hUV1RrX%ezd}l(5NMq|a#5uUV!$m!s`7yAI^RW^oz*o7xxh@-6x2p~h%h`Fy^^mR(00IvYqTaQ zH+Uo)esUV^1%C5-tqF3%Yw9R_uI`tNCOK`?)TV@l3(bhzaavwBpo7GNQ0?UG!+=wf z(w+fKx7T?>kle%2-c4fSOJc!?wKtGf$YvXt`<}bgb>tkU=pumfQ3rb9`F!9HqPbaM z{(%c(K?{N-{mj|k_&GMq4L92s`xc$_$@;Q2h2-<%J6vl2r<3_p%N(k@^&i#)9M5y$ zo%Cv3QB(CY!S)YE(Uv$OgV-6@>JJ$_x;~-5cXy-&r+ZA{y4Y?ic6)6892W=qQE-68 z@5;VdQ3_G-7Zdy#6WFbwyLcCI8uD;t8Cb4M6ffcivl&?yz`S?H=k$Z6wX(#OqxpRF zm@k2WTi@W#-*o97!7K)abqHGP4CM}Cjvf4hm(~=z<^}x*?}>yIWs_xq!nLisHB^jF znb2f_TZ`|Z>j7zDakGcSE^bTAk3rzjICN5mvHD4>nvhiMp|ey`zk<%7YC&RERcAVq zffD*l?r`+(2NlhH9fd>cyjI6+BTGtar;ZV+=bDHek`9#ZhW4ib{-lk|D0a?MkeKJS zt)^>s?h|l6tg+rY0vQf^`uZ(XoBsTjR;PIKnPw1^s8?J)C`w+&e|G zp>u-q&=+*|^rwlXH1gzWuaG(kxdq9nF6dg&LpYd7>y1?|P8X*0L-VgJN!+!|wv3_(o=!)*=t@LjCkYswY)PM7AWrK@uHb!nd9 zKKqdONV3Z=Kky>Bg3ygJwqe@;mzsVvImgGq`oT?F=lJRGzw1>q1{(l!g5nuQ7kGGz z5BeGm`)Z|nFD=(ADpPIpwY8Ws8%!pn>r4InMz7fUZIb5+@KyXotG|W*X48CMNYd&H z7bo_oe9A6N9_T*ovduCWgFg&l=B3we`BHY3L}FYdt_Gu~1%aC#umy~0a?SDzZUt#f zMne4@sX*F%gqghUD+O%(|9xr(rWA`4VhVpqDqrl4<=<$2Vwct)_D5jDq)e zpIOv2&e%R5x$;C3c%y#gO83UTufS#$I*!8$_(%9D^tX3H2eiRWa5UB=s~(E6B9~=6 zz!5kKFThq+GgnLYuiio4lrY-3=Q*+9*$1*HHnD0j0_l~;x)?=sVdrC5+P{()+AcVp zHae4gRU1A$<81Ss3K$qunlph?&Cu6MU(+68f*+)$jq1M`*^pe@(?7n42%}o+vCuvb zezQ2`SzvmK3Pbo`m=3@ofPfHc-67*3kM z=i(}8OD4bqQ-$H{UTY*xO+`T1Pxerd*>82W(+dU27xsfCqd!D`9-V`gJU5&QbkZ|s zgkL|fO~1COExMBLu=9n;u$)up7v4k>g5irGrc{_aeEY|3!QopA!b+~o>JiPVhN{qo z4LUvK#nZgXGy6Ef*kduB3=mV?EPdWSppPQODE@EP9ojfK8=Kx&gBsiXqV^nOpSP@| zX^((gEd68^*oMRq@|Z`>AK_s4FdK~}*hs6n#XEIT)b$6^YL2(-aAY=RdQ6j9f)vxp zvkAIV&Rqfyhne|6BisLuDQzumpn@$uj6cBZtcN&xpNj=95Uq{+o37jg@m@aNI=}wz zP;xEtTE!RBgZ{RWYP4Dotq3O+m9r*f=}4v|%ua)U#Y} z^{gkKB zBHmydPH+t_B+4WFhpbJl>&a-ap`p2z#&L8o7f~^|a(lU4ZULh#-c|wYK;o_tdamhD zMSU`o{uMr{%Fnrix^S{WCn_#eQCNR9M#yC{ z5y<_0^Tdv~GZ;p{^rU^#Q%U@3%hVehc@}K_ck6GjM&);)dR|wv3%AeD)lY&U z6qzw|O+G5%2IdWlCVneLNu!(~9EC+y$==rRBu)#llVvwiQy}O9gUzC@+8kLz);TNS z0E-?id|qpB7fs{iGN(imW2?7ul&t}@B+w@`=ZYv}ju_mVKV?HeSkj;&0Ar6b;g_v+ z-;Af9c1K-j1AQSV+0YB;+@4PE@EFSxdtin@{}WN5td8nDF+x#|vGh)2uZA|lO;1+f zBb}H-jygnx{KdwoYV4Y@V+ib84Dx9E1?>a&m2mr;w^UVhK(^m6?w{C<*D^iqgU3(# zQ(WydSK1C2hyk93Q?TGK;2PX&%I0%%G|6C_PnktGOQ>A9jW5KovJ9MuJyD-_0iK>j zi4`akb<29Xl;z1_qgSAWNBD4-9}!v(dia~V*DTs5TLW1p)Zlf?Bf8CZnG7K{w+ts) zM6kTxm(FmEFi1wH{66C1TSP}F@I5g4YFpfGTV zY=@x|v%Y;;THwxO?14QlgwH|QPVsXJ*I&Zf%?+P|rU%SxAwfobL?(0}VO|OPITZwH zTJ2zpy}Hn;T%w6^CDC&GMIxegs~KU#O+XKCHU$;@f3nB441nom5h6Wd-KK4~Wk?7M z%y?wO-jZyGuwlu|LOzKS1$ZDTgP_1WQ<69FdqkGPwQC-)6eouI*X@ufA(Z!=h4b!; z3#G2dzSrme*eKPNevA^thq|SnFxnWCEB-qCP+j|kBI9%4eg^D%6Y~f*$l5s1dBz7q zD24F=NQ$Kjg`xfo_DHB6wU-2TW$m5eCNxmWrbw5SFqqEkCGpfTp%LE|)KvN-nA#Qg z3{khTu?IQ{Ma^35q=2QxAx~pE4E#FaCFx=@>mW^_?S!wtlLeM$4+tcgN>N73SUkET zdKHaR84Q9M8<%_G$(S%_Xdnj_S9YMTCr@V|5tL`6Fe`~os0$Ef2di1rNZMNz0HUzq z*#sX3$AWs-9b0sUmUPV1TSt&|b%R3A`uv$rM*JY4e67$_PW%;tK)s!C8e{N%6v2jb zXrGzGAyyD*JNCoEH}QSsn5`4)@5UP3QxZBKBw@sz>|g^+%3ke|zcR?vP3dp14mH0Y z8h9mN9vw)U&2{N4nZoee?7mmfz_+JdOW*_?VXfDv$(6HSbO;=1(|6 z540dIbKI#oVFg?tCJtbnf`$B@a!vy0OAvh4)Ecj_otI)b$!iFv zM!3FAwn`az+JO6e&kG~DRTTe#SbY5ZFZX5T`<4y8H7_aiw}~)%ME;&F<-AEdG0tfE zF7J2xwbSUBsA#jbe_SX!peJF-+`hjf`-QDQdZUiR!$4aU|DMbXM$*w8YLVSUC;+3Vt2a)7$+Rzog6aS=Z*6;`QsY(nAxsv2)i==;N!c zH|>oyrne&@fPZU?$gz^{r#*8oU9XitZM}%&bA5X&HQJl8T0ntaZ|d~aL@;V9;^w$7 z1Curb4O6v*;ZN2@`_P%iuuJ09*xp6J5i#qjWiNE>q?bSDw}~NWMD+Cqb~vwd)1kPE zDa2*RDk9tu#0cw+3PN7egTuMW^Q20JejWTS4KhsRLGX_{gZkN@k1Pu znt%c3kQUC-cp3Tc{BS08<)b@j`;e}jsUeICW65Mfvo*$|y3b!XzVJKY^&1Hvo*3~=N^!?CNn@>S(^|rs65$l}Nd3A%W28^yXze8Z#R~Vw_m`~w|g~QRQ zncueG&OLrqT?@VXb^h7d$g}nL!kha3{zFO>n!x_*+8X!AKQCsV&CIQ=$!ib=t_>*G zLOKHfA%L-Wuy=KEP-+rq1^C{u`B0B)3$;e5kdbWv?n1>U6v#VdTfd;vmQ}*SOZWie z)swsHp$W*)UP zk}2SgpKz@MgfFvcM1Aa};DydUQ9IdUSG=2m@e1U;S(3!I8}wM0q%NaOB8X#^jC} z-Tt-j`Q1o&OM3?+0dZ}s#}^M3(Q;h!=6Qx41Q_i2bZ9KsYTF!Cx*NN@)8jLCnw^~N zxao1$H0k&E`EAa4&CNeX%UZWe6cDR{+&JgrsM-38j85b_jBk{fgr=vq^A)_qdPjsj3G!+s8UT90_lTP(GNP z&HY%ARW+JS; zz0~~hT&YVWH8t>n{zc2Gah7!$#aJr1#+oM}hsJQ-61a@ZtMsJWb`*?6)v7$Ag>!IT zu6u94c=Khoy%vf#%c20O+0d?Vfk`fLp4)m8!d3=O*Bg-?nd~T9uQ_<1IJ_U9v>+Hs zUcj=}5wKAsd)Jad7U9;5;oZcXZmKACq3e5S`W0&l?U4Va#BrtDc|ztWk~Q4t#P zLilt7VB9gioGKCzmkfehYmGM8qe0Pvg`8t-Poo2kjj{219Q9tXFIM}VTP7kobU%@k zT3T7Oj7d0)e9;CP5I=CYi;X7i>#UoRi<&>;zwrC#^oM4w5RBvP&EjyG}94=W@|1cGywkA;odn-KRzHO?U_|3`rO@UPoj>TH)5U zBQm^br`Euw2GRV-mxi0eL|lbtC3J(Ct)==Jwhs3XV$0LfTmm8F6Ds6jT4Vke9KJFw zDU;Y9ILwznB9XF*`HePI#@y$OytZfGqc65b7#g@P>C=1<2BE+l&tA;Udb0!f9jg4q zOo#)5cI+Z-<2a|3hCkP7GO6KfoPg(GEipB6vYMUjW&+wb2JgX7;Qzq0daQ^tXi3SK z_n?=4Fky70LQ)P=Sfe3u?-Xm)zV;6HoIbF{Pz!JrUedKr^J|`(+(`DCTX(SKKP1m0 z=jFVgW^VM}oZHs6Ft@+tJK};!qedx=W& z!j#fWVpAZ5rJBS>K;Pl~N|{{WZ@HnycH2{uE%&iYaDKyE*}<4y*#Fqo&7p$-|518$ zQWv+#1IDe1M4!z)T)M6Hy7D0v$?v?-Q=XSJv2@8)ID+c47nIcA8{vB(N3edZw0s&} z1r?&6QU9Y1#b2=1J65YjWyJ=#beo_Psz_nn2=aCG1Ym{obZrGeY*u}p7*U=`mmFAPY6`GUf`lWnrPgNb_VhgG11GQMcaeTlgc(Y0HI41rnBz=@?j8wm*twryH| z@D+zCqnzIb-gNCRR62t(+duvNlG{%8o1u4$x7}mWhd_u)i5|GFy$u@$VbjN=Fc^hB zQy1~Xc^7$5)1^u>qO6^gH>X}jdb2+voQ&EA0@8QqCYs_We4PV}ummy;b01;WEL~ju zzY|WftgL)y322wZ6Y3)^>~;yrKjD4y3Q6w1&s2%_IG5H^>j!fO_HD5~v$cD3_F1MD z_@gxuI8|5U;(kd`dbd`}y5zE*59cn_jahko$PsWiRFBVuWCfUdQ6N!?L#nJLBkM+K z2mi}Gxb1vxIm8P znzoeSgf7&k$7V|6luu{kh6oz*C8-cY^C&#`&4Mf9anvg7FA+`~ioDVB5*-$pFgE97 z&DFgfldJ6y{Pz#3S*K%AFhNa0m9AK*-6?rf{ld;JwLtd%{T3rsSbW`qKFt4qOSWEV zP3t1g8VGfO)t_BM=JYDi<|sh$Pd@6d-lTfqQ zQ7Db%h*=!+K}hZc{P17-D>OyN{X_1#rDoI>379~gh&X6AHUKw2RxT} zB~eN`B_g2T_!0OYxqdxY=@36`xKT*GrU;83yQkPt^~y(AXp#Jd6)_ z$uMq@uioDK*l0TLH4-@wy{&%0{aPjOm8__QiXp|4WFakvE6O{`V>=~kl$gEszT%@{ za|krB0g+Mzk%ljRw&3k37Cz$|He$YY2?Mz-`gYHzBiy^+!{IuGFnp5|%a>DOQrPyuFb z9mM9)>sz%8d!QrDmc*WZz9@@H1}wmP7v3N{11cFNxIfu1sReKBltOl}B{utkt=tax z>kG$b{x(L+6+4z8xO9#ez0N6?ZRsgKndmS$H1rt>!dmYB`FSTfUhalx0iA^OA#voE ztD~u5ix?r>JJ=3Hf3rlZH7pKr#V7JB%4aCv>oZ7{MDuD#LvWW;Vxdq>Q=R!Dg9v!p zSo|35*w^I9D-cPy0?uvi6s4#W?eQ#WGC5ong+|jm6;j@4_9hZ}jAB25=6qoq&5gttU2wR)CdXSR4d&cAiac4 zb`A4oi!QJuc|4U;78K~3KKLiqLlY9{tqeGpp@*jc4iBfmTD-xPB()VyiQZpE(>d)O zznjiT`StgoS35aQGfPS>a~jK{v_o@lK*!L9qJi1rG{g7^73Q~0V$Oq=mSg376THJ9 z;QLcoMK^1|9C^-Su(&oltrR$2r74>)d zqq$y+Vw{&%5_Gu1qo$?`PU;f9F|2Hcb@ZW^LU%M`r{wwyjg_^2QIKe7HuystL7PAi z*-EcF?6A(0cUzP8mJt##+BTeoU-M0-{v~UC8kxrw-AghwSgA%^mNE2#GcG5>)3`u6 z!&JuIP*#o5ON9EB-b9^&*&q;e{<~r>eVfXU*g7&YeCVV3m#JIucW@L2H2jlQybgE~ ztk!>JFRww53Kgpb!22IgGp?N0Yl_nXG45_8Fxk!3@6e3f!p|G<)?)HeB}OBI>4SXg z>k5(rqOGa4V_D}x5A?=3_aiF8*$V*Ct#~tT+7UdiMC%_o>C$%;1AFu1`*LzFF$e;? zzNQ@j=Pfn>SD2?-cv_#Yjd?mrFdMr-dAcKR8Xh@2GxsIgkUNu!o0RPKSc5(76}sZ> z=*~gZC4HXr5d1#=3|{Psyezu*Z3^XNfyyejltI#a))O*XWe=&Si=&ng+8}L|>f8W< zjE6FkwL5GOEh5T!**^ut)=WO|CB&}n64nTU8^NYKh^)X2gUbkJP-fbzZS2;z^l_IO zN-&x~AiEe|_sNA(vlc$k$sFNF-Pv~^U=qS09zdo9Pm9v&$Szb4M7!&+R^rK+3dw=_uAd+ zn2GEUWLS(^#PbX(tZ?QaFxV0tWz)H=FX5J1$gpD=GJD%1;+~jLY|nzI6bxcTVd354 zQWr1>Ul!u!S9wyCU1`#2MSFLWii<`NDU9)Am zwk=v4T9Wig%+IG4(LR%-eq!3;qD62h=IJsf6Bo)QirJwV&LW6M{!-**1jkB+jnSg<8h4?KA3FT-_Xm zu&o)I!Pa>U?!)~X_rs(SsODho$8!cVz-ezgvklV$c$d1c8+N->`i^*R($a`;WoD%bqBv~h zC~N_6C?f;CFqh!&5A%WBG)-lQBO)V&twurZWk;O^4^4xY5L;(dqarVEyvhrph1?D= z3FC0ZY!q#!$&i_$uR9=z3_O(ZsQ6VTgrThumaee^N{G^=l4` zc2N+?aq#3OMXp^qWM}-3M5885@%9Z2_uNiXILf)+08M{&l?BzJcd=f07j^cpI0aN` zRkJT`sq<<)GSZ+TZqcr+s!ExM3noD%1W#ER9ZGa0T(_z|5{;_gkp$M}lA%6}l?Frb z^hI;Q3r4GHB7!f&J#+!y=^B+^g?Ci|AGyjZjzfRGbQ2wvH-xbalKfE`R7+$d*4Uw&0?o1WD zx^zDTZx{J|mB|gHFcwvs;l1{d{SA0A!iRwAv!`NP( z0?+i;LwXZ~c_)}-0E78)p;75fFoIKBevo+-ZCZRzwJZLLjaYwWRu~R*$w{3YQsIz@`A#KiDRMOHq zc%mq8FfMt#koK{*uYcfhA|;4K-&Xl?cXXtRz;xlHG|oh^fl0ZAGLyizYoa<38D3yJ^Sj|<9Fi>W?@ z)^P>w?X7>_YhR8zJ{q%)vVU)jX++V?2k-r>FoD$ckb zS@W<{Ut2NRxDvpM8V(0xHD5eWhvAQ0Wd6IT@|U5^sklB7*&(c@9e&?JH93dnHhk<* zJ1UK0Jlx)O6h5)$xDo?xTSl$_0m3kVR$c_xt94QK6M zJn2@e`;Nv+Cam=kgZRMszO>a|c!Qmqd6%*s)|U}!Y7UIh7T_Hm@RWa8xTLB(-4x_R z&b~M2;{;XOJM|PdD-^xXtd&P-YITJd;sF_lr4}Qm#(9$9-Yk*qo~c9|vkc(CpFD#L z=7*=_oLoge6P+S9S?+lJzmx-$kLHP`BZcuuFC~drO0bu>s!2k``uNOsz)yl)L&jP{ zN31r}$*(=ik}=VG#>OS#&09qsnY9Hu5=_E_j`#g*t@S;Ccd|ES`?YMmOy%R!kl7`E zhz|V_mB>sbv-q>ulpI~sI%N=b3p0QeeauN;$5XoUg-G2A!Y7aM^*pAe=mY9O zpz5LHU27(Y2sT4A%o*Q-plytyQ_Ov2;vL=INTzobwI`JBl2vAqO+zGdS}>;9bb8Qg zdbQ6NJA=Xj-@!8onCi~aADi6#O8hfPWq@*qA?jJS5LQID2-tDu771lOGg%IAF`?3L zCz&OS*|1?kwm6_TvL%O0a*LA<=WuQr4_jO?%3Ja{Lbl{XS+b=7QNCPdB!tBNwcu9YdFlm2{gp+xh`|woC;4g#xTb+YaZ6?eLkTP_iE+oi;Pbt>{`#W@m{; zPy)k1WP%Ya2rD=ftda<<5h4iapLYa-TR#VL_ii>>ZbeWSN#Rm^TQ;QWCgEGFEEaVM3?5FI4+g1*{T6bM>^JO31g@FnDRAIPS} zu||?D!_(Y!w@dr|HKdO< z%yH9yJ#5WwvEU!~Y~Ot|<~$m0v7n{Mx#*TE@aR9Z7jB)$(`a@&Wybq{74-aWdL5FU zTGrLkMw5nfG>;<-$Y3~yq*C9sFaRMaLV%6|*{mp|CeAP$MxUljz$CLz_(MdNGy2pC zB8JAKSSJy<`6T0y;XRx=hZq(+q6wCQqWX~s<{E8hWvfC#AbN9vhPSzdU1;MP@JsmJ zm&w|i-#4T(m3ZA;l@g+QRT>X2*UsZGIGWVtm4}z7cJuFSZB;m#1AnvbegHEIVyy0B zwc<WNXbG)i;+@Gtu5=?qd31PSy689{i9J97Aj~B!%6#{Je zi_3Et?f$H!mICmjW@DPhx|$N#sM+%6YdxhuYSPEvJRd|R=+i9cMg z+T{UHLQm0COvh@08`4U~K*d z3vu9EJ&VsSMQ}|cTzeJVRR*aGYg?7}(ANTR=nwbH;pVp3V>X+M-`i^K>uw-of9@J! zD@#ASP}XYf`M*1*6f4YZT<*Be=!>7X0SA!=teZ$h<2g+hF6hFv7Ud6FlgFtl%Q~)qT724S+o{|C zICt(0{XTxaTm1rXinh?0g)t?ufZ9|>xqtgO1XB8caVHf|FofV6VEVq`OgY6I(Gi3u zCaG2E1X9(a3uscS(vAsNi;hj+czHVn(bdR{Q#CLED4+?bfhJwVX$Z!n4_Ag`#)WW*Q;8?DtXEfvMAGdZBJm#S64Hln} zhfsne!H|)mnbRsIp@>tD{n15*_0sczbzUW;@?GO>XlZgnrys*6`3>C1038?N|7Ay! z6rrpEdj0$J{dWhGUHNKcaBv9ZDMs$Re>Xqc^KIhm?M@)@WW9)iz3dP}P1twx9+|{N zBe0%CAg~f-S+TRM>6_+BOy6xu70BVH%~d2D&m}FIwasE07t)Qp>DKI4r6qnn2!L(D z1n~x7GlABDEklhMh=2k?zz0B~UV77ObAg17XknVHH~&PGV5c8~D~V&Xm0~9HL4H%hsR%f z@}iaHZ+73{PK}suZw3Ap${sTRPn&JNks_XlFa|2cHx6^_rbvTckJR7&14e(xwe-$O7AU& zkjC(Vg>}jtOj+p^f1AeC4fHRo$mO@TTs2$pqotN#49Of-R%??Qj>AUpcnk1-7BJAy z`Yi#QePkl6Sc;fDKS%_8t~Tz*Rus`lv{3-LcC05f3b|A|Nt#5qD|U~x>yn;A@6)P; z!S@r#fM5t5+cuO*9Lu1n$~5B=ZSxG%oblAM<~}%otNv58+A8;1B56GL3E#6k=eY~~ z&G{pc-8|JQr~EqEF6mN{XfxR(#stRb2(b)G`X6<&TIJe}MCdeAn8rnF=;~Uh+7fNI zI**i^9JVd9_HXNxAEDXU_NpMi`Ct_&*0xI>aYutX;-7mi^&bzTfI@8I4i`0shQ*c@^*iOusXkesEo04K-`9 z>{T*ky1Tk&Oc|LfDHu-~lKE0$^llt<@71 z^NyxSTjvS#1Ya0cS4L_G@>FGUi>~>!n>vqq|4cY$G58Az(5Sl;ZBtSrlUoSH)=5h4oBvq4sHM#?LJuIfE513YEj zNoCcjxg`cu4%fmPGIWHR%tR0;h*SNxSS#zIDwei+v!4v8b|%w>M;NjZa{qmFEBE@C zkjzK#5-Wn3!ePT=LSTxQX&EAU?S8Yu^L~HAr2?H>@mKyd| zmwV&PbwUs@x7oRMc`Jp(vs#Q{_}`MbO^5 zZ2^Lg!74UUrc|cbrC6+NaB~()g1;ha4qBVUBgEn@$rUR}fq!lvgoBR&-^xt=7l<+a z%XLMC_4Cr!!*y!wC2w4XP+K@wRY;K91t{?$P$W@9QLr3LY!8cs^!XztMz*|q5cX>W z8x+Pf<4JCB$cjtI;HuoSpl;j;fnD@#kP(+_#AYA;@Kna*Xn{8sw?zwv1E549oxg-k z|1DC1NHc%%b(1zgOW~rrpAw_@aW+FkO98P4&_Znr(SzZTl}u|Ef^gTJkbn5$N-^tV z-vtnLe8Yci%@T6PQ(Z7*2NuJ;5v-z0RaOwoVAd6a3r*rd; zSyNOiUwmKmMZLYe%W?m9<5x2%=oJ2WKkHpDOTOQXWxiUT<}TOX`c872*=prJzNY*W z5#@F_dHT4nRFsTT?$H@t$(OWgG&NF}jLhHOV>?*lk4g7X z%9X%UNNMr!BW%~DIZ!pe+F^`K%loP8QYKWkG2Q9!+-a28PjwCt+AX%brCnXuA6t|y zc>354OGWo?BfaUuuH6ftxC{dZsU)=axF=@^hT>k<$^hQs^#!af%MP^VU@#54Fo#^U zn(LKI`SzDr(=g?R!W1!9dALTu(~VMxb&QZtPezT4NrezBJ(@ILJ|dH!G|E->29M}4 z`4Zjt`;LNe$A0|8qsi?)m@3{Y-Rf!Ku4*Uoj9mZA$$F*2SkE4+G)CJYyXU&Ax33ZM zeLS7lI4SnR9Wb-|&>7=ZXP#Zv>iDMxkH>n@WXw< zDq(B4=P!sk!SYRAj{4~`g(=!N%3mldn)3`B=+WMePSq%b@C#J{$RcloM!5Rq9Wdpl z&YG5UsJ@7+IyPqnvl9{e$dZF9WaUM0mXbRj3tO*TPi#Eh(Yt3Ce=k~DqKWLM_j=z# zt@sZo^M?$d;*8B$@bXL33C+gX+|y1g)_4M8%Dbfw>F71!?5;}s>Ye(O=2Nje;38=! zz+-7`aM!6o>dhng9Ci=0>E&5rn=HMMzIyhhCiF9vCc@KZZQ&m?HM(eM`uX}6p@9{FaK1+kE`ihT1Ugb3DH1op^=%!MPmn7Vd9e$UO{pKBc=77C$i{H*cuQjf-@}tFy7TIG z2i7K{k@qF=BFn8RNvG`^Cobb-#dN=OaG>`oFPid(;d31S^NhMGrI8XbA} zFSeLPv@*i4>f*Lo1GVL{Jf-rTM(&#r=GHXff^i9>UzIdR+&6lxwCee>srbj+jinAj zjtg$0MSP@|D1C~KWl$h_ow#p;}w#vjF0At`k)zswLn~J+n}yd2~qlAe%wu1- zO>uvh{gP_dO<<{1-Pi#4_o1nXoAcg|-p6mZ#HTWJYv z3U=>;@ZG0MQ}CXKv$`X;8QR^Ai6ck|f*_Df7}H+BN7(P!JGp+p9|GrD0Dd;+wOc0b zenoA9@g;{5ZUG&2X4%$UOO*NXe%9p(as=&*O?J(+%Vh0K9rC$oY{~-PR zfm2d_-#!k-TbHb#p39PoRbHhQCpP@S9oJ8Q1u{H?E`F6zO^5d8IQ$<}L;A7={?yR3juYnRLyvRn%(CbnUu@)+@%#6-i^` zlzY-NqZMj2E8dsn>xRRJfn@nxRD)7EuU^8t}&SMBs+wM}Xy97~noWk=LSg8FT zi3GPy=c)`6^Uwr({Fo8*MB{wro==>lI{6Hqyz^wE4fSNWPEt)u8CkKNB%qhn^@%pj zvE8#aLv&RQJhB9xG)6WYM;DK=Jn;Q61>fW2c0bjqC%lXHN*&=N=cEywj|)^N+|-y!plamG%eDivI|2rBWJ5;K7mzUe%2%;sDqs8nd8A~EH~B5+^GY0;QONYE%F1`S9fLqqv# zYLx8mWVyHu+N=j&{7B~KSn^QpvX*p=Xo($mXkErN6kjE9#bJE&2}%K)j_ydz^oUq^ za0miW@XRpkv{c7Hk0VL%@ml{Tge}@8n5J??(qtO8&8pr1SnI}O9swzFMh!`+Zdg&~ zPT8L}t##tL>PO&l6(NQ5^m0s9dF*rEa`htSMJtxeV5qWgMG<9LCP%V+bd1cpJdL18 z&^lpFdQ&G$pD`7TE3W!LmS?B^eKeo=kyNncQpS@H)8=5xx2|wzL*E?uZNi>LJ(KuH zS*?#Ch;Xiyp11*4OK^gky2n3ZjN=zxZ8#wcnUiynNJ%l*tfT(Yt&W2>E4w=^tcgF& zs)NRf(EJDNdXsu@vWXsuF~gKX8{q&9BUw9@b2=M~mg;4N22LM&xh30(3%2Sx@xZi# zJ8TW4`!Brc_cTGAofK6(8Ybw5kvgLg$Hav#kRmE{tdh&eZF``s>n@@N0Wp8Ng)HM6J}#XV-7UUeOe}@@^pfq19V{`d{M?oeGWJ@ zyda=bd(PL4#-zM(MgBdPZJZWN)}kI>?&;kK+VA^iimm+XVSqqr!MHunf@l_(OdWwW z(GY0nl-6Vm#`;N6?n$s1%XE`ZVt!A=V_vdWT;YiADj3Q%)p|Ry{d+-DR_tV}4sHJ% z6Yzm6OVk{HewQ?YD27(tB!+8`Skm3I89B4#(%XcO8j#$)C#&~YG=a{-VcN51 z6G487jEpyL5k2`uBRHS-yvco6=2|J&&e*xKtjpHIL|P0&;_=lq>L$WNF%D$G{dfT! zGr6e6Zim34S%Ug)`q8?Dsae>Bcp16et;9cUNcw(d?!8Hm(A2~Pb!xM_x=o}*B0~5w z^24^*pd&8Rb}NAI^=0Bt=vRLk`EwUS&;kBLuPkg(yZ4pHQB@e8RU2lkVk+sL^A%)$ z1Vm)##BDqAfO4}PPZ7eEe_I^-^7`5zWu#|#_N?bU9f+AGXgNPKzl)D#&O`H$i?=%i zocx+yh|8L^VB{w>Tt-m}FG;i2EyKx)&IV3#mX10~g`iOG=wlWIztdsL)9_?a{Jr(TcN49T6d+O3* zpM-1L8BDwq_F{jlZE*5>QAW^JGt=FLgTkEeNgWM-|CA+$`F%kI%iG3DxQb~ zK0BB8KPPZ;r4e8dTY~<($sx59{n>fn{L6+wHqm54G1B5RrQ1~XLWA~du-fXqgUn)W z>vsLa`fMk5OY{)7L@FvNAGWeK+>4`$a09$8dq^g-EC#I_woT(qw_N+Mv5ZQwIO5ze zsVz#g2x2^H(>B^pgDC%%F?=}*kIQC0l$z{=c;Wj7%mVYRotc%DMD|At1qf)@=XPA6 z+RKHOj%LgO{Wm`7Bj7E!5w99v7f z5_fDm|BqiPo4UVv3i>qDi~Y z1T#k)NrS9blkO^lr#N5v9{R+sb39d1jlEwxv;g zJnPy3kXOC6RnhyiL722! zc6C9MwY6kdTnwprX=#$^xE6fSvu|Lb))#RoLawmEx4k085)DzHOp-eDv zP9T<|ckuN==UQ?QQtmipma6n$V*NGvVYg;1`2 z#8a;x+lpyD?GLjU9WOfVT}Xx*m5#;7OZPc^TM-A zb;c}g-Sb^9t~F8g@j$l(V@U+1PE(09GfPZ)UTe1b57;?~85*&=L&@q!Gqu?(y*Kq+ zG8C|as(?b1y|ZTvd(RL&PFQKUQXsd9bm(0o z+qfSv#Ut>kfKpplZ*<#7;KS3yqzR&2Y`V4rBpwpbGLvet8?@q}@XsZQg4&f*v*R`k zV$s3e7LZgau5Y}q8=PGrIAwv*OZqef_t15ONK8c0E(#@^t<|@b4s&z}NyuhU;tmgD z(-C!1imQj$3Gu_)X`#EO>ATy>Y_fP2o2b5)ifP&^`fONOE@%s;hb6MR=*JRr z8Bo7g(&t{*E%9GMwLgevrkDQIT3P_79G&gi##;BumtOJP7gunl(X1VYc&f$kOn=k& z^*OhMsEDE!XIasd_T?oj5Qf2)8KW=Q{Qc=r>={@;bNb+e~f0>{_AC z3L(QNmjbZzp}x%YGP%F-UypHj!3e8i= zN4Ft@p+(PkjZ4W_3KC@TMOsHaTggS*|FXC4_FXlVTY29Q=4OW^;wm3Qr{+v)D5zEV zAvo!*ex}Z%kkZ=yOgrh$e-M)*NvWmyhj=+?L5oca?IQd_V>U#3PE|zM9*cg@fdQYJ zq?O@$_TC>UTtkLjs8dH~H9TkYBF}v#J|(KVg>p~5l<3vd3no8#a_$kmC=Q%M;yHxJ zUJ%c0sgv8IIkKt!t2Z7s!5q^%Cr#4PYSnHgG0Y*g)^0FYIQ-0}ozBlAFZbbB##v}$ zU<9&WBJu_wIC8jJQ6{Z8&Qn!vb$aPt-kSRQPYWgrBbzUcB!OQ*@4yc;VGL33z%pDu zMb#ALA>3~A%DY2`M$Ss{ifwOK%)|ru_SLPkYVdt-9Ttw~ut`!_PVi_X$9%?avp}G! zIjR&A*v5%G7VyAMPA5E^Bj{TV9)i5W)J&-;bHEKb^~T%orI5*fm$vOlIa={N-PCqx zq+9-Bm|J$ZBXocNymw!8VUIPU_xK@u)b z3l1B_#1B}iR)t0s04LrX@$A!*amBcyJ9uZ@B<+;%orGI?F;yGSTxGBY%E$nq1_nuq zi$_P=*waDXGtdGhgiPRr=;7UQvF)ZiAqqgYgaK`}NhJ`TL<(2pcR=4h)mBgiGX3-0 z(;xE)%6KFSE?_MBV!!P*Se+g23wyeGI;6`gm0h%V^;^uK?H7lagp}8boS?G`3IPPo~7^oyBru01d`ht z^y9*+4_&qq^rJI1fPJ|f^rXqW1-ssXx+3nu?0F^ma6(f}ItqI5PvnQ1gcSOwD&db_ zCq@#0exVe4V=WPgDKPpc0C~;;@{ZHd5AjnkG}RvXg^{=ix`!C_N!;><#@i2elA%ci zbkM#oij4Eqk{yuHAA$e}G^3Lmkay}f|K*zg`0hF#ND*UBxWRSHMF&V{^VYLjKB&R|xZ)HGT`(yMdqQLQGU zX59|BVy}Is-}QlI5?ptL}C!X(8#!@=eN0POT;?(ka!P(R;E|?|1KSSDmM^ zFz%^S22PlgJ>6^2JPVH_kXtMzRH89p?{C!_`|ReV>J_q7U9m~s`t11Ckn-WS(Kb>w)SRgKr@PO<=t~>(I|^@-$Qpenh;>L%B;|W zW4qxlWItbLjjyDEVBwFvZ#K~1A5DrdmK2N>3#ua zyfI$QDZ)90Nfr+Yi;F~hOWZ{R?%v@AsH(0j^W4u+tkL+AWNM|f zM2&j@M)CCX$ehzdl^@zW(EFFE#M=h|w>&f71pF%5bOY07JEJ~8(~!_qfj9RrkgF{C zzxQ~&iK`4=AVm3g#ua@8h389U;Y`ZNq%)L@o!bOE-3EXLL+c=L6u~Fg;ddO3SOMvckM3Flg0|} zpA?y1)Y&86{|=u~Ir$TPFYe0ki-r(!xJ_}*-p_?kxD(iQhK~>oIvK1Ma?4F4Ivas< zZJKs*8YwfR{9BuU#&sX3+XH`3Eiklfqe@};>iNJJjU%Or_XZ&h@#e7|RVeo$ z9)sFA`4k}X747f%;qD+{zC=w#^oPJQEbY%O^oJ6Q&LIPL#rN!Q-#~RYATD9XN+0|{ zer^ZzR)RT)ySG)-n%GI?CwT@Z+6Y1-^}1vka!)+vp&2N}jACL;*LOYXkuc5SqBGrM z)CW4M$>&Z<%}HIX*)4mIM~i$?@e+>X^JRS=y&(vjEpe?bfT$Ct5-~_3__y_h7Oj)@;d<| zSg6TVB(&BD2KjDzyzTbA%Q^N>EVt1Lso|GRInA26Vmddx|9EeSNlGJ|hofFwu~YN! zCrbx`AFB>lPy6~BEB{n&xNPd9vd`?YW2lYWH^q_q7*H9|vng~G+s*ZIfVnoLDzbUc zbx=Z5hpMPKc^wql{E;KV&pW}=8jBb6`Fj!)(HFjVz4xo$emINY1}uT!{h4D@#x^eN z?-)(f0rhp=lvzR2qE?Yroz-p_`)x`;EaR9bD~=QG~ZalQpb<5T^tmL z560_*Mz5vYk8+VkVk6+ZkVoOGLu>N}QudM=w%ofWBEIiePqQm>RLldt7qL}EVy1BNKtRJai91L=!HaNAVGhlJKKw}}ECJwD6$ng*G7iCzDbu-MncH$^v0%=XuGW3bY{*FxI9q&k|d%lNQaaBqUH#jxN zd^(jDR$$t+TY;}b&6^Vu2GfJWu^sG$^a_=SZ5M$8kCf69z2{E-CQbU5{3CO$Cwky)4W^ojgtDH_km zvVd3)^u0Ij^iV2bn%uSE07-z-kpS=Wy3C}9YowEzI3)X!? zfn^@u{Fo*0{e@-tLP@!1qlt!@!G)b%i0C{YXg)Ko1m9r@o~0xE{kdxxCB^A9q{zOp zqQ%#U6X0D8vXBnvi>QHU^Wa7^|BeYSKw`v_?A_ioMwHyRWil;q*Q@?$ke-~jX4q5? zeZe$>Y}Pt!Lv*Y#qkTzOW;|F(g0wd*gS~Am#{8fA@E&?IO&ZcBpGXem;kMvY*m*|<{2gE`V zT~+!_l~6NvXvnDOGTJ*BTj?16C8aD!3fy;eI%$cl_w`D)4}2t~r^M_~g_vcI?u~2@{fyijV20jyz!igAD8`spy!;_FpqDD({OSb!|$q){R zWo}FEouFNqqu!_Ms^2G{{x>OkX6#*0l;DuG!aRfuNQWD|H|{NSKo(7R+mU*`1vda| zLw}6^2{^mqF3myI`Ba?$+WRIWpgIf;6vp?{9TSs4Lzt&I3oVh&Ly4R^m7}S z0|f{0;5SbY`P&mSOI^zVQMLMURYIe$^6zIo^EBKO3)Q?Mk3}%= zvdduCD_Aq0*ii@>TeAFcR8X~`3*Y9J*-(M(2&Ul`aIY!5PQqLhEtx{MnqW|r z1cJGPYpTB44lI}|2GMW8B6WG6iG>Z>m$+Kj6Ei+DUKgF&mq?)amWnG zbs1@D>jT>Ne7XL`D%K?#MqIT~)|b5k&% zp=&!i{*_X@0926tyKJ6-f>1fi}cl!Y7I@sVHD!C|1&I#~ek&b7md5b%4v^DTtbOX_ASEv%jX^#l7 zbX`6>7|9{a-(&=%+W6O)zxo0i}&w<(-;dlY(42sSh1lTFJ zsZG2urBm)-J19QKRORv6YPMOMB?oeUI>Wtf!UtquEYC;g!Yft5q9}85ZIBZH5oF{H%)Ly+|bKJ|)&p1g5NTtxjZ6#8E zh?(}&Y@;-qLpyBd-Q>!LA}QRPR#g4C##A@!U0!@i-iagiy^KdP>a#OPWE`d7jP-Qs zBsyq%l){Uiu@m%P(L*Tjb~JKzuFCYTt?)%gfE1QgjtalIbZA`Mo$<5 zZaM&;Xc0-3-Z=REc(fZ$@zpf?e?9(1uGcH23;K(MtC!xxmMqIlUp#WbYA^LEGD7DWhh6Xvy}|$cnJbxTMIg2a5!9SyC*4i z(9-H;9uFuj-|3albI$Mc69K(vh0z}q(p{lZj{3k*a}bKwz$4rsC$11zn@3QWWEUm1p||K#GbX{)Ten<`vXfK7?XCmq!FR&6KYwmAMXbMYK!Z+fzegOwBh ze%e8!Qiea#G#{)>9@l6@Y}1c!;+h!VTy2ocQ3B4 zY5gsD(oz4e zzlO8}#mt2f?bhiGC?UUCLJ|JF{WJQ)(^&XRculqEcdfmlpE8>u<5cNI#&1YPNB3{G zcYRe~aBRPY8}sobu(Y}ygvIAy$)P@YrHC!=OQ(t4F~rBQHw8Rl{4}w6&!-)D9!YFSW)YlL-K*NKk(yfIkeu4az zauVYp`VD2*AA?CAfR}d!!d%K(Ja||7?bqIL?um@-Qh_flJq_!18srw zz=rd_fc>t5_7z6-%h4&J;@0adz$?ET9e+J&j4Vtx@*BettHF{Mrv?!NqF1T6mpeDE z6S=B{X_H!Z==Tn}F0HjVsXrXEuZi{+rX>B{O}vtX#>YqZT;X%5lgC31C8*j@u(VhP?Z95?Q6uueVJw)pP5^A$%;b~aidL8G=08iO-4 zvb^&C$SC}1qv)F9pniv3;$G%iY;pgRcTZCC%nRio*dTYckeXhUQ?V|7drm7JW0uM> zzst(61$YDv@U-)}=M{l|hP1alAv!$1A>y8!)o@ewvh-M6-sYK4mLE?o?}$7^)9e>! zwT8#w*yJHoiHS*tDT}V8vWJnTvZ)D&B^Dvzt(~0%AZwBPzZZmfoC2DpNIT!7?9UI> zy$w<-4136gdYdD{@B|E08Fg(_8!K{XykXSl$vBd439QTL1G;24d@L%eSa_*=ak_h; zn3H3|TMM%^hUVncsHjO4^YGE!!W1=2YoH}qr7E+fk?}Hcdq?0sLK*1Y=M}c|(TJW& zU^(g1>;3zRFRsg_?a?p!iHy>jkV_3Q*yz37anj~~gz^WmJ(UjHK zx9z9f2fw&uwjMNBzn4|pa5}ijoA}Br{pHm=ZdUis6Z-FpY95}F-mO0mI!Gy#f73#2 zTf&!$*Tik;QXQfdLe(ZO?%0wtyK26W;GjtsNG2p1jK)*`V(4`@B>sh;1c<%I1udw* zJTrdKdBTt^5|KE-Ucn)b9S(=sIrwt-_e-O{3>3Bh^DO3!U*UtISpxnHbeEM84#lvgFjksm(GVf3Z8sD~e!slIqX4$%!_>`IMEYJo!){hNqaX z+3#eGc|?evWjn`F%-pyu^V9mF7%iF}C1`%kn_$Vxvhj9ch1XQWZruqkCW1k;ASE7p z*ZZd_`s9+8@ttbnOKCcIcYD9C3wh`(DAWL(_3BZ;JwX^D2GiMZbZg*yAbl#uDH*w{ z4{0+SVxlcrhnzU<#<{HmqpPm{yL%`em+Qi`o?>2pI&~PCiJiJ%&Axe(OdX zsEgjba8L#?b#k~XDY6x&`MT||gPM$90qm^!tWI+xqN$QO%52gR<-!Ts%`@V@0;eAHuiLSdo3YWonTD-&_omAd`ai_dbRUJ%leElvf;S>BjcX`I+ zsERwKLqbDHXP!;`jvMMgu-%c^@%#wep@yhdNO&hEThgI-yXFM+oJiIj!I4hcC zFoZ;Lg1Bb=mzMwJ&P;;<1UCjGJNMjvpK=aXbZ93F5aGm~Iztvtq#5eHV)#eBlDuro zCV6LsZi5RX?GR|s-xdF0jbeqILh?))N7yiG3e8ZbYYqnON2j^dwt^EcQo^5|3T|)M zj{530Tj!ReKl;Nj`D^KbJFK?n-t7+UNfzH)5K8W5g;d?gjn?M!B#xlA@~C%8TmNvv zZ>Llyp@J}vNu}{S;_XKmRSh^YhpHvICv2WZ;9RifWTR~f@s3w8lEc(TQn2$BiS26y z11prAWy&EJ`WBclUaDae5Gjvl>;u<2BxLvbu{8&hv+EgP-$;40) z2-fMsb1i!~R9)HAAL~iA{bm=1H}Rwu8iacN5ZY@5u1aZ|YCq5kBx5R(%G+u>0Qkek zFPxns;w^+?aDdn-mO~KR5x0yViA+E+ALBjb?UR$08W5Wux^INwZc!UFNZ8fXIRRZx zO&Lozb2L@Wfw7>?csC~oO1t(+eQEx*8fyi0Q;a$8ET5+(X>Jec;-GBc=+pj^6iFu_l|pzl+<9%42Ubhg6Str-%q40?n-he8QdER4P$X+FDeD&lbwp$pZPA_kcNr zn{VA$)RWmZ3o0=ih6__R$-g)(&FJcyO0Tf8OrX^8fJ?;*KR;yCz!}crn_Ji|e$vZ~ z7MK%n22%verm=Ufs|ZBpCSt6gse`Rgi^OPh?PCkVNdM<%xub!<1RM8B`?JLqJC4fs znT0RUh^TWc$#6`_i#*~vGz=aEkDL6L9JCH|8oD+gft^56nJM~ixjO7hJ3Kty@zju8 zwDB)-{S$aIh6-jDjT8|}%*_OM$%OwYdZCp{1co!$jaZ~!gX3%yY z6Oshsa;18l1xRuPFb4ZTEcVG%9tH?Yv106A;k$v999diHW@vt{$m{=cM~0dl!Djdt zqMKy`%M79_u%NWt7qw2bH=E7()p$5B5)b6Yk95^w(667;=M`0U1|SU6@h;5$NO7d{Zzr!r26-QTDrn@>q^Rl%_IrbhnlgJ)BY=gH%sa^5%Bv{a zsbjM?4)<(p*y+eg!EKCBo#or>*X2+!qs)-{=KJ&9(nnj&C#>Bn)!A0H;nU((3Lmy# z7?aVl8$zF+u_(pSoUsu=;8~;o;-UB83h;EhXjNg)CN@*lB`!x~HZ}_5eBpTEHUm)f z?xa;Rz(3hKc6TsSBJj(UBr#$;Qgo=%_j14_4JrxD8DbZ+v<1d zwD&9u74Y9R%>R`Ra4Xik1lAuBcW{;V{7>@ngeN$#Zz(|R*G<0U)>))3AG0g5O}vUG znJLg(^3osF0%kQYyq|67A`{)n*_eVHc3>cbT5040H&}CqQR40tL;AGL9~pT#inEwB zaoK7m3+I}F8@Hfip3^~*kPqer*ksO-Pp@DMJYk@Px{0qPZnPyS(ogFVcs84wG}0}@ zymJn>^=`PpVxMr>n`X{@_hqcD+E25PPt|BNP4{;1aCX~?N8i}4uk0)}p!#W1uk_LG zZYx2NQ1j_52A;#kiFUbeq}bmg1G0np9Gfl)6k- zx?e+;QczO%gvAyz;h;EE`OgUNb;gcybY_ojx>jtvs}w8Cqq3?LE4rE#C7ANIcwzie z(mIhU((cVpjDPIFxxF>$U7Xks9-Zew1czFuC~RR2qsLEE$*hA~J~U5TaTk(+GU$eVha2$GhG%9>i`$7038qH-Tg^;472ZqUJju z|Fy8Bnw;-@W~|F&xN(JnBGmNyce8s*%X*_hirDm`5;;_X8q0Ii`Y8purhL+bF9fNk zcZ=apTh^c@gJsWnZ%9RrJdpF~T@t{oeTVewuP}|31tAAj+-RJMOzbey^aqi?1UE`r zo90VjXiO14CbarvRl_I&LgRF7BW!+k8xp(Tb6ijA{SFrB<(@{L5ZK(stL6HC08c=$zb!3_4YyJ)c4qT!nXW{l zE0ZziVwpNXIEa9W$F#H>r6o%#7andFeA1;|%Vtw0VPO&~l`v_kY;iW0_Q}j_DgI)ae=b4fnJER$K9d2)$?K?6g&u4}?Mmr=RL0JaxFCEBw^(t#Ww4wdzfnD8~ zb*X(HsMlP7J7k{z>sR}^Kze6nJ1cl&AcDYRO>^8i(3&(m%QlhPGB8fzpib?bp44M(*XET zzoO+i<)8d3#@-ymx4i83;(!F36O^M?1UkjzEB{Rd?wsBxv}OUih1MzPwwM8z*DNIT0c#w&8|Z+CN;FR>EMCePu?XyB_L;lZc$2A)kpY zshiDC`E4EHlf`kex6{|$H#ZYZywbeL>{N$?XP;E39u7%_Dk?nGwET72_Q~WJ$m6i< z{YH9Fw7?}GKZ?fWCj?Jk`Zn1o7zv4!(miYn3oBznHQu18-LPA+^tVp~GcT$|snp#n z!{ZXG7+zjtMlMxMjjNz|xnxApXk`?2&q=kY)W>ZuVW@xY}@Lc|KzksthY?jH6|U zUj%`wJTKeDx2jkQYP3cfbtJzxB+)0wAXRT>mDz||-8W-K4XBN)2cBO_EErY%T%b%$ ze&x@K_OBi=pQgF-%Jh~SlQ>T+;afk(0%B4Ys#wXfhdCUS>!jZDWK^n!jj21Q1_#j2 zB?Xi7&(h54CeIXmEiH#-*u9nr>l{mWdWR29L~mYx46!=FEvI>pYm9?fhW3gb6Y1RP)ATs9fcFtZHtMfs=3!;A^$aS^sO(+I7xx_2&gY*i!-;v4l@JcRWU{R^qirQeGJ-WwL_$dsy7;E|z~k>%kV#-)(e- z71;k^h8gTz#*FeQ3%-NrO%_n*#DCDW8@2w$h3W6L;VzDp{+q09&LtwkH+)w(*$0`T zP~-_rN|;s_#e7h1k3MY-?!U|g6T|!aSlraEU&JmT#tBh0G4lR77hQIia7>Fv_V=?g zGTK?b%uQ^6z;7iY)kCRejOeIl2~uyTO6ELlZoY z5&eDLl|yIFfKKiD$86F`tPwdao%HY?%)R)X{^g@ZybelvQY>? zera&^RONJh?e(*>967Ax>b#K`oyePRnn2bEr&`$BMwrB-fKyxDYvi4@2KOtgwmKz+ zCI*#mmXf>$+FNXoeIE@V{#h_JtbPCP{ri1|Gc#Ao5WgCxx>L1e~I5MmWVHZ`ZF!6nJIB+5io328$xq0xB z`zmoExdu5DLE&jD`NC^{F~k8b_dJ1nrlpqtP!0a{7R-%Dw{>2^Gt&ptocW>lGKf9N zDfMsC&OxNQHYMfo8N-2ja9v?HnS04yVV{_LVPD{L+)H#)J#Q7wMN4wG9q71Tq%*OZ5!tZN^7_=zCc;19oN0Pn_dahu+lnwoePs z?qBeQ$uRU*kT7UB$JAWbVPd`|ksnwc8Iw%9QV=%&vLejpN=P!O-*j5_vlwPwcO}$E z+JxIqasU+cxmmmWxwxp?+8hudHYEDuf`(4}XGOYNvpOvLJm5c%bzLPOh>SL}V4(4_ znZ!H$hczz#cxxB0b-T`9j)vCGVQ?$;-j3O$@$UXJ<&Q^RSPvOK_(_j&<{eQ36R*R7 zHTP)e?o;3Q>$tYk@2LBc!|o<;P!xwKq@Ib2hP`*luSwe7)XXnGpmTN&hELP&iHxsi zW^09Z&`qkSVakGsBxSmrM)Zafb)&U>Bb#Du)0L z;UEs<3;0qNbR(xtN!)q8ykkT9rz&_zpw(({cflmO) zpoBU*2Qx~S=kX_r!nje7pJQ%%kb}i`u!}41wK2-a#uBN&A78{7;4D}lC7AO0w@HrZ z5o*%qP?D}gG~(y>Q9d8azMqkJ;&mCUM_l!OaSt)j7iSabLnJ1}W+*1D6sIn4ZOdFy zY7yTHP))!9Xtar}$REBA#|yk+HBFXjhDw!NW|{d+iY*cu�zBE;A6`RoYnYVbGchb9$^iIU2 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 b/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5a9f9cb9ca0cd78b6ea2f3e5c9d2838dc8895598 GIT binary patch literal 8492 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 a!Vc~9U7SGB8$q3Ii#9CnAx#qS0RRAsKuhfa literal 0 HcmV?d00001 diff --git a/assets/language_common_json5.md.DxQ9Ke5l.js b/assets/language_common_json5.md.DxQ9Ke5l.js new file mode 100644 index 00000000..6996519c --- /dev/null +++ b/assets/language_common_json5.md.DxQ9Ke5l.js @@ -0,0 +1,31 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.4aTu-Nia.js";const o=JSON.parse('{"title":"JSON5 파일 확장자","description":"","frontmatter":{},"headers":[],"relativePath":"language/common/json5.md","filePath":"language/common/json5.md"}'),t={name:"language/common/json5.md"},l=n(`